我在 AndroidKeyStore 中有一个公钥/私钥对,生成如下:
val spec = KeyGenParameterSpec.Builder(alias(username), KeyProperties.PURPOSE_DECRYPT or KeyProperties.PURPOSE_ENCRYPT)
.setKeySize(keySize)
.setUserAuthenticationRequired(true)
.setBlockModes(ablockMode)
.setEncryptionPaddings(apaddingMode)
.setCertificateSubject(X500Principal("CN=Itsami Mario, OU=Adventure Unit, O=Plumber Bros, C=US"))
.setKeyValidityStart(Date())
.setKeyValidityEnd(Date(Date().time + 1000 * 60 * 60 * 24 * 7))
.setCertificateSerialNumber(BigInteger(64, SecureRandom()))
.setDigests(digest)
.build()
keyPairGen.initialize(spec)
return keyPairGen.genKeyPair()
我想在每次使用私钥时都要求进行生物特征认证,但我不想在使用公钥加密时要求生物特征提示。但是,当我setUserAuthenticationRequired(true)
在 KeyGenerator 中使用时,然后我尝试在不首先显示 BiometricPrompt 的情况下进行加密,我收到一条android.security.KeyStoreException
消息:Key user not authenticated
我如何要求解密而不是加密的身份验证?