vault unlocking WIP
This commit is contained in:
@@ -8,15 +8,25 @@ public class VaultKeyFactory(IKeyGenerator generator,
|
||||
IDecryptor decryptor) :
|
||||
IVaultKeyFactory
|
||||
{
|
||||
public VaultKey Create(byte[] phrase,
|
||||
public VaultKey? Create(byte[] phrase,
|
||||
byte[]? encryptedKey = null,
|
||||
byte[]? salt = null)
|
||||
{
|
||||
salt ??= generator.Generate(16);
|
||||
byte[] derivedKey = deriver.DeriveKey(phrase, salt);
|
||||
|
||||
encryptedKey ??= encryptor.Encrypt(generator.Generate(32), derivedKey);
|
||||
byte[] decryptedKey = decryptor.Decrypt(encryptedKey, derivedKey);
|
||||
if (encryptedKey is null)
|
||||
{
|
||||
if (!encryptor.TryEncrypt(generator.Generate(32), derivedKey, out encryptedKey) || encryptedKey is null)
|
||||
{
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
if (!decryptor.TryDecrypt(encryptedKey, derivedKey, out byte[]? decryptedKey) || decryptedKey is null)
|
||||
{
|
||||
return default;
|
||||
}
|
||||
|
||||
return new VaultKey(salt, encryptedKey, decryptedKey);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user