192f3ab15Sopenharmony_ciuse libc::*;
292f3ab15Sopenharmony_ciuse std::ptr;
392f3ab15Sopenharmony_ci
492f3ab15Sopenharmony_ciuse super::*;
592f3ab15Sopenharmony_ci
692f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
792f3ab15Sopenharmony_cipub const SSL_MAX_KRB5_PRINCIPAL_LENGTH: c_int = 256;
892f3ab15Sopenharmony_ci
992f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
1092f3ab15Sopenharmony_cipub const SSL_MAX_SSL_SESSION_ID_LENGTH: c_int = 32;
1192f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
1292f3ab15Sopenharmony_cipub const SSL_MAX_SID_CTX_LENGTH: c_int = 32;
1392f3ab15Sopenharmony_ci
1492f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
1592f3ab15Sopenharmony_cipub const SSL_MAX_KEY_ARG_LENGTH: c_int = 8;
1692f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
1792f3ab15Sopenharmony_cipub const SSL_MAX_MASTER_KEY_LENGTH: c_int = 48;
1892f3ab15Sopenharmony_ci
1992f3ab15Sopenharmony_cipub const SSL_SENT_SHUTDOWN: c_int = 1;
2092f3ab15Sopenharmony_cipub const SSL_RECEIVED_SHUTDOWN: c_int = 2;
2192f3ab15Sopenharmony_ci
2292f3ab15Sopenharmony_cipub const SSL_FILETYPE_PEM: c_int = X509_FILETYPE_PEM;
2392f3ab15Sopenharmony_cipub const SSL_FILETYPE_ASN1: c_int = X509_FILETYPE_ASN1;
2492f3ab15Sopenharmony_ci
2592f3ab15Sopenharmony_ci#[cfg(ossl111)]
2692f3ab15Sopenharmony_cipub const SSL_EXT_TLS_ONLY: c_uint = 0x0001;
2792f3ab15Sopenharmony_ci/* This extension is only allowed in DTLS */
2892f3ab15Sopenharmony_ci#[cfg(ossl111)]
2992f3ab15Sopenharmony_cipub const SSL_EXT_DTLS_ONLY: c_uint = 0x0002;
3092f3ab15Sopenharmony_ci/* Some extensions may be allowed in DTLS but we don't implement them for it */
3192f3ab15Sopenharmony_ci#[cfg(ossl111)]
3292f3ab15Sopenharmony_cipub const SSL_EXT_TLS_IMPLEMENTATION_ONLY: c_uint = 0x0004;
3392f3ab15Sopenharmony_ci/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */
3492f3ab15Sopenharmony_ci#[cfg(ossl111)]
3592f3ab15Sopenharmony_cipub const SSL_EXT_SSL3_ALLOWED: c_uint = 0x0008;
3692f3ab15Sopenharmony_ci/* Extension is only defined for TLS1.2 and below */
3792f3ab15Sopenharmony_ci#[cfg(ossl111)]
3892f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_2_AND_BELOW_ONLY: c_uint = 0x0010;
3992f3ab15Sopenharmony_ci/* Extension is only defined for TLS1.3 and above */
4092f3ab15Sopenharmony_ci#[cfg(ossl111)]
4192f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_3_ONLY: c_uint = 0x0020;
4292f3ab15Sopenharmony_ci/* Ignore this extension during parsing if we are resuming */
4392f3ab15Sopenharmony_ci#[cfg(ossl111)]
4492f3ab15Sopenharmony_cipub const SSL_EXT_IGNORE_ON_RESUMPTION: c_uint = 0x0040;
4592f3ab15Sopenharmony_ci#[cfg(ossl111)]
4692f3ab15Sopenharmony_cipub const SSL_EXT_CLIENT_HELLO: c_uint = 0x0080;
4792f3ab15Sopenharmony_ci/* Really means TLS1.2 or below */
4892f3ab15Sopenharmony_ci#[cfg(ossl111)]
4992f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_2_SERVER_HELLO: c_uint = 0x0100;
5092f3ab15Sopenharmony_ci#[cfg(ossl111)]
5192f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_3_SERVER_HELLO: c_uint = 0x0200;
5292f3ab15Sopenharmony_ci#[cfg(ossl111)]
5392f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS: c_uint = 0x0400;
5492f3ab15Sopenharmony_ci#[cfg(ossl111)]
5592f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST: c_uint = 0x0800;
5692f3ab15Sopenharmony_ci#[cfg(ossl111)]
5792f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_3_CERTIFICATE: c_uint = 0x1000;
5892f3ab15Sopenharmony_ci#[cfg(ossl111)]
5992f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_3_NEW_SESSION_TICKET: c_uint = 0x2000;
6092f3ab15Sopenharmony_ci#[cfg(ossl111)]
6192f3ab15Sopenharmony_cipub const SSL_EXT_TLS1_3_CERTIFICATE_REQUEST: c_uint = 0x4000;
6292f3ab15Sopenharmony_ci
6392f3ab15Sopenharmony_cicfg_if! {
6492f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
6592f3ab15Sopenharmony_ci        macro_rules! ssl_op_type {
6692f3ab15Sopenharmony_ci            () => {u64};
6792f3ab15Sopenharmony_ci        }
6892f3ab15Sopenharmony_ci    } else {
6992f3ab15Sopenharmony_ci        macro_rules! ssl_op_type {
7092f3ab15Sopenharmony_ci            () => {c_ulong};
7192f3ab15Sopenharmony_ci        }
7292f3ab15Sopenharmony_ci    }
7392f3ab15Sopenharmony_ci}
7492f3ab15Sopenharmony_ci
7592f3ab15Sopenharmony_cipub const SSL_OP_LEGACY_SERVER_CONNECT: ssl_op_type!() = 0x00000004;
7692f3ab15Sopenharmony_cicfg_if! {
7792f3ab15Sopenharmony_ci    if #[cfg(libressl261)] {
7892f3ab15Sopenharmony_ci        pub const SSL_OP_TLSEXT_PADDING: ssl_op_type!() = 0x0;
7992f3ab15Sopenharmony_ci    } else if #[cfg(any(ossl102, libressl))] {
8092f3ab15Sopenharmony_ci        pub const SSL_OP_TLSEXT_PADDING: ssl_op_type!() = 0x10;
8192f3ab15Sopenharmony_ci    }
8292f3ab15Sopenharmony_ci}
8392f3ab15Sopenharmony_ci#[cfg(ossl101)]
8492f3ab15Sopenharmony_cipub const SSL_OP_SAFARI_ECDHE_ECDSA_BUG: ssl_op_type!() = 0x00000040;
8592f3ab15Sopenharmony_ci
8692f3ab15Sopenharmony_cipub const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: ssl_op_type!() = 0x00000800;
8792f3ab15Sopenharmony_ci
8892f3ab15Sopenharmony_cipub const SSL_OP_NO_QUERY_MTU: ssl_op_type!() = 0x00001000;
8992f3ab15Sopenharmony_cipub const SSL_OP_COOKIE_EXCHANGE: ssl_op_type!() = 0x00002000;
9092f3ab15Sopenharmony_cipub const SSL_OP_NO_TICKET: ssl_op_type!() = 0x00004000;
9192f3ab15Sopenharmony_cicfg_if! {
9292f3ab15Sopenharmony_ci    if #[cfg(ossl101)] {
9392f3ab15Sopenharmony_ci        pub const SSL_OP_CISCO_ANYCONNECT: ssl_op_type!() = 0x00008000;
9492f3ab15Sopenharmony_ci    } else {
9592f3ab15Sopenharmony_ci        pub const SSL_OP_CISCO_ANYCONNECT: ssl_op_type!() = 0x0;
9692f3ab15Sopenharmony_ci    }
9792f3ab15Sopenharmony_ci}
9892f3ab15Sopenharmony_ci
9992f3ab15Sopenharmony_cipub const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: ssl_op_type!() = 0x00010000;
10092f3ab15Sopenharmony_cicfg_if! {
10192f3ab15Sopenharmony_ci    if #[cfg(ossl101)] {
10292f3ab15Sopenharmony_ci        pub const SSL_OP_NO_COMPRESSION: ssl_op_type!() = 0x00020000;
10392f3ab15Sopenharmony_ci        pub const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: ssl_op_type!() = 0x00040000;
10492f3ab15Sopenharmony_ci    } else {
10592f3ab15Sopenharmony_ci        pub const SSL_OP_NO_COMPRESSION: ssl_op_type!() = 0x0;
10692f3ab15Sopenharmony_ci        pub const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: ssl_op_type!() = 0x0;
10792f3ab15Sopenharmony_ci    }
10892f3ab15Sopenharmony_ci}
10992f3ab15Sopenharmony_ci
11092f3ab15Sopenharmony_ci#[cfg(ossl111)]
11192f3ab15Sopenharmony_cipub const SSL_OP_ENABLE_MIDDLEBOX_COMPAT: ssl_op_type!() = 0x00100000;
11292f3ab15Sopenharmony_ci#[cfg(ossl111)]
11392f3ab15Sopenharmony_cipub const SSL_OP_PRIORITIZE_CHACHA: ssl_op_type!() = 0x00200000;
11492f3ab15Sopenharmony_ci
11592f3ab15Sopenharmony_cipub const SSL_OP_CIPHER_SERVER_PREFERENCE: ssl_op_type!() = 0x00400000;
11692f3ab15Sopenharmony_cicfg_if! {
11792f3ab15Sopenharmony_ci    if #[cfg(libressl280)] {
11892f3ab15Sopenharmony_ci        pub const SSL_OP_TLS_ROLLBACK_BUG: ssl_op_type!() = 0;
11992f3ab15Sopenharmony_ci    } else {
12092f3ab15Sopenharmony_ci        pub const SSL_OP_TLS_ROLLBACK_BUG: ssl_op_type!() = 0x00800000;
12192f3ab15Sopenharmony_ci    }
12292f3ab15Sopenharmony_ci}
12392f3ab15Sopenharmony_ci
12492f3ab15Sopenharmony_cicfg_if! {
12592f3ab15Sopenharmony_ci    if #[cfg(ossl101)] {
12692f3ab15Sopenharmony_ci        pub const SSL_OP_NO_SSLv3: ssl_op_type!() = 0x02000000;
12792f3ab15Sopenharmony_ci    } else {
12892f3ab15Sopenharmony_ci        pub const SSL_OP_NO_SSLv3: ssl_op_type!() = 0x0;
12992f3ab15Sopenharmony_ci    }
13092f3ab15Sopenharmony_ci}
13192f3ab15Sopenharmony_cipub const SSL_OP_NO_TLSv1_1: ssl_op_type!() = 0x10000000;
13292f3ab15Sopenharmony_cipub const SSL_OP_NO_TLSv1_2: ssl_op_type!() = 0x08000000;
13392f3ab15Sopenharmony_ci
13492f3ab15Sopenharmony_cipub const SSL_OP_NO_TLSv1: ssl_op_type!() = 0x04000000;
13592f3ab15Sopenharmony_cicfg_if! {
13692f3ab15Sopenharmony_ci    if #[cfg(ossl102)] {
13792f3ab15Sopenharmony_ci        pub const SSL_OP_NO_DTLSv1: ssl_op_type!() = 0x04000000;
13892f3ab15Sopenharmony_ci        pub const SSL_OP_NO_DTLSv1_2: ssl_op_type!() = 0x08000000;
13992f3ab15Sopenharmony_ci    } else if #[cfg(libressl332)] {
14092f3ab15Sopenharmony_ci        pub const SSL_OP_NO_DTLSv1: ssl_op_type!() = 0x40000000;
14192f3ab15Sopenharmony_ci        pub const SSL_OP_NO_DTLSv1_2: ssl_op_type!() = 0x80000000;
14292f3ab15Sopenharmony_ci    }
14392f3ab15Sopenharmony_ci}
14492f3ab15Sopenharmony_ci#[cfg(any(ossl111, libressl340))]
14592f3ab15Sopenharmony_cipub const SSL_OP_NO_TLSv1_3: ssl_op_type!() = 0x20000000;
14692f3ab15Sopenharmony_ci
14792f3ab15Sopenharmony_ci#[cfg(ossl110h)]
14892f3ab15Sopenharmony_cipub const SSL_OP_NO_RENEGOTIATION: ssl_op_type!() = 0x40000000;
14992f3ab15Sopenharmony_ci
15092f3ab15Sopenharmony_cicfg_if! {
15192f3ab15Sopenharmony_ci    if #[cfg(ossl111)] {
15292f3ab15Sopenharmony_ci        pub const SSL_OP_NO_SSL_MASK: ssl_op_type!() = SSL_OP_NO_SSLv2
15392f3ab15Sopenharmony_ci            | SSL_OP_NO_SSLv3
15492f3ab15Sopenharmony_ci            | SSL_OP_NO_TLSv1
15592f3ab15Sopenharmony_ci            | SSL_OP_NO_TLSv1_1
15692f3ab15Sopenharmony_ci            | SSL_OP_NO_TLSv1_2
15792f3ab15Sopenharmony_ci            | SSL_OP_NO_TLSv1_3;
15892f3ab15Sopenharmony_ci    } else if #[cfg(ossl102)] {
15992f3ab15Sopenharmony_ci        pub const SSL_OP_NO_SSL_MASK: ssl_op_type!() =
16092f3ab15Sopenharmony_ci            SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2;
16192f3ab15Sopenharmony_ci    }
16292f3ab15Sopenharmony_ci}
16392f3ab15Sopenharmony_ci
16492f3ab15Sopenharmony_cicfg_if! {
16592f3ab15Sopenharmony_ci    if #[cfg(libressl261)] {
16692f3ab15Sopenharmony_ci        pub const SSL_OP_CRYPTOPRO_TLSEXT_BUG: ssl_op_type!() = 0x0;
16792f3ab15Sopenharmony_ci    } else {
16892f3ab15Sopenharmony_ci        pub const SSL_OP_CRYPTOPRO_TLSEXT_BUG: ssl_op_type!() = 0x80000000;
16992f3ab15Sopenharmony_ci    }
17092f3ab15Sopenharmony_ci}
17192f3ab15Sopenharmony_ci
17292f3ab15Sopenharmony_cicfg_if! {
17392f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
17492f3ab15Sopenharmony_ci        pub const SSL_OP_ALL: ssl_op_type!() = SSL_OP_CRYPTOPRO_TLSEXT_BUG
17592f3ab15Sopenharmony_ci            | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
17692f3ab15Sopenharmony_ci            | SSL_OP_TLSEXT_PADDING
17792f3ab15Sopenharmony_ci            | SSL_OP_SAFARI_ECDHE_ECDSA_BUG;
17892f3ab15Sopenharmony_ci    } else if #[cfg(ossl110f)] {
17992f3ab15Sopenharmony_ci        pub const SSL_OP_ALL: ssl_op_type!() = SSL_OP_CRYPTOPRO_TLSEXT_BUG
18092f3ab15Sopenharmony_ci            | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
18192f3ab15Sopenharmony_ci            | SSL_OP_LEGACY_SERVER_CONNECT
18292f3ab15Sopenharmony_ci            | SSL_OP_TLSEXT_PADDING
18392f3ab15Sopenharmony_ci            | SSL_OP_SAFARI_ECDHE_ECDSA_BUG;
18492f3ab15Sopenharmony_ci    } else if #[cfg(libressl261)] {
18592f3ab15Sopenharmony_ci        pub const SSL_OP_ALL: ssl_op_type!() = 0x4;
18692f3ab15Sopenharmony_ci    } else if #[cfg(libressl)] {
18792f3ab15Sopenharmony_ci        pub const SSL_OP_ALL: ssl_op_type!() = 0x80000014;
18892f3ab15Sopenharmony_ci    } else {
18992f3ab15Sopenharmony_ci        pub const SSL_OP_ALL: ssl_op_type!() = 0x80000BFF;
19092f3ab15Sopenharmony_ci    }
19192f3ab15Sopenharmony_ci}
19292f3ab15Sopenharmony_ci
19392f3ab15Sopenharmony_cicfg_if! {
19492f3ab15Sopenharmony_ci    if #[cfg(ossl110)] {
19592f3ab15Sopenharmony_ci        pub const SSL_OP_MICROSOFT_SESS_ID_BUG: ssl_op_type!() = 0x00000000;
19692f3ab15Sopenharmony_ci        pub const SSL_OP_NETSCAPE_CHALLENGE_BUG: ssl_op_type!() = 0x00000000;
19792f3ab15Sopenharmony_ci        pub const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: ssl_op_type!() = 0x00000000;
19892f3ab15Sopenharmony_ci        pub const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: ssl_op_type!() = 0x00000000;
19992f3ab15Sopenharmony_ci        pub const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: ssl_op_type!() = 0x00000000;
20092f3ab15Sopenharmony_ci        pub const SSL_OP_TLS_D5_BUG: ssl_op_type!() = 0x00000000;
20192f3ab15Sopenharmony_ci        pub const SSL_OP_TLS_BLOCK_PADDING_BUG: ssl_op_type!() = 0x00000000;
20292f3ab15Sopenharmony_ci        pub const SSL_OP_SINGLE_ECDH_USE: ssl_op_type!() = 0x00000000;
20392f3ab15Sopenharmony_ci        pub const SSL_OP_SINGLE_DH_USE: ssl_op_type!() = 0x00000000;
20492f3ab15Sopenharmony_ci        pub const SSL_OP_NO_SSLv2: ssl_op_type!() = 0x00000000;
20592f3ab15Sopenharmony_ci    } else if #[cfg(ossl101)] {
20692f3ab15Sopenharmony_ci        pub const SSL_OP_MICROSOFT_SESS_ID_BUG: ssl_op_type!() = 0x00000001;
20792f3ab15Sopenharmony_ci        pub const SSL_OP_NETSCAPE_CHALLENGE_BUG: ssl_op_type!() = 0x00000002;
20892f3ab15Sopenharmony_ci        pub const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: ssl_op_type!() = 0x00000008;
20992f3ab15Sopenharmony_ci        pub const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: ssl_op_type!() = 0x00000020;
21092f3ab15Sopenharmony_ci        pub const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: ssl_op_type!() = 0x00000080;
21192f3ab15Sopenharmony_ci        pub const SSL_OP_TLS_D5_BUG: ssl_op_type!() = 0x00000100;
21292f3ab15Sopenharmony_ci        pub const SSL_OP_TLS_BLOCK_PADDING_BUG: ssl_op_type!() = 0x00000200;
21392f3ab15Sopenharmony_ci        pub const SSL_OP_SINGLE_ECDH_USE: ssl_op_type!() = 0x00080000;
21492f3ab15Sopenharmony_ci        pub const SSL_OP_SINGLE_DH_USE: ssl_op_type!() = 0x00100000;
21592f3ab15Sopenharmony_ci        pub const SSL_OP_NO_SSLv2: ssl_op_type!() = 0x01000000;
21692f3ab15Sopenharmony_ci    } else {
21792f3ab15Sopenharmony_ci        pub const SSL_OP_MICROSOFT_SESS_ID_BUG: ssl_op_type!() = 0x0;
21892f3ab15Sopenharmony_ci        pub const SSL_OP_NETSCAPE_CHALLENGE_BUG: ssl_op_type!() = 0x0;
21992f3ab15Sopenharmony_ci        pub const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: ssl_op_type!() = 0x0;
22092f3ab15Sopenharmony_ci        pub const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: ssl_op_type!() = 0x0;
22192f3ab15Sopenharmony_ci        pub const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: ssl_op_type!() = 0x0;
22292f3ab15Sopenharmony_ci        pub const SSL_OP_TLS_D5_BUG: ssl_op_type!() = 0x0;
22392f3ab15Sopenharmony_ci        pub const SSL_OP_TLS_BLOCK_PADDING_BUG: ssl_op_type!() = 0x0;
22492f3ab15Sopenharmony_ci        #[cfg(libressl261)]
22592f3ab15Sopenharmony_ci        pub const SSL_OP_SINGLE_ECDH_USE: ssl_op_type!() = 0x0;
22692f3ab15Sopenharmony_ci        #[cfg(not(libressl261))]
22792f3ab15Sopenharmony_ci        pub const SSL_OP_SINGLE_ECDH_USE: ssl_op_type!() = 0x00080000;
22892f3ab15Sopenharmony_ci        pub const SSL_OP_SINGLE_DH_USE: ssl_op_type!() = 0x00100000;
22992f3ab15Sopenharmony_ci        pub const SSL_OP_NO_SSLv2: ssl_op_type!() = 0x0;
23092f3ab15Sopenharmony_ci    }
23192f3ab15Sopenharmony_ci}
23292f3ab15Sopenharmony_ci
23392f3ab15Sopenharmony_cipub const SSL_MODE_ENABLE_PARTIAL_WRITE: c_long = 0x1;
23492f3ab15Sopenharmony_cipub const SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER: c_long = 0x2;
23592f3ab15Sopenharmony_cipub const SSL_MODE_AUTO_RETRY: c_long = 0x4;
23692f3ab15Sopenharmony_cipub const SSL_MODE_NO_AUTO_CHAIN: c_long = 0x8;
23792f3ab15Sopenharmony_cipub const SSL_MODE_RELEASE_BUFFERS: c_long = 0x10;
23892f3ab15Sopenharmony_ci#[cfg(ossl101)]
23992f3ab15Sopenharmony_cipub const SSL_MODE_SEND_CLIENTHELLO_TIME: c_long = 0x20;
24092f3ab15Sopenharmony_ci#[cfg(ossl101)]
24192f3ab15Sopenharmony_cipub const SSL_MODE_SEND_SERVERHELLO_TIME: c_long = 0x40;
24292f3ab15Sopenharmony_ci#[cfg(ossl101)]
24392f3ab15Sopenharmony_cipub const SSL_MODE_SEND_FALLBACK_SCSV: c_long = 0x80;
24492f3ab15Sopenharmony_ci
24592f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_set_mode(ctx: *mut SSL_CTX, op: c_long) -> c_long {
24692f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_MODE, op, ptr::null_mut())
24792f3ab15Sopenharmony_ci}
24892f3ab15Sopenharmony_ci
24992f3ab15Sopenharmony_ci#[cfg(ossl111)]
25092f3ab15Sopenharmony_cipub const SSL_COOKIE_LENGTH: c_int = 4096;
25192f3ab15Sopenharmony_ci
25292f3ab15Sopenharmony_cicfg_if! {
25392f3ab15Sopenharmony_ci    if #[cfg(not(ossl110))] {
25492f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_get_options(ctx: *const SSL_CTX) -> c_ulong {
25592f3ab15Sopenharmony_ci            SSL_CTX_ctrl(ctx as *mut _, SSL_CTRL_OPTIONS, 0, ptr::null_mut()) as c_ulong
25692f3ab15Sopenharmony_ci        }
25792f3ab15Sopenharmony_ci
25892f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_set_options(ctx: *const SSL_CTX, op: c_ulong) -> c_ulong {
25992f3ab15Sopenharmony_ci            SSL_CTX_ctrl(
26092f3ab15Sopenharmony_ci                ctx as *mut _,
26192f3ab15Sopenharmony_ci                SSL_CTRL_OPTIONS,
26292f3ab15Sopenharmony_ci                op as c_long,
26392f3ab15Sopenharmony_ci                ptr::null_mut(),
26492f3ab15Sopenharmony_ci            ) as c_ulong
26592f3ab15Sopenharmony_ci        }
26692f3ab15Sopenharmony_ci
26792f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_clear_options(ctx: *const SSL_CTX, op: c_ulong) -> c_ulong {
26892f3ab15Sopenharmony_ci            SSL_CTX_ctrl(
26992f3ab15Sopenharmony_ci                ctx as *mut _,
27092f3ab15Sopenharmony_ci                SSL_CTRL_CLEAR_OPTIONS,
27192f3ab15Sopenharmony_ci                op as c_long,
27292f3ab15Sopenharmony_ci                ptr::null_mut(),
27392f3ab15Sopenharmony_ci            ) as c_ulong
27492f3ab15Sopenharmony_ci        }
27592f3ab15Sopenharmony_ci    }
27692f3ab15Sopenharmony_ci}
27792f3ab15Sopenharmony_ci
27892f3ab15Sopenharmony_cipub unsafe fn SSL_set_mtu(ssl: *mut SSL, mtu: c_long) -> c_long {
27992f3ab15Sopenharmony_ci    SSL_ctrl(ssl, SSL_CTRL_SET_MTU, mtu, ptr::null_mut())
28092f3ab15Sopenharmony_ci}
28192f3ab15Sopenharmony_ci
28292f3ab15Sopenharmony_ci#[cfg(ossl110)]
28392f3ab15Sopenharmony_cipub unsafe fn SSL_get_extms_support(ssl: *mut SSL) -> c_long {
28492f3ab15Sopenharmony_ci    SSL_ctrl(ssl, SSL_CTRL_GET_EXTMS_SUPPORT, 0, ptr::null_mut())
28592f3ab15Sopenharmony_ci}
28692f3ab15Sopenharmony_ci
28792f3ab15Sopenharmony_cipub const SSL_SESS_CACHE_OFF: c_long = 0x0;
28892f3ab15Sopenharmony_cipub const SSL_SESS_CACHE_CLIENT: c_long = 0x1;
28992f3ab15Sopenharmony_cipub const SSL_SESS_CACHE_SERVER: c_long = 0x2;
29092f3ab15Sopenharmony_cipub const SSL_SESS_CACHE_BOTH: c_long = SSL_SESS_CACHE_CLIENT | SSL_SESS_CACHE_SERVER;
29192f3ab15Sopenharmony_cipub const SSL_SESS_CACHE_NO_AUTO_CLEAR: c_long = 0x80;
29292f3ab15Sopenharmony_cipub const SSL_SESS_CACHE_NO_INTERNAL_LOOKUP: c_long = 0x100;
29392f3ab15Sopenharmony_cipub const SSL_SESS_CACHE_NO_INTERNAL_STORE: c_long = 0x200;
29492f3ab15Sopenharmony_cipub const SSL_SESS_CACHE_NO_INTERNAL: c_long =
29592f3ab15Sopenharmony_ci    SSL_SESS_CACHE_NO_INTERNAL_LOOKUP | SSL_SESS_CACHE_NO_INTERNAL_STORE;
29692f3ab15Sopenharmony_ci
29792f3ab15Sopenharmony_cipub const OPENSSL_NPN_UNSUPPORTED: c_int = 0;
29892f3ab15Sopenharmony_cipub const OPENSSL_NPN_NEGOTIATED: c_int = 1;
29992f3ab15Sopenharmony_cipub const OPENSSL_NPN_NO_OVERLAP: c_int = 2;
30092f3ab15Sopenharmony_ci
30192f3ab15Sopenharmony_cipub const SSL_AD_ILLEGAL_PARAMETER: c_int = SSL3_AD_ILLEGAL_PARAMETER;
30292f3ab15Sopenharmony_cipub const SSL_AD_DECODE_ERROR: c_int = TLS1_AD_DECODE_ERROR;
30392f3ab15Sopenharmony_cipub const SSL_AD_UNRECOGNIZED_NAME: c_int = TLS1_AD_UNRECOGNIZED_NAME;
30492f3ab15Sopenharmony_cipub const SSL_ERROR_NONE: c_int = 0;
30592f3ab15Sopenharmony_cipub const SSL_ERROR_SSL: c_int = 1;
30692f3ab15Sopenharmony_cipub const SSL_ERROR_SYSCALL: c_int = 5;
30792f3ab15Sopenharmony_cipub const SSL_ERROR_WANT_ACCEPT: c_int = 8;
30892f3ab15Sopenharmony_cipub const SSL_ERROR_WANT_CONNECT: c_int = 7;
30992f3ab15Sopenharmony_cipub const SSL_ERROR_WANT_READ: c_int = 2;
31092f3ab15Sopenharmony_cipub const SSL_ERROR_WANT_WRITE: c_int = 3;
31192f3ab15Sopenharmony_cipub const SSL_ERROR_WANT_X509_LOOKUP: c_int = 4;
31292f3ab15Sopenharmony_cipub const SSL_ERROR_ZERO_RETURN: c_int = 6;
31392f3ab15Sopenharmony_ci#[cfg(ossl111)]
31492f3ab15Sopenharmony_cipub const SSL_ERROR_WANT_CLIENT_HELLO_CB: c_int = 11;
31592f3ab15Sopenharmony_cipub const SSL_VERIFY_NONE: c_int = 0;
31692f3ab15Sopenharmony_cipub const SSL_VERIFY_PEER: c_int = 1;
31792f3ab15Sopenharmony_cipub const SSL_VERIFY_FAIL_IF_NO_PEER_CERT: c_int = 2;
31892f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TMP_DH: c_int = 3;
31992f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TMP_ECDH: c_int = 4;
32092f3ab15Sopenharmony_ci#[cfg(any(libressl, all(ossl101, not(ossl110))))]
32192f3ab15Sopenharmony_cipub const SSL_CTRL_GET_SESSION_REUSED: c_int = 8;
32292f3ab15Sopenharmony_cipub const SSL_CTRL_EXTRA_CHAIN_CERT: c_int = 14;
32392f3ab15Sopenharmony_cipub const SSL_CTRL_SET_MTU: c_int = 17;
32492f3ab15Sopenharmony_ci#[cfg(any(libressl, all(ossl101, not(ossl110))))]
32592f3ab15Sopenharmony_cipub const SSL_CTRL_OPTIONS: c_int = 32;
32692f3ab15Sopenharmony_cipub const SSL_CTRL_MODE: c_int = 33;
32792f3ab15Sopenharmony_cipub const SSL_CTRL_SET_READ_AHEAD: c_int = 41;
32892f3ab15Sopenharmony_cipub const SSL_CTRL_SET_SESS_CACHE_SIZE: c_int = 42;
32992f3ab15Sopenharmony_cipub const SSL_CTRL_GET_SESS_CACHE_SIZE: c_int = 43;
33092f3ab15Sopenharmony_cipub const SSL_CTRL_SET_SESS_CACHE_MODE: c_int = 44;
33192f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: c_int = 53;
33292f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG: c_int = 54;
33392f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TLSEXT_HOSTNAME: c_int = 55;
33492f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB: c_int = 63;
33592f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG: c_int = 64;
33692f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE: c_int = 65;
33792f3ab15Sopenharmony_cipub const SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP: c_int = 70;
33892f3ab15Sopenharmony_cipub const SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP: c_int = 71;
33992f3ab15Sopenharmony_ci#[cfg(any(libressl, all(ossl101, not(ossl110))))]
34092f3ab15Sopenharmony_cipub const SSL_CTRL_CLEAR_OPTIONS: c_int = 77;
34192f3ab15Sopenharmony_cipub const SSL_CTRL_GET_EXTRA_CHAIN_CERTS: c_int = 82;
34292f3ab15Sopenharmony_ci#[cfg(ossl102)]
34392f3ab15Sopenharmony_cipub const SSL_CTRL_CHAIN_CERT: c_int = 89;
34492f3ab15Sopenharmony_ci#[cfg(any(ossl111, libressl252))]
34592f3ab15Sopenharmony_cipub const SSL_CTRL_SET_GROUPS_LIST: c_int = 92;
34692f3ab15Sopenharmony_ci#[cfg(any(libressl, all(ossl102, not(ossl110))))]
34792f3ab15Sopenharmony_cipub const SSL_CTRL_SET_ECDH_AUTO: c_int = 94;
34892f3ab15Sopenharmony_ci#[cfg(ossl102)]
34992f3ab15Sopenharmony_cipub const SSL_CTRL_SET_SIGALGS_LIST: c_int = 98;
35092f3ab15Sopenharmony_ci#[cfg(ossl102)]
35192f3ab15Sopenharmony_cipub const SSL_CTRL_SET_VERIFY_CERT_STORE: c_int = 106;
35292f3ab15Sopenharmony_ci#[cfg(ossl110)]
35392f3ab15Sopenharmony_cipub const SSL_CTRL_GET_EXTMS_SUPPORT: c_int = 122;
35492f3ab15Sopenharmony_ci#[cfg(any(ossl110, libressl261))]
35592f3ab15Sopenharmony_cipub const SSL_CTRL_SET_MIN_PROTO_VERSION: c_int = 123;
35692f3ab15Sopenharmony_ci#[cfg(any(ossl110, libressl261))]
35792f3ab15Sopenharmony_cipub const SSL_CTRL_SET_MAX_PROTO_VERSION: c_int = 124;
35892f3ab15Sopenharmony_ci#[cfg(any(ossl110g, libressl270))]
35992f3ab15Sopenharmony_cipub const SSL_CTRL_GET_MIN_PROTO_VERSION: c_int = 130;
36092f3ab15Sopenharmony_ci#[cfg(any(ossl110g, libressl270))]
36192f3ab15Sopenharmony_cipub const SSL_CTRL_GET_MAX_PROTO_VERSION: c_int = 131;
36292f3ab15Sopenharmony_ci
36392f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_set_tmp_dh(ctx: *mut SSL_CTX, dh: *mut DH) -> c_long {
36492f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_DH, 0, dh as *mut c_void)
36592f3ab15Sopenharmony_ci}
36692f3ab15Sopenharmony_ci
36792f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_set_tmp_ecdh(ctx: *mut SSL_CTX, key: *mut EC_KEY) -> c_long {
36892f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_SET_TMP_ECDH, 0, key as *mut c_void)
36992f3ab15Sopenharmony_ci}
37092f3ab15Sopenharmony_ci
37192f3ab15Sopenharmony_cipub unsafe fn SSL_set_tmp_dh(ssl: *mut SSL, dh: *mut DH) -> c_long {
37292f3ab15Sopenharmony_ci    SSL_ctrl(ssl, SSL_CTRL_SET_TMP_DH, 0, dh as *mut c_void)
37392f3ab15Sopenharmony_ci}
37492f3ab15Sopenharmony_ci
37592f3ab15Sopenharmony_cipub unsafe fn SSL_set_tmp_ecdh(ssl: *mut SSL, key: *mut EC_KEY) -> c_long {
37692f3ab15Sopenharmony_ci    SSL_ctrl(ssl, SSL_CTRL_SET_TMP_ECDH, 0, key as *mut c_void)
37792f3ab15Sopenharmony_ci}
37892f3ab15Sopenharmony_ci
37992f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_add_extra_chain_cert(ctx: *mut SSL_CTX, x509: *mut X509) -> c_long {
38092f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0, x509 as *mut c_void)
38192f3ab15Sopenharmony_ci}
38292f3ab15Sopenharmony_ci
38392f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_get_extra_chain_certs(
38492f3ab15Sopenharmony_ci    ctx: *mut SSL_CTX,
38592f3ab15Sopenharmony_ci    chain: *mut *mut stack_st_X509,
38692f3ab15Sopenharmony_ci) -> c_long {
38792f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_GET_EXTRA_CHAIN_CERTS, 0, chain as *mut c_void)
38892f3ab15Sopenharmony_ci}
38992f3ab15Sopenharmony_ci
39092f3ab15Sopenharmony_ci#[cfg(ossl102)]
39192f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_set0_verify_cert_store(ctx: *mut SSL_CTX, st: *mut X509_STORE) -> c_long {
39292f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, st as *mut c_void)
39392f3ab15Sopenharmony_ci}
39492f3ab15Sopenharmony_ci
39592f3ab15Sopenharmony_ci#[cfg(ossl102)]
39692f3ab15Sopenharmony_cipub unsafe fn SSL_set0_verify_cert_store(ssl: *mut SSL, st: *mut X509_STORE) -> c_long {
39792f3ab15Sopenharmony_ci    SSL_ctrl(ssl, SSL_CTRL_SET_VERIFY_CERT_STORE, 0, st as *mut c_void)
39892f3ab15Sopenharmony_ci}
39992f3ab15Sopenharmony_ci
40092f3ab15Sopenharmony_cicfg_if! {
40192f3ab15Sopenharmony_ci    if #[cfg(ossl111)] {
40292f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_set1_groups_list(ctx: *mut SSL_CTX, s: *const c_char) -> c_long {
40392f3ab15Sopenharmony_ci            SSL_CTX_ctrl(
40492f3ab15Sopenharmony_ci                ctx,
40592f3ab15Sopenharmony_ci                SSL_CTRL_SET_GROUPS_LIST,
40692f3ab15Sopenharmony_ci                0,
40792f3ab15Sopenharmony_ci                s as *const c_void as *mut c_void,
40892f3ab15Sopenharmony_ci            )
40992f3ab15Sopenharmony_ci        }
41092f3ab15Sopenharmony_ci    } else if #[cfg(libressl251)] {
41192f3ab15Sopenharmony_ci        extern "C" {
41292f3ab15Sopenharmony_ci            pub fn SSL_CTX_set1_groups_list(ctx: *mut SSL_CTX, s: *const c_char) -> c_int;
41392f3ab15Sopenharmony_ci        }
41492f3ab15Sopenharmony_ci    }
41592f3ab15Sopenharmony_ci}
41692f3ab15Sopenharmony_ci
41792f3ab15Sopenharmony_ci#[cfg(ossl102)]
41892f3ab15Sopenharmony_cipub unsafe fn SSL_add0_chain_cert(ssl: *mut SSL, ptr: *mut X509) -> c_long {
41992f3ab15Sopenharmony_ci    SSL_ctrl(ssl, SSL_CTRL_CHAIN_CERT, 0, ptr as *mut c_void)
42092f3ab15Sopenharmony_ci}
42192f3ab15Sopenharmony_ci
42292f3ab15Sopenharmony_ci#[cfg(ossl102)]
42392f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_set1_sigalgs_list(ctx: *mut SSL_CTX, s: *const c_char) -> c_long {
42492f3ab15Sopenharmony_ci    SSL_CTX_ctrl(
42592f3ab15Sopenharmony_ci        ctx,
42692f3ab15Sopenharmony_ci        SSL_CTRL_SET_SIGALGS_LIST,
42792f3ab15Sopenharmony_ci        0,
42892f3ab15Sopenharmony_ci        s as *const c_void as *mut c_void,
42992f3ab15Sopenharmony_ci    )
43092f3ab15Sopenharmony_ci}
43192f3ab15Sopenharmony_ci
43292f3ab15Sopenharmony_ci#[cfg(any(libressl, all(ossl102, not(ossl110))))]
43392f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_set_ecdh_auto(ctx: *mut SSL_CTX, onoff: c_int) -> c_int {
43492f3ab15Sopenharmony_ci    SSL_CTX_ctrl(
43592f3ab15Sopenharmony_ci        ctx,
43692f3ab15Sopenharmony_ci        SSL_CTRL_SET_ECDH_AUTO,
43792f3ab15Sopenharmony_ci        onoff as c_long,
43892f3ab15Sopenharmony_ci        ptr::null_mut(),
43992f3ab15Sopenharmony_ci    ) as c_int
44092f3ab15Sopenharmony_ci}
44192f3ab15Sopenharmony_ci
44292f3ab15Sopenharmony_ci#[cfg(any(libressl, all(ossl102, not(ossl110))))]
44392f3ab15Sopenharmony_cipub unsafe fn SSL_set_ecdh_auto(ssl: *mut SSL, onoff: c_int) -> c_int {
44492f3ab15Sopenharmony_ci    SSL_ctrl(
44592f3ab15Sopenharmony_ci        ssl,
44692f3ab15Sopenharmony_ci        SSL_CTRL_SET_ECDH_AUTO,
44792f3ab15Sopenharmony_ci        onoff as c_long,
44892f3ab15Sopenharmony_ci        ptr::null_mut(),
44992f3ab15Sopenharmony_ci    ) as c_int
45092f3ab15Sopenharmony_ci}
45192f3ab15Sopenharmony_ci
45292f3ab15Sopenharmony_cicfg_if! {
45392f3ab15Sopenharmony_ci    if #[cfg(ossl110)] {
45492f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_set_min_proto_version(ctx: *mut SSL_CTX, version: c_int) -> c_int {
45592f3ab15Sopenharmony_ci            SSL_CTX_ctrl(
45692f3ab15Sopenharmony_ci                ctx,
45792f3ab15Sopenharmony_ci                SSL_CTRL_SET_MIN_PROTO_VERSION,
45892f3ab15Sopenharmony_ci                version as c_long,
45992f3ab15Sopenharmony_ci                ptr::null_mut(),
46092f3ab15Sopenharmony_ci            ) as c_int
46192f3ab15Sopenharmony_ci        }
46292f3ab15Sopenharmony_ci
46392f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_set_max_proto_version(ctx: *mut SSL_CTX, version: c_int) -> c_int {
46492f3ab15Sopenharmony_ci            SSL_CTX_ctrl(
46592f3ab15Sopenharmony_ci                ctx,
46692f3ab15Sopenharmony_ci                SSL_CTRL_SET_MAX_PROTO_VERSION,
46792f3ab15Sopenharmony_ci                version as c_long,
46892f3ab15Sopenharmony_ci                ptr::null_mut(),
46992f3ab15Sopenharmony_ci            ) as c_int
47092f3ab15Sopenharmony_ci        }
47192f3ab15Sopenharmony_ci
47292f3ab15Sopenharmony_ci        pub unsafe fn SSL_set_min_proto_version(s: *mut SSL, version: c_int) -> c_int {
47392f3ab15Sopenharmony_ci            SSL_ctrl(
47492f3ab15Sopenharmony_ci                s,
47592f3ab15Sopenharmony_ci                SSL_CTRL_SET_MIN_PROTO_VERSION,
47692f3ab15Sopenharmony_ci                version as c_long,
47792f3ab15Sopenharmony_ci                ptr::null_mut(),
47892f3ab15Sopenharmony_ci            ) as c_int
47992f3ab15Sopenharmony_ci        }
48092f3ab15Sopenharmony_ci
48192f3ab15Sopenharmony_ci        pub unsafe fn SSL_set_max_proto_version(s: *mut SSL, version: c_int) -> c_int {
48292f3ab15Sopenharmony_ci            SSL_ctrl(
48392f3ab15Sopenharmony_ci                s,
48492f3ab15Sopenharmony_ci                SSL_CTRL_SET_MAX_PROTO_VERSION,
48592f3ab15Sopenharmony_ci                version as c_long,
48692f3ab15Sopenharmony_ci                ptr::null_mut(),
48792f3ab15Sopenharmony_ci            ) as c_int
48892f3ab15Sopenharmony_ci        }
48992f3ab15Sopenharmony_ci    }
49092f3ab15Sopenharmony_ci}
49192f3ab15Sopenharmony_ci
49292f3ab15Sopenharmony_cicfg_if! {
49392f3ab15Sopenharmony_ci    if #[cfg(ossl110g)] {
49492f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_get_min_proto_version(ctx: *mut SSL_CTX) -> c_int {
49592f3ab15Sopenharmony_ci            SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, ptr::null_mut()) as c_int
49692f3ab15Sopenharmony_ci        }
49792f3ab15Sopenharmony_ci
49892f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_get_max_proto_version(ctx: *mut SSL_CTX) -> c_int {
49992f3ab15Sopenharmony_ci            SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, ptr::null_mut()) as c_int
50092f3ab15Sopenharmony_ci        }
50192f3ab15Sopenharmony_ci        pub unsafe fn SSL_get_min_proto_version(s: *mut SSL) -> c_int {
50292f3ab15Sopenharmony_ci            SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, ptr::null_mut()) as c_int
50392f3ab15Sopenharmony_ci        }
50492f3ab15Sopenharmony_ci        pub unsafe fn SSL_get_max_proto_version(s: *mut SSL) -> c_int {
50592f3ab15Sopenharmony_ci            SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, ptr::null_mut()) as c_int
50692f3ab15Sopenharmony_ci        }
50792f3ab15Sopenharmony_ci    }
50892f3ab15Sopenharmony_ci}
50992f3ab15Sopenharmony_ci
51092f3ab15Sopenharmony_ci#[cfg(ossl111)]
51192f3ab15Sopenharmony_cipub const SSL_CLIENT_HELLO_SUCCESS: c_int = 1;
51292f3ab15Sopenharmony_ci#[cfg(ossl111)]
51392f3ab15Sopenharmony_cipub const SSL_CLIENT_HELLO_ERROR: c_int = 0;
51492f3ab15Sopenharmony_ci#[cfg(ossl111)]
51592f3ab15Sopenharmony_cipub const SSL_CLIENT_HELLO_RETRY: c_int = -1;
51692f3ab15Sopenharmony_ci
51792f3ab15Sopenharmony_ci#[cfg(any(ossl111, libressl340))]
51892f3ab15Sopenharmony_cipub const SSL_READ_EARLY_DATA_ERROR: c_int = 0;
51992f3ab15Sopenharmony_ci#[cfg(any(ossl111, libressl340))]
52092f3ab15Sopenharmony_cipub const SSL_READ_EARLY_DATA_SUCCESS: c_int = 1;
52192f3ab15Sopenharmony_ci#[cfg(any(ossl111, libressl340))]
52292f3ab15Sopenharmony_cipub const SSL_READ_EARLY_DATA_FINISH: c_int = 2;
52392f3ab15Sopenharmony_ci
52492f3ab15Sopenharmony_cicfg_if! {
52592f3ab15Sopenharmony_ci    if #[cfg(ossl110)] {
52692f3ab15Sopenharmony_ci        pub unsafe fn SSL_get_ex_new_index(
52792f3ab15Sopenharmony_ci            l: c_long,
52892f3ab15Sopenharmony_ci            p: *mut c_void,
52992f3ab15Sopenharmony_ci            newf: Option<CRYPTO_EX_new>,
53092f3ab15Sopenharmony_ci            dupf: Option<CRYPTO_EX_dup>,
53192f3ab15Sopenharmony_ci            freef: Option<CRYPTO_EX_free>,
53292f3ab15Sopenharmony_ci        ) -> c_int {
53392f3ab15Sopenharmony_ci            CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef)
53492f3ab15Sopenharmony_ci        }
53592f3ab15Sopenharmony_ci    }
53692f3ab15Sopenharmony_ci}
53792f3ab15Sopenharmony_cicfg_if! {
53892f3ab15Sopenharmony_ci    if #[cfg(ossl110)] {
53992f3ab15Sopenharmony_ci        pub unsafe fn SSL_CTX_get_ex_new_index(
54092f3ab15Sopenharmony_ci            l: c_long,
54192f3ab15Sopenharmony_ci            p: *mut c_void,
54292f3ab15Sopenharmony_ci            newf: Option<CRYPTO_EX_new>,
54392f3ab15Sopenharmony_ci            dupf: Option<CRYPTO_EX_dup>,
54492f3ab15Sopenharmony_ci            freef: Option<CRYPTO_EX_free>,
54592f3ab15Sopenharmony_ci        ) -> c_int {
54692f3ab15Sopenharmony_ci            CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef)
54792f3ab15Sopenharmony_ci        }
54892f3ab15Sopenharmony_ci    }
54992f3ab15Sopenharmony_ci}
55092f3ab15Sopenharmony_ci
55192f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_sess_set_cache_size(ctx: *mut SSL_CTX, t: c_long) -> c_long {
55292f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_SIZE, t, ptr::null_mut())
55392f3ab15Sopenharmony_ci}
55492f3ab15Sopenharmony_ci
55592f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_sess_get_cache_size(ctx: *mut SSL_CTX) -> c_long {
55692f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_GET_SESS_CACHE_SIZE, 0, ptr::null_mut())
55792f3ab15Sopenharmony_ci}
55892f3ab15Sopenharmony_ci
55992f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_set_session_cache_mode(ctx: *mut SSL_CTX, m: c_long) -> c_long {
56092f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_SET_SESS_CACHE_MODE, m, ptr::null_mut())
56192f3ab15Sopenharmony_ci}
56292f3ab15Sopenharmony_ci
56392f3ab15Sopenharmony_cipub unsafe fn SSL_CTX_set_read_ahead(ctx: *mut SSL_CTX, m: c_long) -> c_long {
56492f3ab15Sopenharmony_ci    SSL_CTX_ctrl(ctx, SSL_CTRL_SET_READ_AHEAD, m, ptr::null_mut())
56592f3ab15Sopenharmony_ci}
56692f3ab15Sopenharmony_ci
56792f3ab15Sopenharmony_ci#[allow(clashing_extern_declarations)]
56892f3ab15Sopenharmony_ciextern "C" {
56992f3ab15Sopenharmony_ci    #[deprecated(note = "use SSL_CTX_set_tmp_dh_callback__fixed_rust instead")]
57092f3ab15Sopenharmony_ci    pub fn SSL_CTX_set_tmp_dh_callback(
57192f3ab15Sopenharmony_ci        ctx: *mut SSL_CTX,
57292f3ab15Sopenharmony_ci        dh: unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut DH,
57392f3ab15Sopenharmony_ci    );
57492f3ab15Sopenharmony_ci    #[deprecated(note = "use SSL_set_tmp_dh_callback__fixed_rust instead")]
57592f3ab15Sopenharmony_ci    pub fn SSL_set_tmp_dh_callback(
57692f3ab15Sopenharmony_ci        ctx: *mut SSL,
57792f3ab15Sopenharmony_ci        dh: unsafe extern "C" fn(ssl: *mut SSL, is_export: c_int, keylength: c_int) -> *mut DH,
57892f3ab15Sopenharmony_ci    );
57992f3ab15Sopenharmony_ci    #[deprecated(note = "use SSL_CTX_set_tmp_ecdh_callback__fixed_rust instead")]
58092f3ab15Sopenharmony_ci    #[cfg(not(ossl110))]
58192f3ab15Sopenharmony_ci    pub fn SSL_CTX_set_tmp_ecdh_callback(
58292f3ab15Sopenharmony_ci        ctx: *mut SSL_CTX,
58392f3ab15Sopenharmony_ci        ecdh: unsafe extern "C" fn(
58492f3ab15Sopenharmony_ci            ssl: *mut SSL,
58592f3ab15Sopenharmony_ci            is_export: c_int,
58692f3ab15Sopenharmony_ci            keylength: c_int,
58792f3ab15Sopenharmony_ci        ) -> *mut EC_KEY,
58892f3ab15Sopenharmony_ci    );
58992f3ab15Sopenharmony_ci    #[deprecated(note = "use SSL_set_tmp_ecdh_callback__fixed_rust instead")]
59092f3ab15Sopenharmony_ci    #[cfg(not(ossl110))]
59192f3ab15Sopenharmony_ci    pub fn SSL_set_tmp_ecdh_callback(
59292f3ab15Sopenharmony_ci        ssl: *mut SSL,
59392f3ab15Sopenharmony_ci        ecdh: unsafe extern "C" fn(
59492f3ab15Sopenharmony_ci            ssl: *mut SSL,
59592f3ab15Sopenharmony_ci            is_export: c_int,
59692f3ab15Sopenharmony_ci            keylength: c_int,
59792f3ab15Sopenharmony_ci        ) -> *mut EC_KEY,
59892f3ab15Sopenharmony_ci    );
59992f3ab15Sopenharmony_ci
60092f3ab15Sopenharmony_ci    #[deprecated(note = "use SSL_CTX_callback_ctrl__fixed_rust instead")]
60192f3ab15Sopenharmony_ci    pub fn SSL_CTX_callback_ctrl(
60292f3ab15Sopenharmony_ci        ctx: *mut SSL_CTX,
60392f3ab15Sopenharmony_ci        cmd: c_int,
60492f3ab15Sopenharmony_ci        fp: Option<extern "C" fn()>,
60592f3ab15Sopenharmony_ci    ) -> c_long;
60692f3ab15Sopenharmony_ci
60792f3ab15Sopenharmony_ci    #[deprecated(note = "use SSL_CTX_set_alpn_select_cb__fixed_rust instead")]
60892f3ab15Sopenharmony_ci    #[cfg(any(ossl102, libressl261))]
60992f3ab15Sopenharmony_ci    pub fn SSL_CTX_set_alpn_select_cb(
61092f3ab15Sopenharmony_ci        ssl: *mut SSL_CTX,
61192f3ab15Sopenharmony_ci        cb: extern "C" fn(
61292f3ab15Sopenharmony_ci            ssl: *mut SSL,
61392f3ab15Sopenharmony_ci            out: *mut *const c_uchar,
61492f3ab15Sopenharmony_ci            outlen: *mut c_uchar,
61592f3ab15Sopenharmony_ci            inbuf: *const c_uchar,
61692f3ab15Sopenharmony_ci            inlen: c_uint,
61792f3ab15Sopenharmony_ci            arg: *mut c_void,
61892f3ab15Sopenharmony_ci        ) -> c_int,
61992f3ab15Sopenharmony_ci        arg: *mut c_void,
62092f3ab15Sopenharmony_ci    );
62192f3ab15Sopenharmony_ci}
62292f3ab15Sopenharmony_ci
62392f3ab15Sopenharmony_ci#[cfg(not(ossl110))]
62492f3ab15Sopenharmony_cipub unsafe fn SSL_session_reused(ssl: *mut SSL) -> c_int {
62592f3ab15Sopenharmony_ci    SSL_ctrl(ssl, SSL_CTRL_GET_SESSION_REUSED, 0, ptr::null_mut()) as c_int
62692f3ab15Sopenharmony_ci}
62792f3ab15Sopenharmony_ci
62892f3ab15Sopenharmony_ci#[cfg(ossl110)]
62992f3ab15Sopenharmony_cipub const OPENSSL_INIT_LOAD_SSL_STRINGS: u64 = 0x00200000;
63092f3ab15Sopenharmony_ci#[cfg(ossl111b)]
63192f3ab15Sopenharmony_cipub const OPENSSL_INIT_NO_ATEXIT: u64 = 0x00080000;
632