<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Рутокен, ЭЦП и C#]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/2278/" />
	<updated>2015-07-26T19:24:49Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/2278/</id>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8598/#p8598" />
			<content type="html"><![CDATA[<p>Уффф. Всё, уже ничего не нужно я смог разобраться, и сделать через КриптоПРО .NET</p>]]></content>
			<author>
				<name><![CDATA[Zaharatot]]></name>
				<uri>https://forum.rutoken.ru/user/9814/</uri>
			</author>
			<updated>2015-07-26T19:24:49Z</updated>
			<id>https://forum.rutoken.ru/post/8598/#p8598</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8596/#p8596" />
			<content type="html"><![CDATA[<p>Ну, судя по тому, что <br />rtpkicorePINVOKE.CryptoCore_getInstance()<br />Возвращает 0, то ничего не получилось.</p>]]></content>
			<author>
				<name><![CDATA[Zaharatot]]></name>
				<uri>https://forum.rutoken.ru/user/9814/</uri>
			</author>
			<updated>2015-07-25T18:36:53Z</updated>
			<id>https://forum.rutoken.ru/post/8596/#p8596</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8595/#p8595" />
			<content type="html"><![CDATA[<p>Чуть-чуть поменял код, и прошлая ошибка выводиться перестала, зато появилась новая:<br /></p><div class="codebox"><pre><code>        static void cryptKey()
        {
            CryptoCore Crypto = new CryptoCore(rtpkicorePINVOKE.CryptoCore_getInstance(), true);
            LongVector devises = Crypto.enumerateDevices();

            foreach (var dv in devises)
            {
                DeviceInfo de = Crypto.getDeviceInfo(dv);
                switch (de.type)
                {
                    case 0:
                        Console.WriteLine(&quot;Unknown&quot;); break;
                    case 1:
                        Console.WriteLine(&quot;Rutoken ECP&quot;); break;
                    case 2:
                        Console.WriteLine(&quot;Rutoken WEB&quot;); break;
                    case 3:
                        Console.WriteLine(&quot;Rutoken PINPAD IN&quot;); break;
                    case 4:
                        Console.WriteLine(&quot;KAZTOKEN&quot;); break;
                    case 5:
                        Console.WriteLine(&quot;Rutoken PINPAD2&quot;); break;
                }
            }


            Console.ReadLine();
            Console.ReadLine();
        }
/*
Ошибка выскакивает на строке - LongVector devises = Crypto.enumerateDevices();
An unhandled exception of type &#039;System.AccessViolationException&#039; occurred in testConsole.exe
Additional information: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
*/</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Zaharatot]]></name>
				<uri>https://forum.rutoken.ru/user/9814/</uri>
			</author>
			<updated>2015-07-25T16:08:33Z</updated>
			<id>https://forum.rutoken.ru/post/8595/#p8595</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8594/#p8594" />
			<content type="html"><![CDATA[<p>Насколько я понял, библиотека rtpkicoreCSharp не может найти библиотеку PKCS#11, хотя файл rtPKCS11ECP лежит рядом.</p>]]></content>
			<author>
				<name><![CDATA[Zaharatot]]></name>
				<uri>https://forum.rutoken.ru/user/9814/</uri>
			</author>
			<updated>2015-07-25T15:54:51Z</updated>
			<id>https://forum.rutoken.ru/post/8594/#p8594</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8593/#p8593" />
			<content type="html"><![CDATA[<p>Так, относительно начинаю разбираться, но при попытке запуска кода(который сверху) теперь выдаёт ошибку:</p><p>An unhandled exception of type &#039;System.ApplicationException&#039; occurred in testConsole.exe<br />Additional information: 101:error:80001401:Vendor defined:PKCS11_CTX_load:Unable to load PKCS#11 module</p><p>rtPKCS11ECP.dll и rtpkicoreCSharp.dll закинул в папку к exe-шнику программы.</p>]]></content>
			<author>
				<name><![CDATA[Zaharatot]]></name>
				<uri>https://forum.rutoken.ru/user/9814/</uri>
			</author>
			<updated>2015-07-25T15:43:03Z</updated>
			<id>https://forum.rutoken.ru/post/8593/#p8593</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8589/#p8589" />
			<content type="html"><![CDATA[<p>Стандартная функция по каким-то причинам не хочет цепляться к токену, по этому я решил делать через C# - обёртку для стандартной библиотеки РуТокена. И сразу же возникла проблема - примеров работы с обёрткой просто нету, а примеры из этой статьи&nbsp; - <a href="http://habrahabr.ru/company/aktiv-company/blog/249723/">http://habrahabr.ru/company/aktiv-company/blog/249723/</a><br />Заточены под C++, и вызывают только большее количество вопросов.<br />Я пробую подклдючиться к токену, через обёртку:<br /></p><div class="codebox"><pre><code>            CryptoCore Crypto = CryptoCore.getInstance();
            LongVector devises = Crypto.enumerateDevices();

            foreach (var dv in devises)
            {
                DeviceInfo de = Crypto.getDeviceInfo(dv);
                switch (de.type)
                {
                    case 0:
                        listBox1.Items.Add(&quot;Unknown&quot;); break;
                    case 1:
                        listBox1.Items.Add(&quot;Rutoken ECP&quot;); break;
                    case 2:
                        listBox1.Items.Add(&quot;Rutoken WEB&quot;); break;
                    case 3:
                        listBox1.Items.Add(&quot;Rutoken PINPAD IN&quot;); break;
                    case 4:
                        listBox1.Items.Add(&quot;KAZTOKEN&quot;); break;
                    case 5:
                        listBox1.Items.Add(&quot;Rutoken PINPAD2&quot;);break;
                }
            }</code></pre></div><p>Но не совсем понимаю, чем инициализовывать cryptoCore. В статье на хабре она инициализируется строкой, а тут при <br /></p><div class="codebox"><pre><code>new CryptoCore() </code></pre></div><p>требует переменной типа intPtr, и булевой. Подскажите пожалуйста, хотябы примерно, как проводить инициализацию.</p>]]></content>
			<author>
				<name><![CDATA[Zaharatot]]></name>
				<uri>https://forum.rutoken.ru/user/9814/</uri>
			</author>
			<updated>2015-07-24T19:09:28Z</updated>
			<id>https://forum.rutoken.ru/post/8589/#p8589</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8571/#p8571" />
			<content type="html"><![CDATA[<p>Кирилл Мещеряков, спасибо большое, за ответ. Как только у меня появится на руках токен я буду разбираться с этим вопросом. Как тошлько что-то прояснится, я отпишусь.<br />P.S. Ещё бы знать, как активировать, этот ваш Aktiv... Но в какую сторону копать я знаю, в буду смотреть МСДН, когда уже сам токен будет...</p>]]></content>
			<author>
				<name><![CDATA[Zaharatot]]></name>
				<uri>https://forum.rutoken.ru/user/9814/</uri>
			</author>
			<updated>2015-07-20T18:46:37Z</updated>
			<id>https://forum.rutoken.ru/post/8571/#p8571</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8570/#p8570" />
			<content type="html"><![CDATA[<p>Добрый день.<br />Примеров под C# у нас нет, поэтому трудно что-то конкретное подсказать.<br />Но в целом, ваш ход мысли правильный, нужно лишь вместо программных криптопровайдеров Microsoft использовать наш аппаратный криптопровайдер Aktiv.</p>]]></content>
			<author>
				<name><![CDATA[Кирилл Мещеряков]]></name>
				<uri>https://forum.rutoken.ru/user/6786/</uri>
			</author>
			<updated>2015-07-20T15:26:21Z</updated>
			<id>https://forum.rutoken.ru/post/8570/#p8570</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Рутокен, ЭЦП и C#]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/8514/#p8514" />
			<content type="html"><![CDATA[<p>Здравствуйте. Заранее оговорюсь, что с токенами до этого дел не имел, поэтому мои вопросы могут быть несколько глупыми, или в корне не верными, поэтому прошу поправить меня, если что.<br />У меня есть программа на C#, генерирующая xml файлы. Эти файлы нужно подписывать ЭЦП, при помощи токена. Вопрос такой - можно - ли использовать стандартные C#-библиотеки, для подписывания xml файлов, или же работать будет только ваша SDK?<br />Вот мой текущий код(с токеном пока не проверялся):<br /></p><div class="codebox"><pre><code>        /// &lt;summary&gt;
        /// Подписывание xml-файла
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;path&quot;&gt;Путь к подписываемому файлу&lt;/param&gt;
        public bool SignXml(string path)
        {
            CspParameters cspParams = new CspParameters();
            cspParams.KeyContainerName = &quot;XML_DSIG_RSA_KEY&quot;;            

            RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams);
            if (rsaKey.CspKeyContainerInfo.HardwareDevice)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.PreserveWhitespace = true;
                xmlDoc.Load(path);

                SignedXml signedXml = new SignedXml(xmlDoc);
                signedXml.SigningKey = rsaKey;

                Reference reference = new Reference();
                reference.Uri = &quot;&quot;;

                XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
                reference.AddTransform(env);
                signedXml.AddReference(reference);
                signedXml.ComputeSignature();
                XmlElement xmlDigitalSignature = signedXml.GetXml();
                xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true));

                xmlDoc.Save(path);
                return true;
            }
            else
                MessageBox.Show(&quot;Вставьте USB-Токен, для подписания документа.&quot;, &quot;Ошибка подписывания&quot;, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return false;
        }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Zaharatot]]></name>
				<uri>https://forum.rutoken.ru/user/9814/</uri>
			</author>
			<updated>2015-07-10T06:42:36Z</updated>
			<id>https://forum.rutoken.ru/post/8514/#p8514</id>
		</entry>
</feed>
