<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/3071" />
	<updated>2019-11-07T08:36:38Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/3071/</id>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13509/#p13509" />
			<content type="html"><![CDATA[<p><strong>Павел Анфимов</strong>, Да, именно то, что мне нужно. Большое спасибо за помощь, Павел.</p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-11-07T08:36:38Z</updated>
			<id>https://forum.rutoken.ru/post/13509/#p13509</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13508/#p13508" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>string uint8_vector_to_hex_string(const vector&lt;uint8_t&gt;&amp; v) {
    stringstream ss;
    ss &lt;&lt; std::hex &lt;&lt; std::setfill(&#039;0&#039;);
    vector&lt;uint8_t&gt;::const_iterator it;

    for (it = v.begin(); it != v.end(); it++) {
        if(it != v.begin())
            ss &lt;&lt; &quot; &quot;;

        ss &lt;&lt; std::setw(2) &lt;&lt; static_cast&lt;unsigned&gt;(*it);
    }

    return ss.str();
}

...
vector&lt;uint8_t&gt; v_ID = cert.getSerialNumber();

string s = uint8_vector_to_hex_string(v_ID);
wstring wstr(s.begin(), s.end());</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2019-11-07T08:14:09Z</updated>
			<id>https://forum.rutoken.ru/post/13508/#p13508</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13505/#p13505" />
			<content type="html"><![CDATA[<p><strong>Павел Анфимов</strong>, Павел, я не об этом. Я знаю, как можно конвертировать. Мне не нужна печать серийного номера - это я вам показал для примера. У меня в строке ID содержатся не символы серийного номера: на выходе символы в какой-то непонятной для меня кодировке. Например, получил &quot;цлч\x17з\f\v/&quot; вместо &quot;F6 EB F7 17 E7 0C 0B 2F&quot;. Как мне из этого &quot;цлч\x17з\f\v/&quot; получить читабельный серийный номер &quot;F6 EB F7 17 E7 0C 0B 2F&quot; (ну или f6:eb:f7:17:e7:0c:0b:2f, как он выводится в консоль из SDK с использованием pkcs11)?<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2019/11/8a14d585896baa3dd3e415882ca08854.png"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2019/11/8a14d585896baa3dd3e415882ca08854.png" alt="" /></a></span></p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-11-06T13:40:12Z</updated>
			<id>https://forum.rutoken.ru/post/13505/#p13505</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13504/#p13504" />
			<content type="html"><![CDATA[<p>Конвертировать можете так:<br /><a href="https://ru.stackoverflow.com/questions/331546/%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-stdstring-%D0%B2-stdwstring">https://ru.stackoverflow.com/questions/ … stdwstring</a></p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2019-11-06T13:35:57Z</updated>
			<id>https://forum.rutoken.ru/post/13504/#p13504</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13503/#p13503" />
			<content type="html"><![CDATA[<p><strong>Павел Анфимов</strong>, Павел, мне надо получить серийный номер в wstring строку для дальнейшей работы с сертификатом.</p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-11-06T13:29:06Z</updated>
			<id>https://forum.rutoken.ru/post/13503/#p13503</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13502/#p13502" />
			<content type="html"><![CDATA[<p>Логично - серийный номер сертификата - байтовый массив, его не стоит пытаться отобразить как строку, поскольку появятся непечатные символы. </p><p>Если надо напечатать серийный номер, делайте так:<br /></p><div class="codebox"><pre><code>for (auto i = 0; i &lt; v_ID.size(); ++i)
    cout &lt;&lt; hex &lt;&lt; setfill(&#039;0&#039;) &lt;&lt; setw(2) &lt;&lt; v_ID[i] &lt;&lt; &quot; &quot;;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2019-11-06T13:27:28Z</updated>
			<id>https://forum.rutoken.ru/post/13502/#p13502</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13501/#p13501" />
			<content type="html"><![CDATA[<p>Вот результат вывода серийных номеров 5 сертификатов:<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2019/11/b1b1c8d4307c9206ec949ef53ef2925b.png"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2019/11/b1b1c8d4307c9206ec949ef53ef2925b.png" alt="" /></a></span></p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-11-06T13:20:49Z</updated>
			<id>https://forum.rutoken.ru/post/13501/#p13501</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13500/#p13500" />
			<content type="html"><![CDATA[<p><strong>Павел Анфимов</strong>, вот мой код:<br /></p><div class="codebox"><pre><code>#include &quot;stdafx.h&quot;
#include &lt;common.h&gt;
#include &lt;codecvt&gt;
using namespace std;
using namespace rutoken::pkicore;



int main()
{
    try {
        cout &lt;&lt; boolalpha;

        /**********************************************************************
        * Инициализируем pkicore, передав путь до директории с библиотекой    *
        * rtPKCS11ECP.                                                        *
        **********************************************************************/
        rutoken::pkicore::initialize(&quot;.&quot;);
        SCOPE_EXIT() {
            /**********************************************************************
            * Завершаем работу с pkicore при выходе из текущего блока.            *
            **********************************************************************/
            rutoken::pkicore::deinitialize();
        };

        /**********************************************************************
        * Получаем список подключенных устройств и продолжаем работу с первым *
        * доступным устройством.                                              *
        **********************************************************************/
        auto devices = Pkcs11Device::enumerate();
        if (devices.empty()) {
            throw runtime_error(&quot;There must be at least one device connected&quot;);
        }

        auto device = move(devices.front());

        /**********************************************************************
        * Получаем список сертификатов на устройстве.                         *
        **********************************************************************/
        auto certs = device.enumerateCerts();
        cout &lt;&lt; certs.size() &lt;&lt; &quot; certificates have been found\n&quot; &lt;&lt; endl;

        /**********************************************************************
        * Выводим серийные номера сертификатов.                               *
        **********************************************************************/
        for (size_t i = 0; i != certs.size(); ++i) {
            auto&amp; cert = certs[i];
            vector&lt;uint8_t&gt; v_ID = cert.getSerialNumber();
            string ID(v_ID.begin(), v_ID.end());
            cout &lt;&lt; &quot;Serial Number: &quot; &lt;&lt; ID &lt;&lt; &quot;\n\n\n&quot;;
        }
}
catch (const exception&amp; e) {
    cerr &lt;&lt; e.what() &lt;&lt; endl;
    system(&quot;pause&quot;);
    return 1;
}
system(&quot;pause&quot;);
return 0;
}</code></pre></div><p>На выходе символы в какой-то непонятной для меня кодировке. Например, получил &quot;цлч\x17з\f\v/&quot; вместо &quot;F6 EB F7 17 E7 0C 0B 2F&quot;</p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-11-06T13:06:59Z</updated>
			<id>https://forum.rutoken.ru/post/13500/#p13500</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13499/#p13499" />
			<content type="html"><![CDATA[<p>Binger, здравствуйте!</p><p>У класса Pkcs11Device для этого есть метод getSerialNumber(). </p><p>Код корректно печатет в консоль серийный номер<br /></p><div class="codebox"><pre><code>cout &lt;&lt; &quot;Device &quot; &lt;&lt; device.getSerialNumber() &lt;&lt; &#039;\n&#039;;</code></pre></div><p>Вы как его обрабатываете или храните?</p>]]></content>
			<author>
				<name><![CDATA[Павел Анфимов]]></name>
				<uri>https://forum.rutoken.ru/user/7338/</uri>
			</author>
			<updated>2019-11-06T13:01:45Z</updated>
			<id>https://forum.rutoken.ru/post/13499/#p13499</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Как получить серийный номер сертификата на токене, используя pkicore?]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/13496/#p13496" />
			<content type="html"><![CDATA[<p>Здравствуйте. Есть ли возможность получить серийный номер сертификата, расположенного на токене с использованием функционала библиотеки pkicore? Если возможно, то как? Пытался получить серийник через метод getSerialNumber(), но там на выходе какие-то символы нечитабельные. Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Binger]]></name>
				<uri>https://forum.rutoken.ru/user/11270/</uri>
			</author>
			<updated>2019-11-06T12:03:39Z</updated>
			<id>https://forum.rutoken.ru/post/13496/#p13496</id>
		</entry>
</feed>
