06.04.2005 18:17:05Создание сессионного ключа Ответов: 7
иван
Для того, чтобы создать сессионный ключ в КриптоПро, необходимо получить дескриптор криптопровайдера. Соответственно, создать(или открыть существующий, что мне не надо) криптоконтейнер. Мне нужно лишь создать сессионный ключ и всё.
У меня утановлено следующее оборудование:
-реестр
-eTokenPro

При получении дескриптора криптопровайдера отображается окно выбора ключевого носителя. Вот отображение этого окна мне совершенно не нужно !

Можно ли это как-то обойти ?
 
Ответы:
07.04.2005 10:01:43Василий
Конечно.
Можно вызвать CryptAcquireContext с флажком CRYPT_VERIFYCONTEXT.
Подробности см. в нашем описании http://www.cryptopro.ru/CryptoPro/test/csp_2_0.chm и в MSDN.
07.04.2005 11:17:35иван
разве при использовании этого флага не обязательно существование контейнера ?

птому что это:
CPAcquireContext(
&crtmgr_win->prov,
asCont1.c_str(),
CRYPT_VERIFYCONTEXT,//CRYPT_NEWKEYSET + CRYPT_MACHINE_KEYSET,
&crtmgr_win->pTable);

возвращает NTE_BAD_FLAGS.

И, на сколько я понял из документации, диалог выбора ключевого носителя опосредовано предлагает пользователю выбор ДСЧ для генерации ключа...
07.04.2005 12:35:30maxdm
Причем тут контейнер, если нужен сессионный ключ?
07.04.2005 14:13:54иван
> Причем тут контейнер, если нужен сессионный ключ?

Ключ создаётся функцией CPGenKey, первым параметром которой являеется дескриптор криптопровайдера.
А как я получу дескриптор криптопровайдера без создания контейнера ?

Или есть другой способ создания ключа ?
07.04.2005 15:53:41Юрий
...А в MSDN про CPAcquireContext почитать никак? Там же достаточно ясно написано:
pszContainer
[in] Key container name. This is a null-terminated string that identifies the key container to the CSP. This name is independent of the method used to store the keys. Some CSPs store their key containers internally (in hardware), some use the system registry, and others use the file system. When dwFlags is set to CRYPT_VERIFYCONTEXT, pszContainer must be set to NULL.

ОСОБОЕ внимание прошу обратить на последнее предложение :)
07.04.2005 15:55:27Юрий
А еще лучше низкоуровневые функции прямого доступа к провайдеру типа CP... не использовать. Используйте функцию CryptAcquireContext.
07.04.2005 16:32:27Иван
:) Да действительно, я ограничился чтением лишь криптопрошной документации, поэтому с этой цитаттой не ознакомился.

А использую я эти функции, потому что на их основе коллега написал давным-давно класс. Его и юзаю!

Ещё раз спасибо.