<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Библиотека "librtpkcs11ecp.so" не работает с Alt Linux]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/4507/" />
	<updated>2024-11-08T15:33:43Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/4507/</id>
		<entry>
			<title type="html"><![CDATA[Re: Библиотека "librtpkcs11ecp.so" не работает с Alt Linux]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/26507/#p26507" />
			<content type="html"><![CDATA[<p>Спасибо,</p><p>Помогла установка pcsc-lite-ccid и pcsc-lite.</p>]]></content>
			<author>
				<name><![CDATA[andydandy]]></name>
				<uri>https://forum.rutoken.ru/user/15504/</uri>
			</author>
			<updated>2024-11-08T15:33:43Z</updated>
			<id>https://forum.rutoken.ru/post/26507/#p26507</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Библиотека "librtpkcs11ecp.so" не работает с Alt Linux]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/26506/#p26506" />
			<content type="html"><![CDATA[<p>Еще раз добрый день!</p><p>Пожалуйста, выполните проверки согласно инструкции: <a href="https://dev.rutoken.ru/pages/viewpage.action?pageId=76218369#id-%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%AD%D0%A6%D0%9F%D0%B2%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%85GNU/Linux-%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%AD%D0%A6%D0%9F%D0%B2%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5">https://dev.rutoken.ru/pages/viewpage.a … 0%BC%D0%B5</a></p><p>В случае, если результаты проверок не соответствуют ожидаемым, пожалуйста, убедитесь, что установлено все необходимое программное обеспечение согласно <a href="https://dev.rutoken.ru/pages/viewpage.action?pageId=76218369#id-%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%AD%D0%A6%D0%9F%D0%B2%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D1%85%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%85GNU/Linux-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F">https://dev.rutoken.ru/pages/viewpage.a … 0%B8%D1%8F</a></p>]]></content>
			<author>
				<name><![CDATA[Евгений Мироненко]]></name>
				<uri>https://forum.rutoken.ru/user/8673/</uri>
			</author>
			<updated>2024-11-08T14:51:54Z</updated>
			<id>https://forum.rutoken.ru/post/26506/#p26506</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Библиотека "librtpkcs11ecp.so" не работает с Alt Linux]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/26505/#p26505" />
			<content type="html"><![CDATA[<p>Добрый день,</p><p>Есть такое:<br /></p><div class="codebox"><pre><code>[user@host-15 Рабочий стол]$ rpm -qa | grep pcsc
libpcsclite-1.9.9-alt1.x86_64</code></pre></div><p>Судья по кол-стеку, ее он и пытается вызывать.</p><br /><p>Конкретно &#039;pcscd&#039; оно не нашло:<br /></p><div class="codebox"><pre><code>[user@host-15 Рабочий стол]$ ps aux | grep pcscd
user        4789  0.0  0.0   6064  2148 pts/0    S+   17:12   0:00 grep pcscd</code></pre></div>]]></content>
			<author>
				<name><![CDATA[andydandy]]></name>
				<uri>https://forum.rutoken.ru/user/15504/</uri>
			</author>
			<updated>2024-11-08T14:17:41Z</updated>
			<id>https://forum.rutoken.ru/post/26505/#p26505</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Библиотека "librtpkcs11ecp.so" не работает с Alt Linux]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/26497/#p26497" />
			<content type="html"><![CDATA[<p>Добрый день!</p><p>Запущен ли pcscd?</p><div class="codebox"><pre><code>ps aux | grep pcscd</code></pre></div><div class="codebox"><pre><code>sudo apt install -y pcsc-tools
pcsc_scan</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Евгений Мироненко]]></name>
				<uri>https://forum.rutoken.ru/user/8673/</uri>
			</author>
			<updated>2024-11-08T05:14:07Z</updated>
			<id>https://forum.rutoken.ru/post/26497/#p26497</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Библиотека "librtpkcs11ecp.so" не работает с Alt Linux]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/26496/#p26496" />
			<content type="html"><![CDATA[<p>Добрый день,</p><p>Собрал и запустил такой тестовый пример на <strong>Alt Simply Linux 10.2 </strong>(Captain Finn):</p><div class="codebox"><pre><code>#include &lt;cryptoki/rtpkcs11.h&gt;
#include &lt;dlfcn.h&gt;

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

int main(int argc, const char* argv[]) {
    CK_FUNCTION_LIST_PTR functionList;
    CK_C_GetFunctionList pGetFunctionList;

    void* handle = dlopen(&quot;./librtpkcs11ecp.so&quot;, RTLD_NOW);
    if (!handle) {
        std::cerr &lt;&lt; &quot;Can&#039;t upload PKCS#11 library\n&quot; &lt;&lt; dlerror() &lt;&lt; std::endl;
        return 1;
    }
    //**************************************************************************
    pGetFunctionList = (CK_C_GetFunctionList)dlsym(handle, &quot;C_GetFunctionList&quot;);
    if (!pGetFunctionList) {
        std::cerr &lt;&lt; &quot;Can&#039;t find C_GetFunctionList.&quot; &lt;&lt; std::endl;
        return 1;
    }

    //**************************************************************************
    CK_RV rv = pGetFunctionList(&amp;functionList);
    if (rv != CKR_OK) {
        std::cerr &lt;&lt; &quot;C_GetFunctionList error: &quot; &lt;&lt; rv &lt;&lt; std::endl;
        return 1;
    }

    //**************************************************************************
    CK_C_INITIALIZE_ARGS initArgs = {NULL_PTR, NULL_PTR, NULL_PTR, NULL_PTR, CKF_OS_LOCKING_OK, NULL_PTR};
    rv = functionList-&gt;C_Initialize(&amp;initArgs);
    // rv = functionList-&gt;C_Initialize(NULL_PTR);
    if (rv != CKR_OK &amp;&amp; rv != CKR_CRYPTOKI_ALREADY_INITIALIZED) {
        std::cerr &lt;&lt; &quot;C_Initialize error: &quot; &lt;&lt; rv &lt;&lt; std::endl;
        return 1;
    }

    //**************************************************************************
    CK_INFO info;
    rv = functionList-&gt;C_GetInfo(&amp;info);
    if (rv != CKR_OK) {
        std::cerr &lt;&lt; &quot;C_GetInfo error: &quot; &lt;&lt; rv &lt;&lt; std::endl;
        return 1;
    }
    std::cout &lt;&lt; &quot;C_GetInfo.desc = \&quot;&quot;
              &lt;&lt; std::string((const char*)info.libraryDescription, sizeof(info.libraryDescription)) &lt;&lt; &quot;\&quot;&quot;
              &lt;&lt; std::endl;
    std::cout &lt;&lt; &quot;C_GetInfo.flags = &quot; &lt;&lt; info.flags &lt;&lt; std::endl;
    std::cout &lt;&lt; &quot;C_GetInfo.cryptokiVer = &quot; &lt;&lt; (int)info.cryptokiVersion.major &lt;&lt; &quot;.&quot; &lt;&lt; (int)info.cryptokiVersion.minor
              &lt;&lt; std::endl;
    std::cout &lt;&lt; &quot;C_GetInfo.libraryVer = &quot; &lt;&lt; (int)info.libraryVersion.major &lt;&lt; &quot;.&quot; &lt;&lt; (int)info.libraryVersion.minor
              &lt;&lt; std::endl;

    //**************************************************************************
    CK_ULONG counter;
    rv = functionList-&gt;C_GetSlotList(CK_FALSE, NULL_PTR, &amp;counter);
    if (rv != CKR_OK) {
        std::cerr &lt;&lt; &quot;C_GetSlotList(FALSE) error: &quot; &lt;&lt; rv &lt;&lt; std::endl;
        return 1;
    }
    std::cout &lt;&lt; &quot;C_GetSlotList(FALSE).counter = &quot; &lt;&lt; counter &lt;&lt; std::endl;

    //**************************************************************************
    rv = functionList-&gt;C_GetSlotList(CK_TRUE, NULL_PTR, &amp;counter);
    if (rv != CKR_OK) {
        std::cerr &lt;&lt; &quot;C_GetSlotList(TRUE) error: &quot; &lt;&lt; rv &lt;&lt; std::endl;
        return 1;
    }
    std::cout &lt;&lt; &quot;C_GetSlotList(TRUE).counter = &quot; &lt;&lt; counter &lt;&lt; std::endl;

    //**************************************************************************
    std::cout &lt;&lt; &quot;before C_Finalize&quot; &lt;&lt; std::endl;
    rv = functionList-&gt;C_Finalize(NULL);
    if (rv != CKR_OK) {
        std::cerr &lt;&lt; &quot;C_Finalize error: &quot; &lt;&lt; rv &lt;&lt; std::endl;
        return 1;
    }
    std::cout &lt;&lt; &quot;after C_Finalize&quot; &lt;&lt; std::endl;

    dlclose(handle);
    return 0;
}</code></pre></div><p>Библиотека берется отсюда:<br />&quot;RutokenSDK\pkcs11\lib\linux_glibc-x86_64\librtpkcs11ecp.so&quot;</p><p><strong>1. Программа виснет на вызове C_Finalize(). </strong><br /></p><div class="codebox"><pre><code>[user@host-15 RutokenTest]$ ./RutokenTest
C_GetInfo.desc = &quot;Rutoken ECP PKCS #11 library    &quot;
C_GetInfo.flags = 0
C_GetInfo.cryptokiVer = 2.40
C_GetInfo.libraryVer = 2.13
C_GetSlotList(FALSE).counter = 15
C_GetSlotList(TRUE).counter = 0
before C_Finalize</code></pre></div><p>&nbsp; &nbsp; Без разницы которая из C_Initialize вызвана:<br />&nbsp; &nbsp; rv = functionList-&gt;C_Initialize(&amp;initArgs);<br />&nbsp; &nbsp; или rv = functionList-&gt;C_Initialize(NULL_PTR);<br />&nbsp; &nbsp; <br />CALL STACK:<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2024/11/aa5719385f5b23a9b528e02bcca6b257.png"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2024/11/aa5719385f5b23a9b528e02bcca6b257.png" alt="" /></a></span> </p><p>Зависание происходит как при наличии подключенных токенов, так и при их отсутствии.<br />&nbsp; &nbsp; <br /><strong>2. Подключил два токена Rutoken ECP 3.0, программ их не видит:</strong><br /></p><div class="codebox"><pre><code>[user@host-15 RutokenTest]$ ./RutokenTest
C_GetInfo.desc = &quot;Rutoken ECP PKCS #11 library    &quot;
C_GetInfo.flags = 0
C_GetInfo.cryptokiVer = 2.40
C_GetInfo.libraryVer = 2.13
C_GetSlotList(FALSE).counter = 15
C_GetSlotList(TRUE).counter = 0
before C_Finalize</code></pre></div><p><span class="bbu">Библиотека сообщает об отсутствии подключенных токенов.</span> <strong>C_GetSlotList(TRUE).counter = 0</strong></p><p>Если добавить такой код:<br /></p><div class="codebox"><pre><code>std::vector&lt;CK_SLOT_ID&gt; slots(counter);
rv = functionList-&gt;C_GetSlotList(CK_FALSE, slots.data(), &amp;counter);
if (rv != CKR_OK) {
    std::cerr &lt;&lt; &quot;C_GetSlotList(FALSE, data) error: &quot; &lt;&lt; rv &lt;&lt; std::endl;
    return 1;
}

for (auto&amp; slot : slots) {
    CK_SLOT_INFO slotInfo;
    rv = functionList-&gt;C_GetSlotInfo(slot, &amp;slotInfo);
    if (rv != CKR_OK) {
        std::cerr &lt;&lt; &quot;C_GetSlotInfo error: &quot; &lt;&lt; rv &lt;&lt; &quot; slot: &quot; &lt;&lt; slot &lt;&lt; std::endl;
        return 1;
    }

    std::cout &lt;&lt; &quot;slot: &quot; &lt;&lt; slot &lt;&lt; std::endl;
    std::cout &lt;&lt; &quot;C_GetSlotInfo.desc = \&quot;&quot;
              &lt;&lt; std::string((const char*)slotInfo.slotDescription, sizeof(slotInfo.slotDescription)) &lt;&lt; &quot;\&quot;&quot;
              &lt;&lt; std::endl;
    std::cout &lt;&lt; &quot;C_GetSlotInfo.flags = &quot; &lt;&lt; slotInfo.flags &lt;&lt; std::endl;
}</code></pre></div><p>Программа распечатает 15 пустышек:<br /></p><div class="codebox"><pre><code>slot: 0
C_GetSlotInfo.desc = &quot;                                                                &quot;
C_GetSlotInfo.flags = 6
slot: 1
C_GetSlotInfo.desc = &quot;                                                                &quot;
C_GetSlotInfo.flags = 6

...</code></pre></div><p><strong>Что может быть причиной проблем с зависанием и неспособностью увидеть подключенный токен?</strong></p><p>P.S. На <strong>Astra Linux 1.8</strong>, этот пример работает <strong>корректно</strong>...</p>]]></content>
			<author>
				<name><![CDATA[andydandy]]></name>
				<uri>https://forum.rutoken.ru/user/15504/</uri>
			</author>
			<updated>2024-11-08T02:26:39Z</updated>
			<id>https://forum.rutoken.ru/post/26496/#p26496</id>
		</entry>
</feed>
