Exemplo n.º 1
0
        public async Task SubmitAsync()
        {
            if (!await ValidateMasterPasswordAsync())
            {
                return;
            }

            // Retrieve details for key generation
            var kdf = await _userService.GetKdfAsync();

            var kdfIterations = await _userService.GetKdfIterationsAsync();

            var email = await _userService.GetEmailAsync();

            // Create new key and hash new password
            var key = await _cryptoService.MakeKeyAsync(MasterPassword, email, kdf, kdfIterations);

            var masterPasswordHash = await _cryptoService.HashPasswordAsync(MasterPassword, key);

            // Create new encKey for the User
            var newEncKey = await _cryptoService.RemakeEncKeyAsync(key);

            // Create request
            var request = new UpdateTempPasswordRequest
            {
                Key = newEncKey.Item2.EncryptedString,
                NewMasterPasswordHash = masterPasswordHash,
                MasterPasswordHint    = Hint
            };

            // Initiate API action
            try
            {
                await _deviceActionService.ShowLoadingAsync(AppResources.UpdatingPassword);

                await _apiService.PutUpdateTempPasswordAsync(request);

                await _deviceActionService.HideLoadingAsync();

                UpdateTempPasswordSuccessAction?.Invoke();
            }
            catch (ApiException e)
            {
                await _deviceActionService.HideLoadingAsync();

                if (e?.Error != null)
                {
                    await _platformUtilsService.ShowDialogAsync(e.Error.GetSingleMessage(),
                                                                AppResources.AnErrorHasOccurred, AppResources.Ok);
                }
                else
                {
                    await _platformUtilsService.ShowDialogAsync(AppResources.UpdatePasswordError,
                                                                AppResources.AnErrorHasOccurred, AppResources.Ok);
                }
            }
        }
Exemplo n.º 2
0
 public Task PutUpdateTempPasswordAsync(UpdateTempPasswordRequest request)
 {
     return(SendAsync <UpdateTempPasswordRequest, object>(HttpMethod.Put, "/accounts/update-temp-password",
                                                          request, true, false));
 }