14.02.2007 15:50:24проблема с CadesMsgEnhanceSignature Ответов: 1
Василий
Добрый день!

Пытаюсь создать усовершенствованную подпись с помощью низкоуровневых функций КриптоПро ЭЦП SDK на основе примера из Руководства разработчика.
В CadesMsgEnhanceSignature для ГОСТ Р 34.11/34.10-2001 получаю ошибку 80090008 (указан неправильный алгоритм)
Какой же должен быть алгоритм ??
Криптопровайдер: Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider

Подписываю по следующей схеме:

//signer.HashAlgorithm.pszObjId = '1.2.643.2.2.3';
CadesMsgOpenToEncode // все отработыает нормально
CryptMsgUpdate
CryptMsgGetParam(hMsg,CMSG_CONTENT_PARAM,0,nil,@size_enc);
CryptMsgGetParam(hMsg,CMSG_CONTENT_PARAM,0, mess_enc,@size_enc);
CryptMsgClose;

//получил подписанное сообщение
//далее пытаюсь добавить усовершенствованную подпись

cadesPara.dwSize := sizeof(CADES_SIGN_PARA);
cadesPara.dwCadesType := CADES_X_LONG_TYPE_1;
cadesPara.pSignerCert := cert1;
cadesPara.szHashAlgorithm := '1.2.643.2.2.3' // ГОСТ Р 34.11/34.10-2001
cadesPara.hAdditionalStore := nil;
cadesPara.pTspConnectionPara := nil;
cadesPara.pProxyPara := nil;

CadesMsgEnhanceSignature(hMsg,0, @cadesPara)
// получаю ошибку 80090008 (указан неправильный алгоритм)
// если в третий параметр передаю nil – та же ошибка
// если алгоритм '1.2.643.2.2.9' - ошибка C2100121
 
Ответы:
28.02.2007 14:32:11Непомнящий Павел
Вы передаёте алгоритм подписи вместо алгоритма хеширования.
В данном случае надо использовать 1.2.643.2.2.9:

cadesPara.szHashAlgorithm := '1.2.643.2.2.9' // ГОСТ Р 34.11

Ошибка C2100121 означает, что не задан адрес службы штампов времени. Нужно указать адрес службы в параметре cadesPara.pTspConnectionPara, либо настроить адрес службы штампов времени по умолчанию в групповой политике "КриптоПро TSP Client".