次のコードを使用して、Athena スマートカード リーダーから PKCS#11 スマートカードの内容にアクセスしています。
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(...)
メソッドにも当てはまりますか?以前のロード試行に関係なく、間違ったパスワードが入力されたときにキーストアが例外をスローするようにする方法はありますか?