小编hoc*_*yen的帖子

KeyPermanentlyInvalidatedException 不起作用

我使用 KeyPermanentlyInvalidatedException 来检测是否添加了新指纹。但它不会抛出 KeyPermanentlyInvalidatedException。

我试过这些步骤:

  1. 项目清单
  2. 创建密钥对
  3. 从私钥初始化签名
  4. 从手机的设置添加新指纹
  5. 再次尝试从私钥初始化签名但它不会抛出 KeyPermanentlyInvalidatedException

我也从 stackoverflow找到了这个链接,但它没有帮助我。

从文件:

一旦安全锁屏被禁用(重新配置为无、滑动或其他不对用户进行身份验证的模式)或当安全锁屏被强制重置(例如,由设备管理员)时,密钥将不可逆转地失效。此外,如果密钥要求每次使用密钥都进行用户身份验证,则一旦注册新指纹或不再注册指纹,它也将不可逆转地失效,除非使用 setInvalidatedByBiometricEnrollment(boolean) 来允许注册后的有效性。尝试使用此类密钥初始化加密操作将引发 KeyPermanentlyInvalidatedException。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_authenticate);

    mButtonTest = findViewById(R.id.button_test);
    mButtonTest.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonTestOnClick();
        }
    });

    boolean isFirstTime = PreferenceManager.getInstances().getFirstTime();
    PreferenceManager.getInstances().setFirstTime(false);

    if (isFirstTime) {
        createKeyPair();
    }
}

private void buttonTestOnClick() {
    boolean result = initSignature();
    Log.e("iii", "Create signature result: " + result);

    boolean isFirstTime = PreferenceManager.getInstances().getFirstTime();

    if (result) {
        if (isFirstTime) { …
Run Code Online (Sandbox Code Playgroud)

android private-key android-fingerprint-api

5
推荐指数
0
解决办法
1236
查看次数