deriveSaltedPassword static method
Implementation
static Uint8List deriveSaltedPassword({
required String secret,
required String salt,
required String kdf,
required int iterations,
int? memory,
AuthenticationStringEncoding stringEncoding =
AuthenticationStringEncoding.utf8,
}) {
final secretBytes = Uint8List.fromList(
CraAuthentication.encodeString(secret, stringEncoding: stringEncoding),
);
final saltBytes = Uint8List.fromList(base64.decode(salt));
try {
if (kdf == kdfArgon) {
return deriveScramArgonSynchronously(
password: secretBytes,
salt: saltBytes,
iterations: iterations,
memory: memory ?? 100,
keyLength: defaultKeyLength,
);
}
if (kdf != kdfPbkdf2) {
throw ArgumentError.value(kdf, 'kdf', 'unsupported SCRAM KDF');
}
final derivator = PBKDF2KeyDerivator(HMac(SHA256Digest(), 64))
..init(Pbkdf2Parameters(saltBytes, iterations, defaultKeyLength));
return derivator.process(secretBytes);
} finally {
_clear(secretBytes);
_clear(saltBytes);
}
}