首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android指纹API和私钥/公钥

Android指纹API和私钥/公钥
EN

Stack Overflow用户
提问于 2016-10-25 22:55:20
回答 2查看 3.7K关注 0票数 20

当我首先注册并且只注册指纹并生成KeyPair时,当我第二次使用PrivateKey时,它就失效了。这种情况只会发生一次。我是唯一一个有这个问题的人吗?我的代码有什么问题吗?

我不能使用任何其他密钥,因为我正在使用PrivateKey对数据进行签名。

步骤:

擦除所有fingerprints

  • Enrol one fingerprint

  • Generate KeyPair并使用下一次使用FingerprintManager :: authenticate PrivateKey将永久失效。这种情况只在

第一次出现时发生

下面是我生成KeyPair的代码

代码语言:javascript
复制
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();

下面是我调用指纹身份验证进行数据签名的代码:

代码语言:javascript
复制
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);
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40243239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档