1 use libc::*;
2 use std::mem;
3 use std::ptr;
4 
5 use *;
6 
7 pub const TLS1_VERSION: c_int = 0x301;
8 pub const TLS1_1_VERSION: c_int = 0x302;
9 pub const TLS1_2_VERSION: c_int = 0x303;
10 #[cfg(ossl111)]
11 pub const TLS1_3_VERSION: c_int = 0x304;
12 
13 pub const TLS1_AD_DECODE_ERROR: c_int = 50;
14 pub const TLS1_AD_UNRECOGNIZED_NAME: c_int = 112;
15 
16 pub const TLSEXT_NAMETYPE_host_name: c_int = 0;
17 pub const TLSEXT_STATUSTYPE_ocsp: c_int = 1;
18 
19 extern "C" {
SSL_get_servername(ssl: *const SSL, name_type: c_int) -> *const c_char20     pub fn SSL_get_servername(ssl: *const SSL, name_type: c_int) -> *const c_char;
21 
SSL_export_keying_material( s: *mut SSL, out: *mut c_uchar, olen: size_t, label: *const c_char, llen: size_t, context: *const c_uchar, contextlen: size_t, use_context: c_int, ) -> c_int22     pub fn SSL_export_keying_material(
23         s: *mut SSL,
24         out: *mut c_uchar,
25         olen: size_t,
26         label: *const c_char,
27         llen: size_t,
28         context: *const c_uchar,
29         contextlen: size_t,
30         use_context: c_int,
31     ) -> c_int;
32 
33     #[cfg(ossl111)]
SSL_export_keying_material_early( s: *mut ::SSL, out: *mut c_uchar, olen: size_t, label: *const c_char, llen: size_t, context: *const c_uchar, contextlen: size_t, ) -> c_int34     pub fn SSL_export_keying_material_early(
35         s: *mut ::SSL,
36         out: *mut c_uchar,
37         olen: size_t,
38         label: *const c_char,
39         llen: size_t,
40         context: *const c_uchar,
41         contextlen: size_t,
42     ) -> c_int;
43 }
44 
SSL_set_tlsext_host_name(s: *mut SSL, name: *mut c_char) -> c_long45 pub unsafe fn SSL_set_tlsext_host_name(s: *mut SSL, name: *mut c_char) -> c_long {
46     SSL_ctrl(
47         s,
48         SSL_CTRL_SET_TLSEXT_HOSTNAME,
49         TLSEXT_NAMETYPE_host_name as c_long,
50         name as *mut c_void,
51     )
52 }
53 
SSL_set_tlsext_status_type(s: *mut SSL, type_: c_int) -> c_long54 pub unsafe fn SSL_set_tlsext_status_type(s: *mut SSL, type_: c_int) -> c_long {
55     SSL_ctrl(
56         s,
57         SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,
58         type_ as c_long,
59         ptr::null_mut(),
60     )
61 }
62 
SSL_get_tlsext_status_ocsp_resp(ssl: *mut SSL, resp: *mut *mut c_uchar) -> c_long63 pub unsafe fn SSL_get_tlsext_status_ocsp_resp(ssl: *mut SSL, resp: *mut *mut c_uchar) -> c_long {
64     SSL_ctrl(
65         ssl,
66         SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,
67         0,
68         resp as *mut c_void,
69     )
70 }
71 
SSL_set_tlsext_status_ocsp_resp( ssl: *mut SSL, resp: *mut c_uchar, len: c_long, ) -> c_long72 pub unsafe fn SSL_set_tlsext_status_ocsp_resp(
73     ssl: *mut SSL,
74     resp: *mut c_uchar,
75     len: c_long,
76 ) -> c_long {
77     SSL_ctrl(
78         ssl,
79         SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,
80         len,
81         resp as *mut c_void,
82     )
83 }
84 
SSL_CTX_set_tlsext_servername_callback( ctx: *mut SSL_CTX, cb: Option<extern "C" fn()>, ) -> c_long85 pub unsafe fn SSL_CTX_set_tlsext_servername_callback(
86     ctx: *mut SSL_CTX,
87     // FIXME should have the right signature
88     cb: Option<extern "C" fn()>,
89 ) -> c_long {
90     SSL_CTX_callback_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_CB, cb)
91 }
92 
93 pub const SSL_TLSEXT_ERR_OK: c_int = 0;
94 pub const SSL_TLSEXT_ERR_ALERT_WARNING: c_int = 1;
95 pub const SSL_TLSEXT_ERR_ALERT_FATAL: c_int = 2;
96 pub const SSL_TLSEXT_ERR_NOACK: c_int = 3;
97 
SSL_CTX_set_tlsext_servername_arg(ctx: *mut SSL_CTX, arg: *mut c_void) -> c_long98 pub unsafe fn SSL_CTX_set_tlsext_servername_arg(ctx: *mut SSL_CTX, arg: *mut c_void) -> c_long {
99     SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG, 0, arg)
100 }
101 
SSL_CTX_set_tlsext_status_cb( ctx: *mut SSL_CTX, cb: Option<unsafe extern "C" fn(*mut SSL, *mut c_void) -> c_int>, ) -> c_long102 pub unsafe fn SSL_CTX_set_tlsext_status_cb(
103     ctx: *mut SSL_CTX,
104     cb: Option<unsafe extern "C" fn(*mut SSL, *mut c_void) -> c_int>,
105 ) -> c_long {
106     SSL_CTX_callback_ctrl(ctx, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB, mem::transmute(cb))
107 }
108 
SSL_CTX_set_tlsext_status_arg(ctx: *mut SSL_CTX, arg: *mut c_void) -> c_long109 pub unsafe fn SSL_CTX_set_tlsext_status_arg(ctx: *mut SSL_CTX, arg: *mut c_void) -> c_long {
110     SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG, 0, arg)
111 }
112