Статус: Участник
Группы: Участники
Зарегистрирован: 08.10.2010(UTC) Сообщений: 25
Сказал(а) «Спасибо»: 1 раз
|
Добрый день! Помогите пожалуйста с такой ситуацией: методы CryptMsgCalculateEncodedLength, CryptMsgOpenToEncode возвращают код ошибки 57, пробовал через CryptSignMessage тоже самое. Тотже код под Windows работает без ошибок. Код:kr@krkr:~/Projects/forum> ./forum
An error occurred in running the program.
CryptMsgCalculateEncodedLength
Error number 0x57.
Program terminating.
по CSP_WinError.h Код:/**/
/* A network adapter hardware error occurred.*/
/**/
#define ERROR_ADAP_HDW_ERR 57L
Не понимаю почему такая ошибка? Вложил исходный (сокращенный до ошибки) код. К сожалению не смог найти как экспортировать сертификат с закрытым ключем, поэтому хочу предупредить что в строке Код:std::string tName ("#1496B6E900020000AD10");
последовательность байтов слева на право для подстановки серийного от своего сертификата. Пробовал под openSUSE 11.3 под VirtualBox и под Ubuntu 10.04 LTS на реальной машине. openSUSE Код:kr@krkr:~> cat /etc/SuSE-release
openSUSE 11.3 (i586)
VERSION = 11.3
kr@krkr:~> cat /etc/lsb-release
LSB_VERSION="core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-ia32:core-3.2-ia32:core-4.0-ia32"
kr@krkr:~> /opt/cprocsp/bin/ia32/csptest -oid info
CSP (Type:71) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:IA32 FastCode:READY,ENABLED.
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:IA32 FastCode:READY,ENABLED.
CryptAcquireContext succeeded.HCRYPTPROV: 135918747
Total:
[ErrorCode: 0x00000000]
kr@krkr:~> rpm -qa| grep csp| sort
cprocsp-drv-2.6.34-12-desktop-3.6.1-4.i486
cprocsp-drv-devel-3.6.1-4.noarch
cprocsp-rdr-gui-3.6.1-4.i486
cprocsp-rdr-pcsc-3.6.1-4.i486
lsb-cprocsp-base-3.6.1-4.noarch
lsb-cprocsp-capilite-3.6.1-4.i486
lsb-cprocsp-devel-3.6.1-4.noarch
lsb-cprocsp-kc1-3.6.1-4.i486
lsb-cprocsp-pkcs11-3.6.1-4.i486
lsb-cprocsp-rdr-3.6.1-4.i486
Ubuntu Код:kr@ubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04 LTS"
kr@ubuntu:~$ /opt/cprocsp/bin/ia32/csptest -oid info
CSP (Type:71) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:IA32 FastCode:READY,ENABLED.
CSP (Type:75) v3.6.5359 KC1 Release Ver:3.6.6497 OS:Linux CPU:IA32 FastCode:READY,ENABLED.
CryptAcquireContext succeeded.HCRYPTPROV: 145778515
Total:
[ErrorCode: 0x00000000]
kr@ubuntu:~$ dpkg -l | grep csp | sort
iF cprocsp-rdr-gui 3.6.1-5 GUI components for CryptoPro CSP readers. Bu
ii cprocsp-drv-2.6.32-21-generic 3.6.1-5 LKM for linux. Build 6497.
ii cprocsp-drv-devel 3.6.1-5 LKM for linux. Build 6497.
ii cprocsp-rdr-pcsc 3.6.1-5 PC/SC components for CryptoPro CSP readers.
ii lsb-cprocsp-base 3.6.1-4 Crypto-Pro CSP library. Build 6497.
ii lsb-cprocsp-capilite 3.6.1-5 CryptoAPI lite. Build 6497.
ii lsb-cprocsp-devel 3.6.1-5 CryptoPro CSP static libraries and headers.
ii lsb-cprocsp-kc1 3.6.1-4 Crypto-Pro CSP library. Build 6497.
ii lsb-cprocsp-pkcs11 3.6.1-5 CryptoPro PKCS11. Build 6497.
ii lsb-cprocsp-rdr 3.6.1-5 CryptoPro CSP readers. Build 6497.
Вложение(я):  forum.7z (3kb) загружен 14 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.10.2010(UTC) Сообщений: 25
Сказал(а) «Спасибо»: 1 раз
|
После небольшой паузы вернулся к задаче запуска программы под линуксом. Как оказалось я был невнимателен, 57 в шестнадцатеричном виде = 87 в десятичном. Код:/**/
/* The parameter is incorrect.*/
/**/
#define ERROR_INVALID_PARAMETER 87L /* dderror*/
после небольшого дебага возникло подозрение что виноват сертификат Код:signerInfo.pCertInfo = pSignerCert->pCertInfo;
signerInfo.hCryptProv = hProv;
signerInfo.dwKeySpec = dwKeySpec;
signerInfo.HashAlgorithm.pszObjId = (LPSTR)pOidInfo->pszOID;
т.к. если вместо Код:info.cSigners = 1;
info.rgSigners = signerInfoArray;
info.cCertEncoded = 1;
info.rgCertEncoded = SignerCertBlobArray;
написать Код:info.cSigners = 1;
info.rgSigners = signerInfoArray;
info.cCertEncoded = 0;
info.rgCertEncoded = NULL;
то ошибка остается а если так Код:info.cSigners = 0;
info.rgSigners = NULL;
info.cCertEncoded = 1;
info.rgCertEncoded = SignerCertBlobArray;
то функция считает длину В этот раз посмотрел логи Код:Nov 24 19:00:42 krkr cpcsp[8705]: cpcsp: CPCAcquireContext (pszContainer=HDIMAGE\\BFG.000\CB94, dwFlags=0x0). Result=1, Err=0x0. hProv=238223530.
Nov 24 19:00:42 krkr cpcsp[8705]: capi20:!CryptMsgCalculateEncodedLength!() Exception :'CryptFindOIDInfo() failed.' at file:'/dailybuilds/mybuild/CSP/capilite/CMSSignedMessage.cpp' line:2051!
Сертификат получал командой Код:kr@krkr:/opt/cprocsp/bin/ia32> ./cryptcp -creatcert -CA 'http://www.cryptopro.ru/certsrv' -dn CN=BFG -provtype 75 -both -cont '\\.\HDIMAGE\BFG' -exprt -ku
CryptCP 3.33 (c) "Крипто-Про", 2002-2010.
Утилита командной строки для защиты данных.
-creatcert - Создать запрос на сертификат, отправить его в ЦС,
получить и установить сертификат.
Создание запроса...
Warning: Cannot convert string "-*-fixed-bold-r-*--12-*-*-*-*-*-iso8859-5" to type FontStruct
Отправление запроса в ЦС...
Установка сертификата...
Сертификат был успешно установлен.
[ReturnCode: 0]
kr@krkr:/opt/cprocsp/bin/ia32> ./certmgr -listCertmgr 0.9 prerelease (c) "CryptoPro", 2007-2010.
program for managing certificate(CRL) and stores
=============================================================================
1-------
Issuer : E=info@cryptopro.ru, C=RU, O=CRYPTO-PRO, CN=Test Center CRYPTO-PRO
Subject : CN=BFG
Serial : 0xDAC00000020086EA4E1C
PrivateKey Link: Yes. Container: HDIMAGE\\BFG.000\CB94
Подскажите в каком направлении двигаться?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 08.10.2010(UTC) Сообщений: 25
Сказал(а) «Спасибо»: 1 раз
|
Обнаружил такую особенность в структуру Код:signerInfo.HashAlgorithm.pszObjId = (LPSTR)pOidInfo->pszOID;
попадает значение szOID_CP_GOST_R3411_R3410EL == 1.2.643.2.2.3 которое находится в выбранном сертификате pSignerCert->pCertInfo->SignatureAlgorithm.pszObjId, где Код:PCCRYPT_OID_INFO pOidInfo = CryptFindOIDInfo(CRYPT_OID_INFO_OID_KEY,pSignerCert->pCertInfo->SignatureAlgorithm.pszObjId, CRYPT_SIGN_ALG_OID_GROUP_ID);
но если прописать в ручную szOID_CP_GOST_R3411 == 1.2.643.2.2.9 (по подобию темы) Код:signerInfo.HashAlgorithm.pszObjId = szOID_CP_GOST_R3411;
то функция CryptMsgCalculateEncodedLength начинает считать длину без ошибок. Возникает вопрос: как правильно находить хэш-алгоритм по сертификату?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close