diff --git a/src/capwap/dtls_gnutls_connect.c b/src/capwap/dtls_gnutls_connect.c new file mode 100644 index 00000000..38223518 --- /dev/null +++ b/src/capwap/dtls_gnutls_connect.c @@ -0,0 +1,27 @@ + +#include "dtls.h" +#include "dtls_gnutls.h" + +#include "conn.h" +#include "cw_log.h" + +int dtls_gnutls_connect(struct conn *conn) +{ + struct dtls_gnutls_data * d; + d = dtls_gnutls_data_create(conn,GNUTLS_CLIENT | GNUTLS_DATAGRAM); + + gnutls_handshake_set_timeout(d->session,GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT); + int rc; + do { + rc = gnutls_handshake(d->session); + }while (rc==GNUTLS_E_AGAIN); + + + if (rc < 0){ + cw_log(LOG_ERR,"Can't connect: %s",gnutls_strerror(rc)); + return 0; + } + + return 1; +} + diff --git a/src/capwap/dtls_gnutls_get_cipher.c b/src/capwap/dtls_gnutls_get_cipher.c new file mode 100644 index 00000000..4a921d56 --- /dev/null +++ b/src/capwap/dtls_gnutls_get_cipher.c @@ -0,0 +1,8 @@ + + +#include "dtls_gnutls.h" + +const char *dtls_gnutls_get_cipher(struct conn *conn) +{ + return "Unknown"; +} diff --git a/src/capwap/dtls_gnutls_get_peers_cert.c b/src/capwap/dtls_gnutls_get_peers_cert.c new file mode 100644 index 00000000..9a122885 --- /dev/null +++ b/src/capwap/dtls_gnutls_get_peers_cert.c @@ -0,0 +1,26 @@ +#include +#include +#include + +#include "conn.h" +#include "dtls.h" +#include "dtls_gnutls.h" + +struct dtls_ssl_cert dtls_gnutls_get_peers_cert(struct conn * conn,unsigned int n) +{ + struct dtls_gnutls_data *d; + d=(struct dtls_gnutls_data*)conn->dtls_data; + + const gnutls_datum_t * clist; + + struct dtls_ssl_cert cert; + + unsigned int len; + clist = gnutls_certificate_get_peers(d->session,&len); + + cert.size = clist[n].size; + cert.data= clist[n].data; + return cert; +} + +