From 8a112648bf3c0510da8cc19969de24400909d00a Mon Sep 17 00:00:00 2001 From: Hugo Pointcheval Date: Wed, 29 Apr 2020 22:51:05 +0200 Subject: [PATCH] Add digest enum --- example/lib/main.dart | 2 +- lib/symmetric_crypto.dart | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index f8fd5a6..19d71ec 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -52,7 +52,7 @@ class _MyAppState extends State { if (password.isEmpty) { output = 'Password is empty'; } else { - key = await KeyGenerator().pbkdf2(password, 'salt', algorithm: 'sha1'); + key = await KeyGenerator().pbkdf2(password, 'salt', digest: Digest.sha1); output = 'Key successfully derived.'; } setState(() { diff --git a/lib/symmetric_crypto.dart b/lib/symmetric_crypto.dart index fdac852..e781714 100644 --- a/lib/symmetric_crypto.dart +++ b/lib/symmetric_crypto.dart @@ -15,6 +15,9 @@ const String TAG_DEBUG = 'debug.native_crypto.symmetric_crypto'; /// Defines all available key sizes. enum KeySize { bits128, bits192, bits256 } +/// Defines all available digest. +enum Digest { sha1, sha256 } + /// Defines all available ciphers. enum Cipher { AES } @@ -59,11 +62,17 @@ class KeyGenerator { /// /// `keyLength` is in Bytes. /// It returns an `Uint8List`. - Future pbkdf2(String password, String salt, {int keyLength: 32, int iteration: 10000, String algorithm: 'sha256'}) async { + Future pbkdf2(String password, String salt, {int keyLength: 32, int iteration: 10000, Digest digest: Digest.sha256}) async { Uint8List key; + + String algo; + if (digest == Digest.sha1) algo = 'sha1'; + if (digest == Digest.sha256) algo = 'sha256'; + try { - key = await NativeCrypto().pbkdf2( password, salt, keyLength: keyLength, iteration: iteration, algorithm: algorithm); - log("PBKDF2 KEY LENGTH: ${key.length}", name: TAG_DEBUG); + key = await NativeCrypto().pbkdf2( password, salt, keyLength: keyLength, iteration: iteration, algorithm: algo); + log(key.toString()); + log("PBKDF2 KEY LENGTH: ${key.length} | DIGEST: $algo", name: TAG_DEBUG); } on PlatformException catch (e) { log(e.message, name: TAG_ERROR); throw e;