| 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 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