2020-01-04 19:31:52 +00:00
|
|
|
import 'package:encrypt/encrypt.dart';
|
2022-10-12 17:09:57 +00:00
|
|
|
// import 'package:password/password.dart';
|
2020-01-04 19:31:52 +00:00
|
|
|
import 'package:cake_wallet/.secrets.g.dart' as secrets;
|
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
String encrypt({required String source, required String key, int keyLength = 16}) {
|
2020-01-04 19:31:52 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
String decrypt({required String source, required String key, int keyLength = 16}) {
|
2020-01-04 19:31:52 +00:00
|
|
|
final _key = Key.fromUtf8(key);
|
|
|
|
final iv = IV.fromLength(keyLength);
|
|
|
|
final encrypter = Encrypter(AES(_key));
|
|
|
|
final decrypted = encrypter.decrypt64(source, iv: iv);
|
|
|
|
|
|
|
|
return decrypted;
|
|
|
|
}
|
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
String hash({required String source}) {
|
|
|
|
// FIX-ME: Uninplemented
|
|
|
|
throw Exception('Unimplemented');
|
|
|
|
// final algorithm = PBKDF2();
|
|
|
|
// final hash = Password.hash(source, algorithm);
|
2020-01-04 19:31:52 +00:00
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
// return hash;
|
2020-01-04 19:31:52 +00:00
|
|
|
}
|
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
String encodedPinCode({required String pin}) {
|
2020-01-04 19:31:52 +00:00
|
|
|
final source = '${secrets.salt}$pin';
|
|
|
|
|
|
|
|
return encrypt(source: source, key: secrets.key);
|
|
|
|
}
|
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
String decodedPinCode({required String pin}) {
|
2020-01-04 19:31:52 +00:00
|
|
|
final decrypted = decrypt(source: pin, key: secrets.key);
|
|
|
|
|
|
|
|
return decrypted.substring(secrets.key.length, decrypted.length);
|
|
|
|
}
|
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
String encodeWalletPassword({required String password}) {
|
2020-01-04 19:31:52 +00:00
|
|
|
final source = password;
|
|
|
|
final _key = secrets.shortKey + secrets.walletSalt;
|
|
|
|
|
|
|
|
return encrypt(source: source, key: _key);
|
|
|
|
}
|
|
|
|
|
2022-10-12 17:09:57 +00:00
|
|
|
String decodeWalletPassword({required String password}) {
|
2020-01-04 19:31:52 +00:00
|
|
|
final source = password;
|
|
|
|
final _key = secrets.shortKey + secrets.walletSalt;
|
|
|
|
|
|
|
|
return decrypt(source: source, key: _key);
|
|
|
|
}
|