Idź do dokumentacji tego pliku.00001 #ifndef __EKG_SSL_H
00002 #define __EKG_SSL_H
00003
00004 #include <ekg2-config.h>
00005
00006 #ifdef REMOTE_WANT_GNUTLS
00007 # define HAVE_SSL 1
00008 #endif
00009
00010 #ifdef REMOTE_WANT_OPENSSL
00011 # define HAVE_SSL 1
00012
00013 #endif
00014
00015 #ifdef HAVE_SSL
00016
00017 #ifdef REMOTE_WANT_GNUTLS
00018 # include <gnutls/gnutls.h>
00019
00020 # define SSL_SESSION gnutls_session_t
00021
00022 static int __attribute__((unused)) SSL_SET_FD(SSL_SESSION session, long int fd) {
00023 gnutls_transport_set_ptr(session, (gnutls_transport_ptr)(fd));
00024 return 1;
00025 }
00026
00027 # define SSL_INIT(session) gnutls_init((&session), GNUTLS_CLIENT)
00028 # define SSL_DEINIT(session) gnutls_deinit(session)
00029 # define SSL_HELLO(session) gnutls_handshake(session)
00030 # define SSL_BYE(session) gnutls_bye(session, GNUTLS_SHUT_RDWR)
00031 # define SSL_GLOBAL_INIT() gnutls_global_init()
00032 # define SSL_GLOBAL_DEINIT() gnutls_global_deinit()
00033 # define SSL_ERROR(retcode) gnutls_strerror(retcode)
00034 # define SSL_E_AGAIN(ret) ((ret == GNUTLS_E_INTERRUPTED) || (ret == GNUTLS_E_AGAIN))
00035
00036 # define SSL_SEND(session, str, len) gnutls_record_send(session, str, len)
00037 # define SSL_RECV(session, buf, size) gnutls_record_recv(session, buf, size)
00038
00039 # define SSL_GET_FD(session, fd) (long int) gnutls_transport_get_ptr(session)
00040 # define SSL_WRITE_DIRECTION(session, ret) gnutls_record_get_direction(session)
00041
00042 #endif
00043
00044 #ifdef REMOTE_WANT_OPENSSL
00045
00046 # include <openssl/ssl.h>
00047 # include <openssl/err.h>
00048
00049 SSL_CTX *jabberSslCtx;
00050
00051 # define SSL_SESSION SSL *
00052
00053 # define SSL_INIT(session) !(session = SSL_new(jabberSslCtx))
00054
00055 # define SSL_HELLO(session) SSL_connect(session)
00056 # define SSL_BYE(session) SSL_shutdown(session)
00057 # define SSL_DEINIT(session) SSL_free(session)
00058 # define SSL_GLOBAL_INIT() SSL_library_init(); jabberSslCtx = SSL_CTX_new(SSLv23_client_method())
00059 # define SSL_GLOBAL_DEINIT() SSL_CTX_free(jabberSslCtx)
00060 # define SSL_ERROR(retcode) ERR_error_string(retcode, NULL)
00061 # define SSL_E_AGAIN(ret) ((ret == SSL_ERROR_WANT_READ || ret == SSL_ERROR_WANT_WRITE))
00062
00063 # define SSL_SEND(session, str, len) SSL_write(session, str, len)
00064 # define SSL_RECV(session, buf, size) SSL_read(session, buf, size)
00065
00066 # define SSL_SET_FD(session, fd) SSL_set_fd(session, fd)
00067 # define SSL_GET_FD(session, fd) fd
00068 # define SSL_WRITE_DIRECTION(session, ret) (ret != SSL_ERROR_WANT_READ)
00069
00070 #endif
00071
00072 #endif
00073
00074 #endif
00075