diff --git a/packages/cosmos_ui_components/pubspec.lock b/packages/cosmos_ui_components/pubspec.lock index e1002daa..0f0da5e8 100644 --- a/packages/cosmos_ui_components/pubspec.lock +++ b/packages/cosmos_ui_components/pubspec.lock @@ -69,7 +69,7 @@ packages: description: path: "packages/cosmos_utils" ref: main - resolved-ref: "2946ddfdab692a9d9f4752c4af83c2b1083f51e6" + resolved-ref: "99035c7be78a9959591220c8efb3e1e122274c03" url: "https://github.com/tendermint/flutter.git" source: git version: "0.0.1" 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..064ffcfa 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,29 @@ 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 (ex, stack) { + logError(ex, stack); + return left( + CredentialsStorageFailure( + 'Error while clearing data in Biometric storage', + cause: ex, + stack: stack, + ), + ); + } + } } Map _decodeMap(String json) => (json.trim().isEmpty 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..6c3f5674 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 @@ -8,6 +8,8 @@ class FlutterSecureStorageDataStore implements SecureDataStore { }) : _store = storage ?? const FlutterSecureStorage(); final FlutterSecureStorage _store; + static const iosOptions = IOSOptions(accessibility: IOSAccessibility.passcode); + static const androidOptions = AndroidOptions(encryptedSharedPreferences: true); @override Future> readSecureText({required String key}) async { @@ -15,8 +17,8 @@ class FlutterSecureStorageDataStore implements SecureDataStore { return right( await _store.read( key: key, - iOptions: const IOSOptions(accessibility: IOSAccessibility.passcode), - aOptions: const AndroidOptions(encryptedSharedPreferences: true), + iOptions: iosOptions, + aOptions: androidOptions, ), ); } catch (ex, stack) { @@ -52,4 +54,24 @@ class FlutterSecureStorageDataStore implements SecureDataStore { ); } } + + @override + Future> clearAllData() async { + try { + await _store.deleteAll( + iOptions: iosOptions, + aOptions: androidOptions, + ); + 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/shared_prefs_plain_data_store.dart b/packages/transaction_signing_gateway/lib/storage/shared_prefs_plain_data_store.dart index bd6741be..58812474 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 @@ -79,4 +79,21 @@ class SharedPrefsPlainDataStore implements PlainDataStore { ); } } + + @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, + ), + ); + } + } } diff --git a/packages/transaction_signing_gateway/pubspec.lock b/packages/transaction_signing_gateway/pubspec.lock index 55a7430d..9189a095 100644 --- a/packages/transaction_signing_gateway/pubspec.lock +++ b/packages/transaction_signing_gateway/pubspec.lock @@ -167,7 +167,7 @@ packages: description: path: "packages/cosmos_utils" ref: main - resolved-ref: "2946ddfdab692a9d9f4752c4af83c2b1083f51e6" + resolved-ref: "99035c7be78a9959591220c8efb3e1e122274c03" url: "https://github.com/tendermint/flutter.git" source: git version: "0.0.1" @@ -673,7 +673,7 @@ packages: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.4.1" + version: "2.4.4" xdg_directories: dependency: transitive description: 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..4ae2ae4d 100644 --- a/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart +++ b/packages/transaction_signing_gateway/test/mocks/test_memory_store.dart @@ -7,6 +7,12 @@ class TestMemoryStore implements PlainDataStore, SecureDataStore { @override Future>> readAllPlainText() async => right({..._values}); + @override + Future> clearAllData() async { + _values.clear(); + return right(true); + } + @override Future> readPlainText({ required String key, diff --git a/starport_template/pubspec.lock b/starport_template/pubspec.lock index c7ec6e13..23b34c2a 100644 --- a/starport_template/pubspec.lock +++ b/starport_template/pubspec.lock @@ -153,7 +153,7 @@ packages: description: path: "packages/cosmos_auth" ref: main - resolved-ref: "2946ddfdab692a9d9f4752c4af83c2b1083f51e6" + resolved-ref: "99035c7be78a9959591220c8efb3e1e122274c03" url: "https://github.com/tendermint/flutter.git" source: git version: "0.0.1" @@ -162,7 +162,7 @@ packages: description: path: "packages/cosmos_ui_components" ref: main - resolved-ref: "2946ddfdab692a9d9f4752c4af83c2b1083f51e6" + resolved-ref: "99035c7be78a9959591220c8efb3e1e122274c03" url: "https://github.com/tendermint/flutter.git" source: git version: "0.0.1" @@ -171,7 +171,7 @@ packages: description: path: "packages/cosmos_utils" ref: main - resolved-ref: "2946ddfdab692a9d9f4752c4af83c2b1083f51e6" + resolved-ref: "99035c7be78a9959591220c8efb3e1e122274c03" url: "https://github.com/tendermint/flutter.git" source: git version: "0.0.1" @@ -651,14 +651,14 @@ packages: name: share_plus_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.1.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.1.0" share_plus_web: dependency: transitive description: @@ -788,7 +788,7 @@ packages: description: path: "packages/transaction_signing_gateway" ref: main - resolved-ref: "2946ddfdab692a9d9f4752c4af83c2b1083f51e6" + resolved-ref: "99035c7be78a9959591220c8efb3e1e122274c03" url: "https://github.com/tendermint/flutter.git" source: git version: "0.0.1" @@ -847,7 +847,7 @@ packages: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.9" url_launcher_windows: dependency: transitive description: @@ -882,7 +882,7 @@ packages: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.4.1" + version: "2.4.4" xdg_directories: dependency: transitive description: @@ -906,4 +906,4 @@ packages: version: "3.1.0" sdks: dart: ">=2.15.0 <3.0.0" - flutter: ">=2.8.0" + flutter: ">=2.10.0"