<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Рутокен &mdash; Crypto API]]></title>
	<link rel="self" href="https://forum.rutoken.ru/feed/atom/topic/1303" />
	<updated>2010-06-04T19:34:30Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rutoken.ru/topic/1303/</id>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2778/#p2778" />
			<content type="html"><![CDATA[<p>Да действительно дело было в параметре CRYPT_VERIFYCONTEXT. Без него в функции CryptAcquireContext все получилось.</p>]]></content>
			<author>
				<name><![CDATA[GoodMind]]></name>
				<uri>https://forum.rutoken.ru/user/7415/</uri>
			</author>
			<updated>2010-06-04T19:34:30Z</updated>
			<id>https://forum.rutoken.ru/post/2778/#p2778</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2775/#p2775" />
			<content type="html"><![CDATA[<p>CRYPT_VERIFYCONTEXT в нашем CSP не позволяет использовать только закрытый ключ (как требует документация MSDN).<br />Если CryptAcquireContext был вызван с флагом CRYPT_VERIFYCONTEXT, и был получен хендл реального контейнера, то можно получить и хендл ключа, и сертификат.<br />Ограничения могут быть только при использовании CryptSignHash и т.д.</p><p>В других CSP это может быть не так.</p>]]></content>
			<author>
				<name><![CDATA[MKurskiy]]></name>
				<uri>https://forum.rutoken.ru/user/17/</uri>
			</author>
			<updated>2010-06-04T12:19:17Z</updated>
			<id>https://forum.rutoken.ru/post/2775/#p2775</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2774/#p2774" />
			<content type="html"><![CDATA[<p>Сертификат в контейнере есть, его можно посмотреть через консоль КриптоПро CSP</p>]]></content>
			<author>
				<name><![CDATA[GoodMind]]></name>
				<uri>https://forum.rutoken.ru/user/7415/</uri>
			</author>
			<updated>2010-06-04T12:17:20Z</updated>
			<id>https://forum.rutoken.ru/post/2774/#p2774</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2772/#p2772" />
			<content type="html"><![CDATA[<p>Я на некоторое время оставил этот проект и уже не все помню, но, по моему, есть некоторые особенности использования&nbsp; CryptAcquireContext(... CRYPT_VERIFYCONTEXT ...); в части использования параметра CRYPT_VERIFYCONTEXT. Я работал с сертификатами, созданными службой сертификации Windows</p>]]></content>
			<author>
				<name><![CDATA[Алексей Зикеев]]></name>
				<uri>https://forum.rutoken.ru/user/7312/</uri>
			</author>
			<updated>2010-06-04T12:12:33Z</updated>
			<id>https://forum.rutoken.ru/post/2772/#p2772</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2771/#p2771" />
			<content type="html"><![CDATA[<p>Сертификат, в рамках CryptoAPI, это свойство ключевой пары - KP_CERTIFICATE.<br />Если в контейнере нет ключей, то контейнер пуст - в нем не может быть сертификата.<br />Это возможно только в том случае, если ключ либо не был сгенерирован, либо не был записан в контейнер.</p>]]></content>
			<author>
				<name><![CDATA[MKurskiy]]></name>
				<uri>https://forum.rutoken.ru/user/17/</uri>
			</author>
			<updated>2010-06-04T12:11:30Z</updated>
			<id>https://forum.rutoken.ru/post/2771/#p2771</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2769/#p2769" />
			<content type="html"><![CDATA[<p>Да, ошибка при обоих значениях AT_KEYEXCHANGE и AT_SIGNATURE. <br />Как тогда можно получить сертификат (имя ключевого контейнера известно)?</p>]]></content>
			<author>
				<name><![CDATA[GoodMind]]></name>
				<uri>https://forum.rutoken.ru/user/7415/</uri>
			</author>
			<updated>2010-06-04T12:00:35Z</updated>
			<id>https://forum.rutoken.ru/post/2769/#p2769</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2768/#p2768" />
			<content type="html"><![CDATA[<p>Это зависит от свойств ключевой пары в контейнере.<br />Тип ключевой пары контейнера задается на этапе его создания, либо указан в шаблоне сертификата.<br />Возможных варианта два: AT_KEYEXCHANGE и AT_SIGNATURE.<br />Если при обоих значениях выдается ошибка NTE_NO_KEY, значит в контейнере отсутствует ключевая пара - она либо не сгенерирована, либо не записана в контейнер.</p>]]></content>
			<author>
				<name><![CDATA[MKurskiy]]></name>
				<uri>https://forum.rutoken.ru/user/17/</uri>
			</author>
			<updated>2010-06-04T11:55:42Z</updated>
			<id>https://forum.rutoken.ru/post/2768/#p2768</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2767/#p2767" />
			<content type="html"><![CDATA[<p>Здравствуйте.</p><p>Я никак не могу получить хендл ключевой пары в CryptGetUserKey - что нужно указать в параметре dwKeySpec?<br />Что бы я не указывал, ответ один - NTE_NO_KEY (The key requested by the dwKeySpec parameter does not exist.)</p>]]></content>
			<author>
				<name><![CDATA[GoodMind]]></name>
				<uri>https://forum.rutoken.ru/user/7415/</uri>
			</author>
			<updated>2010-06-04T11:45:11Z</updated>
			<id>https://forum.rutoken.ru/post/2767/#p2767</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2547/#p2547" />
			<content type="html"><![CDATA[<p>Все получилось, спасибо большое !</p>]]></content>
			<author>
				<name><![CDATA[Алексей Зикеев]]></name>
				<uri>https://forum.rutoken.ru/user/7312/</uri>
			</author>
			<updated>2010-03-09T09:27:22Z</updated>
			<id>https://forum.rutoken.ru/post/2547/#p2547</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2528/#p2528" />
			<content type="html"><![CDATA[<p>Спасибо большое, буду пробовать ! Я шифрую от 10 до 24 байт, так что нет смысла связываться с сессионными ключами.</p>]]></content>
			<author>
				<name><![CDATA[Алексей Зикеев]]></name>
				<uri>https://forum.rutoken.ru/user/7312/</uri>
			</author>
			<updated>2010-02-25T13:25:12Z</updated>
			<id>https://forum.rutoken.ru/post/2528/#p2528</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2527/#p2527" />
			<content type="html"><![CDATA[<p>Это можно сделать по средствам CSP.<br />1. Перебрать доступные контейнеры с подключенного Rutoken:<br />&nbsp; &nbsp; 1.1 CryptAcquireContext(... CRYPT_VERIFYCONTEXT ...);<br />&nbsp; &nbsp; 1.2 CryptGetProvParam(... PP_ENUMCONTAINERS...);<br />&nbsp; &nbsp; 1.3 Для каждого контейнера получить хендл ключевой пары - CryptGetUserKey;<br />&nbsp; &nbsp; 1.4 Получить у ключа свойство сертификата - CryptGetKeyParam(... KP_CERTIFICATE...);<br />2. Создать контекст из данных сертификата - CertCreateCertificateContext.<br />3. Получить из контекста сертификата необходимые свойства - CertGetCertificateContextProperty, сравнить с имеющимися.<br />4. Расшифровать данные по средствам CryptAPI и CSP.</p><p>Единственно, не рекомендую Вам использовать открытый ключ ассиметричного алгоритма для шифрования конечных данных - это очень медленная операция по сравнению с симетричным шифрованием.<br />Эфективнее создать по средствам CSP сессионный ключ, зашифровать им данные, а потом выгрузить его из CSP в зашифрованном на открытом ключе RSA, и сохранить рядом с зашифрованными данными. И в открытом виде положить рядом информацию о владельце сертификата.<br />О использовании сессионных ключей лучше посмотреть здесь: <a href="http://msdn.microsoft.com/en-us/library/aa382016(VS.85).aspx">http://msdn.microsoft.com/en-us/library … S.85).aspx</a></p>]]></content>
			<author>
				<name><![CDATA[MKurskiy]]></name>
				<uri>https://forum.rutoken.ru/user/17/</uri>
			</author>
			<updated>2010-02-25T13:12:37Z</updated>
			<id>https://forum.rutoken.ru/post/2527/#p2527</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2526/#p2526" />
			<content type="html"><![CDATA[<p>Может сохранять с зашифрованными данными открытые ключи и сравнивать его с экспортированным с токена посредствам Active CSP ?</p>]]></content>
			<author>
				<name><![CDATA[Алексей Зикеев]]></name>
				<uri>https://forum.rutoken.ru/user/7312/</uri>
			</author>
			<updated>2010-02-25T12:28:43Z</updated>
			<id>https://forum.rutoken.ru/post/2526/#p2526</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2525/#p2525" />
			<content type="html"><![CDATA[<p>Для каждого пользователя на сервере сохранены данные, зашифрованные его открытым ключом. Кроме того сохранена информация о Issuer и SerialNumber из того сертификата, который использовался для каждого набора зашифрованных данных. При запуске моей программы необходимо установить чей токен воткнут, и расшифровать соответствующие этому пользователю данные.&nbsp; собственно задача - понять, чьи данные отправлять на расшифровку.</p>]]></content>
			<author>
				<name><![CDATA[Алексей Зикеев]]></name>
				<uri>https://forum.rutoken.ru/user/7312/</uri>
			</author>
			<updated>2010-02-25T12:26:45Z</updated>
			<id>https://forum.rutoken.ru/post/2525/#p2525</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2524/#p2524" />
			<content type="html"><![CDATA[<p>Добрый день.<br />Алексей, подскажите, какая перед Вами стоит задача? что Вам необходимо получить в итоге?</p><p>Дело в том, что функция CertOpenStore работает с локальным хранилищем.<br />В рамках интерфейса CryptoAPI в драйверах Rutoken реализован интерфейс Cryptographic Service Provider (CSP), с помощью которого можно получить сертификат как свойство ключевой пары, и зарегестрировать его в локальном хранилище, в нужном разделе.<br />Кроме того, сертификаты регистрируются в локальном хранилище автоматически после подключения Rutoken по средствам Certificate Propogation Service.</p>]]></content>
			<author>
				<name><![CDATA[MKurskiy]]></name>
				<uri>https://forum.rutoken.ru/user/17/</uri>
			</author>
			<updated>2010-02-25T12:10:45Z</updated>
			<id>https://forum.rutoken.ru/post/2524/#p2524</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Crypto API]]></title>
			<link rel="alternate" href="https://forum.rutoken.ru/post/2520/#p2520" />
			<content type="html"><![CDATA[<p>Добрый день ! Подскажите ,пожалуйста, как средствами CryptoApi открыть сертификат с RuToken ? Т.е. хочется сделать CertOpenStore, но чтобы она открыла именно токен, находящийся на данный момент в компьютере.</p>]]></content>
			<author>
				<name><![CDATA[Алексей Зикеев]]></name>
				<uri>https://forum.rutoken.ru/user/7312/</uri>
			</author>
			<updated>2010-02-24T08:58:21Z</updated>
			<id>https://forum.rutoken.ru/post/2520/#p2520</id>
		</entry>
</feed>
