1 use super::super::*; 2 use libc::*; 3 4 cfg_if! { 5 if #[cfg(ossl300)] { 6 extern "C" { 7 pub fn EVP_MD_get_block_size(md: *const EVP_MD) -> c_int; 8 pub fn EVP_MD_get_size(md: *const EVP_MD) -> c_int; 9 pub fn EVP_MD_get_type(md: *const EVP_MD) -> c_int; 10 11 pub fn EVP_MD_CTX_get0_md(ctx: *const EVP_MD_CTX) -> *const EVP_MD; 12 13 pub fn EVP_CIPHER_get_key_length(cipher: *const EVP_CIPHER) -> c_int; 14 pub fn EVP_CIPHER_get_block_size(cipher: *const EVP_CIPHER) -> c_int; 15 pub fn EVP_CIPHER_get_iv_length(cipher: *const EVP_CIPHER) -> c_int; 16 pub fn EVP_CIPHER_get_nid(cipher: *const EVP_CIPHER) -> c_int; 17 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; 22 pub fn EVP_CIPHER_free(cipher: *mut EVP_CIPHER); 23 24 pub fn EVP_CIPHER_CTX_get0_cipher(ctx: *const EVP_CIPHER_CTX) -> *const EVP_CIPHER; 25 pub fn EVP_CIPHER_CTX_get_block_size(ctx: *const EVP_CIPHER_CTX) -> c_int; 26 pub fn EVP_CIPHER_CTX_get_key_length(ctx: *const EVP_CIPHER_CTX) -> c_int; 27 pub fn EVP_CIPHER_CTX_get_iv_length(ctx: *const EVP_CIPHER_CTX) -> c_int; 28 pub fn EVP_CIPHER_CTX_get_tag_length(ctx: *const EVP_CIPHER_CTX) -> c_int; 29 pub fn EVP_CIPHER_CTX_get_num(ctx: *const EVP_CIPHER_CTX) -> c_int; 30 } 31 } else { 32 extern "C" { 33 pub fn EVP_MD_block_size(md: *const EVP_MD) -> c_int; 34 pub fn EVP_MD_size(md: *const EVP_MD) -> c_int; 35 pub fn EVP_MD_type(md: *const EVP_MD) -> c_int; 36 37 pub fn EVP_MD_CTX_md(ctx: *const EVP_MD_CTX) -> *const EVP_MD; 38 39 pub fn EVP_CIPHER_key_length(cipher: *const EVP_CIPHER) -> c_int; 40 pub fn EVP_CIPHER_block_size(cipher: *const EVP_CIPHER) -> c_int; 41 pub fn EVP_CIPHER_iv_length(cipher: *const EVP_CIPHER) -> c_int; 42 pub fn EVP_CIPHER_nid(cipher: *const EVP_CIPHER) -> c_int; 43 44 pub fn EVP_CIPHER_CTX_cipher(ctx: *const EVP_CIPHER_CTX) -> *const EVP_CIPHER; 45 pub fn EVP_CIPHER_CTX_block_size(ctx: *const EVP_CIPHER_CTX) -> c_int; 46 pub fn EVP_CIPHER_CTX_key_length(ctx: *const EVP_CIPHER_CTX) -> c_int; 47 pub fn EVP_CIPHER_CTX_iv_length(ctx: *const EVP_CIPHER_CTX) -> c_int; 48 #[cfg(ossl110)] 49 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" { 57 pub fn EVP_MD_CTX_new() -> *mut EVP_MD_CTX; 58 pub fn EVP_MD_CTX_free(ctx: *mut EVP_MD_CTX); 59 } 60 } else { 61 extern "C" { 62 pub fn EVP_MD_CTX_create() -> *mut EVP_MD_CTX; 63 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" { 71 pub fn EVP_default_properties_is_fips_enabled(libctx: *mut OSSL_LIB_CTX) -> c_int; 72 } 73 } 74 } 75 76 extern "C" { EVP_DigestInit_ex(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD, imple: *mut ENGINE) -> c_int77 pub fn EVP_DigestInit_ex(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD, imple: *mut ENGINE) 78 -> c_int; EVP_DigestUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, n: size_t) -> c_int79 pub fn EVP_DigestUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, n: size_t) -> c_int; EVP_DigestFinal_ex(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int80 pub fn EVP_DigestFinal_ex(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int; 81 #[cfg(ossl300)] EVP_Q_digest( libctx: *mut OSSL_LIB_CTX, name: *const c_char, propq: *const c_char, data: *const c_void, count: size_t, md: *mut c_uchar, size: *mut size_t, ) -> c_int82 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_DigestInit(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD) -> c_int91 pub fn EVP_DigestInit(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD) -> c_int; EVP_DigestFinal(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int92 pub fn EVP_DigestFinal(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int; 93 #[cfg(ossl111)] EVP_DigestFinalXOF(ctx: *mut EVP_MD_CTX, res: *mut u8, len: usize) -> c_int94 pub fn EVP_DigestFinalXOF(ctx: *mut EVP_MD_CTX, res: *mut u8, len: usize) -> c_int; 95 96 #[cfg(ossl300)] EVP_MD_fetch( ctx: *mut OSSL_LIB_CTX, algorithm: *const c_char, properties: *const c_char, ) -> *mut EVP_MD97 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_free(md: *mut EVP_MD)104 pub fn EVP_MD_free(md: *mut EVP_MD); 105 EVP_BytesToKey( typ: *const EVP_CIPHER, md: *const EVP_MD, salt: *const u8, data: *const u8, datalen: c_int, count: c_int, key: *mut u8, iv: *mut u8, ) -> c_int106 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_CipherInit( ctx: *mut EVP_CIPHER_CTX, evp: *const EVP_CIPHER, key: *const u8, iv: *const u8, mode: c_int, ) -> c_int117 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_ex( ctx: *mut EVP_CIPHER_CTX, type_: *const EVP_CIPHER, impl_: *mut ENGINE, key: *const c_uchar, iv: *const c_uchar, enc: c_int, ) -> c_int124 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_CipherUpdate( ctx: *mut EVP_CIPHER_CTX, outbuf: *mut u8, outlen: *mut c_int, inbuf: *const u8, inlen: c_int, ) -> c_int132 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_CipherFinal(ctx: *mut EVP_CIPHER_CTX, res: *mut u8, len: *mut c_int) -> c_int139 pub fn EVP_CipherFinal(ctx: *mut EVP_CIPHER_CTX, res: *mut u8, len: *mut c_int) -> c_int; 140 EVP_DigestSignInit( ctx: *mut EVP_MD_CTX, pctx: *mut *mut EVP_PKEY_CTX, type_: *const EVP_MD, e: *mut ENGINE, pkey: *mut EVP_PKEY, ) -> c_int141 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_DigestSignUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, dsize: size_t) -> c_int150 pub fn EVP_DigestSignUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, dsize: size_t) -> c_int; EVP_DigestSignFinal( ctx: *mut EVP_MD_CTX, sig: *mut c_uchar, siglen: *mut size_t, ) -> c_int151 pub fn EVP_DigestSignFinal( 152 ctx: *mut EVP_MD_CTX, 153 sig: *mut c_uchar, 154 siglen: *mut size_t, 155 ) -> c_int; EVP_DigestVerifyInit( ctx: *mut EVP_MD_CTX, pctx: *mut *mut EVP_PKEY_CTX, type_: *const EVP_MD, e: *mut ENGINE, pkey: *mut EVP_PKEY, ) -> c_int156 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_DigestVerifyUpdate( ctx: *mut EVP_MD_CTX, data: *const c_void, dsize: size_t, ) -> c_int164 pub fn EVP_DigestVerifyUpdate( 165 ctx: *mut EVP_MD_CTX, 166 data: *const c_void, 167 dsize: size_t, 168 ) -> c_int; EVP_SealInit( ctx: *mut EVP_CIPHER_CTX, type_: *const EVP_CIPHER, ek: *mut *mut c_uchar, ekl: *mut c_int, iv: *mut c_uchar, pubk: *mut *mut EVP_PKEY, npubk: c_int, ) -> c_int169 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_SealFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int178 pub fn EVP_SealFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int; EVP_EncryptInit_ex( ctx: *mut EVP_CIPHER_CTX, cipher: *const EVP_CIPHER, impl_: *mut ENGINE, key: *const c_uchar, iv: *const c_uchar, ) -> c_int179 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_EncryptUpdate( ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int, in_: *const u8, inl: c_int, ) -> c_int186 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_ex( ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int, ) -> c_int193 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_OpenInit( ctx: *mut EVP_CIPHER_CTX, type_: *const EVP_CIPHER, ek: *const c_uchar, ekl: c_int, iv: *const c_uchar, priv_: *mut EVP_PKEY, ) -> c_int198 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_OpenFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int206 pub fn EVP_OpenFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int; EVP_DecryptInit_ex( ctx: *mut EVP_CIPHER_CTX, cipher: *const EVP_CIPHER, impl_: *mut ENGINE, key: *const c_uchar, iv: *const c_uchar, ) -> c_int207 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_DecryptUpdate( ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int, in_: *const u8, inl: c_int, ) -> c_int214 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_ex( ctx: *mut EVP_CIPHER_CTX, outm: *mut c_uchar, outl: *mut c_int, ) -> c_int221 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" { 230 pub fn EVP_PKEY_get_size(pkey: *const EVP_PKEY) -> c_int; 231 } 232 } else { 233 const_ptr_api! { 234 extern "C" { 235 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" { 243 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 251 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" { 263 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_new() -> *mut EVP_CIPHER_CTX272 pub fn EVP_CIPHER_CTX_new() -> *mut EVP_CIPHER_CTX; EVP_CIPHER_CTX_free(ctx: *mut EVP_CIPHER_CTX)273 pub fn EVP_CIPHER_CTX_free(ctx: *mut EVP_CIPHER_CTX); EVP_MD_CTX_copy_ex(dst: *mut EVP_MD_CTX, src: *const EVP_MD_CTX) -> c_int274 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_reset(ctx: *mut EVP_MD_CTX) -> c_int276 pub fn EVP_MD_CTX_reset(ctx: *mut EVP_MD_CTX) -> c_int; EVP_CIPHER_CTX_set_key_length(ctx: *mut EVP_CIPHER_CTX, keylen: c_int) -> c_int277 pub fn EVP_CIPHER_CTX_set_key_length(ctx: *mut EVP_CIPHER_CTX, keylen: c_int) -> c_int; EVP_CIPHER_CTX_set_padding(ctx: *mut EVP_CIPHER_CTX, padding: c_int) -> c_int278 pub fn EVP_CIPHER_CTX_set_padding(ctx: *mut EVP_CIPHER_CTX, padding: c_int) -> c_int; EVP_CIPHER_CTX_ctrl( ctx: *mut EVP_CIPHER_CTX, type_: c_int, arg: c_int, ptr: *mut c_void, ) -> c_int279 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_key(ctx: *mut EVP_CIPHER_CTX, key: *mut c_uchar) -> c_int285 pub fn EVP_CIPHER_CTX_rand_key(ctx: *mut EVP_CIPHER_CTX, key: *mut c_uchar) -> c_int; EVP_CIPHER_CTX_set_flags(ctx: *mut EVP_CIPHER_CTX, flags: c_int)286 pub fn EVP_CIPHER_CTX_set_flags(ctx: *mut EVP_CIPHER_CTX, flags: c_int); 287 EVP_md_null() -> *const EVP_MD288 pub fn EVP_md_null() -> *const EVP_MD; EVP_md5() -> *const EVP_MD289 pub fn EVP_md5() -> *const EVP_MD; EVP_sha1() -> *const EVP_MD290 pub fn EVP_sha1() -> *const EVP_MD; EVP_sha224() -> *const EVP_MD291 pub fn EVP_sha224() -> *const EVP_MD; EVP_sha256() -> *const EVP_MD292 pub fn EVP_sha256() -> *const EVP_MD; EVP_sha384() -> *const EVP_MD293 pub fn EVP_sha384() -> *const EVP_MD; EVP_sha512() -> *const EVP_MD294 pub fn EVP_sha512() -> *const EVP_MD; 295 #[cfg(ossl111)] EVP_sha3_224() -> *const EVP_MD296 pub fn EVP_sha3_224() -> *const EVP_MD; 297 #[cfg(ossl111)] EVP_sha3_256() -> *const EVP_MD298 pub fn EVP_sha3_256() -> *const EVP_MD; 299 #[cfg(ossl111)] EVP_sha3_384() -> *const EVP_MD300 pub fn EVP_sha3_384() -> *const EVP_MD; 301 #[cfg(ossl111)] EVP_sha3_512() -> *const EVP_MD302 pub fn EVP_sha3_512() -> *const EVP_MD; 303 #[cfg(ossl111)] EVP_shake128() -> *const EVP_MD304 pub fn EVP_shake128() -> *const EVP_MD; 305 #[cfg(ossl111)] EVP_shake256() -> *const EVP_MD306 pub fn EVP_shake256() -> *const EVP_MD; EVP_ripemd160() -> *const EVP_MD307 pub fn EVP_ripemd160() -> *const EVP_MD; 308 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM3")))] EVP_sm3() -> *const EVP_MD309 pub fn EVP_sm3() -> *const EVP_MD; EVP_des_ecb() -> *const EVP_CIPHER310 pub fn EVP_des_ecb() -> *const EVP_CIPHER; EVP_des_ede3() -> *const EVP_CIPHER311 pub fn EVP_des_ede3() -> *const EVP_CIPHER; EVP_des_ede3_cbc() -> *const EVP_CIPHER312 pub fn EVP_des_ede3_cbc() -> *const EVP_CIPHER; EVP_des_ede3_cfb64() -> *const EVP_CIPHER313 pub fn EVP_des_ede3_cfb64() -> *const EVP_CIPHER; EVP_des_cbc() -> *const EVP_CIPHER314 pub fn EVP_des_cbc() -> *const EVP_CIPHER; 315 #[cfg(not(osslconf = "OPENSSL_NO_RC4"))] EVP_rc4() -> *const EVP_CIPHER316 pub fn EVP_rc4() -> *const EVP_CIPHER; EVP_bf_ecb() -> *const EVP_CIPHER317 pub fn EVP_bf_ecb() -> *const EVP_CIPHER; EVP_bf_cbc() -> *const EVP_CIPHER318 pub fn EVP_bf_cbc() -> *const EVP_CIPHER; EVP_bf_cfb64() -> *const EVP_CIPHER319 pub fn EVP_bf_cfb64() -> *const EVP_CIPHER; EVP_bf_ofb() -> *const EVP_CIPHER320 pub fn EVP_bf_ofb() -> *const EVP_CIPHER; EVP_aes_128_ecb() -> *const EVP_CIPHER321 pub fn EVP_aes_128_ecb() -> *const EVP_CIPHER; EVP_aes_128_cbc() -> *const EVP_CIPHER322 pub fn EVP_aes_128_cbc() -> *const EVP_CIPHER; EVP_aes_128_cfb1() -> *const EVP_CIPHER323 pub fn EVP_aes_128_cfb1() -> *const EVP_CIPHER; EVP_aes_128_cfb8() -> *const EVP_CIPHER324 pub fn EVP_aes_128_cfb8() -> *const EVP_CIPHER; EVP_aes_128_cfb128() -> *const EVP_CIPHER325 pub fn EVP_aes_128_cfb128() -> *const EVP_CIPHER; EVP_aes_128_ctr() -> *const EVP_CIPHER326 pub fn EVP_aes_128_ctr() -> *const EVP_CIPHER; EVP_aes_128_ccm() -> *const EVP_CIPHER327 pub fn EVP_aes_128_ccm() -> *const EVP_CIPHER; EVP_aes_128_gcm() -> *const EVP_CIPHER328 pub fn EVP_aes_128_gcm() -> *const EVP_CIPHER; EVP_aes_128_xts() -> *const EVP_CIPHER329 pub fn EVP_aes_128_xts() -> *const EVP_CIPHER; EVP_aes_128_ofb() -> *const EVP_CIPHER330 pub fn EVP_aes_128_ofb() -> *const EVP_CIPHER; 331 #[cfg(ossl110)] EVP_aes_128_ocb() -> *const EVP_CIPHER332 pub fn EVP_aes_128_ocb() -> *const EVP_CIPHER; 333 #[cfg(ossl102)] EVP_aes_128_wrap() -> *const EVP_CIPHER334 pub fn EVP_aes_128_wrap() -> *const EVP_CIPHER; 335 #[cfg(ossl110)] EVP_aes_128_wrap_pad() -> *const EVP_CIPHER336 pub fn EVP_aes_128_wrap_pad() -> *const EVP_CIPHER; EVP_aes_192_ecb() -> *const EVP_CIPHER337 pub fn EVP_aes_192_ecb() -> *const EVP_CIPHER; EVP_aes_192_cbc() -> *const EVP_CIPHER338 pub fn EVP_aes_192_cbc() -> *const EVP_CIPHER; EVP_aes_192_cfb1() -> *const EVP_CIPHER339 pub fn EVP_aes_192_cfb1() -> *const EVP_CIPHER; EVP_aes_192_cfb8() -> *const EVP_CIPHER340 pub fn EVP_aes_192_cfb8() -> *const EVP_CIPHER; EVP_aes_192_cfb128() -> *const EVP_CIPHER341 pub fn EVP_aes_192_cfb128() -> *const EVP_CIPHER; EVP_aes_192_ctr() -> *const EVP_CIPHER342 pub fn EVP_aes_192_ctr() -> *const EVP_CIPHER; EVP_aes_192_ccm() -> *const EVP_CIPHER343 pub fn EVP_aes_192_ccm() -> *const EVP_CIPHER; EVP_aes_192_gcm() -> *const EVP_CIPHER344 pub fn EVP_aes_192_gcm() -> *const EVP_CIPHER; EVP_aes_192_ofb() -> *const EVP_CIPHER345 pub fn EVP_aes_192_ofb() -> *const EVP_CIPHER; 346 #[cfg(ossl110)] EVP_aes_192_ocb() -> *const EVP_CIPHER347 pub fn EVP_aes_192_ocb() -> *const EVP_CIPHER; 348 #[cfg(ossl102)] EVP_aes_192_wrap() -> *const EVP_CIPHER349 pub fn EVP_aes_192_wrap() -> *const EVP_CIPHER; 350 #[cfg(ossl110)] EVP_aes_192_wrap_pad() -> *const EVP_CIPHER351 pub fn EVP_aes_192_wrap_pad() -> *const EVP_CIPHER; EVP_aes_256_ecb() -> *const EVP_CIPHER352 pub fn EVP_aes_256_ecb() -> *const EVP_CIPHER; EVP_aes_256_cbc() -> *const EVP_CIPHER353 pub fn EVP_aes_256_cbc() -> *const EVP_CIPHER; EVP_aes_256_cfb1() -> *const EVP_CIPHER354 pub fn EVP_aes_256_cfb1() -> *const EVP_CIPHER; EVP_aes_256_cfb8() -> *const EVP_CIPHER355 pub fn EVP_aes_256_cfb8() -> *const EVP_CIPHER; EVP_aes_256_cfb128() -> *const EVP_CIPHER356 pub fn EVP_aes_256_cfb128() -> *const EVP_CIPHER; EVP_aes_256_ctr() -> *const EVP_CIPHER357 pub fn EVP_aes_256_ctr() -> *const EVP_CIPHER; EVP_aes_256_ccm() -> *const EVP_CIPHER358 pub fn EVP_aes_256_ccm() -> *const EVP_CIPHER; EVP_aes_256_gcm() -> *const EVP_CIPHER359 pub fn EVP_aes_256_gcm() -> *const EVP_CIPHER; EVP_aes_256_xts() -> *const EVP_CIPHER360 pub fn EVP_aes_256_xts() -> *const EVP_CIPHER; EVP_aes_256_ofb() -> *const EVP_CIPHER361 pub fn EVP_aes_256_ofb() -> *const EVP_CIPHER; 362 #[cfg(ossl110)] EVP_aes_256_ocb() -> *const EVP_CIPHER363 pub fn EVP_aes_256_ocb() -> *const EVP_CIPHER; 364 #[cfg(ossl102)] EVP_aes_256_wrap() -> *const EVP_CIPHER365 pub fn EVP_aes_256_wrap() -> *const EVP_CIPHER; 366 #[cfg(ossl110)] EVP_aes_256_wrap_pad() -> *const EVP_CIPHER367 pub fn EVP_aes_256_wrap_pad() -> *const EVP_CIPHER; 368 #[cfg(all(ossl110, not(osslconf = "OPENSSL_NO_CHACHA")))] EVP_chacha20() -> *const EVP_CIPHER369 pub fn EVP_chacha20() -> *const EVP_CIPHER; 370 #[cfg(all(ossl110, not(osslconf = "OPENSSL_NO_CHACHA")))] EVP_chacha20_poly1305() -> *const EVP_CIPHER371 pub fn EVP_chacha20_poly1305() -> *const EVP_CIPHER; 372 #[cfg(not(osslconf = "OPENSSL_NO_SEED"))] EVP_seed_cbc() -> *const EVP_CIPHER373 pub fn EVP_seed_cbc() -> *const EVP_CIPHER; 374 #[cfg(not(osslconf = "OPENSSL_NO_SEED"))] EVP_seed_cfb128() -> *const EVP_CIPHER375 pub fn EVP_seed_cfb128() -> *const EVP_CIPHER; 376 #[cfg(not(osslconf = "OPENSSL_NO_SEED"))] EVP_seed_ecb() -> *const EVP_CIPHER377 pub fn EVP_seed_ecb() -> *const EVP_CIPHER; 378 #[cfg(not(osslconf = "OPENSSL_NO_SEED"))] EVP_seed_ofb() -> *const EVP_CIPHER379 pub fn EVP_seed_ofb() -> *const EVP_CIPHER; 380 381 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_ecb() -> *const EVP_CIPHER382 pub fn EVP_sm4_ecb() -> *const EVP_CIPHER; 383 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_cbc() -> *const EVP_CIPHER384 pub fn EVP_sm4_cbc() -> *const EVP_CIPHER; 385 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_cfb128() -> *const EVP_CIPHER386 pub fn EVP_sm4_cfb128() -> *const EVP_CIPHER; 387 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_ofb() -> *const EVP_CIPHER388 pub fn EVP_sm4_ofb() -> *const EVP_CIPHER; 389 #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM4")))] EVP_sm4_ctr() -> *const EVP_CIPHER390 pub fn EVP_sm4_ctr() -> *const EVP_CIPHER; 391 392 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_128_cfb128() -> *const EVP_CIPHER393 pub fn EVP_camellia_128_cfb128() -> *const EVP_CIPHER; 394 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_128_ecb() -> *const EVP_CIPHER395 pub fn EVP_camellia_128_ecb() -> *const EVP_CIPHER; 396 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_192_cfb128() -> *const EVP_CIPHER397 pub fn EVP_camellia_192_cfb128() -> *const EVP_CIPHER; 398 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_192_ecb() -> *const EVP_CIPHER399 pub fn EVP_camellia_192_ecb() -> *const EVP_CIPHER; 400 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_256_cfb128() -> *const EVP_CIPHER401 pub fn EVP_camellia_256_cfb128() -> *const EVP_CIPHER; 402 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAMELLIA")))] EVP_camellia_256_ecb() -> *const EVP_CIPHER403 pub fn EVP_camellia_256_ecb() -> *const EVP_CIPHER; 404 405 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAST")))] EVP_cast5_cfb64() -> *const EVP_CIPHER406 pub fn EVP_cast5_cfb64() -> *const EVP_CIPHER; 407 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_CAST")))] EVP_cast5_ecb() -> *const EVP_CIPHER408 pub fn EVP_cast5_ecb() -> *const EVP_CIPHER; 409 410 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_IDEA")))] EVP_idea_cfb64() -> *const EVP_CIPHER411 pub fn EVP_idea_cfb64() -> *const EVP_CIPHER; 412 #[cfg(not(any(boringssl, osslconf = "OPENSSL_NO_IDEA")))] EVP_idea_ecb() -> *const EVP_CIPHER413 pub fn EVP_idea_ecb() -> *const EVP_CIPHER; 414 415 #[cfg(not(ossl110))] OPENSSL_add_all_algorithms_noconf()416 pub fn OPENSSL_add_all_algorithms_noconf(); 417 EVP_get_digestbyname(name: *const c_char) -> *const EVP_MD418 pub fn EVP_get_digestbyname(name: *const c_char) -> *const EVP_MD; EVP_get_cipherbyname(name: *const c_char) -> *const EVP_CIPHER419 pub fn EVP_get_cipherbyname(name: *const c_char) -> *const EVP_CIPHER; 420 } 421 422 cfg_if! { 423 if #[cfg(ossl300)] { 424 extern "C" { 425 pub fn EVP_PKEY_get_id(pkey: *const EVP_PKEY) -> c_int; 426 pub fn EVP_PKEY_get_bits(key: *const EVP_PKEY) -> c_int; 427 pub fn EVP_PKEY_get_security_bits(key: *const EVP_PKEY) -> c_int; 428 } 429 } else { 430 extern "C" { 431 pub fn EVP_PKEY_id(pkey: *const EVP_PKEY) -> c_int; 432 } 433 const_ptr_api! { 434 extern "C" { 435 pub fn EVP_PKEY_bits(key: #[const_ptr_if(any(ossl110, libressl280))] EVP_PKEY) -> c_int; 436 #[cfg(any(ossl110, libressl360))] 437 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_assign(pkey: *mut EVP_PKEY, typ: c_int, key: *mut c_void) -> c_int443 pub fn EVP_PKEY_assign(pkey: *mut EVP_PKEY, typ: c_int, key: *mut c_void) -> c_int; 444 EVP_PKEY_set1_RSA(k: *mut EVP_PKEY, r: *mut RSA) -> c_int445 pub fn EVP_PKEY_set1_RSA(k: *mut EVP_PKEY, r: *mut RSA) -> c_int; EVP_PKEY_get1_RSA(k: *mut EVP_PKEY) -> *mut RSA446 pub fn EVP_PKEY_get1_RSA(k: *mut EVP_PKEY) -> *mut RSA; EVP_PKEY_get1_DSA(k: *mut EVP_PKEY) -> *mut DSA447 pub fn EVP_PKEY_get1_DSA(k: *mut EVP_PKEY) -> *mut DSA; EVP_PKEY_get1_DH(k: *mut EVP_PKEY) -> *mut DH448 pub fn EVP_PKEY_get1_DH(k: *mut EVP_PKEY) -> *mut DH; EVP_PKEY_get1_EC_KEY(k: *mut EVP_PKEY) -> *mut EC_KEY449 pub fn EVP_PKEY_get1_EC_KEY(k: *mut EVP_PKEY) -> *mut EC_KEY; 450 EVP_PKEY_new() -> *mut EVP_PKEY451 pub fn EVP_PKEY_new() -> *mut EVP_PKEY; EVP_PKEY_free(k: *mut EVP_PKEY)452 pub fn EVP_PKEY_free(k: *mut EVP_PKEY); 453 #[cfg(any(ossl110, libressl270))] EVP_PKEY_up_ref(pkey: *mut EVP_PKEY) -> c_int454 pub fn EVP_PKEY_up_ref(pkey: *mut EVP_PKEY) -> c_int; 455 d2i_AutoPrivateKey( a: *mut *mut EVP_PKEY, pp: *mut *const c_uchar, length: c_long, ) -> *mut EVP_PKEY456 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_cmp(a: *const EVP_PKEY, b: *const EVP_PKEY) -> c_int462 pub fn EVP_PKEY_cmp(a: *const EVP_PKEY, b: *const EVP_PKEY) -> c_int; 463 EVP_PKEY_copy_parameters(to: *mut EVP_PKEY, from: *const EVP_PKEY) -> c_int464 pub fn EVP_PKEY_copy_parameters(to: *mut EVP_PKEY, from: *const EVP_PKEY) -> c_int; 465 PKCS5_PBKDF2_HMAC_SHA1( pass: *const c_char, passlen: c_int, salt: *const u8, saltlen: c_int, iter: c_int, keylen: c_int, out: *mut u8, ) -> c_int466 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_HMAC( pass: *const c_char, passlen: c_int, salt: *const c_uchar, saltlen: c_int, iter: c_int, digest: *const EVP_MD, keylen: c_int, out: *mut u8, ) -> c_int475 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_scrypt( pass: *const c_char, passlen: size_t, salt: *const c_uchar, saltlen: size_t, N: u64, r: u64, p: u64, maxmem: u64, key: *mut c_uchar, keylen: size_t, ) -> c_int487 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_new(k: *mut EVP_PKEY, e: *mut ENGINE) -> *mut EVP_PKEY_CTX500 pub fn EVP_PKEY_CTX_new(k: *mut EVP_PKEY, e: *mut ENGINE) -> *mut EVP_PKEY_CTX; EVP_PKEY_CTX_new_id(id: c_int, e: *mut ENGINE) -> *mut EVP_PKEY_CTX501 pub fn EVP_PKEY_CTX_new_id(id: c_int, e: *mut ENGINE) -> *mut EVP_PKEY_CTX; EVP_PKEY_CTX_free(ctx: *mut EVP_PKEY_CTX)502 pub fn EVP_PKEY_CTX_free(ctx: *mut EVP_PKEY_CTX); 503 EVP_PKEY_CTX_ctrl( ctx: *mut EVP_PKEY_CTX, keytype: c_int, optype: c_int, cmd: c_int, p1: c_int, p2: *mut c_void, ) -> c_int504 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_md(ctx: *mut EVP_PKEY_CTX, md: *const EVP_MD) -> c_int514 pub fn EVP_PKEY_CTX_set_signature_md(ctx: *mut EVP_PKEY_CTX, md: *const EVP_MD) -> c_int; 515 EVP_PKEY_new_mac_key( type_: c_int, e: *mut ENGINE, key: *const c_uchar, keylen: c_int, ) -> *mut EVP_PKEY516 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_init(ctx: *mut EVP_PKEY_CTX) -> c_int523 pub fn EVP_PKEY_derive_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_derive_set_peer(ctx: *mut EVP_PKEY_CTX, peer: *mut EVP_PKEY) -> c_int524 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_ex( ctx: *mut EVP_PKEY_CTX, peer: *mut EVP_PKEY, validate_peer: c_int, ) -> c_int526 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_derive(ctx: *mut EVP_PKEY_CTX, key: *mut c_uchar, size: *mut size_t) -> c_int531 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_keygen( libctx: *mut OSSL_LIB_CTX, propq: *const c_char, type_: *const c_char, ... ) -> *mut EVP_PKEY534 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_init(ctx: *mut EVP_PKEY_CTX) -> c_int540 pub fn EVP_PKEY_keygen_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_keygen(ctx: *mut EVP_PKEY_CTX, key: *mut *mut EVP_PKEY) -> c_int541 pub fn EVP_PKEY_keygen(ctx: *mut EVP_PKEY_CTX, key: *mut *mut EVP_PKEY) -> c_int; 542 EVP_PKEY_sign_init(ctx: *mut EVP_PKEY_CTX) -> c_int543 pub fn EVP_PKEY_sign_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_sign( ctx: *mut EVP_PKEY_CTX, sig: *mut c_uchar, siglen: *mut size_t, tbs: *const c_uchar, tbslen: size_t, ) -> c_int544 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_init(ctx: *mut EVP_PKEY_CTX) -> c_int551 pub fn EVP_PKEY_verify_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_verify( ctx: *mut EVP_PKEY_CTX, sig: *const c_uchar, siglen: size_t, tbs: *const c_uchar, tbslen: size_t, ) -> c_int552 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_init(ctx: *mut EVP_PKEY_CTX) -> c_int559 pub fn EVP_PKEY_encrypt_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_encrypt( ctx: *mut EVP_PKEY_CTX, pout: *mut c_uchar, poutlen: *mut size_t, pin: *const c_uchar, pinlen: size_t, ) -> c_int560 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_init(ctx: *mut EVP_PKEY_CTX) -> c_int567 pub fn EVP_PKEY_decrypt_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_decrypt( ctx: *mut EVP_PKEY_CTX, pout: *mut c_uchar, poutlen: *mut size_t, pin: *const c_uchar, pinlen: size_t, ) -> c_int568 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_init(ctx: *mut EVP_PKEY_CTX) -> c_int575 pub fn EVP_PKEY_verify_recover_init(ctx: *mut EVP_PKEY_CTX) -> c_int; EVP_PKEY_verify_recover( ctx: *mut EVP_PKEY_CTX, rout: *mut c_uchar, routlen: *mut size_t, sig: *const c_uchar, siglen: size_t, ) -> c_int576 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" { 587 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" { 594 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; 599 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; 605 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; 610 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_EncodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int621 pub fn EVP_EncodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int; EVP_DecodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int622 pub fn EVP_DecodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int; 623 } 624