3

次のコードを使用して、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;

問題は次のとおりです。

  1. 間違ったパスワードを入力します。
  2. コードが例外をスローします (予想どおり)。
  3. 正しいパスワードを入力します。
  4. コードは例外をスローしません (予想どおり)。
  5. 間違ったパスワードを入力します。
  6. コードは例外をスローしませ(予期しない)。

http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.htmlによると、KeyStore.Builderクラスを使用すると、同じスマートカードを使用して最初にロードが成功した後、パスワードは要求されません。もちろん、上記のコードではこのクラスを使用していません。同じことが KeyStore.getInstance(...)メソッドにも当てはまりますか?以前のロード試行に関係なく、間違ったパスワードが入力されたときにキーストアが例外をスローするようにする方法はありますか?

4

1 に答える 1