您是否遇到过Android Fingerprint API以非预期方式运行的情况?我遇到的问题是当我使用给定的attestationChallenge
生成PrivateKey
并为数据签名userAuthenticationValidityDurationSeconds
时。如果我不注册新指纹,一切都按预期工作,但是在注册新指纹后,我希望该密钥永久失效,但事实并非如此。你有过类似的经历吗?
以下是我用来生成PrivateKey
的代码。
val keyStore = KeyStore.getInstance("AndroidKeystore")
keyStore.load(null)
val keyPairGenerator = KeyPairGenerator.getInstance(algorithm, "AndroidKeyStore")
val builder = KeyGenParameterSpec.Builder("alias", KeyProperties.PURPOSE_SIGN)
builder.apply {
setDigests(digests)
setSignaturePaddings(paddings)
setUserAuthenticationRequired(true)
setInvalidatedByBiometricEnrollment(true)
setAttestationChallenge(attestationChallenge)
setUserAuthenticationValidityDurationSeconds(userAuthenticationValidityDurationSeconds)
}
keyPairGenerator.initialize(builder.build())
keyPairGenerator.generateKeyPair()
我做错了什么或错过了什么吗?谢谢!
回答我自己的问题。 如果PrivateKey
设置为正值,则userAuthenticationValidityDurationSeconds
不会作系统失效。只有在注册新指纹时,如果密钥的目的仅在使用指纹进行身份验证时使用,则该密钥才会失效。