...
Для перечисления и использования ключевых пар на токене требуется предварительно авторизоваться, используя функцию rutoken::pkicore::Pkcs11Device::login
. Чтобы сбросить права доступа на токене, необходимо вызвать функцию rutoken::pkicore::Pkcs11Device::logout
.
Большинство операций, связанных с PKI, используют объекты классов rutoken::pkicore::ExternalCert
, rutoken::pkicore::Pkcs11Cert
, rutoken::pkicore::Pkcs11UserCert
. Объекты класса ExternalCert используются, когда необходимо передать какой-либо сертификат, не хранящийся на токене. Используя метод rutoken::pkicore::Pkcs11Device::enumerateCerts
, можно получить все сертификаты, хранящиеся на устройстве. Метод rutoken::pkicore::Pkcs11Device::enumerateUserCerts
возвращает пользовательские сертификаты на устройстве, которые могут использоваться в операциях, требующих наличия соответствующей ключевой пары.
...
- Сгенерировать на устройстве ключевую пару, которая будет использоваться для подписи, с помощью метода
rutoken::pkicore::Pkcs11Device::generateKeyPair
. - Заполнить необходимые поля PKCS#10 запроса на сертификат, используя класс
rutoken::pkicore::Pkcs10RequestInfo
. - Сформировать PKCS#10 запрос, вызвав функцию
rutoken::pkicore::createPkcs10Request
. - Получить сертификат в центре сертификации на основании запроса, полученного на предыдущем шаге.
- Импортировать полученный сертификат на токен, используя метод
rutoken::pkicore::Pkcs11Device::importCert
.
Code Block |
---|
using namespace rutoken::pkicore; auto key = device.generateKeyPair(Pkcs11Device::Gost34102001KeyGenParams()); X500Dn subject; subject.setRdn(X500Dn::RdnId::commonName, "Ivanov Ivan Ivanovich"); Pkcs10RequestInfo info; info.setSubject(subject); auto request = createPkcs10Request(key, info); // Вызов request.toPem() вернет PKCS#10 запрос на сертификат в формате PEM, который можно передать в центр сертификации для получения пользовательского сертификата. device.importCert(ExternalCert(pemCert)); |
Подпись и проверка подписи в формате CMS
...