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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline stapter  
#1 Оставлено : 5 июля 2010 г. 21:07:33(UTC)
stapter

Статус: Участник

Группы: Участники
Зарегистрирован: 23.06.2010(UTC)
Сообщений: 10
Откуда: Санкт-Петербург

Добрый день.
У меня к Вам следующий вопрос. Средствами CryptoApi реализовал подпись документа, добавление подписи в документ, и проверку подписанного документа. Далее при тестировании валидности цепочек сертификатов и подписей обнаружил непонятное для меня поведение CryptMsgGetParam(... CMSG_SIGNER_COUNT_PARAM ..., &signersNum). Оно все время возвращает 4, независимо от количества подписей реально находящихся в документе. Можно конечно в цикле проверять CryptMsgGetParam(hMsg, CMSG_SIGNER_CERT_INFO_PARAM, i, pbSignerCertInfo, &size) параметр size на равенство 0, но я не уверен в правильности этого решения. КриптоАрм показывает, что все подписи на месте, и видит все сертификаты, находящиеся в подписанном файле. собственно вопрос почему же тогда signersNum все время 4 и можно ли обойтись вообще без него, проверяя в цикле CryptMsgGetParam(...., &size)?
Благодарю за внимание!

Код:

//инициализируем криптопровайдер
if(!CryptAcquireContext(
		&hCryptProv,	
		NULL,	//т.к. CRYPT_VERIFYCONTEXT, то контейнер ключей задаем NULL
		NULL,	
		PROV_GOST_2001_DH/*75*/,	//тип криптопровайдера
		CRYPT_VERIFYCONTEXT))       //флаги .
throw gcnew Exception("Cryptographic context could not be acquired.");

HCRYPTMSG hMsg = CryptMsgOpenToDecode(
		X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 
		0,
		0,
		hCryptProv,
		NULL,
		NULL);
		
if (!hMsg)
	throw gcnew Exception("OpenToDecode failed");

if(!CryptMsgUpdate(hMsg, (BYTE *) signedData, signedDataLen, true))
	throw gcnew Exception("MsgUpdate failed");


DWORD signersNum = 0; //количество подписчиков
DWORD size = 0;

//получаем количество подписей
CryptMsgGetParam(hMsg, CMSG_SIGNER_COUNT_PARAM, 0, NULL, &signersNum); //<<<<<<<< signersNum всегда 4

...
//потом в цикле достаю информацию о сертификате
CryptMsgGetParam(...CMSG_SIGNER_CERT_INFO_PARAM....);
//делаю проверки на отозванность 
CertGetCertificateChain(...CERT_CHAIN_REVOCATION_CHECK_CHAIN...); //отозванность
CertVerifyCertificateChainPolicy(...CPCERT_CHAIN_POLICY_SIGNATURE...); //корректность цепочки дял подписи
CryptMsgControl(...CMSG_CTRL_VERIFY_SIGNATURE...); //проверяем мат. корректность подписи
//вроде этого должно быть достаточно
Offline stapter  
#2 Оставлено : 6 июля 2010 г. 13:05:24(UTC)
stapter

Статус: Участник

Группы: Участники
Зарегистрирован: 23.06.2010(UTC)
Сообщений: 10
Откуда: Санкт-Петербург

Вопрос продолжает оставаться актуальным.
Offline Максим Коллегин  
#3 Оставлено : 6 июля 2010 г. 13:07:54(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Неверно используете функцию - последний аргумент - длина буфера под возвращаемое значение, естественно всегда DWORD.
Знания в базе знаний, поддержка в техподдержке
Offline stapter  
#4 Оставлено : 6 июля 2010 г. 13:48:07(UTC)
stapter

Статус: Участник

Группы: Участники
Зарегистрирован: 23.06.2010(UTC)
Сообщений: 10
Откуда: Санкт-Петербург

maxdm написал:
Неверно используете функцию - последний аргумент - длина буфера под возвращаемое значение, естественно всегда DWORD.


Благодарю Applause Все верно, недоглядел Brick wall Сейчас возвращает правильное число подписей Boo hoo!

Отредактировано пользователем 6 июля 2010 г. 13:49:04(UTC)  | Причина: Не указана

Offline Stalker4  
#5 Оставлено : 11 марта 2013 г. 16:32:09(UTC)
Stalker4

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: stapter Перейти к цитате

Код:
//потом в цикле достаю информацию о сертификате
CryptMsgGetParam(...CMSG_SIGNER_CERT_INFO_PARAM....);
//делаю проверки на отозванность 
CertGetCertificateChain(...CERT_CHAIN_REVOCATION_CHECK_CHAIN...); //отозванность
CertVerifyCertificateChainPolicy(...CPCERT_CHAIN_POLICY_SIGNATURE...); //корректность цепочки для подписи
CryptMsgControl(...CMSG_CTRL_VERIFY_SIGNATURE...); //проверяем мат. корректность подписи
//вроде этого должно быть достаточно

Есть несколько вопросов по этому коду:

1) CryptMsgControl(...CMSG_CTRL_VERIFY_SIGNATURE...)
Не понятно, что значит "проверяем мат. корректность подписи" и чем эта проверка подписи отличается от проверки CryptVerifyDetachedMessageSignature ? Или в данном случае CryptMsgControl была использована потому, что в данном случае (при работе с цепочкой) ее было проще использовать, чем CryptVerifyDetachedMessageSignature ?

2) Константа CPCERT_CHAIN_POLICY_SIGNATURE это фича только для криптопровайдера "Крипто Про" ?
Offline Kirill Sobolev  
#6 Оставлено : 12 марта 2013 г. 9:31:45(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
1) CryptMsgControl(...CMSG_CTRL_VERIFY_SIGNATURE...)
Не понятно, что значит "проверяем мат. корректность подписи" и чем эта проверка подписи отличается от проверки CryptVerifyDetachedMessageSignature ? Или в данном случае CryptMsgControl была использована потому, что в данном случае (при работе с цепочкой) ее было проще использовать, чем CryptVerifyDetachedMessageSignature ?

"проверяем мат. корректность подписи" - это проверка исключительно хэша на соответствие, без каких-либо проверок сертификатов.
Результат аналогичен CryptVerifyDetachedMessageSignature, но CryptVerifyDetachedMessageSignature - это simplified CryptoAPI, а CryptMsg* - low-level. Low-level функции, например, позволяют производить потоковое чтение/запись данных.
Подробнее тут.
Цитата:
2) Константа CPCERT_CHAIN_POLICY_SIGNATURE это фича только для криптопровайдера "Крипто Про" ?

http://cpdn.cryptopro.ru...320367154d18b9eb9c3.html
Техническую поддержку оказываем тут
Наша база знаний
Offline Stalker4  
#7 Оставлено : 12 марта 2013 г. 12:07:41(UTC)
Stalker4

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

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

Сказал(а) «Спасибо»: 1 раз
Kirill Sobolev
Небольшой вопрос к Вам, как к разработчику "КРИПТО-ПРО": Планируете ли Вы добавить в "КРИПТО-ПРО" поддержку Украинского ДСТУ на ЭЦП ?
Если нет, то может быть Вы можете посоветовать какие либо аналоги "КРИПТО-ПРО" которые поддерживают ДСТУ ?
Offline Kirill Sobolev  
#8 Оставлено : 12 марта 2013 г. 12:27:12(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Не планируем.
Может вот это подойдет - http://www.bifit.ua/products/cryptolib/index.html ?
Техническую поддержку оказываем тут
Наша база знаний
Offline Stalker4  
#9 Оставлено : 20 марта 2013 г. 14:29:53(UTC)
Stalker4

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Kirill Sobolev Перейти к цитате
Не планируем.
Может вот это подойдет - http://www.bifit.ua/products/cryptolib/index.html ?

Очень жаль что не планируете. На Украине у Вашей разработки конкурентов бы вообще не было.

А криптобиблиотека "Гепард" от bifit похоже вообще отдельно не продается.
Offline Kirill Sobolev  
#10 Оставлено : 20 марта 2013 г. 16:41:27(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
Очень жаль что не планируете. На Украине у Вашей разработки конкурентов бы вообще не было.

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