From 4b5644e4c3f81663cc9bb94e2ff9852f9d2e23a1 Mon Sep 17 00:00:00 2001 From: Chiziaruhoma Ogbonda Date: Mon, 21 Mar 2022 09:16:49 +0100 Subject: [PATCH 1/3] added methods to clear storage data --- .../lib/storage/biometric_data_store.dart | 16 +++++++++++++++ .../lib/storage/cosmos_key_info_storage.dart | 8 ++++++++ .../flutter_secure_storage_data_store.dart | 20 +++++++++++++++++++ .../lib/storage/key_info_storage.dart | 2 ++ .../shared_prefs_plain_data_store.dart | 17 ++++++++++++++++ .../test/mocks/test_memory_store.dart | 6 ++++++ 6 files changed, 69 insertions(+) diff --git a/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart b/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart index edb9eb4a..7f8788b4 100644 --- a/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart +++ b/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart @@ -124,6 +124,22 @@ class BiometricDataStore implements SecureDataStore { return left(BiometricCredentialsStorageFailure.unsupported()); } } + + @override + Future> clearAllData() async { + try { + final biometricStorage = BiometricStorage(); + final storageFile = await biometricStorage.getStorage( + storageFileName, + options: _storageFileInitOptions, + promptInfo: promptInfo, + ); + await storageFile.delete(); + return right(true); + } catch (e) { + return right(false); + } + } } Map _decodeMap(String json) => (json.trim().isEmpty diff --git a/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart b/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart index cb005328..362a55ef 100644 --- a/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart +++ b/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart @@ -233,4 +233,12 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { ); } } + + @override + Future> clearCredentials() async { + final _secureCleared = await _secureDataStore.clearAllData(); + final _plainCleared = await _plainDataStore.clearAllData(); + _secureCleared.fold(left, right); + return _plainCleared.fold(left, right); + } } diff --git a/packages/transaction_signing_gateway/lib/storage/flutter_secure_storage_data_store.dart b/packages/transaction_signing_gateway/lib/storage/flutter_secure_storage_data_store.dart index 301fcf14..791cfcfc 100644 --- a/packages/transaction_signing_gateway/lib/storage/flutter_secure_storage_data_store.dart +++ b/packages/transaction_signing_gateway/lib/storage/flutter_secure_storage_data_store.dart @@ -52,4 +52,24 @@ class FlutterSecureStorageDataStore implements SecureDataStore { ); } } + + @override + Future> clearAllData() async { + try { + await _store.deleteAll( + iOptions: const IOSOptions(accessibility: IOSAccessibility.passcode), + aOptions: const AndroidOptions(encryptedSharedPreferences: true), + ); + return right(true); + } catch (ex, stack) { + logError(ex, stack); + return left( + CredentialsStorageFailure( + "Could not delete secure data'", + cause: ex, + stack: stack, + ), + ); + } + } } diff --git a/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart b/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart index 4575c46f..849a298b 100644 --- a/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart +++ b/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart @@ -6,6 +6,8 @@ import 'package:transaction_signing_gateway/model/private_account_credentials.da import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; abstract class KeyInfoStorage { + Future> clearCredentials(); + Future> getPrivateCredentials( AccountLookupKey accountLookupKey, ); diff --git a/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart b/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart index bd6741be..d4607bd1 100644 --- a/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart +++ b/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart @@ -13,6 +13,23 @@ class SharedPrefsPlainDataStore implements PlainDataStore { final SharedPrefsProvider sharedPreferencesProvider; + @override + Future> clearAllData() async { + try { + final prefs = await sharedPreferencesProvider(); + return right(await prefs.clear()); + } catch (ex, stack) { + logError(ex, stack); + return left( + CredentialsStorageFailure( + 'Error while clearing all data', + cause: ex, + stack: stack, + ), + ); + } + } + @override Future>> readAllPlainText() async { try { diff --git a/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart b/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart index 6974b2a7..98fb2da2 100644 --- a/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart +++ b/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart @@ -4,6 +4,12 @@ import 'package:dartz/dartz.dart'; class TestMemoryStore implements PlainDataStore, SecureDataStore { final Map _values = {}; + @override + Future> clearAllData() async { + _values.clear(); + return right(true); + } + @override Future>> readAllPlainText() async => right({..._values}); From e4fbe42b353d664c7b263e77a8ab0d875b1583d5 Mon Sep 17 00:00:00 2001 From: Chiziaruhoma Ogbonda Date: Tue, 22 Mar 2022 03:53:06 +0100 Subject: [PATCH 2/3] added clearAllData method --- packages/cosmos_utils/lib/data_store.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/cosmos_utils/lib/data_store.dart b/packages/cosmos_utils/lib/data_store.dart index 7ea053d2..60217a88 100644 --- a/packages/cosmos_utils/lib/data_store.dart +++ b/packages/cosmos_utils/lib/data_store.dart @@ -12,6 +12,8 @@ abstract class PlainDataStore { }); Future>> readAllPlainText(); + + Future> clearAllData(); } abstract class SecureDataStore { @@ -23,4 +25,6 @@ abstract class SecureDataStore { Future> readSecureText({ required String key, }); -} + + Future> clearAllData(); +} \ No newline at end of file From 56bf83a7ac6a2b762787def1c205f28b426be995 Mon Sep 17 00:00:00 2001 From: Chiziaruhoma Ogbonda Date: Tue, 22 Mar 2022 03:56:45 +0100 Subject: [PATCH 3/3] remove tx code --- packages/cosmos_utils/lib/data_store.dart | 2 +- .../lib/storage/biometric_data_store.dart | 16 --------------- .../lib/storage/cosmos_key_info_storage.dart | 8 -------- .../flutter_secure_storage_data_store.dart | 20 ------------------- .../lib/storage/key_info_storage.dart | 2 -- .../shared_prefs_plain_data_store.dart | 17 ---------------- .../test/mocks/test_memory_store.dart | 6 ------ 7 files changed, 1 insertion(+), 70 deletions(-) diff --git a/packages/cosmos_utils/lib/data_store.dart b/packages/cosmos_utils/lib/data_store.dart index 60217a88..c9535b39 100644 --- a/packages/cosmos_utils/lib/data_store.dart +++ b/packages/cosmos_utils/lib/data_store.dart @@ -27,4 +27,4 @@ abstract class SecureDataStore { }); Future> clearAllData(); -} \ No newline at end of file +} diff --git a/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart b/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart index 7f8788b4..edb9eb4a 100644 --- a/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart +++ b/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart @@ -124,22 +124,6 @@ class BiometricDataStore implements SecureDataStore { return left(BiometricCredentialsStorageFailure.unsupported()); } } - - @override - Future> clearAllData() async { - try { - final biometricStorage = BiometricStorage(); - final storageFile = await biometricStorage.getStorage( - storageFileName, - options: _storageFileInitOptions, - promptInfo: promptInfo, - ); - await storageFile.delete(); - return right(true); - } catch (e) { - return right(false); - } - } } Map _decodeMap(String json) => (json.trim().isEmpty diff --git a/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart b/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart index 362a55ef..cb005328 100644 --- a/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart +++ b/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart @@ -233,12 +233,4 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { ); } } - - @override - Future> clearCredentials() async { - final _secureCleared = await _secureDataStore.clearAllData(); - final _plainCleared = await _plainDataStore.clearAllData(); - _secureCleared.fold(left, right); - return _plainCleared.fold(left, right); - } } diff --git a/packages/transaction_signing_gateway/lib/storage/flutter_secure_storage_data_store.dart b/packages/transaction_signing_gateway/lib/storage/flutter_secure_storage_data_store.dart index 791cfcfc..301fcf14 100644 --- a/packages/transaction_signing_gateway/lib/storage/flutter_secure_storage_data_store.dart +++ b/packages/transaction_signing_gateway/lib/storage/flutter_secure_storage_data_store.dart @@ -52,24 +52,4 @@ class FlutterSecureStorageDataStore implements SecureDataStore { ); } } - - @override - Future> clearAllData() async { - try { - await _store.deleteAll( - iOptions: const IOSOptions(accessibility: IOSAccessibility.passcode), - aOptions: const AndroidOptions(encryptedSharedPreferences: true), - ); - return right(true); - } catch (ex, stack) { - logError(ex, stack); - return left( - CredentialsStorageFailure( - "Could not delete secure data'", - cause: ex, - stack: stack, - ), - ); - } - } } diff --git a/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart b/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart index 849a298b..4575c46f 100644 --- a/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart +++ b/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart @@ -6,8 +6,6 @@ import 'package:transaction_signing_gateway/model/private_account_credentials.da import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; abstract class KeyInfoStorage { - Future> clearCredentials(); - Future> getPrivateCredentials( AccountLookupKey accountLookupKey, ); diff --git a/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart b/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart index d4607bd1..bd6741be 100644 --- a/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart +++ b/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart @@ -13,23 +13,6 @@ class SharedPrefsPlainDataStore implements PlainDataStore { final SharedPrefsProvider sharedPreferencesProvider; - @override - Future> clearAllData() async { - try { - final prefs = await sharedPreferencesProvider(); - return right(await prefs.clear()); - } catch (ex, stack) { - logError(ex, stack); - return left( - CredentialsStorageFailure( - 'Error while clearing all data', - cause: ex, - stack: stack, - ), - ); - } - } - @override Future>> readAllPlainText() async { try { diff --git a/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart b/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart index 98fb2da2..6974b2a7 100644 --- a/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart +++ b/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart @@ -4,12 +4,6 @@ import 'package:dartz/dartz.dart'; class TestMemoryStore implements PlainDataStore, SecureDataStore { final Map _values = {}; - @override - Future> clearAllData() async { - _values.clear(); - return right(true); - } - @override Future>> readAllPlainText() async => right({..._values});