mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-11-16 17:27:37 +00:00
be absolutely sure we delete secure storage keys before writing them (#1182)
* be absolutely sure we delete secure storage keys before writing them * sync with other PR --------- Co-authored-by: fossephate <fosse@book.local> Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
parent
00c97c74b8
commit
615d016dd5
7 changed files with 15 additions and 3 deletions
|
@ -436,6 +436,7 @@ class BackupService {
|
||||||
final backupPasswordKey = generateStoreKeyFor(key: SecretStoreKey.backupPassword);
|
final backupPasswordKey = generateStoreKeyFor(key: SecretStoreKey.backupPassword);
|
||||||
final backupPassword = keychainJSON[backupPasswordKey] as String;
|
final backupPassword = keychainJSON[backupPasswordKey] as String;
|
||||||
|
|
||||||
|
await _flutterSecureStorage.delete(key: backupPasswordKey);
|
||||||
await _flutterSecureStorage.write(key: backupPasswordKey, value: backupPassword);
|
await _flutterSecureStorage.write(key: backupPasswordKey, value: backupPassword);
|
||||||
|
|
||||||
keychainWalletsInfo.forEach((dynamic rawInfo) async {
|
keychainWalletsInfo.forEach((dynamic rawInfo) async {
|
||||||
|
@ -443,6 +444,7 @@ class BackupService {
|
||||||
await importWalletKeychainInfo(info);
|
await importWalletKeychainInfo(info);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await _flutterSecureStorage.delete(key: pinCodeKey);
|
||||||
await _flutterSecureStorage.write(key: pinCodeKey, value: encodedPinCode(pin: decodedPin));
|
await _flutterSecureStorage.write(key: pinCodeKey, value: encodedPinCode(pin: decodedPin));
|
||||||
|
|
||||||
keychainDumpFile.deleteSync();
|
keychainDumpFile.deleteSync();
|
||||||
|
@ -462,6 +464,7 @@ class BackupService {
|
||||||
final backupPasswordKey = generateStoreKeyFor(key: SecretStoreKey.backupPassword);
|
final backupPasswordKey = generateStoreKeyFor(key: SecretStoreKey.backupPassword);
|
||||||
final backupPassword = keychainJSON[backupPasswordKey] as String;
|
final backupPassword = keychainJSON[backupPasswordKey] as String;
|
||||||
|
|
||||||
|
await _flutterSecureStorage.delete(key: backupPasswordKey);
|
||||||
await _flutterSecureStorage.write(key: backupPasswordKey, value: backupPassword);
|
await _flutterSecureStorage.write(key: backupPasswordKey, value: backupPassword);
|
||||||
|
|
||||||
keychainWalletsInfo.forEach((dynamic rawInfo) async {
|
keychainWalletsInfo.forEach((dynamic rawInfo) async {
|
||||||
|
@ -469,6 +472,7 @@ class BackupService {
|
||||||
await importWalletKeychainInfo(info);
|
await importWalletKeychainInfo(info);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await _flutterSecureStorage.delete(key: pinCodeKey);
|
||||||
await _flutterSecureStorage.write(key: pinCodeKey, value: encodedPinCode(pin: decodedPin));
|
await _flutterSecureStorage.write(key: pinCodeKey, value: encodedPinCode(pin: decodedPin));
|
||||||
|
|
||||||
keychainDumpFile.deleteSync();
|
keychainDumpFile.deleteSync();
|
||||||
|
|
|
@ -19,6 +19,7 @@ class KeyService {
|
||||||
key: SecretStoreKey.moneroWalletPassword, walletName: walletName);
|
key: SecretStoreKey.moneroWalletPassword, walletName: walletName);
|
||||||
final encodedPassword = encodeWalletPassword(password: password);
|
final encodedPassword = encodeWalletPassword(password: password);
|
||||||
|
|
||||||
|
await _secureStorage.delete(key: key);
|
||||||
await _secureStorage.write(key: key, value: encodedPassword);
|
await _secureStorage.write(key: key, value: encodedPassword);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -496,6 +496,7 @@ Future<void> generateBackupPassword(FlutterSecureStorage secureStorage) async {
|
||||||
}
|
}
|
||||||
|
|
||||||
final password = encrypt.Key.fromSecureRandom(32).base16;
|
final password = encrypt.Key.fromSecureRandom(32).base16;
|
||||||
|
await secureStorage.delete(key: key);
|
||||||
await secureStorage.write(key: key, value: password);
|
await secureStorage.write(key: key, value: password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,7 @@ Future<void> ios_migrate_pin() async {
|
||||||
|
|
||||||
final key = generateStoreKeyFor(key: SecretStoreKey.pinCodePassword);
|
final key = generateStoreKeyFor(key: SecretStoreKey.pinCodePassword);
|
||||||
final encodedPassword = encodedPinCode(pin: pinPassword);
|
final encodedPassword = encodedPinCode(pin: pinPassword);
|
||||||
|
await flutterSecureStorage.delete(key: key);
|
||||||
await flutterSecureStorage.write(key: key, value: encodedPassword);
|
await flutterSecureStorage.write(key: key, value: encodedPassword);
|
||||||
await prefs.setBool('ios_migration_pin_completed', true);
|
await prefs.setBool('ios_migration_pin_completed', true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,9 @@ Future<List<int>> getEncryptionKey(
|
||||||
if (stringifiedKey == null) {
|
if (stringifiedKey == null) {
|
||||||
key = CakeHive.generateSecureKey();
|
key = CakeHive.generateSecureKey();
|
||||||
final keyStringified = key.join(',');
|
final keyStringified = key.join(',');
|
||||||
await secureStorage.write(key: 'transactionDescriptionsBoxKey', value: keyStringified);
|
String storageKey = 'transactionDescriptionsBoxKey';
|
||||||
|
await secureStorage.delete(key: storageKey);
|
||||||
|
await secureStorage.write(key: storageKey, value: keyStringified);
|
||||||
} else {
|
} else {
|
||||||
key = stringifiedKey.split(',').map((i) => int.parse(i)).toList();
|
key = stringifiedKey.split(',').map((i) => int.parse(i)).toList();
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,8 @@ class ChatwootWidgetState extends State<ChatwootWidget> {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> storeCookie(String value) async =>
|
Future<void> storeCookie(String value) async {
|
||||||
await widget.secureStorage.write(key: COOKIE_KEY, value: value);
|
await widget.secureStorage.delete(key: COOKIE_KEY);
|
||||||
|
await widget.secureStorage.write(key: COOKIE_KEY, value: value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ abstract class EditBackupPasswordViewModelBase with Store {
|
||||||
@action
|
@action
|
||||||
Future<void> save() async {
|
Future<void> save() async {
|
||||||
final key = generateStoreKeyFor(key: SecretStoreKey.backupPassword);
|
final key = generateStoreKeyFor(key: SecretStoreKey.backupPassword);
|
||||||
|
await secureStorage.delete(key: key);
|
||||||
await secureStorage.write(key: key, value: backupPassword);
|
await secureStorage.write(key: key, value: backupPassword);
|
||||||
secretStore.write(key: key, value: backupPassword);
|
secretStore.write(key: key, value: backupPassword);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue