192f3ab15Sopenharmony_ciuse libc::*;
292f3ab15Sopenharmony_ciuse std::ptr;
392f3ab15Sopenharmony_ci
492f3ab15Sopenharmony_ciuse super::super::*;
592f3ab15Sopenharmony_ci
692f3ab15Sopenharmony_cipub const RSA_F4: c_long = 0x10001;
792f3ab15Sopenharmony_ci
892f3ab15Sopenharmony_cicfg_if! {
992f3ab15Sopenharmony_ci    if #[cfg(not(ossl300))] {
1092f3ab15Sopenharmony_ci        pub unsafe fn EVP_PKEY_CTX_set_rsa_padding(ctx: *mut EVP_PKEY_CTX, pad: c_int) -> c_int {
1192f3ab15Sopenharmony_ci            EVP_PKEY_CTX_ctrl(
1292f3ab15Sopenharmony_ci                ctx,
1392f3ab15Sopenharmony_ci                EVP_PKEY_RSA,
1492f3ab15Sopenharmony_ci                -1,
1592f3ab15Sopenharmony_ci                EVP_PKEY_CTRL_RSA_PADDING,
1692f3ab15Sopenharmony_ci                pad,
1792f3ab15Sopenharmony_ci                ptr::null_mut(),
1892f3ab15Sopenharmony_ci            )
1992f3ab15Sopenharmony_ci        }
2092f3ab15Sopenharmony_ci        pub unsafe fn EVP_PKEY_CTX_get_rsa_padding(ctx: *mut EVP_PKEY_CTX, ppad: *mut c_int) -> c_int {
2192f3ab15Sopenharmony_ci            EVP_PKEY_CTX_ctrl(
2292f3ab15Sopenharmony_ci                ctx,
2392f3ab15Sopenharmony_ci                EVP_PKEY_RSA,
2492f3ab15Sopenharmony_ci                -1,
2592f3ab15Sopenharmony_ci                EVP_PKEY_CTRL_GET_RSA_PADDING,
2692f3ab15Sopenharmony_ci                0,
2792f3ab15Sopenharmony_ci                ppad as *mut c_void,
2892f3ab15Sopenharmony_ci            )
2992f3ab15Sopenharmony_ci        }
3092f3ab15Sopenharmony_ci
3192f3ab15Sopenharmony_ci        pub unsafe fn EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx: *mut EVP_PKEY_CTX, len: c_int) -> c_int {
3292f3ab15Sopenharmony_ci            EVP_PKEY_CTX_ctrl(
3392f3ab15Sopenharmony_ci                ctx,
3492f3ab15Sopenharmony_ci                EVP_PKEY_RSA,
3592f3ab15Sopenharmony_ci                EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY,
3692f3ab15Sopenharmony_ci                EVP_PKEY_CTRL_RSA_PSS_SALTLEN,
3792f3ab15Sopenharmony_ci                len,
3892f3ab15Sopenharmony_ci                ptr::null_mut(),
3992f3ab15Sopenharmony_ci            )
4092f3ab15Sopenharmony_ci        }
4192f3ab15Sopenharmony_ci
4292f3ab15Sopenharmony_ci        pub unsafe fn EVP_PKEY_CTX_set_rsa_mgf1_md(ctx: *mut EVP_PKEY_CTX, md: *mut EVP_MD) -> c_int {
4392f3ab15Sopenharmony_ci            EVP_PKEY_CTX_ctrl(
4492f3ab15Sopenharmony_ci                ctx,
4592f3ab15Sopenharmony_ci                EVP_PKEY_RSA,
4692f3ab15Sopenharmony_ci                EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT,
4792f3ab15Sopenharmony_ci                EVP_PKEY_CTRL_RSA_MGF1_MD,
4892f3ab15Sopenharmony_ci                0,
4992f3ab15Sopenharmony_ci                md as *mut c_void,
5092f3ab15Sopenharmony_ci            )
5192f3ab15Sopenharmony_ci        }
5292f3ab15Sopenharmony_ci    }
5392f3ab15Sopenharmony_ci}
5492f3ab15Sopenharmony_ci
5592f3ab15Sopenharmony_ci#[cfg(any(ossl102, libressl310))]
5692f3ab15Sopenharmony_cipub unsafe fn EVP_PKEY_CTX_set_rsa_oaep_md(ctx: *mut EVP_PKEY_CTX, md: *mut EVP_MD) -> c_int {
5792f3ab15Sopenharmony_ci    EVP_PKEY_CTX_ctrl(
5892f3ab15Sopenharmony_ci        ctx,
5992f3ab15Sopenharmony_ci        EVP_PKEY_RSA,
6092f3ab15Sopenharmony_ci        EVP_PKEY_OP_TYPE_CRYPT,
6192f3ab15Sopenharmony_ci        EVP_PKEY_CTRL_RSA_OAEP_MD,
6292f3ab15Sopenharmony_ci        0,
6392f3ab15Sopenharmony_ci        md as *mut c_void,
6492f3ab15Sopenharmony_ci    )
6592f3ab15Sopenharmony_ci}
6692f3ab15Sopenharmony_ci
6792f3ab15Sopenharmony_ci#[cfg(any(ossl102, libressl310))]
6892f3ab15Sopenharmony_cipub unsafe fn EVP_PKEY_CTX_set0_rsa_oaep_label(
6992f3ab15Sopenharmony_ci    ctx: *mut EVP_PKEY_CTX,
7092f3ab15Sopenharmony_ci    label: *mut c_void,
7192f3ab15Sopenharmony_ci    len: c_int,
7292f3ab15Sopenharmony_ci) -> c_int {
7392f3ab15Sopenharmony_ci    EVP_PKEY_CTX_ctrl(
7492f3ab15Sopenharmony_ci        ctx,
7592f3ab15Sopenharmony_ci        EVP_PKEY_RSA,
7692f3ab15Sopenharmony_ci        EVP_PKEY_OP_TYPE_CRYPT,
7792f3ab15Sopenharmony_ci        EVP_PKEY_CTRL_RSA_OAEP_LABEL,
7892f3ab15Sopenharmony_ci        len,
7992f3ab15Sopenharmony_ci        label as *mut c_void,
8092f3ab15Sopenharmony_ci    )
8192f3ab15Sopenharmony_ci}
8292f3ab15Sopenharmony_ci
8392f3ab15Sopenharmony_cipub const EVP_PKEY_CTRL_RSA_PADDING: c_int = EVP_PKEY_ALG_CTRL + 1;
8492f3ab15Sopenharmony_cipub const EVP_PKEY_CTRL_RSA_PSS_SALTLEN: c_int = EVP_PKEY_ALG_CTRL + 2;
8592f3ab15Sopenharmony_ci
8692f3ab15Sopenharmony_cipub const EVP_PKEY_CTRL_RSA_MGF1_MD: c_int = EVP_PKEY_ALG_CTRL + 5;
8792f3ab15Sopenharmony_ci
8892f3ab15Sopenharmony_cipub const EVP_PKEY_CTRL_GET_RSA_PADDING: c_int = EVP_PKEY_ALG_CTRL + 6;
8992f3ab15Sopenharmony_ci
9092f3ab15Sopenharmony_ci#[cfg(any(ossl102, libressl310))]
9192f3ab15Sopenharmony_cipub const EVP_PKEY_CTRL_RSA_OAEP_MD: c_int = EVP_PKEY_ALG_CTRL + 9;
9292f3ab15Sopenharmony_ci#[cfg(any(ossl102, libressl310))]
9392f3ab15Sopenharmony_cipub const EVP_PKEY_CTRL_RSA_OAEP_LABEL: c_int = EVP_PKEY_ALG_CTRL + 10;
9492f3ab15Sopenharmony_ci
9592f3ab15Sopenharmony_cipub const RSA_PKCS1_PADDING: c_int = 1;
9692f3ab15Sopenharmony_ci#[cfg(not(ossl300))]
9792f3ab15Sopenharmony_cipub const RSA_SSLV23_PADDING: c_int = 2;
9892f3ab15Sopenharmony_cipub const RSA_NO_PADDING: c_int = 3;
9992f3ab15Sopenharmony_cipub const RSA_PKCS1_OAEP_PADDING: c_int = 4;
10092f3ab15Sopenharmony_cipub const RSA_X931_PADDING: c_int = 5;
10192f3ab15Sopenharmony_cipub const RSA_PKCS1_PSS_PADDING: c_int = 6;
102