<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Рутокен &mdash; Key is not permitted to be used in operation]]></title>
		<link>https://forum.rutoken.ru/topic/2840/</link>
		<atom:link href="https://forum.rutoken.ru/feed/rss/topic/2840" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Key is not permitted to be used in operation».]]></description>
		<lastBuildDate>Mon, 27 Aug 2018 09:22:15 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Key is not permitted to be used in operation]]></title>
			<link>https://forum.rutoken.ru/post/12044/#p12044</link>
			<description><![CDATA[<p>Сырое шифрование RSA я проверял и оно работает. Пока выберу этот вариант.<br />Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (gas)]]></author>
			<pubDate>Mon, 27 Aug 2018 09:22:15 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/12044/#p12044</guid>
		</item>
		<item>
			<title><![CDATA[Re: Key is not permitted to be used in operation]]></title>
			<link>https://forum.rutoken.ru/post/12042/#p12042</link>
			<description><![CDATA[<p><strong>gas</strong>, похоже в pkicore действительно есть проблема с расшифровыванием. Исправим в будущем релизе.</p><p>На данный момент есть несколько обходных вариантов:<br /></p><ul><li><p>Использовать &quot;сырое&quot; шифрование\расшифрование с помощью PKCS#11. Пример можно посмотреть тут - sdk\pkcs11\samples\Standard\EncDecRSA</p></li><li><p>Если нужен именно CMS, то использовать openssl. Пример можно посмотреть тут - sdk\openssl\rtengine\samples\EncryptCMS (DecryptCMS)</p></li></ul>]]></description>
			<author><![CDATA[null@example.com (Владимир Салыкин)]]></author>
			<pubDate>Mon, 27 Aug 2018 08:56:07 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/12042/#p12042</guid>
		</item>
		<item>
			<title><![CDATA[Re: Key is not permitted to be used in operation]]></title>
			<link>https://forum.rutoken.ru/post/12041/#p12041</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Какое именно устройство Вы используете?</p></blockquote></div><p>Использую смарт-карту Рутокен ЭЦП 2.0.<br /></p><div class="quotebox"><blockquote><p>в каком именно у Вас не заработали сертификаты с RSA</p></blockquote></div><p> Сертификаты с RSA не заработали во всех нижеперечисленных сценариях:<br />1. Сертификат с ключевой парой RSA (1024), выданный моим местным контроллером домена (файл обмена личной информацией .pfx). Импорт сертификата на устройство проходит успешно, приватный ключ перечисляется в общем списке c помощью методов Pkcs11Device::enumeratePrivateKeys и&nbsp; Pkcs11UserCert::getCorrespondingPrivateKey. Но при попытке выполнить enveloped_data.decrypt(cms::EnvelopedData::DecryptParams{ cert }) для сертификата с RSA-ключем, получаю исключение &quot;Key is not permitted to be used in operation&quot;<br />2. Сертификат, сделанный на ключевой паре RSA, которая была сгенерирована в самом устройстве. Для этого я генерил ключевую пару RSA (2048), на ее основе выдавал запрос на выдачу сертификата. Получал сертификат, экспортировал его на устройство. В итоге на устройстве получался сертификат с нормальной ключевой парой, которой вел себя точно так же, как описано в первом случае.</p><p>Единственное, что пока заработало - это выполнение п.2, но для ключевой пары, полученной на устройстве с помощью Pkcs11Device::generateKeyPair с настройками Pkcs11Device::Gost34102012_512KeyGenParams.<br />Такой сертификат перечисляется, объект его приватного ключа можно получить обеими указанными выше методами и при этом enveloped_data.decrypt(cms::EnvelopedData::DecryptParams{ cert }) для указанного сертификата нормально выполняется и расшифровывает ранее зашифрованное сообщение.</p><p>Однако, по определенным причинам хотелось бы того же, но для RSA 1024 и выше.</p><div class="quotebox"><blockquote><p>Импорт ГОСТ ключей на сертифицированные Рутокен ЭЦП запрещен регулятором (ФСБ), такие токены генерируют ключи на борту и никогда не выдают их наружу, что гарантирует их существование в единственном экземпляре.</p></blockquote></div><p>Это очевидно, я и не пытался экспортировать ключевую пару наружу из устройства или импортировать имеющийся (у меня такого и нет). Создавал сертификат на основе запроса из устройства и импортировал его на устройство, где он уже самостоятельно подклеивал приватный ключ, от сгенерированной ранее ключевой пары.</p>]]></description>
			<author><![CDATA[null@example.com (gas)]]></author>
			<pubDate>Mon, 27 Aug 2018 07:33:37 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/12041/#p12041</guid>
		</item>
		<item>
			<title><![CDATA[Re: Key is not permitted to be used in operation]]></title>
			<link>https://forum.rutoken.ru/post/12040/#p12040</link>
			<description><![CDATA[<p>Добрый день, <strong>gas</strong>.</p><p>Вы описали несколько сценариев работы и не совсем понятно в каком именно у Вас не заработали сертификаты с RSA. Можете уточнить? Какое именно устройство Вы используете?</p><p>Судя по тому, что Вам не удалось импортировать ГОСТ ключевую пару, скорее всего это одна из моделей смарт-карты семейства Рутокен ЭЦП. Импорт ГОСТ ключей на сертифицированные Рутокен ЭЦП запрещен регулятором (ФСБ), такие токены генерируют ключи на борту и никогда не выдают их наружу, что гарантирует их существование в единственном экземпляре.</p>]]></description>
			<author><![CDATA[null@example.com (Владимир Салыкин)]]></author>
			<pubDate>Mon, 27 Aug 2018 07:09:42 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/12040/#p12040</guid>
		</item>
		<item>
			<title><![CDATA[Re: Key is not permitted to be used in operation]]></title>
			<link>https://forum.rutoken.ru/post/12038/#p12038</link>
			<description><![CDATA[<p>Похоже сертификаты с RSA не поддерживаются. Печаль. Причем если самому сгенерить RSA на устройстве, то можно зашифровать/расшифровать сообщения (если разбить на блоки и соблюсти паддинг, но это уже другая история).</p>]]></description>
			<author><![CDATA[null@example.com (gas)]]></author>
			<pubDate>Fri, 24 Aug 2018 14:08:30 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/12038/#p12038</guid>
		</item>
		<item>
			<title><![CDATA[Re: Key is not permitted to be used in operation]]></title>
			<link>https://forum.rutoken.ru/post/12037/#p12037</link>
			<description><![CDATA[<p>В общем, методом тыка выяснилось, что если сгенерить ключевую пару на устройстве (например гост), создать CSR, выдать по нему самоподписанный сертификат и экспортировать его обратно на устройство, то все работает как надо. Но если загрузить на устройство сертификат, изначально содержащий ключевую пару, то получаем &quot;Key is not permitted to be used in operation&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (gas)]]></author>
			<pubDate>Fri, 24 Aug 2018 12:45:25 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/12037/#p12037</guid>
		</item>
		<item>
			<title><![CDATA[Key is not permitted to be used in operation]]></title>
			<link>https://forum.rutoken.ru/post/12036/#p12036</link>
			<description><![CDATA[<p>Здравствуйте! Разбираюсь с API pkicore, работаю с ЭЦП смарт-картой. Использую тестовый сертификат, который мне выдал мой локальный контроллер домена. Сертификат успешно экспортирован на карту. Открытый ключ - RSA (1024). Успешно шифрую им тестовое сообщение, но при попытке его тут же расшифровать на устройстве, получаю &quot;Key is not permitted to be used in operation&quot;.<br />В чем может быть причина? Может ключевая пара не той системы?</p><p>Код примерно такой:<br /></p><div class="codebox"><pre><code>    try
    {
        cout &lt;&lt; boolalpha;
        rutoken::pkicore::initialize(&quot;.&quot;);
        SCOPE_EXIT() { rutoken::pkicore::deinitialize(); };

        auto devices = Pkcs11Device::enumerate();
        const std::string plaint_text = &quot;Hello, World!&quot;; //Типа секретные данные
        const std::vector&lt;uint8_t&gt; plaint_data{ plaint_text.begin(), plaint_text.end() };

        for (auto&amp;&amp; device : devices)
        {
            device.login(&quot;12345678&quot;);
            SCOPE_EXIT(&amp;device) { device.logout(); };

            auto cert_file_data = readFile(&quot;D:\\Temp\\123-dev.cer&quot;);
            ExternalCert cert_file(cert_file_data.data(), cert_file_data.size());
            cms::EnvelopParams enlelop_params{ device };
            enlelop_params.addRecipient(cert_file);
            auto enveloped_data = cms::envelop(plaint_data, enlelop_params);

            auto certs = device.enumerateCerts();
            if (certs.empty())
            {
                throw runtime_error(&quot;Token has no certificates.&quot;);
            }

            auto cert = move(certs.front());
            try
            {
                cert.getCorrespondingPrivateKey();
            }
            catch (std::exception&amp;)
            {
                throw runtime_error(&quot;Certificate has no private key.&quot;);
            }

            auto message = enveloped_data.decrypt(cms::EnvelopedData::DecryptParams{ cert }); // &lt;&lt;= Вот тут вылетает исключение с сообщением &quot;Key is not permitted to be used in operation&quot;
            if (message.contentType() != cms::ContentType::data)
            {
                throw runtime_error(&quot;Unsupported content type of enveloped data&quot;);
            }
        }
    }
    catch (const exception&amp; e)
    {
        cerr &lt;&lt; e.what() &lt;&lt; endl;
        return 1;
    }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (gas)]]></author>
			<pubDate>Fri, 24 Aug 2018 10:21:44 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/12036/#p12036</guid>
		</item>
	</channel>
</rss>
