Android 需要身份验证的密钥库,不是通过指纹解锁而是通过 pin 解锁?
Android Keystore that requires authentication, not unlocked by fingerprint but by pin only?
编辑:这似乎是特定于设备的。我有一个模拟器可以发生这种情况,还有一个可以按我的预期工作。想要一个通用的答案,但也许没有?
经历了一些我认为有点奇怪的事情。我创建了一个需要用户凭据的 AndroidKeyStore。因此,当我尝试使用该密钥加密时,我得到异常 "UserNotAuthenticatedException",完美。
然后我启动确认设备凭据:
val keyguardManager = requireContext().getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
val intent = keyguardManager.createConfirmDeviceCredentialIntent(("Test"),"This is the description")
if (intent != null)
startActivityForResult(intent, AUTHENTICATION_REQUEST)
这很完美,在使用 PIN 或指纹解锁后的 onActivityResult 上,我恢复了成功状态。但是,当我现在尝试再次使用密钥库时:
如果我在凭据屏幕上使用了我的 PIN,我可以毫无问题地使用密钥库。
如果我在凭据屏幕上使用了我的指纹,它会再次抛出 "UserNotAuthenticatedException"。我基本上可以用指纹无限循环。我是否缺少允许使用指纹的设置或设置?我能够解锁 phone 本身,指纹没有问题,只是我无法通过这个密钥库。
val keyGenerator =
KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore")
val builder = KeyGenParameterSpec.Builder(
alias,
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
)
builder.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setUserAuthenticationRequired(userAuthenticationRequired)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
builder.setUserAuthenticationValidityDurationSeconds(
userAuthenticationValidityDurationSeconds
)
keyGenerator.init(builder.build())
keyGenerator.generateKey()
谢谢
这是一个特定于设备的错误。无论出于何种原因,在这种情况下,我拥有和正在使用的测试设备不允许指纹解锁。它在其他设备上按预期工作。
编辑:这似乎是特定于设备的。我有一个模拟器可以发生这种情况,还有一个可以按我的预期工作。想要一个通用的答案,但也许没有?
经历了一些我认为有点奇怪的事情。我创建了一个需要用户凭据的 AndroidKeyStore。因此,当我尝试使用该密钥加密时,我得到异常 "UserNotAuthenticatedException",完美。
然后我启动确认设备凭据:
val keyguardManager = requireContext().getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
val intent = keyguardManager.createConfirmDeviceCredentialIntent(("Test"),"This is the description")
if (intent != null)
startActivityForResult(intent, AUTHENTICATION_REQUEST)
这很完美,在使用 PIN 或指纹解锁后的 onActivityResult 上,我恢复了成功状态。但是,当我现在尝试再次使用密钥库时:
如果我在凭据屏幕上使用了我的 PIN,我可以毫无问题地使用密钥库。
如果我在凭据屏幕上使用了我的指纹,它会再次抛出 "UserNotAuthenticatedException"。我基本上可以用指纹无限循环。我是否缺少允许使用指纹的设置或设置?我能够解锁 phone 本身,指纹没有问题,只是我无法通过这个密钥库。
val keyGenerator =
KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore")
val builder = KeyGenParameterSpec.Builder(
alias,
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
)
builder.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setUserAuthenticationRequired(userAuthenticationRequired)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
builder.setUserAuthenticationValidityDurationSeconds(
userAuthenticationValidityDurationSeconds
)
keyGenerator.init(builder.build())
keyGenerator.generateKey()
谢谢
这是一个特定于设备的错误。无论出于何种原因,在这种情况下,我拥有和正在使用的测试设备不允许指纹解锁。它在其他设备上按预期工作。