mirror of
https://github.com/bitwarden/mobile
synced 2025-12-05 23:53:33 +00:00
* [PM-2658] Settings Reorganization Init (#2697) * PM-2658 Started settings reorganization (settings main + vault + about) * PM-2658 Added settings controls based on templates and implemented OtherSettingsPage * PM-2658 Fix format * [PM-3512] Settings Appearance (#2703) * PM-3512 Implemented new Appearance Settings * PM-3512 Fix format * [PM-3510] Implement Account Security Settings view (#2714) * PM-3510 Implemented Security settings view * PM-3510 Fix format * PM-3510 Added empty placeholder to pending login requests and also improved a11y on security settings view. * PM-3511 Implemented autofill settings view (#2735) * [PM-3695] Add Connect to Watch to Other settings (#2736) * PM-3511 Implemented autofill settings view * PM-3695 Add Connect to watch setting to other settings view * [PM-3693] Clear old Settings approach (#2737) * PM-3511 Implemented autofill settings view * PM-3693 Remove old Settings approach * PM-3845 Fix default dark theme description verbiage (#2759) * PM-3839 Fix allow screen capture and submit crash logs to init their state when the page appears (#2760) * PM-3834 Fix dialogs strings on settings (#2758) * [PM-3834] Fix import items link (#2782) * PM-3834 Fix import items link * PM-3834 Fix import items link, removed old link. * [PM-4092] Fix vault timeout policies on new Settings (#2796) * PM-4092 Fix vault timeout policy on settings for disabling controls and reset timeout when surpassing maximum * PM-4092 Removed testing hardcoding of policy data
39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
using System.Threading.Tasks;
|
|
using Bit.Core.Abstractions;
|
|
|
|
namespace Bit.App.Services
|
|
{
|
|
public class UserPinService : IUserPinService
|
|
{
|
|
private readonly IStateService _stateService;
|
|
private readonly ICryptoService _cryptoService;
|
|
|
|
public UserPinService(IStateService stateService, ICryptoService cryptoService)
|
|
{
|
|
_stateService = stateService;
|
|
_cryptoService = cryptoService;
|
|
}
|
|
|
|
public async Task SetupPinAsync(string pin, bool requireMasterPasswordOnRestart)
|
|
{
|
|
var kdfConfig = await _stateService.GetActiveUserCustomDataAsync(a => new KdfConfig(a?.Profile));
|
|
var email = await _stateService.GetEmailAsync();
|
|
var pinKey = await _cryptoService.MakePinKeyAsync(pin, email, kdfConfig);
|
|
var userKey = await _cryptoService.GetUserKeyAsync();
|
|
var protectedPinKey = await _cryptoService.EncryptAsync(userKey.Key, pinKey);
|
|
|
|
var encPin = await _cryptoService.EncryptAsync(pin);
|
|
await _stateService.SetProtectedPinAsync(encPin.EncryptedString);
|
|
|
|
if (requireMasterPasswordOnRestart)
|
|
{
|
|
await _stateService.SetPinKeyEncryptedUserKeyEphemeralAsync(protectedPinKey);
|
|
}
|
|
else
|
|
{
|
|
await _stateService.SetPinKeyEncryptedUserKeyAsync(protectedPinKey);
|
|
}
|
|
}
|
|
}
|
|
}
|