<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Рутокен ЭЦП 3.0 вопросы по pkcs11]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/4485/" />
	<updated>2024-10-15T08:43:02Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/4485/</id>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен ЭЦП 3.0 вопросы по pkcs11]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/26342/#p26342" />
			<content type="html"><![CDATA[<p><strong>andydandy</strong>, Здравствуйте.</p><p><span class="bbu">Я правильно понимаю что Рутокен ЭЦП 3.0 поддерживает только 512, 1024, 2048, 4096 длины ключей?</span></p><p>Только RSA-1024, -2048 и -4096.</p><br /><p><span class="bbu">Можете сказать почему рутокен ожидает `oaepParams.source = 0;` в то время как например pkcs11-tool устанавливает `oaepParams.source = CKZ_DATA_SPECIFIED;` в аналогичной ситуации?<br />Где в стандарте или в каких-нибудь других поясняющих документах это описано?</span></p><p>Начиная с версии 2.16.1.0, rtpkcs11ecp (релиз ожидается в конце октября/начале ноября) будет принимать оба варианта значения поля source. В спецификации явно прописан смысл поля source только при ненулевых данных, но не указано, допустимо ли его выставление при нулевых данных.</p><p>Выставление данных для OAEP не поддерживается нами. Стек opensc, насколько нам известно, также не поддерживает такое. Чтобы наша библиотека стала более совместимой с реализацией вызовов из opensc, в следующей версии мы решили разрешить выставление данного флага, но при условии, что данные не будут передаваться.</p>]]></content>
			<author>
				<name><![CDATA[Филиппов Никита]]></name>
				<uri>https://forum.rutoken.ru/user/15532/</uri>
			</author>
			<updated>2024-10-15T08:43:02Z</updated>
			<id>https://forum.rutoken.ru/post/26342/#p26342</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Рутокен ЭЦП 3.0 вопросы по pkcs11]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/26336/#p26336" />
			<content type="html"><![CDATA[<p>Привет, </p><p><strong>Есть П.О. на с++ которое: </strong><br />1. Получает сообщение зашифрованное открытым ключем 3072 бит (по алгоритму RSA с OAEP и SHA-1) и расшифровывает его закрытым ключем.<br />2. С помошью закрытого ключа, генерирует цифровую подпись (по алгоритму RSA PKCS#1 v1.5 и SHA-1).</p><p><strong>Задача: </strong><br />- Перенести выполнение описаных выше функций, на устройство Рутокен ЭЦП 3.0. Использовать библиотеку pkcs11.</p><p><strong>1.</strong> Загрузка закрытого ключа на рутокен:<br />&nbsp; &nbsp; Загружаю ключ с помошью `C_CreateObject`:<br />&nbsp; &nbsp; <br /></p><div class="codebox"><pre><code>    CK_RV rv = functionList-&gt;C_CreateObject(session,
                                            privateKeyTemplate,
                                            sizeof(privateKeyTemplate) / sizeof(CK_ATTRIBUTE),
                                            &amp;privateKeyHandle);</code></pre></div><p>&nbsp; &nbsp; <br /><strong>Мне не удалось загрузить ключ размером 3072 бит, но загрузились все остальные. </strong><br /><strong>Я правильно понимаю что Рутокен ЭЦП 3.0 поддерживает только 512, 1024, 2048, 4096 длины ключей? </strong></p><p><strong>2.</strong> Дешифровка сообщения RSA с OAEP и SHA-1:<br />&nbsp; &nbsp; Пытаюсь провести инициализацию:</p><div class="codebox"><pre><code>    CK_RSA_PKCS_OAEP_PARAMS oaepParams;
    oaepParams.hashAlg = CKM_SHA_1;
    oaepParams.mgf = CKG_MGF1_SHA1;
    oaepParams.source = CKZ_DATA_SPECIFIED;
    oaepParams.pSourceData = NULL;
    oaepParams.ulSourceDataLen = 0;

    CK_MECHANISM mechanism;
    mechanism.mechanism = CKM_RSA_PKCS_OAEP;
    mechanism.pParameter = &amp;oaepParams;
    mechanism.ulParameterLen = sizeof(oaepParams);
    
    CK_RV rv = functionList-&gt;C_DecryptInit(session, &amp;mechanism, privKeys[0]);</code></pre></div><p>&nbsp; &nbsp; В качестве референса я использовал код утилиты pkcs11-tool от OpenSC и описание стандарта PKCS#11 current mechanisms v2.40.<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; `C_DecryptInit` возвращал ошибку, пока я не заменил `oaepParams.source = CKZ_DATA_SPECIFIED;` на `oaepParams.source = 0;`<br />&nbsp; &nbsp; C `oaepParams.source = 0;` код работает и сообщение дешифруется.<br />&nbsp; &nbsp; <br /><strong>Можете сказать почему рутокен ожидает `oaepParams.source = 0;` в то время как например pkcs11-tool устанавливает `oaepParams.source = CKZ_DATA_SPECIFIED;` в аналогичной ситуации? </strong><br /><strong>Где в стандарте или в каких-нибудь других поясняющих документах это описано? </strong></p><p><strong>3.</strong> Цифровая подпись RSA PKCS#1 v1.5 и SHA-1:</p><div class="codebox"><pre><code>    CK_MECHANISM rsaSigVerMechWithSha1 = { CKM_SHA1_RSA_PKCS, NULL_PTR, 0 };
    CK_RV rv = functionList-&gt;C_SignInit(session, &amp;rsaSigVerMechWithSha1, objects[0]);</code></pre></div><p><em>Отработала без сюрпризов </em></p>]]></content>
			<author>
				<name><![CDATA[andydandy]]></name>
				<uri>https://forum.rutoken.ru/user/15504/</uri>
			</author>
			<updated>2024-10-14T17:53:21Z</updated>
			<id>https://forum.rutoken.ru/post/26336/#p26336</id>
		</entry>
</feed>
