gpt4 book ai didi

android - Android 7.1.1 中的 KeyPairGenerator.generateKeyPair()

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:44 25 4
gpt4 key购买 nike

我们已经看到以下异常的大量涌入,并且仅适用于 Android 7.1.1 (API 25)。 7.1.1 中有什么改变导致失败吗?

java.security.ProviderException: Failed to load generated key pair from keystore
at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.loadKeystoreKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:518)
at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:470)

下面经过清理的代码(可能有轻微的复制粘贴错误)

 KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
String certInfo = String.format(Locale.ROOT, "CN=%s, OU=%s", new Object[]{"KeyName", context.getPackageName()});
generator.initialize(new KeyPairGeneratorSpec.Builder(context)).setAlias("KeyName").setSubject(new X500Principal(certInfo)).setSerialNumber(BigInteger.ONE).setStartDate(start).setEndDate(end).build());
generator.generateKeyPair();

最佳答案

我以前见过这个错误,这很可能是由于 KeyPairGeneratorSpec 的弃用引起的, 对于 API > 23 你应该使用 KeyGenParameterSpec反而。

如果您的目标 API 低于 23,我建议您使用某种机制来根据 API 级别使用不同的规范。

AlgorithmParameterSpec spec;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
spec = new KeyGenParameterSpec.Builder(KEY_ALIAS, purposes)
.setCertificateSubject(new X500Principal("CN=" + KEY_ALIAS))
.setCertificateSerialNumber(BigInteger.TEN)
.setCertificateNotBefore(start.getTime())
.setCertificateNotAfter(end.getTime())
.build();
} else {
spec = new KeyPairGeneratorSpec.Builder(Application.getApp().getApplicationContext())
.setAlias(KEY_ALIAS)
.setSubject(new X500Principal("CN=" + KEY_ALIAS))
.setSerialNumber(BigInteger.TEN)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
}
KeyPairGenerator kpg = KeyPairGenerator.getInstance(KEY_ALGORITHM_RSA, AndroidKeyStore);
kpg.initialize(spec);
kpg.generateKeyPair();

崩溃可能是因为一些制造商可能会在他们最新的 android 构建中删除不推荐使用的方法,这就是它不会在所有使用 API > 23 的设备上崩溃但只会在其中一些设备上崩溃的原因。

此事已讨论here在 SO 之前。

关于android - Android 7.1.1 中的 KeyPairGenerator.generateKeyPair(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41815601/

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