<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Рутокен &mdash; "unknown key type" на динамически подключеном rtengine]]></title>
		<link>https://forum.rutoken.ru/topic/3049/</link>
		<atom:link href="https://forum.rutoken.ru/feed/rss/topic/3049/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «"unknown key type" на динамически подключеном rtengine».]]></description>
		<lastBuildDate>Tue, 08 Oct 2019 10:57:54 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: "unknown key type" на динамически подключеном rtengine]]></title>
			<link>https://forum.rutoken.ru/post/13378/#p13378</link>
			<description><![CDATA[<div class="quotebox"><cite>Иван Силантьев пишет:</cite><blockquote><div class="quotebox"><cite>Павел Анфимов пишет:</cite><blockquote><p>rtengine работает только с неизвлекаемыми ключами формата PKCS#11. Они создаются внутри памяти устройства и не могут быть экспортированы. Все криптооперации с ними происходят внутри внутреннего криптоядра. </p><p>Чтобы создать такие ключи можно воспользоваться pkcs11-tool из состава OpenSC. Если программно - см. пример из <a href="https://www.rutoken.ru/support/download/get/sdk.html">Комплекта разработчика</a> &lt;sdk&gt;\openssl\rtengine\samples\KeyGeneration</p><p>Обратите внимание на формат указания ключа. Он различается между pkcs11-tool и openssl. Идентификатор объекта (CKA_ID) в pkcs11-tool имеет вид двузначных номеров символов в hex из таблицы ASCII.<br />Чтобы использовать этот id через OpenSSL надо использовать символы, соответствующие этим кодам. Например: для ‘--id 3132’ в OpenSSL надо указывать &quot;pkcs11:id=12&quot;.&nbsp; <br /><a href="https://www.rapidtables.com/convert/number/ascii-to-hex.html">Есть удобный онлайн-сервис конвертации строки в ASCII-коды</a></p><br /><br /><p>Скорее всего вы пытаетесь работать с контейнерами сторонних криптопровайдеров вроде КриптоПро, VipNet и др.</p></blockquote></div><p>Панель управления Рутокен выдаёт следующее:<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2019/10/81bf80b493c27ba28d688a3ce8c08292.png"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2019/10/81bf80b493c27ba28d688a3ce8c08292.png" alt="" /></a></span></p><p>id я вероятно подобрал правильно, т.к. в противном случае он явно говорит что id неправильный. И да, конвертирование ASСII даёт его же.</p><p>Импортировал ключевую пару на токен из .pfx, а вот какими средствами был сгенерирован .pfx пока затрудняюсь ответить(это важно?)</p></blockquote></div><p>Иван, rtengine работает исключительно с ГОСТ-ключами и сертификатами, а &quot;Aktiv Rutoken CSP v1.0&quot; создает RSA-объекты.</p>]]></description>
			<author><![CDATA[null@example.com (Павел Анфимов)]]></author>
			<pubDate>Tue, 08 Oct 2019 10:57:54 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13378/#p13378</guid>
		</item>
		<item>
			<title><![CDATA[Re: "unknown key type" на динамически подключеном rtengine]]></title>
			<link>https://forum.rutoken.ru/post/13377/#p13377</link>
			<description><![CDATA[<div class="quotebox"><cite>Павел Анфимов пишет:</cite><blockquote><p>rtengine работает только с неизвлекаемыми ключами формата PKCS#11. Они создаются внутри памяти устройства и не могут быть экспортированы. Все криптооперации с ними происходят внутри внутреннего криптоядра. </p><p>Чтобы создать такие ключи можно воспользоваться pkcs11-tool из состава OpenSC. Если программно - см. пример из <a href="https://www.rutoken.ru/support/download/get/sdk.html">Комплекта разработчика</a> &lt;sdk&gt;\openssl\rtengine\samples\KeyGeneration</p><p>Обратите внимание на формат указания ключа. Он различается между pkcs11-tool и openssl. Идентификатор объекта (CKA_ID) в pkcs11-tool имеет вид двузначных номеров символов в hex из таблицы ASCII.<br />Чтобы использовать этот id через OpenSSL надо использовать символы, соответствующие этим кодам. Например: для ‘--id 3132’ в OpenSSL надо указывать &quot;pkcs11:id=12&quot;.&nbsp; <br /><a href="https://www.rapidtables.com/convert/number/ascii-to-hex.html">Есть удобный онлайн-сервис конвертации строки в ASCII-коды</a></p><br /><br /><p>Скорее всего вы пытаетесь работать с контейнерами сторонних криптопровайдеров вроде КриптоПро, VipNet и др.</p></blockquote></div><p>Панель управления Рутокен выдаёт следующее:<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2019/10/81bf80b493c27ba28d688a3ce8c08292.png"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2019/10/81bf80b493c27ba28d688a3ce8c08292.png" alt="" /></a></span></p><p>id я вероятно подобрал правильно, т.к. в противном случае он явно говорит что id неправильный. И да, конвертирование ASСII даёт его же.</p><p>Импортировал ключевую пару на токен из .pfx, а вот какими средствами был сгенерирован .pfx пока затрудняюсь ответить(это важно?)</p>]]></description>
			<author><![CDATA[null@example.com (Иван Силантьев)]]></author>
			<pubDate>Tue, 08 Oct 2019 10:51:41 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13377/#p13377</guid>
		</item>
		<item>
			<title><![CDATA[Re: "unknown key type" на динамически подключеном rtengine]]></title>
			<link>https://forum.rutoken.ru/post/13375/#p13375</link>
			<description><![CDATA[<div class="quotebox"><cite>Иван Силантьев пишет:</cite><blockquote><p>Пытаюсь проверить работу rtengine в openssl. </p><p>Окружение: все dll и exe из свежего sdk. Windows10. Имею экземпляр Рутокен ЭЦП с импортированной на него неэкспортируемой ключевой парой.</p><div class="codebox"><pre><code>c:\Work\git\usb_test\test&gt;openssl
OpenSSL&gt; engine dynamic -pre SO_PATH:c:\Work\git\usb_test\test\rtengine.dll -pre ID:rtengine -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:c:\Work\git\usb_test\test\rtpkcs11ecp.dll
(dynamic) Dynamic engine loading support
[Success]: SO_PATH:c:\Work\git\usb_test\test\rtengine.dll
[Success]: ID:rtengine
[Success]: LIST_ADD:1
[Success]: LOAD
[Success]: MODULE_PATH:c:\Work\git\usb_test\test\rtpkcs11ecp.dll
Loaded: (rtengine) Rutoken engine
OpenSSL&gt; engine -t
(dynamic) Dynamic engine loading support
     [ unavailable ]
(capi) CryptoAPI ENGINE
     [ available ]
(rtengine) Rutoken engine
     [ available ]
OpenSSL&gt; s_client -connect myownsite:1446  -CAfile g:\share\2313\ca.crt -keyform engine -key &quot;pkcs11:id=ef3f68e6-28dd-4155-b88f-8888a6b8a5a6_E&quot; -engine rtengine
engine &quot;rtengine&quot; set.
Enter PKCS#11 token PIN:
cannot load client certificate private key file from engine
10748:error:8206D0D6:lib(130):init_algorithm_nid:unknown key type:C:\j\workspace\rtengine-build\e458e80a\engine\p11\gost_key.c:56:
10748:error:8207E0DF:lib(130):rt_eng_get0_ec_key:wrong key:C:\j\workspace\rtengine-build\e458e80a\engine\ec.c:59:
10748:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:crypto\engine\eng_pkey.c:78:
unable to load client certificate private key file
error in s_client</code></pre></div><p>А вообще конечная цель это подключить rutoken к qt(С++) проекту и проходить c помощью токенов авторизацию на сервере. Процедура успешно обкатана в браузерах.<br />Пробовал 2 варианта:<br />1) На динамическом подключении (через функции ENGINE_ctrl_cmd_string) получаю ту же ошибку <strong>unknown key type</strong>.<br />2) При использовании кода вида <br /></p><div class="codebox"><pre><code>rt_eng_init();e = rt_eng_get0_engine();ENGINE_set_default(e, ENGINE_METHOD_ALL);</code></pre></div><p>при вызове ENGINE_load_private_key получаю ошибку &quot;no load function&quot;. Также не смог понять как в этом случае в инициализацию передать адрес до библиотеки rtpkcs11ecp.dll. Откуда он пытается её взять?</p></blockquote></div><p>Здравствуйте, Иван!</p><p>rtengine работает только с неизвлекаемыми ключами формата PKCS#11. Они создаются внутри памяти устройства и не могут быть экспортированы. Все криптооперации с ними происходят внутри внутреннего криптоядра. </p><p>Чтобы создать такие ключи можно воспользоваться pkcs11-tool из состава OpenSC. Если программно - см. пример из <a href="https://www.rutoken.ru/support/download/get/sdk.html">Комплекта разработчика</a> &lt;sdk&gt;\openssl\rtengine\samples\KeyGeneration</p><p>Обратите внимание на формат указания ключа. Он различается между pkcs11-tool и openssl. Идентификатор объекта (CKA_ID) в pkcs11-tool имеет вид двузначных номеров символов в hex из таблицы ASCII.<br />Чтобы использовать этот id через OpenSSL надо использовать символы, соответствующие этим кодам. Например: для ‘--id 3132’ в OpenSSL надо указывать &quot;pkcs11:id=12&quot;.&nbsp; <br /><a href="https://www.rapidtables.com/convert/number/ascii-to-hex.html">Есть удобный онлайн-сервис конвертации строки в ASCII-коды</a></p><br /><br /><p>Скорее всего вы пытаетесь работать с контейнерами сторонних криптопровайдеров вроде КриптоПро, VipNet и др.</p>]]></description>
			<author><![CDATA[null@example.com (Павел Анфимов)]]></author>
			<pubDate>Tue, 08 Oct 2019 10:20:26 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13375/#p13375</guid>
		</item>
		<item>
			<title><![CDATA["unknown key type" на динамически подключеном rtengine]]></title>
			<link>https://forum.rutoken.ru/post/13372/#p13372</link>
			<description><![CDATA[<p>Пытаюсь проверить работу rtengine в openssl. </p><p>Окружение: все dll и exe из свежего sdk. Windows10. Имею экземпляр Рутокен ЭЦП с импортированной на него неэкспортируемой ключевой парой.</p><div class="codebox"><pre><code>c:\Work\git\usb_test\test&gt;openssl
OpenSSL&gt; engine dynamic -pre SO_PATH:c:\Work\git\usb_test\test\rtengine.dll -pre ID:rtengine -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:c:\Work\git\usb_test\test\rtpkcs11ecp.dll
(dynamic) Dynamic engine loading support
[Success]: SO_PATH:c:\Work\git\usb_test\test\rtengine.dll
[Success]: ID:rtengine
[Success]: LIST_ADD:1
[Success]: LOAD
[Success]: MODULE_PATH:c:\Work\git\usb_test\test\rtpkcs11ecp.dll
Loaded: (rtengine) Rutoken engine
OpenSSL&gt; engine -t
(dynamic) Dynamic engine loading support
     [ unavailable ]
(capi) CryptoAPI ENGINE
     [ available ]
(rtengine) Rutoken engine
     [ available ]
OpenSSL&gt; s_client -connect myownsite:1446  -CAfile g:\share\2313\ca.crt -keyform engine -key &quot;pkcs11:id=ef3f68e6-28dd-4155-b88f-8888a6b8a5a6_E&quot; -engine rtengine
engine &quot;rtengine&quot; set.
Enter PKCS#11 token PIN:
cannot load client certificate private key file from engine
10748:error:8206D0D6:lib(130):init_algorithm_nid:unknown key type:C:\j\workspace\rtengine-build\e458e80a\engine\p11\gost_key.c:56:
10748:error:8207E0DF:lib(130):rt_eng_get0_ec_key:wrong key:C:\j\workspace\rtengine-build\e458e80a\engine\ec.c:59:
10748:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:crypto\engine\eng_pkey.c:78:
unable to load client certificate private key file
error in s_client</code></pre></div><p>А вообще конечная цель это подключить rutoken к qt(С++) проекту и проходить c помощью токенов авторизацию на сервере. Процедура успешно обкатана в браузерах.<br />Пробовал 2 варианта:<br />1) На динамическом подключении (через функции ENGINE_ctrl_cmd_string) получаю ту же ошибку <strong>unknown key type</strong>.<br />2) При использовании кода вида <br /></p><div class="codebox"><pre><code>rt_eng_init();e = rt_eng_get0_engine();ENGINE_set_default(e, ENGINE_METHOD_ALL);</code></pre></div><p>при вызове ENGINE_load_private_key получаю ошибку &quot;no load function&quot;. Также не смог понять как в этом случае в инициализацию передать адрес до библиотеки rtpkcs11ecp.dll. Откуда он пытается её взять?</p>]]></description>
			<author><![CDATA[null@example.com (Иван Силантьев)]]></author>
			<pubDate>Mon, 07 Oct 2019 16:17:32 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13372/#p13372</guid>
		</item>
	</channel>
</rss>
