ekg2
Strona główna
Dodatkowe strony
Moduły
Struktury Danych
Pliki
Lista plików
Globalne
All
Struktury Danych
Pliki
Funkcje
Zmienne
Definicje typów
Wyliczenia
Wartości wyliczeń
Definicje
Grupay
Strony
plugins
jabber
jabber-ssl.h
Idź do dokumentacji tego pliku.
1
#ifndef __EKG_JABBER_SSL_H
2
#define __EKG_JABBER_SSL_H
3
4
#include <ekg2-config.h>
5
6
#ifdef JABBER_HAVE_GNUTLS
7
# define JABBER_HAVE_SSL 1
8
# undef JABBER_HAVE_OPENSSL
/* na wszelki wypadek */
9
#else
10
#ifdef JABBER_HAVE_OPENSSL
11
# define JABBER_HAVE_SSL 1
12
# 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"
13
#endif
14
#endif
15
16
#ifdef JABBER_HAVE_SSL
17
18
#ifdef JABBER_HAVE_GNUTLS
/* HAVE_GNUTLS */
19
# include <gnutls/gnutls.h>
20
21
22
# define SSL_SESSION gnutls_session
23
24
static
int
__attribute__
((unused))
SSL_SET_FD
(
SSL_SESSION
session
,
long
int
fd) {
25
gnutls_transport_set_ptr(session, (gnutls_transport_ptr)(fd));
26
return
1;
/* always success */
27
}
28
29
# define SSL_INIT(session) gnutls_init((&session), GNUTLS_CLIENT)
30
# define SSL_DEINIT(session) gnutls_deinit(session)
31
# define SSL_HELLO(session) gnutls_handshake(session)
32
# define SSL_BYE(session) gnutls_bye(session, GNUTLS_SHUT_RDWR)
33
# define SSL_GLOBAL_INIT() gnutls_global_init()
34
# define SSL_GLOBAL_DEINIT() gnutls_global_deinit()
35
# define SSL_ERROR(retcode) gnutls_strerror(retcode)
36
# define SSL_E_AGAIN(ret) ((ret == GNUTLS_E_INTERRUPTED) || (ret == GNUTLS_E_AGAIN))
37
38
# define SSL_SEND(session, str, len) gnutls_record_send(session, str, len)
39
# define SSL_RECV(session, buf, size) gnutls_record_recv(session, buf, size)
40
41
# define SSL_GET_FD(session, fd) (long int) gnutls_transport_get_ptr(session)
42
# define SSL_WRITE_DIRECTION(session, ret) gnutls_record_get_direction(session)
43
44
#else
/* HAVE_OPENSSL */
45
# include <openssl/ssl.h>
46
# include <openssl/err.h>
47
48
extern
SSL_CTX *
jabberSslCtx
;
/* jabber.c */
49
50
# define SSL_SESSION SSL *
51
52
# define SSL_INIT(session) !(session = SSL_new(jabberSslCtx))
53
54
# define SSL_HELLO(session) SSL_connect(session)
55
# define SSL_BYE(session) SSL_shutdown(session)
56
# define SSL_DEINIT(session) SSL_free(session)
57
# define SSL_GLOBAL_INIT() SSL_library_init(); jabberSslCtx = SSL_CTX_new(SSLv23_client_method())
58
# define SSL_GLOBAL_DEINIT() SSL_CTX_free(jabberSslCtx)
59
# define SSL_ERROR(retcode) ERR_error_string(retcode, NULL)
/* retcode need be value from SSL_get_error(session, res) */
60
# define SSL_E_AGAIN(ret) ((ret == SSL_ERROR_WANT_READ || ret == SSL_ERROR_WANT_WRITE))
61
62
# define SSL_SEND(session, str, len) SSL_write(session, str, len)
63
# define SSL_RECV(session, buf, size) SSL_read(session, buf, size)
64
65
# define SSL_SET_FD(session, fd) SSL_set_fd(session, fd)
66
# define SSL_GET_FD(session, fd) fd
67
# define SSL_WRITE_DIRECTION(session, ret) (ret != SSL_ERROR_WANT_READ)
68
69
#endif
/* ... */
70
71
#endif
/* JABBER_HAVE_SSL */
72
#endif
/* __EKG_JABBER_SSL_H */
73
Wygenerowano N, 10 lut 2013 05:08:19 dla ekg2 programem
1.8.3.1