Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Indy 10.1.5 + SSL. Получить код ошибки OpenSSL в OnVerifyPeer   Найти похожие ветки 

 
gaux   (2008-10-07 15:51) [0]

Delphi 7/2007, Indy 10.1.5, OpenSSL 0.9.8g

Проблема в том, что в событии OnVerifyPeer пост-проверки сертификата компонента IdServerIOHandlerSSLOpenSSL для обработки отдается только булева константа AOk - пройдена проверка или нет. А хотелось бы получать коды ошибок, описанные здесь - http://www.openssl.org/docs/apps/verify.html#.

Как я понимаю, в Indy для проверки используется функция SSL_CTX_set_verify из библиотеки OpenSSL (в хидере Indy - IdSslCtxSetVerify : procedure(ctx: PSSL_CTX; mode: Integer; arg2: PFunction) cdecl), которой третьим параметром идет коллбэк-функция (в хидере Indy -  VerifyCallback(Ok: Integer; ctx: PX509_STORE_CTX):Integer; cdecl;), при помощи которой, собственно, и можно вытащить код.

Впорос тем, кто, в отличие от меня, хорошо понимает структуру Indy. Как вытащить этот Ok: Integer в метод класса ? Возможно, кто-то уже вносил подобные изменения и может поделиться исходниками ...


 
Сергей М. ©   (2008-10-08 14:59) [1]

При беглом взгляде на индейские исходники первое что приходит в голову - использовать своего наследника класса TIdSSLIOHandlerSocketOpenSSL.

В нем перекрыть вирт.метод StartSSL.
В перекрытом методе на время его выполнения подменить содержимое переменной IdSslCtxSetVerify указателем на собственную функцию с соотв.прототипом.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.099 c
15-1273558498
@!!ex
2010-05-11 10:14
2010.08.27
Дешевое копирование выходит за рамки ПО.


15-1273757901
JohnKorsh
2010-05-13 17:38
2010.08.27
Порты USB.


8-1205755973
DoKi
2008-03-17 15:12
2010.08.27
gпопиксельное освещение


15-1275645758
Scot Storch
2010-06-04 14:02
2010.08.27
поиск в БД


2-1272391252
romario
2010-04-27 22:00
2010.08.27
Сохранение файла на диск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский