1 use super::super::*; 2 use libc::*; 3 4 pub enum SSL_METHOD {} 5 pub enum SSL_CIPHER {} 6 cfg_if! { 7 if #[cfg(any(ossl110, libressl280))] { 8 pub enum SSL_SESSION {} 9 } else if #[cfg(libressl251)] { 10 #[repr(C)] 11 pub struct SSL_SESSION { 12 ssl_version: c_int, 13 pub master_key_length: c_int, 14 pub master_key: [c_uchar; 48], 15 session_id_length: c_uint, 16 session_id: [c_uchar; SSL_MAX_SSL_SESSION_ID_LENGTH as usize], 17 sid_ctx_length: c_uint, 18 sid_ctx: [c_uchar; SSL_MAX_SID_CTX_LENGTH as usize], 19 peer: *mut X509, 20 verify_result: c_long, 21 timeout: c_long, 22 time: time_t, 23 pub references: c_int, 24 cipher: *const SSL_CIPHER, 25 cipher_id: c_long, 26 ciphers: *mut stack_st_SSL_CIPHER, 27 tlsext_hostname: *mut c_char, 28 tlsext_tick: *mut c_uchar, 29 tlsext_ticklen: size_t, 30 tlsext_tick_lifetime_int: c_long, 31 internal: *mut c_void, 32 } 33 } else if #[cfg(libressl)] { 34 #[repr(C)] 35 pub struct SSL_SESSION { 36 ssl_version: c_int, 37 pub master_key_length: c_int, 38 pub master_key: [c_uchar; 48], 39 session_id_length: c_uint, 40 session_id: [c_uchar; SSL_MAX_SSL_SESSION_ID_LENGTH as usize], 41 sid_ctx_length: c_uint, 42 sid_ctx: [c_uchar; SSL_MAX_SID_CTX_LENGTH as usize], 43 not_resumable: c_int, 44 sess_cert: *mut c_void, 45 peer: *mut X509, 46 verify_result: c_long, 47 timeout: c_long, 48 time: time_t, 49 pub references: c_int, 50 cipher: *const c_void, 51 cipher_id: c_ulong, 52 ciphers: *mut c_void, 53 ex_data: CRYPTO_EX_DATA, 54 prev: *mut c_void, 55 next: *mut c_void, 56 tlsext_hostname: *mut c_char, 57 tlsext_ecpointformatlist_length: size_t, 58 tlsext_ecpointformatlist: *mut u8, 59 tlsext_ellipticcurvelist_length: size_t, 60 tlsext_ellipticcurvelist: *mut u16, 61 tlsext_tick: *mut c_uchar, 62 tlsext_ticklen: size_t, 63 tlsext_tick_lifetime_hint: c_long, 64 } 65 } else { 66 #[repr(C)] 67 pub struct SSL_SESSION { 68 ssl_version: c_int, 69 key_arg_length: c_uint, 70 key_arg: [c_uchar; SSL_MAX_KEY_ARG_LENGTH as usize], 71 pub master_key_length: c_int, 72 pub master_key: [c_uchar; 48], 73 session_id_length: c_uint, 74 session_id: [c_uchar; SSL_MAX_SSL_SESSION_ID_LENGTH as usize], 75 sid_ctx_length: c_uint, 76 sid_ctx: [c_uchar; SSL_MAX_SID_CTX_LENGTH as usize], 77 #[cfg(not(osslconf = "OPENSSL_NO_KRB5"))] 78 krb5_client_princ_len: c_uint, 79 #[cfg(not(osslconf = "OPENSSL_NO_KRB5"))] 80 krb5_client_princ: [c_uchar; SSL_MAX_KRB5_PRINCIPAL_LENGTH as usize], 81 #[cfg(not(osslconf = "OPENSSL_NO_PSK"))] 82 psk_identity_hint: *mut c_char, 83 #[cfg(not(osslconf = "OPENSSL_NO_PSK"))] 84 psk_identity: *mut c_char, 85 not_resumable: c_int, 86 sess_cert: *mut c_void, 87 peer: *mut X509, 88 verify_result: c_long, 89 pub references: c_int, 90 timeout: c_long, 91 time: c_long, 92 compress_meth: c_uint, 93 cipher: *const c_void, 94 cipher_id: c_ulong, 95 ciphers: *mut c_void, 96 ex_data: CRYPTO_EX_DATA, 97 prev: *mut c_void, 98 next: *mut c_void, 99 #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))] 100 tlsext_hostname: *mut c_char, 101 #[cfg(all( 102 not(osslconf = "OPENSSL_NO_TLSEXT"), 103 not(osslconf = "OPENSSL_NO_EC") 104 ))] 105 tlsext_ecpointformatlist_length: size_t, 106 #[cfg(all( 107 not(osslconf = "OPENSSL_NO_TLSEXT"), 108 not(osslconf = "OPENSSL_NO_EC") 109 ))] 110 tlsext_ecpointformatlist: *mut c_uchar, 111 #[cfg(all( 112 not(osslconf = "OPENSSL_NO_TLSEXT"), 113 not(osslconf = "OPENSSL_NO_EC") 114 ))] 115 tlsext_ellipticcurvelist_length: size_t, 116 #[cfg(all( 117 not(osslconf = "OPENSSL_NO_TLSEXT"), 118 not(osslconf = "OPENSSL_NO_EC") 119 ))] 120 tlsext_ellipticcurvelist: *mut c_uchar, 121 #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))] 122 tlsext_tick: *mut c_uchar, 123 #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))] 124 tlsext_ticklen: size_t, 125 #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))] 126 tlsext_tick_lifetime_hint: c_long, 127 #[cfg(not(osslconf = "OPENSSL_NO_SRP"))] 128 srp_username: *mut c_char, 129 } 130 } 131 } 132 133 stack!(stack_st_SSL_CIPHER); 134 135 #[repr(C)] 136 pub struct SRTP_PROTECTION_PROFILE { 137 pub name: *const c_char, 138 pub id: c_ulong, 139 } 140 141 stack!(stack_st_SRTP_PROTECTION_PROFILE); 142 143 pub type tls_session_ticket_ext_cb_fn = 144 Option<unsafe extern "C" fn(*mut SSL, *const c_uchar, c_int, *mut c_void) -> c_int>; 145 pub type tls_session_secret_cb_fn = Option< 146 unsafe extern "C" fn( 147 *mut SSL, 148 *mut c_void, 149 *mut c_int, 150 *mut stack_st_SSL_CIPHER, 151 *mut *mut SSL_CIPHER, 152 *mut c_void, 153 ) -> c_int, 154 >; 155 156 #[cfg(ossl111)] 157 pub type SSL_custom_ext_add_cb_ex = Option< 158 unsafe extern "C" fn( 159 ssl: *mut SSL, 160 ext_type: c_uint, 161 context: c_uint, 162 out: *mut *const c_uchar, 163 outlen: *mut size_t, 164 x: *mut X509, 165 chainidx: size_t, 166 al: *mut c_int, 167 add_arg: *mut c_void, 168 ) -> c_int, 169 >; 170 171 #[cfg(ossl111)] 172 pub type SSL_custom_ext_free_cb_ex = Option< 173 unsafe extern "C" fn( 174 ssl: *mut SSL, 175 ext_type: c_uint, 176 context: c_uint, 177 out: *const c_uchar, 178 add_arg: *mut c_void, 179 ), 180 >; 181 182 #[cfg(ossl111)] 183 pub type SSL_custom_ext_parse_cb_ex = Option< 184 unsafe extern "C" fn( 185 ssl: *mut SSL, 186 ext_type: c_uint, 187 context: c_uint, 188 input: *const c_uchar, 189 inlen: size_t, 190 x: *mut X509, 191 chainidx: size_t, 192 al: *mut c_int, 193 parse_arg: *mut c_void, 194 ) -> c_int, 195 >; 196 197 cfg_if! { 198 if #[cfg(ossl300)] { 199 extern "C" { 200 pub fn SSL_CTX_get_options(ctx: *const SSL_CTX) -> u64; 201 pub fn SSL_CTX_set_options(ctx: *mut SSL_CTX, op: u64) -> u64; 202 pub fn SSL_CTX_clear_options(ctx: *mut SSL_CTX, op: u64) -> u64; 203 } 204 } else if #[cfg(ossl110)] { 205 extern "C" { 206 pub fn SSL_CTX_get_options(ctx: *const SSL_CTX) -> c_ulong; 207 pub fn SSL_CTX_set_options(ctx: *mut SSL_CTX, op: c_ulong) -> c_ulong; 208 pub fn SSL_CTX_clear_options(ctx: *mut SSL_CTX, op: c_ulong) -> c_ulong; 209 } 210 } 211 } 212 213 pub type GEN_SESSION_CB = 214 Option<unsafe extern "C" fn(*const SSL, *mut c_uchar, *mut c_uint) -> c_int>; 215 216 extern "C" { SSL_CTX_sess_set_new_cb( ctx: *mut SSL_CTX, new_session_cb: Option<unsafe extern "C" fn(*mut SSL, *mut SSL_SESSION) -> c_int>, )217 pub fn SSL_CTX_sess_set_new_cb( 218 ctx: *mut SSL_CTX, 219 new_session_cb: Option<unsafe extern "C" fn(*mut SSL, *mut SSL_SESSION) -> c_int>, 220 ); SSL_CTX_sess_set_remove_cb( ctx: *mut SSL_CTX, remove_session_cb: Option<unsafe extern "C" fn(*mut SSL_CTX, *mut SSL_SESSION)>, )221 pub fn SSL_CTX_sess_set_remove_cb( 222 ctx: *mut SSL_CTX, 223 remove_session_cb: Option<unsafe extern "C" fn(*mut SSL_CTX, *mut SSL_SESSION)>, 224 ); 225 } 226 cfg_if! { 227 // const change in passed function pointer signature 228 if #[cfg(any(ossl110, libressl280))] { 229 extern "C" { 230 pub fn SSL_CTX_sess_set_get_cb( 231 ctx: *mut SSL_CTX, 232 get_session_cb: Option< 233 unsafe extern "C" fn(*mut SSL, *const c_uchar, c_int, *mut c_int) -> *mut SSL_SESSION, 234 >, 235 ); 236 } 237 } else { 238 extern "C" { 239 pub fn SSL_CTX_sess_set_get_cb( 240 ctx: *mut SSL_CTX, 241 get_session_cb: Option< 242 unsafe extern "C" fn(*mut SSL, *mut c_uchar, c_int, *mut c_int) -> *mut SSL_SESSION, 243 >, 244 ); 245 } 246 } 247 } 248 extern "C" { 249 // FIXME change to unsafe extern "C" fn SSL_CTX_set_cookie_generate_cb( s: *mut SSL_CTX, cb: Option< extern "C" fn(ssl: *mut SSL, cookie: *mut c_uchar, cookie_len: *mut c_uint) -> c_int, >, )250 pub fn SSL_CTX_set_cookie_generate_cb( 251 s: *mut SSL_CTX, 252 cb: Option< 253 extern "C" fn(ssl: *mut SSL, cookie: *mut c_uchar, cookie_len: *mut c_uint) -> c_int, 254 >, 255 ); 256 } 257 258 cfg_if! { 259 // const change in passed function pointer signature 260 if #[cfg(any(ossl110, libressl280))] { 261 extern "C" { 262 pub fn SSL_CTX_set_cookie_verify_cb( 263 s: *mut SSL_CTX, 264 cb: Option< 265 extern "C" fn(ssl: *mut SSL, cookie: *const c_uchar, cookie_len: c_uint) -> c_int, 266 >, 267 ); 268 } 269 } else { 270 extern "C" { 271 pub fn SSL_CTX_set_cookie_verify_cb( 272 s: *mut SSL_CTX, 273 cb: Option<extern "C" fn(ssl: *mut SSL, cookie: *mut c_uchar, cookie_len: c_uint) -> c_int>, 274 ); 275 } 276 } 277 } 278 279 extern "C" { 280 #[cfg(ossl111)] SSL_CTX_set_stateless_cookie_generate_cb( s: *mut SSL_CTX, cb: Option< unsafe extern "C" fn( ssl: *mut SSL, cookie: *mut c_uchar, cookie_len: *mut size_t, ) -> c_int, >, )281 pub fn SSL_CTX_set_stateless_cookie_generate_cb( 282 s: *mut SSL_CTX, 283 cb: Option< 284 unsafe extern "C" fn( 285 ssl: *mut SSL, 286 cookie: *mut c_uchar, 287 cookie_len: *mut size_t, 288 ) -> c_int, 289 >, 290 ); 291 #[cfg(ossl111)] SSL_CTX_set_stateless_cookie_verify_cb( s: *mut SSL_CTX, cb: Option< unsafe extern "C" fn( ssl: *mut SSL, cookie: *const c_uchar, cookie_len: size_t, ) -> c_int, >, )292 pub fn SSL_CTX_set_stateless_cookie_verify_cb( 293 s: *mut SSL_CTX, 294 cb: Option< 295 unsafe extern "C" fn( 296 ssl: *mut SSL, 297 cookie: *const c_uchar, 298 cookie_len: size_t, 299 ) -> c_int, 300 >, 301 ); 302 SSL_CTX_set_next_protos_advertised_cb( ssl: *mut SSL_CTX, cb: extern "C" fn( ssl: *mut SSL, out: *mut *const c_uchar, outlen: *mut c_uint, arg: *mut c_void, ) -> c_int, arg: *mut c_void, )303 pub fn SSL_CTX_set_next_protos_advertised_cb( 304 ssl: *mut SSL_CTX, 305 cb: extern "C" fn( 306 ssl: *mut SSL, 307 out: *mut *const c_uchar, 308 outlen: *mut c_uint, 309 arg: *mut c_void, 310 ) -> c_int, 311 arg: *mut c_void, 312 ); SSL_CTX_set_next_proto_select_cb( ssl: *mut SSL_CTX, cb: extern "C" fn( ssl: *mut SSL, out: *mut *mut c_uchar, outlen: *mut c_uchar, inbuf: *const c_uchar, inlen: c_uint, arg: *mut c_void, ) -> c_int, arg: *mut c_void, )313 pub fn SSL_CTX_set_next_proto_select_cb( 314 ssl: *mut SSL_CTX, 315 cb: extern "C" fn( 316 ssl: *mut SSL, 317 out: *mut *mut c_uchar, 318 outlen: *mut c_uchar, 319 inbuf: *const c_uchar, 320 inlen: c_uint, 321 arg: *mut c_void, 322 ) -> c_int, 323 arg: *mut c_void, 324 ); SSL_get0_next_proto_negotiated( s: *const SSL, data: *mut *const c_uchar, len: *mut c_uint, )325 pub fn SSL_get0_next_proto_negotiated( 326 s: *const SSL, 327 data: *mut *const c_uchar, 328 len: *mut c_uint, 329 ); 330 SSL_select_next_proto( out: *mut *mut c_uchar, outlen: *mut c_uchar, inbuf: *const c_uchar, inlen: c_uint, client: *const c_uchar, client_len: c_uint, ) -> c_int331 pub fn SSL_select_next_proto( 332 out: *mut *mut c_uchar, 333 outlen: *mut c_uchar, 334 inbuf: *const c_uchar, 335 inlen: c_uint, 336 client: *const c_uchar, 337 client_len: c_uint, 338 ) -> c_int; 339 } 340 341 extern "C" { 342 #[cfg(any(ossl102, libressl261))] SSL_CTX_set_alpn_protos(s: *mut SSL_CTX, data: *const c_uchar, len: c_uint) -> c_int343 pub fn SSL_CTX_set_alpn_protos(s: *mut SSL_CTX, data: *const c_uchar, len: c_uint) -> c_int; 344 #[cfg(any(ossl102, libressl261))] SSL_set_alpn_protos(s: *mut SSL, data: *const c_uchar, len: c_uint) -> c_int345 pub fn SSL_set_alpn_protos(s: *mut SSL, data: *const c_uchar, len: c_uint) -> c_int; 346 #[cfg(any(ossl102, libressl261))] 347 #[link_name = "SSL_CTX_set_alpn_select_cb"] SSL_CTX_set_alpn_select_cb__fixed_rust( ssl: *mut SSL_CTX, cb: Option< unsafe extern "C" fn( ssl: *mut SSL, out: *mut *const c_uchar, outlen: *mut c_uchar, inbuf: *const c_uchar, inlen: c_uint, arg: *mut c_void, ) -> c_int, >, arg: *mut c_void, )348 pub fn SSL_CTX_set_alpn_select_cb__fixed_rust( 349 ssl: *mut SSL_CTX, 350 cb: Option< 351 unsafe extern "C" fn( 352 ssl: *mut SSL, 353 out: *mut *const c_uchar, 354 outlen: *mut c_uchar, 355 inbuf: *const c_uchar, 356 inlen: c_uint, 357 arg: *mut c_void, 358 ) -> c_int, 359 >, 360 arg: *mut c_void, 361 ); 362 #[cfg(any(ossl102, libressl261))] SSL_get0_alpn_selected(s: *const SSL, data: *mut *const c_uchar, len: *mut c_uint)363 pub fn SSL_get0_alpn_selected(s: *const SSL, data: *mut *const c_uchar, len: *mut c_uint); 364 } 365 366 #[cfg(not(osslconf = "OPENSSL_NO_PSK"))] 367 extern "C" { SSL_CTX_set_psk_client_callback( ssl: *mut SSL_CTX, psk_client_cb: Option< extern "C" fn( *mut SSL, *const c_char, *mut c_char, c_uint, *mut c_uchar, c_uint, ) -> c_uint, >, )368 pub fn SSL_CTX_set_psk_client_callback( 369 ssl: *mut SSL_CTX, 370 psk_client_cb: Option< 371 extern "C" fn( 372 *mut SSL, 373 *const c_char, 374 *mut c_char, 375 c_uint, 376 *mut c_uchar, 377 c_uint, 378 ) -> c_uint, 379 >, 380 ); SSL_CTX_set_psk_server_callback( ssl: *mut SSL_CTX, psk_server_cb: Option< extern "C" fn(*mut SSL, *const c_char, *mut c_uchar, c_uint) -> c_uint, >, )381 pub fn SSL_CTX_set_psk_server_callback( 382 ssl: *mut SSL_CTX, 383 psk_server_cb: Option< 384 extern "C" fn(*mut SSL, *const c_char, *mut c_uchar, c_uint) -> c_uint, 385 >, 386 ); SSL_get_psk_identity_hint(ssl: *const SSL) -> *const c_char387 pub fn SSL_get_psk_identity_hint(ssl: *const SSL) -> *const c_char; SSL_get_psk_identity(ssl: *const SSL) -> *const c_char388 pub fn SSL_get_psk_identity(ssl: *const SSL) -> *const c_char; 389 } 390 391 extern "C" { 392 #[cfg(ossl111)] SSL_CTX_add_custom_ext( ctx: *mut SSL_CTX, ext_type: c_uint, context: c_uint, add_cb: SSL_custom_ext_add_cb_ex, free_cb: SSL_custom_ext_free_cb_ex, add_arg: *mut c_void, parse_cb: SSL_custom_ext_parse_cb_ex, parse_arg: *mut c_void, ) -> c_int393 pub fn SSL_CTX_add_custom_ext( 394 ctx: *mut SSL_CTX, 395 ext_type: c_uint, 396 context: c_uint, 397 add_cb: SSL_custom_ext_add_cb_ex, 398 free_cb: SSL_custom_ext_free_cb_ex, 399 add_arg: *mut c_void, 400 parse_cb: SSL_custom_ext_parse_cb_ex, 401 parse_arg: *mut c_void, 402 ) -> c_int; 403 404 #[cfg(ossl102)] SSL_extension_supported(ext_type: c_uint) -> c_int405 pub fn SSL_extension_supported(ext_type: c_uint) -> c_int; 406 } 407 408 #[cfg(ossl111)] 409 pub type SSL_CTX_keylog_cb_func = 410 Option<unsafe extern "C" fn(ssl: *const SSL, line: *const c_char)>; 411 412 extern "C" { 413 #[cfg(ossl111)] SSL_CTX_set_keylog_callback(ctx: *mut SSL_CTX, cb: SSL_CTX_keylog_cb_func)414 pub fn SSL_CTX_set_keylog_callback(ctx: *mut SSL_CTX, cb: SSL_CTX_keylog_cb_func); 415 416 #[cfg(any(ossl111, libressl340))] SSL_CTX_set_max_early_data(ctx: *mut SSL_CTX, max_early_data: u32) -> c_int417 pub fn SSL_CTX_set_max_early_data(ctx: *mut SSL_CTX, max_early_data: u32) -> c_int; 418 #[cfg(any(ossl111, libressl340))] SSL_CTX_get_max_early_data(ctx: *const SSL_CTX) -> u32419 pub fn SSL_CTX_get_max_early_data(ctx: *const SSL_CTX) -> u32; 420 #[cfg(any(ossl111, libressl340))] SSL_set_max_early_data(ctx: *mut SSL, max_early_data: u32) -> c_int421 pub fn SSL_set_max_early_data(ctx: *mut SSL, max_early_data: u32) -> c_int; 422 #[cfg(any(ossl111, libressl340))] SSL_get_max_early_data(ctx: *const SSL) -> u32423 pub fn SSL_get_max_early_data(ctx: *const SSL) -> u32; 424 SSL_get_finished(s: *const SSL, buf: *mut c_void, count: size_t) -> size_t425 pub fn SSL_get_finished(s: *const SSL, buf: *mut c_void, count: size_t) -> size_t; SSL_get_peer_finished(s: *const SSL, buf: *mut c_void, count: size_t) -> size_t426 pub fn SSL_get_peer_finished(s: *const SSL, buf: *mut c_void, count: size_t) -> size_t; 427 SSL_CTX_get_verify_mode(ctx: *const SSL_CTX) -> c_int428 pub fn SSL_CTX_get_verify_mode(ctx: *const SSL_CTX) -> c_int; SSL_get_verify_mode(s: *const SSL) -> c_int429 pub fn SSL_get_verify_mode(s: *const SSL) -> c_int; 430 } 431 432 const_ptr_api! { 433 extern "C" { 434 #[cfg(ossl110)] 435 pub fn SSL_is_init_finished(s: #[const_ptr_if(ossl111)] SSL) -> c_int; 436 } 437 } 438 439 cfg_if! { 440 if #[cfg(libressl261)] { 441 extern "C" { 442 pub fn SSL_CTX_set_min_proto_version(ctx: *mut SSL_CTX, version: u16) -> c_int; 443 pub fn SSL_CTX_set_max_proto_version(ctx: *mut SSL_CTX, version: u16) -> c_int; 444 pub fn SSL_set_min_proto_version(s: *mut SSL, version: u16) -> c_int; 445 pub fn SSL_set_max_proto_version(s: *mut SSL, version: u16) -> c_int; 446 } 447 } 448 } 449 450 cfg_if! { 451 if #[cfg(libressl270)] { 452 extern "C" { 453 pub fn SSL_CTX_get_min_proto_version(ctx: *mut SSL_CTX) -> c_int; 454 pub fn SSL_CTX_get_max_proto_version(ctx: *mut SSL_CTX) -> c_int; 455 pub fn SSL_get_min_proto_version(s: *mut SSL) -> c_int; 456 pub fn SSL_get_max_proto_version(s: *mut SSL) -> c_int; 457 } 458 } 459 } 460 461 extern "C" { SSL_CTX_set_cipher_list(ssl: *mut SSL_CTX, s: *const c_char) -> c_int462 pub fn SSL_CTX_set_cipher_list(ssl: *mut SSL_CTX, s: *const c_char) -> c_int; SSL_CTX_new(method: *const SSL_METHOD) -> *mut SSL_CTX463 pub fn SSL_CTX_new(method: *const SSL_METHOD) -> *mut SSL_CTX; SSL_CTX_free(ctx: *mut SSL_CTX)464 pub fn SSL_CTX_free(ctx: *mut SSL_CTX); 465 #[cfg(any(ossl110, libressl273))] SSL_CTX_up_ref(x: *mut SSL_CTX) -> c_int466 pub fn SSL_CTX_up_ref(x: *mut SSL_CTX) -> c_int; SSL_CTX_get_cert_store(ctx: *const SSL_CTX) -> *mut X509_STORE467 pub fn SSL_CTX_get_cert_store(ctx: *const SSL_CTX) -> *mut X509_STORE; SSL_CTX_set_cert_store(ctx: *mut SSL_CTX, store: *mut X509_STORE)468 pub fn SSL_CTX_set_cert_store(ctx: *mut SSL_CTX, store: *mut X509_STORE); 469 SSL_get_current_cipher(ssl: *const SSL) -> *const SSL_CIPHER470 pub fn SSL_get_current_cipher(ssl: *const SSL) -> *const SSL_CIPHER; SSL_CIPHER_get_bits(cipher: *const SSL_CIPHER, alg_bits: *mut c_int) -> c_int471 pub fn SSL_CIPHER_get_bits(cipher: *const SSL_CIPHER, alg_bits: *mut c_int) -> c_int; 472 } 473 const_ptr_api! { 474 extern "C" { 475 pub fn SSL_CIPHER_get_version(cipher: *const SSL_CIPHER) -> #[const_ptr_if(any(ossl110, libressl280))] c_char; 476 } 477 } 478 extern "C" { 479 #[cfg(ossl111)] SSL_CIPHER_get_handshake_digest(cipher: *const SSL_CIPHER) -> *const EVP_MD480 pub fn SSL_CIPHER_get_handshake_digest(cipher: *const SSL_CIPHER) -> *const EVP_MD; SSL_CIPHER_get_name(cipher: *const SSL_CIPHER) -> *const c_char481 pub fn SSL_CIPHER_get_name(cipher: *const SSL_CIPHER) -> *const c_char; 482 #[cfg(ossl111)] SSL_CIPHER_standard_name(cipher: *const SSL_CIPHER) -> *const c_char483 pub fn SSL_CIPHER_standard_name(cipher: *const SSL_CIPHER) -> *const c_char; 484 #[cfg(ossl111)] OPENSSL_cipher_name(rfc_name: *const c_char) -> *const c_char485 pub fn OPENSSL_cipher_name(rfc_name: *const c_char) -> *const c_char; 486 SSL_pending(ssl: *const SSL) -> c_int487 pub fn SSL_pending(ssl: *const SSL) -> c_int; SSL_set_bio(ssl: *mut SSL, rbio: *mut BIO, wbio: *mut BIO)488 pub fn SSL_set_bio(ssl: *mut SSL, rbio: *mut BIO, wbio: *mut BIO); SSL_get_rbio(ssl: *const SSL) -> *mut BIO489 pub fn SSL_get_rbio(ssl: *const SSL) -> *mut BIO; SSL_get_wbio(ssl: *const SSL) -> *mut BIO490 pub fn SSL_get_wbio(ssl: *const SSL) -> *mut BIO; 491 #[cfg(any(ossl111, libressl340))] SSL_CTX_set_ciphersuites(ctx: *mut SSL_CTX, str: *const c_char) -> c_int492 pub fn SSL_CTX_set_ciphersuites(ctx: *mut SSL_CTX, str: *const c_char) -> c_int; 493 #[cfg(any(ossl111, libressl340))] SSL_set_ciphersuites(ssl: *mut SSL, str: *const c_char) -> c_int494 pub fn SSL_set_ciphersuites(ssl: *mut SSL, str: *const c_char) -> c_int; SSL_set_cipher_list(ssl: *mut SSL, s: *const c_char) -> c_int495 pub fn SSL_set_cipher_list(ssl: *mut SSL, s: *const c_char) -> c_int; SSL_set_ssl_method(s: *mut SSL, method: *const SSL_METHOD) -> c_int496 pub fn SSL_set_ssl_method(s: *mut SSL, method: *const SSL_METHOD) -> c_int; SSL_set_verify( ssl: *mut SSL, mode: c_int, verify_callback: Option<extern "C" fn(c_int, *mut X509_STORE_CTX) -> c_int>, )497 pub fn SSL_set_verify( 498 ssl: *mut SSL, 499 mode: c_int, 500 // FIXME should be unsafe 501 verify_callback: Option<extern "C" fn(c_int, *mut X509_STORE_CTX) -> c_int>, 502 ); SSL_CTX_use_PrivateKey(ctx: *mut SSL_CTX, key: *mut EVP_PKEY) -> c_int503 pub fn SSL_CTX_use_PrivateKey(ctx: *mut SSL_CTX, key: *mut EVP_PKEY) -> c_int; SSL_CTX_use_certificate(ctx: *mut SSL_CTX, cert: *mut X509) -> c_int504 pub fn SSL_CTX_use_certificate(ctx: *mut SSL_CTX, cert: *mut X509) -> c_int; 505 SSL_CTX_use_PrivateKey_file( ctx: *mut SSL_CTX, key_file: *const c_char, file_type: c_int, ) -> c_int506 pub fn SSL_CTX_use_PrivateKey_file( 507 ctx: *mut SSL_CTX, 508 key_file: *const c_char, 509 file_type: c_int, 510 ) -> c_int; SSL_CTX_use_certificate_file( ctx: *mut SSL_CTX, cert_file: *const c_char, file_type: c_int, ) -> c_int511 pub fn SSL_CTX_use_certificate_file( 512 ctx: *mut SSL_CTX, 513 cert_file: *const c_char, 514 file_type: c_int, 515 ) -> c_int; SSL_CTX_use_certificate_chain_file( ctx: *mut SSL_CTX, cert_chain_file: *const c_char, ) -> c_int516 pub fn SSL_CTX_use_certificate_chain_file( 517 ctx: *mut SSL_CTX, 518 cert_chain_file: *const c_char, 519 ) -> c_int; SSL_use_PrivateKey_file(ssl: *mut SSL, file: *const c_char, type_: c_int) -> c_int520 pub fn SSL_use_PrivateKey_file(ssl: *mut SSL, file: *const c_char, type_: c_int) -> c_int; SSL_use_PrivateKey(ssl: *mut SSL, pkey: *mut EVP_PKEY) -> c_int521 pub fn SSL_use_PrivateKey(ssl: *mut SSL, pkey: *mut EVP_PKEY) -> c_int; SSL_use_certificate(ssl: *mut SSL, x: *mut X509) -> c_int522 pub fn SSL_use_certificate(ssl: *mut SSL, x: *mut X509) -> c_int; 523 #[cfg(any(ossl110, libressl332))] SSL_use_certificate_chain_file(ssl: *mut SSL, file: *const c_char) -> c_int524 pub fn SSL_use_certificate_chain_file(ssl: *mut SSL, file: *const c_char) -> c_int; SSL_set_client_CA_list(s: *mut SSL, name_list: *mut stack_st_X509_NAME)525 pub fn SSL_set_client_CA_list(s: *mut SSL, name_list: *mut stack_st_X509_NAME); SSL_add_client_CA(ssl: *mut SSL, x: *mut X509) -> c_int526 pub fn SSL_add_client_CA(ssl: *mut SSL, x: *mut X509) -> c_int; SSL_load_client_CA_file(file: *const c_char) -> *mut stack_st_X509_NAME527 pub fn SSL_load_client_CA_file(file: *const c_char) -> *mut stack_st_X509_NAME; 528 529 #[cfg(not(ossl110))] SSL_load_error_strings()530 pub fn SSL_load_error_strings(); SSL_state_string(ssl: *const SSL) -> *const c_char531 pub fn SSL_state_string(ssl: *const SSL) -> *const c_char; SSL_state_string_long(ssl: *const SSL) -> *const c_char532 pub fn SSL_state_string_long(ssl: *const SSL) -> *const c_char; 533 SSL_SESSION_get_time(s: *const SSL_SESSION) -> c_long534 pub fn SSL_SESSION_get_time(s: *const SSL_SESSION) -> c_long; SSL_SESSION_get_timeout(s: *const SSL_SESSION) -> c_long535 pub fn SSL_SESSION_get_timeout(s: *const SSL_SESSION) -> c_long; 536 #[cfg(any(ossl110, libressl270))] SSL_SESSION_get_protocol_version(s: *const SSL_SESSION) -> c_int537 pub fn SSL_SESSION_get_protocol_version(s: *const SSL_SESSION) -> c_int; 538 539 #[cfg(any(ossl111, libressl340))] SSL_SESSION_set_max_early_data(ctx: *mut SSL_SESSION, max_early_data: u32) -> c_int540 pub fn SSL_SESSION_set_max_early_data(ctx: *mut SSL_SESSION, max_early_data: u32) -> c_int; 541 #[cfg(any(ossl111, libressl340))] SSL_SESSION_get_max_early_data(ctx: *const SSL_SESSION) -> u32542 pub fn SSL_SESSION_get_max_early_data(ctx: *const SSL_SESSION) -> u32; 543 SSL_SESSION_get_id(s: *const SSL_SESSION, len: *mut c_uint) -> *const c_uchar544 pub fn SSL_SESSION_get_id(s: *const SSL_SESSION, len: *mut c_uint) -> *const c_uchar; 545 #[cfg(any(ossl110, libressl273))] SSL_SESSION_up_ref(ses: *mut SSL_SESSION) -> c_int546 pub fn SSL_SESSION_up_ref(ses: *mut SSL_SESSION) -> c_int; SSL_SESSION_free(s: *mut SSL_SESSION)547 pub fn SSL_SESSION_free(s: *mut SSL_SESSION); 548 } 549 const_ptr_api! { 550 extern "C" { 551 pub fn i2d_SSL_SESSION(s: #[const_ptr_if(ossl300)] SSL_SESSION, pp: *mut *mut c_uchar) -> c_int; 552 } 553 } 554 extern "C" { SSL_set_session(ssl: *mut SSL, session: *mut SSL_SESSION) -> c_int555 pub fn SSL_set_session(ssl: *mut SSL, session: *mut SSL_SESSION) -> c_int; SSL_CTX_add_session(ctx: *mut SSL_CTX, session: *mut SSL_SESSION) -> c_int556 pub fn SSL_CTX_add_session(ctx: *mut SSL_CTX, session: *mut SSL_SESSION) -> c_int; SSL_CTX_remove_session(ctx: *mut SSL_CTX, session: *mut SSL_SESSION) -> c_int557 pub fn SSL_CTX_remove_session(ctx: *mut SSL_CTX, session: *mut SSL_SESSION) -> c_int; d2i_SSL_SESSION( a: *mut *mut SSL_SESSION, pp: *mut *const c_uchar, len: c_long, ) -> *mut SSL_SESSION558 pub fn d2i_SSL_SESSION( 559 a: *mut *mut SSL_SESSION, 560 pp: *mut *const c_uchar, 561 len: c_long, 562 ) -> *mut SSL_SESSION; 563 564 #[cfg(not(ossl300))] SSL_get_peer_certificate(ssl: *const SSL) -> *mut X509565 pub fn SSL_get_peer_certificate(ssl: *const SSL) -> *mut X509; 566 #[cfg(ossl300)] SSL_get1_peer_certificate(ssl: *const SSL) -> *mut X509567 pub fn SSL_get1_peer_certificate(ssl: *const SSL) -> *mut X509; 568 SSL_get_peer_cert_chain(ssl: *const SSL) -> *mut stack_st_X509569 pub fn SSL_get_peer_cert_chain(ssl: *const SSL) -> *mut stack_st_X509; 570 SSL_CTX_set_verify( ctx: *mut SSL_CTX, mode: c_int, verify_callback: Option<extern "C" fn(c_int, *mut X509_STORE_CTX) -> c_int>, )571 pub fn SSL_CTX_set_verify( 572 ctx: *mut SSL_CTX, 573 mode: c_int, 574 verify_callback: Option<extern "C" fn(c_int, *mut X509_STORE_CTX) -> c_int>, 575 ); SSL_CTX_set_verify_depth(ctx: *mut SSL_CTX, depth: c_int)576 pub fn SSL_CTX_set_verify_depth(ctx: *mut SSL_CTX, depth: c_int); 577 578 #[cfg(any(ossl111, libressl340))] SSL_CTX_set_post_handshake_auth(ctx: *mut SSL_CTX, val: c_int)579 pub fn SSL_CTX_set_post_handshake_auth(ctx: *mut SSL_CTX, val: c_int); 580 SSL_CTX_check_private_key(ctx: *const SSL_CTX) -> c_int581 pub fn SSL_CTX_check_private_key(ctx: *const SSL_CTX) -> c_int; 582 SSL_CTX_set_session_id_context( ssl: *mut SSL_CTX, sid_ctx: *const c_uchar, sid_ctx_len: c_uint, ) -> c_int583 pub fn SSL_CTX_set_session_id_context( 584 ssl: *mut SSL_CTX, 585 sid_ctx: *const c_uchar, 586 sid_ctx_len: c_uint, 587 ) -> c_int; 588 SSL_new(ctx: *mut SSL_CTX) -> *mut SSL589 pub fn SSL_new(ctx: *mut SSL_CTX) -> *mut SSL; 590 591 #[cfg(any(ossl102, libressl261))] SSL_CTX_get0_param(ctx: *mut SSL_CTX) -> *mut X509_VERIFY_PARAM592 pub fn SSL_CTX_get0_param(ctx: *mut SSL_CTX) -> *mut X509_VERIFY_PARAM; 593 594 #[cfg(any(ossl102, libressl261))] SSL_get0_param(ssl: *mut SSL) -> *mut X509_VERIFY_PARAM595 pub fn SSL_get0_param(ssl: *mut SSL) -> *mut X509_VERIFY_PARAM; 596 } 597 598 #[cfg(ossl111)] 599 pub type SSL_client_hello_cb_fn = 600 Option<unsafe extern "C" fn(s: *mut SSL, al: *mut c_int, arg: *mut c_void) -> c_int>; 601 extern "C" { 602 #[cfg(ossl111)] SSL_CTX_set_client_hello_cb( c: *mut SSL_CTX, cb: SSL_client_hello_cb_fn, arg: *mut c_void, )603 pub fn SSL_CTX_set_client_hello_cb( 604 c: *mut SSL_CTX, 605 cb: SSL_client_hello_cb_fn, 606 arg: *mut c_void, 607 ); 608 #[cfg(ossl111)] SSL_client_hello_isv2(s: *mut SSL) -> c_int609 pub fn SSL_client_hello_isv2(s: *mut SSL) -> c_int; 610 #[cfg(ossl111)] SSL_client_hello_get0_legacy_version(s: *mut SSL) -> c_uint611 pub fn SSL_client_hello_get0_legacy_version(s: *mut SSL) -> c_uint; 612 #[cfg(ossl111)] SSL_client_hello_get0_random(s: *mut SSL, out: *mut *const c_uchar) -> size_t613 pub fn SSL_client_hello_get0_random(s: *mut SSL, out: *mut *const c_uchar) -> size_t; 614 #[cfg(ossl111)] SSL_client_hello_get0_session_id(s: *mut SSL, out: *mut *const c_uchar) -> size_t615 pub fn SSL_client_hello_get0_session_id(s: *mut SSL, out: *mut *const c_uchar) -> size_t; 616 #[cfg(ossl111)] SSL_client_hello_get0_ciphers(s: *mut SSL, out: *mut *const c_uchar) -> size_t617 pub fn SSL_client_hello_get0_ciphers(s: *mut SSL, out: *mut *const c_uchar) -> size_t; 618 #[cfg(ossl111)] SSL_client_hello_get0_compression_methods( s: *mut SSL, out: *mut *const c_uchar, ) -> size_t619 pub fn SSL_client_hello_get0_compression_methods( 620 s: *mut SSL, 621 out: *mut *const c_uchar, 622 ) -> size_t; 623 #[cfg(ossl111)] SSL_client_hello_get1_extensions_present( s: *mut SSL, out: *mut *mut c_int, outlen: *mut size_t, ) -> c_int624 pub fn SSL_client_hello_get1_extensions_present( 625 s: *mut SSL, 626 out: *mut *mut c_int, 627 outlen: *mut size_t, 628 ) -> c_int; 629 #[cfg(ossl111)] SSL_client_hello_get0_ext( s: *mut SSL, type_: c_uint, out: *mut *const c_uchar, outlen: *mut size_t, ) -> c_int630 pub fn SSL_client_hello_get0_ext( 631 s: *mut SSL, 632 type_: c_uint, 633 out: *mut *const c_uchar, 634 outlen: *mut size_t, 635 ) -> c_int; 636 SSL_free(ssl: *mut SSL)637 pub fn SSL_free(ssl: *mut SSL); SSL_accept(ssl: *mut SSL) -> c_int638 pub fn SSL_accept(ssl: *mut SSL) -> c_int; 639 #[cfg(ossl111)] SSL_stateless(s: *mut SSL) -> c_int640 pub fn SSL_stateless(s: *mut SSL) -> c_int; SSL_connect(ssl: *mut SSL) -> c_int641 pub fn SSL_connect(ssl: *mut SSL) -> c_int; SSL_read(ssl: *mut SSL, buf: *mut c_void, num: c_int) -> c_int642 pub fn SSL_read(ssl: *mut SSL, buf: *mut c_void, num: c_int) -> c_int; SSL_peek(ssl: *mut SSL, buf: *mut c_void, num: c_int) -> c_int643 pub fn SSL_peek(ssl: *mut SSL, buf: *mut c_void, num: c_int) -> c_int; 644 #[cfg(any(ossl111, libressl340))] SSL_read_early_data( s: *mut SSL, buf: *mut c_void, num: size_t, readbytes: *mut size_t, ) -> c_int645 pub fn SSL_read_early_data( 646 s: *mut SSL, 647 buf: *mut c_void, 648 num: size_t, 649 readbytes: *mut size_t, 650 ) -> c_int; 651 } 652 653 extern "C" { SSL_write(ssl: *mut SSL, buf: *const c_void, num: c_int) -> c_int654 pub fn SSL_write(ssl: *mut SSL, buf: *const c_void, num: c_int) -> c_int; 655 #[cfg(any(ossl111, libressl340))] SSL_write_early_data( s: *mut SSL, buf: *const c_void, num: size_t, written: *mut size_t, ) -> c_int656 pub fn SSL_write_early_data( 657 s: *mut SSL, 658 buf: *const c_void, 659 num: size_t, 660 written: *mut size_t, 661 ) -> c_int; SSL_ctrl(ssl: *mut SSL, cmd: c_int, larg: c_long, parg: *mut c_void) -> c_long662 pub fn SSL_ctrl(ssl: *mut SSL, cmd: c_int, larg: c_long, parg: *mut c_void) -> c_long; SSL_CTX_ctrl(ctx: *mut SSL_CTX, cmd: c_int, larg: c_long, parg: *mut c_void) -> c_long663 pub fn SSL_CTX_ctrl(ctx: *mut SSL_CTX, cmd: c_int, larg: c_long, parg: *mut c_void) -> c_long; 664 #[link_name = "SSL_CTX_callback_ctrl"] SSL_CTX_callback_ctrl__fixed_rust( ctx: *mut SSL_CTX, cmd: c_int, fp: Option<unsafe extern "C" fn()>, ) -> c_long665 pub fn SSL_CTX_callback_ctrl__fixed_rust( 666 ctx: *mut SSL_CTX, 667 cmd: c_int, 668 fp: Option<unsafe extern "C" fn()>, 669 ) -> c_long; 670 } 671 672 cfg_if! { 673 if #[cfg(any(ossl110, libressl291))] { 674 extern "C" { 675 pub fn TLS_method() -> *const SSL_METHOD; 676 677 pub fn DTLS_method() -> *const SSL_METHOD; 678 679 pub fn TLS_server_method() -> *const SSL_METHOD; 680 681 pub fn TLS_client_method() -> *const SSL_METHOD; 682 } 683 } else { 684 extern "C" { 685 #[cfg(not(osslconf = "OPENSSL_NO_SSL3_METHOD"))] 686 pub fn SSLv3_method() -> *const SSL_METHOD; 687 688 pub fn SSLv23_method() -> *const SSL_METHOD; 689 690 pub fn SSLv23_client_method() -> *const SSL_METHOD; 691 692 pub fn SSLv23_server_method() -> *const SSL_METHOD; 693 694 pub fn TLSv1_method() -> *const SSL_METHOD; 695 696 pub fn TLSv1_1_method() -> *const SSL_METHOD; 697 698 pub fn TLSv1_2_method() -> *const SSL_METHOD; 699 700 pub fn DTLSv1_method() -> *const SSL_METHOD; 701 702 #[cfg(ossl102)] 703 pub fn DTLSv1_2_method() -> *const SSL_METHOD; 704 } 705 } 706 } 707 708 extern "C" { SSL_get_error(ssl: *const SSL, ret: c_int) -> c_int709 pub fn SSL_get_error(ssl: *const SSL, ret: c_int) -> c_int; SSL_get_version(ssl: *const SSL) -> *const c_char710 pub fn SSL_get_version(ssl: *const SSL) -> *const c_char; 711 SSL_do_handshake(ssl: *mut SSL) -> c_int712 pub fn SSL_do_handshake(ssl: *mut SSL) -> c_int; SSL_shutdown(ssl: *mut SSL) -> c_int713 pub fn SSL_shutdown(ssl: *mut SSL) -> c_int; 714 SSL_CTX_set_client_CA_list(ctx: *mut SSL_CTX, list: *mut stack_st_X509_NAME)715 pub fn SSL_CTX_set_client_CA_list(ctx: *mut SSL_CTX, list: *mut stack_st_X509_NAME); 716 SSL_CTX_add_client_CA(ctx: *mut SSL_CTX, cacert: *mut X509) -> c_int717 pub fn SSL_CTX_add_client_CA(ctx: *mut SSL_CTX, cacert: *mut X509) -> c_int; 718 SSL_CTX_set_default_verify_paths(ctx: *mut SSL_CTX) -> c_int719 pub fn SSL_CTX_set_default_verify_paths(ctx: *mut SSL_CTX) -> c_int; SSL_CTX_load_verify_locations( ctx: *mut SSL_CTX, CAfile: *const c_char, CApath: *const c_char, ) -> c_int720 pub fn SSL_CTX_load_verify_locations( 721 ctx: *mut SSL_CTX, 722 CAfile: *const c_char, 723 CApath: *const c_char, 724 ) -> c_int; 725 } 726 727 const_ptr_api! { 728 extern "C" { 729 pub fn SSL_get_ssl_method(ssl: #[const_ptr_if(ossl111b)] SSL) -> *const SSL_METHOD; 730 } 731 } 732 733 extern "C" { SSL_set_connect_state(s: *mut SSL)734 pub fn SSL_set_connect_state(s: *mut SSL); SSL_set_accept_state(s: *mut SSL)735 pub fn SSL_set_accept_state(s: *mut SSL); 736 737 #[cfg(not(ossl110))] SSL_library_init() -> c_int738 pub fn SSL_library_init() -> c_int; 739 SSL_CIPHER_description( cipher: *const SSL_CIPHER, buf: *mut c_char, size: c_int, ) -> *mut c_char740 pub fn SSL_CIPHER_description( 741 cipher: *const SSL_CIPHER, 742 buf: *mut c_char, 743 size: c_int, 744 ) -> *mut c_char; 745 SSL_get_certificate(ssl: *const SSL) -> *mut X509746 pub fn SSL_get_certificate(ssl: *const SSL) -> *mut X509; 747 } 748 const_ptr_api! { 749 extern "C" { 750 pub fn SSL_get_privatekey(ssl: #[const_ptr_if(any(ossl102, libressl280))] SSL) -> *mut EVP_PKEY; 751 } 752 } 753 754 extern "C" { 755 #[cfg(any(ossl102, libressl270))] SSL_CTX_get0_certificate(ctx: *const SSL_CTX) -> *mut X509756 pub fn SSL_CTX_get0_certificate(ctx: *const SSL_CTX) -> *mut X509; 757 #[cfg(any(ossl102, libressl340))] SSL_CTX_get0_privatekey(ctx: *const SSL_CTX) -> *mut EVP_PKEY758 pub fn SSL_CTX_get0_privatekey(ctx: *const SSL_CTX) -> *mut EVP_PKEY; 759 SSL_set_shutdown(ss: *mut SSL, mode: c_int)760 pub fn SSL_set_shutdown(ss: *mut SSL, mode: c_int); SSL_get_shutdown(ssl: *const SSL) -> c_int761 pub fn SSL_get_shutdown(ssl: *const SSL) -> c_int; SSL_version(ssl: *const SSL) -> c_int762 pub fn SSL_version(ssl: *const SSL) -> c_int; SSL_get_session(s: *const SSL) -> *mut SSL_SESSION763 pub fn SSL_get_session(s: *const SSL) -> *mut SSL_SESSION; SSL_get_SSL_CTX(ssl: *const SSL) -> *mut SSL_CTX764 pub fn SSL_get_SSL_CTX(ssl: *const SSL) -> *mut SSL_CTX; SSL_set_SSL_CTX(ssl: *mut SSL, ctx: *mut SSL_CTX) -> *mut SSL_CTX765 pub fn SSL_set_SSL_CTX(ssl: *mut SSL, ctx: *mut SSL_CTX) -> *mut SSL_CTX; 766 SSL_get_verify_result(ssl: *const SSL) -> c_long767 pub fn SSL_get_verify_result(ssl: *const SSL) -> c_long; 768 #[cfg(ossl110)] SSL_get0_verified_chain(ssl: *const SSL) -> *mut stack_st_X509769 pub fn SSL_get0_verified_chain(ssl: *const SSL) -> *mut stack_st_X509; 770 771 #[cfg(any(ossl110, libressl270))] SSL_get_client_random(ssl: *const SSL, out: *mut c_uchar, len: size_t) -> size_t772 pub fn SSL_get_client_random(ssl: *const SSL, out: *mut c_uchar, len: size_t) -> size_t; 773 #[cfg(any(ossl110, libressl270))] SSL_get_server_random(ssl: *const SSL, out: *mut c_uchar, len: size_t) -> size_t774 pub fn SSL_get_server_random(ssl: *const SSL, out: *mut c_uchar, len: size_t) -> size_t; 775 #[cfg(any(ossl110, libressl273))] SSL_SESSION_get_master_key( session: *const SSL_SESSION, out: *mut c_uchar, outlen: size_t, ) -> size_t776 pub fn SSL_SESSION_get_master_key( 777 session: *const SSL_SESSION, 778 out: *mut c_uchar, 779 outlen: size_t, 780 ) -> size_t; 781 } 782 783 extern "C" { 784 #[cfg(not(ossl110))] SSL_get_ex_new_index( argl: c_long, argp: *mut c_void, new_func: Option<CRYPTO_EX_new>, dup_func: Option<CRYPTO_EX_dup>, free_func: Option<CRYPTO_EX_free>, ) -> c_int785 pub fn SSL_get_ex_new_index( 786 argl: c_long, 787 argp: *mut c_void, 788 new_func: Option<CRYPTO_EX_new>, 789 dup_func: Option<CRYPTO_EX_dup>, 790 free_func: Option<CRYPTO_EX_free>, 791 ) -> c_int; 792 SSL_set_ex_data(ssl: *mut SSL, idx: c_int, data: *mut c_void) -> c_int793 pub fn SSL_set_ex_data(ssl: *mut SSL, idx: c_int, data: *mut c_void) -> c_int; SSL_get_ex_data(ssl: *const SSL, idx: c_int) -> *mut c_void794 pub fn SSL_get_ex_data(ssl: *const SSL, idx: c_int) -> *mut c_void; 795 796 #[cfg(not(ossl110))] SSL_CTX_get_ex_new_index( argl: c_long, argp: *mut c_void, new_func: Option<CRYPTO_EX_new>, dup_func: Option<CRYPTO_EX_dup>, free_func: Option<CRYPTO_EX_free>, ) -> c_int797 pub fn SSL_CTX_get_ex_new_index( 798 argl: c_long, 799 argp: *mut c_void, 800 new_func: Option<CRYPTO_EX_new>, 801 dup_func: Option<CRYPTO_EX_dup>, 802 free_func: Option<CRYPTO_EX_free>, 803 ) -> c_int; 804 SSL_CTX_set_ex_data(ctx: *mut SSL_CTX, idx: c_int, data: *mut c_void) -> c_int805 pub fn SSL_CTX_set_ex_data(ctx: *mut SSL_CTX, idx: c_int, data: *mut c_void) -> c_int; SSL_CTX_get_ex_data(ctx: *const SSL_CTX, idx: c_int) -> *mut c_void806 pub fn SSL_CTX_get_ex_data(ctx: *const SSL_CTX, idx: c_int) -> *mut c_void; 807 SSL_get_ex_data_X509_STORE_CTX_idx() -> c_int808 pub fn SSL_get_ex_data_X509_STORE_CTX_idx() -> c_int; 809 } 810 811 extern "C" { 812 #[link_name = "SSL_CTX_set_tmp_dh_callback"] SSL_CTX_set_tmp_dh_callback__fixed_rust( ctx: *mut SSL_CTX, dh: Option< unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut DH, >, )813 pub fn SSL_CTX_set_tmp_dh_callback__fixed_rust( 814 ctx: *mut SSL_CTX, 815 dh: Option< 816 unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut DH, 817 >, 818 ); 819 #[link_name = "SSL_set_tmp_dh_callback"] SSL_set_tmp_dh_callback__fixed_rust( ctx: *mut SSL, dh: Option< unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut DH, >, )820 pub fn SSL_set_tmp_dh_callback__fixed_rust( 821 ctx: *mut SSL, 822 dh: Option< 823 unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut DH, 824 >, 825 ); 826 #[cfg(not(ossl110))] 827 #[link_name = "SSL_CTX_set_tmp_ecdh_callback"] SSL_CTX_set_tmp_ecdh_callback__fixed_rust( ctx: *mut SSL_CTX, ecdh: Option< unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut EC_KEY, >, )828 pub fn SSL_CTX_set_tmp_ecdh_callback__fixed_rust( 829 ctx: *mut SSL_CTX, 830 ecdh: Option< 831 unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut EC_KEY, 832 >, 833 ); 834 #[cfg(not(ossl110))] 835 #[link_name = "SSL_set_tmp_ecdh_callback"] SSL_set_tmp_ecdh_callback__fixed_rust( ssl: *mut SSL, ecdh: Option< unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut EC_KEY, >, )836 pub fn SSL_set_tmp_ecdh_callback__fixed_rust( 837 ssl: *mut SSL, 838 ecdh: Option< 839 unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut EC_KEY, 840 >, 841 ); 842 } 843 844 cfg_if! { 845 if #[cfg(libressl)] { 846 extern "C" { 847 pub fn SSL_get_current_compression(ssl: *mut SSL) -> *const libc::c_void; 848 } 849 } else if #[cfg(not(osslconf = "OPENSSL_NO_COMP"))] { 850 const_ptr_api! { 851 extern "C" { 852 pub fn SSL_get_current_compression(ssl: #[const_ptr_if(ossl111b)] SSL) -> *const COMP_METHOD; 853 } 854 } 855 } 856 } 857 cfg_if! { 858 if #[cfg(libressl)] { 859 extern "C" { 860 pub fn SSL_COMP_get_name(comp: *const libc::c_void) -> *const c_char; 861 } 862 } else if #[cfg(not(osslconf = "OPENSSL_NO_COMP"))] { 863 extern "C" { 864 pub fn SSL_COMP_get_name(comp: *const COMP_METHOD) -> *const c_char; 865 } 866 } 867 } 868 869 #[cfg(not(osslconf = "OPENSSL_NO_COMP"))] 870 extern "C" { 871 #[cfg(ossl110)] COMP_get_type(meth: *const COMP_METHOD) -> i32872 pub fn COMP_get_type(meth: *const COMP_METHOD) -> i32; 873 } 874 875 extern "C" { 876 #[cfg(any(ossl110, libressl270))] SSL_CIPHER_get_cipher_nid(c: *const SSL_CIPHER) -> c_int877 pub fn SSL_CIPHER_get_cipher_nid(c: *const SSL_CIPHER) -> c_int; 878 #[cfg(any(ossl110, libressl270))] SSL_CIPHER_get_digest_nid(c: *const SSL_CIPHER) -> c_int879 pub fn SSL_CIPHER_get_digest_nid(c: *const SSL_CIPHER) -> c_int; 880 } 881 882 const_ptr_api! { 883 extern "C" { 884 #[cfg(ossl110)] 885 pub fn SSL_session_reused(ssl: #[const_ptr_if(ossl111c)] SSL) -> c_int; 886 } 887 } 888 889 const_ptr_api! { 890 extern "C" { 891 #[cfg(any(ossl102, libressl273))] 892 pub fn SSL_is_server(s: #[const_ptr_if(any(ossl110f, libressl273))] SSL) -> c_int; 893 } 894 } 895 896 extern "C" { 897 #[cfg(ossl110)] OPENSSL_init_ssl(opts: u64, settings: *const OPENSSL_INIT_SETTINGS) -> c_int898 pub fn OPENSSL_init_ssl(opts: u64, settings: *const OPENSSL_INIT_SETTINGS) -> c_int; 899 } 900 901 extern "C" { 902 #[cfg(ossl111)] SSL_CTX_set_num_tickets(ctx: *mut SSL_CTX, num_tickets: size_t) -> c_int903 pub fn SSL_CTX_set_num_tickets(ctx: *mut SSL_CTX, num_tickets: size_t) -> c_int; 904 905 #[cfg(ossl111)] SSL_set_num_tickets(s: *mut SSL, num_tickets: size_t) -> c_int906 pub fn SSL_set_num_tickets(s: *mut SSL, num_tickets: size_t) -> c_int; 907 908 #[cfg(ossl111)] SSL_CTX_get_num_tickets(ctx: *const SSL_CTX) -> size_t909 pub fn SSL_CTX_get_num_tickets(ctx: *const SSL_CTX) -> size_t; 910 911 #[cfg(ossl111)] SSL_get_num_tickets(s: *const SSL) -> size_t912 pub fn SSL_get_num_tickets(s: *const SSL) -> size_t; 913 } 914