3 #include <gnutls/gnutls.h>
5 static gnutls_session tls_session = NULL;
8 tls_negotiate (fd, cert_file, key_file)
10 const char *cert_file, *key_file;
12 gnutls_certificate_credentials xcred;
14 gnutls_global_init ();
16 gnutls_certificate_allocate_credentials(&xcred);
22 gnutls_certificate_set_x509_key_file (xcred, cert_file, key_file,
26 gnutls_init (&tls_session, GNUTLS_CLIENT);
27 gnutls_set_default_priority (tls_session);
28 gnutls_credentials_set (tls_session, GNUTLS_CRD_CERTIFICATE, xcred);
30 gnutls_transport_set_ptr (tls_session, (gnutls_transport_ptr)fd);
32 gnutls_handshake (tls_session);
36 tls_write(fd, buf, num)
41 return gnutls_record_send (tls_session, buf, num);
42 return write (fd, buf, num);
46 tls_read(fd, buf, num)
51 return gnutls_record_recv (tls_session, buf, num);
52 return read (fd, buf, num);
58 return tls_session && gnutls_record_check_pending (tls_session);