gpt4 book ai didi

android - 检索私钥时链为空

转载 作者:IT老高 更新时间:2023-10-28 22:03:44 25 4
gpt4 key购买 nike

我正在使用我存储在 Android keystore 中的 RSA key 对加密我的应用程序中的数据。

我一直在 Play 商店中看到 NullPointerException,但我无法重现它们:

java.lang.NullPointerException: chain == null
at java.security.KeyStore$PrivateKeyEntry.<init>(KeyStore.java:1205)
at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:374)
at java.security.KeyStore.getEntry(KeyStore.java:644)
at MyClass.getKeyStoreEntry(MyClass.java:111)

创建 key 对的源代码

Calendar start = Calendar.getInstance();
start.setTimeInMillis(0);
Calendar end = Calendar.getInstance();
end.set(Calendar.YEAR, 3000);

KeyPairGeneratorSpec.Builder keySpecBuilder = new KeyPairGeneratorSpec.Builder(context)
.setAlias(keyName)
.setSubject(new X500Principal("CN=" + keyName))
.setSerialNumber(BigInteger.TEN)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.setKeySize(RSA_KEY_SIZE);

KeyPairGeneratorSpec spec = keySpecBuilder.build();
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
gen.initialize(spec);
gen.generateKeyPair();

然后去取回 key :

private KeyStore.PrivateKeyEntry getKeyStoreEntry() {
KeyStore keyStore = KeyStore.getInstance(ANDROID_KEY_STORE);
keyStore.load(null);

if (!keyStore.containsAlias(keyName)) {
throw new KeyNotFoundException();
}
return (KeyStore.PrivateKeyEntry) keyStore.getEntry(keyName, null);
}

只有当我在 API 级别 19-22 上使用 KeyPairGeneratorSpec 时才会发生这种情况。 23+ 的实现工作正常。

do not have another key with the same name我也没有deleted the key .

最佳答案

我相信您只是面对 Keystore 错误。例如,请参阅这篇文章:Android Security: The Forgetful Keystore . Android 跟踪器中也有大量与 keystore 相关的错误报告,如 AndroidKeyStore deleted after changing screen lock type .

关于android - 检索私钥时链为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39119848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com