20#ifndef _tdsguard_hpUeh3TzYOzN1FtT39tMHz_
21#define _tdsguard_hpUeh3TzYOzN1FtT39tMHz_
23#ifndef _tdsguard_hfOrWb5znoUCWdBPoNQvqN_
24#error tds.h must be included before tls.h
28# if defined(_THREAD_SAFE) && defined(TDS_HAVE_PTHREAD_MUTEX)
29# include <freetds/thread.h>
30# ifndef GNUTLS_USE_NETTLE
34# include <gnutls/gnutls.h>
35# include <gnutls/x509.h>
36# include <gnutls/crypto.h>
37#elif defined(HAVE_OPENSSL)
38# include <openssl/ssl.h>
39# include <openssl/x509v3.h>
40# include <openssl/err.h>
43#include <freetds/pushvis.h>
45#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
50TDSRET tds_ssl_init(TDSSOCKET *tds,
bool full);
51void tds_ssl_deinit(TDSCONNECTION *conn);
58size_t tds_ssl_get_cb(TDSCONNECTION * conn,
void *cb,
size_t cblen);
65tds_ssl_pending(TDSCONNECTION *conn)
67 return gnutls_record_check_pending((gnutls_session_t) conn->tls_session);
71tds_ssl_read(TDSCONNECTION *conn,
unsigned char *buf,
int buflen)
84 rc = gnutls_record_recv((gnutls_session_t) conn->tls_session, buf, buflen);
85 }
while ((rc == GNUTLS_E_AGAIN || rc == GNUTLS_E_INTERRUPTED) && !TDS_IS_SOCKET_INVALID(conn->
s));
90tds_ssl_write(TDSCONNECTION *conn,
const unsigned char *buf,
int buflen)
92 return gnutls_record_send((gnutls_session_t) conn->tls_session, buf, buflen);
101#ifdef LIBRESSL_VERSION_NUMBER
102#define TLS_ST_OK SSL_ST_OK
106tds_ssl_pending(TDSCONNECTION *conn)
108 return SSL_pending((SSL *) conn->tls_session);
112tds_ssl_read(TDSCONNECTION *conn,
unsigned char *buf,
int buflen)
114 return SSL_read((SSL *) conn->tls_session, buf, buflen);
118tds_ssl_write(TDSCONNECTION *conn,
const unsigned char *buf,
int buflen)
120 return SSL_write((SSL *) conn->tls_session, buf, buflen);
129tds_ssl_init(TDSSOCKET *tds TDS_UNUSED,
bool full TDS_UNUSED)
135tds_ssl_deinit(TDSCONNECTION *conn TDS_UNUSED)
140tds_ssl_pending(TDSCONNECTION *conn TDS_UNUSED)
146tds_ssl_read(TDSCONNECTION *conn TDS_UNUSED,
unsigned char *buf TDS_UNUSED,
int buflen TDS_UNUSED)
152tds_ssl_write(TDSCONNECTION *conn TDS_UNUSED,
const unsigned char *buf TDS_UNUSED,
int buflen TDS_UNUSED)
158tds_ssl_get_cb(TDSCONNECTION *conn TDS_UNUSED,
void *cb TDS_UNUSED,
size_t cblen TDS_UNUSED)
164#include <freetds/popvis.h>
TDS_SYS_SOCKET s
tcp socket, INVALID_SOCKET if not connected
Definition tds.h:1118