Как пара приватный ключ и сертификат совпадают в IAIK PKCS11 Wrapper? - PullRequest
2 голосов
/ 30 июня 2019

Я хочу работать с токеном pkcs11 в Java. Таким образом, я использовал «IAIK» в качестве java-оболочки pkcs11. Я могу искать объекты, такие как ключи и сертификаты, но не могу определить, какой ключ принадлежит какому сертификату. Я использовал «CryptoKi Manager» для поиска объектов в токене, и он показывает связь между сертификатом и ключом, как показано на рисунке ниже. Затем я изучил стандарт PKCS11, он сказал, что есть поле с именем «certId», которое объявляет это соединение, но я не смог найти его в «IAIK». Поддерживает ли «IAIK» эту функцию в своем объекте Certificate? Как?

enter image description here

1 Ответ

2 голосов
/ 30 июня 2019

Это соединение через атрибут CKA_ID со ссылкой на версию 2.20 PKCS # 11:

Поле CKA_ID предназначено для различения нескольких ключей.В случае открытых и закрытых ключей это поле помогает обрабатывать несколько ключей, принадлежащих одному субъекту;идентификатор ключа для открытого ключа и соответствующего ему закрытого ключа должен быть одинаковым.Идентификатор ключа также должен быть таким же, как и для соответствующего сертификата, если таковой существует.Криптоки не навязывает эти ассоциации, как бы то ни было.(См. Раздел 10.6 для дальнейших комментариев.)

Обратите внимание, что эта связь не применяется (YMMV), но вменяемые реализации ведут себя таким образом.

Используйте Ключ.Методы getId () и X509PublicKeyCertificate.getID () в оболочке PKCS # 11.

С провайдером IAIK (обратите внимание, что вам нужна лицензия) используйте IAIKPKCS11Key.getKeyID () для сопряжения объектов открытого и закрытого ключей.Я не знаю, как получить CKA_ID значение из сертификатов, полученных из TokenKeyStore .

Удачи!

...