setUserAuthenticationRequired(true) 和 setUserAuthenticationValidityDurationSeconds(X) 时未捕获 Android KeyPermanentlyInvalidatedExce

2023-12-30

你好 Android 开发者,

当我同时使用 Fingerprint 和 AndroidKeystoreProvider 时,我的应用程序中出现了一些奇怪的情况。

案例如下:

我使用 KeyPairGenerator 创建一个密钥对。 在我设置的构建器中setUserAuthenticationRequired(true) and setUserAuthenticationValidityDurationSeconds(10).

我已在指纹中登记了 3 个手指。

当我接下来尝试使用以下命令初始化签名算法时initSign(...)第一次,用户未验证异常被抓住了。这还算公平。 (https://developer.android.com/reference/android/security/keystore/UserNotAuthenticatedException.html https://developer.android.com/reference/android/security/keystore/UserNotAuthenticatedException.html)

然后我将新手指注册到我的指纹中。

所以我期望当我初始化签名算法时,它应该捕获密钥永久无效异常如 Google 文档中所述(https://developer.android.com/reference/android/security/keystore/KeyPermanentlyInvalidatedException.html https://developer.android.com/reference/android/security/keystore/KeyPermanentlyInvalidatedException.html)但事实并非如此。用户未验证异常总是被抓住。

如果我删除setUserAuthenticationValidityDurationSeconds(10)事情会按预期进行。 (密钥永久无效异常很好地抓住了)

你知道是否有办法让这两个例外都可以使用setUserAuthenticationRequired(true) and setUserAuthenticationValidityDurationSeconds(10) ?

先感谢您, 马特


No, KeyPermanentlyInvalidatedExceptionsetUserAuthenticationValidityDurationSeconds > -1

来自设置用户身份验证有效性持续时间秒 https://developer.android.com/reference/android/security/keystore/KeyProtection.Builder.html#setUserAuthenticationValidityDurationSeconds(int) docs:

Parameters: seconds int: duration in seconds or-1 if user authentication must take place for every use of the key.

和来自设置用户身份验证必需 https://developer.android.com/reference/android/security/keystore/KeyProtection.Builder.html#setUserAuthenticationRequired(boolean):

Additionally,if the key requires that user authentication takes place for every use of the key, it is also irreversibly invalidated once a new fingerprint is enrolled


更新(2018年11月26日)

KeyPermanentlyInvalidatedException如果setUserAuthenticationValidityDurationSeconds > -1, 因为:

密码操作涉及被授权的密钥 使用一段时间用户认证成功后 事件只能使用安全锁屏身份验证。这些 密码操作将抛出 UserNotAuthenticatedException在初始化期间如果用户需要进行身份验证 继续。

Source: https://developer.android.com/reference/android/security/keystore/KeyProtection.Builder#setUserAuthenticationValidityDurationSeconds(int) https://developer.android.com/reference/android/security/keystore/KeyProtection.Builder.html#setUserAuthenticationValidityDurationSeconds(int)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setUserAuthenticationRequired(true) 和 setUserAuthenticationValidityDurationSeconds(X) 时未捕获 Android KeyPermanentlyInvalidatedExce 的相关文章

随机推荐