Поиск сертификата на токене

Здравствуйте!

При запуске вашего примера из SDK: SignPKCS7-2012-256 без изменений в шаблонах для ключа и сертификата, то на токене не находятся сертификат
Измененные шаблоны, при которых программа работает :

CK_ATTRIBUTE privateKeyTemplate[] =
{
    { CKA_CLASS, &privateKeyObject, sizeof(privateKeyObject) },         // Объект закрытого ключа
    { CKA_TOKEN, &attributeTrue, sizeof(attributeTrue) },                    // Закрытый ключ является объектом токена
};

CK_ATTRIBUTE certificateTemplate[] =
{
    { CKA_CLASS, &certificateObject, sizeof(certificateObject) },                      // Объект сертификата
    { CKA_TOKEN, &attributeTrue, sizeof(attributeTrue) },                              // Сертификат является объектом токена
    { CKA_CERTIFICATE_TYPE, &certificateType, sizeof(certificateType) },               // Тип сертификата - X.509
};

Но данные изменения не позволяют искать на токене нужный нам сертификат, например 2012 года, ищутся все сертификаты и определить тип сертификата возможно только если парсить информацию полученную при помощи C_EX_GetCertificateInfoText

При тестировании  использовался RuToken 2.0 с действующими сертификатами

Не могли бы подсказать как можно искать на токене сертификат необходимого мне ГОСТА без парсинга строки полученной из C_EX_GetCertificateInfoText ?

Re: Поиск сертификата на токене

Добрый день, GeoIrb.

Это частично работает для ключей, у которых есть параметр CKA_KEY_TYPE, который указывает на алгоритм для которого этот ключ предназначен. Тут правда есть нюанс, что с точки зрения ГОСТ алгоритмов, ключи для ГОСТ 34.10-2001 и для ГОСТ 34.10-2012 256 бит не отличаются никак и константа для них одна. Но в 2 прохода Вы сможете найти все ГОСТ ключи, при этом все RSA будут отфильтрованы.

Что касается сертификатов, то там параметра, который был бы связан с алгоритмом нет. Поэтому или придется парсить вывод C_EX_GetCertificateInfoText или в начале искать ГОСТ ключи, а потом искать сертификаты с таким же CKA_ID. Недостаток второго варианта в том, что на устройстве может быть сертификат, но не быть ключей.