3
我正在使用以下代碼從Athena智能卡讀卡器訪問PKCS#11智能卡的內容。PKCS#11 keystore在成功嘗試輸入密碼後未驗證密碼
Provider pkcs11Provider = new SunPKCS11(new ByteArrayInputStream (config.getBytes()));
if (Security.getProvider(pkcs11Provider.getName()) != null) {
Security.removeProvider(pkcs11Provider.getName());
}
Security.addProvider(pkcs11Provider);
KeyStore myKeyStore = KeyStore.getInstance ("PKCS11", pkcs11Provider);
myKeyStore.load(null, keystore_password.toCharArray());
return myKeyStore;
的問題如下:
- 我輸入錯誤的密碼。
- 代碼拋出異常(如預期的那樣)。
- 我輸入正確的密碼。
- 代碼不會拋出異常(如預期的那樣)。
- 我輸入了錯誤的密碼。
- 代碼確實不是拋出異常(意外)。
據http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html,當使用KeyStore.Builder
類沒有密碼,請使用相同的智能卡首次成功加載後進行。當然,我沒有在上面的代碼中使用這個類。同樣的事情適用於KeyStore.getInstance(...)
方法嗎?在輸入錯誤的密碼時,是否有任何方法可以使密鑰庫拋出異常,而不管以前的加載嘗試如何?
該解決方案可以作爲是之前更換新創建SunPKCS11對象的提供者。非常感謝! –