Plugin crash on SetCredentials
KAMAELUA opened this issue · comments
Phone Xiaomi Redmi Note 9 MIUI 12.5.5
Android 11 RKQ1.200826.002
Plugin crashes on SetCredentials with error that cause app crash.
Exception stack
Serious error executing plugin
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:138)
at com.getcapacitor.Bridge.lambda$callPluginMethod$0(Bridge.java:780)
at com.getcapacitor.Bridge.$r8$lambda$ehFTi5f4HhVNFKTbCKAYDkpQYRA(Unknown Source:0)
at com.getcapacitor.Bridge$$ExternalSyntheticLambda3.run(Unknown Source:8)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:236)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.security.keystore.StrongBoxUnavailableException: Failed to generate key
at android.security.keystore.AndroidKeyStoreKeyGeneratorSpi.engineGenerateKey(AndroidKeyStoreKeyGeneratorSpi.java:328)
at javax.crypto.KeyGenerator.generateKey(KeyGenerator.java:612)
at com.epicshaggy.biometric.NativeBiometric.generateKey(NativeBiometric.java:300)
at com.epicshaggy.biometric.NativeBiometric.getKey(NativeBiometric.java:311)
at com.epicshaggy.biometric.NativeBiometric.encryptString(NativeBiometric.java:262)
at com.epicshaggy.biometric.NativeBiometric.setCredentials(NativeBiometric.java:175)
at java.lang.reflect.Method.invoke(Native Method)
at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:138)
at com.getcapacitor.Bridge.lambda$callPluginMethod$0(Bridge.java:780)
at com.getcapacitor.Bridge.$r8$lambda$ehFTi5f4HhVNFKTbCKAYDkpQYRA(Unknown Source:0)
at com.getcapacitor.Bridge$$ExternalSyntheticLambda3.run(Unknown Source:8)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:236)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.security.KeyStoreException: No StrongBox available
at android.security.keystore.AndroidKeyStoreKeyGeneratorSpi.engineGenerateKey(AndroidKeyStoreKeyGeneratorSpi.java:328)
at javax.crypto.KeyGenerator.generateKey(KeyGenerator.java:612)
at com.epicshaggy.biometric.NativeBiometric.generateKey(NativeBiometric.java:300)
at com.epicshaggy.biometric.NativeBiometric.getKey(NativeBiometric.java:311)
at com.epicshaggy.biometric.NativeBiometric.encryptString(NativeBiometric.java:262)
at com.epicshaggy.biometric.NativeBiometric.setCredentials(NativeBiometric.java:175)
at java.lang.reflect.Method.invoke(Native Method)
at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:138)
at com.getcapacitor.Bridge.lambda$callPluginMethod$0(Bridge.java:780)
at com.getcapacitor.Bridge.$r8$lambda$ehFTi5f4HhVNFKTbCKAYDkpQYRA(Unknown Source:0)
at com.getcapacitor.Bridge$$ExternalSyntheticLambda3.run(Unknown Source:8)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:236)
at android.os.HandlerThread.run(HandlerThread.java:67)
Code sample that works on my other devices except Xiaomi.
if(verified) {
try {
await NativeBiometric.setCredentials({
server,
username,
password,
});
} catch (e) {
console.error('setCredentials', e);
}
}
Duplicate of #97