src/sock_gnutls.h
author Tero Marttila <terom@fixme.fi>
Sun, 22 Feb 2009 05:27:29 +0200
changeset 2 a834f0559939
child 3 cc94ae754e2a
permissions -rw-r--r--
working SSL using gnutls - a bit of a painful process
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#ifndef SOCK_GNUTLS_H
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#define SOCK_GNUTLS_H
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
/*
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
 * A sock_stream implementation using GnuTLS
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
 */
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
#include "sock_internal.h"
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
#include "sock_tcp.h"
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
#include <gnutls/gnutls.h>
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
/*
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
 * Additional gnutls configuration for client sockets.
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
 *
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
 * XXX: currently, we just have one global instance, set up by sock_gnutls_init, used for all sockets
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
 */
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
struct sock_gnutls_client_ctx {
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    gnutls_certificate_credentials_t xcred;
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
};
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
/*
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
 * Per-sock state, this includes the sock_tcp connection
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
 */
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
struct sock_gnutls {
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
    /* SSL connections use TCP connections */
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    struct sock_tcp base_tcp;
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
    /* Additional SSL info XXX: do we need to keep a ref to this? */
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
    struct sock_gnutls_ctx *ctx;
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
    /* The GnuTLS session for this connection */
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
    gnutls_session_t session;
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
};
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
#define SOCK_GNUTLS_BASE(sock_ptr) (&(sock_ptr)->base_tcp.base)
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
#define SOCK_GNUTLS_TCP(sock_ptr) (&(sock_ptr)->base_tcp)
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
/*
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
 * Initialize the global gnutls state
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
 */
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
void sock_gnutls_init (void);
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
#endif /* SOCK_GNUTLS_H */