element-hq / element-android

A Matrix collaboration client for Android.
https://element.io/
GNU Affero General Public License v3.0
3.36k stars 713 forks source link

Login Fails with unknown error though login request is successfull #1205

Open BillCarsonFr opened 4 years ago

BillCarsonFr commented 4 years ago
image

FormattedJsonHttpLogger: <-- 200 OK http://10.0.2.2:8080/_matrix/client/r0/login (300ms)

 javax.crypto.AEADBadTagException
     at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:517)
     at javax.crypto.Cipher.doFinal(Cipher.java:2055)
     at im.vector.matrix.android.internal.session.securestorage.SecretStoringUtils.decryptStringM(SecretStoringUtils.kt:237)
     at im.vector.matrix.android.internal.session.securestorage.SecretStoringUtils.loadSecureSecret(SecretStoringUtils.kt:141)
     at im.vector.matrix.android.internal.database.RealmKeysUtils.extractKeyForDatabase(RealmKeysUtils.kt:84)
     at im.vector.matrix.android.internal.database.RealmKeysUtils.configureEncryption(RealmKeysUtils.kt:91)
     at im.vector.matrix.android.internal.database.SessionRealmConfigurationFactory.create(SessionRealmConfigurationFactory.kt:67)
     at im.vector.matrix.android.internal.session.SessionModule$Companion.providesRealmConfiguration(SessionModule.kt:159)
     at im.vector.matrix.android.internal.session.SessionModule.providesRealmConfiguration(Unknown Source:2)
     at im.vector.matrix.android.internal.session.SessionModule_ProvidesRealmConfigurationFactory.providesRealmConfiguration(SessionModule_ProvidesRealmConfigurationFactory.java:34)
     at im.vector.matrix.android.internal.session.SessionModule_ProvidesRealmConfigurationFactory.get(SessionModule_ProvidesRealmConfigurationFactory.java:24)
     at im.vector.matrix.android.internal.session.SessionModule_ProvidesRealmConfigurationFactory.get(SessionModule_ProvidesRealmConfigurationFactory.java:10)
     at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
     at im.vector.matrix.android.internal.session.SessionModule_ProvidesMonarchyFactory.get(SessionModule_ProvidesMonarchyFactory.java:24)
     at im.vector.matrix.android.internal.session.SessionModule_ProvidesMonarchyFactory.get(SessionModule_ProvidesMonarchyFactory.java:10)
     at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
     at im.vector.matrix.android.internal.session.group.GroupSummaryUpdater_Factory.get(GroupSummaryUpdater_Factory.java:29)
     at im.vector.matrix.android.internal.session.group.GroupSummaryUpdater_Factory.get(GroupSummaryUpdater_Factory.java:9)
     at dagger.internal.SetFactory.get(SetFactory.java:126)
     at dagger.internal.SetFactory.get(SetFactory.java:37)
     at im.vector.matrix.android.internal.session.DefaultSession_Factory.get(DefaultSession_Factory.java:163)
     at im.vector.matrix.android.internal.session.DefaultSession_Factory.get(DefaultSession_Factory.java:38)
     at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
     at im.vector.matrix.android.internal.session.DaggerSessionComponent.session(DaggerSessionComponent.java:1212)
     at im.vector.matrix.android.internal.SessionManager.getOrCreateSession(SessionManager.kt:42)
     at im.vector.matrix.android.internal.auth.DefaultSessionCreator.createSession(SessionCreator.kt:67)
     at im.vector.matrix.android.internal.auth.login.DefaultLoginWizard$loginInternal$2.invokeSuspend(DefaultLoginWizard.kt:79)
     at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
     at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
     at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
     at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
     at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)
 Caused by: android.security.KeyStoreException: Signature/MAC verification failed
     at android.security.KeyStore.getKeyStoreException(KeyStore.java:1292)
     at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:224)
     at android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.doFinal(AndroidKeyStoreAuthenticatedAESCipherSpi.java:373)
     at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:506)
BillCarsonFr commented 4 years ago

App is then crashing on startup

We need a strategy to recover from data base decryption failure

2020-04-03 18:18:04.053 23637-23637/im.vector.riotx.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: im.vector.riotx.debug, PID: 23637
    java.lang.RuntimeException: Unable to create application im.vector.riotx.VectorApplication: javax.crypto.AEADBadTagException
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6465)
        at android.app.ActivityThread.access$1300(ActivityThread.java:219)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: javax.crypto.AEADBadTagException
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:517)
        at javax.crypto.Cipher.doFinal(Cipher.java:2055)
        at im.vector.matrix.android.internal.session.securestorage.SecretStoringUtils.decryptStringM(SecretStoringUtils.kt:237)
        at im.vector.matrix.android.internal.session.securestorage.SecretStoringUtils.loadSecureSecret(SecretStoringUtils.kt:141)
        at im.vector.matrix.android.internal.database.RealmKeysUtils.extractKeyForDatabase(RealmKeysUtils.kt:84)
        at im.vector.matrix.android.internal.database.RealmKeysUtils.configureEncryption(RealmKeysUtils.kt:91)
        at im.vector.matrix.android.internal.database.SessionRealmConfigurationFactory.create(SessionRealmConfigurationFactory.kt:67)
        at im.vector.matrix.android.internal.session.SessionModule$Companion.providesRealmConfiguration(SessionModule.kt:159)
        at im.vector.matrix.android.internal.session.SessionModule.providesRealmConfiguration(Unknown Source:2)
        at im.vector.matrix.android.internal.session.SessionModule_ProvidesRealmConfigurationFactory.providesRealmConfiguration(SessionModule_ProvidesRealmConfigurationFactory.java:34)
        at im.vector.matrix.android.internal.session.SessionModule_ProvidesRealmConfigurationFactory.get(SessionModule_ProvidesRealmConfigurationFactory.java:24)
        at im.vector.matrix.android.internal.session.SessionModule_ProvidesRealmConfigurationFactory.get(SessionModule_ProvidesRealmConfigurationFactory.java:10)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at im.vector.matrix.android.internal.session.SessionModule_ProvidesMonarchyFactory.get(SessionModule_ProvidesMonarchyFactory.java:24)
        at im.vector.matrix.android.internal.session.SessionModule_ProvidesMonarchyFactory.get(SessionModule_ProvidesMonarchyFactory.java:10)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at im.vector.matrix.android.internal.session.group.GroupSummaryUpdater_Factory.get(GroupSummaryUpdater_Factory.java:29)
        at im.vector.matrix.android.internal.session.group.GroupSummaryUpdater_Factory.get(GroupSummaryUpdater_Factory.java:9)
        at dagger.internal.SetFactory.get(SetFactory.java:126)
        at dagger.internal.SetFactory.get(SetFactory.java:37)
        at im.vector.matrix.android.internal.session.DefaultSession_Factory.get(DefaultSession_Factory.java:163)
        at im.vector.matrix.android.internal.session.DefaultSession_Factory.get(DefaultSession_Factory.java:38)
        at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
        at im.vector.matrix.android.internal.session.DaggerSessionComponent.session(DaggerSessionComponent.java:1212)
        at im.vector.matrix.android.internal.SessionManager.getOrCreateSession(SessionManager.kt:42)
        at im.vector.matrix.android.internal.auth.DefaultAuthenticationService.getLastAuthenticatedSession(DefaultAuthenticationService.kt:77)
        at im.vector.riotx.VectorApplication.onCreate(VectorApplication.kt:121)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1182)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)
        at android.app.ActivityThread.access$1300(ActivityThread.java:219) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: android.security.KeyStoreException: Signature/MAC verification failed
        at android.security.KeyStore.getKeyStoreException(KeyStore.java:1292)
2020-04-03 18:18:04.053 23637-23637/im.vector.riotx.debug E/AndroidRuntime:     at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:224)
        at android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer.doFinal(AndroidKeyStoreAuthenticatedAESCipherSpi.java:373)
        at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:506)
bmarty commented 4 years ago

It happens a lot to me when I'm using the emulator. Never seen that on a real device though. Were you on an emulator?

chagai95 commented 2 years ago

I'm seeing it, but I'm still building so it's not the release...