Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.01.2013(UTC) Сообщений: 32 Откуда: Москва Сказал «Спасибо»: 2 раз
|
Добрый день! При попытке создать ЭЦП данных с помощью вызова CrytpSignMessage() получаю ошибку 0xc0000001. Ключевой контейнер размещен на HSM. При этом последовательный вызов CryptCreateHash, CryptHashData и CryptSignHash отрабатывает корректно. Аналогичная ошибка и при проверке подписи с помощью CryptVerifyMessageSignature(). Подскажите, пожалуйста, в чем может быть дело? Отредактировано пользователем 20 мая 2013 г. 12:00:00(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
И вызываете с сервера на котором установлен клиент HSM?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.01.2013(UTC) Сообщений: 32 Откуда: Москва Сказал «Спасибо»: 2 раз
|
Да.
Еще такой нюанс: наше ПО установлено и работает как Windows-служба от локальной системы. Ключ, которым пытаемся подписать данные, расположен в ключевом контейнере в провайдере "CryptoPro HSM Svc CSP".
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Автор: zatsepin Да.
Еще такой нюанс: наше ПО установлено и работает как Windows-служба от локальной системы. Ключ, которым пытаемся подписать данные, расположен в ключевом контейнере в провайдере "CryptoPro HSM Svc CSP". Знаю, что есть вот такой криптопровайдер: Crypto-Pro GOST R 34.10-2001 HSM Local CSP До вызова CrytpSignMessage все функции отрабатывают корректно?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.01.2013(UTC) Сообщений: 32 Откуда: Москва Сказал «Спасибо»: 2 раз
|
Автор: MCR Автор: zatsepin Да.
Еще такой нюанс: наше ПО установлено и работает как Windows-служба от локальной системы. Ключ, которым пытаемся подписать данные, расположен в ключевом контейнере в провайдере "CryptoPro HSM Svc CSP". Знаю, что есть вот такой криптопровайдер: Crypto-Pro GOST R 34.10-2001 HSM Local CSP Написал небольшую утилиту, которая перечисляет имена и типы провайдеров в системе. Вот ее вывод (форматирование сбилось) Provider type Provider Name _____________ _____________________________________ 75 Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider 75 Crypto-Pro HSM CSP 1 Crypto-Pro HSM RSA CSP 1 Crypto-Pro HSM RSA Svc CSP 75 Crypto-Pro HSM Svc CSP 1 eToken Base Cryptographic Provider 1 Microsoft Base Cryptographic Provider v1.0 13 Microsoft Base DSS and Diffie-Hellman Cryptographic Provider 3 Microsoft Base DSS Cryptographic Provider 1 Microsoft Base Smart Card Crypto Provider 18 Microsoft DH SChannel Cryptographic Provider 1 Microsoft Enhanced Cryptographic Provider v1.0 13 Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider 24 Microsoft Enhanced RSA and AES Cryptographic Provider 12 Microsoft RSA SChannel Cryptographic Provider 1 Microsoft Strong Cryptographic Provider Еще команда csptest.exe -enum -provider "CryptoPro HSM Svc CSP" -info выдает информацию по доступным алгоритмам этого провайдера Цитата: До вызова CrytpSignMessage все функции отрабатывают корректно?
До вызова CryptSignMessage производится только поиск сертификата по хранилищу для передачи его в качестве параметра CryptSignMessage
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Автор: zatsepin Автор: MCR Автор: zatsepin Да.
Еще такой нюанс: наше ПО установлено и работает как Windows-служба от локальной системы. Ключ, которым пытаемся подписать данные, расположен в ключевом контейнере в провайдере "CryptoPro HSM Svc CSP". Знаю, что есть вот такой криптопровайдер: Crypto-Pro GOST R 34.10-2001 HSM Local CSP Написал небольшую утилиту, которая перечисляет имена и типы провайдеров в системе. Вот ее вывод (форматирование сбилось) Provider type Provider Name _____________ _____________________________________ 75 Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider 75 Crypto-Pro HSM CSP 1 Crypto-Pro HSM RSA CSP 1 Crypto-Pro HSM RSA Svc CSP 75 Crypto-Pro HSM Svc CSP 1 eToken Base Cryptographic Provider 1 Microsoft Base Cryptographic Provider v1.0 13 Microsoft Base DSS and Diffie-Hellman Cryptographic Provider 3 Microsoft Base DSS Cryptographic Provider 1 Microsoft Base Smart Card Crypto Provider 18 Microsoft DH SChannel Cryptographic Provider 1 Microsoft Enhanced Cryptographic Provider v1.0 13 Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider 24 Microsoft Enhanced RSA and AES Cryptographic Provider 12 Microsoft RSA SChannel Cryptographic Provider 1 Microsoft Strong Cryptographic Provider Еще команда csptest.exe -enum -provider "CryptoPro HSM Svc CSP" -info выдает информацию по доступным алгоритмам этого провайдера Цитата: До вызова CrytpSignMessage все функции отрабатывают корректно?
До вызова CryptSignMessage производится только поиск сертификата по хранилищу для передачи его в качестве параметра CryptSignMessage А как же заполнение CRYPT_SIGN_MESSAGE_PARA? В общем, не знаю, как коллеги на это смотрят, но нужен код, поскольку экстрасенсорика довольно сложная штука.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.01.2013(UTC) Сообщений: 32 Откуда: Москва Сказал «Спасибо»: 2 раз
|
Цитата: До вызова CrytpSignMessage все функции отрабатывают корректно?
Речь шла о функциях, о функциях я и ответил. Параметры, конечно же, устанавливаются. Один и тот же код с разными CSP работает по-разному. Вот код: Код:
SigParams.cbSize = sizeof(CRYPT_SIGN_MESSAGE_PARA);
SigParams.dwMsgEncodingType = PKCS_7_ASN_ENCODING | X509_ASN_ENCODING;
SigParams.pSigningCert = pSignerCert;
SigParams.HashAlgorithm.pszObjId = szOID_GostR3411_94_CryptoProParamSet; // "1.2.643.2.2.30.1"
SigParams.HashAlgorithm.Parameters.cbData = 0;
SigParams.cMsgCert = 1;
SigParams.rgpMsgCert = &pSignerCert;
SigParams.cAuthAttr = 0;
SigParams.dwInnerContentType = 0;
SigParams.cMsgCrl = 0;
SigParams.cUnauthAttr = 0;
SigParams.dwFlags = 0;
SigParams.pvHashAuxInfo = NULL;
SigParams.rgAuthAttr = NULL;
if(!(CryptSignMessage(&SigParams,
FALSE,
1,
MessageArray,
MessageSizeArray,
NULL,
&cbSignedMessageBlob))) {
goto end;
}
if(!(pbSignedMessageBlob = (BYTE*)malloc(cbSignedMessageBlob))) {
goto end;
}
if(!(CryptSignMessage(&SigParams,
FALSE,
1,
MessageArray,
MessageSizeArray,
pbSignedMessageBlob,
&cbSignedMessageBlob))) {
goto end;
}
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
А не в службе код работает? Соединение с HSM установлено? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.01.2013(UTC) Сообщений: 32 Откуда: Москва Сказал «Спасибо»: 2 раз
|
Соединение установлено. Насчет работы не из службы сейчас сказать не могу, смогу проверить только завтра. Но служба корректно подписывает и проверяет, если работать с обычным CSP (не HSM)
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Для работы из службы нужно выпускать особые карты аутентификации.. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close