192f3ab15Sopenharmony_ciuse super::super::*;
292f3ab15Sopenharmony_ciuse libc::*;
392f3ab15Sopenharmony_ci
492f3ab15Sopenharmony_cicfg_if! {
592f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
692f3ab15Sopenharmony_ci        extern "C" {
792f3ab15Sopenharmony_ci            pub fn EVP_MD_get_block_size(md: *const EVP_MD) -> c_int;
892f3ab15Sopenharmony_ci            pub fn EVP_MD_get_size(md: *const EVP_MD) -> c_int;
992f3ab15Sopenharmony_ci            pub fn EVP_MD_get_type(md: *const EVP_MD) -> c_int;
1092f3ab15Sopenharmony_ci
1192f3ab15Sopenharmony_ci            pub fn EVP_MD_CTX_get0_md(ctx: *const EVP_MD_CTX) -> *const EVP_MD;
1292f3ab15Sopenharmony_ci
1392f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_get_key_length(cipher: *const EVP_CIPHER) -> c_int;
1492f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_get_block_size(cipher: *const EVP_CIPHER) -> c_int;
1592f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_get_iv_length(cipher: *const EVP_CIPHER) -> c_int;
1692f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_get_nid(cipher: *const EVP_CIPHER) -> c_int;
1792f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_fetch(
1892f3ab15Sopenharmony_ci                ctx: *mut OSSL_LIB_CTX,
1992f3ab15Sopenharmony_ci                algorithm: *const c_char,
2092f3ab15Sopenharmony_ci                properties: *const c_char,
2192f3ab15Sopenharmony_ci            ) -> *mut EVP_CIPHER;
2292f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_free(cipher: *mut EVP_CIPHER);
2392f3ab15Sopenharmony_ci
2492f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_get0_cipher(ctx: *const EVP_CIPHER_CTX) -> *const EVP_CIPHER;
2592f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_get_block_size(ctx: *const EVP_CIPHER_CTX) -> c_int;
2692f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_get_key_length(ctx: *const EVP_CIPHER_CTX) -> c_int;
2792f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_get_iv_length(ctx: *const EVP_CIPHER_CTX) -> c_int;
2892f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_get_tag_length(ctx: *const EVP_CIPHER_CTX) -> c_int;
2992f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_get_num(ctx: *const EVP_CIPHER_CTX) -> c_int;
3092f3ab15Sopenharmony_ci        }
3192f3ab15Sopenharmony_ci    } else {
3292f3ab15Sopenharmony_ci        extern "C" {
3392f3ab15Sopenharmony_ci            pub fn EVP_MD_block_size(md: *const EVP_MD) -> c_int;
3492f3ab15Sopenharmony_ci            pub fn EVP_MD_size(md: *const EVP_MD) -> c_int;
3592f3ab15Sopenharmony_ci            pub fn EVP_MD_type(md: *const EVP_MD) -> c_int;
3692f3ab15Sopenharmony_ci
3792f3ab15Sopenharmony_ci            pub fn EVP_MD_CTX_md(ctx: *const EVP_MD_CTX) -> *const EVP_MD;
3892f3ab15Sopenharmony_ci
3992f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_key_length(cipher: *const EVP_CIPHER) -> c_int;
4092f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_block_size(cipher: *const EVP_CIPHER) -> c_int;
4192f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_iv_length(cipher: *const EVP_CIPHER) -> c_int;
4292f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_nid(cipher: *const EVP_CIPHER) -> c_int;
4392f3ab15Sopenharmony_ci
4492f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_cipher(ctx: *const EVP_CIPHER_CTX) -> *const EVP_CIPHER;
4592f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_block_size(ctx: *const EVP_CIPHER_CTX) -> c_int;
4692f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_key_length(ctx: *const EVP_CIPHER_CTX) -> c_int;
4792f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_iv_length(ctx: *const EVP_CIPHER_CTX) -> c_int;
4892f3ab15Sopenharmony_ci            #[cfg(ossl110)]
4992f3ab15Sopenharmony_ci            pub fn EVP_CIPHER_CTX_num(ctx: *const EVP_CIPHER_CTX) -> c_int;
5092f3ab15Sopenharmony_ci        }
5192f3ab15Sopenharmony_ci    }
5292f3ab15Sopenharmony_ci}
5392f3ab15Sopenharmony_ci
5492f3ab15Sopenharmony_cicfg_if! {
5592f3ab15Sopenharmony_ci    if #[cfg(ossl110)] {
5692f3ab15Sopenharmony_ci        extern "C" {
5792f3ab15Sopenharmony_ci            pub fn EVP_MD_CTX_new() -> *mut EVP_MD_CTX;
5892f3ab15Sopenharmony_ci            pub fn EVP_MD_CTX_free(ctx: *mut EVP_MD_CTX);
5992f3ab15Sopenharmony_ci        }
6092f3ab15Sopenharmony_ci    } else {
6192f3ab15Sopenharmony_ci        extern "C" {
6292f3ab15Sopenharmony_ci            pub fn EVP_MD_CTX_create() -> *mut EVP_MD_CTX;
6392f3ab15Sopenharmony_ci            pub fn EVP_MD_CTX_destroy(ctx: *mut EVP_MD_CTX);
6492f3ab15Sopenharmony_ci        }
6592f3ab15Sopenharmony_ci    }
6692f3ab15Sopenharmony_ci}
6792f3ab15Sopenharmony_ci
6892f3ab15Sopenharmony_cicfg_if! {
6992f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
7092f3ab15Sopenharmony_ci        extern "C" {
7192f3ab15Sopenharmony_ci            pub fn EVP_default_properties_is_fips_enabled(libctx: *mut OSSL_LIB_CTX) -> c_int;
7292f3ab15Sopenharmony_ci        }
7392f3ab15Sopenharmony_ci    }
7492f3ab15Sopenharmony_ci}
7592f3ab15Sopenharmony_ci
7692f3ab15Sopenharmony_ciextern "C" {
7792f3ab15Sopenharmony_ci    pub fn EVP_DigestInit_ex(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD, imple: *mut ENGINE)
7892f3ab15Sopenharmony_ci        -> c_int;
7992f3ab15Sopenharmony_ci    pub fn EVP_DigestUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, n: size_t) -> c_int;
8092f3ab15Sopenharmony_ci    pub fn EVP_DigestFinal_ex(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int;
8192f3ab15Sopenharmony_ci    #[cfg(ossl300)]
8292f3ab15Sopenharmony_ci    pub fn EVP_Q_digest(
8392f3ab15Sopenharmony_ci        libctx: *mut OSSL_LIB_CTX,
8492f3ab15Sopenharmony_ci        name: *const c_char,
8592f3ab15Sopenharmony_ci        propq: *const c_char,
8692f3ab15Sopenharmony_ci        data: *const c_void,
8792f3ab15Sopenharmony_ci        count: size_t,
8892f3ab15Sopenharmony_ci        md: *mut c_uchar,
8992f3ab15Sopenharmony_ci        size: *mut size_t,
9092f3ab15Sopenharmony_ci    ) -> c_int;
9192f3ab15Sopenharmony_ci    pub fn EVP_DigestInit(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD) -> c_int;
9292f3ab15Sopenharmony_ci    pub fn EVP_DigestFinal(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int;
9392f3ab15Sopenharmony_ci    #[cfg(ossl111)]
9492f3ab15Sopenharmony_ci    pub fn EVP_DigestFinalXOF(ctx: *mut EVP_MD_CTX, res: *mut u8, len: usize) -> c_int;
9592f3ab15Sopenharmony_ci
9692f3ab15Sopenharmony_ci    #[cfg(ossl300)]
9792f3ab15Sopenharmony_ci    pub fn EVP_MD_fetch(
9892f3ab15Sopenharmony_ci        ctx: *mut OSSL_LIB_CTX,
9992f3ab15Sopenharmony_ci        algorithm: *const c_char,
10092f3ab15Sopenharmony_ci        properties: *const c_char,
10192f3ab15Sopenharmony_ci    ) -> *mut EVP_MD;
10292f3ab15Sopenharmony_ci
10392f3ab15Sopenharmony_ci    #[cfg(ossl300)]
10492f3ab15Sopenharmony_ci    pub fn EVP_MD_free(md: *mut EVP_MD);
10592f3ab15Sopenharmony_ci
10692f3ab15Sopenharmony_ci    pub fn EVP_BytesToKey(
10792f3ab15Sopenharmony_ci        typ: *const EVP_CIPHER,
10892f3ab15Sopenharmony_ci        md: *const EVP_MD,
10992f3ab15Sopenharmony_ci        salt: *const u8,
11092f3ab15Sopenharmony_ci        data: *const u8,
11192f3ab15Sopenharmony_ci        datalen: c_int,
11292f3ab15Sopenharmony_ci        count: c_int,
11392f3ab15Sopenharmony_ci        key: *mut u8,
11492f3ab15Sopenharmony_ci        iv: *mut u8,
11592f3ab15Sopenharmony_ci    ) -> c_int;
11692f3ab15Sopenharmony_ci
11792f3ab15Sopenharmony_ci    pub fn EVP_CipherInit(
11892f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
11992f3ab15Sopenharmony_ci        evp: *const EVP_CIPHER,
12092f3ab15Sopenharmony_ci        key: *const u8,
12192f3ab15Sopenharmony_ci        iv: *const u8,
12292f3ab15Sopenharmony_ci        mode: c_int,
12392f3ab15Sopenharmony_ci    ) -> c_int;
12492f3ab15Sopenharmony_ci    pub fn EVP_CipherInit_ex(
12592f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
12692f3ab15Sopenharmony_ci        type_: *const EVP_CIPHER,
12792f3ab15Sopenharmony_ci        impl_: *mut ENGINE,
12892f3ab15Sopenharmony_ci        key: *const c_uchar,
12992f3ab15Sopenharmony_ci        iv: *const c_uchar,
13092f3ab15Sopenharmony_ci        enc: c_int,
13192f3ab15Sopenharmony_ci    ) -> c_int;
13292f3ab15Sopenharmony_ci    pub fn EVP_CipherUpdate(
13392f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
13492f3ab15Sopenharmony_ci        outbuf: *mut u8,
13592f3ab15Sopenharmony_ci        outlen: *mut c_int,
13692f3ab15Sopenharmony_ci        inbuf: *const u8,
13792f3ab15Sopenharmony_ci        inlen: c_int,
13892f3ab15Sopenharmony_ci    ) -> c_int;
13992f3ab15Sopenharmony_ci    pub fn EVP_CipherFinal(ctx: *mut EVP_CIPHER_CTX, res: *mut u8, len: *mut c_int) -> c_int;
14092f3ab15Sopenharmony_ci
14192f3ab15Sopenharmony_ci    pub fn EVP_DigestSignInit(
14292f3ab15Sopenharmony_ci        ctx: *mut EVP_MD_CTX,
14392f3ab15Sopenharmony_ci        pctx: *mut *mut EVP_PKEY_CTX,
14492f3ab15Sopenharmony_ci        type_: *const EVP_MD,
14592f3ab15Sopenharmony_ci        e: *mut ENGINE,
14692f3ab15Sopenharmony_ci        pkey: *mut EVP_PKEY,
14792f3ab15Sopenharmony_ci    ) -> c_int;
14892f3ab15Sopenharmony_ci
14992f3ab15Sopenharmony_ci    #[cfg(ossl300)]
15092f3ab15Sopenharmony_ci    pub fn EVP_DigestSignUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, dsize: size_t) -> c_int;
15192f3ab15Sopenharmony_ci    pub fn EVP_DigestSignFinal(
15292f3ab15Sopenharmony_ci        ctx: *mut EVP_MD_CTX,
15392f3ab15Sopenharmony_ci        sig: *mut c_uchar,
15492f3ab15Sopenharmony_ci        siglen: *mut size_t,
15592f3ab15Sopenharmony_ci    ) -> c_int;
15692f3ab15Sopenharmony_ci    pub fn EVP_DigestVerifyInit(
15792f3ab15Sopenharmony_ci        ctx: *mut EVP_MD_CTX,
15892f3ab15Sopenharmony_ci        pctx: *mut *mut EVP_PKEY_CTX,
15992f3ab15Sopenharmony_ci        type_: *const EVP_MD,
16092f3ab15Sopenharmony_ci        e: *mut ENGINE,
16192f3ab15Sopenharmony_ci        pkey: *mut EVP_PKEY,
16292f3ab15Sopenharmony_ci    ) -> c_int;
16392f3ab15Sopenharmony_ci    #[cfg(ossl300)]
16492f3ab15Sopenharmony_ci    pub fn EVP_DigestVerifyUpdate(
16592f3ab15Sopenharmony_ci        ctx: *mut EVP_MD_CTX,
16692f3ab15Sopenharmony_ci        data: *const c_void,
16792f3ab15Sopenharmony_ci        dsize: size_t,
16892f3ab15Sopenharmony_ci    ) -> c_int;
16992f3ab15Sopenharmony_ci    pub fn EVP_SealInit(
17092f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
17192f3ab15Sopenharmony_ci        type_: *const EVP_CIPHER,
17292f3ab15Sopenharmony_ci        ek: *mut *mut c_uchar,
17392f3ab15Sopenharmony_ci        ekl: *mut c_int,
17492f3ab15Sopenharmony_ci        iv: *mut c_uchar,
17592f3ab15Sopenharmony_ci        pubk: *mut *mut EVP_PKEY,
17692f3ab15Sopenharmony_ci        npubk: c_int,
17792f3ab15Sopenharmony_ci    ) -> c_int;
17892f3ab15Sopenharmony_ci    pub fn EVP_SealFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int;
17992f3ab15Sopenharmony_ci    pub fn EVP_EncryptInit_ex(
18092f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
18192f3ab15Sopenharmony_ci        cipher: *const EVP_CIPHER,
18292f3ab15Sopenharmony_ci        impl_: *mut ENGINE,
18392f3ab15Sopenharmony_ci        key: *const c_uchar,
18492f3ab15Sopenharmony_ci        iv: *const c_uchar,
18592f3ab15Sopenharmony_ci    ) -> c_int;
18692f3ab15Sopenharmony_ci    pub fn EVP_EncryptUpdate(
18792f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
18892f3ab15Sopenharmony_ci        out: *mut c_uchar,
18992f3ab15Sopenharmony_ci        outl: *mut c_int,
19092f3ab15Sopenharmony_ci        in_: *const u8,
19192f3ab15Sopenharmony_ci        inl: c_int,
19292f3ab15Sopenharmony_ci    ) -> c_int;
19392f3ab15Sopenharmony_ci    pub fn EVP_EncryptFinal_ex(
19492f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
19592f3ab15Sopenharmony_ci        out: *mut c_uchar,
19692f3ab15Sopenharmony_ci        outl: *mut c_int,
19792f3ab15Sopenharmony_ci    ) -> c_int;
19892f3ab15Sopenharmony_ci    pub fn EVP_OpenInit(
19992f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
20092f3ab15Sopenharmony_ci        type_: *const EVP_CIPHER,
20192f3ab15Sopenharmony_ci        ek: *const c_uchar,
20292f3ab15Sopenharmony_ci        ekl: c_int,
20392f3ab15Sopenharmony_ci        iv: *const c_uchar,
20492f3ab15Sopenharmony_ci        priv_: *mut EVP_PKEY,
20592f3ab15Sopenharmony_ci    ) -> c_int;
20692f3ab15Sopenharmony_ci    pub fn EVP_OpenFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int;
20792f3ab15Sopenharmony_ci    pub fn EVP_DecryptInit_ex(
20892f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
20992f3ab15Sopenharmony_ci        cipher: *const EVP_CIPHER,
21092f3ab15Sopenharmony_ci        impl_: *mut ENGINE,
21192f3ab15Sopenharmony_ci        key: *const c_uchar,
21292f3ab15Sopenharmony_ci        iv: *const c_uchar,
21392f3ab15Sopenharmony_ci    ) -> c_int;
21492f3ab15Sopenharmony_ci    pub fn EVP_DecryptUpdate(
21592f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
21692f3ab15Sopenharmony_ci        out: *mut c_uchar,
21792f3ab15Sopenharmony_ci        outl: *mut c_int,
21892f3ab15Sopenharmony_ci        in_: *const u8,
21992f3ab15Sopenharmony_ci        inl: c_int,
22092f3ab15Sopenharmony_ci    ) -> c_int;
22192f3ab15Sopenharmony_ci    pub fn EVP_DecryptFinal_ex(
22292f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
22392f3ab15Sopenharmony_ci        outm: *mut c_uchar,
22492f3ab15Sopenharmony_ci        outl: *mut c_int,
22592f3ab15Sopenharmony_ci    ) -> c_int;
22692f3ab15Sopenharmony_ci}
22792f3ab15Sopenharmony_cicfg_if! {
22892f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
22992f3ab15Sopenharmony_ci        extern "C" {
23092f3ab15Sopenharmony_ci            pub fn EVP_PKEY_get_size(pkey: *const EVP_PKEY) -> c_int;
23192f3ab15Sopenharmony_ci        }
23292f3ab15Sopenharmony_ci    } else {
23392f3ab15Sopenharmony_ci        const_ptr_api! {
23492f3ab15Sopenharmony_ci            extern "C" {
23592f3ab15Sopenharmony_ci                pub fn EVP_PKEY_size(pkey: #[const_ptr_if(any(ossl111b, libressl280))] EVP_PKEY) -> c_int;
23692f3ab15Sopenharmony_ci            }
23792f3ab15Sopenharmony_ci        }
23892f3ab15Sopenharmony_ci    }
23992f3ab15Sopenharmony_ci}
24092f3ab15Sopenharmony_cicfg_if! {
24192f3ab15Sopenharmony_ci    if #[cfg(any(ossl111, libressl370))] {
24292f3ab15Sopenharmony_ci        extern "C" {
24392f3ab15Sopenharmony_ci            pub fn EVP_DigestSign(
24492f3ab15Sopenharmony_ci                ctx: *mut EVP_MD_CTX,
24592f3ab15Sopenharmony_ci                sigret: *mut c_uchar,
24692f3ab15Sopenharmony_ci                siglen: *mut size_t,
24792f3ab15Sopenharmony_ci                tbs: *const c_uchar,
24892f3ab15Sopenharmony_ci                tbslen: size_t
24992f3ab15Sopenharmony_ci            ) -> c_int;
25092f3ab15Sopenharmony_ci
25192f3ab15Sopenharmony_ci            pub fn EVP_DigestVerify(
25292f3ab15Sopenharmony_ci                ctx: *mut EVP_MD_CTX,
25392f3ab15Sopenharmony_ci                sigret: *const c_uchar,
25492f3ab15Sopenharmony_ci                siglen: size_t,
25592f3ab15Sopenharmony_ci                tbs: *const c_uchar,
25692f3ab15Sopenharmony_ci                tbslen: size_t
25792f3ab15Sopenharmony_ci            ) -> c_int;
25892f3ab15Sopenharmony_ci        }
25992f3ab15Sopenharmony_ci    }
26092f3ab15Sopenharmony_ci}
26192f3ab15Sopenharmony_ciconst_ptr_api! {
26292f3ab15Sopenharmony_ci    extern "C" {
26392f3ab15Sopenharmony_ci        pub fn EVP_DigestVerifyFinal(
26492f3ab15Sopenharmony_ci            ctx: *mut EVP_MD_CTX,
26592f3ab15Sopenharmony_ci            sigret: #[const_ptr_if(any(ossl102, libressl280))] c_uchar,
26692f3ab15Sopenharmony_ci            siglen: size_t,
26792f3ab15Sopenharmony_ci        ) -> c_int;
26892f3ab15Sopenharmony_ci    }
26992f3ab15Sopenharmony_ci}
27092f3ab15Sopenharmony_ci
27192f3ab15Sopenharmony_ciextern "C" {
27292f3ab15Sopenharmony_ci    pub fn EVP_CIPHER_CTX_new() -> *mut EVP_CIPHER_CTX;
27392f3ab15Sopenharmony_ci    pub fn EVP_CIPHER_CTX_free(ctx: *mut EVP_CIPHER_CTX);
27492f3ab15Sopenharmony_ci    pub fn EVP_MD_CTX_copy_ex(dst: *mut EVP_MD_CTX, src: *const EVP_MD_CTX) -> c_int;
27592f3ab15Sopenharmony_ci    #[cfg(ossl111)]
27692f3ab15Sopenharmony_ci    pub fn EVP_MD_CTX_reset(ctx: *mut EVP_MD_CTX) -> c_int;
27792f3ab15Sopenharmony_ci    pub fn EVP_CIPHER_CTX_set_key_length(ctx: *mut EVP_CIPHER_CTX, keylen: c_int) -> c_int;
27892f3ab15Sopenharmony_ci    pub fn EVP_CIPHER_CTX_set_padding(ctx: *mut EVP_CIPHER_CTX, padding: c_int) -> c_int;
27992f3ab15Sopenharmony_ci    pub fn EVP_CIPHER_CTX_ctrl(
28092f3ab15Sopenharmony_ci        ctx: *mut EVP_CIPHER_CTX,
28192f3ab15Sopenharmony_ci        type_: c_int,
28292f3ab15Sopenharmony_ci        arg: c_int,
28392f3ab15Sopenharmony_ci        ptr: *mut c_void,
28492f3ab15Sopenharmony_ci    ) -> c_int;
28592f3ab15Sopenharmony_ci    pub fn EVP_CIPHER_CTX_rand_key(ctx: *mut EVP_CIPHER_CTX, key: *mut c_uchar) -> c_int;
28692f3ab15Sopenharmony_ci    pub fn EVP_CIPHER_CTX_set_flags(ctx: *mut EVP_CIPHER_CTX, flags: c_int);
28792f3ab15Sopenharmony_ci
28892f3ab15Sopenharmony_ci    pub fn EVP_md_null() -> *const EVP_MD;
28992f3ab15Sopenharmony_ci    pub fn EVP_md5() -> *const EVP_MD;
29092f3ab15Sopenharmony_ci    pub fn EVP_sha1() -> *const EVP_MD;
29192f3ab15Sopenharmony_ci    pub fn EVP_sha224() -> *const EVP_MD;
29292f3ab15Sopenharmony_ci    pub fn EVP_sha256() -> *const EVP_MD;
29392f3ab15Sopenharmony_ci    pub fn EVP_sha384() -> *const EVP_MD;
29492f3ab15Sopenharmony_ci    pub fn EVP_sha512() -> *const EVP_MD;
29592f3ab15Sopenharmony_ci    #[cfg(ossl111)]
29692f3ab15Sopenharmony_ci    pub fn EVP_sha3_224() -> *const EVP_MD;
29792f3ab15Sopenharmony_ci    #[cfg(ossl111)]
29892f3ab15Sopenharmony_ci    pub fn EVP_sha3_256() -> *const EVP_MD;
29992f3ab15Sopenharmony_ci    #[cfg(ossl111)]
30092f3ab15Sopenharmony_ci    pub fn EVP_sha3_384() -> *const EVP_MD;
30192f3ab15Sopenharmony_ci    #[cfg(ossl111)]
30292f3ab15Sopenharmony_ci    pub fn EVP_sha3_512() -> *const EVP_MD;
30392f3ab15Sopenharmony_ci    #[cfg(ossl111)]
30492f3ab15Sopenharmony_ci    pub fn EVP_shake128() -> *const EVP_MD;
30592f3ab15Sopenharmony_ci    #[cfg(ossl111)]
30692f3ab15Sopenharmony_ci    pub fn EVP_shake256() -> *const EVP_MD;
30792f3ab15Sopenharmony_ci    pub fn EVP_ripemd160() -> *const EVP_MD;
30892f3ab15Sopenharmony_ci    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM3")))]
30992f3ab15Sopenharmony_ci    pub fn EVP_sm3() -> *const EVP_MD;
31092f3ab15Sopenharmony_ci    pub fn EVP_des_ecb() -> *const EVP_CIPHER;
31192f3ab15Sopenharmony_ci    pub fn EVP_des_ede3() -> *const EVP_CIPHER;
31292f3ab15Sopenharmony_ci    pub fn EVP_des_ede3_cbc() -> *const EVP_CIPHER;
31392f3ab15Sopenharmony_ci    pub fn EVP_des_ede3_cfb64() -> *const EVP_CIPHER;
31492f3ab15Sopenharmony_ci    pub fn EVP_des_cbc() -> *const EVP_CIPHER;
31592f3ab15Sopenharmony_ci    #[cfg(not(osslconf = "OPENSSL_NO_RC4"))]
31692f3ab15Sopenharmony_ci    pub fn EVP_rc4() -> *const EVP_CIPHER;
31792f3ab15Sopenharmony_ci    pub fn EVP_bf_ecb() -> *const EVP_CIPHER;
31892f3ab15Sopenharmony_ci    pub fn EVP_bf_cbc() -> *const EVP_CIPHER;
31992f3ab15Sopenharmony_ci    pub fn EVP_bf_cfb64() -> *const EVP_CIPHER;
32092f3ab15Sopenharmony_ci    pub fn EVP_bf_ofb() -> *const EVP_CIPHER;
32192f3ab15Sopenharmony_ci    pub fn EVP_aes_128_ecb() -> *const EVP_CIPHER;
32292f3ab15Sopenharmony_ci    pub fn EVP_aes_128_cbc() -> *const EVP_CIPHER;
32392f3ab15Sopenharmony_ci    pub fn EVP_aes_128_cfb1() -> *const EVP_CIPHER;
32492f3ab15Sopenharmony_ci    pub fn EVP_aes_128_cfb8() -> *const EVP_CIPHER;
32592f3ab15Sopenharmony_ci    pub fn EVP_aes_128_cfb128() -> *const EVP_CIPHER;
32692f3ab15Sopenharmony_ci    pub fn EVP_aes_128_ctr() -> *const EVP_CIPHER;
32792f3ab15Sopenharmony_ci    pub fn EVP_aes_128_ccm() -> *const EVP_CIPHER;
32892f3ab15Sopenharmony_ci    pub fn EVP_aes_128_gcm() -> *const EVP_CIPHER;
32992f3ab15Sopenharmony_ci    pub fn EVP_aes_128_xts() -> *const EVP_CIPHER;
33092f3ab15Sopenharmony_ci    pub fn EVP_aes_128_ofb() -> *const EVP_CIPHER;
33192f3ab15Sopenharmony_ci    #[cfg(ossl110)]
33292f3ab15Sopenharmony_ci    pub fn EVP_aes_128_ocb() -> *const EVP_CIPHER;
33392f3ab15Sopenharmony_ci    #[cfg(ossl102)]
33492f3ab15Sopenharmony_ci    pub fn EVP_aes_128_wrap() -> *const EVP_CIPHER;
33592f3ab15Sopenharmony_ci    #[cfg(ossl110)]
33692f3ab15Sopenharmony_ci    pub fn EVP_aes_128_wrap_pad() -> *const EVP_CIPHER;
33792f3ab15Sopenharmony_ci    pub fn EVP_aes_192_ecb() -> *const EVP_CIPHER;
33892f3ab15Sopenharmony_ci    pub fn EVP_aes_192_cbc() -> *const EVP_CIPHER;
33992f3ab15Sopenharmony_ci    pub fn EVP_aes_192_cfb1() -> *const EVP_CIPHER;
34092f3ab15Sopenharmony_ci    pub fn EVP_aes_192_cfb8() -> *const EVP_CIPHER;
34192f3ab15Sopenharmony_ci    pub fn EVP_aes_192_cfb128() -> *const EVP_CIPHER;
34292f3ab15Sopenharmony_ci    pub fn EVP_aes_192_ctr() -> *const EVP_CIPHER;
34392f3ab15Sopenharmony_ci    pub fn EVP_aes_192_ccm() -> *const EVP_CIPHER;
34492f3ab15Sopenharmony_ci    pub fn EVP_aes_192_gcm() -> *const EVP_CIPHER;
34592f3ab15Sopenharmony_ci    pub fn EVP_aes_192_ofb() -> *const EVP_CIPHER;
34692f3ab15Sopenharmony_ci    #[cfg(ossl110)]
34792f3ab15Sopenharmony_ci    pub fn EVP_aes_192_ocb() -> *const EVP_CIPHER;
34892f3ab15Sopenharmony_ci    #[cfg(ossl102)]
34992f3ab15Sopenharmony_ci    pub fn EVP_aes_192_wrap() -> *const EVP_CIPHER;
35092f3ab15Sopenharmony_ci    #[cfg(ossl110)]
35192f3ab15Sopenharmony_ci    pub fn EVP_aes_192_wrap_pad() -> *const EVP_CIPHER;
35292f3ab15Sopenharmony_ci    pub fn EVP_aes_256_ecb() -> *const EVP_CIPHER;
35392f3ab15Sopenharmony_ci    pub fn EVP_aes_256_cbc() -> *const EVP_CIPHER;
35492f3ab15Sopenharmony_ci    pub fn EVP_aes_256_cfb1() -> *const EVP_CIPHER;
35592f3ab15Sopenharmony_ci    pub fn EVP_aes_256_cfb8() -> *const EVP_CIPHER;
35692f3ab15Sopenharmony_ci    pub fn EVP_aes_256_cfb128() -> *const EVP_CIPHER;
35792f3ab15Sopenharmony_ci    pub fn EVP_aes_256_ctr() -> *const EVP_CIPHER;
35892f3ab15Sopenharmony_ci    pub fn EVP_aes_256_ccm() -> *const EVP_CIPHER;
35992f3ab15Sopenharmony_ci    pub fn EVP_aes_256_gcm() -> *const EVP_CIPHER;
36092f3ab15Sopenharmony_ci    pub fn EVP_aes_256_xts() -> *const EVP_CIPHER;
36192f3ab15Sopenharmony_ci    pub fn EVP_aes_256_ofb() -> *const EVP_CIPHER;
36292f3ab15Sopenharmony_ci    #[cfg(ossl110)]
36392f3ab15Sopenharmony_ci    pub fn EVP_aes_256_ocb() -> *const EVP_CIPHER;
36492f3ab15Sopenharmony_ci    #[cfg(ossl102)]
36592f3ab15Sopenharmony_ci    pub fn EVP_aes_256_wrap() -> *const EVP_CIPHER;
36692f3ab15Sopenharmony_ci    #[cfg(ossl110)]
36792f3ab15Sopenharmony_ci    pub fn EVP_aes_256_wrap_pad() -> *const EVP_CIPHER;
36892f3ab15Sopenharmony_ci    #[cfg(all(ossl110, not(osslconf = "OPENSSL_NO_CHACHA")))]
36992f3ab15Sopenharmony_ci    pub fn EVP_chacha20() -> *const EVP_CIPHER;
37092f3ab15Sopenharmony_ci    #[cfg(all(ossl110, not(osslconf = "OPENSSL_NO_CHACHA")))]
37192f3ab15Sopenharmony_ci    pub fn EVP_chacha20_poly1305() -> *const EVP_CIPHER;
37292f3ab15Sopenharmony_ci    #[cfg(not(osslconf = "OPENSSL_NO_SEED"))]
37392f3ab15Sopenharmony_ci    pub fn EVP_seed_cbc() -> *const EVP_CIPHER;
37492f3ab15Sopenharmony_ci    #[cfg(not(osslconf = "OPENSSL_NO_SEED"))]
37592f3ab15Sopenharmony_ci    pub fn EVP_seed_cfb128() -> *const EVP_CIPHER;
37692f3ab15Sopenharmony_ci    #[cfg(not(osslconf = "OPENSSL_NO_SEED"))]
37792f3ab15Sopenharmony_ci    pub fn EVP_seed_ecb() -> *const EVP_CIPHER;
37892f3ab15Sopenharmony_ci    #[cfg(not(osslconf = "OPENSSL_NO_SEED"))]
37992f3ab15Sopenharmony_ci    pub fn EVP_seed_ofb() -> *const EVP_CIPHER;
38092f3ab15Sopenharmony_ci
38192f3ab15Sopenharmony_ci    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))]
38292f3ab15Sopenharmony_ci    pub fn EVP_sm4_ecb() -> *const EVP_CIPHER;
38392f3ab15Sopenharmony_ci    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))]
38492f3ab15Sopenharmony_ci    pub fn EVP_sm4_cbc() -> *const EVP_CIPHER;
38592f3ab15Sopenharmony_ci    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))]
38692f3ab15Sopenharmony_ci    pub fn EVP_sm4_cfb128() -> *const EVP_CIPHER;
38792f3ab15Sopenharmony_ci    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))]
38892f3ab15Sopenharmony_ci    pub fn EVP_sm4_ofb() -> *const EVP_CIPHER;
38992f3ab15Sopenharmony_ci    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))]
39092f3ab15Sopenharmony_ci    pub fn EVP_sm4_ctr() -> *const EVP_CIPHER;
39192f3ab15Sopenharmony_ci
39292f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))]
39392f3ab15Sopenharmony_ci    pub fn EVP_camellia_128_cfb128() -> *const EVP_CIPHER;
39492f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))]
39592f3ab15Sopenharmony_ci    pub fn EVP_camellia_128_ecb() -> *const EVP_CIPHER;
39692f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))]
39792f3ab15Sopenharmony_ci    pub fn EVP_camellia_192_cfb128() -> *const EVP_CIPHER;
39892f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))]
39992f3ab15Sopenharmony_ci    pub fn EVP_camellia_192_ecb() -> *const EVP_CIPHER;
40092f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))]
40192f3ab15Sopenharmony_ci    pub fn EVP_camellia_256_cfb128() -> *const EVP_CIPHER;
40292f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))]
40392f3ab15Sopenharmony_ci    pub fn EVP_camellia_256_ecb() -> *const EVP_CIPHER;
40492f3ab15Sopenharmony_ci
40592f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAST")))]
40692f3ab15Sopenharmony_ci    pub fn EVP_cast5_cfb64() -> *const EVP_CIPHER;
40792f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAST")))]
40892f3ab15Sopenharmony_ci    pub fn EVP_cast5_ecb() -> *const EVP_CIPHER;
40992f3ab15Sopenharmony_ci
41092f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_IDEA")))]
41192f3ab15Sopenharmony_ci    pub fn EVP_idea_cfb64() -> *const EVP_CIPHER;
41292f3ab15Sopenharmony_ci    #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_IDEA")))]
41392f3ab15Sopenharmony_ci    pub fn EVP_idea_ecb() -> *const EVP_CIPHER;
41492f3ab15Sopenharmony_ci
41592f3ab15Sopenharmony_ci    #[cfg(not(ossl110))]
41692f3ab15Sopenharmony_ci    pub fn OPENSSL_add_all_algorithms_noconf();
41792f3ab15Sopenharmony_ci
41892f3ab15Sopenharmony_ci    pub fn EVP_get_digestbyname(name: *const c_char) -> *const EVP_MD;
41992f3ab15Sopenharmony_ci    pub fn EVP_get_cipherbyname(name: *const c_char) -> *const EVP_CIPHER;
42092f3ab15Sopenharmony_ci}
42192f3ab15Sopenharmony_ci
42292f3ab15Sopenharmony_cicfg_if! {
42392f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
42492f3ab15Sopenharmony_ci        extern "C" {
42592f3ab15Sopenharmony_ci            pub fn EVP_PKEY_get_id(pkey: *const EVP_PKEY) -> c_int;
42692f3ab15Sopenharmony_ci            pub fn EVP_PKEY_get_bits(key: *const EVP_PKEY) -> c_int;
42792f3ab15Sopenharmony_ci            pub fn EVP_PKEY_get_security_bits(key: *const EVP_PKEY) -> c_int;
42892f3ab15Sopenharmony_ci        }
42992f3ab15Sopenharmony_ci    } else {
43092f3ab15Sopenharmony_ci        extern "C" {
43192f3ab15Sopenharmony_ci            pub fn EVP_PKEY_id(pkey: *const EVP_PKEY) -> c_int;
43292f3ab15Sopenharmony_ci        }
43392f3ab15Sopenharmony_ci        const_ptr_api! {
43492f3ab15Sopenharmony_ci            extern "C" {
43592f3ab15Sopenharmony_ci                pub fn EVP_PKEY_bits(key: #[const_ptr_if(any(ossl110, libressl280))] EVP_PKEY) -> c_int;
43692f3ab15Sopenharmony_ci                #[cfg(any(ossl110, libressl360))]
43792f3ab15Sopenharmony_ci                pub fn EVP_PKEY_security_bits(pkey: #[const_ptr_if(any(ossl110, libressl280))] EVP_PKEY) -> c_int;
43892f3ab15Sopenharmony_ci            }
43992f3ab15Sopenharmony_ci        }
44092f3ab15Sopenharmony_ci    }
44192f3ab15Sopenharmony_ci}
44292f3ab15Sopenharmony_ciextern "C" {
44392f3ab15Sopenharmony_ci    pub fn EVP_PKEY_assign(pkey: *mut EVP_PKEY, typ: c_int, key: *mut c_void) -> c_int;
44492f3ab15Sopenharmony_ci
44592f3ab15Sopenharmony_ci    pub fn EVP_PKEY_set1_RSA(k: *mut EVP_PKEY, r: *mut RSA) -> c_int;
44692f3ab15Sopenharmony_ci    pub fn EVP_PKEY_get1_RSA(k: *mut EVP_PKEY) -> *mut RSA;
44792f3ab15Sopenharmony_ci    pub fn EVP_PKEY_get1_DSA(k: *mut EVP_PKEY) -> *mut DSA;
44892f3ab15Sopenharmony_ci    pub fn EVP_PKEY_get1_DH(k: *mut EVP_PKEY) -> *mut DH;
44992f3ab15Sopenharmony_ci    pub fn EVP_PKEY_get1_EC_KEY(k: *mut EVP_PKEY) -> *mut EC_KEY;
45092f3ab15Sopenharmony_ci
45192f3ab15Sopenharmony_ci    pub fn EVP_PKEY_new() -> *mut EVP_PKEY;
45292f3ab15Sopenharmony_ci    pub fn EVP_PKEY_free(k: *mut EVP_PKEY);
45392f3ab15Sopenharmony_ci    #[cfg(any(ossl110, libressl270))]
45492f3ab15Sopenharmony_ci    pub fn EVP_PKEY_up_ref(pkey: *mut EVP_PKEY) -> c_int;
45592f3ab15Sopenharmony_ci
45692f3ab15Sopenharmony_ci    pub fn d2i_AutoPrivateKey(
45792f3ab15Sopenharmony_ci        a: *mut *mut EVP_PKEY,
45892f3ab15Sopenharmony_ci        pp: *mut *const c_uchar,
45992f3ab15Sopenharmony_ci        length: c_long,
46092f3ab15Sopenharmony_ci    ) -> *mut EVP_PKEY;
46192f3ab15Sopenharmony_ci
46292f3ab15Sopenharmony_ci    pub fn EVP_PKEY_cmp(a: *const EVP_PKEY, b: *const EVP_PKEY) -> c_int;
46392f3ab15Sopenharmony_ci
46492f3ab15Sopenharmony_ci    pub fn EVP_PKEY_copy_parameters(to: *mut EVP_PKEY, from: *const EVP_PKEY) -> c_int;
46592f3ab15Sopenharmony_ci
46692f3ab15Sopenharmony_ci    pub fn PKCS5_PBKDF2_HMAC_SHA1(
46792f3ab15Sopenharmony_ci        pass: *const c_char,
46892f3ab15Sopenharmony_ci        passlen: c_int,
46992f3ab15Sopenharmony_ci        salt: *const u8,
47092f3ab15Sopenharmony_ci        saltlen: c_int,
47192f3ab15Sopenharmony_ci        iter: c_int,
47292f3ab15Sopenharmony_ci        keylen: c_int,
47392f3ab15Sopenharmony_ci        out: *mut u8,
47492f3ab15Sopenharmony_ci    ) -> c_int;
47592f3ab15Sopenharmony_ci    pub fn PKCS5_PBKDF2_HMAC(
47692f3ab15Sopenharmony_ci        pass: *const c_char,
47792f3ab15Sopenharmony_ci        passlen: c_int,
47892f3ab15Sopenharmony_ci        salt: *const c_uchar,
47992f3ab15Sopenharmony_ci        saltlen: c_int,
48092f3ab15Sopenharmony_ci        iter: c_int,
48192f3ab15Sopenharmony_ci        digest: *const EVP_MD,
48292f3ab15Sopenharmony_ci        keylen: c_int,
48392f3ab15Sopenharmony_ci        out: *mut u8,
48492f3ab15Sopenharmony_ci    ) -> c_int;
48592f3ab15Sopenharmony_ci
48692f3ab15Sopenharmony_ci    #[cfg(ossl110)]
48792f3ab15Sopenharmony_ci    pub fn EVP_PBE_scrypt(
48892f3ab15Sopenharmony_ci        pass: *const c_char,
48992f3ab15Sopenharmony_ci        passlen: size_t,
49092f3ab15Sopenharmony_ci        salt: *const c_uchar,
49192f3ab15Sopenharmony_ci        saltlen: size_t,
49292f3ab15Sopenharmony_ci        N: u64,
49392f3ab15Sopenharmony_ci        r: u64,
49492f3ab15Sopenharmony_ci        p: u64,
49592f3ab15Sopenharmony_ci        maxmem: u64,
49692f3ab15Sopenharmony_ci        key: *mut c_uchar,
49792f3ab15Sopenharmony_ci        keylen: size_t,
49892f3ab15Sopenharmony_ci    ) -> c_int;
49992f3ab15Sopenharmony_ci
50092f3ab15Sopenharmony_ci    pub fn EVP_PKEY_CTX_new(k: *mut EVP_PKEY, e: *mut ENGINE) -> *mut EVP_PKEY_CTX;
50192f3ab15Sopenharmony_ci    pub fn EVP_PKEY_CTX_new_id(id: c_int, e: *mut ENGINE) -> *mut EVP_PKEY_CTX;
50292f3ab15Sopenharmony_ci    pub fn EVP_PKEY_CTX_free(ctx: *mut EVP_PKEY_CTX);
50392f3ab15Sopenharmony_ci
50492f3ab15Sopenharmony_ci    pub fn EVP_PKEY_CTX_ctrl(
50592f3ab15Sopenharmony_ci        ctx: *mut EVP_PKEY_CTX,
50692f3ab15Sopenharmony_ci        keytype: c_int,
50792f3ab15Sopenharmony_ci        optype: c_int,
50892f3ab15Sopenharmony_ci        cmd: c_int,
50992f3ab15Sopenharmony_ci        p1: c_int,
51092f3ab15Sopenharmony_ci        p2: *mut c_void,
51192f3ab15Sopenharmony_ci    ) -> c_int;
51292f3ab15Sopenharmony_ci
51392f3ab15Sopenharmony_ci    #[cfg(ossl300)]
51492f3ab15Sopenharmony_ci    pub fn EVP_PKEY_CTX_set_signature_md(ctx: *mut EVP_PKEY_CTX, md: *const EVP_MD) -> c_int;
51592f3ab15Sopenharmony_ci
51692f3ab15Sopenharmony_ci    pub fn EVP_PKEY_new_mac_key(
51792f3ab15Sopenharmony_ci        type_: c_int,
51892f3ab15Sopenharmony_ci        e: *mut ENGINE,
51992f3ab15Sopenharmony_ci        key: *const c_uchar,
52092f3ab15Sopenharmony_ci        keylen: c_int,
52192f3ab15Sopenharmony_ci    ) -> *mut EVP_PKEY;
52292f3ab15Sopenharmony_ci
52392f3ab15Sopenharmony_ci    pub fn EVP_PKEY_derive_init(ctx: *mut EVP_PKEY_CTX) -> c_int;
52492f3ab15Sopenharmony_ci    pub fn EVP_PKEY_derive_set_peer(ctx: *mut EVP_PKEY_CTX, peer: *mut EVP_PKEY) -> c_int;
52592f3ab15Sopenharmony_ci    #[cfg(ossl300)]
52692f3ab15Sopenharmony_ci    pub fn EVP_PKEY_derive_set_peer_ex(
52792f3ab15Sopenharmony_ci        ctx: *mut EVP_PKEY_CTX,
52892f3ab15Sopenharmony_ci        peer: *mut EVP_PKEY,
52992f3ab15Sopenharmony_ci        validate_peer: c_int,
53092f3ab15Sopenharmony_ci    ) -> c_int;
53192f3ab15Sopenharmony_ci    pub fn EVP_PKEY_derive(ctx: *mut EVP_PKEY_CTX, key: *mut c_uchar, size: *mut size_t) -> c_int;
53292f3ab15Sopenharmony_ci
53392f3ab15Sopenharmony_ci    #[cfg(ossl300)]
53492f3ab15Sopenharmony_ci    pub fn EVP_PKEY_Q_keygen(
53592f3ab15Sopenharmony_ci        libctx: *mut OSSL_LIB_CTX,
53692f3ab15Sopenharmony_ci        propq: *const c_char,
53792f3ab15Sopenharmony_ci        type_: *const c_char,
53892f3ab15Sopenharmony_ci        ...
53992f3ab15Sopenharmony_ci    ) -> *mut EVP_PKEY;
54092f3ab15Sopenharmony_ci    pub fn EVP_PKEY_keygen_init(ctx: *mut EVP_PKEY_CTX) -> c_int;
54192f3ab15Sopenharmony_ci    pub fn EVP_PKEY_keygen(ctx: *mut EVP_PKEY_CTX, key: *mut *mut EVP_PKEY) -> c_int;
54292f3ab15Sopenharmony_ci
54392f3ab15Sopenharmony_ci    pub fn EVP_PKEY_sign_init(ctx: *mut EVP_PKEY_CTX) -> c_int;
54492f3ab15Sopenharmony_ci    pub fn EVP_PKEY_sign(
54592f3ab15Sopenharmony_ci        ctx: *mut EVP_PKEY_CTX,
54692f3ab15Sopenharmony_ci        sig: *mut c_uchar,
54792f3ab15Sopenharmony_ci        siglen: *mut size_t,
54892f3ab15Sopenharmony_ci        tbs: *const c_uchar,
54992f3ab15Sopenharmony_ci        tbslen: size_t,
55092f3ab15Sopenharmony_ci    ) -> c_int;
55192f3ab15Sopenharmony_ci    pub fn EVP_PKEY_verify_init(ctx: *mut EVP_PKEY_CTX) -> c_int;
55292f3ab15Sopenharmony_ci    pub fn EVP_PKEY_verify(
55392f3ab15Sopenharmony_ci        ctx: *mut EVP_PKEY_CTX,
55492f3ab15Sopenharmony_ci        sig: *const c_uchar,
55592f3ab15Sopenharmony_ci        siglen: size_t,
55692f3ab15Sopenharmony_ci        tbs: *const c_uchar,
55792f3ab15Sopenharmony_ci        tbslen: size_t,
55892f3ab15Sopenharmony_ci    ) -> c_int;
55992f3ab15Sopenharmony_ci    pub fn EVP_PKEY_encrypt_init(ctx: *mut EVP_PKEY_CTX) -> c_int;
56092f3ab15Sopenharmony_ci    pub fn EVP_PKEY_encrypt(
56192f3ab15Sopenharmony_ci        ctx: *mut EVP_PKEY_CTX,
56292f3ab15Sopenharmony_ci        pout: *mut c_uchar,
56392f3ab15Sopenharmony_ci        poutlen: *mut size_t,
56492f3ab15Sopenharmony_ci        pin: *const c_uchar,
56592f3ab15Sopenharmony_ci        pinlen: size_t,
56692f3ab15Sopenharmony_ci    ) -> c_int;
56792f3ab15Sopenharmony_ci    pub fn EVP_PKEY_decrypt_init(ctx: *mut EVP_PKEY_CTX) -> c_int;
56892f3ab15Sopenharmony_ci    pub fn EVP_PKEY_decrypt(
56992f3ab15Sopenharmony_ci        ctx: *mut EVP_PKEY_CTX,
57092f3ab15Sopenharmony_ci        pout: *mut c_uchar,
57192f3ab15Sopenharmony_ci        poutlen: *mut size_t,
57292f3ab15Sopenharmony_ci        pin: *const c_uchar,
57392f3ab15Sopenharmony_ci        pinlen: size_t,
57492f3ab15Sopenharmony_ci    ) -> c_int;
57592f3ab15Sopenharmony_ci    pub fn EVP_PKEY_verify_recover_init(ctx: *mut EVP_PKEY_CTX) -> c_int;
57692f3ab15Sopenharmony_ci    pub fn EVP_PKEY_verify_recover(
57792f3ab15Sopenharmony_ci        ctx: *mut EVP_PKEY_CTX,
57892f3ab15Sopenharmony_ci        rout: *mut c_uchar,
57992f3ab15Sopenharmony_ci        routlen: *mut size_t,
58092f3ab15Sopenharmony_ci        sig: *const c_uchar,
58192f3ab15Sopenharmony_ci        siglen: size_t,
58292f3ab15Sopenharmony_ci    ) -> c_int;
58392f3ab15Sopenharmony_ci}
58492f3ab15Sopenharmony_ci
58592f3ab15Sopenharmony_ciconst_ptr_api! {
58692f3ab15Sopenharmony_ci    extern "C" {
58792f3ab15Sopenharmony_ci        pub fn EVP_PKCS82PKEY(p8: #[const_ptr_if(any(ossl110, libressl280))] PKCS8_PRIV_KEY_INFO) -> *mut EVP_PKEY;
58892f3ab15Sopenharmony_ci    }
58992f3ab15Sopenharmony_ci}
59092f3ab15Sopenharmony_ci
59192f3ab15Sopenharmony_cicfg_if! {
59292f3ab15Sopenharmony_ci    if #[cfg(any(ossl111, libressl370))] {
59392f3ab15Sopenharmony_ci        extern "C" {
59492f3ab15Sopenharmony_ci            pub fn EVP_PKEY_get_raw_public_key(
59592f3ab15Sopenharmony_ci                pkey: *const EVP_PKEY,
59692f3ab15Sopenharmony_ci                ppub: *mut c_uchar,
59792f3ab15Sopenharmony_ci                len: *mut size_t,
59892f3ab15Sopenharmony_ci            ) -> c_int;
59992f3ab15Sopenharmony_ci            pub fn EVP_PKEY_new_raw_public_key(
60092f3ab15Sopenharmony_ci                ttype: c_int,
60192f3ab15Sopenharmony_ci                e: *mut ENGINE,
60292f3ab15Sopenharmony_ci                key: *const c_uchar,
60392f3ab15Sopenharmony_ci                keylen: size_t,
60492f3ab15Sopenharmony_ci            ) -> *mut EVP_PKEY;
60592f3ab15Sopenharmony_ci            pub fn EVP_PKEY_get_raw_private_key(
60692f3ab15Sopenharmony_ci                pkey: *const EVP_PKEY,
60792f3ab15Sopenharmony_ci                ppriv: *mut c_uchar,
60892f3ab15Sopenharmony_ci                len: *mut size_t,
60992f3ab15Sopenharmony_ci            ) -> c_int;
61092f3ab15Sopenharmony_ci            pub fn EVP_PKEY_new_raw_private_key(
61192f3ab15Sopenharmony_ci                ttype: c_int,
61292f3ab15Sopenharmony_ci                e: *mut ENGINE,
61392f3ab15Sopenharmony_ci                key: *const c_uchar,
61492f3ab15Sopenharmony_ci                keylen: size_t,
61592f3ab15Sopenharmony_ci            ) -> *mut EVP_PKEY;
61692f3ab15Sopenharmony_ci        }
61792f3ab15Sopenharmony_ci    }
61892f3ab15Sopenharmony_ci}
61992f3ab15Sopenharmony_ci
62092f3ab15Sopenharmony_ciextern "C" {
62192f3ab15Sopenharmony_ci    pub fn EVP_EncodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int;
62292f3ab15Sopenharmony_ci    pub fn EVP_DecodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int;
62392f3ab15Sopenharmony_ci}
624