AndroidKeyStore not found on device
Hi, recently we have received multiple user reports that the logic of our Unity app has issues. Digging deeper, we realized that the error was related to Android KeyStore not found error.
Our Unity app uses Andorid backend, which integrates with AWS Cognito SDK to store auth tokens. As you can see from the stack trace below, the token caching mechanicsm failed because of keystore issue.
Have Meta Quest made any adjustment to the token store access? I couldn't find any resource to debug further. Unfortunately, this issue is disrupting user experiences, so any help is greatly appreciated. Thank you!
2023-05-02 12:50:58.975 17399-17913/? E/AWSKeyValueStore: Encryption Key cannot be generated successfully.
com.amazonaws.internal.keyvaluestore.KeyNotGeneratedException: Cannot generate a key for alias: CognitoIdentityProviderCache.aesKeyStoreAlias in AndroidKeyStore
at com.amazonaws.internal.keyvaluestore.KeyProvider23.generateKey(KeyProvider23.java:110)
at com.amazonaws.internal.keyvaluestore.AWSKeyValueStore.generateEncryptionKey(AWSKeyValueStore.java:498)
at com.amazonaws.internal.keyvaluestore.AWSKeyValueStore.put(AWSKeyValueStore.java:314)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.cacheTokens(CognitoUser.java:2769)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.handleChallenge(CognitoUser.java:3091)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.handleChallenge(CognitoUser.java:3219)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.access$2600(CognitoUser.java:133)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser$37.run(CognitoUser.java:3257)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.AuthenticationContinuation.continueTask(AuthenticationContinuation.java:147)
at com.owl3d.apputil.CognitoAuthModel$signInImpl$2$authenticationHandler$1.getAuthenticationDetails(AuthModel.kt:441)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.getSession(CognitoUser.java:1032)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.getSession(CognitoUser.java:970)
at com.owl3d.apputil.CognitoAuthModel.signInImpl(AuthModel.kt:459)
at com.owl3d.apputil.CognitoAuthModel.signIn(AuthModel.kt:377)
at com.owl3d.apputil.AuthModelImp.signInCognito(AuthModel.kt:113)
at com.owl3d.appdata.SignInViewModel.onSignInSubmittedImpl(SignInViewModel.kt:104)
at com.owl3d.appdata.SignInViewModel.access$onSignInSubmittedImpl(SignInViewModel.kt:14)
at com.owl3d.appdata.SignInViewModel$onSignInSubmitted$1.invokeSuspend(SignInViewModel.kt:99)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.security.KeyStoreException: AndroidKeyStore not found
at java.security.KeyStore.getInstance(KeyStore.java:890)
at com.amazonaws.internal.keyvaluestore.KeyProvider23.generateKey(KeyProvider23.java:81)
at com.amazonaws.internal.keyvaluestore.AWSKeyValueStore.generateEncryptionKey(AWSKeyValueStore.java:498)
at com.amazonaws.internal.keyvaluestore.AWSKeyValueStore.put(AWSKeyValueStore.java:314)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.cacheTokens(CognitoUser.java:2769)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.handleChallenge(CognitoUser.java:3091)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.handleChallenge(CognitoUser.java:3219)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.access$2600(CognitoUser.java:133)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser$37.run(CognitoUser.java:3257)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.AuthenticationContinuation.continueTask(AuthenticationContinuation.java:147)
at com.owl3d.apputil.CognitoAuthModel$signInImpl$2$authenticationHandler$1.getAuthenticationDetails(AuthModel.kt:441)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.getSession(CognitoUser.java:1032)
at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.getSession(CognitoUser.java:970)
at com.owl3d.apputil.CognitoAuthModel.signInImpl(AuthModel.kt:459)
at com.owl3d.apputil.CognitoAuthModel.signIn(AuthModel.kt:377)
at com.owl3d.apputil.AuthModelImp.signInCognito(AuthModel.kt:113)
at com.owl3d.appdata.SignInViewModel.onSignInSubmittedImpl(SignInViewModel.kt:104)
at com.owl3d.appdata.SignInViewModel.access$onSignInSubmittedImpl(SignInViewModel.kt:14)
at com.owl3d.appdata.SignInViewModel$onSignInSubmitted$1.invokeSuspend(SignInViewModel.kt:99)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
