Конференция "Сети" » Indy 10.1.5 + SSL. Получить код ошибки OpenSSL в OnVerifyPeer [D7, Win2k, WinXP]
 
  • gaux (07.10.08 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

    в метод класса ? Возможно, кто-то уже вносил подобные изменения и может поделиться исходниками ...
  • Сергей М. © (08.10.08 14:59) [1]
    При беглом взгляде на индейские исходники первое что приходит в голову - использовать своего наследника класса TIdSSLIOHandlerSocketOpenSSL.

    В нем перекрыть вирт.метод StartSSL.
    В перекрытом методе на время его выполнения подменить содержимое переменной IdSslCtxSetVerify указателем на собственную функцию с соотв.прототипом.
 
Конференция "Сети" » Indy 10.1.5 + SSL. Получить код ошибки OpenSSL в OnVerifyPeer [D7, Win2k, WinXP]
Есть новые Нет новых   [134432   +19][b:0][p:0.001]