2010-08-02 18 views
1

Je cherchais la fonction de rappel d'événement quand OpenSSL a des données 'Read' entrantes. Est-ce que OpenSSL a ce genre de fonction? Si oui, pourriez-vous s'il vous plaît me montrer un exemple de code s'il vous plaît?OpenSSL dispose-t-il d'une fonction de rappel d'événement pour les données 'Read'?

Je pense à écrire un emballage simple pour mon application. Cet encapsuleur effectuera un rappel lorsque les données arriveront. Ma pensée initiale serait de créer un thread en boucle en mode non-bloquant pour scanner toutes les données entrantes. Et quand les données sont arrivées, je vais juste faire le rappel. Est-ce que je fais la bonne chose ici?

Merci beaucoup d'avoir répondu! Et désolé pour mon anglais.

Répondre

0

Boost.Asio prend en charge les opérations de lecture SSL asynchrones.

+0

Merci pour votre recommandation, mais il est quelque chose de plus spécifique à OpenSSL? – checksum

+0

I Je ne suis pas au courant des rappels spécifiques à OpenSSL. –

0

Le CyaSSL SSL library (semblable à OpenSSL, mais avec un encombrement beaucoup plus petit et d'autres fonctionnalités intéressantes) a des rappels d'E/S similaires à ce que vous cherchez, je crois.

Dans CyaSSL, les rappels d'entrée/sortie sont prototypée par CallbackIOSend et CallbackIORecv dans ssl.h. Ces fonctions doivent être enregistrées par SSL_CTX avec CyaSSL_SetIOSend() et CyaSSL_SetIORecv(). Le cas par défaut (CBIOSend() et CBIORecv() sont enregistrés en bas de cyassl_io.c

Les pointeurs de fonction CBIOSend et CBIORecv peuvent être dirigés vers vos fonctions d'E/S personnalisées. et recevoir() fonctions (EmbedSend() et EmbedReceive(), situé dans cyassl_io.c) à titre d'exemple.

Cordialement,
Chris