diff --git a/lib/core/configuration.dart b/lib/core/configuration.dart index 2eb337641..0c51ff6a9 100644 --- a/lib/core/configuration.dart +++ b/lib/core/configuration.dart @@ -66,10 +66,10 @@ class Configuration { String passphrase, KeyAttributes attributes) async { final kek = CryptoUtil.scrypt( utf8.encode(passphrase), base64.decode(attributes.kekSalt)); - bool correctPassphrase = CryptoUtil.compareHash( - kek, - base64.decode(attributes.kekHash), - base64.decode(attributes.kekHashSalt)); + final calculatedKekHash = + CryptoUtil.scrypt(kek, base64.decode(attributes.kekHashSalt)); + bool correctPassphrase = + base64.encode(calculatedKekHash) == attributes.kekHash; if (!correctPassphrase) { throw Exception("Incorrect passphrase"); } diff --git a/lib/utils/crypto_util.dart b/lib/utils/crypto_util.dart index 46dfb44e9..8c0bc4a0d 100644 --- a/lib/utils/crypto_util.dart +++ b/lib/utils/crypto_util.dart @@ -20,10 +20,6 @@ class CryptoUtil { .hashBytes(salt: salt, input: plainText, len: 32); } - static bool compareHash(Uint8List plainText, Uint8List hash, Uint8List salt) { - return base64.encode(scrypt(plainText, salt)) == base64.encode(hash); - } - static Uint8List aesEncrypt( Uint8List plainText, Uint8List key, Uint8List iv) { final encrypter = AES(Key(key), mode: AESMode.cbc);