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);
        }
Example #4
0
 public async Task <FactModel> GetLatestFactAsync()
 {
     return(await _secureStorageService.GetAsync <FactModel>("fact"));
 }