android - 如果仅安装了面部作为生物特征,则使用 AndroidX.Biometric 的 KeyGeneration 会失败

标签 android android-keystore biometrics android-biometric-prompt keystore-access

我们目前正在尝试使用生物识别技术对数据进行签名,我们使用 androidx.biometric 库。

问题是,如果没有安装指纹但人脸已注册,我们无法生成任何 key 。

仅使用指纹或结合指纹和面部,一切都完美无缺。

只注册了人脸,我们在 key 生成过程中得到以下异常:

原因:java.security.InvalidAlgorithmParameterException:java.lang.IllegalStateException:必须至少注册一个生物特征才能创建每次使用都需要用户身份验证的 key

在我们开始生成 key 之前,我们测试生物特征的存在如下:

boolean isAvailable = biometricManager.canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS;

测试设备为搭载 Android 10 的三星 Galaxy S10。

感谢您的帮助和最好的问候

最佳答案

Google 已更新 androidx 生物识别 sdk。如果您要在应用程序中使用强类型身份验证。可以检查强类型身份验证。如果你的设备适合这个,你可以创建一个cryptoObject。
https://developer.android.com/jetpack/androidx/releases/biometric#1.1.0-alpha02
https://developer.android.com/reference/android/hardware/biometrics/BiometricManager#canAuthenticate(int)

val canAuthenticate = BiometricManager.from (context)
.canAuthenticate (BiometricManager.Authenticators.BIOMETRIC_STRONG)
完成此检查后,您可以继续生成 key 。

关于android - 如果仅安装了面部作为生物特征,则使用 AndroidX.Biometric 的 KeyGeneration 会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61698257/

相关文章:

android - 我可以用什么格式在android上录制并在ios上播放

java - 何时使用回调而不是普通函数?

java - 根据字符串变量的值动态更改自定义按钮(xml文件)的背景

java - Android Keystore 硬件支持的证明不适用于三星 Galaxy S8

android - 为我公司的不同客户使用一个 keystore ?

安卓指纹检测新增手指

android - 如何将 LD_PRELOAD 与 Android 的媒体服务器一起使用?

Android keystore - 如果 root 为该用户设置了用户 key ,他可以检索用户 key 吗?

mysql - Delphi 10、数字角色和 MySQL