4

次のように、PKIカードから証明書をロードするためのPKCS#11ドライバーとしてSiemensのCardOSAPIドライバーを使用しています。

char[] pin = "123456".toCharArray();
KeyStore.PasswordProtection pp = new KeyStore.PasswordProtection(pin);
KeyStore keyStore = KeyStore.Builder.newInstance("PKCS11", Security.getProvider("SunPKCS11-verinice"), pp).getKeyStore();
keyStore.load(null,pin);
keyStore.getKey("key 1", pin);
keyStore.getKey("key 2", pin);

私はそれをパラメーターとして渡しますが、ドライバーは各キーのPINを要求します。APIでPINを渡す他の方法はありますか?有効にできる「PINキャッシュ」はありますか?

4

3 に答える 3

5

Java PKCS#11ガイドのセクション3.1で説明されているように、CallbackHandlerを処理できるカスタムを使用できます。もちろん、パスワードのキャッシュは適切な注意を払って行う必要があります。PasswordCallback

于 2011-08-09T12:37:50.590 に答える
2

これは、PKCS#11 ベンダー (この場合は Siemens) に問い合わせる必要があります。おそらく、Java からできることは何もありません。

于 2011-08-10T17:09:48.263 に答える
2

CardOS と Siemens カードも使用しています。

カードには 2 つの PIN があります。

  1. カード暗証番号。カードのロックを解除し、証明書を読み取るために使用されます。この PIN は、独自のコールバックで処理できます。PIN は一度だけ必要です。
  2. 署名 PIN。限定署名証明書にアクセスするために使用されます。この PIN は署名ごとに入力する必要があります。PIN ダイアログは Siemens ミドルウェアからのものであり、閉じることはできません。

ほとんどの場合、両方の PIN は同じです (そうしないと、ユーザーが混乱します)。署名付き PIN のないカードも持っています。これで、別の PIN エントリなしで署名できます。おそらく、署名 PIN を削除するか、署名 PIN のないカードを入手できます。

于 2011-09-09T14:12:53.083 に答える