ekg2

plugins/jabber/jabber-ssl.h

Idź do dokumentacji tego pliku.
00001 #ifndef __EKG_JABBER_SSL_H
00002 #define __EKG_JABBER_SSL_H
00003 
00004 #include <ekg2-config.h>
00005 
00006 #ifdef JABBER_HAVE_GNUTLS
00007 # define JABBER_HAVE_SSL 1
00008 # undef JABBER_HAVE_OPENSSL     /* na wszelki wypadek */
00009 #else
00010 #ifdef JABBER_HAVE_OPENSSL
00011 # define JABBER_HAVE_SSL 1
00012 # warning "You want to use OpenSSL library as ssl transport layer for jabber, it have bugs and is not well tested.. It's better if you use gnutls"
00013 #endif
00014 #endif
00015 
00016 #ifdef JABBER_HAVE_SSL
00017 
00018 #ifdef JABBER_HAVE_GNUTLS               /* HAVE_GNUTLS */
00019 # include <gnutls/gnutls.h>
00020 
00021 
00022 # define SSL_SESSION            gnutls_session
00023 
00024 static int __attribute__((unused)) SSL_SET_FD(SSL_SESSION session, long int fd) {
00025         gnutls_transport_set_ptr(session, (gnutls_transport_ptr)(fd));
00026         return 1;       /* always success */
00027 } 
00028 
00029 # define SSL_INIT(session)              gnutls_init((&session), GNUTLS_CLIENT)
00030 # define SSL_DEINIT(session)            gnutls_deinit(session)
00031 # define SSL_HELLO(session)             gnutls_handshake(session)
00032 # define SSL_BYE(session)               gnutls_bye(session, GNUTLS_SHUT_RDWR)
00033 # define SSL_GLOBAL_INIT()              gnutls_global_init()
00034 # define SSL_GLOBAL_DEINIT()            gnutls_global_deinit()
00035 # define SSL_ERROR(retcode)             gnutls_strerror(retcode)
00036 # define SSL_E_AGAIN(ret)               ((ret == GNUTLS_E_INTERRUPTED) || (ret == GNUTLS_E_AGAIN))
00037 
00038 # define SSL_SEND(session, str, len)    gnutls_record_send(session, str, len)
00039 # define SSL_RECV(session, buf, size)   gnutls_record_recv(session, buf, size)
00040 
00041 # define SSL_GET_FD(session, fd)                (long int) gnutls_transport_get_ptr(session)
00042 # define SSL_WRITE_DIRECTION(session, ret)      gnutls_record_get_direction(session)
00043 
00044 #else                           /* HAVE_OPENSSL */
00045 # include <openssl/ssl.h>
00046 # include <openssl/err.h>
00047 
00048 extern SSL_CTX *jabberSslCtx;   /* jabber.c */
00049 
00050 # define SSL_SESSION            SSL *
00051 
00052 # define SSL_INIT(session)              !(session = SSL_new(jabberSslCtx))
00053 
00054 # define SSL_HELLO(session)             SSL_connect(session)
00055 # define SSL_BYE(session)               SSL_shutdown(session)
00056 # define SSL_DEINIT(session)            SSL_free(session)
00057 # define SSL_GLOBAL_INIT()              SSL_library_init(); jabberSslCtx = SSL_CTX_new(SSLv23_client_method())
00058 # define SSL_GLOBAL_DEINIT()            SSL_CTX_free(jabberSslCtx)
00059 # define SSL_ERROR(retcode)             ERR_error_string(retcode, NULL)         /* retcode need be value from SSL_get_error(session, res) */
00060 # define SSL_E_AGAIN(ret)               ((ret == SSL_ERROR_WANT_READ || ret == SSL_ERROR_WANT_WRITE))
00061 
00062 # define SSL_SEND(session, str, len)    SSL_write(session, str, len)
00063 # define SSL_RECV(session, buf, size)   SSL_read(session, buf, size)
00064 
00065 # define SSL_SET_FD(session, fd)        SSL_set_fd(session, fd)
00066 # define SSL_GET_FD(session, fd)                fd
00067 # define SSL_WRITE_DIRECTION(session, ret)      (ret != SSL_ERROR_WANT_READ)
00068 
00069 #endif                          /* ... */
00070 
00071 #endif          /* JABBER_HAVE_SSL */
00072 #endif          /* __EKG_JABBER_SSL_H */
00073 
 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje