1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
//! This library crate provides low-level bindings to the libtls API, provided
//! by OpenBSD's libressl. Read the [official documentation] for instructions on use.
//!
//! [official documentation]: http://man.openbsd.org/OpenBSD-current/man3/tls_init.3

// This file is released under the same terms as Rust iself.

// Parts of this file were generated using bindgen.sh, though it has been
// manually edited afterward.

#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]

pub extern crate libc;

pub enum Struct_tls { }
pub enum Struct_tls_config { }

pub const TLS_API: libc::c_int = 20141031;

pub const TLS_PROTOCOL_TLSv1_0: libc::uint32_t = 1 << 1;
pub const TLS_PROTOCOL_TLSv1_1: libc::uint32_t = 1 << 2;
pub const TLS_PROTOCOL_TLSv1_2: libc::uint32_t = 1 << 3;
pub const TLS_PROTOCOL_TLSv1: libc::uint32_t =
    TLS_PROTOCOL_TLSv1_0 | TLS_PROTOCOL_TLSv1_1 | TLS_PROTOCOL_TLSv1_1;
pub const TLS_PROTOCOLS_ALL: libc::uint32_t = TLS_PROTOCOL_TLSv1;
pub const TLS_PROTOCOLS_DEFAULT: libc::uint32_t = TLS_PROTOCOL_TLSv1_2;

pub const TLS_WANT_POLLIN: libc::c_int = -2;
pub const TLS_WANT_POLLOUT: libc::c_int = -3;

extern "C" {
    pub fn tls_init() -> libc::c_int;
    pub fn tls_error(_ctx: *mut Struct_tls) -> *const libc::c_char;
    pub fn tls_config_new() -> *mut Struct_tls_config;
    pub fn tls_config_free(_config: *mut Struct_tls_config);
    pub fn tls_config_set_ca_file(_config: *mut Struct_tls_config,
                                  _ca_file: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_config_set_ca_path(_config: *mut Struct_tls_config,
                                  _ca_path: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_config_set_ca_mem(_config: *mut Struct_tls_config,
                                 _ca: *const libc::uint8_t, _len: libc::size_t)
     -> libc::c_int;
    pub fn tls_config_set_cert_file(_config: *mut Struct_tls_config,
                                    _cert_file: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_config_set_cert_mem(_config: *mut Struct_tls_config,
                                   _cert: *const libc::uint8_t, _len: libc::size_t)
     -> libc::c_int;
    pub fn tls_config_set_ciphers(_config: *mut Struct_tls_config,
                                  _ciphers: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_config_set_dheparams(_config: *mut Struct_tls_config,
                                    _params: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_config_set_ecdhecurve(_config: *mut Struct_tls_config,
                                     _name: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_config_set_key_file(_config: *mut Struct_tls_config,
                                   _key_file: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_config_set_key_mem(_config: *mut Struct_tls_config,
                                  _key: *const libc::uint8_t, _len: libc::size_t)
     -> libc::c_int;
    pub fn tls_config_set_protocols(_config: *mut Struct_tls_config,
                                    _protocols: libc::uint32_t);
    pub fn tls_config_set_verify_depth(_config: *mut Struct_tls_config,
                                       _verify_depth: libc::c_int);
    pub fn tls_config_prefer_ciphers_client(_config: *mut Struct_tls_config);
    pub fn tls_config_prefer_ciphers_server(_config: *mut Struct_tls_config);
    pub fn tls_config_insecure_noverifycert(_config: *mut Struct_tls_config);
    pub fn tls_config_insecure_noverifyname(_config: *mut Struct_tls_config);
    pub fn tls_config_insecure_noverifytime(_config: *mut Struct_tls_config);
    pub fn tls_config_verify(_config: *mut Struct_tls_config);
    pub fn tls_config_verify_client(_config: *mut Struct_tls_config);
    pub fn tls_config_verify_client_optional(_config: *mut Struct_tls_config);
    pub fn tls_config_clear_keys(_config: *mut Struct_tls_config);
    pub fn tls_config_parse_protocols(_protocols: *mut libc::uint32_t,
                                      _protostr:
                                          *const libc::c_char)
     -> libc::c_int;
    pub fn tls_client() -> *mut Struct_tls;
    pub fn tls_server() -> *mut Struct_tls;
    pub fn tls_configure(_ctx: *mut Struct_tls,
                         _config: *mut Struct_tls_config)
     -> libc::c_int;
    pub fn tls_reset(_ctx: *mut Struct_tls);
    pub fn tls_free(_ctx: *mut Struct_tls);
    pub fn tls_accept_fds(_ctx: *mut Struct_tls, _cctx: *mut *mut Struct_tls,
                          _fd_read: libc::c_int,
                          _fd_write: libc::c_int)
     -> libc::c_int;
    pub fn tls_accept_socket(_ctx: *mut Struct_tls,
                             _cctx: *mut *mut Struct_tls,
                             _socket: libc::c_int)
     -> libc::c_int;
    pub fn tls_connect(_ctx: *mut Struct_tls,
                       _host: *const libc::c_char,
                       _port: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_connect_fds(_ctx: *mut Struct_tls,
                           _fd_read: libc::c_int,
                           _fd_write: libc::c_int,
                           _servername: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_connect_servername(_ctx: *mut Struct_tls,
                                  _host: *const libc::c_char,
                                  _port: *const libc::c_char,
                                  _servername: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_connect_socket(_ctx: *mut Struct_tls,
                              _s: libc::c_int,
                              _servername: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_handshake(_ctx: *mut Struct_tls) -> libc::c_int;
    pub fn tls_read(_ctx: *mut Struct_tls, _buf: *mut libc::c_void,
                    _buflen: libc::size_t) -> libc::ssize_t;
    pub fn tls_write(_ctx: *mut Struct_tls,
                     _buf: *const libc::c_void, _buflen: libc::size_t)
     -> libc::ssize_t;
    pub fn tls_close(_ctx: *mut Struct_tls) -> libc::c_int;
    pub fn tls_peer_cert_provided(ctx: *mut Struct_tls)
     -> libc::c_int;
    pub fn tls_peer_cert_contains_name(ctx: *mut Struct_tls,
                                       name: *const libc::c_char)
     -> libc::c_int;
    pub fn tls_peer_cert_hash(_ctx: *mut Struct_tls)
     -> *const libc::c_char;
    pub fn tls_peer_cert_issuer(ctx: *mut Struct_tls)
     -> *const libc::c_char;
    pub fn tls_peer_cert_subject(ctx: *mut Struct_tls)
     -> *const libc::c_char;
    pub fn tls_peer_cert_notbefore(ctx: *mut Struct_tls) -> libc::time_t;
    pub fn tls_peer_cert_notafter(ctx: *mut Struct_tls) -> libc::time_t;
    pub fn tls_conn_version(ctx: *mut Struct_tls)
     -> *const libc::c_char;
    pub fn tls_conn_cipher(ctx: *mut Struct_tls)
     -> *const libc::c_char;
    pub fn tls_load_file(_file: *const libc::c_char,
                         _len: *mut libc::size_t,
                         _password: *mut libc::c_char)
     -> *mut libc::uint8_t;
}