Files
Walleby/Bitvault/VaultKeyFactory.cs
T
2024-05-02 23:07:47 +01:00

25 lines
653 B
C#

using Toolkit.Foundation;
namespace Bitvault;
public class VaultKeyFactory(IKeyGenerator generator,
IKeyDeriver deriver,
IEncryptor encryptor,
IDecryptor decryptor) :
IVaultKeyFactory
{
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);
return new VaultKey(salt, encryptedKey, decryptedKey);
}
}