192f3ab15Sopenharmony_ciuse super::super::*; 292f3ab15Sopenharmony_ciuse libc::*; 392f3ab15Sopenharmony_ci 492f3ab15Sopenharmony_cipub enum SSL_METHOD {} 592f3ab15Sopenharmony_cipub enum SSL_CIPHER {} 692f3ab15Sopenharmony_cicfg_if! { 792f3ab15Sopenharmony_ci if #[cfg(any(ossl110, libressl280))] { 892f3ab15Sopenharmony_ci pub enum SSL_SESSION {} 992f3ab15Sopenharmony_ci } else if #[cfg(libressl251)] { 1092f3ab15Sopenharmony_ci #[repr(C)] 1192f3ab15Sopenharmony_ci pub struct SSL_SESSION { 1292f3ab15Sopenharmony_ci ssl_version: c_int, 1392f3ab15Sopenharmony_ci pub master_key_length: c_int, 1492f3ab15Sopenharmony_ci pub master_key: [c_uchar; 48], 1592f3ab15Sopenharmony_ci session_id_length: c_uint, 1692f3ab15Sopenharmony_ci session_id: [c_uchar; SSL_MAX_SSL_SESSION_ID_LENGTH as usize], 1792f3ab15Sopenharmony_ci sid_ctx_length: c_uint, 1892f3ab15Sopenharmony_ci sid_ctx: [c_uchar; SSL_MAX_SID_CTX_LENGTH as usize], 1992f3ab15Sopenharmony_ci peer: *mut X509, 2092f3ab15Sopenharmony_ci verify_result: c_long, 2192f3ab15Sopenharmony_ci timeout: c_long, 2292f3ab15Sopenharmony_ci time: time_t, 2392f3ab15Sopenharmony_ci pub references: c_int, 2492f3ab15Sopenharmony_ci cipher: *const SSL_CIPHER, 2592f3ab15Sopenharmony_ci cipher_id: c_long, 2692f3ab15Sopenharmony_ci ciphers: *mut stack_st_SSL_CIPHER, 2792f3ab15Sopenharmony_ci tlsext_hostname: *mut c_char, 2892f3ab15Sopenharmony_ci tlsext_tick: *mut c_uchar, 2992f3ab15Sopenharmony_ci tlsext_ticklen: size_t, 3092f3ab15Sopenharmony_ci tlsext_tick_lifetime_int: c_long, 3192f3ab15Sopenharmony_ci internal: *mut c_void, 3292f3ab15Sopenharmony_ci } 3392f3ab15Sopenharmony_ci } else if #[cfg(libressl)] { 3492f3ab15Sopenharmony_ci #[repr(C)] 3592f3ab15Sopenharmony_ci pub struct SSL_SESSION { 3692f3ab15Sopenharmony_ci ssl_version: c_int, 3792f3ab15Sopenharmony_ci pub master_key_length: c_int, 3892f3ab15Sopenharmony_ci pub master_key: [c_uchar; 48], 3992f3ab15Sopenharmony_ci session_id_length: c_uint, 4092f3ab15Sopenharmony_ci session_id: [c_uchar; SSL_MAX_SSL_SESSION_ID_LENGTH as usize], 4192f3ab15Sopenharmony_ci sid_ctx_length: c_uint, 4292f3ab15Sopenharmony_ci sid_ctx: [c_uchar; SSL_MAX_SID_CTX_LENGTH as usize], 4392f3ab15Sopenharmony_ci not_resumable: c_int, 4492f3ab15Sopenharmony_ci sess_cert: *mut c_void, 4592f3ab15Sopenharmony_ci peer: *mut X509, 4692f3ab15Sopenharmony_ci verify_result: c_long, 4792f3ab15Sopenharmony_ci timeout: c_long, 4892f3ab15Sopenharmony_ci time: time_t, 4992f3ab15Sopenharmony_ci pub references: c_int, 5092f3ab15Sopenharmony_ci cipher: *const c_void, 5192f3ab15Sopenharmony_ci cipher_id: c_ulong, 5292f3ab15Sopenharmony_ci ciphers: *mut c_void, 5392f3ab15Sopenharmony_ci ex_data: CRYPTO_EX_DATA, 5492f3ab15Sopenharmony_ci prev: *mut c_void, 5592f3ab15Sopenharmony_ci next: *mut c_void, 5692f3ab15Sopenharmony_ci tlsext_hostname: *mut c_char, 5792f3ab15Sopenharmony_ci tlsext_ecpointformatlist_length: size_t, 5892f3ab15Sopenharmony_ci tlsext_ecpointformatlist: *mut u8, 5992f3ab15Sopenharmony_ci tlsext_ellipticcurvelist_length: size_t, 6092f3ab15Sopenharmony_ci tlsext_ellipticcurvelist: *mut u16, 6192f3ab15Sopenharmony_ci tlsext_tick: *mut c_uchar, 6292f3ab15Sopenharmony_ci tlsext_ticklen: size_t, 6392f3ab15Sopenharmony_ci tlsext_tick_lifetime_hint: c_long, 6492f3ab15Sopenharmony_ci } 6592f3ab15Sopenharmony_ci } else { 6692f3ab15Sopenharmony_ci #[repr(C)] 6792f3ab15Sopenharmony_ci pub struct SSL_SESSION { 6892f3ab15Sopenharmony_ci ssl_version: c_int, 6992f3ab15Sopenharmony_ci key_arg_length: c_uint, 7092f3ab15Sopenharmony_ci key_arg: [c_uchar; SSL_MAX_KEY_ARG_LENGTH as usize], 7192f3ab15Sopenharmony_ci pub master_key_length: c_int, 7292f3ab15Sopenharmony_ci pub master_key: [c_uchar; 48], 7392f3ab15Sopenharmony_ci session_id_length: c_uint, 7492f3ab15Sopenharmony_ci session_id: [c_uchar; SSL_MAX_SSL_SESSION_ID_LENGTH as usize], 7592f3ab15Sopenharmony_ci sid_ctx_length: c_uint, 7692f3ab15Sopenharmony_ci sid_ctx: [c_uchar; SSL_MAX_SID_CTX_LENGTH as usize], 7792f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_KRB5"))] 7892f3ab15Sopenharmony_ci krb5_client_princ_len: c_uint, 7992f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_KRB5"))] 8092f3ab15Sopenharmony_ci krb5_client_princ: [c_uchar; SSL_MAX_KRB5_PRINCIPAL_LENGTH as usize], 8192f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_PSK"))] 8292f3ab15Sopenharmony_ci psk_identity_hint: *mut c_char, 8392f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_PSK"))] 8492f3ab15Sopenharmony_ci psk_identity: *mut c_char, 8592f3ab15Sopenharmony_ci not_resumable: c_int, 8692f3ab15Sopenharmony_ci sess_cert: *mut c_void, 8792f3ab15Sopenharmony_ci peer: *mut X509, 8892f3ab15Sopenharmony_ci verify_result: c_long, 8992f3ab15Sopenharmony_ci pub references: c_int, 9092f3ab15Sopenharmony_ci timeout: c_long, 9192f3ab15Sopenharmony_ci time: c_long, 9292f3ab15Sopenharmony_ci compress_meth: c_uint, 9392f3ab15Sopenharmony_ci cipher: *const c_void, 9492f3ab15Sopenharmony_ci cipher_id: c_ulong, 9592f3ab15Sopenharmony_ci ciphers: *mut c_void, 9692f3ab15Sopenharmony_ci ex_data: CRYPTO_EX_DATA, 9792f3ab15Sopenharmony_ci prev: *mut c_void, 9892f3ab15Sopenharmony_ci next: *mut c_void, 9992f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))] 10092f3ab15Sopenharmony_ci tlsext_hostname: *mut c_char, 10192f3ab15Sopenharmony_ci #[cfg(all( 10292f3ab15Sopenharmony_ci not(osslconf = "OPENSSL_NO_TLSEXT"), 10392f3ab15Sopenharmony_ci not(osslconf = "OPENSSL_NO_EC") 10492f3ab15Sopenharmony_ci ))] 10592f3ab15Sopenharmony_ci tlsext_ecpointformatlist_length: size_t, 10692f3ab15Sopenharmony_ci #[cfg(all( 10792f3ab15Sopenharmony_ci not(osslconf = "OPENSSL_NO_TLSEXT"), 10892f3ab15Sopenharmony_ci not(osslconf = "OPENSSL_NO_EC") 10992f3ab15Sopenharmony_ci ))] 11092f3ab15Sopenharmony_ci tlsext_ecpointformatlist: *mut c_uchar, 11192f3ab15Sopenharmony_ci #[cfg(all( 11292f3ab15Sopenharmony_ci not(osslconf = "OPENSSL_NO_TLSEXT"), 11392f3ab15Sopenharmony_ci not(osslconf = "OPENSSL_NO_EC") 11492f3ab15Sopenharmony_ci ))] 11592f3ab15Sopenharmony_ci tlsext_ellipticcurvelist_length: size_t, 11692f3ab15Sopenharmony_ci #[cfg(all( 11792f3ab15Sopenharmony_ci not(osslconf = "OPENSSL_NO_TLSEXT"), 11892f3ab15Sopenharmony_ci not(osslconf = "OPENSSL_NO_EC") 11992f3ab15Sopenharmony_ci ))] 12092f3ab15Sopenharmony_ci tlsext_ellipticcurvelist: *mut c_uchar, 12192f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))] 12292f3ab15Sopenharmony_ci tlsext_tick: *mut c_uchar, 12392f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))] 12492f3ab15Sopenharmony_ci tlsext_ticklen: size_t, 12592f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))] 12692f3ab15Sopenharmony_ci tlsext_tick_lifetime_hint: c_long, 12792f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_SRP"))] 12892f3ab15Sopenharmony_ci srp_username: *mut c_char, 12992f3ab15Sopenharmony_ci } 13092f3ab15Sopenharmony_ci } 13192f3ab15Sopenharmony_ci} 13292f3ab15Sopenharmony_ci 13392f3ab15Sopenharmony_cistack!(stack_st_SSL_CIPHER); 13492f3ab15Sopenharmony_ci 13592f3ab15Sopenharmony_ci#[repr(C)] 13692f3ab15Sopenharmony_cipub struct SRTP_PROTECTION_PROFILE { 13792f3ab15Sopenharmony_ci pub name: *const c_char, 13892f3ab15Sopenharmony_ci pub id: c_ulong, 13992f3ab15Sopenharmony_ci} 14092f3ab15Sopenharmony_ci 14192f3ab15Sopenharmony_cistack!(stack_st_SRTP_PROTECTION_PROFILE); 14292f3ab15Sopenharmony_ci 14392f3ab15Sopenharmony_cipub type tls_session_ticket_ext_cb_fn = 14492f3ab15Sopenharmony_ci Option<unsafe extern "C" fn(*mut SSL, *const c_uchar, c_int, *mut c_void) -> c_int>; 14592f3ab15Sopenharmony_cipub type tls_session_secret_cb_fn = Option< 14692f3ab15Sopenharmony_ci unsafe extern "C" fn( 14792f3ab15Sopenharmony_ci *mut SSL, 14892f3ab15Sopenharmony_ci *mut c_void, 14992f3ab15Sopenharmony_ci *mut c_int, 15092f3ab15Sopenharmony_ci *mut stack_st_SSL_CIPHER, 15192f3ab15Sopenharmony_ci *mut *mut SSL_CIPHER, 15292f3ab15Sopenharmony_ci *mut c_void, 15392f3ab15Sopenharmony_ci ) -> c_int, 15492f3ab15Sopenharmony_ci>; 15592f3ab15Sopenharmony_ci 15692f3ab15Sopenharmony_ci#[cfg(ossl111)] 15792f3ab15Sopenharmony_cipub type SSL_custom_ext_add_cb_ex = Option< 15892f3ab15Sopenharmony_ci unsafe extern "C" fn( 15992f3ab15Sopenharmony_ci ssl: *mut SSL, 16092f3ab15Sopenharmony_ci ext_type: c_uint, 16192f3ab15Sopenharmony_ci context: c_uint, 16292f3ab15Sopenharmony_ci out: *mut *const c_uchar, 16392f3ab15Sopenharmony_ci outlen: *mut size_t, 16492f3ab15Sopenharmony_ci x: *mut X509, 16592f3ab15Sopenharmony_ci chainidx: size_t, 16692f3ab15Sopenharmony_ci al: *mut c_int, 16792f3ab15Sopenharmony_ci add_arg: *mut c_void, 16892f3ab15Sopenharmony_ci ) -> c_int, 16992f3ab15Sopenharmony_ci>; 17092f3ab15Sopenharmony_ci 17192f3ab15Sopenharmony_ci#[cfg(ossl111)] 17292f3ab15Sopenharmony_cipub type SSL_custom_ext_free_cb_ex = Option< 17392f3ab15Sopenharmony_ci unsafe extern "C" fn( 17492f3ab15Sopenharmony_ci ssl: *mut SSL, 17592f3ab15Sopenharmony_ci ext_type: c_uint, 17692f3ab15Sopenharmony_ci context: c_uint, 17792f3ab15Sopenharmony_ci out: *const c_uchar, 17892f3ab15Sopenharmony_ci add_arg: *mut c_void, 17992f3ab15Sopenharmony_ci ), 18092f3ab15Sopenharmony_ci>; 18192f3ab15Sopenharmony_ci 18292f3ab15Sopenharmony_ci#[cfg(ossl111)] 18392f3ab15Sopenharmony_cipub type SSL_custom_ext_parse_cb_ex = Option< 18492f3ab15Sopenharmony_ci unsafe extern "C" fn( 18592f3ab15Sopenharmony_ci ssl: *mut SSL, 18692f3ab15Sopenharmony_ci ext_type: c_uint, 18792f3ab15Sopenharmony_ci context: c_uint, 18892f3ab15Sopenharmony_ci input: *const c_uchar, 18992f3ab15Sopenharmony_ci inlen: size_t, 19092f3ab15Sopenharmony_ci x: *mut X509, 19192f3ab15Sopenharmony_ci chainidx: size_t, 19292f3ab15Sopenharmony_ci al: *mut c_int, 19392f3ab15Sopenharmony_ci parse_arg: *mut c_void, 19492f3ab15Sopenharmony_ci ) -> c_int, 19592f3ab15Sopenharmony_ci>; 19692f3ab15Sopenharmony_ci 19792f3ab15Sopenharmony_cicfg_if! { 19892f3ab15Sopenharmony_ci if #[cfg(ossl300)] { 19992f3ab15Sopenharmony_ci extern "C" { 20092f3ab15Sopenharmony_ci pub fn SSL_CTX_get_options(ctx: *const SSL_CTX) -> u64; 20192f3ab15Sopenharmony_ci pub fn SSL_CTX_set_options(ctx: *mut SSL_CTX, op: u64) -> u64; 20292f3ab15Sopenharmony_ci pub fn SSL_CTX_clear_options(ctx: *mut SSL_CTX, op: u64) -> u64; 20392f3ab15Sopenharmony_ci } 20492f3ab15Sopenharmony_ci } else if #[cfg(ossl110)] { 20592f3ab15Sopenharmony_ci extern "C" { 20692f3ab15Sopenharmony_ci pub fn SSL_CTX_get_options(ctx: *const SSL_CTX) -> c_ulong; 20792f3ab15Sopenharmony_ci pub fn SSL_CTX_set_options(ctx: *mut SSL_CTX, op: c_ulong) -> c_ulong; 20892f3ab15Sopenharmony_ci pub fn SSL_CTX_clear_options(ctx: *mut SSL_CTX, op: c_ulong) -> c_ulong; 20992f3ab15Sopenharmony_ci } 21092f3ab15Sopenharmony_ci } 21192f3ab15Sopenharmony_ci} 21292f3ab15Sopenharmony_ci 21392f3ab15Sopenharmony_cipub type GEN_SESSION_CB = 21492f3ab15Sopenharmony_ci Option<unsafe extern "C" fn(*const SSL, *mut c_uchar, *mut c_uint) -> c_int>; 21592f3ab15Sopenharmony_ci 21692f3ab15Sopenharmony_ciextern "C" { 21792f3ab15Sopenharmony_ci pub fn SSL_CTX_sess_set_new_cb( 21892f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 21992f3ab15Sopenharmony_ci new_session_cb: Option<unsafe extern "C" fn(*mut SSL, *mut SSL_SESSION) -> c_int>, 22092f3ab15Sopenharmony_ci ); 22192f3ab15Sopenharmony_ci pub fn SSL_CTX_sess_set_remove_cb( 22292f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 22392f3ab15Sopenharmony_ci remove_session_cb: Option<unsafe extern "C" fn(*mut SSL_CTX, *mut SSL_SESSION)>, 22492f3ab15Sopenharmony_ci ); 22592f3ab15Sopenharmony_ci} 22692f3ab15Sopenharmony_cicfg_if! { 22792f3ab15Sopenharmony_ci // const change in passed function pointer signature 22892f3ab15Sopenharmony_ci if #[cfg(any(ossl110, libressl280))] { 22992f3ab15Sopenharmony_ci extern "C" { 23092f3ab15Sopenharmony_ci pub fn SSL_CTX_sess_set_get_cb( 23192f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 23292f3ab15Sopenharmony_ci get_session_cb: Option< 23392f3ab15Sopenharmony_ci unsafe extern "C" fn(*mut SSL, *const c_uchar, c_int, *mut c_int) -> *mut SSL_SESSION, 23492f3ab15Sopenharmony_ci >, 23592f3ab15Sopenharmony_ci ); 23692f3ab15Sopenharmony_ci } 23792f3ab15Sopenharmony_ci } else { 23892f3ab15Sopenharmony_ci extern "C" { 23992f3ab15Sopenharmony_ci pub fn SSL_CTX_sess_set_get_cb( 24092f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 24192f3ab15Sopenharmony_ci get_session_cb: Option< 24292f3ab15Sopenharmony_ci unsafe extern "C" fn(*mut SSL, *mut c_uchar, c_int, *mut c_int) -> *mut SSL_SESSION, 24392f3ab15Sopenharmony_ci >, 24492f3ab15Sopenharmony_ci ); 24592f3ab15Sopenharmony_ci } 24692f3ab15Sopenharmony_ci } 24792f3ab15Sopenharmony_ci} 24892f3ab15Sopenharmony_ciextern "C" { 24992f3ab15Sopenharmony_ci // FIXME change to unsafe extern "C" fn 25092f3ab15Sopenharmony_ci pub fn SSL_CTX_set_cookie_generate_cb( 25192f3ab15Sopenharmony_ci s: *mut SSL_CTX, 25292f3ab15Sopenharmony_ci cb: Option< 25392f3ab15Sopenharmony_ci extern "C" fn(ssl: *mut SSL, cookie: *mut c_uchar, cookie_len: *mut c_uint) -> c_int, 25492f3ab15Sopenharmony_ci >, 25592f3ab15Sopenharmony_ci ); 25692f3ab15Sopenharmony_ci} 25792f3ab15Sopenharmony_ci 25892f3ab15Sopenharmony_cicfg_if! { 25992f3ab15Sopenharmony_ci // const change in passed function pointer signature 26092f3ab15Sopenharmony_ci if #[cfg(any(ossl110, libressl280))] { 26192f3ab15Sopenharmony_ci extern "C" { 26292f3ab15Sopenharmony_ci pub fn SSL_CTX_set_cookie_verify_cb( 26392f3ab15Sopenharmony_ci s: *mut SSL_CTX, 26492f3ab15Sopenharmony_ci cb: Option< 26592f3ab15Sopenharmony_ci extern "C" fn(ssl: *mut SSL, cookie: *const c_uchar, cookie_len: c_uint) -> c_int, 26692f3ab15Sopenharmony_ci >, 26792f3ab15Sopenharmony_ci ); 26892f3ab15Sopenharmony_ci } 26992f3ab15Sopenharmony_ci } else { 27092f3ab15Sopenharmony_ci extern "C" { 27192f3ab15Sopenharmony_ci pub fn SSL_CTX_set_cookie_verify_cb( 27292f3ab15Sopenharmony_ci s: *mut SSL_CTX, 27392f3ab15Sopenharmony_ci cb: Option<extern "C" fn(ssl: *mut SSL, cookie: *mut c_uchar, cookie_len: c_uint) -> c_int>, 27492f3ab15Sopenharmony_ci ); 27592f3ab15Sopenharmony_ci } 27692f3ab15Sopenharmony_ci } 27792f3ab15Sopenharmony_ci} 27892f3ab15Sopenharmony_ci 27992f3ab15Sopenharmony_ciextern "C" { 28092f3ab15Sopenharmony_ci #[cfg(ossl111)] 28192f3ab15Sopenharmony_ci pub fn SSL_CTX_set_stateless_cookie_generate_cb( 28292f3ab15Sopenharmony_ci s: *mut SSL_CTX, 28392f3ab15Sopenharmony_ci cb: Option< 28492f3ab15Sopenharmony_ci unsafe extern "C" fn( 28592f3ab15Sopenharmony_ci ssl: *mut SSL, 28692f3ab15Sopenharmony_ci cookie: *mut c_uchar, 28792f3ab15Sopenharmony_ci cookie_len: *mut size_t, 28892f3ab15Sopenharmony_ci ) -> c_int, 28992f3ab15Sopenharmony_ci >, 29092f3ab15Sopenharmony_ci ); 29192f3ab15Sopenharmony_ci #[cfg(ossl111)] 29292f3ab15Sopenharmony_ci pub fn SSL_CTX_set_stateless_cookie_verify_cb( 29392f3ab15Sopenharmony_ci s: *mut SSL_CTX, 29492f3ab15Sopenharmony_ci cb: Option< 29592f3ab15Sopenharmony_ci unsafe extern "C" fn( 29692f3ab15Sopenharmony_ci ssl: *mut SSL, 29792f3ab15Sopenharmony_ci cookie: *const c_uchar, 29892f3ab15Sopenharmony_ci cookie_len: size_t, 29992f3ab15Sopenharmony_ci ) -> c_int, 30092f3ab15Sopenharmony_ci >, 30192f3ab15Sopenharmony_ci ); 30292f3ab15Sopenharmony_ci 30392f3ab15Sopenharmony_ci pub fn SSL_CTX_set_next_protos_advertised_cb( 30492f3ab15Sopenharmony_ci ssl: *mut SSL_CTX, 30592f3ab15Sopenharmony_ci cb: extern "C" fn( 30692f3ab15Sopenharmony_ci ssl: *mut SSL, 30792f3ab15Sopenharmony_ci out: *mut *const c_uchar, 30892f3ab15Sopenharmony_ci outlen: *mut c_uint, 30992f3ab15Sopenharmony_ci arg: *mut c_void, 31092f3ab15Sopenharmony_ci ) -> c_int, 31192f3ab15Sopenharmony_ci arg: *mut c_void, 31292f3ab15Sopenharmony_ci ); 31392f3ab15Sopenharmony_ci pub fn SSL_CTX_set_next_proto_select_cb( 31492f3ab15Sopenharmony_ci ssl: *mut SSL_CTX, 31592f3ab15Sopenharmony_ci cb: extern "C" fn( 31692f3ab15Sopenharmony_ci ssl: *mut SSL, 31792f3ab15Sopenharmony_ci out: *mut *mut c_uchar, 31892f3ab15Sopenharmony_ci outlen: *mut c_uchar, 31992f3ab15Sopenharmony_ci inbuf: *const c_uchar, 32092f3ab15Sopenharmony_ci inlen: c_uint, 32192f3ab15Sopenharmony_ci arg: *mut c_void, 32292f3ab15Sopenharmony_ci ) -> c_int, 32392f3ab15Sopenharmony_ci arg: *mut c_void, 32492f3ab15Sopenharmony_ci ); 32592f3ab15Sopenharmony_ci pub fn SSL_get0_next_proto_negotiated( 32692f3ab15Sopenharmony_ci s: *const SSL, 32792f3ab15Sopenharmony_ci data: *mut *const c_uchar, 32892f3ab15Sopenharmony_ci len: *mut c_uint, 32992f3ab15Sopenharmony_ci ); 33092f3ab15Sopenharmony_ci 33192f3ab15Sopenharmony_ci pub fn SSL_select_next_proto( 33292f3ab15Sopenharmony_ci out: *mut *mut c_uchar, 33392f3ab15Sopenharmony_ci outlen: *mut c_uchar, 33492f3ab15Sopenharmony_ci inbuf: *const c_uchar, 33592f3ab15Sopenharmony_ci inlen: c_uint, 33692f3ab15Sopenharmony_ci client: *const c_uchar, 33792f3ab15Sopenharmony_ci client_len: c_uint, 33892f3ab15Sopenharmony_ci ) -> c_int; 33992f3ab15Sopenharmony_ci} 34092f3ab15Sopenharmony_ci 34192f3ab15Sopenharmony_ciextern "C" { 34292f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl261))] 34392f3ab15Sopenharmony_ci pub fn SSL_CTX_set_alpn_protos(s: *mut SSL_CTX, data: *const c_uchar, len: c_uint) -> c_int; 34492f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl261))] 34592f3ab15Sopenharmony_ci pub fn SSL_set_alpn_protos(s: *mut SSL, data: *const c_uchar, len: c_uint) -> c_int; 34692f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl261))] 34792f3ab15Sopenharmony_ci #[link_name = "SSL_CTX_set_alpn_select_cb"] 34892f3ab15Sopenharmony_ci pub fn SSL_CTX_set_alpn_select_cb__fixed_rust( 34992f3ab15Sopenharmony_ci ssl: *mut SSL_CTX, 35092f3ab15Sopenharmony_ci cb: Option< 35192f3ab15Sopenharmony_ci unsafe extern "C" fn( 35292f3ab15Sopenharmony_ci ssl: *mut SSL, 35392f3ab15Sopenharmony_ci out: *mut *const c_uchar, 35492f3ab15Sopenharmony_ci outlen: *mut c_uchar, 35592f3ab15Sopenharmony_ci inbuf: *const c_uchar, 35692f3ab15Sopenharmony_ci inlen: c_uint, 35792f3ab15Sopenharmony_ci arg: *mut c_void, 35892f3ab15Sopenharmony_ci ) -> c_int, 35992f3ab15Sopenharmony_ci >, 36092f3ab15Sopenharmony_ci arg: *mut c_void, 36192f3ab15Sopenharmony_ci ); 36292f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl261))] 36392f3ab15Sopenharmony_ci pub fn SSL_get0_alpn_selected(s: *const SSL, data: *mut *const c_uchar, len: *mut c_uint); 36492f3ab15Sopenharmony_ci} 36592f3ab15Sopenharmony_ci 36692f3ab15Sopenharmony_ci#[cfg(not(osslconf = "OPENSSL_NO_PSK"))] 36792f3ab15Sopenharmony_ciextern "C" { 36892f3ab15Sopenharmony_ci pub fn SSL_CTX_set_psk_client_callback( 36992f3ab15Sopenharmony_ci ssl: *mut SSL_CTX, 37092f3ab15Sopenharmony_ci psk_client_cb: Option< 37192f3ab15Sopenharmony_ci extern "C" fn( 37292f3ab15Sopenharmony_ci *mut SSL, 37392f3ab15Sopenharmony_ci *const c_char, 37492f3ab15Sopenharmony_ci *mut c_char, 37592f3ab15Sopenharmony_ci c_uint, 37692f3ab15Sopenharmony_ci *mut c_uchar, 37792f3ab15Sopenharmony_ci c_uint, 37892f3ab15Sopenharmony_ci ) -> c_uint, 37992f3ab15Sopenharmony_ci >, 38092f3ab15Sopenharmony_ci ); 38192f3ab15Sopenharmony_ci pub fn SSL_CTX_set_psk_server_callback( 38292f3ab15Sopenharmony_ci ssl: *mut SSL_CTX, 38392f3ab15Sopenharmony_ci psk_server_cb: Option< 38492f3ab15Sopenharmony_ci extern "C" fn(*mut SSL, *const c_char, *mut c_uchar, c_uint) -> c_uint, 38592f3ab15Sopenharmony_ci >, 38692f3ab15Sopenharmony_ci ); 38792f3ab15Sopenharmony_ci pub fn SSL_get_psk_identity_hint(ssl: *const SSL) -> *const c_char; 38892f3ab15Sopenharmony_ci pub fn SSL_get_psk_identity(ssl: *const SSL) -> *const c_char; 38992f3ab15Sopenharmony_ci} 39092f3ab15Sopenharmony_ci 39192f3ab15Sopenharmony_ciextern "C" { 39292f3ab15Sopenharmony_ci #[cfg(ossl111)] 39392f3ab15Sopenharmony_ci pub fn SSL_CTX_add_custom_ext( 39492f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 39592f3ab15Sopenharmony_ci ext_type: c_uint, 39692f3ab15Sopenharmony_ci context: c_uint, 39792f3ab15Sopenharmony_ci add_cb: SSL_custom_ext_add_cb_ex, 39892f3ab15Sopenharmony_ci free_cb: SSL_custom_ext_free_cb_ex, 39992f3ab15Sopenharmony_ci add_arg: *mut c_void, 40092f3ab15Sopenharmony_ci parse_cb: SSL_custom_ext_parse_cb_ex, 40192f3ab15Sopenharmony_ci parse_arg: *mut c_void, 40292f3ab15Sopenharmony_ci ) -> c_int; 40392f3ab15Sopenharmony_ci 40492f3ab15Sopenharmony_ci #[cfg(ossl102)] 40592f3ab15Sopenharmony_ci pub fn SSL_extension_supported(ext_type: c_uint) -> c_int; 40692f3ab15Sopenharmony_ci} 40792f3ab15Sopenharmony_ci 40892f3ab15Sopenharmony_ci#[cfg(ossl111)] 40992f3ab15Sopenharmony_cipub type SSL_CTX_keylog_cb_func = 41092f3ab15Sopenharmony_ci Option<unsafe extern "C" fn(ssl: *const SSL, line: *const c_char)>; 41192f3ab15Sopenharmony_ci 41292f3ab15Sopenharmony_ciextern "C" { 41392f3ab15Sopenharmony_ci #[cfg(ossl111)] 41492f3ab15Sopenharmony_ci pub fn SSL_CTX_set_keylog_callback(ctx: *mut SSL_CTX, cb: SSL_CTX_keylog_cb_func); 41592f3ab15Sopenharmony_ci 41692f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 41792f3ab15Sopenharmony_ci pub fn SSL_CTX_set_max_early_data(ctx: *mut SSL_CTX, max_early_data: u32) -> c_int; 41892f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 41992f3ab15Sopenharmony_ci pub fn SSL_CTX_get_max_early_data(ctx: *const SSL_CTX) -> u32; 42092f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 42192f3ab15Sopenharmony_ci pub fn SSL_set_max_early_data(ctx: *mut SSL, max_early_data: u32) -> c_int; 42292f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 42392f3ab15Sopenharmony_ci pub fn SSL_get_max_early_data(ctx: *const SSL) -> u32; 42492f3ab15Sopenharmony_ci 42592f3ab15Sopenharmony_ci pub fn SSL_get_finished(s: *const SSL, buf: *mut c_void, count: size_t) -> size_t; 42692f3ab15Sopenharmony_ci pub fn SSL_get_peer_finished(s: *const SSL, buf: *mut c_void, count: size_t) -> size_t; 42792f3ab15Sopenharmony_ci 42892f3ab15Sopenharmony_ci pub fn SSL_CTX_get_verify_mode(ctx: *const SSL_CTX) -> c_int; 42992f3ab15Sopenharmony_ci pub fn SSL_get_verify_mode(s: *const SSL) -> c_int; 43092f3ab15Sopenharmony_ci} 43192f3ab15Sopenharmony_ci 43292f3ab15Sopenharmony_ciconst_ptr_api! { 43392f3ab15Sopenharmony_ci extern "C" { 43492f3ab15Sopenharmony_ci #[cfg(ossl110)] 43592f3ab15Sopenharmony_ci pub fn SSL_is_init_finished(s: #[const_ptr_if(ossl111)] SSL) -> c_int; 43692f3ab15Sopenharmony_ci } 43792f3ab15Sopenharmony_ci} 43892f3ab15Sopenharmony_ci 43992f3ab15Sopenharmony_cicfg_if! { 44092f3ab15Sopenharmony_ci if #[cfg(libressl261)] { 44192f3ab15Sopenharmony_ci extern "C" { 44292f3ab15Sopenharmony_ci pub fn SSL_CTX_set_min_proto_version(ctx: *mut SSL_CTX, version: u16) -> c_int; 44392f3ab15Sopenharmony_ci pub fn SSL_CTX_set_max_proto_version(ctx: *mut SSL_CTX, version: u16) -> c_int; 44492f3ab15Sopenharmony_ci pub fn SSL_set_min_proto_version(s: *mut SSL, version: u16) -> c_int; 44592f3ab15Sopenharmony_ci pub fn SSL_set_max_proto_version(s: *mut SSL, version: u16) -> c_int; 44692f3ab15Sopenharmony_ci } 44792f3ab15Sopenharmony_ci } 44892f3ab15Sopenharmony_ci} 44992f3ab15Sopenharmony_ci 45092f3ab15Sopenharmony_cicfg_if! { 45192f3ab15Sopenharmony_ci if #[cfg(libressl270)] { 45292f3ab15Sopenharmony_ci extern "C" { 45392f3ab15Sopenharmony_ci pub fn SSL_CTX_get_min_proto_version(ctx: *mut SSL_CTX) -> c_int; 45492f3ab15Sopenharmony_ci pub fn SSL_CTX_get_max_proto_version(ctx: *mut SSL_CTX) -> c_int; 45592f3ab15Sopenharmony_ci pub fn SSL_get_min_proto_version(s: *mut SSL) -> c_int; 45692f3ab15Sopenharmony_ci pub fn SSL_get_max_proto_version(s: *mut SSL) -> c_int; 45792f3ab15Sopenharmony_ci } 45892f3ab15Sopenharmony_ci } 45992f3ab15Sopenharmony_ci} 46092f3ab15Sopenharmony_ci 46192f3ab15Sopenharmony_ciextern "C" { 46292f3ab15Sopenharmony_ci pub fn SSL_CTX_set_cipher_list(ssl: *mut SSL_CTX, s: *const c_char) -> c_int; 46392f3ab15Sopenharmony_ci pub fn SSL_CTX_new(method: *const SSL_METHOD) -> *mut SSL_CTX; 46492f3ab15Sopenharmony_ci pub fn SSL_CTX_free(ctx: *mut SSL_CTX); 46592f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl273))] 46692f3ab15Sopenharmony_ci pub fn SSL_CTX_up_ref(x: *mut SSL_CTX) -> c_int; 46792f3ab15Sopenharmony_ci pub fn SSL_CTX_get_cert_store(ctx: *const SSL_CTX) -> *mut X509_STORE; 46892f3ab15Sopenharmony_ci pub fn SSL_CTX_set_cert_store(ctx: *mut SSL_CTX, store: *mut X509_STORE); 46992f3ab15Sopenharmony_ci 47092f3ab15Sopenharmony_ci pub fn SSL_get_current_cipher(ssl: *const SSL) -> *const SSL_CIPHER; 47192f3ab15Sopenharmony_ci pub fn SSL_CIPHER_get_bits(cipher: *const SSL_CIPHER, alg_bits: *mut c_int) -> c_int; 47292f3ab15Sopenharmony_ci} 47392f3ab15Sopenharmony_ciconst_ptr_api! { 47492f3ab15Sopenharmony_ci extern "C" { 47592f3ab15Sopenharmony_ci pub fn SSL_CIPHER_get_version(cipher: *const SSL_CIPHER) -> #[const_ptr_if(any(ossl110, libressl280))] c_char; 47692f3ab15Sopenharmony_ci } 47792f3ab15Sopenharmony_ci} 47892f3ab15Sopenharmony_ciextern "C" { 47992f3ab15Sopenharmony_ci #[cfg(ossl111)] 48092f3ab15Sopenharmony_ci pub fn SSL_CIPHER_get_handshake_digest(cipher: *const SSL_CIPHER) -> *const EVP_MD; 48192f3ab15Sopenharmony_ci pub fn SSL_CIPHER_get_name(cipher: *const SSL_CIPHER) -> *const c_char; 48292f3ab15Sopenharmony_ci #[cfg(ossl111)] 48392f3ab15Sopenharmony_ci pub fn SSL_CIPHER_standard_name(cipher: *const SSL_CIPHER) -> *const c_char; 48492f3ab15Sopenharmony_ci #[cfg(ossl111)] 48592f3ab15Sopenharmony_ci pub fn OPENSSL_cipher_name(rfc_name: *const c_char) -> *const c_char; 48692f3ab15Sopenharmony_ci 48792f3ab15Sopenharmony_ci pub fn SSL_pending(ssl: *const SSL) -> c_int; 48892f3ab15Sopenharmony_ci pub fn SSL_set_bio(ssl: *mut SSL, rbio: *mut BIO, wbio: *mut BIO); 48992f3ab15Sopenharmony_ci pub fn SSL_get_rbio(ssl: *const SSL) -> *mut BIO; 49092f3ab15Sopenharmony_ci pub fn SSL_get_wbio(ssl: *const SSL) -> *mut BIO; 49192f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 49292f3ab15Sopenharmony_ci pub fn SSL_CTX_set_ciphersuites(ctx: *mut SSL_CTX, str: *const c_char) -> c_int; 49392f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 49492f3ab15Sopenharmony_ci pub fn SSL_set_ciphersuites(ssl: *mut SSL, str: *const c_char) -> c_int; 49592f3ab15Sopenharmony_ci pub fn SSL_set_cipher_list(ssl: *mut SSL, s: *const c_char) -> c_int; 49692f3ab15Sopenharmony_ci pub fn SSL_set_ssl_method(s: *mut SSL, method: *const SSL_METHOD) -> c_int; 49792f3ab15Sopenharmony_ci pub fn SSL_set_verify( 49892f3ab15Sopenharmony_ci ssl: *mut SSL, 49992f3ab15Sopenharmony_ci mode: c_int, 50092f3ab15Sopenharmony_ci // FIXME should be unsafe 50192f3ab15Sopenharmony_ci verify_callback: Option<extern "C" fn(c_int, *mut X509_STORE_CTX) -> c_int>, 50292f3ab15Sopenharmony_ci ); 50392f3ab15Sopenharmony_ci pub fn SSL_CTX_use_PrivateKey(ctx: *mut SSL_CTX, key: *mut EVP_PKEY) -> c_int; 50492f3ab15Sopenharmony_ci pub fn SSL_CTX_use_certificate(ctx: *mut SSL_CTX, cert: *mut X509) -> c_int; 50592f3ab15Sopenharmony_ci 50692f3ab15Sopenharmony_ci pub fn SSL_CTX_use_PrivateKey_file( 50792f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 50892f3ab15Sopenharmony_ci key_file: *const c_char, 50992f3ab15Sopenharmony_ci file_type: c_int, 51092f3ab15Sopenharmony_ci ) -> c_int; 51192f3ab15Sopenharmony_ci pub fn SSL_CTX_use_certificate_file( 51292f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 51392f3ab15Sopenharmony_ci cert_file: *const c_char, 51492f3ab15Sopenharmony_ci file_type: c_int, 51592f3ab15Sopenharmony_ci ) -> c_int; 51692f3ab15Sopenharmony_ci pub fn SSL_CTX_use_certificate_chain_file( 51792f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 51892f3ab15Sopenharmony_ci cert_chain_file: *const c_char, 51992f3ab15Sopenharmony_ci ) -> c_int; 52092f3ab15Sopenharmony_ci pub fn SSL_use_PrivateKey_file(ssl: *mut SSL, file: *const c_char, type_: c_int) -> c_int; 52192f3ab15Sopenharmony_ci pub fn SSL_use_PrivateKey(ssl: *mut SSL, pkey: *mut EVP_PKEY) -> c_int; 52292f3ab15Sopenharmony_ci pub fn SSL_use_certificate(ssl: *mut SSL, x: *mut X509) -> c_int; 52392f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl332))] 52492f3ab15Sopenharmony_ci pub fn SSL_use_certificate_chain_file(ssl: *mut SSL, file: *const c_char) -> c_int; 52592f3ab15Sopenharmony_ci pub fn SSL_set_client_CA_list(s: *mut SSL, name_list: *mut stack_st_X509_NAME); 52692f3ab15Sopenharmony_ci pub fn SSL_add_client_CA(ssl: *mut SSL, x: *mut X509) -> c_int; 52792f3ab15Sopenharmony_ci pub fn SSL_load_client_CA_file(file: *const c_char) -> *mut stack_st_X509_NAME; 52892f3ab15Sopenharmony_ci 52992f3ab15Sopenharmony_ci #[cfg(not(ossl110))] 53092f3ab15Sopenharmony_ci pub fn SSL_load_error_strings(); 53192f3ab15Sopenharmony_ci pub fn SSL_state_string(ssl: *const SSL) -> *const c_char; 53292f3ab15Sopenharmony_ci pub fn SSL_state_string_long(ssl: *const SSL) -> *const c_char; 53392f3ab15Sopenharmony_ci 53492f3ab15Sopenharmony_ci pub fn SSL_SESSION_get_time(s: *const SSL_SESSION) -> c_long; 53592f3ab15Sopenharmony_ci pub fn SSL_SESSION_get_timeout(s: *const SSL_SESSION) -> c_long; 53692f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl270))] 53792f3ab15Sopenharmony_ci pub fn SSL_SESSION_get_protocol_version(s: *const SSL_SESSION) -> c_int; 53892f3ab15Sopenharmony_ci 53992f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 54092f3ab15Sopenharmony_ci pub fn SSL_SESSION_set_max_early_data(ctx: *mut SSL_SESSION, max_early_data: u32) -> c_int; 54192f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 54292f3ab15Sopenharmony_ci pub fn SSL_SESSION_get_max_early_data(ctx: *const SSL_SESSION) -> u32; 54392f3ab15Sopenharmony_ci 54492f3ab15Sopenharmony_ci pub fn SSL_SESSION_get_id(s: *const SSL_SESSION, len: *mut c_uint) -> *const c_uchar; 54592f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl273))] 54692f3ab15Sopenharmony_ci pub fn SSL_SESSION_up_ref(ses: *mut SSL_SESSION) -> c_int; 54792f3ab15Sopenharmony_ci pub fn SSL_SESSION_free(s: *mut SSL_SESSION); 54892f3ab15Sopenharmony_ci} 54992f3ab15Sopenharmony_ciconst_ptr_api! { 55092f3ab15Sopenharmony_ci extern "C" { 55192f3ab15Sopenharmony_ci pub fn i2d_SSL_SESSION(s: #[const_ptr_if(ossl300)] SSL_SESSION, pp: *mut *mut c_uchar) -> c_int; 55292f3ab15Sopenharmony_ci } 55392f3ab15Sopenharmony_ci} 55492f3ab15Sopenharmony_ciextern "C" { 55592f3ab15Sopenharmony_ci pub fn SSL_set_session(ssl: *mut SSL, session: *mut SSL_SESSION) -> c_int; 55692f3ab15Sopenharmony_ci pub fn SSL_CTX_add_session(ctx: *mut SSL_CTX, session: *mut SSL_SESSION) -> c_int; 55792f3ab15Sopenharmony_ci pub fn SSL_CTX_remove_session(ctx: *mut SSL_CTX, session: *mut SSL_SESSION) -> c_int; 55892f3ab15Sopenharmony_ci pub fn d2i_SSL_SESSION( 55992f3ab15Sopenharmony_ci a: *mut *mut SSL_SESSION, 56092f3ab15Sopenharmony_ci pp: *mut *const c_uchar, 56192f3ab15Sopenharmony_ci len: c_long, 56292f3ab15Sopenharmony_ci ) -> *mut SSL_SESSION; 56392f3ab15Sopenharmony_ci 56492f3ab15Sopenharmony_ci #[cfg(not(ossl300))] 56592f3ab15Sopenharmony_ci pub fn SSL_get_peer_certificate(ssl: *const SSL) -> *mut X509; 56692f3ab15Sopenharmony_ci #[cfg(ossl300)] 56792f3ab15Sopenharmony_ci pub fn SSL_get1_peer_certificate(ssl: *const SSL) -> *mut X509; 56892f3ab15Sopenharmony_ci 56992f3ab15Sopenharmony_ci pub fn SSL_get_peer_cert_chain(ssl: *const SSL) -> *mut stack_st_X509; 57092f3ab15Sopenharmony_ci 57192f3ab15Sopenharmony_ci pub fn SSL_CTX_set_verify( 57292f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 57392f3ab15Sopenharmony_ci mode: c_int, 57492f3ab15Sopenharmony_ci verify_callback: Option<extern "C" fn(c_int, *mut X509_STORE_CTX) -> c_int>, 57592f3ab15Sopenharmony_ci ); 57692f3ab15Sopenharmony_ci pub fn SSL_CTX_set_verify_depth(ctx: *mut SSL_CTX, depth: c_int); 57792f3ab15Sopenharmony_ci 57892f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 57992f3ab15Sopenharmony_ci pub fn SSL_CTX_set_post_handshake_auth(ctx: *mut SSL_CTX, val: c_int); 58092f3ab15Sopenharmony_ci 58192f3ab15Sopenharmony_ci pub fn SSL_CTX_check_private_key(ctx: *const SSL_CTX) -> c_int; 58292f3ab15Sopenharmony_ci 58392f3ab15Sopenharmony_ci pub fn SSL_CTX_set_session_id_context( 58492f3ab15Sopenharmony_ci ssl: *mut SSL_CTX, 58592f3ab15Sopenharmony_ci sid_ctx: *const c_uchar, 58692f3ab15Sopenharmony_ci sid_ctx_len: c_uint, 58792f3ab15Sopenharmony_ci ) -> c_int; 58892f3ab15Sopenharmony_ci 58992f3ab15Sopenharmony_ci pub fn SSL_new(ctx: *mut SSL_CTX) -> *mut SSL; 59092f3ab15Sopenharmony_ci 59192f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl261))] 59292f3ab15Sopenharmony_ci pub fn SSL_CTX_get0_param(ctx: *mut SSL_CTX) -> *mut X509_VERIFY_PARAM; 59392f3ab15Sopenharmony_ci 59492f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl261))] 59592f3ab15Sopenharmony_ci pub fn SSL_get0_param(ssl: *mut SSL) -> *mut X509_VERIFY_PARAM; 59692f3ab15Sopenharmony_ci} 59792f3ab15Sopenharmony_ci 59892f3ab15Sopenharmony_ci#[cfg(ossl111)] 59992f3ab15Sopenharmony_cipub type SSL_client_hello_cb_fn = 60092f3ab15Sopenharmony_ci Option<unsafe extern "C" fn(s: *mut SSL, al: *mut c_int, arg: *mut c_void) -> c_int>; 60192f3ab15Sopenharmony_ciextern "C" { 60292f3ab15Sopenharmony_ci #[cfg(ossl111)] 60392f3ab15Sopenharmony_ci pub fn SSL_CTX_set_client_hello_cb( 60492f3ab15Sopenharmony_ci c: *mut SSL_CTX, 60592f3ab15Sopenharmony_ci cb: SSL_client_hello_cb_fn, 60692f3ab15Sopenharmony_ci arg: *mut c_void, 60792f3ab15Sopenharmony_ci ); 60892f3ab15Sopenharmony_ci #[cfg(ossl111)] 60992f3ab15Sopenharmony_ci pub fn SSL_client_hello_isv2(s: *mut SSL) -> c_int; 61092f3ab15Sopenharmony_ci #[cfg(ossl111)] 61192f3ab15Sopenharmony_ci pub fn SSL_client_hello_get0_legacy_version(s: *mut SSL) -> c_uint; 61292f3ab15Sopenharmony_ci #[cfg(ossl111)] 61392f3ab15Sopenharmony_ci pub fn SSL_client_hello_get0_random(s: *mut SSL, out: *mut *const c_uchar) -> size_t; 61492f3ab15Sopenharmony_ci #[cfg(ossl111)] 61592f3ab15Sopenharmony_ci pub fn SSL_client_hello_get0_session_id(s: *mut SSL, out: *mut *const c_uchar) -> size_t; 61692f3ab15Sopenharmony_ci #[cfg(ossl111)] 61792f3ab15Sopenharmony_ci pub fn SSL_client_hello_get0_ciphers(s: *mut SSL, out: *mut *const c_uchar) -> size_t; 61892f3ab15Sopenharmony_ci #[cfg(ossl111)] 61992f3ab15Sopenharmony_ci pub fn SSL_client_hello_get0_compression_methods( 62092f3ab15Sopenharmony_ci s: *mut SSL, 62192f3ab15Sopenharmony_ci out: *mut *const c_uchar, 62292f3ab15Sopenharmony_ci ) -> size_t; 62392f3ab15Sopenharmony_ci #[cfg(ossl111)] 62492f3ab15Sopenharmony_ci pub fn SSL_client_hello_get1_extensions_present( 62592f3ab15Sopenharmony_ci s: *mut SSL, 62692f3ab15Sopenharmony_ci out: *mut *mut c_int, 62792f3ab15Sopenharmony_ci outlen: *mut size_t, 62892f3ab15Sopenharmony_ci ) -> c_int; 62992f3ab15Sopenharmony_ci #[cfg(ossl111)] 63092f3ab15Sopenharmony_ci pub fn SSL_client_hello_get0_ext( 63192f3ab15Sopenharmony_ci s: *mut SSL, 63292f3ab15Sopenharmony_ci type_: c_uint, 63392f3ab15Sopenharmony_ci out: *mut *const c_uchar, 63492f3ab15Sopenharmony_ci outlen: *mut size_t, 63592f3ab15Sopenharmony_ci ) -> c_int; 63692f3ab15Sopenharmony_ci 63792f3ab15Sopenharmony_ci pub fn SSL_free(ssl: *mut SSL); 63892f3ab15Sopenharmony_ci pub fn SSL_accept(ssl: *mut SSL) -> c_int; 63992f3ab15Sopenharmony_ci #[cfg(ossl111)] 64092f3ab15Sopenharmony_ci pub fn SSL_stateless(s: *mut SSL) -> c_int; 64192f3ab15Sopenharmony_ci pub fn SSL_connect(ssl: *mut SSL) -> c_int; 64292f3ab15Sopenharmony_ci pub fn SSL_read(ssl: *mut SSL, buf: *mut c_void, num: c_int) -> c_int; 64392f3ab15Sopenharmony_ci pub fn SSL_peek(ssl: *mut SSL, buf: *mut c_void, num: c_int) -> c_int; 64492f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 64592f3ab15Sopenharmony_ci pub fn SSL_read_early_data( 64692f3ab15Sopenharmony_ci s: *mut SSL, 64792f3ab15Sopenharmony_ci buf: *mut c_void, 64892f3ab15Sopenharmony_ci num: size_t, 64992f3ab15Sopenharmony_ci readbytes: *mut size_t, 65092f3ab15Sopenharmony_ci ) -> c_int; 65192f3ab15Sopenharmony_ci #[cfg(ossl111)] 65292f3ab15Sopenharmony_ci pub fn SSL_bytes_to_cipher_list( 65392f3ab15Sopenharmony_ci s: *mut SSL, 65492f3ab15Sopenharmony_ci bytes: *const c_uchar, 65592f3ab15Sopenharmony_ci len: size_t, 65692f3ab15Sopenharmony_ci isv2format: c_int, 65792f3ab15Sopenharmony_ci sk: *mut *mut stack_st_SSL_CIPHER, 65892f3ab15Sopenharmony_ci scsvs: *mut *mut stack_st_SSL_CIPHER, 65992f3ab15Sopenharmony_ci ) -> c_int; 66092f3ab15Sopenharmony_ci} 66192f3ab15Sopenharmony_ci 66292f3ab15Sopenharmony_ciextern "C" { 66392f3ab15Sopenharmony_ci pub fn SSL_write(ssl: *mut SSL, buf: *const c_void, num: c_int) -> c_int; 66492f3ab15Sopenharmony_ci #[cfg(any(ossl111, libressl340))] 66592f3ab15Sopenharmony_ci pub fn SSL_write_early_data( 66692f3ab15Sopenharmony_ci s: *mut SSL, 66792f3ab15Sopenharmony_ci buf: *const c_void, 66892f3ab15Sopenharmony_ci num: size_t, 66992f3ab15Sopenharmony_ci written: *mut size_t, 67092f3ab15Sopenharmony_ci ) -> c_int; 67192f3ab15Sopenharmony_ci pub fn SSL_ctrl(ssl: *mut SSL, cmd: c_int, larg: c_long, parg: *mut c_void) -> c_long; 67292f3ab15Sopenharmony_ci pub fn SSL_CTX_ctrl(ctx: *mut SSL_CTX, cmd: c_int, larg: c_long, parg: *mut c_void) -> c_long; 67392f3ab15Sopenharmony_ci #[link_name = "SSL_CTX_callback_ctrl"] 67492f3ab15Sopenharmony_ci pub fn SSL_CTX_callback_ctrl__fixed_rust( 67592f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 67692f3ab15Sopenharmony_ci cmd: c_int, 67792f3ab15Sopenharmony_ci fp: Option<unsafe extern "C" fn()>, 67892f3ab15Sopenharmony_ci ) -> c_long; 67992f3ab15Sopenharmony_ci} 68092f3ab15Sopenharmony_ci 68192f3ab15Sopenharmony_cicfg_if! { 68292f3ab15Sopenharmony_ci if #[cfg(any(ossl110, libressl291))] { 68392f3ab15Sopenharmony_ci extern "C" { 68492f3ab15Sopenharmony_ci pub fn TLS_method() -> *const SSL_METHOD; 68592f3ab15Sopenharmony_ci 68692f3ab15Sopenharmony_ci pub fn DTLS_method() -> *const SSL_METHOD; 68792f3ab15Sopenharmony_ci 68892f3ab15Sopenharmony_ci pub fn TLS_server_method() -> *const SSL_METHOD; 68992f3ab15Sopenharmony_ci 69092f3ab15Sopenharmony_ci pub fn TLS_client_method() -> *const SSL_METHOD; 69192f3ab15Sopenharmony_ci } 69292f3ab15Sopenharmony_ci } else { 69392f3ab15Sopenharmony_ci extern "C" { 69492f3ab15Sopenharmony_ci #[cfg(not(osslconf = "OPENSSL_NO_SSL3_METHOD"))] 69592f3ab15Sopenharmony_ci pub fn SSLv3_method() -> *const SSL_METHOD; 69692f3ab15Sopenharmony_ci 69792f3ab15Sopenharmony_ci pub fn SSLv23_method() -> *const SSL_METHOD; 69892f3ab15Sopenharmony_ci 69992f3ab15Sopenharmony_ci pub fn SSLv23_client_method() -> *const SSL_METHOD; 70092f3ab15Sopenharmony_ci 70192f3ab15Sopenharmony_ci pub fn SSLv23_server_method() -> *const SSL_METHOD; 70292f3ab15Sopenharmony_ci 70392f3ab15Sopenharmony_ci pub fn TLSv1_method() -> *const SSL_METHOD; 70492f3ab15Sopenharmony_ci 70592f3ab15Sopenharmony_ci pub fn TLSv1_1_method() -> *const SSL_METHOD; 70692f3ab15Sopenharmony_ci 70792f3ab15Sopenharmony_ci pub fn TLSv1_2_method() -> *const SSL_METHOD; 70892f3ab15Sopenharmony_ci 70992f3ab15Sopenharmony_ci pub fn DTLSv1_method() -> *const SSL_METHOD; 71092f3ab15Sopenharmony_ci 71192f3ab15Sopenharmony_ci #[cfg(ossl102)] 71292f3ab15Sopenharmony_ci pub fn DTLSv1_2_method() -> *const SSL_METHOD; 71392f3ab15Sopenharmony_ci } 71492f3ab15Sopenharmony_ci } 71592f3ab15Sopenharmony_ci} 71692f3ab15Sopenharmony_ci 71792f3ab15Sopenharmony_ciextern "C" { 71892f3ab15Sopenharmony_ci pub fn SSL_get_error(ssl: *const SSL, ret: c_int) -> c_int; 71992f3ab15Sopenharmony_ci pub fn SSL_get_version(ssl: *const SSL) -> *const c_char; 72092f3ab15Sopenharmony_ci 72192f3ab15Sopenharmony_ci pub fn SSL_do_handshake(ssl: *mut SSL) -> c_int; 72292f3ab15Sopenharmony_ci pub fn SSL_shutdown(ssl: *mut SSL) -> c_int; 72392f3ab15Sopenharmony_ci 72492f3ab15Sopenharmony_ci pub fn SSL_CTX_set_client_CA_list(ctx: *mut SSL_CTX, list: *mut stack_st_X509_NAME); 72592f3ab15Sopenharmony_ci 72692f3ab15Sopenharmony_ci pub fn SSL_CTX_add_client_CA(ctx: *mut SSL_CTX, cacert: *mut X509) -> c_int; 72792f3ab15Sopenharmony_ci 72892f3ab15Sopenharmony_ci pub fn SSL_CTX_set_default_verify_paths(ctx: *mut SSL_CTX) -> c_int; 72992f3ab15Sopenharmony_ci pub fn SSL_CTX_load_verify_locations( 73092f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 73192f3ab15Sopenharmony_ci CAfile: *const c_char, 73292f3ab15Sopenharmony_ci CApath: *const c_char, 73392f3ab15Sopenharmony_ci ) -> c_int; 73492f3ab15Sopenharmony_ci} 73592f3ab15Sopenharmony_ci 73692f3ab15Sopenharmony_ciconst_ptr_api! { 73792f3ab15Sopenharmony_ci extern "C" { 73892f3ab15Sopenharmony_ci pub fn SSL_get_ssl_method(ssl: #[const_ptr_if(ossl111b)] SSL) -> *const SSL_METHOD; 73992f3ab15Sopenharmony_ci } 74092f3ab15Sopenharmony_ci} 74192f3ab15Sopenharmony_ci 74292f3ab15Sopenharmony_ciextern "C" { 74392f3ab15Sopenharmony_ci pub fn SSL_set_connect_state(s: *mut SSL); 74492f3ab15Sopenharmony_ci pub fn SSL_set_accept_state(s: *mut SSL); 74592f3ab15Sopenharmony_ci 74692f3ab15Sopenharmony_ci #[cfg(not(ossl110))] 74792f3ab15Sopenharmony_ci pub fn SSL_library_init() -> c_int; 74892f3ab15Sopenharmony_ci 74992f3ab15Sopenharmony_ci pub fn SSL_CIPHER_description( 75092f3ab15Sopenharmony_ci cipher: *const SSL_CIPHER, 75192f3ab15Sopenharmony_ci buf: *mut c_char, 75292f3ab15Sopenharmony_ci size: c_int, 75392f3ab15Sopenharmony_ci ) -> *mut c_char; 75492f3ab15Sopenharmony_ci 75592f3ab15Sopenharmony_ci pub fn SSL_get_certificate(ssl: *const SSL) -> *mut X509; 75692f3ab15Sopenharmony_ci} 75792f3ab15Sopenharmony_ciconst_ptr_api! { 75892f3ab15Sopenharmony_ci extern "C" { 75992f3ab15Sopenharmony_ci pub fn SSL_get_privatekey(ssl: #[const_ptr_if(any(ossl102, libressl280))] SSL) -> *mut EVP_PKEY; 76092f3ab15Sopenharmony_ci } 76192f3ab15Sopenharmony_ci} 76292f3ab15Sopenharmony_ci 76392f3ab15Sopenharmony_ciextern "C" { 76492f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl270))] 76592f3ab15Sopenharmony_ci pub fn SSL_CTX_get0_certificate(ctx: *const SSL_CTX) -> *mut X509; 76692f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl340))] 76792f3ab15Sopenharmony_ci pub fn SSL_CTX_get0_privatekey(ctx: *const SSL_CTX) -> *mut EVP_PKEY; 76892f3ab15Sopenharmony_ci 76992f3ab15Sopenharmony_ci pub fn SSL_set_shutdown(ss: *mut SSL, mode: c_int); 77092f3ab15Sopenharmony_ci pub fn SSL_get_shutdown(ssl: *const SSL) -> c_int; 77192f3ab15Sopenharmony_ci pub fn SSL_version(ssl: *const SSL) -> c_int; 77292f3ab15Sopenharmony_ci pub fn SSL_get_session(s: *const SSL) -> *mut SSL_SESSION; 77392f3ab15Sopenharmony_ci pub fn SSL_get_SSL_CTX(ssl: *const SSL) -> *mut SSL_CTX; 77492f3ab15Sopenharmony_ci pub fn SSL_set_SSL_CTX(ssl: *mut SSL, ctx: *mut SSL_CTX) -> *mut SSL_CTX; 77592f3ab15Sopenharmony_ci 77692f3ab15Sopenharmony_ci pub fn SSL_get_verify_result(ssl: *const SSL) -> c_long; 77792f3ab15Sopenharmony_ci #[cfg(ossl110)] 77892f3ab15Sopenharmony_ci pub fn SSL_get0_verified_chain(ssl: *const SSL) -> *mut stack_st_X509; 77992f3ab15Sopenharmony_ci 78092f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl270))] 78192f3ab15Sopenharmony_ci pub fn SSL_get_client_random(ssl: *const SSL, out: *mut c_uchar, len: size_t) -> size_t; 78292f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl270))] 78392f3ab15Sopenharmony_ci pub fn SSL_get_server_random(ssl: *const SSL, out: *mut c_uchar, len: size_t) -> size_t; 78492f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl273))] 78592f3ab15Sopenharmony_ci pub fn SSL_SESSION_get_master_key( 78692f3ab15Sopenharmony_ci session: *const SSL_SESSION, 78792f3ab15Sopenharmony_ci out: *mut c_uchar, 78892f3ab15Sopenharmony_ci outlen: size_t, 78992f3ab15Sopenharmony_ci ) -> size_t; 79092f3ab15Sopenharmony_ci} 79192f3ab15Sopenharmony_ci 79292f3ab15Sopenharmony_ciextern "C" { 79392f3ab15Sopenharmony_ci #[cfg(not(ossl110))] 79492f3ab15Sopenharmony_ci pub fn SSL_get_ex_new_index( 79592f3ab15Sopenharmony_ci argl: c_long, 79692f3ab15Sopenharmony_ci argp: *mut c_void, 79792f3ab15Sopenharmony_ci new_func: Option<CRYPTO_EX_new>, 79892f3ab15Sopenharmony_ci dup_func: Option<CRYPTO_EX_dup>, 79992f3ab15Sopenharmony_ci free_func: Option<CRYPTO_EX_free>, 80092f3ab15Sopenharmony_ci ) -> c_int; 80192f3ab15Sopenharmony_ci 80292f3ab15Sopenharmony_ci pub fn SSL_set_ex_data(ssl: *mut SSL, idx: c_int, data: *mut c_void) -> c_int; 80392f3ab15Sopenharmony_ci pub fn SSL_get_ex_data(ssl: *const SSL, idx: c_int) -> *mut c_void; 80492f3ab15Sopenharmony_ci 80592f3ab15Sopenharmony_ci #[cfg(not(ossl110))] 80692f3ab15Sopenharmony_ci pub fn SSL_CTX_get_ex_new_index( 80792f3ab15Sopenharmony_ci argl: c_long, 80892f3ab15Sopenharmony_ci argp: *mut c_void, 80992f3ab15Sopenharmony_ci new_func: Option<CRYPTO_EX_new>, 81092f3ab15Sopenharmony_ci dup_func: Option<CRYPTO_EX_dup>, 81192f3ab15Sopenharmony_ci free_func: Option<CRYPTO_EX_free>, 81292f3ab15Sopenharmony_ci ) -> c_int; 81392f3ab15Sopenharmony_ci 81492f3ab15Sopenharmony_ci pub fn SSL_CTX_set_ex_data(ctx: *mut SSL_CTX, idx: c_int, data: *mut c_void) -> c_int; 81592f3ab15Sopenharmony_ci pub fn SSL_CTX_get_ex_data(ctx: *const SSL_CTX, idx: c_int) -> *mut c_void; 81692f3ab15Sopenharmony_ci 81792f3ab15Sopenharmony_ci pub fn SSL_get_ex_data_X509_STORE_CTX_idx() -> c_int; 81892f3ab15Sopenharmony_ci} 81992f3ab15Sopenharmony_ci 82092f3ab15Sopenharmony_ciextern "C" { 82192f3ab15Sopenharmony_ci #[link_name = "SSL_CTX_set_tmp_dh_callback"] 82292f3ab15Sopenharmony_ci pub fn SSL_CTX_set_tmp_dh_callback__fixed_rust( 82392f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 82492f3ab15Sopenharmony_ci dh: Option< 82592f3ab15Sopenharmony_ci unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut DH, 82692f3ab15Sopenharmony_ci >, 82792f3ab15Sopenharmony_ci ); 82892f3ab15Sopenharmony_ci #[link_name = "SSL_set_tmp_dh_callback"] 82992f3ab15Sopenharmony_ci pub fn SSL_set_tmp_dh_callback__fixed_rust( 83092f3ab15Sopenharmony_ci ctx: *mut SSL, 83192f3ab15Sopenharmony_ci dh: Option< 83292f3ab15Sopenharmony_ci unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut DH, 83392f3ab15Sopenharmony_ci >, 83492f3ab15Sopenharmony_ci ); 83592f3ab15Sopenharmony_ci #[cfg(not(ossl110))] 83692f3ab15Sopenharmony_ci #[link_name = "SSL_CTX_set_tmp_ecdh_callback"] 83792f3ab15Sopenharmony_ci pub fn SSL_CTX_set_tmp_ecdh_callback__fixed_rust( 83892f3ab15Sopenharmony_ci ctx: *mut SSL_CTX, 83992f3ab15Sopenharmony_ci ecdh: Option< 84092f3ab15Sopenharmony_ci unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut EC_KEY, 84192f3ab15Sopenharmony_ci >, 84292f3ab15Sopenharmony_ci ); 84392f3ab15Sopenharmony_ci #[cfg(not(ossl110))] 84492f3ab15Sopenharmony_ci #[link_name = "SSL_set_tmp_ecdh_callback"] 84592f3ab15Sopenharmony_ci pub fn SSL_set_tmp_ecdh_callback__fixed_rust( 84692f3ab15Sopenharmony_ci ssl: *mut SSL, 84792f3ab15Sopenharmony_ci ecdh: Option< 84892f3ab15Sopenharmony_ci unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut EC_KEY, 84992f3ab15Sopenharmony_ci >, 85092f3ab15Sopenharmony_ci ); 85192f3ab15Sopenharmony_ci} 85292f3ab15Sopenharmony_ci 85392f3ab15Sopenharmony_cicfg_if! { 85492f3ab15Sopenharmony_ci if #[cfg(libressl)] { 85592f3ab15Sopenharmony_ci extern "C" { 85692f3ab15Sopenharmony_ci pub fn SSL_get_current_compression(ssl: *mut SSL) -> *const libc::c_void; 85792f3ab15Sopenharmony_ci } 85892f3ab15Sopenharmony_ci } else if #[cfg(not(osslconf = "OPENSSL_NO_COMP"))] { 85992f3ab15Sopenharmony_ci const_ptr_api! { 86092f3ab15Sopenharmony_ci extern "C" { 86192f3ab15Sopenharmony_ci pub fn SSL_get_current_compression(ssl: #[const_ptr_if(ossl111b)] SSL) -> *const COMP_METHOD; 86292f3ab15Sopenharmony_ci } 86392f3ab15Sopenharmony_ci } 86492f3ab15Sopenharmony_ci } 86592f3ab15Sopenharmony_ci} 86692f3ab15Sopenharmony_cicfg_if! { 86792f3ab15Sopenharmony_ci if #[cfg(libressl)] { 86892f3ab15Sopenharmony_ci extern "C" { 86992f3ab15Sopenharmony_ci pub fn SSL_COMP_get_name(comp: *const libc::c_void) -> *const c_char; 87092f3ab15Sopenharmony_ci } 87192f3ab15Sopenharmony_ci } else if #[cfg(not(osslconf = "OPENSSL_NO_COMP"))] { 87292f3ab15Sopenharmony_ci extern "C" { 87392f3ab15Sopenharmony_ci pub fn SSL_COMP_get_name(comp: *const COMP_METHOD) -> *const c_char; 87492f3ab15Sopenharmony_ci } 87592f3ab15Sopenharmony_ci } 87692f3ab15Sopenharmony_ci} 87792f3ab15Sopenharmony_ci 87892f3ab15Sopenharmony_ci#[cfg(not(osslconf = "OPENSSL_NO_COMP"))] 87992f3ab15Sopenharmony_ciextern "C" { 88092f3ab15Sopenharmony_ci #[cfg(ossl110)] 88192f3ab15Sopenharmony_ci pub fn COMP_get_type(meth: *const COMP_METHOD) -> i32; 88292f3ab15Sopenharmony_ci} 88392f3ab15Sopenharmony_ci 88492f3ab15Sopenharmony_ciextern "C" { 88592f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl270))] 88692f3ab15Sopenharmony_ci pub fn SSL_CIPHER_get_cipher_nid(c: *const SSL_CIPHER) -> c_int; 88792f3ab15Sopenharmony_ci #[cfg(any(ossl110, libressl270))] 88892f3ab15Sopenharmony_ci pub fn SSL_CIPHER_get_digest_nid(c: *const SSL_CIPHER) -> c_int; 88992f3ab15Sopenharmony_ci} 89092f3ab15Sopenharmony_ci 89192f3ab15Sopenharmony_ciconst_ptr_api! { 89292f3ab15Sopenharmony_ci extern "C" { 89392f3ab15Sopenharmony_ci #[cfg(ossl110)] 89492f3ab15Sopenharmony_ci pub fn SSL_session_reused(ssl: #[const_ptr_if(ossl111c)] SSL) -> c_int; 89592f3ab15Sopenharmony_ci } 89692f3ab15Sopenharmony_ci} 89792f3ab15Sopenharmony_ci 89892f3ab15Sopenharmony_ciconst_ptr_api! { 89992f3ab15Sopenharmony_ci extern "C" { 90092f3ab15Sopenharmony_ci #[cfg(any(ossl102, libressl273))] 90192f3ab15Sopenharmony_ci pub fn SSL_is_server(s: #[const_ptr_if(any(ossl110f, libressl273))] SSL) -> c_int; 90292f3ab15Sopenharmony_ci } 90392f3ab15Sopenharmony_ci} 90492f3ab15Sopenharmony_ci 90592f3ab15Sopenharmony_ciextern "C" { 90692f3ab15Sopenharmony_ci #[cfg(ossl110)] 90792f3ab15Sopenharmony_ci pub fn OPENSSL_init_ssl(opts: u64, settings: *const OPENSSL_INIT_SETTINGS) -> c_int; 90892f3ab15Sopenharmony_ci} 90992f3ab15Sopenharmony_ci 91092f3ab15Sopenharmony_ciextern "C" { 91192f3ab15Sopenharmony_ci #[cfg(ossl111)] 91292f3ab15Sopenharmony_ci pub fn SSL_CTX_set_num_tickets(ctx: *mut SSL_CTX, num_tickets: size_t) -> c_int; 91392f3ab15Sopenharmony_ci 91492f3ab15Sopenharmony_ci #[cfg(ossl111)] 91592f3ab15Sopenharmony_ci pub fn SSL_set_num_tickets(s: *mut SSL, num_tickets: size_t) -> c_int; 91692f3ab15Sopenharmony_ci 91792f3ab15Sopenharmony_ci #[cfg(ossl111b)] 91892f3ab15Sopenharmony_ci pub fn SSL_CTX_get_num_tickets(ctx: *const SSL_CTX) -> size_t; 91992f3ab15Sopenharmony_ci #[cfg(all(ossl111, not(ossl111b)))] 92092f3ab15Sopenharmony_ci pub fn SSL_CTX_get_num_tickets(ctx: *mut SSL_CTX) -> size_t; 92192f3ab15Sopenharmony_ci 92292f3ab15Sopenharmony_ci #[cfg(ossl111b)] 92392f3ab15Sopenharmony_ci pub fn SSL_get_num_tickets(s: *const SSL) -> size_t; 92492f3ab15Sopenharmony_ci #[cfg(all(ossl111, not(ossl111b)))] 92592f3ab15Sopenharmony_ci pub fn SSL_get_num_tickets(s: *mut SSL) -> size_t; 92692f3ab15Sopenharmony_ci} 927