1 use super::super::*; 2 use libc::*; 3 4 cfg_if! { 5 if #[cfg(ossl300)] { 6 extern "C" { EVP_MD_get_block_sizenull7 pub fn EVP_MD_get_block_size(md: *const EVP_MD) -> c_int; EVP_MD_get_sizenull8 pub fn EVP_MD_get_size(md: *const EVP_MD) -> c_int; EVP_MD_get_typenull9 pub fn EVP_MD_get_type(md: *const EVP_MD) -> c_int; 10 EVP_MD_CTX_get0_mdnull11 pub fn EVP_MD_CTX_get0_md(ctx: *const EVP_MD_CTX) -> *const EVP_MD; 12 EVP_CIPHER_get_key_lengthnull13 pub fn EVP_CIPHER_get_key_length(cipher: *const EVP_CIPHER) -> c_int; EVP_CIPHER_get_block_sizenull14 pub fn EVP_CIPHER_get_block_size(cipher: *const EVP_CIPHER) -> c_int; EVP_CIPHER_get_iv_lengthnull15 pub fn EVP_CIPHER_get_iv_length(cipher: *const EVP_CIPHER) -> c_int; EVP_CIPHER_get_nidnull16 pub fn EVP_CIPHER_get_nid(cipher: *const EVP_CIPHER) -> c_int; EVP_CIPHER_fetchnull17 pub fn EVP_CIPHER_fetch( 18 ctx: *mut OSSL_LIB_CTX, 19 algorithm: *const c_char, 20 properties: *const c_char, 21 ) -> *mut EVP_CIPHER; EVP_CIPHER_freenull22 pub fn EVP_CIPHER_free(cipher: *mut EVP_CIPHER); 23 EVP_CIPHER_CTX_get0_ciphernull24 pub fn EVP_CIPHER_CTX_get0_cipher(ctx: *const EVP_CIPHER_CTX) -> *const EVP_CIPHER; EVP_CIPHER_CTX_get_block_sizenull25 pub fn EVP_CIPHER_CTX_get_block_size(ctx: *const EVP_CIPHER_CTX) -> c_int; EVP_CIPHER_CTX_get_key_lengthnull26 pub fn EVP_CIPHER_CTX_get_key_length(ctx: *const EVP_CIPHER_CTX) -> c_int; EVP_CIPHER_CTX_get_iv_lengthnull27 pub fn EVP_CIPHER_CTX_get_iv_length(ctx: *const EVP_CIPHER_CTX) -> c_int; EVP_CIPHER_CTX_get_tag_lengthnull28 pub fn EVP_CIPHER_CTX_get_tag_length(ctx: *const EVP_CIPHER_CTX) -> c_int; EVP_CIPHER_CTX_get_numnull29 pub fn EVP_CIPHER_CTX_get_num(ctx: *const EVP_CIPHER_CTX) -> c_int; 30 } 31 } else { 32 extern "C" { EVP_MD_block_sizenull33 pub fn EVP_MD_block_size(md: *const EVP_MD) -> c_int; EVP_MD_sizenull34 pub fn EVP_MD_size(md: *const EVP_MD) -> c_int; EVP_MD_typenull35 pub fn EVP_MD_type(md: *const EVP_MD) -> c_int; 36 EVP_MD_CTX_mdnull37 pub fn EVP_MD_CTX_md(ctx: *const EVP_MD_CTX) -> *const EVP_MD; 38 EVP_CIPHER_key_lengthnull39 pub fn EVP_CIPHER_key_length(cipher: *const EVP_CIPHER) -> c_int; EVP_CIPHER_block_sizenull40 pub fn EVP_CIPHER_block_size(cipher: *const EVP_CIPHER) -> c_int; EVP_CIPHER_iv_lengthnull41 pub fn EVP_CIPHER_iv_length(cipher: *const EVP_CIPHER) -> c_int; EVP_CIPHER_nidnull42 pub fn EVP_CIPHER_nid(cipher: *const EVP_CIPHER) -> c_int; 43 EVP_CIPHER_CTX_ciphernull44 pub fn EVP_CIPHER_CTX_cipher(ctx: *const EVP_CIPHER_CTX) -> *const EVP_CIPHER; EVP_CIPHER_CTX_block_sizenull45 pub fn EVP_CIPHER_CTX_block_size(ctx: *const EVP_CIPHER_CTX) -> c_int; EVP_CIPHER_CTX_key_lengthnull46 pub fn EVP_CIPHER_CTX_key_length(ctx: *const EVP_CIPHER_CTX) -> c_int; EVP_CIPHER_CTX_iv_lengthnull47 pub fn EVP_CIPHER_CTX_iv_length(ctx: *const EVP_CIPHER_CTX) -> c_int; 48 #[cfg(ossl110)] EVP_CIPHER_CTX_numnull49 pub fn EVP_CIPHER_CTX_num(ctx: *const EVP_CIPHER_CTX) -> c_int; 50 } 51 } 52 } 53 54 cfg_if! { 55 if #[cfg(ossl110)] { 56 extern "C" { EVP_MD_CTX_newnull57 pub fn EVP_MD_CTX_new() -> *mut EVP_MD_CTX; EVP_MD_CTX_freenull58 pub fn EVP_MD_CTX_free(ctx: *mut EVP_MD_CTX); 59 } 60 } else { 61 extern "C" { EVP_MD_CTX_createnull62 pub fn EVP_MD_CTX_create() -> *mut EVP_MD_CTX; EVP_MD_CTX_destroynull63 pub fn EVP_MD_CTX_destroy(ctx: *mut EVP_MD_CTX); 64 } 65 } 66 } 67 68 cfg_if! { 69 if #[cfg(ossl300)] { 70 extern "C" { EVP_default_properties_is_fips_enablednull71 pub fn EVP_default_properties_is_fips_enabled(libctx: *mut OSSL_LIB_CTX) -> c_int; 72 } 73 } 74 } 75 76 extern "C" { EVP_DigestInit_exnull77 pub fn EVP_DigestInit_ex(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD, imple: *mut ENGINE) 78 -> c_int; EVP_DigestUpdatenull79 pub fn EVP_DigestUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, n: size_t) -> c_int; EVP_DigestFinal_exnull80 pub fn EVP_DigestFinal_ex(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int; 81 #[cfg(ossl300)] EVP_Q_digestnull82 pub fn EVP_Q_digest( 83 libctx: *mut OSSL_LIB_CTX, 84 name: *const c_char, 85 propq: *const c_char, 86 data: *const c_void, 87 count: size_t, 88 md: *mut c_uchar, 89 size: *mut size_t, 90 ) -> c_int; EVP_DigestInitnull91 pub fn EVP_DigestInit(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD) -> c_int; EVP_DigestFinalnull92 pub fn EVP_DigestFinal(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int; 93 #[cfg(ossl111)] EVP_DigestFinalXOFnull94 pub fn EVP_DigestFinalXOF(ctx: *mut EVP_MD_CTX, res: *mut u8, len: usize) -> c_int; 95 96 #[cfg(ossl300)] EVP_MD_fetchnull97 pub fn EVP_MD_fetch( 98 ctx: *mut OSSL_LIB_CTX, 99 algorithm: *const c_char, 100 properties: *const c_char, 101 ) -> *mut EVP_MD; 102 103 #[cfg(ossl300)] EVP_MD_freenull104 pub fn EVP_MD_free(md: *mut EVP_MD); 105 EVP_BytesToKeynull106 pub fn EVP_BytesToKey( 107 typ: *const EVP_CIPHER, 108 md: *const EVP_MD, 109 salt: *const u8, 110 data: *const u8, 111 datalen: c_int, 112 count: c_int, 113 key: *mut u8, 114 iv: *mut u8, 115 ) -> c_int; 116 EVP_CipherInitnull117 pub fn EVP_CipherInit( 118 ctx: *mut EVP_CIPHER_CTX, 119 evp: *const EVP_CIPHER, 120 key: *const u8, 121 iv: *const u8, 122 mode: c_int, 123 ) -> c_int; EVP_CipherInit_exnull124 pub fn EVP_CipherInit_ex( 125 ctx: *mut EVP_CIPHER_CTX, 126 type_: *const EVP_CIPHER, 127 impl_: *mut ENGINE, 128 key: *const c_uchar, 129 iv: *const c_uchar, 130 enc: c_int, 131 ) -> c_int; EVP_CipherUpdatenull132 pub fn EVP_CipherUpdate( 133 ctx: *mut EVP_CIPHER_CTX, 134 outbuf: *mut u8, 135 outlen: *mut c_int, 136 inbuf: *const u8, 137 inlen: c_int, 138 ) -> c_int; EVP_CipherFinalnull139 pub fn EVP_CipherFinal(ctx: *mut EVP_CIPHER_CTX, res: *mut u8, len: *mut c_int) -> c_int; 140 EVP_DigestSignInitnull141 pub fn EVP_DigestSignInit( 142 ctx: *mut EVP_MD_CTX, 143 pctx: *mut *mut EVP_PKEY_CTX, 144 type_: *const EVP_MD, 145 e: *mut ENGINE, 146 pkey: *mut EVP_PKEY, 147 ) -> c_int; 148 149 #[cfg(ossl300)] EVP_DigestSignUpdatenull150 pub fn EVP_DigestSignUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, dsize: size_t) -> c_int; EVP_DigestSignFinalnull151 pub fn EVP_DigestSignFinal( 152 ctx: *mut EVP_MD_CTX, 153 sig: *mut c_uchar, 154 siglen: *mut size_t, 155 ) -> c_int; EVP_DigestVerifyInitnull156 pub fn EVP_DigestVerifyInit( 157 ctx: *mut EVP_MD_CTX, 158 pctx: *mut *mut EVP_PKEY_CTX, 159 type_: *const EVP_MD, 160 e: *mut ENGINE, 161 pkey: *mut EVP_PKEY, 162 ) -> c_int; 163 #[cfg(ossl300)] EVP_DigestVerifyUpdatenull164 pub fn EVP_DigestVerifyUpdate( 165 ctx: *mut EVP_MD_CTX, 166 data: *const c_void, 167 dsize: size_t, 168 ) -> c_int; EVP_SealInitnull169 pub fn EVP_SealInit( 170 ctx: *mut EVP_CIPHER_CTX, 171 type_: *const EVP_CIPHER, 172 ek: *mut *mut c_uchar, 173 ekl: *mut c_int, 174 iv: *mut c_uchar, 175 pubk: *mut *mut EVP_PKEY, 176 npubk: c_int, 177 ) -> c_int; EVP_SealFinalnull178 pub fn EVP_SealFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int; EVP_EncryptInit_exnull179 pub fn EVP_EncryptInit_ex( 180 ctx: *mut EVP_CIPHER_CTX, 181 cipher: *const EVP_CIPHER, 182 impl_: *mut ENGINE, 183 key: *const c_uchar, 184 iv: *const c_uchar, 185 ) -> c_int; EVP_EncryptUpdatenull186 pub fn EVP_EncryptUpdate( 187 ctx: *mut EVP_CIPHER_CTX, 188 out: *mut c_uchar, 189 outl: *mut c_int, 190 in_: *const u8, 191 inl: c_int, 192 ) -> c_int; EVP_EncryptFinal_exnull193 pub fn EVP_EncryptFinal_ex( 194 ctx: *mut EVP_CIPHER_CTX, 195 out: *mut c_uchar, 196 outl: *mut c_int, 197 ) -> c_int; EVP_OpenInitnull198 pub fn EVP_OpenInit( 199 ctx: *mut EVP_CIPHER_CTX, 200 type_: *const EVP_CIPHER, 201 ek: *const c_uchar, 202 ekl: c_int, 203 iv: *const c_uchar, 204 priv_: *mut EVP_PKEY, 205 ) -> c_int; EVP_OpenFinalnull206 pub fn EVP_OpenFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int; EVP_DecryptInit_exnull207 pub fn EVP_DecryptInit_ex( 208 ctx: *mut EVP_CIPHER_CTX, 209 cipher: *const EVP_CIPHER, 210 impl_: *mut ENGINE, 211 key: *const c_uchar, 212 iv: *const c_uchar, 213 ) -> c_int; EVP_DecryptUpdatenull214 pub fn EVP_DecryptUpdate( 215 ctx: *mut EVP_CIPHER_CTX, 216 out: *mut c_uchar, 217 outl: *mut c_int, 218 in_: *const u8, 219 inl: c_int, 220 ) -> c_int; EVP_DecryptFinal_exnull221 pub fn EVP_DecryptFinal_ex( 222 ctx: *mut EVP_CIPHER_CTX, 223 outm: *mut c_uchar, 224 outl: *mut c_int, 225 ) -> c_int; 226 } 227 cfg_if! { 228 if #[cfg(ossl300)] { 229 extern "C" { EVP_PKEY_get_sizenull230 pub fn EVP_PKEY_get_size(pkey: *const EVP_PKEY) -> c_int; 231 } 232 } else { 233 const_ptr_api! { 234 extern "C" { EVP_PKEY_sizenull235 pub fn EVP_PKEY_size(pkey: #[const_ptr_if(any(ossl111b, libressl280))] EVP_PKEY) -> c_int; 236 } 237 } 238 } 239 } 240 cfg_if! { 241 if #[cfg(any(ossl111, libressl370))] { 242 extern "C" { EVP_DigestSignnull243 pub fn EVP_DigestSign( 244 ctx: *mut EVP_MD_CTX, 245 sigret: *mut c_uchar, 246 siglen: *mut size_t, 247 tbs: *const c_uchar, 248 tbslen: size_t 249 ) -> c_int; 250 EVP_DigestVerifynull251 pub fn EVP_DigestVerify( 252 ctx: *mut EVP_MD_CTX, 253 sigret: *const c_uchar, 254 siglen: size_t, 255 tbs: *const c_uchar, 256 tbslen: size_t 257 ) -> c_int; 258 } 259 } 260 } 261 const_ptr_api! { 262 extern "C" { EVP_DigestVerifyFinalnull263 pub fn EVP_DigestVerifyFinal( 264 ctx: *mut EVP_MD_CTX, 265 sigret: #[const_ptr_if(any(ossl102, libressl280))] c_uchar, 266 siglen: size_t, 267 ) -> c_int; 268 } 269 } 270 271 extern "C" { EVP_CIPHER_CTX_newnull272 pub fn EVP_CIPHER_CTX_new() -> *mut EVP_CIPHER_CTX; EVP_CIPHER_CTX_freenull273 pub fn EVP_CIPHER_CTX_free(ctx: *mut EVP_CIPHER_CTX); EVP_MD_CTX_copy_exnull274 pub fn EVP_MD_CTX_copy_ex(dst: *mut EVP_MD_CTX, src: *const EVP_MD_CTX) -> c_int; 275 #[cfg(ossl111)] EVP_MD_CTX_resetnull276 pub fn EVP_MD_CTX_reset(ctx: *mut EVP_MD_CTX) -> c_int; EVP_CIPHER_CTX_set_key_lengthnull277 pub fn EVP_CIPHER_CTX_set_key_length(ctx: *mut EVP_CIPHER_CTX, keylen: c_int) -> c_int; EVP_CIPHER_CTX_set_paddingnull278 pub fn EVP_CIPHER_CTX_set_padding(ctx: *mut EVP_CIPHER_CTX, padding: c_int) -> c_int; EVP_CIPHER_CTX_ctrlnull279 pub fn EVP_CIPHER_CTX_ctrl( 280 ctx: *mut EVP_CIPHER_CTX, 281 type_: c_int, 282 arg: c_int, 283 ptr: *mut c_void, 284 ) -> c_int; EVP_CIPHER_CTX_rand_keynull285 pub fn EVP_CIPHER_CTX_rand_key(ctx: *mut EVP_CIPHER_CTX, key: *mut c_uchar) -> c_int; EVP_CIPHER_CTX_set_flagsnull286 pub fn EVP_CIPHER_CTX_set_flags(ctx: *mut EVP_CIPHER_CTX, flags: c_int); 287 EVP_md_nullnull288 pub fn EVP_md_null() -> *const EVP_MD; EVP_md5null289 pub fn EVP_md5() -> *const EVP_MD; EVP_sha1null290 pub fn EVP_sha1() -> *const EVP_MD; EVP_sha224null291 pub fn EVP_sha224() -> *const EVP_MD; EVP_sha256null292 pub fn EVP_sha256() -> *const EVP_MD; EVP_sha384null293 pub fn EVP_sha384() -> *const EVP_MD; EVP_sha512null294 pub fn EVP_sha512() -> *const EVP_MD; 295 #[cfg(ossl111)] EVP_sha3_224null296 pub fn EVP_sha3_224() -> *const EVP_MD; 297 #[cfg(ossl111)] EVP_sha3_256null298 pub fn EVP_sha3_256() -> *const EVP_MD; 299 #[cfg(ossl111)] EVP_sha3_384null300 pub fn EVP_sha3_384() -> *const EVP_MD; 301 #[cfg(ossl111)] EVP_sha3_512null302 pub fn EVP_sha3_512() -> *const EVP_MD; 303 #[cfg(ossl111)] EVP_shake128null304 pub fn EVP_shake128() -> *const EVP_MD; 305 #[cfg(ossl111)] EVP_shake256null306 pub fn EVP_shake256() -> *const EVP_MD; EVP_ripemd160null307 pub fn EVP_ripemd160() -> *const EVP_MD; 308 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM3")))] EVP_sm3null309 pub fn EVP_sm3() -> *const EVP_MD; EVP_des_ecbnull310 pub fn EVP_des_ecb() -> *const EVP_CIPHER; EVP_des_ede3null311 pub fn EVP_des_ede3() -> *const EVP_CIPHER; EVP_des_ede3_cbcnull312 pub fn EVP_des_ede3_cbc() -> *const EVP_CIPHER; EVP_des_ede3_cfb64null313 pub fn EVP_des_ede3_cfb64() -> *const EVP_CIPHER; EVP_des_cbcnull314 pub fn EVP_des_cbc() -> *const EVP_CIPHER; 315 #[cfg(not(osslconf = "OPENSSL_NO_RC4"))] EVP_rc4null316 pub fn EVP_rc4() -> *const EVP_CIPHER; EVP_bf_ecbnull317 pub fn EVP_bf_ecb() -> *const EVP_CIPHER; EVP_bf_cbcnull318 pub fn EVP_bf_cbc() -> *const EVP_CIPHER; EVP_bf_cfb64null319 pub fn EVP_bf_cfb64() -> *const EVP_CIPHER; EVP_bf_ofbnull320 pub fn EVP_bf_ofb() -> *const EVP_CIPHER; EVP_aes_128_ecbnull321 pub fn EVP_aes_128_ecb() -> *const EVP_CIPHER; EVP_aes_128_cbcnull322 pub fn EVP_aes_128_cbc() -> *const EVP_CIPHER; EVP_aes_128_cfb1null323 pub fn EVP_aes_128_cfb1() -> *const EVP_CIPHER; EVP_aes_128_cfb8null324 pub fn EVP_aes_128_cfb8() -> *const EVP_CIPHER; EVP_aes_128_cfb128null325 pub fn EVP_aes_128_cfb128() -> *const EVP_CIPHER; EVP_aes_128_ctrnull326 pub fn EVP_aes_128_ctr() -> *const EVP_CIPHER; EVP_aes_128_ccmnull327 pub fn EVP_aes_128_ccm() -> *const EVP_CIPHER; EVP_aes_128_gcmnull328 pub fn EVP_aes_128_gcm() -> *const EVP_CIPHER; EVP_aes_128_xtsnull329 pub fn EVP_aes_128_xts() -> *const EVP_CIPHER; EVP_aes_128_ofbnull330 pub fn EVP_aes_128_ofb() -> *const EVP_CIPHER; 331 #[cfg(ossl110)] EVP_aes_128_ocbnull332 pub fn EVP_aes_128_ocb() -> *const EVP_CIPHER; 333 #[cfg(ossl102)] EVP_aes_128_wrapnull334 pub fn EVP_aes_128_wrap() -> *const EVP_CIPHER; 335 #[cfg(ossl110)] EVP_aes_128_wrap_padnull336 pub fn EVP_aes_128_wrap_pad() -> *const EVP_CIPHER; EVP_aes_192_ecbnull337 pub fn EVP_aes_192_ecb() -> *const EVP_CIPHER; EVP_aes_192_cbcnull338 pub fn EVP_aes_192_cbc() -> *const EVP_CIPHER; EVP_aes_192_cfb1null339 pub fn EVP_aes_192_cfb1() -> *const EVP_CIPHER; EVP_aes_192_cfb8null340 pub fn EVP_aes_192_cfb8() -> *const EVP_CIPHER; EVP_aes_192_cfb128null341 pub fn EVP_aes_192_cfb128() -> *const EVP_CIPHER; EVP_aes_192_ctrnull342 pub fn EVP_aes_192_ctr() -> *const EVP_CIPHER; EVP_aes_192_ccmnull343 pub fn EVP_aes_192_ccm() -> *const EVP_CIPHER; EVP_aes_192_gcmnull344 pub fn EVP_aes_192_gcm() -> *const EVP_CIPHER; EVP_aes_192_ofbnull345 pub fn EVP_aes_192_ofb() -> *const EVP_CIPHER; 346 #[cfg(ossl110)] EVP_aes_192_ocbnull347 pub fn EVP_aes_192_ocb() -> *const EVP_CIPHER; 348 #[cfg(ossl102)] EVP_aes_192_wrapnull349 pub fn EVP_aes_192_wrap() -> *const EVP_CIPHER; 350 #[cfg(ossl110)] EVP_aes_192_wrap_padnull351 pub fn EVP_aes_192_wrap_pad() -> *const EVP_CIPHER; EVP_aes_256_ecbnull352 pub fn EVP_aes_256_ecb() -> *const EVP_CIPHER; EVP_aes_256_cbcnull353 pub fn EVP_aes_256_cbc() -> *const EVP_CIPHER; EVP_aes_256_cfb1null354 pub fn EVP_aes_256_cfb1() -> *const EVP_CIPHER; EVP_aes_256_cfb8null355 pub fn EVP_aes_256_cfb8() -> *const EVP_CIPHER; EVP_aes_256_cfb128null356 pub fn EVP_aes_256_cfb128() -> *const EVP_CIPHER; EVP_aes_256_ctrnull357 pub fn EVP_aes_256_ctr() -> *const EVP_CIPHER; EVP_aes_256_ccmnull358 pub fn EVP_aes_256_ccm() -> *const EVP_CIPHER; EVP_aes_256_gcmnull359 pub fn EVP_aes_256_gcm() -> *const EVP_CIPHER; EVP_aes_256_xtsnull360 pub fn EVP_aes_256_xts() -> *const EVP_CIPHER; EVP_aes_256_ofbnull361 pub fn EVP_aes_256_ofb() -> *const EVP_CIPHER; 362 #[cfg(ossl110)] EVP_aes_256_ocbnull363 pub fn EVP_aes_256_ocb() -> *const EVP_CIPHER; 364 #[cfg(ossl102)] EVP_aes_256_wrapnull365 pub fn EVP_aes_256_wrap() -> *const EVP_CIPHER; 366 #[cfg(ossl110)] EVP_aes_256_wrap_padnull367 pub fn EVP_aes_256_wrap_pad() -> *const EVP_CIPHER; 368 #[cfg(all(ossl110, not(osslconf = "OPENSSL_NO_CHACHA")))] EVP_chacha20null369 pub fn EVP_chacha20() -> *const EVP_CIPHER; 370 #[cfg(all(ossl110, not(osslconf = "OPENSSL_NO_CHACHA")))] EVP_chacha20_poly1305null371 pub fn EVP_chacha20_poly1305() -> *const EVP_CIPHER; 372 #[cfg(not(osslconf = "OPENSSL_NO_SEED"))] EVP_seed_cbcnull373 pub fn EVP_seed_cbc() -> *const EVP_CIPHER; 374 #[cfg(not(osslconf = "OPENSSL_NO_SEED"))] EVP_seed_cfb128null375 pub fn EVP_seed_cfb128() -> *const EVP_CIPHER; 376 #[cfg(not(osslconf = "OPENSSL_NO_SEED"))] EVP_seed_ecbnull377 pub fn EVP_seed_ecb() -> *const EVP_CIPHER; 378 #[cfg(not(osslconf = "OPENSSL_NO_SEED"))] EVP_seed_ofbnull379 pub fn EVP_seed_ofb() -> *const EVP_CIPHER; 380 381 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_ecbnull382 pub fn EVP_sm4_ecb() -> *const EVP_CIPHER; 383 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_cbcnull384 pub fn EVP_sm4_cbc() -> *const EVP_CIPHER; 385 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_cfb128null386 pub fn EVP_sm4_cfb128() -> *const EVP_CIPHER; 387 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_ofbnull388 pub fn EVP_sm4_ofb() -> *const EVP_CIPHER; 389 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_ctrnull390 pub fn EVP_sm4_ctr() -> *const EVP_CIPHER; 391 392 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_128_cfb128null393 pub fn EVP_camellia_128_cfb128() -> *const EVP_CIPHER; 394 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_128_ecbnull395 pub fn EVP_camellia_128_ecb() -> *const EVP_CIPHER; 396 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_192_cfb128null397 pub fn EVP_camellia_192_cfb128() -> *const EVP_CIPHER; 398 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_192_ecbnull399 pub fn EVP_camellia_192_ecb() -> *const EVP_CIPHER; 400 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_256_cfb128null401 pub fn EVP_camellia_256_cfb128() -> *const EVP_CIPHER; 402 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_256_ecbnull403 pub fn EVP_camellia_256_ecb() -> *const EVP_CIPHER; 404 405 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAST")))] EVP_cast5_cfb64null406 pub fn EVP_cast5_cfb64() -> *const EVP_CIPHER; 407 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAST")))] EVP_cast5_ecbnull408 pub fn EVP_cast5_ecb() -> *const EVP_CIPHER; 409 410 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_IDEA")))] EVP_idea_cfb64null411 pub fn EVP_idea_cfb64() -> *const EVP_CIPHER; 412 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_IDEA")))] EVP_idea_ecbnull413 pub fn EVP_idea_ecb() -> *const EVP_CIPHER; 414 415 #[cfg(not(ossl110))] OPENSSL_add_all_algorithms_noconfnull416 pub fn OPENSSL_add_all_algorithms_noconf(); 417 EVP_get_digestbynamenull418 pub fn EVP_get_digestbyname(name: *const c_char) -> *const EVP_MD; EVP_get_cipherbynamenull419 pub fn EVP_get_cipherbyname(name: *const c_char) -> *const EVP_CIPHER; 420 } 421 422 cfg_if! { 423 if #[cfg(ossl300)] { 424 extern "C" { EVP_PKEY_get_idnull425 pub fn EVP_PKEY_get_id(pkey: *const EVP_PKEY) -> c_int; EVP_PKEY_get_bitsnull426 pub fn EVP_PKEY_get_bits(key: *const EVP_PKEY) -> c_int; EVP_PKEY_get_security_bitsnull427 pub fn EVP_PKEY_get_security_bits(key: *const EVP_PKEY) -> c_int; 428 } 429 } else { 430 extern "C" { EVP_PKEY_idnull431 pub fn EVP_PKEY_id(pkey: *const EVP_PKEY) -> c_int; 432 } 433 const_ptr_api! { 434 extern "C" { EVP_PKEY_bitsnull435 pub fn EVP_PKEY_bits(key: #[const_ptr_if(any(ossl110, libressl280))] EVP_PKEY) -> c_int; 436 #[cfg(any(ossl110, libressl360))] EVP_PKEY_security_bitsnull437 pub fn EVP_PKEY_security_bits(pkey: #[const_ptr_if(any(ossl110, libressl280))] EVP_PKEY) -> c_int; 438 } 439 } 440 } 441 } 442 extern "C" { EVP_PKEY_assignnull443 pub fn EVP_PKEY_assign(pkey: *mut EVP_PKEY, typ: c_int, key: *mut c_void) -> c_int; 444 EVP_PKEY_set1_RSAnull445 pub fn EVP_PKEY_set1_RSA(k: *mut EVP_PKEY, r: *mut RSA) -> c_int; EVP_PKEY_get1_RSAnull446 pub fn EVP_PKEY_get1_RSA(k: *mut EVP_PKEY) -> *mut RSA; EVP_PKEY_get1_DSAnull447 pub fn EVP_PKEY_get1_DSA(k: *mut EVP_PKEY) -> *mut DSA; EVP_PKEY_get1_DHnull448 pub fn EVP_PKEY_get1_DH(k: *mut EVP_PKEY) -> *mut DH; EVP_PKEY_get1_EC_KEYnull449 pub fn EVP_PKEY_get1_EC_KEY(k: *mut EVP_PKEY) -> *mut EC_KEY; 450 EVP_PKEY_newnull451 pub fn EVP_PKEY_new() -> *mut EVP_PKEY; EVP_PKEY_freenull452 pub fn EVP_PKEY_free(k: *mut EVP_PKEY); 453 #[cfg(any(ossl110, libressl270))] EVP_PKEY_up_refnull454 pub fn EVP_PKEY_up_ref(pkey: *mut EVP_PKEY) -> c_int; 455 d2i_AutoPrivateKeynull456 pub fn d2i_AutoPrivateKey( 457 a: *mut *mut EVP_PKEY, 458 pp: *mut *const c_uchar, 459 length: c_long, 460 ) -> *mut EVP_PKEY; 461 EVP_PKEY_cmpnull462 pub fn EVP_PKEY_cmp(a: *const EVP_PKEY, b: *const EVP_PKEY) -> c_int; 463 EVP_PKEY_copy_parametersnull464 pub fn EVP_PKEY_copy_parameters(to: *mut EVP_PKEY, from: *const EVP_PKEY) -> c_int; 465 PKCS5_PBKDF2_HMAC_SHA1null466 pub fn PKCS5_PBKDF2_HMAC_SHA1( 467 pass: *const c_char, 468 passlen: c_int, 469 salt: *const u8, 470 saltlen: c_int, 471 iter: c_int, 472 keylen: c_int, 473 out: *mut u8, 474 ) -> c_int; PKCS5_PBKDF2_HMACnull475 pub fn PKCS5_PBKDF2_HMAC( 476 pass: *const c_char, 477 passlen: c_int, 478 salt: *const c_uchar, 479 saltlen: c_int, 480 iter: c_int, 481 digest: *const EVP_MD, 482 keylen: c_int, 483 out: *mut u8, 484 ) -> c_int; 485 486 #[cfg(ossl110)] EVP_PBE_scryptnull487 pub fn EVP_PBE_scrypt( 488 pass: *const c_char, 489 passlen: size_t, 490 salt: *const c_uchar, 491 saltlen: size_t, 492 N: u64, 493 r: u64, 494 p: u64, 495 maxmem: u64, 496 key: *mut c_uchar, 497 keylen: size_t, 498 ) -> c_int; 499 EVP_PKEY_CTX_newnull500 pub fn EVP_PKEY_CTX_new(k: *mut EVP_PKEY, e: *mut ENGINE) -> *mut EVP_PKEY_CTX; EVP_PKEY_CTX_new_idnull501 pub fn EVP_PKEY_CTX_new_id(id: c_int, e: *mut ENGINE) -> *mut EVP_PKEY_CTX; EVP_PKEY_CTX_freenull502 pub fn EVP_PKEY_CTX_free(ctx: *mut EVP_PKEY_CTX); 503 EVP_PKEY_CTX_ctrlnull504 pub fn EVP_PKEY_CTX_ctrl( 505 ctx: *mut EVP_PKEY_CTX, 506 keytype: c_int, 507 optype: c_int, 508 cmd: c_int, 509 p1: c_int, 510 p2: *mut c_void, 511 ) -> c_int; 512 513 #[cfg(ossl300)] EVP_PKEY_CTX_set_signature_mdnull514 pub fn EVP_PKEY_CTX_set_signature_md(ctx: *mut EVP_PKEY_CTX, md: *const EVP_MD) -> c_int; 515 EVP_PKEY_new_mac_keynull516 pub fn EVP_PKEY_new_mac_key( 517 type_: c_int, 518 e: *mut ENGINE, 519 key: *const c_uchar, 520 keylen: c_int, 521 ) -> *mut EVP_PKEY; 522 EVP_PKEY_derive_initnull523 pub fn EVP_PKEY_derive_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_derive_set_peernull524 pub fn EVP_PKEY_derive_set_peer(ctx: *mut EVP_PKEY_CTX, peer: *mut EVP_PKEY) -> c_int; 525 #[cfg(ossl300)] EVP_PKEY_derive_set_peer_exnull526 pub fn EVP_PKEY_derive_set_peer_ex( 527 ctx: *mut EVP_PKEY_CTX, 528 peer: *mut EVP_PKEY, 529 validate_peer: c_int, 530 ) -> c_int; EVP_PKEY_derivenull531 pub fn EVP_PKEY_derive(ctx: *mut EVP_PKEY_CTX, key: *mut c_uchar, size: *mut size_t) -> c_int; 532 533 #[cfg(ossl300)] EVP_PKEY_Q_keygennull534 pub fn EVP_PKEY_Q_keygen( 535 libctx: *mut OSSL_LIB_CTX, 536 propq: *const c_char, 537 type_: *const c_char, 538 ... 539 ) -> *mut EVP_PKEY; EVP_PKEY_keygen_initnull540 pub fn EVP_PKEY_keygen_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_keygennull541 pub fn EVP_PKEY_keygen(ctx: *mut EVP_PKEY_CTX, key: *mut *mut EVP_PKEY) -> c_int; 542 EVP_PKEY_sign_initnull543 pub fn EVP_PKEY_sign_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_signnull544 pub fn EVP_PKEY_sign( 545 ctx: *mut EVP_PKEY_CTX, 546 sig: *mut c_uchar, 547 siglen: *mut size_t, 548 tbs: *const c_uchar, 549 tbslen: size_t, 550 ) -> c_int; EVP_PKEY_verify_initnull551 pub fn EVP_PKEY_verify_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_verifynull552 pub fn EVP_PKEY_verify( 553 ctx: *mut EVP_PKEY_CTX, 554 sig: *const c_uchar, 555 siglen: size_t, 556 tbs: *const c_uchar, 557 tbslen: size_t, 558 ) -> c_int; EVP_PKEY_encrypt_initnull559 pub fn EVP_PKEY_encrypt_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_encryptnull560 pub fn EVP_PKEY_encrypt( 561 ctx: *mut EVP_PKEY_CTX, 562 pout: *mut c_uchar, 563 poutlen: *mut size_t, 564 pin: *const c_uchar, 565 pinlen: size_t, 566 ) -> c_int; EVP_PKEY_decrypt_initnull567 pub fn EVP_PKEY_decrypt_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_decryptnull568 pub fn EVP_PKEY_decrypt( 569 ctx: *mut EVP_PKEY_CTX, 570 pout: *mut c_uchar, 571 poutlen: *mut size_t, 572 pin: *const c_uchar, 573 pinlen: size_t, 574 ) -> c_int; EVP_PKEY_verify_recover_initnull575 pub fn EVP_PKEY_verify_recover_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_verify_recovernull576 pub fn EVP_PKEY_verify_recover( 577 ctx: *mut EVP_PKEY_CTX, 578 rout: *mut c_uchar, 579 routlen: *mut size_t, 580 sig: *const c_uchar, 581 siglen: size_t, 582 ) -> c_int; 583 } 584 585 const_ptr_api! { 586 extern "C" { EVP_PKCS82PKEYnull587 pub fn EVP_PKCS82PKEY(p8: #[const_ptr_if(any(ossl110, libressl280))] PKCS8_PRIV_KEY_INFO) -> *mut EVP_PKEY; 588 } 589 } 590 591 cfg_if! { 592 if #[cfg(any(ossl111, libressl370))] { 593 extern "C" { EVP_PKEY_get_raw_public_keynull594 pub fn EVP_PKEY_get_raw_public_key( 595 pkey: *const EVP_PKEY, 596 ppub: *mut c_uchar, 597 len: *mut size_t, 598 ) -> c_int; EVP_PKEY_new_raw_public_keynull599 pub fn EVP_PKEY_new_raw_public_key( 600 ttype: c_int, 601 e: *mut ENGINE, 602 key: *const c_uchar, 603 keylen: size_t, 604 ) -> *mut EVP_PKEY; EVP_PKEY_get_raw_private_keynull605 pub fn EVP_PKEY_get_raw_private_key( 606 pkey: *const EVP_PKEY, 607 ppriv: *mut c_uchar, 608 len: *mut size_t, 609 ) -> c_int; EVP_PKEY_new_raw_private_keynull610 pub fn EVP_PKEY_new_raw_private_key( 611 ttype: c_int, 612 e: *mut ENGINE, 613 key: *const c_uchar, 614 keylen: size_t, 615 ) -> *mut EVP_PKEY; 616 } 617 } 618 } 619 620 extern "C" { EVP_EncodeBlocknull621 pub fn EVP_EncodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int; EVP_DecodeBlocknull622 pub fn EVP_DecodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int; 623 } 624