<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/3203" />
	<updated>2020-07-13T16:01:55Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/3203/</id>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14420/#p14420" />
			<content type="html"><![CDATA[<p><strong>BE</strong>, в PKCS данные нужно передавать в litte-endian.</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2020-07-13T16:01:55Z</updated>
			<id>https://forum.rutoken.ru/post/14420/#p14420</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14418/#p14418" />
			<content type="html"><![CDATA[<p>Здравствуйте, <strong>Павел Анфимов</strong>. </p><p>Вашу идею с двумя разными сессиями и одним токеном проверил, все работает. Спасибо.</p><p>Возник вот какой вопрос.</p><p>Вот здесь <a href="https://forum.rutoken.ru/post/11686/#p11686">https://forum.rutoken.ru/post/11686/#p11686</a> написано о развороте открытого ключа, хеша и подписи. Открытый ключ и подпись при этом соответствуют представлению в CMS.</p><p>Правильно ли я понимаю, что хеш нужно обязательно разворачивать перед использованием в PKCS11 библиотеке?</p>]]></content>
			<author>
				<name><![CDATA[BE]]></name>
				<uri>https://forum.rutoken.ru/user/11505/</uri>
			</author>
			<updated>2020-07-13T14:15:01Z</updated>
			<id>https://forum.rutoken.ru/post/14418/#p14418</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14401/#p14401" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Павел Анфимов пишет:</cite><blockquote><p>напишите нам письмо с вложением hotline@rutoken.ru</p></blockquote></div><p>Отправил.</p>]]></content>
			<author>
				<name><![CDATA[BE]]></name>
				<uri>https://forum.rutoken.ru/user/11505/</uri>
			</author>
			<updated>2020-07-10T13:19:20Z</updated>
			<id>https://forum.rutoken.ru/post/14401/#p14401</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14400/#p14400" />
			<content type="html"><![CDATA[<p>напишите нам письмо с вложением hotline@rutoken.ru</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2020-07-10T12:41:02Z</updated>
			<id>https://forum.rutoken.ru/post/14400/#p14400</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14399/#p14399" />
			<content type="html"><![CDATA[<p>Здравствуйте, <strong>Павел Анфимов</strong>.</p><p>1.<br />К сожалению минимальный пример оказался не таким уж минимальным (почти 800 строчек кода). Часть функций надерганы из вашего SDK.</p><p>Хуже всего, что в процессе написания примера я утратил знание о том, как создавать объект &quot;открытый ключ&quot; в сессии :( Перепробовал все, что возможно, но снова ключ так и не создается.</p><p>Буду признателен за Вашу помощь.</p><p>Заранее благодарен.</p><p>2.<br />Не могу приаттачить файл: &quot;К сожалению загрузка файлов/изображений для вашей группы не доступна. Обратитесь к администрации форума.&quot;</p>]]></content>
			<author>
				<name><![CDATA[BE]]></name>
				<uri>https://forum.rutoken.ru/user/11505/</uri>
			</author>
			<updated>2020-07-10T12:26:21Z</updated>
			<id>https://forum.rutoken.ru/post/14399/#p14399</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14396/#p14396" />
			<content type="html"><![CDATA[<p><strong>BE</strong>, да, конечно, присылайте.</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2020-07-10T09:24:23Z</updated>
			<id>https://forum.rutoken.ru/post/14396/#p14396</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14395/#p14395" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Павел Анфимов пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Переменная mech формируется следующим образом<br />CK_MECHANISM&nbsp; &nbsp; mech = { 0 };</p><p>mech.mechanism = значение атрибута CKA_KEY_TYPE из ключа hpub.</p></blockquote></div><p>В mech.mechanism нужно класть CKM_GOSTR3410, если ключ ГОСТ-2001/ГОСТ-2012-256. Или CKM_GOSTR3410_512, если ГОСТ-2012-512.</p></blockquote></div><p>К сожалению, не помогло. Могу ли я подготовить минимальный пример и загрузить сюда как файл?</p>]]></content>
			<author>
				<name><![CDATA[BE]]></name>
				<uri>https://forum.rutoken.ru/user/11505/</uri>
			</author>
			<updated>2020-07-10T09:14:38Z</updated>
			<id>https://forum.rutoken.ru/post/14395/#p14395</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14394/#p14394" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Переменная mech формируется следующим образом<br />CK_MECHANISM&nbsp; &nbsp; mech = { 0 };</p><p>mech.mechanism = значение атрибута CKA_KEY_TYPE из ключа hpub.</p></blockquote></div><p>В mech.mechanism нужно класть CKM_GOSTR3410, если ключ ГОСТ-2001/ГОСТ-2012-256. Или CKM_GOSTR3410_512, если ГОСТ-2012-512.</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2020-07-10T08:25:08Z</updated>
			<id>https://forum.rutoken.ru/post/14394/#p14394</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14393/#p14393" />
			<content type="html"><![CDATA[<p>Внимательно посмотрел код создания объекта &quot;открытый ключ&quot; на <strong>токен_2</strong> и нашел ошибку. Как Вы писали, она оказалась связанной с OID-ами (в шаблоне правились не те атрибуты). Теперь объект &quot;открытый ключ&quot; создается успешно, но возникает другая проблема.</p><p>Вызов C_VerifyInit(hses, &amp;mech, hpub) заканчивается ошибкой CKR_KEY_TYPE_INCONSISTENT.</p><p>В чем может быть дело?</p><p>Переменная mech формируется следующим образом</p><div class="codebox"><pre><code>CK_MECHANISM    mech = { 0 };

mech.mechanism = значение атрибута CKA_KEY_TYPE из ключа hpub.</code></pre></div><p>При создании ключа используется следующий шаблон</p><div class="codebox"><pre><code>CK_ATTRIBUTE            tmpl_pub_1[] =
{
    { CKA_GOSTR3410_PARAMS, NULL, 0 }, // этот атрибут заполняется на основе данных об открытом ключе
    { CKA_GOSTR3411_PARAMS, NULL, 0 }, // этот атрибут заполняется на основе данных об открытом ключе
    { CKA_CLASS, &amp;class_pub, sizeof(class_pub) },
    { CKA_LABEL, NULL, 0 }, // этот атрибут заполняется на основе данных об открытом ключе
    { CKA_ID, NULL, 0 }, // этот атрибут заполняется на основе данных об открытом ключе
    { CKA_KEY_TYPE, &amp;key_type, sizeof(key_type) },
    { CKA_TOKEN, &amp;p11_false, sizeof(p11_false) },
    { CKA_PRIVATE, &amp;p11_false, sizeof(p11_false) },
    { CKA_VERIFY, &amp;p11_true, sizeof(p11_true) }, // добавил специально, думал, может поможет
    { CKA_VALUE, NULL, 0 }, // этот атрибут заполняется на основе данных об открытом ключе
};</code></pre></div>]]></content>
			<author>
				<name><![CDATA[BE]]></name>
				<uri>https://forum.rutoken.ru/user/11505/</uri>
			</author>
			<updated>2020-07-10T08:06:39Z</updated>
			<id>https://forum.rutoken.ru/post/14393/#p14393</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14391/#p14391" />
			<content type="html"><![CDATA[<p><strong>BE</strong>, атрибуты (набор CK_ATTRIBUTE) открытого ключа (кроме CKA_TOKEN) не должны отличаться, что при создании на токене_1, что на токене_2.</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2020-07-10T06:43:14Z</updated>
			<id>https://forum.rutoken.ru/post/14391/#p14391</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14390/#p14390" />
			<content type="html"><![CDATA[<p>Добрый день.</p><div class="quotebox"><cite>Павел Анфимов пишет:</cite><blockquote><p><strong>BE</strong>, добрый день!</p><p>Все значения констант есть в примере из <a href="https://www.rutoken.ru/support/download/get/sdk.html">Рутокен SDK</a>: &lt;sdk&gt;pkcs11/samples/Standard/CreateGOST34.10-2012-256</p></blockquote></div><p>Этот пример я видел, и он работает. Создать ключевую пару на <strong>токене_1</strong> у меня получается.</p><p>Мне нужно на <strong>токен_2</strong> создать объект &quot;открытый ключ&quot;. Этот открытый ключ должен соответствовать открытому ключу из пары, созданной на <strong>токене_1</strong>. На <strong>токен_2</strong> у меня нет закрытого ключа.</p><p>Открытый ключ на <strong>токен_2</strong> мне нужен для того, чтобы проверить документ, подписанный <strong>токен_1</strong>. <strong>Токен_1</strong> и <strong>токен_2</strong> находятся в разных местах.</p>]]></content>
			<author>
				<name><![CDATA[BE]]></name>
				<uri>https://forum.rutoken.ru/user/11505/</uri>
			</author>
			<updated>2020-07-10T06:31:54Z</updated>
			<id>https://forum.rutoken.ru/post/14390/#p14390</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14387/#p14387" />
			<content type="html"><![CDATA[<p><strong>BE</strong>, добрый день!</p><p>Ошибка возникает из-за неверных атрибутов:<br /></p><div class="codebox"><pre><code>{ CKA_GOSTR3410_PARAMS, NULL, 0 },
{ CKA_GOSTR3411_PARAMS, NULL, 0 },</code></pre></div><p>При создании ключа в памяти (CKA_TOKEN=FALSE) нужно указывать все атрибуты, что и при генерации через C_GenerateKeyPair.</p><div class="codebox"><pre><code>CK_ATTRIBUTE publicKeyTemplate1[] =
{
    { CKA_CLASS, &amp;publicKeyObject, sizeof(publicKeyObject)},                                        // Класс - открытый ключ
    { CKA_LABEL, &amp;publicKeyLabelGost2012_256_1, sizeof(publicKeyLabelGost2012_256_1) - 1},          // Метка ключа
    { CKA_ID, &amp;keyPairIdGost2012_256_1, sizeof(keyPairIdGost2012_256_1) - 1 },                      // Идентификатор ключевой пары #1 (должен совпадать у открытого и закрытого ключей)
    { CKA_KEY_TYPE, &amp;keyTypeGostR3410_2012_256, sizeof(keyTypeGostR3410_2012_256) },                // Тип ключа - ГОСТ Р 34.10-2012(256)
    { CKA_TOKEN, &amp;attributeFalse, sizeof(attributeFalse)},                                            // Ключ НЕ является объектом токена
    { CKA_PRIVATE, &amp;attributeFalse, sizeof(attributeFalse)},                                        // Ключ доступен без аутентификации на токене
    { CKA_GOSTR3410_PARAMS, parametersGostR3410_2012_256, sizeof(parametersGostR3410_2012_256) },   // Параметры алгоритма ГОСТ Р 34.10-2012(256)
    { CKA_GOSTR3411_PARAMS, parametersGostR3411_2012_256, sizeof(parametersGostR3411_2012_256) }    // Параметры алгоритма ГОСТ Р 34.11-2012(256)
};</code></pre></div><p>Все значения констант есть в примере из <a href="https://www.rutoken.ru/support/download/get/sdk.html">Рутокен SDK</a>: &lt;sdk&gt;pkcs11/samples/Standard/CreateGOST34.10-2012-256</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2020-07-09T14:44:56Z</updated>
			<id>https://forum.rutoken.ru/post/14387/#p14387</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14384/#p14384" />
			<content type="html"><![CDATA[<p>Не увидел раздел &quot;Техническая поддержка разработчиков&quot;. Просьба к модераторам: можно ли тему перенести туда?</p>]]></content>
			<author>
				<name><![CDATA[BE]]></name>
				<uri>https://forum.rutoken.ru/user/11505/</uri>
			</author>
			<updated>2020-07-09T11:23:08Z</updated>
			<id>https://forum.rutoken.ru/post/14384/#p14384</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Создание объекта "открытый ключ" не на токене, а как объекта сессии.]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/14383/#p14383" />
			<content type="html"><![CDATA[<p>Исходные данные: два Rutoken ЭЦП 2 и библиотека PKCS11. На первом токене создана ключевая пара (ГОСТ 2012), с помощью которой подписываются данные. С помощью второго токена нужно проверить эту подпись.</p><p>На основе значения открытого ключа из первого токена (получил из атрибута CKA_VALUE) пытаюсь создать объект &quot;открытый ключ&quot; на втором токене. В документации на сайте сказано, что нельзя создавать такой объект в &quot;долговременной памяти&quot;. Поэтому я попытался создать его как объект сессии (для этого указал значение атрибута CKA_TOKEN равным FALSE). Создание заканчивается ошибкой CKR_ATTRIBUTE_VALUE_INVALID.</p><p>Для создания использовал вот такой шаблон</p><div class="codebox"><pre><code>CK_OBJECT_CLASS     class_pub = CKO_PUBLIC_KEY;
СK_KEY_TYPE             key_type = CKK_GOSTR3410;
CK_ATTRIBUTE           tmpl_pub_2[] =
{
    { CKA_CLASS, &amp;class_pub, sizeof(class_pub) },
    { CKA_KEY_TYPE, &amp;key_type, sizeof(key_type) },
    { CKA_VALUE, NULL, 0 },
    { CKA_GOSTR3410_PARAMS, NULL, 0 },
    { CKA_GOSTR3411_PARAMS, NULL, 0 },
    { CKA_TOKEN, &amp;p11_false, sizeof(p11_false) },
    { CKA_PRIVATE, &amp;p11_false, sizeof(p11_false) },
};</code></pre></div><p>OID-ы параметров брал из открытого ключа на первом токене.</p><p>Тему <a href="https://forum.rutoken.ru/topic/2621/">https://forum.rutoken.ru/topic/2621/</a> видел, но из нее так и не понял можно ли создавать объект открытый ключ как &quot;сессионный&quot; объект (т.е. не объект токена).</p><p>Если &quot;сессионный&quot; объект открытый ключ создать нельзя, можно ли как-то проверить подпись с помощью только вашей pkcs11 библиотеки?</p>]]></content>
			<author>
				<name><![CDATA[BE]]></name>
				<uri>https://forum.rutoken.ru/user/11505/</uri>
			</author>
			<updated>2020-07-09T11:18:45Z</updated>
			<id>https://forum.rutoken.ru/post/14383/#p14383</id>
		</entry>
</feed>
