当我首先注册并且只注册指纹并生成KeyPair
时,当我第二次使用PrivateKey
时,它就失效了。这种情况只会发生一次。我是唯一一个有这个问题的人吗?我的代码有什么问题吗?
我不能使用任何其他密钥,因为我正在使用PrivateKey
对数据进行签名。
步骤:
擦除所有fingerprints
KeyPair
并使用下一次使用FingerprintManager :: authenticate PrivateKey
将永久失效。这种情况只在第一次出现时发生
下面是我生成KeyPair
的代码
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keystore.load(null);
KeyPairGenerator generator = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
generator.initialize(new KeyGenParameterSpec.Builder("key_name", KeyProperties.PURPOSE_SIGN)
.setDigests(digest) // I have defined digest before
.setSignaturePaddings(paddings) // I have defined paddings before
.setUserAuthenticationRequired(true)
.build());
generator.generateKeyPair();
下面是我调用指纹身份验证进行数据签名的代码:
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
Signature signature = Signature.getInstance("signing_algorithm");
PrivateKey privateKey = (PrivateKey) keyStore.getKey("key_name", null);
signature.initSign(privateKey); // Here I get KeyPermanentlyInvalidatedException
CryptoObject crypto = new CryptoObject(signature);
FingerprintManager fingerprintManager = context.getSystemService(FingerprintManager.class);
CancellationSignal cancellationSignal = new CancellationSignal();
AuthenticationCallback authenticationCallback = new AuthenticationCallback() {
...
};
fingerprintManager.authenticate(crypto, cancelationSignal, 0, authenticationCallback, null);
https://stackoverflow.com/questions/40243239
复制相似问题