android - KeyStore.setKeyEntry give java.security.KeyStoreException: Failed to store private key, then upgrade to Android 9 Pie
问题描述
我的代码
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
KeyPair keyPair = keyGen.generateKeyPair();
RSAKey privateKeyResult = (RSAKey) keyPair.getPrivate();
if(keyStore!=null) {
keyStore.setKeyEntry(alias, (Key) privateKeyResult, null, new Certificate[]{certificate});
...
} catch (KeyStoreException e) {
logger.error("Error in insertion to keystore", e);
}
当用户将 Android 操作系统从 Oreo 升级到 Pie (9.0) 时不起作用。
得到异常:
java.security.KeyStoreException: Failed to store private key
at android.security.keystore.AndroidKeyStoreSpi.setPrivateKeyEntry(AndroidKeyStoreSpi.java:536)
at android.security.keystore.AndroidKeyStoreSpi.engineSetKeyEntry(AndroidKeyStoreSpi.java:278)
at java.security.KeyStore.setKeyEntry(KeyStore.java:1179)
...
Caused by: android.security.KeyStoreException: Memory allocation failed
at android.security.KeyStore.getKeyStoreException(KeyStore.java:851)
... 19 more
请指教
解决方案
推荐阅读
- python - 对质心进行分组并绘制一个矩形
- ruby-on-rails - 更改索引页面中的过滤谓词顺序 - ActiveAdmin
- macos - 无法在 macOS 上删除文件夹 - 目录不为空
- r - 提取从字符串开头到某个单词第一次出现的玩家姓名
- 3d - Blender 从流体模拟中渲染 FLIP Particles
- javascript - 是否有一种稳定的方法可以从 html id 值设置 echarts 轴限制
- c++ - 在什么意义上 const 只允许对可变成员变量进行原子更改?
- c - linux服务器上的编译错误(C项目)
- soundcloud - Soundcloud 用户收藏夹端点已删除?
- php - 如何在使用nginx的centos服务器中清除laravel应用程序的缓存