Trust-Anchor-Group / NeuroAccessMaui

Contains a Maui App for TAG Neuro-Access.
Other
3 stars 0 forks source link

SecureStorage exception on cleaning data and reinstall #12

Open berggrenmille opened 4 months ago

berggrenmille commented 4 months ago

on certain android devices, clearing cache & data corrupts the apps Database https://stackoverflow.com/questions/55665337/keystoreexception-signature-mac-verification-failed-when-trying-to-decrypt

Exception_WasThrown, Java.Security.GeneralSecurityException

at Java.Interop.JniEnvironment.StaticMethods.CallStaticObjectMethod(JniObjectReference , JniMethodInfo , JniArgumentValue ) at Java.Interop.JniPeerMembers.JniStaticMethods.InvokeObjectMethod(String , JniArgumentValue ) at AndroidX.Security.Crypto.EncryptedSharedPreferences.Create(Context , String , MasterKey , PrefKeyEncryptionScheme , PrefValueEncryptionScheme ) at Microsoft.Maui.Storage.SecureStorageImplementation.GetEncryptedSharedPreferences() at Microsoft.Maui.Storage.SecureStorageImplementation.PlatformRemove(String ) at Microsoft.Maui.Storage.SecureStorageImplementation.<>c__DisplayClass5_0.b0() at System.Threading.Tasks.Task1[[System.String, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke() at System.Threading.Tasks.Task.<>c.<.cctor>b281_0(Object obj) at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread , ExecutionContext , ContextCallback , Object ) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread , ExecutionContext , ContextCallback , Object ) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& , Thread ) --- End of stack trace from previous location --- at NeuroAccessMaui.Services.Crypto.CryptoService.GetCustomKey(String fileName) at NeuroAccessMaui.Services.Crypto.CryptoService.InitializeJwtFactory() at NeuroAccessMaui.App.InitInParallel(TaskCompletionSource1 Result, Boolean BackgroundStart) --- End of managed Java.Security.GeneralSecurityException stack trace --- 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:993) at com.google.crypto.tink.KeysetHandle.readWithAssociatedData(KeysetHandle.java:878) at com.google.crypto.tink.KeysetHandle.read(KeysetHandle.java:859) at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readMasterkeyDecryptAndParseKeyset(AndroidKeysetManager.java:378) at com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build(AndroidKeysetManager.java:298) at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:169) at androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:130) 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)

berggrenmille commented 1 week ago

This might be resolved in an earlier PR