Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.065 c
4-1217672834
DeadMeat
2008-08-02 14:27
2010.08.27
Отключение скринсейвера


2-1268626597
NBAH1990
2010-03-15 07:16
2010.08.27
Как сделать исчезающую панель?


8-1204196768
Nikki
2008-02-28 14:06
2010.08.27
Как вывести картинку из буфера в DirectDraw?


15-1274862307
xayam
2010-05-26 12:25
2010.08.27
Антикомпьютерный контроль (АКК)


15-1272627412
12
2010-04-30 15:36
2010.08.27
EDBEngineError. Cannot load driver. Что можно сделать?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский