Драйвер PKCS#11 запрашивает PIN-код для каждого ключа

Я использую драйвер CardOS API от Siemens в качестве драйвера PKCS#11. для загрузки сертификатов с карты PKI следующим образом:

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-код для каждого ключа, хотя я передаю его как параметр. Есть ли другой способ передать PIN-код через API? Есть ли какой-нибудь «кеш PIN-кода», который я могу активировать?


person uı6ʎɹnɯ ꞁəıuɐp    schedule 09.08.2011    source источник


Ответы (3)


Я также работаю с картами CardOS и Siemens.

На карте два пин-кода.

  1. PIN-код карты. Используется для разблокировки карты и чтения сертификатов. Вы можете обрабатывать этот PIN-код с помощью собственного обратного вызова. PIN-код требуется только один раз.
  2. PIN-код подписи. Используется для доступа к квалифицированному сертификату подписи. Этот PIN-код необходимо вводить для каждой подписи. Диалоговое окно PIN-кода относится к промежуточному программному обеспечению Siemens, и вы не можете его закрыть.

В большинстве случаев оба PIN-кода одинаковы (иначе пользователи могут запутаться). У меня тоже есть карта без пин-кода подписи. С этим я могу подписать без другого ввода PIN-кода. Может быть, вы можете удалить PIN-код подписи или получить карту без PIN-кода подписи.

person wam    schedule 09.09.2011

Вы можете использовать пользовательский CallbackHandler, способный обрабатывать PasswordCallback, как описано в раздел 3.1 руководства по Java PKCS#11. Разумеется, кешировать пароли следует с осторожностью.

person Bruno    schedule 09.08.2011
comment
Я уже пробовал это, но также не работает для этого драйвера. Я все еще получаю всплывающее окно Windows (не Java) для ввода PIN-кода. - person uı6ʎɹnɯ ꞁəıuɐp; 09.08.2011

Вам следует спросить об этом у вашего поставщика PKCS#11, в данном случае у Siemens. Вероятно, вы ничего не можете сделать с Java.

person Martin Paljak    schedule 10.08.2011