import 'package:encrypt/encrypt.dart'; import 'package:password/password.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; String encrypt({String source, String key, int keyLength = 16}) { final _key = Key.fromUtf8(key); final iv = IV.fromLength(keyLength); final encrypter = Encrypter(AES(_key)); final encrypted = encrypter.encrypt(source, iv: iv); return encrypted.base64; } String decrypt({String source, String key, int keyLength = 16}) { final _key = Key.fromUtf8(key); final iv = IV.fromLength(keyLength); final encrypter = Encrypter(AES(_key)); final decrypted = encrypter.decrypt64(source, iv: iv); return decrypted; } String hash({String source}) { final algorithm = PBKDF2(); final hash = Password.hash(source, algorithm); return hash; } String encodedPinCode({String pin}) { final source = '${secrets.salt}$pin'; return encrypt(source: source, key: secrets.key); } String decodedPinCode({String pin}) { final decrypted = decrypt(source: pin, key: secrets.key); return decrypted.substring(secrets.key.length, decrypted.length); } String encodeWalletPassword({String password}) { final source = password; final _key = secrets.shortKey + secrets.walletSalt; return encrypt(source: source, key: _key); } String decodeWalletPassword({String password}) { final source = password; final _key = secrets.shortKey + secrets.walletSalt; return decrypt(source: source, key: _key); }