Android充气城堡:IOException

Ran*_*jit 8 android bouncycastle keystore

我正在使用Sun的keytool创建一个Bouncy城​​堡密钥库并将证书导入其中.keytool确实生成了Bouncy城​​堡格式的密钥库.

然后我尝试将Bouncy城​​堡密钥库导入Android程序.我能够获得"BKS"密钥库的实例,但是在密钥库上调用load会抛出

"java.io.IOException: Wrong version of key store".
Run Code Online (Sandbox Code Playgroud)

这是代码

KeyStore keyStore = KeyStore.getInstance("BKS");
InputStream is = new FileInputStream("/mnt/sdcard/ArcGIS/mystore.bks");
keyStore.load(is, "abcdef".toCharArray());
Run Code Online (Sandbox Code Playgroud)

我尝试从http://www.bouncycastle.org/latest_releases.html下载的各种版本的Bouncy castle JAR

我究竟做错了什么?

谢谢,Ranjit

小智 22

当尝试打开使用最新的BouncyCastle库生成的密钥库时,似乎Android 4.0.3(API版本15)附带的BouncyCastle版本失败了.当我使用创建密钥库时bcprov-jdk15on-147.jar,我的示例Android应用程序因java.io.IOException: Wrong version of key store错误而失败.

但是,如果密钥库是使用bcprov-jdk16-146.jar库创建的,那么它可以由应用程序加载.我的解决方案是使用这个旧库创建密钥库.

据推测,旧API版本也是如此; 在创建密钥库时尝试旧版本的BouncyCastle.


Ran*_*jit 4

解决。keytool 命令缺少“-storetype BKS”参数,因此虽然生成了 BKS 密钥库文件,但它可能无效。

  • 我有同样的问题..但是我使用了参数“-storetype BKS”。您是否尝试过其他方法让它发挥作用? (5认同)