我正嘗試使用由服務器團隊提供的密鑰存儲庫連接到服務器。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