【发布时间】:2012-03-07 21:43:12
【问题描述】:
我正在尝试使用服务器团队提供的密钥库连接到服务器。
首先向服务器发送服务调用时,我使用以下 api 创建了 KeyStore 实例
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
它将密钥库类型返回为“BKS”。
服务器团队发送的密钥库类型为“.jks”(somename.jks) 所以,我收到异常“密钥库版本错误”。
我尝试通过以下方式将“JKS”传递给 KeyStore 的 getInstance()
KeyStore keystore = KeyStore.getInstance("JKS");
但是在这里我得到了异常“KeyStore JKS implementation not found”。
这是一段代码:
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。取自这里developer.android.com/reference/java/security/… 和developer.android.com/reference/javax/crypto/…