我正尝试使用由服务器团队提供的密钥存储库连接到服务器。Android是否支持.jks密钥库类型?
虽然发送服务请求到服务器首先我创建密钥库实例使用下面的API
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
它返回仓库类型为“BKS”。
Keystore服务器组发送的类型是“.jks”(somename.jks)因此,我收到了“密钥存储区的错误版本”异常。
我试图通过传递密钥库的“JKS”来的getInstance()通过以下方式
KeyStore keystore = KeyStore.getInstance("JKS");
但是在这里我得到异常“密钥库JKS实施未找到”。
下面是一段代码:
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
InputStream instream = mContext.getAssets().open("somename.jks");
try {
trustStore.load(instream, "password".toCharArray());
} finally {
try {
instream.close();
} catch(Exception ignore) {
}
}
请指引我解决这个问题。
“JKS”似乎是默认。如果此KeyStore的类型为“jks”,则必须将密钥编码为符合PKS#8标准的EncryptedPrivateKeyInfo。取自http://developer.android.com/reference/java/security/KeyStore.html#getType()和http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html – 2012-02-16 13:37:41