deriveSaltedPasswordAsync static method

Future<Uint8List> deriveSaltedPasswordAsync({
  1. required String secret,
  2. required String salt,
  3. required String kdf,
  4. required int iterations,
  5. int? memory,
  6. Duration timeout = const Duration(seconds: 30),
  7. ScramKeyDeriver? keyDeriver,
  8. AuthenticationStringEncoding stringEncoding = AuthenticationStringEncoding.utf8,
})

Implementation

static Future<Uint8List> deriveSaltedPasswordAsync({
  required String secret,
  required String salt,
  required String kdf,
  required int iterations,
  int? memory,
  Duration timeout = const Duration(seconds: 30),
  ScramKeyDeriver? keyDeriver,
  AuthenticationStringEncoding stringEncoding =
      AuthenticationStringEncoding.utf8,
}) async {
  final ownedDeriver = keyDeriver == null;
  final deriver = keyDeriver ?? ScramKeyDeriver();
  try {
    final task = deriver.start(
      ScramKeyDerivationRequest(
        password: Uint8List.fromList(
          CraAuthentication.encodeString(
            secret,
            stringEncoding: stringEncoding,
          ),
        ),
        salt: Uint8List.fromList(base64.decode(salt)),
        kdf: kdf,
        iterations: iterations,
        memory: memory ?? 100,
        keyLength: defaultKeyLength,
      ),
      timeout: timeout,
    );
    return await task.result;
  } finally {
    if (ownedDeriver) await deriver.dispose();
  }
}