Есть ли в OpenSSL какая-либо функция обратного вызова для чтения данных? - PullRequest
1 голос
/ 03 августа 2010

Я искал функцию обратного вызова события, когда OpenSSL имеет входящие данные «Чтение». Есть ли в OpenSSL такая функция? Если да, не могли бы вы показать мне пример кода, пожалуйста?

Я думаю написать простую обертку для моего приложения. Эта обертка сделает обратный вызов, когда данные поступят. Моей первоначальной мыслью было бы создать зацикливание потока в неблокирующем режиме для сканирования любых входящих данных. И когда данные поступят, я просто сделаю обратный вызов. Я здесь правильно делаю?

Большое спасибо за ответ! И извините за мой английский.

Ответы [ 2 ]

0 голосов
/ 20 июня 2011

Библиотека CyaSSL SSL (похожая на OpenSSL, но с гораздо меньшими размерами и другими интересными функциями) имеет обратные вызовы ввода / вывода, аналогичные тем, которые вы ищете, я считаю.

В CyaSSL обратные вызовы ввода / вывода прототипируются с помощью CallbackIOSend и CallbackIORecv в ssl.h. Эти функции должны быть зарегистрированы в соответствии с SSL_CTX с помощью CyaSSL_SetIOSend () и CyaSSL_SetIORecv () . Случай по умолчанию (CBIOSend () и CBIORecv () зарегистрирован в нижней части cyassl_io.c.

Указатели функций CBIOSend и CBIORecv могут указывать на ваши пользовательские функции ввода / вывода. Вы можете использовать функции Send () и Receive () по умолчанию (EmbedSend () и EmbedReceive (), расположенные в cyassl_io.c) в качестве примеров.

С уважением,
Chris

0 голосов
/ 03 августа 2010

Boost.Asio поддерживает асинхронные операции чтения SSL.

...