Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
Поблагодарили: 1 раз в 1 постах
|
Поставил КриптоПро TSP SDK (версия 1.01.0614) Пробую в VS 2008 простой пример консольный: Цитата: #include "stdafx.h" #include <_tspcli.h> #include <_wincryptex.h>
int main() { CRequest Request; Request.put_DataHashAlg(szOID_CP_GOST_R3411); return 0; }
В итоге получаю: Цитата: Error 1 error LNK2028: unresolved token (0A000292) "public: __thiscall CryptoPro::PKI::TSP::Client::CRequest::~CRequest(void)" (??1CRequest@Client@TSP@PKI@CryptoPro@@$$FQAE@XZ) Error 2 error LNK2028: unresolved token (0A000293) "public: __thiscall CryptoPro::PKI::TSP::Client::CRequest::CRequest(void)" (??0CRequest@Client@TSP@PKI@CryptoPro@@$$FQAE@XZ) .......
Пробую в Builder C++ 6.0, переделав tspcli.lib с помощью coff2omf.exe Цитата: #include <_tspcli.h> #include <_wincryptex.h>
int CreateTSP(){ // unsigned char Text[5] = "ABCD"; CRequest Request;
Request.put_DataHashAlg(szOID_CP_GOST_R3411); //CStamp Stamp(); //request.put_DataHashAlg(szOID_CP_GOST_R3411); // request.AddData(Text,4); // request.put_TSAAddress(L"http://cryptopro.ru/tsp/tsp.srf"); return 0; }
В итоге получаю тот результат: Цитата: [Linker Error] Unresolved external 'CryptoPro::PKI::TSP::Client::CRequest::~CRequest()' referenced from C:\TEST3\UNIT1.OBJ [Linker Error] Unresolved external 'CryptoPro::PKI::TSP::Client::CRequest::CRequest()' referenced from C:\TEST3\UNIT1.OBJ [Linker Error] Unresolved external 'CryptoPro::PKI::TSP::Client::CRequest::put_DataHashAlg(const char *)' referenced from C:\TEST3\UNIT1.OBJ
Пути в проектах прописаны к CryptoPro\SDK\include и CryptoPro\SDK\lib Как я понимаю не правильно создаются классы, хотя если убрать Request.put_DataHashAlg(szOID_CP_GOST_R3411), ошибки пропадают. Как с этим бороться? Отредактировано пользователем 21 июня 2010 г. 14:38:08(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
Поблагодарили: 1 раз в 1 постах
|
В VS2008 помогло указанием библиотеки в коде: Цитата: #pragma comment(lib, "tspcli.lib")
Остается побороть Builder, в нем такое не прокатило
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
При компоновке конечно же надо подать tspcli.lib. Один из способов для Visual Studio Вы описали. Ещё можно делать так. По сути это добавит в вызов link.exe аргументом tspcli.lib. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
Поблагодарили: 1 раз в 1 постах
|
Win XP SP3 OCSP, ЭЦП SDK, TSP SDK Вот код: Цитата: Req.put_TSAAddress(L"http://cryptopro.ru/tsp/tsp.srf"); unsigned char Text[5] = "ABCD"; Req.put_DataHashAlg(CALG_GR3411); //Req.AddData(Text,4); Req.put_DataHash(Text, 4); Req.put_CertReq(true); CStamp Stmp(Req.Send()); unsigned long size; Stmp.Export(NULL, &size); unsigned char *buffer = (unsigned char *)malloc(size); Stmp.Export(buffer, &size);
Если использовать Req.put_DataHash() при выполнении CStamp Stmp(Req.Send()); валится в ошибку "External Exeption E06D7363". Если использовать Req.AddData(Text,4) то создает TSP. На другой машине с winXP SP3 в обоих случаях валится в ошибку. Что ему не хватает и в чем разница между этими методами?
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Метод put_DataHash() задаёт уже подсчитанное хэш-значение. Для алгоритма CALG_GR3411 длина хэш-значения не равна 4 байтам, что обнаруживает служба штампов времени и выдаёт ошибку.
На другой машине предположительно не удаётся посчитать хэш по алгоритму CALG_GR3411. Установлен ли КриптоПро CSP? Какой код ошибки и из какого метода прилетает исключение? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
Поблагодарили: 1 раз в 1 постах
|
Смирнов написал:На другой машине предположительно не удаётся посчитать хэш по алгоритму CALG_GR3411. Установлен ли КриптоПро CSP? Какой код ошибки и из какого метода прилетает исключение? Вылетает на методе Request.AddData() "External Exeption E06D7363", причем вне зависимости от того установлен Алгоритм хеширования данных (put_DataHashAlg(CALG_GR3411)) или нет. CSP строит csp-win32-kc2-rus_3.6.6253. На всех машинах один и тот-же. Еще в Руководстве программиста сказано : "Алгоритм хеширования необходимо задавать до первого вызова AddData(), иначе это приведет к ошибке". Но на тех машинах на которых TSP создается нормально работают варианты как с указанием так и без указания алгоритма. P.S. проверил на двух других Win XP3, работает без ошибок. Отредактировано пользователем 2 июля 2010 г. 15:53:23(UTC)
| Причина: Не указана
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
"External Exeption E06D7363" к сожалению нам ни о чём не говорит. Вы можете перехватить исключение CAtlException и глянуть в m_hr? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
Поблагодарили: 1 раз в 1 постах
|
Возвращусь к ошибкам. Вышеописанный код то работает то нет, на одном компьютере нормально создается штамп времени, на другом пишет ошибку: "Нельзя проверить подпись сертификата" на третьем другую: "Указаны неправильные флаги"
Везде winXP sp3, конфигурация ПО крип-то про одинаковая, пробовал с ECP SDK 1.01.0482 и TSP SDK 1.01.0614 и с ECP SDK 1.02.0646 и TSP SDK 1.01.0707 история одна и та-же.
Хотелось бы получить побольше информации по данным ошибкам.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Хотелось бы получить побольше информации о местах возникновения ошибок с примерами кода и логами отладочной печати. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.04.2009(UTC) Сообщений: 30 Откуда: Череповец
Поблагодарили: 1 раз в 1 постах
|
Использую Visual Studio 2008, вот код: Цитата: CRequest Req; Req.put_TSAAddress(L"http://cryptopro.ru/tsp/tsp.srf"); Req.put_DataHashAlg(szOID_CP_GOST_R3411); Req.AddData((unsigned char *)s,MessageSizeArray); Req.put_CertReq(true); CStamp Stmp(Req.Send(false)); Stmp.Verify(); Stmp.VerifyCertificate(); unsigned long size; Stmp.Export(NULL, &size); unsigned char *buffer = (unsigned char *)malloc(size); Stmp.Export(buffer, &size); Как было замечено валится на проверке сертификата Stmp.VerifyCertificate(); Причем, если использую сервер: "http://cryptopro.ru/tsp/tsp.srf" возникают две ошибки: "Указаны неправильные флаги" и "Невозможно проверить фунцкцию отзыва т.к. сервер отзыва сертификатов недоступен" - последнее я думаю из-за OCSP клиента который в лог сыплет ошибками при вызове TSP. Еще пробую взять штамп-времени с http://tsp.pki.transt.ru/tspca1/tsp.srf, но тут возникает другая ошибка: "Нельзя проверить подпись сертификата." Судя по описанию Stmp.VerifyCertificate() - Выполняет проверку сертификата с построением цепочки до доверенного корневого УЦ и проверкой статусов всех сертификатов цепочки, кроме корневого. т.е. не хватает сертификата в цепочке... Вообще тут речь идет о каком сертификате? Вроде как кроме сертификата сервера штампа-времени в получении TSP никакие больше не участвуют... Получается он не может найти цепочку достоверности этого сертификата? P.S. Можно так-то не использовать проверку, только получается не факт что будет достоверность TSP. Хотя все сертификаты и цепочки взяты из последнего установочного пакета от ТрансТелекома. Отредактировано пользователем 6 декабря 2010 г. 17:35:59(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close