@@ -52,12 +52,29 @@ List<VersionParameters> getAllVersions() {
5252 // Version 1 uses PBKDF2, XChaCha20-Poly1305, and Blake2b
5353 version = 1 ;
5454 aad = protocol + version.toString ();
55- const int owaspRecommendedPbkdf2Sha512Iterations = 120000 ; // OWASP recommendation: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#pbkdf2
55+ const int owaspRecommendedPbkdf2Sha512IterationsVersion1 = 120000 ; // OWASP recommendation: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#pbkdf2
5656 const int pbkdf2SaltLength = 16 ; // Take that, rainbow tables!
5757 versions.add (VersionParameters (
5858 version,
59- (passphrase) => _pbkdf2 (passphrase, Uint8List .fromList (utf8.encode (aad)), Hmac .sha512 (), owaspRecommendedPbkdf2Sha512Iterations, Xchacha20 .poly1305Aead ().secretKeyLength),
60- (adk, salt) => _pbkdf2 (adk, salt, Hmac .sha512 (), owaspRecommendedPbkdf2Sha512Iterations, Xchacha20 .poly1305Aead ().secretKeyLength),
59+ (passphrase) => _pbkdf2 (passphrase, Uint8List .fromList (utf8.encode (aad)), Hmac .sha512 (), owaspRecommendedPbkdf2Sha512IterationsVersion1, Xchacha20 .poly1305Aead ().secretKeyLength),
60+ (adk, salt) => _pbkdf2 (adk, salt, Hmac .sha512 (), owaspRecommendedPbkdf2Sha512IterationsVersion1, Xchacha20 .poly1305Aead ().secretKeyLength),
61+ (key, nonce, plaintext) => _xChaCha20Poly1305Encrypt (key, nonce, plaintext, aad),
62+ (key, blob) => _xChaCha20Poly1305Decrypt (key, blob, aad),
63+ (data) => _blake2b (data, aad),
64+ pbkdf2SaltLength,
65+ Xchacha20 .poly1305Aead ().nonceLength,
66+ Poly1305 ().macLength,
67+ Blake2b ().hashLengthInBytes
68+ ));
69+
70+ // Version 2 uses PBKDF2, XChaCha20-Poly1305, and Blake2b
71+ version = 2 ;
72+ aad = protocol + version.toString ();
73+ const int owaspRecommendedPbkdf2Sha512IterationsVersion2 = 210000 ; // OWASP recommendation: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#pbkdf2
74+ versions.add (VersionParameters (
75+ version,
76+ (passphrase) => _pbkdf2 (passphrase, Uint8List .fromList (utf8.encode (aad)), Hmac .sha512 (), owaspRecommendedPbkdf2Sha512IterationsVersion2, Xchacha20 .poly1305Aead ().secretKeyLength),
77+ (adk, salt) => _pbkdf2 (adk, salt, Hmac .sha512 (), owaspRecommendedPbkdf2Sha512IterationsVersion2, Xchacha20 .poly1305Aead ().secretKeyLength),
6178 (key, nonce, plaintext) => _xChaCha20Poly1305Encrypt (key, nonce, plaintext, aad),
6279 (key, blob) => _xChaCha20Poly1305Decrypt (key, blob, aad),
6380 (data) => _blake2b (data, aad),
0 commit comments