您好我有一个程序需要在密钥库中存储密钥,我生成一对密钥并且我签署了一个值,这一切都能完美地运行。当用户转到首选项并更改密码或将密码模式更改为引脚模式时,问题就出现了。之后,当我尝试访问私钥时,密钥库会向我返回一个空值。
我知道keysotore值是使用解锁密码值签名的,但我相信如果用户更改了密码,密钥库将使用新密钥重新签名,但事实并非如此。
我做错了什么?如果不是这样,有没有办法改变密码并手动进行?
这是我正在使用的代码。
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
kpg.initialize(new KeyPairGeneratorSpec.Builder(context)
.setAlias(ALIAS)
.setStartDate(now)
.setEndDate(end)
.setSerialNumber(BigInteger.valueOf(1))
.setSubject(new X500Principal("CN=test1"))
.build());
KeyPair kp = kpg.generateKeyPair();
这是获取密钥库的代码
KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
ks.load(null);
KeyStore.Entry entry = ks.getEntry(ALIAS, null);
if (!(entry instanceof KeyStore.PrivateKeyEntry)) {
Log.w("borrar", "Not an instance of a PrivateKeyEntry");
return null;
}
谢谢,