Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

7 Страницы<12345>»
Опции
К последнему сообщению К первому непрочитанному
Offline Flame_xXx  
#21 Оставлено : 27 октября 2008 г. 21:41:49(UTC)
Flame_xXx

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.10.2008(UTC)
Сообщений: 63

Да, но и CryptGenKey и CPGenKey имеют параметр hProv:

Код:
BOOL CPGenKey(
  __in          HCRYPTPROV hProv,
  __in          ALG_ID Algid,
  __in          DWORD dwFlags,
  __out         HCRYPTKEY* phKey
);


Код:
BOOL WINAPI CryptGenKey(
  __in          HCRYPTPROV hProv,
  __in          ALG_ID Algid,
  __in          DWORD dwFlags,
  __out         HCRYPTKEY* phKey
);


Так значит разницы мужду CPGenKey и CPGenKey нет, только CryptGenKey - WINAPI функция, а при вызове разницы мы не ощутим?

Спасибо. Кстати, Вы мой тезка:)

Отредактировано пользователем 28 октября 2008 г. 13:42:38(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#22 Оставлено : 28 октября 2008 г. 13:02:46(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Вызовы различаются - CryptGenKey лежит в crypt32.dll, ее можно слинковать (есть соответствующий lib файл). А CPGenKey лежит в библиотеке криптопровайдера, для ее вызова эту библиотеку надо будет динамически загружать скорее всего.
Техническую поддержку оказываем тут
Наша база знаний
Offline Flame_xXx  
#23 Оставлено : 28 октября 2008 г. 13:34:12(UTC)
Flame_xXx

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.10.2008(UTC)
Сообщений: 63

Ну это понятно, я имел ввиду после вызва эффект будет одинаков.
Offline Flame_xXx  
#24 Оставлено : 29 октября 2008 г. 21:28:49(UTC)
Flame_xXx

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.10.2008(UTC)
Сообщений: 63

Смотрел пример создания сертификата http://www.cryptopro.ru/...s/csp/20/sample-2-0.zip, там присутствует генерация пары ключей в функции CreateCertificate:

Цитата:
bResult = CryptGenKey(hProv, dwKeyType, CRYPT_EXPORTABLE+(wBits<<16), &hPubKey);
if (!bResult)
{
printf("CryptGenKey failed with %x\n", GetLastError());
__leave;
}


и установка параметров:

Цитата:
#if 0
bResult = CryptSetKeyParam(hPubKey, KP_SIGNATUREOID, "1.2.643.2.2.32.3" , 0);
if (!bResult)
{
printf("CryptSetKeyParam failed with %x\n", GetLastError());
__leave;
}


Так вот вопрос такой, что за параметры KP_SIGNATUREOID и "1.2.643.2.2.32.3" и что они означают? html описание читал.
Offline Flame_xXx  
#25 Оставлено : 29 октября 2008 г. 21:33:15(UTC)
Flame_xXx

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.10.2008(UTC)
Сообщений: 63

OID_SignDH128Verba_1 "1.2.643.2.2.32.3" Параметры P,Q,A цифровой подписи ГОСТ Р 34.10-94, вариант 1. Могут использоваться также в алгоритме Диффи-Хеллмана
Но проблема в том что в MSDN таких параметров нет. И еще, какого типа OID_Sign128Var_1 ?

Отредактировано пользователем 29 октября 2008 г. 21:37:47(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#26 Оставлено : 30 октября 2008 г. 14:37:35(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Конечно нет, MS пока не реализует российский криптоалгоритмы.
#define OID_Sign128Var_1 "1.2.643.2.2.32.3"
Техническую поддержку оказываем тут
Наша база знаний
Offline Flame_xXx  
#27 Оставлено : 1 ноября 2008 г. 12:49:45(UTC)
Flame_xXx

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.10.2008(UTC)
Сообщений: 63

Ну понятно что MS пока не реализует российские алгоритмы, но когда я пытаюсь #define OID_Sign128Var_1 "1.2.643.2.2.32.3" у меня выдает либо не правильные параметры, либо что то в этом роде. Хотя у меня криптопро стоит.

И еще, самое главное, пытаюсь создать сертификат по вашему примеру(правда я поменял строчку bResult =CryptGenKey(m_hProvider,AT_KEYEXCHANGE,CRYPT_EXPORTABLE | 1024<<16,&hPubKey);). Файлы вроде создается но при попытки установить такой сертификат выдется ошибка:

Неправильный файл объекта безопасности открытого ключа
Этот файл не может использоваться как: Сертификат безопасноти.

С чем это может быть связано?

Отредактировано пользователем 1 ноября 2008 г. 12:50:58(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#28 Оставлено : 1 ноября 2008 г. 15:09:28(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
у меня выдает либо не правильные параметры, либо что то в этом роде

какая функция и какую именно ошибку выдает?
Цитата:
CryptGenKey(m_hProvider,AT_KEYEXCHANGE,CRYPT_EXPORTABLE | 1024<<16,&hPubKey);).

1024 - это длина ключа. Вы используете именно 94 ГОСТ?
Цитата:
Неправильный файл объекта безопасности открытого ключа
Этот файл не может использоваться как: Сертификат безопасноти.

С чем это может быть связано?

Ошибка в программе скорее всего. Сам csptest -makecert работает?
Можно взглянуть на получившийся "неправильный" сертификат?
Техническую поддержку оказываем тут
Наша база знаний
Offline Flame_xXx  
#29 Оставлено : 1 ноября 2008 г. 15:55:00(UTC)
Flame_xXx

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.10.2008(UTC)
Сообщений: 63

Если выполнять csptest -makecert без параметров, то на выходе получаем:

Self-Signed Certificates create a file called SelfSigned.cer
Non Self-Signed Certificates create a file called Certificate.cer
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 0.000 sec

Только никакого SelfSigned.cer или Certificate.cer я не нашел на своем жестком. Весь перерыл. Может я что то не то делаю, простите меня за не просвещённость. Если csptest -makecert my допустим, или даже csptest -makecert 10 то вылазит ошибка CertStrToName failed with 80092023.
Troubleshooting Code Error 80092023 - Illegal character in certificate key? Может надо еще указывать название ключа отдельно?%)
Offline Flame_xXx  
#30 Оставлено : 1 ноября 2008 г. 16:00:30(UTC)
Flame_xXx

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.10.2008(UTC)
Сообщений: 63

Далее:
Я пока использую майкрософтовский провайдер, пока для примера. После вызова функций ошибок нет.

CryptAcquireContext(&m_hProvider,NULL,MS_ENHANCED_PROV,PROV_RSA_FULL,0);

список поддерживаемых провайдеров:

0 : Crypto-Pro Cryptographic Service Provider
1 : Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
2 : Crypto-Pro GOST R 34.10-94 Cryptographic Service Provider
3 : eToken Base Cryptographic Provider
4 : Gemplus GemSAFE Card CSP v1.0
5 : Infineon SICRYPT Base Smart Card CSP
6 : Microsoft Base Cryptographic Provider v1.0
7 : Microsoft Base DSS and Diffie-Hellman Cryptographic Provider
8 : Microsoft Base DSS Cryptographic Provider
9 : Microsoft DH SChannel Cryptographic Provider
10 : Microsoft Enhanced Cryptographic Provider v1.0
11 : Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider
12 : Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)
13 : Microsoft Exchange Cryptographic Provider v1.0
14 : Microsoft RSA SChannel Cryptographic Provider
15 : Microsoft Strong Cryptographic Provider
16 : Schlumberger Cryptographic Service Provider

Отредактировано пользователем 1 ноября 2008 г. 16:11:26(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
7 Страницы<12345>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.