From 77ed771f46d567f58c427b3d50e46e84d5f6c51f Mon Sep 17 00:00:00 2001 From: tjroach Date: Fri, 21 Feb 2025 14:28:24 -0500 Subject: [PATCH 1/2] Prevent crash if keystore not available (ex: instant app) --- .../auth/cognito/data/LegacyKeyProvider.kt | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/data/LegacyKeyProvider.kt b/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/data/LegacyKeyProvider.kt index 4f649ab36a..107441def2 100644 --- a/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/data/LegacyKeyProvider.kt +++ b/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/data/LegacyKeyProvider.kt @@ -31,12 +31,16 @@ internal object LegacyKeyProvider { val keyStore = KeyStore.getInstance(ANDROID_KEY_STORE_NAME) keyStore.load(null) - if (keyStore.containsAlias(keyAlias)) { - return Result.failure( - CredentialStoreError( - "Key already exists for the keyAlias: $keyAlias in $ANDROID_KEY_STORE_NAME" + try { + if (keyStore.containsAlias(keyAlias)) { + return Result.failure( + CredentialStoreError( + "Key already exists for the keyAlias: $keyAlias in $ANDROID_KEY_STORE_NAME" + ) ) - ) + } + } catch (exception: Exception) { + return Result.failure(CredentialStoreError("Failed to connect to KeyStore")) } val parameterSpec = @@ -60,11 +64,16 @@ internal object LegacyKeyProvider { val keyStore = KeyStore.getInstance(ANDROID_KEY_STORE_NAME) keyStore.load(null) - if (!keyStore.containsAlias(keyAlias)) { - val message = "Key does not exists for the keyAlias: $keyAlias in $ANDROID_KEY_STORE_NAME" - return Result.failure(CredentialStoreError(message)) + try { + if (!keyStore.containsAlias(keyAlias)) { + val message = "Key does not exists for the keyAlias: $keyAlias in $ANDROID_KEY_STORE_NAME" + return Result.failure(CredentialStoreError(message)) + } + } catch (exception: Exception) { + return Result.failure(CredentialStoreError("Failed to connect to KeyStore")) } + val key: Key? = keyStore.getKey(keyAlias, null) return if (key != null) { Result.success(key) @@ -79,6 +88,10 @@ internal object LegacyKeyProvider { val keyStore = KeyStore.getInstance(ANDROID_KEY_STORE_NAME) keyStore.load(null) - keyStore.deleteEntry(keyAlias) + try { + keyStore.deleteEntry(keyAlias) + } catch(exception: Exception) { + // KeyStore unreachable + } } } From d4529988812b15ac6fdf7579802af1d544ac4642 Mon Sep 17 00:00:00 2001 From: tjroach Date: Fri, 21 Feb 2025 14:54:05 -0500 Subject: [PATCH 2/2] lint --- .../amplifyframework/auth/cognito/data/LegacyKeyProvider.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/data/LegacyKeyProvider.kt b/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/data/LegacyKeyProvider.kt index 107441def2..9ebbe282e7 100644 --- a/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/data/LegacyKeyProvider.kt +++ b/aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/data/LegacyKeyProvider.kt @@ -73,7 +73,6 @@ internal object LegacyKeyProvider { return Result.failure(CredentialStoreError("Failed to connect to KeyStore")) } - val key: Key? = keyStore.getKey(keyAlias, null) return if (key != null) { Result.success(key) @@ -90,7 +89,7 @@ internal object LegacyKeyProvider { try { keyStore.deleteEntry(keyAlias) - } catch(exception: Exception) { + } catch (exception: Exception) { // KeyStore unreachable } }