<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/3045/" />
	<updated>2019-10-07T09:57:17Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/3045/</id>
		<entry>
			<title type="html"><![CDATA[Re: Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13365/#p13365" />
			<content type="html"><![CDATA[<p><strong>Павел Анфимов</strong>, Спасибо за помощь</p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-10-07T09:57:17Z</updated>
			<id>https://forum.rutoken.ru/post/13365/#p13365</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13359/#p13359" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Binger пишет:</cite><blockquote><p><strong>Павел Анфимов</strong>, у меня тут проблема вылезла...<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2019/10/f9528863c9aa081479f335ef73377423.png"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2019/10/f9528863c9aa081479f335ef73377423.png" alt="" /></a></span></p></blockquote></div><p>Опечатка вкралась. Все функции PKCS#11 нужно вызывать через указатель на functionList:</p><div class="codebox"><pre><code> functionList-&gt;C_GetAttributeValue(session, pObjHandles[i], &amp;idAttr, 1);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2019-10-04T14:42:02Z</updated>
			<id>https://forum.rutoken.ru/post/13359/#p13359</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13358/#p13358" />
			<content type="html"><![CDATA[<p><strong>Павел Анфимов</strong>, у меня тут проблема вылезла...<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2019/10/f9528863c9aa081479f335ef73377423.png"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2019/10/f9528863c9aa081479f335ef73377423.png" alt="" /></a></span></p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-10-04T14:37:58Z</updated>
			<id>https://forum.rutoken.ru/post/13358/#p13358</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13357/#p13357" />
			<content type="html"><![CDATA[<p>1. Как найти все сертификаты<br /></p><div class="codebox"><pre><code>/*************************************************************************
* Шаблон для поиска сертификата                                          *
*************************************************************************/
CK_ATTRIBUTE certificateTemplate[] =
{
    { CKA_CLASS, &amp;certificateObject, sizeof(certificateObject) },                      // Класс - сертификат
    { CKA_TOKEN, &amp;attributeTrue, sizeof(attributeTrue) },                              // Сертификат является объектом токена
    { CKA_PRIVATE, &amp;attributeFalse, sizeof(attributeFalse) },                          // Сертификат доступен без аутентификации
    { CKA_CERTIFICATE_TYPE, &amp;certificateType, sizeof(certificateType) },               // Тип сертификата - X.509
    { CKA_CERTIFICATE_CATEGORY, &amp;tokenUserCertificate, sizeof(tokenUserCertificate) }, // Категория сертификата - пользовательский
};


r = findObjects(functionList, session, certificateTemplate, arraysize(certificateTemplate),
                    &amp;certificates, &amp;objectCount);</code></pre></div><p>2. А затем для найденных объектов в цикле получайте CKA_ID.<br />Упрощенный код:<br /></p><div class="codebox"><pre><code>for(CK_ULONG i = 0; i &lt; objCount; ++i) {
      CK_ATTRIBUTE idAttr = { CKA_ID, NULL_PTR, 0 };
      rv = C_GetAttributeValue(session, pObjHandles[i], &amp;idAttr, 1);
      if(rv != CKR_OK) break;

      std::vector&lt;CK_BYTE&gt; ckId;
      ckId.resize(idAttr.ulValueLen);
      idAttr.pValue = ckId.data();
 
      rv = functionList-&gt;C_GetAttributeValue(session, pObjHandles[i], &amp;idAttr, 1);
      if(rv != CKR_OK) break;
}</code></pre></div><p>3. У закрытого ключа, открытого ключа и сертификата одинаковые CKA_ID.<br />Чтобы найти закртый ключ по CKA_ID сертификата, надо поиска объектов c CKA_CLASS == CKO_CERTIFICATE и получения их CKA_ID, запустить второй поиск, где в качестве шаблона поиска будет CKA_ID ключа и CKA_CLASS == CKO_PRIVATE_KEY.</p><p>4. Алгорим сертификата можно найти в информации, которая выдает функция C_EX_GetCertificateInfoText</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2019-10-04T14:14:27Z</updated>
			<id>https://forum.rutoken.ru/post/13357/#p13357</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13356/#p13356" />
			<content type="html"><![CDATA[<p>Хочу получить имена всех контейнеров, находящихся на токене, чтобы в дальнейшем действовать с определёнными из них</p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-10-04T14:12:49Z</updated>
			<id>https://forum.rutoken.ru/post/13356/#p13356</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13355/#p13355" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Павел Анфимов пишет:</cite><blockquote><p>Здравствуйте!</p><p>Вы хотите это сделать в коде своего приложения, или с помощью какой-либо программы?</p></blockquote></div><p>В коде приложения</p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-10-04T14:05:01Z</updated>
			<id>https://forum.rutoken.ru/post/13355/#p13355</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13353/#p13353" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Binger пишет:</cite><blockquote><p>Здравствуйте. Как я могу получить список идентификаторов (CKA_ID ключевых пар) всех сертификатов, имеющихся на токене? Посмотрел пример CertInfo из SDK, но там лишь получение информации о конкретном сертификате, ID которого был установлен в программе. А как мне сначала получить список всех сертификатов, чтобы потом я уже мог выбирать из них. И можно ли получить сразу же вместе с ID алгоритм работы сертификата? Буду рад любой помощи. Спасибо.</p></blockquote></div><p>Здравствуйте!</p><p>Вы хотите это сделать в коде своего приложения, или с помощью какой-либо программы?</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2019-10-04T14:02:30Z</updated>
			<id>https://forum.rutoken.ru/post/13353/#p13353</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Как получить идентификатор сертификата (CKA_ID ключ. пары) на токене?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13352/#p13352" />
			<content type="html"><![CDATA[<p>Здравствуйте. Как я могу получить список идентификаторов (CKA_ID ключевых пар) всех сертификатов, имеющихся на токене? Посмотрел пример CertInfo из SDK, но там лишь получение информации о конкретном сертификате, ID которого был установлен в программе. А как мне сначала получить список всех сертификатов, чтобы потом я уже мог выбирать из них. И можно ли получить сразу же вместе с ID алгоритм работы сертификата? Буду рад любой помощи. Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-10-04T13:44:55Z</updated>
			<id>https://forum.rutoken.ru/post/13352/#p13352</id>
		</entry>
</feed>
