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); } } }
public Task PutUpdateTempPasswordAsync(UpdateTempPasswordRequest request) { return(SendAsync <UpdateTempPasswordRequest, object>(HttpMethod.Put, "/accounts/update-temp-password", request, true, false)); }