private async void OnSetUpPressed(object sender, EventArgs e) { string serverUrl = ServerEntry.Text; string devicePrivateKeyBase64 = await _secureStorageService.GetAsync("devicePrivateKey"); Curve25519KeyPair deviceKeyPair; if (devicePrivateKeyBase64 is null) { deviceKeyPair = new Curve25519KeyPair(); await _secureStorageService.SetAsync("devicePrivateKey", Convert.ToBase64String(deviceKeyPair.EdPrivateKey)); } else { deviceKeyPair = new Curve25519KeyPair(Convert.FromBase64String(devicePrivateKeyBase64), true, true); } _connection = new ServerConnection(serverUrl, deviceKeyPair); string deviceUuid = await _connection.RegisterDeviceAsync(); string userUuid = await _connection.RegisterUserAsync(EmailEntry.Text, GlobalKeyStore.Instance.IdentityKeyPair, GlobalKeyStore.Instance.SignedPreKeyPairs[0], ":)", "Non-contradictory"); await _connection.UploadOneTimePreKeysAsync(GlobalKeyStore.Instance.OneTimePreKeyPairs); await DisplayAlert("Information: ", $"Device ID: {deviceUuid}\nUser ID: {userUuid}", "Ok"); EmailEntry.Text = userUuid; }
private async Task <T> RefreshTokenAndRetryGet <T>(T result, string url) where T : new() { var accessToken = _secureStorageService.GetAsync(Constants.AccessToken).Result; var refreshToken = _secureStorageService.GetAsync(Constants.RefreshToken).Result; bool hasBothTokens = string.IsNullOrEmpty(accessToken) == false && string.IsNullOrEmpty(refreshToken) == false; if (hasBothTokens) { var tokens = await RefreshToken(new RefreshTokenModel { AccessToken = accessToken, RefreshToken = refreshToken }); bool hasBothNewTokens = string.IsNullOrEmpty(tokens.AccessToken) == false && string.IsNullOrEmpty(tokens.RefreshToken) == false; if (hasBothNewTokens) { await _secureStorageService.SetAsync(Constants.AccessToken, tokens.AccessToken); await _secureStorageService.SetAsync(Constants.RefreshToken, tokens.RefreshToken); //try again HttpRequestMessage request = ConstructGetRequest(url); using (HttpResponseMessage httpResponse = await _httpClient.SendAsync(request).ConfigureAwait(false)) { result = await DeserializeContentStream(result, httpResponse); } } } return(result); }
public async ValueTask <string> GetPushNotificationServiceHandleAsync() { if (string.IsNullOrWhiteSpace(_currentPnsHandle)) { var storedHandle = await _secureStorageService.GetAsync(PnsHandleKey); if (string.IsNullOrWhiteSpace(storedHandle)) { _currentPnsHandle = string.Empty; AnalyticsService.TraceVerbose(this, "No PnsHandle found"); } else { _currentPnsHandle = storedHandle; AnalyticsService.TraceVerbose(this, "PnsHandle loaded", "PnsHandle", _currentPnsHandle); } } return(_currentPnsHandle); }
public async Task <FactModel> GetLatestFactAsync() { return(await _secureStorageService.GetAsync <FactModel>("fact")); }