src/ssl_internal.h
author Tero Marttila <terom@fixme.fi>
Wed, 27 May 2009 23:57:48 +0300
branchnew-lib-errors
changeset 217 7728d6ec3abf
parent 180 22967b165692
permissions -rw-r--r--
nexus.c compiles
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
     1
#ifndef SSL_INTERNAL_H
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
     2
#define SSL_INTERNAL_H
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
30
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
     4
/**
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
     5
 * @file
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
     6
 *
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
     7
 * A sock_stream implementation using GnuTLS for SSL
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
 */
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
     9
#include "ssl.h"
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    10
#include "tcp_internal.h"
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
#include <gnutls/gnutls.h>
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
30
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    14
/**
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    15
 * GnuTLS library error codes
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    16
 */
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    17
enum ssl_error_code {
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    18
    _ERR_SSL_BEGIN = _ERR_GNUTLS,
30
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    19
    
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    20
    ERR_GNUTLS_CERT_ALLOC_CRED,
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    21
    ERR_GNUTLS_GLOBAL_INIT,
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    22
    ERR_GNUTLS_INIT,
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    23
    ERR_GNUTLS_SET_DEFAULT_PRIORITY,
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    24
    ERR_GNUTLS_CRED_SET,
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    25
    ERR_GNUTLS_HANDSHAKE,
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    26
    ERR_GNUTLS_RECORD_SEND,
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    27
    ERR_GNUTLS_RECORD_RECV,
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    28
    ERR_GNUTLS_RECORD_GET_DIRECTION,   
140
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    29
    ERR_GNUTLS_CERT_VERIFY_PEERS2,
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    30
    ERR_GNUTLS_CERT_VERIFY,
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    31
    ERR_GNUTLS_CERT_SET_X509_TRUST_FILE,
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    32
    ERR_GNUTLS_CERT_SET_X509_KEY_FILE,
30
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    33
};
7f8dd120933f rework error to use a struct error_desc, and move ERR_SOCK/ERR_GNUTLS definitions to sock.h/sock_gnutls.h. error_desc definitions are still in error.c, though :(
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    34
85
75bc8b164ef8 async TCP connects,
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    35
/**
140
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    36
 * GnuTLS credentials for client sockets.
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
 */
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    38
struct ssl_client_cred {
85
75bc8b164ef8 async TCP connects,
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    39
    /** Our client certificate */
140
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    40
    gnutls_certificate_credentials_t x509;
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    41
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    42
    /** Should we verify? */
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    43
    bool verify;
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    44
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    45
    /** Refcount from ssl_client */
140
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    46
    int refcount;
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
};
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
85
75bc8b164ef8 async TCP connects,
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    49
/**
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    50
 * Global anonymous x509 credentials
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    51
 */
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    52
extern struct ssl_client_cred ssl_client_cred_anon;
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    53
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    54
/*
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    55
 * Our transport_type
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    56
 */
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    57
extern struct transport_type ssl_client_type;
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    58
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    59
/**
85
75bc8b164ef8 async TCP connects,
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    60
 * An SSL-encrypted TCP connection, using libgnutls
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
 */
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    62
struct ssl_client {
85
75bc8b164ef8 async TCP connects,
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    63
    /** The underlying TCP connection */
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    64
    struct tcp_client base_tcp;
140
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    65
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    66
    /** The hostname we connected to, for verification */
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    67
    char *hostname;
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    68
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    69
    /** The credentials we are using, unless anon */
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    70
    struct ssl_client_cred *cred;
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
    
85
75bc8b164ef8 async TCP connects,
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    72
    /** The GnuTLS session for this connection */
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
    gnutls_session_t session;
12
4147fae232d9 update sock_stream_read/write semantics for EOF/EAGAIN, tentative event-based gnutls code
Tero Marttila <terom@fixme.fi>
parents: 5
diff changeset
    74
140
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    75
    /** Should we verify the peer cert? */
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    76
    bool verify;
aa390e52eda8 implement ssl_cafile/verify/cert/pkey for x509 credentials
Tero Marttila <terom@fixme.fi>
parents: 139
diff changeset
    77
139
55b9dcc2b73a implement sock_ssl_connect_async (the old sock_ssl_connect exists no more)
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    78
    /** Are we running a handshake? */
55b9dcc2b73a implement sock_ssl_connect_async (the old sock_ssl_connect exists no more)
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    79
    bool handshake;
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
};
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
85
75bc8b164ef8 async TCP connects,
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    82
/**
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
 * Initialize the global gnutls state
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
 */
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    85
err_t ssl_global_init (error_t *err);
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
180
22967b165692 rename sock_ssl/sock_gnutls -> ssl/ssl_client
Tero Marttila <terom@fixme.fi>
parents: 155
diff changeset
    87
#endif /* SSL_INTERNAL_H */