192f3ab15Sopenharmony_ciuse super::*;
292f3ab15Sopenharmony_ciuse libc::*;
392f3ab15Sopenharmony_ci
492f3ab15Sopenharmony_ciextern "C" {
592f3ab15Sopenharmony_ci    #[deprecated(note = "use CRYPTO_set_locking_callback__fixed_rust instead")]
692f3ab15Sopenharmony_ci    #[cfg(not(ossl110))]
792f3ab15Sopenharmony_ci    pub fn CRYPTO_set_locking_callback(
892f3ab15Sopenharmony_ci        func: unsafe extern "C" fn(mode: c_int, n: c_int, file: *const c_char, line: c_int),
992f3ab15Sopenharmony_ci    );
1092f3ab15Sopenharmony_ci
1192f3ab15Sopenharmony_ci    #[deprecated(note = "use CRYPTO_set_id_callback__fixed_rust instead")]
1292f3ab15Sopenharmony_ci    #[cfg(not(ossl110))]
1392f3ab15Sopenharmony_ci    pub fn CRYPTO_set_id_callback(func: unsafe extern "C" fn() -> c_ulong);
1492f3ab15Sopenharmony_ci}
1592f3ab15Sopenharmony_ci
1692f3ab15Sopenharmony_cicfg_if! {
1792f3ab15Sopenharmony_ci    if #[cfg(ossl110)] {
1892f3ab15Sopenharmony_ci        type CRYPTO_EX_new_ret = ();
1992f3ab15Sopenharmony_ci        type CRYPTO_EX_dup_from = *const CRYPTO_EX_DATA;
2092f3ab15Sopenharmony_ci    } else {
2192f3ab15Sopenharmony_ci        type CRYPTO_EX_new_ret = c_int;
2292f3ab15Sopenharmony_ci        type CRYPTO_EX_dup_from = *mut CRYPTO_EX_DATA;
2392f3ab15Sopenharmony_ci    }
2492f3ab15Sopenharmony_ci}
2592f3ab15Sopenharmony_ci
2692f3ab15Sopenharmony_cicfg_if! {
2792f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
2892f3ab15Sopenharmony_ci        type CRYPTO_EX_dup_from_d = *mut *mut c_void;
2992f3ab15Sopenharmony_ci    } else {
3092f3ab15Sopenharmony_ci        type CRYPTO_EX_dup_from_d = *mut c_void;
3192f3ab15Sopenharmony_ci    }
3292f3ab15Sopenharmony_ci}
3392f3ab15Sopenharmony_ci
3492f3ab15Sopenharmony_ci// FIXME should be options
3592f3ab15Sopenharmony_cipub type CRYPTO_EX_new = unsafe extern "C" fn(
3692f3ab15Sopenharmony_ci    parent: *mut c_void,
3792f3ab15Sopenharmony_ci    ptr: *mut c_void,
3892f3ab15Sopenharmony_ci    ad: *mut CRYPTO_EX_DATA,
3992f3ab15Sopenharmony_ci    idx: c_int,
4092f3ab15Sopenharmony_ci    argl: c_long,
4192f3ab15Sopenharmony_ci    argp: *mut c_void,
4292f3ab15Sopenharmony_ci) -> CRYPTO_EX_new_ret;
4392f3ab15Sopenharmony_cipub type CRYPTO_EX_dup = unsafe extern "C" fn(
4492f3ab15Sopenharmony_ci    to: *mut CRYPTO_EX_DATA,
4592f3ab15Sopenharmony_ci    from: CRYPTO_EX_dup_from,
4692f3ab15Sopenharmony_ci    from_d: CRYPTO_EX_dup_from_d,
4792f3ab15Sopenharmony_ci    idx: c_int,
4892f3ab15Sopenharmony_ci    argl: c_long,
4992f3ab15Sopenharmony_ci    argp: *mut c_void,
5092f3ab15Sopenharmony_ci) -> c_int;
5192f3ab15Sopenharmony_cipub type CRYPTO_EX_free = unsafe extern "C" fn(
5292f3ab15Sopenharmony_ci    parent: *mut c_void,
5392f3ab15Sopenharmony_ci    ptr: *mut c_void,
5492f3ab15Sopenharmony_ci    ad: *mut CRYPTO_EX_DATA,
5592f3ab15Sopenharmony_ci    idx: c_int,
5692f3ab15Sopenharmony_ci    argl: c_long,
5792f3ab15Sopenharmony_ci    argp: *mut c_void,
5892f3ab15Sopenharmony_ci);
5992f3ab15Sopenharmony_ci
6092f3ab15Sopenharmony_ci#[cfg(ossl110)]
6192f3ab15Sopenharmony_ci#[inline]
6292f3ab15Sopenharmony_ci#[track_caller]
6392f3ab15Sopenharmony_cipub unsafe fn OPENSSL_malloc(num: usize) -> *mut c_void {
6492f3ab15Sopenharmony_ci    CRYPTO_malloc(
6592f3ab15Sopenharmony_ci        num,
6692f3ab15Sopenharmony_ci        concat!(file!(), "\0").as_ptr() as *const _,
6792f3ab15Sopenharmony_ci        line!() as _,
6892f3ab15Sopenharmony_ci    )
6992f3ab15Sopenharmony_ci}
7092f3ab15Sopenharmony_ci
7192f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
7292f3ab15Sopenharmony_ci#[inline]
7392f3ab15Sopenharmony_ci#[track_caller]
7492f3ab15Sopenharmony_cipub unsafe fn OPENSSL_malloc(num: c_int) -> *mut c_void {
7592f3ab15Sopenharmony_ci    CRYPTO_malloc(
7692f3ab15Sopenharmony_ci        num,
7792f3ab15Sopenharmony_ci        concat!(file!(), "\0").as_ptr() as *const _,
7892f3ab15Sopenharmony_ci        line!() as _,
7992f3ab15Sopenharmony_ci    )
8092f3ab15Sopenharmony_ci}
8192f3ab15Sopenharmony_ci
8292f3ab15Sopenharmony_ci#[cfg(ossl110)]
8392f3ab15Sopenharmony_ci#[inline]
8492f3ab15Sopenharmony_ci#[track_caller]
8592f3ab15Sopenharmony_cipub unsafe fn OPENSSL_free(addr: *mut c_void) {
8692f3ab15Sopenharmony_ci    CRYPTO_free(
8792f3ab15Sopenharmony_ci        addr,
8892f3ab15Sopenharmony_ci        concat!(file!(), "\0").as_ptr() as *const _,
8992f3ab15Sopenharmony_ci        line!() as _,
9092f3ab15Sopenharmony_ci    )
9192f3ab15Sopenharmony_ci}
9292f3ab15Sopenharmony_ci
9392f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
9492f3ab15Sopenharmony_ci#[inline]
9592f3ab15Sopenharmony_cipub unsafe fn OPENSSL_free(addr: *mut c_void) {
9692f3ab15Sopenharmony_ci    CRYPTO_free(addr)
9792f3ab15Sopenharmony_ci}
9892f3ab15Sopenharmony_ci
9992f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
10092f3ab15Sopenharmony_cipub const CRYPTO_LOCK_X509: c_int = 3;
10192f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
10292f3ab15Sopenharmony_cipub const CRYPTO_LOCK_EVP_PKEY: c_int = 10;
10392f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
10492f3ab15Sopenharmony_cipub const CRYPTO_LOCK_SSL_CTX: c_int = 12;
10592f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
10692f3ab15Sopenharmony_cipub const CRYPTO_LOCK_SSL_SESSION: c_int = 14;
10792f3ab15Sopenharmony_ci
10892f3ab15Sopenharmony_cicfg_if! {
10992f3ab15Sopenharmony_ci    if #[cfg(ossl110)] {
11092f3ab15Sopenharmony_ci        pub const CRYPTO_EX_INDEX_SSL: c_int = 0;
11192f3ab15Sopenharmony_ci        pub const CRYPTO_EX_INDEX_SSL_CTX: c_int = 1;
11292f3ab15Sopenharmony_ci    } else if #[cfg(libressl)] {
11392f3ab15Sopenharmony_ci        pub const CRYPTO_EX_INDEX_SSL: c_int = 1;
11492f3ab15Sopenharmony_ci        pub const CRYPTO_EX_INDEX_SSL_CTX: c_int = 2;
11592f3ab15Sopenharmony_ci    }
11692f3ab15Sopenharmony_ci}
11792f3ab15Sopenharmony_ci
11892f3ab15Sopenharmony_cicfg_if! {
11992f3ab15Sopenharmony_ci    if #[cfg(any(ossl110, libressl271))] {
12092f3ab15Sopenharmony_ci        pub const OPENSSL_VERSION: c_int = 0;
12192f3ab15Sopenharmony_ci        pub const OPENSSL_CFLAGS: c_int = 1;
12292f3ab15Sopenharmony_ci        pub const OPENSSL_BUILT_ON: c_int = 2;
12392f3ab15Sopenharmony_ci        pub const OPENSSL_PLATFORM: c_int = 3;
12492f3ab15Sopenharmony_ci        pub const OPENSSL_DIR: c_int = 4;
12592f3ab15Sopenharmony_ci    } else {
12692f3ab15Sopenharmony_ci        pub const SSLEAY_VERSION: c_int = 0;
12792f3ab15Sopenharmony_ci        pub const SSLEAY_CFLAGS: c_int = 2;
12892f3ab15Sopenharmony_ci        pub const SSLEAY_BUILT_ON: c_int = 3;
12992f3ab15Sopenharmony_ci        pub const SSLEAY_PLATFORM: c_int = 4;
13092f3ab15Sopenharmony_ci        pub const SSLEAY_DIR: c_int = 5;
13192f3ab15Sopenharmony_ci    }
13292f3ab15Sopenharmony_ci}
13392f3ab15Sopenharmony_ci
13492f3ab15Sopenharmony_cipub const CRYPTO_LOCK: c_int = 1;
135