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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Matti  
#1 Оставлено : 27 сентября 2012 г. 12:29:32(UTC)
Matti

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.09.2012(UTC)
Сообщений: 8
Мужчина
Откуда: Москва

Добрый день!

Получилась следующая ситуация. Обратился к нам заказчик с просьбой дополнить наш продукт шифрованием (хешированием etc) по алгоритмам ГОСТ.
У заказчика есть официальная КриптоПро 3.6, он передал мне демонстрационную версию инсталляции CryptoPro_3_6.exe.
Дистрибутив установился, все хорошо.

Теперь я хочу начать использовать провайдера для алгоритма ГОСТ.
Да, sdk передано не было, поэтому значения я нашел тут на форуме:
Код:

#define ALG_SID_GR3411 30
#define CALG_GR3411 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_GR3411)


И вот что получается:
Код:

	HCRYPTPROV hProv = 0;
	HCRYPTHASH hHash = 0;

	if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0)) {
		std::cout << "cannot acquire context";
		return 0;
	}
	std::cout << "the context acquired" << std::endl;

	if(!CryptCreateHash(hProv, CALG_GR3411, 0, 0, &hHash))
	{
		std::cout << "cannot create hash" << std::endl;
		if (GetLastError() == NTE_BAD_ALGID) std::cout << "The Algid parameter specifies an algorithm that this CSP does not support." << std::endl;
	}
	else
	{
		std::cout << "the hash created" << std::endl;
	}

	if(hHash) 
	{
		CryptDestroyHash(hHash);
		std::cout << "the hash destroyed" << std::endl;
	}
	if(hProv) 
	{
		CryptReleaseContext(hProv,0);
		std::cout << "the context released" << std::endl;
	}


Я получаю "The Algid parameter specifies an algorithm that this CSP does not support." и все тут.
А со значением, например, CALG_MD5 все работает.

Что не так? В чем может быть проблема?

Система Windows7 x64. Установлены файлы и для x32 и для x64.

И еще вопрос, наверное, надо было бы в ветке "КриптоПро .Net" задать - я верно понимаю, что для работы КриптоПро.Net требуется установить КриптоПро CSP и без CSP он работать не будет?
Offline Максим Коллегин  
#2 Оставлено : 27 сентября 2012 г. 12:58:50(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Используйте 75 тип криптопрвайдера. Верно.

Отредактировано пользователем 27 сентября 2012 г. 12:59:20(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline Андрей Писарев  
#3 Оставлено : 27 сентября 2012 г. 13:00:10(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,518
Мужчина
Российская Федерация

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
Добрый день. А где информация о используемом сертификате?
вкладка состав\открытый ключ - что написано? ГОСТ? или RSA ?
Техническую поддержку оказываем тут
Наша база знаний
Offline Matti  
#4 Оставлено : 27 сентября 2012 г. 13:58:14(UTC)
Matti

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.09.2012(UTC)
Сообщений: 8
Мужчина
Откуда: Москва

Прошу прощения.

maxdm написал:
Используйте 75 тип криптопрвайдера.


Поставил 75 в тип провайдера
CryptAcquireContext(&hProv, NULL, NULL, 75, 0)

Получил предложение вставить ключевой носитель.

Андрей * написал:
А где информация о используемом сертификате?


Сертификат? Для простого расчета хеша?

И вот вопросы то какие. Нет у меня ни ключей, ни носителей.
Мне в данный момент надо просто хеши считать для заказчика.
О шифровании речь пока не идет.
Как быть в такой ситуации?

Отредактировано пользователем 27 сентября 2012 г. 14:05:31(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#5 Оставлено : 27 сентября 2012 г. 14:05:01(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,518
Мужчина
Российская Федерация

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
Matti написал:
Прошу прощения.

maxdm написал:
Используйте 75 тип криптопрвайдера.


Не понял совсем. Как именно использовать и что такое тип 75?

CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0

имя криптопровайдера указано в реестре
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider Types\


Matti написал:

Андрей * написал:
А где информация о используемом сертификате?


Сертификат? Для простого расчета хеша?

так потом же шифрование.... на основе открытого ключа из сертификата получателя зашифрованных данных...
для хеша - не нужно...

Отредактировано пользователем 27 сентября 2012 г. 14:10:04(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#6 Оставлено : 27 сентября 2012 г. 14:09:38(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,518
Мужчина
Российская Федерация

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
Цитата:

И вот вопросы то какие. Нет у меня ни ключей, ни носителей.
Мне в данный момент надо просто хеши считать для заказчика.
О шифровании речь пока не идет.
Как быть в такой ситуации?


для хеширования - не нужен сертификат\контейнер


скачать нужно SDK... в нем все есть ... с сайта КриптоПРО
или подправить код - указав правильное имя криптопровайдера
Техническую поддержку оказываем тут
Наша база знаний
Offline Matti  
#7 Оставлено : 27 сентября 2012 г. 14:19:31(UTC)
Matti

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.09.2012(UTC)
Сообщений: 8
Мужчина
Откуда: Москва

Андрей * написал:
скачать нужно SDK... в нем все есть ... с сайта КриптоПРО


Про sdk - не подскажете ссылку? Я не нашел sdk именно для CSP. Для, скажем, КриптоПро.Net нашел, а для CSP нет.
Offline Андрей Писарев  
#8 Оставлено : 27 сентября 2012 г. 14:21:50(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,518
Мужчина
Российская Федерация

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
Matti написал:
Андрей * написал:
скачать нужно SDK... в нем все есть ... с сайта КриптоПРО


Про sdk - не подскажете ссылку? Я не нашел sdk именно для CSP. Для, скажем, КриптоПро.Net нашел, а для CSP нет.



на странице с CSP
http://www.cryptopro.ru/products/csp/downloads

Документация для разработчиков и примеры (SDK)


+ http://cpdn.cryptopro.ru/
Руководство разработчика

КриптоПро CSP \ Интерфейс криптопровайдера "КриптоПро CSP 3.6" \ Функции хэширования и ЭЦП

Отредактировано пользователем 27 сентября 2012 г. 14:24:28(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Matti  
#9 Оставлено : 27 сентября 2012 г. 14:30:26(UTC)
Matti

Статус: Новичок

Группы: Участники
Зарегистрирован: 27.09.2012(UTC)
Сообщений: 8
Мужчина
Откуда: Москва

Андрей * написал:

Понятно. Дело в том, что я _не зарегистрирован_. Не уверен, что и заказчик зарегистрирован - им КриптоПро насколько я понял распространяли вышестоящие...

По ссылке http://www.cryptopro.ru/...ro/forum/view.asp?q=1672 нашел типы и слова, в реестре у меня также есть провайдер "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider".

Но при вызове
Код:
CryptAcquireContext(&hProv, NULL, L"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", 75, 0)

предлагается вставить рабочий ключевой носитель, коего у меня нет...
Offline Андрей Писарев  
#10 Оставлено : 27 сентября 2012 г. 14:42:25(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,518
Мужчина
Российская Федерация

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
Matti написал:
Андрей * написал:

Понятно. Дело в том, что я _не зарегистрирован_. Не уверен, что и заказчик зарегистрирован - им КриптоПро насколько я понял распространяли вышестоящие...

я _не зарегистрирован_.

а в чем сложности пройти регистрацию?

Matti написал:


По ссылке http://www.cryptopro.ru/...ro/forum/view.asp?q=1672 нашел типы и слова, в реестре у меня также есть провайдер "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider".

Но при вызове
Код:
CryptAcquireContext(&hProv, NULL, L"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", 75, 0)

предлагается вставить рабочий ключевой носитель, коего у меня нет...




см. описание функции CryptAcquireContext
последний параметр...

Отредактировано пользователем 27 сентября 2012 г. 14:43:04(UTC)  | Причина: Не указана

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