ekg2
|
00001 #ifndef __EKG_SSL_H 00002 #define __EKG_SSL_H /* <__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 /* <HAVE_SSL> */ 00016 00017 #ifdef REMOTE_WANT_GNUTLS /* <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; /* always success */ 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 /* </WANT_GNUTLS> */ 00043 00044 #ifdef REMOTE_WANT_OPENSSL /* <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) /* retcode need be value from SSL_get_error(session, res) */ 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 /* </WANT_OPENSSL> */ 00071 00072 #endif /* </HAVE_SSL> */ 00073 00074 #endif /* </__EKG_SSL_H> */ 00075