Moh*_*ari 5 android x509certificate key-pair android-keystore
从昨天起,我收到了运行 Android 12 的三星设备上的大量崩溃报告。AndroidKeyStoreProvider 在调用 X509Certificate.getPublicKey() 时抛出 NPE。它在其他品牌的设备上运行良好。
密钥对生成方法:
public void generateKeys(Context context) throws GeneratePairKeyException {
KeyPairGenerator keyPairGenerator;
try {
if(KeyStoreUtil.getPrivateKey() == null){
Calendar start = GregorianCalendar.getInstance();
Calendar end = GregorianCalendar.getInstance();
end.add(Calendar.YEAR, 10);
keyPairGenerator = KeyPairGenerator.getInstance("RSA", ANDROID_KEY_STORE);
keyPairGenerator.initialize(new KeyPairGeneratorSpec.Builder(context)
.setAlias(ALIAS)
.setSerialNumber(BigInteger.valueOf(1))
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.setSubject(new X500Principal("CN=Pushe_CA"))
.build());
keyPairGenerator.generateKeyPair();
}
} catch (NoSuchAlgorithmException |
NoSuchProviderException | InvalidAlgorithmParameterException e) {
Logger.e(e);
throw new GeneratePairKeyException("pair key not created");
} catch (IllegalStateException e) {
throw e;
} catch (Exception e) {
throw new GeneratePairKeyException("pair key not created");
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试获取这样的私钥时,应用程序崩溃了:
KeyStore keyStore = KeyStore.getInstance(ANDROID_KEY_STORE);
keyStore.load(null);
(PrivateKey) keyStore.getKey(ALIAS, null);
Run Code Online (Sandbox Code Playgroud)
这是崩溃日志:
致命异常:java.lang.NullPointerException:尝试在 android.security.keystore2.AndroidKeyStoreProvider.makeAndroidKeyStorePublicKeyFromKeyEntryResponse(AndroidKeyStoreProvider. java:220) 在 android.security.keystore2.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore(AndroidKeyStoreProvider.java:401) 在 android.security.keystore2.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore(AndroidKeyStoreProvider.java:343) 在 android.security.keystore2.AndroidKeyStoreSpi.engineGetKey(AndroidKeyStoreSpi .java:110) 在 java.security.KeyStore.getKey(KeyStore.java:1062)
有什么解决办法吗?
| 归档时间: |
|
| 查看次数: |
327 次 |
| 最近记录: |