tink-crypto / tink-java

Java implementation of Tink
https://developers.google.com/tink
Apache License 2.0
117 stars 16 forks source link

Application Crash Using EncryptedSharedPreferences - Version : security-crypto-ktx:1.1.0-alpha06 #39

Closed mmfaragallah closed 1 week ago

mmfaragallah commented 1 month ago

Application crashes while using EncryptedSharedPreferences.create

As following:

val sharedPreferences = EncryptedSharedPreferences.create( context, SECURE_PREF_FILE_NAME, masterKey, EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM )

Version used:

implementation "androidx.security:security-crypto-ktx:1.1.0-alpha06"

Device details attached. PHOTO-2024-07-17-12-02-24

Android 13 .

Stacktrace.

Kindly, how to avoid application crash?

Thanks.

FATAL EXCEPTION: main Process: com.qatar.mwani.mwanina, PID: 14944 javax.crypto.AEADBadTagException at android.security.keystore2.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:617) at javax.crypto.Cipher.doFinal(Cipher.java:2114) at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decryptInternal(AndroidKeystoreAesGcm.java:118) at com.google.crypto.tink.integration.android.AndroidKeystoreAesGcm.decrypt(AndroidKeystoreAesGcm.java:101) at com.google.crypto.tink.KeysetHandle.decrypt(KeysetHandle.java:919) at com.google.crypto.tink.KeysetHandle.readWithAssociatedData(KeysetHandle.java:804) at com.google.crypto.tink.KeysetHandle.read(KeysetHandle.java:785) at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readMasterkeyDecryptAndParseKeyset(AndroidKeysetManager.java:381) at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build(AndroidKeysetManager.java:297) at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:169) at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:130) at com.qatar.mwani.mwanina.features.login.domain.usecase.SaveUserCredentialUseCaseImpl.invoke(SaveUserCredentialUseCaseImpl.kt:22) at com.qatar.mwani.mwanina.features.login.presentation.viewmodel.LoginViewModel$whenLoginButtonClicked$1.invokeSuspend(LoginViewModel.kt:77) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8810) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@328d0cf, Dispatchers.Main.immediate] Caused by: android.security.KeyStoreException: Signature/MAC verification failed (internal Keystore code: -30 message: In KeystoreOperation::finish

                                                                                                Caused by:
                                                                                                    0: In finish: KeyMint::finish failed.
                                                                                                    1: Error::Km(ErrorCode(-30))) (public error code: 10 internal Keystore code: -30)
                                                                                                    at android.security.KeyStore2.getKeyStoreException(KeyStore2.java:418)
                                                                                                    at android.security.KeyStoreOperation.handleExceptions(KeyStoreOperation.java:78)
                                                                                                    at android.security.KeyStoreOperation.finish(KeyStoreOperation.java:128)
                                                                                                    at android.security.keystore2.KeyStoreCryptoOperationChunkedStreamer$MainDataStream.finish(KeyStoreCryptoOperationChunkedStreamer.java:228)
                                                                                                    at android.security.keystore2.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:181)
                                                                                                    at android.security.keystore2.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.doFinal(AndroidKeyStoreAuthenticatedAESCipherSpi.java:396)
                                                                                                    at android.security.keystore2.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:609)
                                                                                                    ... 22 more
mmfaragallah commented 1 month ago

@juergw @tholenst Appreciate your help on this issue, thanks.

juergw commented 1 month ago

See discussion on https://github.com/tink-crypto/tink-java/issues/23

mmfaragallah commented 1 month ago

Yes, I saw it and last comment solution did not work with me. Any other advice, please ? 

Sent from Yahoo Mail on Android

On Tue, Jul 23, 2024 at 5:14 PM, Jürg @.***> wrote:

See dicussion on #23

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

juergw commented 3 weeks ago

Sorry, we can't help you with this problem.