Статус: Участник
Группы: Участники
Зарегистрирован: 03.04.2012(UTC) Сообщений: 17
|
Возник еще один вопрос: Функция unsigned int Verify ( PCCERT_CONTEXT pCert = NULL, char * AllowedCriticalExtensions = NULL ) const в какой библиотеке находится?
Ошибка "error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: unsigned int __thiscall CryptoPro::PKI::TSP::Client::CStamp::Verify ...."
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
kaluchij написал:Если использую интерфейс клиентских приложений с++, то соответственно Stamp.Import; Stamp.Verify; Верно ? Да, верно :-) kaluchij написал:Ставил отдельно. Отпечатки ключей разные.
Как здесь выложить файлы?
Полностью переустановил Крипто ПРО CSP, установил полностью цепочку сертификатов и часть проблем решилась: запрос Send отрабатывает в любом виде, сертификаты проверяются и в штампе выводится, что подпись верна. Если теперь все работает, то штамп выкладывать не нужно. Проблема у вас была из-за плановой смены ключа на тестовом УЦ - был установлен не тот сертификат УЦ, на котором выпущен сертификат тестовой службы штампов (например был установлен только более старый или более новый сертификат УЦ). kaluchij написал:Возник еще один вопрос: Функция unsigned int Verify ( PCCERT_CONTEXT pCert = NULL, char * AllowedCriticalExtensions = NULL ) const в какой библиотеке находится?
Ошибка "error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: unsigned int __thiscall CryptoPro::PKI::TSP::Client::CStamp::Verify ...." Функция Verify находится в библиотеке tspcli, прототип можно посмотреть в файле tspcli.h: Код:int Verify(PCCERT_CONTEXT pCert = NULL, char *AllowedCriticalExtensions = NULL) const;
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.04.2012(UTC) Сообщений: 17
|
Проблема с функцией Verify по-прежнему осталась. Либы и длл-ки использую последние, версия TSP SDK 1.05.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Функция Verify имеет тип возвращаемого значения не unsigned int, а int. Файл tspcli.h у вас из нового SDK?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.04.2012(UTC) Сообщений: 17
|
Новожилова Елена написал:Функция Verify имеет тип возвращаемого значения не unsigned int, а int. Файл tspcli.h у вас из нового SDK? Проблема решилась, спасибо! Файл tspcli.h был старый.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.04.2012(UTC) Сообщений: 17
|
Подниму данную тему! Функцию написал, на тестовом сервере Крипто ПРО она отрабатывает. Но при попытке отладки на реальном TSP сервере метод send сваливается с ошибкой (неизвестный эксепшн). Код прилагаю. Код:
CryptoPro::PKI::TSP::Client::CRequest Request;
//Задаем данные (если на вход - данные) ------------------------------//
unsigned char Text[33] = "ABCD1234567890123456789012345678";
//Request.put_DataHashAlg(CALG_GR3411);
//Request.AddData(Text, 4);
//если на вход хэш, то используем это --------------------------------//
BYTE* Data = (BYTE*)malloc(33);
DWORD DataLen = 33;
BYTE** HASH = (BYTE**)malloc(512);
DWORD* HLen = (DWORD*)malloc(sizeof(DWORD));
crproGetHash(Data, DataLen, HASH, HLen); //функция получения хэш
Request.put_DataHash((unsigned char*)HASH,512);
//авторизация по сертификату
PCCERT_CONTEXT pCert;
HCERTSTORE hStoreHandle = NULL;
hStoreHandle = Lib.dinamic_CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL,
CERT_SYSTEM_STORE_CURRENT_USER,
L"MY");
pCert = Lib.dinamic_CryptUIDlgSelectCertificateFromStore(hStoreHandle,
NULL, NULL, NULL,
NULL, 0, NULL);
Request.put_ClientCertificate(pCert);
//----------------------------------------------------------------------//
Request.put_CertReq(true);
//адрес TSP сервера
Request.put_TSAAddress(L"http://10.16.3.2/tsp/tsp.srf");
long res;
try
{
CryptoPro::PKI::TSP::Client::CStamp Stamp(Request.Send(true));
}
catch(ATL::CAtlException &ex)
{
if (ex.m_hr == TSPCLI_ERROR_HTTP)
{
res = Request.get_HTTPStatus();
res = 0;
}
}
Ошибки: ex.m_hr -2147012877 когда сертификат включен в запрос Если сертификат в запрос не включен, то getHTTPstatus возвращает 413 С чем это может быть связано и как решить данную проблему? Отредактировано пользователем 28 апреля 2012 г. 17:03:51(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
kaluchij написал: Но при попытке отладки на реальном TSP сервере метод send сваливается с ошибкой (неизвестный эксепшн). а код у ошибки какой? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.04.2012(UTC) Сообщений: 17
|
Андрей * написал: а код у ошибки какой?
ex.m_hr -2147012877 когда сертификат включен в запрос
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.04.2012(UTC) Сообщений: 17
|
Вот такая ошибка:
Unhandled exception at 0x7c812aeb in testDLL.exe: Microsoft C++ exception: ATL::CAtlException at memory location 0x0022c874..
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close