1 use libc::*;
2 use *;
3
4 pub const EVP_MAX_MD_SIZE: c_uint = 64;
5
6 pub const PKCS5_SALT_LEN: c_int = 8;
7 pub const PKCS12_DEFAULT_ITER: c_int = 2048;
8
9 pub const EVP_PKEY_RSA: c_int = NID_rsaEncryption;
10 pub const EVP_PKEY_DSA: c_int = NID_dsa;
11 pub const EVP_PKEY_DH: c_int = NID_dhKeyAgreement;
12 pub const EVP_PKEY_EC: c_int = NID_X9_62_id_ecPublicKey;
13 #[cfg(ossl111)]
14 pub const EVP_PKEY_ED25519: c_int = NID_ED25519;
15 #[cfg(ossl111)]
16 pub const EVP_PKEY_ED448: c_int = NID_ED448;
17 pub const EVP_PKEY_HMAC: c_int = NID_hmac;
18 pub const EVP_PKEY_CMAC: c_int = NID_cmac;
19
20 pub const EVP_CTRL_GCM_SET_IVLEN: c_int = 0x9;
21 pub const EVP_CTRL_GCM_GET_TAG: c_int = 0x10;
22 pub const EVP_CTRL_GCM_SET_TAG: c_int = 0x11;
23
EVP_get_digestbynid(type_: c_int) -> *const EVP_MD24 pub unsafe fn EVP_get_digestbynid(type_: c_int) -> *const EVP_MD {
25 EVP_get_digestbyname(OBJ_nid2sn(type_))
26 }
27
28 extern "C" {
EVP_MD_size(md: *const EVP_MD) -> c_int29 pub fn EVP_MD_size(md: *const EVP_MD) -> c_int;
EVP_MD_type(md: *const EVP_MD) -> c_int30 pub fn EVP_MD_type(md: *const EVP_MD) -> c_int;
31
EVP_CIPHER_key_length(cipher: *const EVP_CIPHER) -> c_int32 pub fn EVP_CIPHER_key_length(cipher: *const EVP_CIPHER) -> c_int;
EVP_CIPHER_block_size(cipher: *const EVP_CIPHER) -> c_int33 pub fn EVP_CIPHER_block_size(cipher: *const EVP_CIPHER) -> c_int;
EVP_CIPHER_iv_length(cipher: *const EVP_CIPHER) -> c_int34 pub fn EVP_CIPHER_iv_length(cipher: *const EVP_CIPHER) -> c_int;
35 }
36
37 cfg_if! {
38 if #[cfg(ossl110)] {
39 extern "C" {
40 pub fn EVP_MD_CTX_new() -> *mut EVP_MD_CTX;
41 pub fn EVP_MD_CTX_free(ctx: *mut EVP_MD_CTX);
42 }
43 } else {
44 extern "C" {
45 pub fn EVP_MD_CTX_create() -> *mut EVP_MD_CTX;
46 pub fn EVP_MD_CTX_destroy(ctx: *mut EVP_MD_CTX);
47 }
48 }
49 }
50
51 extern "C" {
EVP_DigestInit_ex(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD, imple: *mut ENGINE) -> c_int52 pub fn EVP_DigestInit_ex(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD, imple: *mut ENGINE)
53 -> c_int;
EVP_DigestUpdate(ctx: *mut EVP_MD_CTX, data: *const c_void, n: size_t) -> c_int54 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_int55 pub fn EVP_DigestFinal_ex(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int;
EVP_DigestInit(ctx: *mut EVP_MD_CTX, typ: *const EVP_MD) -> c_int56 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_int57 pub fn EVP_DigestFinal(ctx: *mut EVP_MD_CTX, res: *mut u8, n: *mut u32) -> c_int;
58 #[cfg(ossl111)]
EVP_DigestFinalXOF(ctx: *mut EVP_MD_CTX, res: *mut u8, len: usize) -> c_int59 pub fn EVP_DigestFinalXOF(ctx: *mut EVP_MD_CTX, res: *mut u8, len: usize) -> c_int;
60
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_int61 pub fn EVP_BytesToKey(
62 typ: *const EVP_CIPHER,
63 md: *const EVP_MD,
64 salt: *const u8,
65 data: *const u8,
66 datalen: c_int,
67 count: c_int,
68 key: *mut u8,
69 iv: *mut u8,
70 ) -> c_int;
71
EVP_CipherInit( ctx: *mut EVP_CIPHER_CTX, evp: *const EVP_CIPHER, key: *const u8, iv: *const u8, mode: c_int, ) -> c_int72 pub fn EVP_CipherInit(
73 ctx: *mut EVP_CIPHER_CTX,
74 evp: *const EVP_CIPHER,
75 key: *const u8,
76 iv: *const u8,
77 mode: c_int,
78 ) -> 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_int79 pub fn EVP_CipherInit_ex(
80 ctx: *mut EVP_CIPHER_CTX,
81 type_: *const EVP_CIPHER,
82 impl_: *mut ENGINE,
83 key: *const c_uchar,
84 iv: *const c_uchar,
85 enc: c_int,
86 ) -> c_int;
EVP_CipherUpdate( ctx: *mut EVP_CIPHER_CTX, outbuf: *mut u8, outlen: *mut c_int, inbuf: *const u8, inlen: c_int, ) -> c_int87 pub fn EVP_CipherUpdate(
88 ctx: *mut EVP_CIPHER_CTX,
89 outbuf: *mut u8,
90 outlen: *mut c_int,
91 inbuf: *const u8,
92 inlen: c_int,
93 ) -> c_int;
EVP_CipherFinal(ctx: *mut EVP_CIPHER_CTX, res: *mut u8, len: *mut c_int) -> c_int94 pub fn EVP_CipherFinal(ctx: *mut EVP_CIPHER_CTX, res: *mut u8, len: *mut c_int) -> c_int;
95
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_int96 pub fn EVP_DigestSignInit(
97 ctx: *mut EVP_MD_CTX,
98 pctx: *mut *mut EVP_PKEY_CTX,
99 type_: *const EVP_MD,
100 e: *mut ENGINE,
101 pkey: *mut EVP_PKEY,
102 ) -> c_int;
EVP_DigestSignFinal( ctx: *mut EVP_MD_CTX, sig: *mut c_uchar, siglen: *mut size_t, ) -> c_int103 pub fn EVP_DigestSignFinal(
104 ctx: *mut EVP_MD_CTX,
105 sig: *mut c_uchar,
106 siglen: *mut size_t,
107 ) -> 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_int108 pub fn EVP_DigestVerifyInit(
109 ctx: *mut EVP_MD_CTX,
110 pctx: *mut *mut EVP_PKEY_CTX,
111 type_: *const EVP_MD,
112 e: *mut ENGINE,
113 pkey: *mut EVP_PKEY,
114 ) -> 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_int115 pub fn EVP_SealInit(
116 ctx: *mut EVP_CIPHER_CTX,
117 type_: *const EVP_CIPHER,
118 ek: *mut *mut c_uchar,
119 ekl: *mut c_int,
120 iv: *mut c_uchar,
121 pubk: *mut *mut EVP_PKEY,
122 npubk: c_int,
123 ) -> c_int;
EVP_SealFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int124 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_int125 pub fn EVP_EncryptInit_ex(
126 ctx: *mut EVP_CIPHER_CTX,
127 cipher: *const EVP_CIPHER,
128 impl_: *mut ENGINE,
129 key: *const c_uchar,
130 iv: *const c_uchar,
131 ) -> c_int;
EVP_EncryptUpdate( ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int, in_: *const u8, inl: c_int, ) -> c_int132 pub fn EVP_EncryptUpdate(
133 ctx: *mut EVP_CIPHER_CTX,
134 out: *mut c_uchar,
135 outl: *mut c_int,
136 in_: *const u8,
137 inl: c_int,
138 ) -> c_int;
EVP_EncryptFinal_ex( ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int, ) -> c_int139 pub fn EVP_EncryptFinal_ex(
140 ctx: *mut EVP_CIPHER_CTX,
141 out: *mut c_uchar,
142 outl: *mut c_int,
143 ) -> 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_int144 pub fn EVP_OpenInit(
145 ctx: *mut EVP_CIPHER_CTX,
146 type_: *const EVP_CIPHER,
147 ek: *const c_uchar,
148 ekl: c_int,
149 iv: *const c_uchar,
150 priv_: *mut EVP_PKEY,
151 ) -> c_int;
EVP_OpenFinal(ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int) -> c_int152 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_int153 pub fn EVP_DecryptInit_ex(
154 ctx: *mut EVP_CIPHER_CTX,
155 cipher: *const EVP_CIPHER,
156 impl_: *mut ENGINE,
157 key: *const c_uchar,
158 iv: *const c_uchar,
159 ) -> c_int;
EVP_DecryptUpdate( ctx: *mut EVP_CIPHER_CTX, out: *mut c_uchar, outl: *mut c_int, in_: *const u8, inl: c_int, ) -> c_int160 pub fn EVP_DecryptUpdate(
161 ctx: *mut EVP_CIPHER_CTX,
162 out: *mut c_uchar,
163 outl: *mut c_int,
164 in_: *const u8,
165 inl: c_int,
166 ) -> c_int;
EVP_DecryptFinal_ex( ctx: *mut EVP_CIPHER_CTX, outm: *mut c_uchar, outl: *mut c_int ) -> c_int167 pub fn EVP_DecryptFinal_ex(
168 ctx: *mut EVP_CIPHER_CTX,
169 outm: *mut c_uchar,
170 outl: *mut c_int
171 ) -> c_int;
172 }
173 cfg_if! {
174 if #[cfg(any(ossl111b, libressl280))] {
175 extern "C" {
176 pub fn EVP_PKEY_size(pkey: *const EVP_PKEY) -> c_int;
177 }
178 } else {
179 extern "C" {
180 pub fn EVP_PKEY_size(pkey: *mut EVP_PKEY) -> c_int;
181 }
182 }
183 }
184 cfg_if! {
185 if #[cfg(ossl111)] {
186 extern "C" {
187 pub fn EVP_DigestSign(
188 ctx: *mut EVP_MD_CTX,
189 sigret: *mut c_uchar,
190 siglen: *mut size_t,
191 tbs: *const c_uchar,
192 tbslen: size_t
193 ) -> c_int;
194
195 pub fn EVP_DigestVerify(
196 ctx: *mut EVP_MD_CTX,
197 sigret: *const c_uchar,
198 siglen: size_t,
199 tbs: *const c_uchar,
200 tbslen: size_t
201 ) -> c_int;
202 }
203 }
204 }
205 cfg_if! {
206 if #[cfg(any(ossl102, libressl280))] {
207 extern "C" {
208 pub fn EVP_DigestVerifyFinal(
209 ctx: *mut EVP_MD_CTX,
210 sigret: *const c_uchar,
211 siglen: size_t,
212 ) -> c_int;
213 }
214 } else {
215 extern "C" {
216 pub fn EVP_DigestVerifyFinal(
217 ctx: *mut EVP_MD_CTX,
218 sigret: *mut c_uchar,
219 siglen: size_t,
220 ) -> c_int;
221 }
222 }
223 }
224
225 extern "C" {
EVP_CIPHER_CTX_new() -> *mut EVP_CIPHER_CTX226 pub fn EVP_CIPHER_CTX_new() -> *mut EVP_CIPHER_CTX;
EVP_CIPHER_CTX_free(ctx: *mut EVP_CIPHER_CTX)227 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_int228 pub fn EVP_MD_CTX_copy_ex(dst: *mut EVP_MD_CTX, src: *const EVP_MD_CTX) -> c_int;
EVP_CIPHER_CTX_set_key_length(ctx: *mut EVP_CIPHER_CTX, keylen: c_int) -> c_int229 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_int230 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_int231 pub fn EVP_CIPHER_CTX_ctrl(
232 ctx: *mut EVP_CIPHER_CTX,
233 type_: c_int,
234 arg: c_int,
235 ptr: *mut c_void,
236 ) -> c_int;
237
EVP_md_null() -> *const EVP_MD238 pub fn EVP_md_null() -> *const EVP_MD;
EVP_md5() -> *const EVP_MD239 pub fn EVP_md5() -> *const EVP_MD;
EVP_sha1() -> *const EVP_MD240 pub fn EVP_sha1() -> *const EVP_MD;
EVP_sha224() -> *const EVP_MD241 pub fn EVP_sha224() -> *const EVP_MD;
EVP_sha256() -> *const EVP_MD242 pub fn EVP_sha256() -> *const EVP_MD;
EVP_sha384() -> *const EVP_MD243 pub fn EVP_sha384() -> *const EVP_MD;
EVP_sha512() -> *const EVP_MD244 pub fn EVP_sha512() -> *const EVP_MD;
245 #[cfg(ossl111)]
EVP_sha3_224() -> *const EVP_MD246 pub fn EVP_sha3_224() -> *const EVP_MD;
247 #[cfg(ossl111)]
EVP_sha3_256() -> *const EVP_MD248 pub fn EVP_sha3_256() -> *const EVP_MD;
249 #[cfg(ossl111)]
EVP_sha3_384() -> *const EVP_MD250 pub fn EVP_sha3_384() -> *const EVP_MD;
251 #[cfg(ossl111)]
EVP_sha3_512() -> *const EVP_MD252 pub fn EVP_sha3_512() -> *const EVP_MD;
253 #[cfg(ossl111)]
EVP_shake128() -> *const EVP_MD254 pub fn EVP_shake128() -> *const EVP_MD;
255 #[cfg(ossl111)]
EVP_shake256() -> *const EVP_MD256 pub fn EVP_shake256() -> *const EVP_MD;
EVP_ripemd160() -> *const EVP_MD257 pub fn EVP_ripemd160() -> *const EVP_MD;
EVP_des_ecb() -> *const EVP_CIPHER258 pub fn EVP_des_ecb() -> *const EVP_CIPHER;
EVP_des_ede3() -> *const EVP_CIPHER259 pub fn EVP_des_ede3() -> *const EVP_CIPHER;
EVP_des_ede3_cbc() -> *const EVP_CIPHER260 pub fn EVP_des_ede3_cbc() -> *const EVP_CIPHER;
EVP_des_ede3_cfb64() -> *const EVP_CIPHER261 pub fn EVP_des_ede3_cfb64() -> *const EVP_CIPHER;
EVP_des_cbc() -> *const EVP_CIPHER262 pub fn EVP_des_cbc() -> *const EVP_CIPHER;
EVP_rc4() -> *const EVP_CIPHER263 pub fn EVP_rc4() -> *const EVP_CIPHER;
EVP_bf_ecb() -> *const EVP_CIPHER264 pub fn EVP_bf_ecb() -> *const EVP_CIPHER;
EVP_bf_cbc() -> *const EVP_CIPHER265 pub fn EVP_bf_cbc() -> *const EVP_CIPHER;
EVP_bf_cfb64() -> *const EVP_CIPHER266 pub fn EVP_bf_cfb64() -> *const EVP_CIPHER;
EVP_bf_ofb() -> *const EVP_CIPHER267 pub fn EVP_bf_ofb() -> *const EVP_CIPHER;
EVP_aes_128_ecb() -> *const EVP_CIPHER268 pub fn EVP_aes_128_ecb() -> *const EVP_CIPHER;
EVP_aes_128_cbc() -> *const EVP_CIPHER269 pub fn EVP_aes_128_cbc() -> *const EVP_CIPHER;
EVP_aes_128_cfb1() -> *const EVP_CIPHER270 pub fn EVP_aes_128_cfb1() -> *const EVP_CIPHER;
EVP_aes_128_cfb8() -> *const EVP_CIPHER271 pub fn EVP_aes_128_cfb8() -> *const EVP_CIPHER;
EVP_aes_128_cfb128() -> *const EVP_CIPHER272 pub fn EVP_aes_128_cfb128() -> *const EVP_CIPHER;
EVP_aes_128_ctr() -> *const EVP_CIPHER273 pub fn EVP_aes_128_ctr() -> *const EVP_CIPHER;
EVP_aes_128_ccm() -> *const EVP_CIPHER274 pub fn EVP_aes_128_ccm() -> *const EVP_CIPHER;
EVP_aes_128_gcm() -> *const EVP_CIPHER275 pub fn EVP_aes_128_gcm() -> *const EVP_CIPHER;
EVP_aes_128_xts() -> *const EVP_CIPHER276 pub fn EVP_aes_128_xts() -> *const EVP_CIPHER;
EVP_aes_128_ofb() -> *const EVP_CIPHER277 pub fn EVP_aes_128_ofb() -> *const EVP_CIPHER;
EVP_aes_192_ecb() -> *const EVP_CIPHER278 pub fn EVP_aes_192_ecb() -> *const EVP_CIPHER;
EVP_aes_192_cbc() -> *const EVP_CIPHER279 pub fn EVP_aes_192_cbc() -> *const EVP_CIPHER;
EVP_aes_192_cfb1() -> *const EVP_CIPHER280 pub fn EVP_aes_192_cfb1() -> *const EVP_CIPHER;
EVP_aes_192_cfb8() -> *const EVP_CIPHER281 pub fn EVP_aes_192_cfb8() -> *const EVP_CIPHER;
EVP_aes_192_cfb128() -> *const EVP_CIPHER282 pub fn EVP_aes_192_cfb128() -> *const EVP_CIPHER;
EVP_aes_192_ctr() -> *const EVP_CIPHER283 pub fn EVP_aes_192_ctr() -> *const EVP_CIPHER;
EVP_aes_192_ccm() -> *const EVP_CIPHER284 pub fn EVP_aes_192_ccm() -> *const EVP_CIPHER;
EVP_aes_192_gcm() -> *const EVP_CIPHER285 pub fn EVP_aes_192_gcm() -> *const EVP_CIPHER;
EVP_aes_192_ofb() -> *const EVP_CIPHER286 pub fn EVP_aes_192_ofb() -> *const EVP_CIPHER;
EVP_aes_256_ecb() -> *const EVP_CIPHER287 pub fn EVP_aes_256_ecb() -> *const EVP_CIPHER;
EVP_aes_256_cbc() -> *const EVP_CIPHER288 pub fn EVP_aes_256_cbc() -> *const EVP_CIPHER;
EVP_aes_256_cfb1() -> *const EVP_CIPHER289 pub fn EVP_aes_256_cfb1() -> *const EVP_CIPHER;
EVP_aes_256_cfb8() -> *const EVP_CIPHER290 pub fn EVP_aes_256_cfb8() -> *const EVP_CIPHER;
EVP_aes_256_cfb128() -> *const EVP_CIPHER291 pub fn EVP_aes_256_cfb128() -> *const EVP_CIPHER;
EVP_aes_256_ctr() -> *const EVP_CIPHER292 pub fn EVP_aes_256_ctr() -> *const EVP_CIPHER;
EVP_aes_256_ccm() -> *const EVP_CIPHER293 pub fn EVP_aes_256_ccm() -> *const EVP_CIPHER;
EVP_aes_256_gcm() -> *const EVP_CIPHER294 pub fn EVP_aes_256_gcm() -> *const EVP_CIPHER;
EVP_aes_256_xts() -> *const EVP_CIPHER295 pub fn EVP_aes_256_xts() -> *const EVP_CIPHER;
EVP_aes_256_ofb() -> *const EVP_CIPHER296 pub fn EVP_aes_256_ofb() -> *const EVP_CIPHER;
297 #[cfg(ossl110)]
EVP_chacha20() -> *const ::EVP_CIPHER298 pub fn EVP_chacha20() -> *const ::EVP_CIPHER;
299 #[cfg(ossl110)]
EVP_chacha20_poly1305() -> *const ::EVP_CIPHER300 pub fn EVP_chacha20_poly1305() -> *const ::EVP_CIPHER;
301
302 #[cfg(not(ossl110))]
OPENSSL_add_all_algorithms_noconf()303 pub fn OPENSSL_add_all_algorithms_noconf();
304
EVP_get_digestbyname(name: *const c_char) -> *const EVP_MD305 pub fn EVP_get_digestbyname(name: *const c_char) -> *const EVP_MD;
EVP_get_cipherbyname(name: *const c_char) -> *const EVP_CIPHER306 pub fn EVP_get_cipherbyname(name: *const c_char) -> *const EVP_CIPHER;
307
EVP_PKEY_id(pkey: *const EVP_PKEY) -> c_int308 pub fn EVP_PKEY_id(pkey: *const EVP_PKEY) -> c_int;
309 }
310 cfg_if! {
311 if #[cfg(any(ossl110, libressl280))] {
312 extern "C" {
313 pub fn EVP_PKEY_bits(key: *const EVP_PKEY) -> c_int;
314 }
315 } else {
316 extern "C" {
317 pub fn EVP_PKEY_bits(key: *mut EVP_PKEY) -> c_int;
318 }
319 }
320 }
321 extern "C" {
EVP_PKEY_assign(pkey: *mut EVP_PKEY, typ: c_int, key: *mut c_void) -> c_int322 pub fn EVP_PKEY_assign(pkey: *mut EVP_PKEY, typ: c_int, key: *mut c_void) -> c_int;
323
EVP_PKEY_set1_RSA(k: *mut EVP_PKEY, r: *mut RSA) -> c_int324 pub fn EVP_PKEY_set1_RSA(k: *mut EVP_PKEY, r: *mut RSA) -> c_int;
EVP_PKEY_get1_RSA(k: *mut EVP_PKEY) -> *mut RSA325 pub fn EVP_PKEY_get1_RSA(k: *mut EVP_PKEY) -> *mut RSA;
EVP_PKEY_get1_DSA(k: *mut EVP_PKEY) -> *mut DSA326 pub fn EVP_PKEY_get1_DSA(k: *mut EVP_PKEY) -> *mut DSA;
EVP_PKEY_get1_DH(k: *mut EVP_PKEY) -> *mut DH327 pub fn EVP_PKEY_get1_DH(k: *mut EVP_PKEY) -> *mut DH;
EVP_PKEY_get1_EC_KEY(k: *mut EVP_PKEY) -> *mut EC_KEY328 pub fn EVP_PKEY_get1_EC_KEY(k: *mut EVP_PKEY) -> *mut EC_KEY;
329
EVP_PKEY_new() -> *mut EVP_PKEY330 pub fn EVP_PKEY_new() -> *mut EVP_PKEY;
EVP_PKEY_free(k: *mut EVP_PKEY)331 pub fn EVP_PKEY_free(k: *mut EVP_PKEY);
332 #[cfg(any(ossl110, libressl270))]
EVP_PKEY_up_ref(pkey: *mut EVP_PKEY) -> c_int333 pub fn EVP_PKEY_up_ref(pkey: *mut EVP_PKEY) -> c_int;
334
d2i_AutoPrivateKey( a: *mut *mut EVP_PKEY, pp: *mut *const c_uchar, length: c_long, ) -> *mut EVP_PKEY335 pub fn d2i_AutoPrivateKey(
336 a: *mut *mut EVP_PKEY,
337 pp: *mut *const c_uchar,
338 length: c_long,
339 ) -> *mut EVP_PKEY;
340
EVP_PKEY_cmp(a: *const EVP_PKEY, b: *const EVP_PKEY) -> c_int341 pub fn EVP_PKEY_cmp(a: *const EVP_PKEY, b: *const EVP_PKEY) -> c_int;
342
EVP_PKEY_copy_parameters(to: *mut EVP_PKEY, from: *const EVP_PKEY) -> c_int343 pub fn EVP_PKEY_copy_parameters(to: *mut EVP_PKEY, from: *const EVP_PKEY) -> c_int;
344
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_int345 pub fn PKCS5_PBKDF2_HMAC_SHA1(
346 pass: *const c_char,
347 passlen: c_int,
348 salt: *const u8,
349 saltlen: c_int,
350 iter: c_int,
351 keylen: c_int,
352 out: *mut u8,
353 ) -> 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_int354 pub fn PKCS5_PBKDF2_HMAC(
355 pass: *const c_char,
356 passlen: c_int,
357 salt: *const c_uchar,
358 saltlen: c_int,
359 iter: c_int,
360 digest: *const EVP_MD,
361 keylen: c_int,
362 out: *mut u8,
363 ) -> c_int;
364
365 #[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_int366 pub fn EVP_PBE_scrypt(
367 pass: *const c_char,
368 passlen: size_t,
369 salt: *const c_uchar,
370 saltlen: size_t,
371 N: u64,
372 r: u64,
373 p: u64,
374 maxmem: u64,
375 key: *mut c_uchar,
376 keylen: size_t,
377 ) -> c_int;
378 }
379
380 pub const EVP_PKEY_OP_KEYGEN: c_int = 1 << 2;
381 pub const EVP_PKEY_OP_SIGN: c_int = 1 << 3;
382 pub const EVP_PKEY_OP_VERIFY: c_int = 1 << 4;
383 pub const EVP_PKEY_OP_VERIFYRECOVER: c_int = 1 << 5;
384 pub const EVP_PKEY_OP_SIGNCTX: c_int = 1 << 6;
385 pub const EVP_PKEY_OP_VERIFYCTX: c_int = 1 << 7;
386 pub const EVP_PKEY_OP_ENCRYPT: c_int = 1 << 8;
387 pub const EVP_PKEY_OP_DECRYPT: c_int = 1 << 9;
388
389 pub const EVP_PKEY_OP_TYPE_SIG: c_int = EVP_PKEY_OP_SIGN
390 | EVP_PKEY_OP_VERIFY
391 | EVP_PKEY_OP_VERIFYRECOVER
392 | EVP_PKEY_OP_SIGNCTX
393 | EVP_PKEY_OP_VERIFYCTX;
394
395 pub const EVP_PKEY_OP_TYPE_CRYPT: c_int = EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT;
396
397 pub const EVP_PKEY_CTRL_SET_MAC_KEY: c_int = 6;
398
399 pub const EVP_PKEY_CTRL_CIPHER: c_int = 12;
400
401 pub const EVP_PKEY_ALG_CTRL: c_int = 0x1000;
402
403 extern "C" {
EVP_PKEY_CTX_new(k: *mut EVP_PKEY, e: *mut ENGINE) -> *mut EVP_PKEY_CTX404 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_CTX405 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)406 pub fn EVP_PKEY_CTX_free(ctx: *mut EVP_PKEY_CTX);
407
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_int408 pub fn EVP_PKEY_CTX_ctrl(
409 ctx: *mut EVP_PKEY_CTX,
410 keytype: c_int,
411 optype: c_int,
412 cmd: c_int,
413 p1: c_int,
414 p2: *mut c_void,
415 ) -> c_int;
416
EVP_PKEY_new_mac_key( type_: c_int, e: *mut ENGINE, key: *const c_uchar, keylen: c_int, ) -> *mut EVP_PKEY417 pub fn EVP_PKEY_new_mac_key(
418 type_: c_int,
419 e: *mut ENGINE,
420 key: *const c_uchar,
421 keylen: c_int,
422 ) -> *mut EVP_PKEY;
423
EVP_PKEY_derive_init(ctx: *mut EVP_PKEY_CTX) -> c_int424 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_int425 pub fn EVP_PKEY_derive_set_peer(ctx: *mut EVP_PKEY_CTX, peer: *mut EVP_PKEY) -> c_int;
EVP_PKEY_derive(ctx: *mut EVP_PKEY_CTX, key: *mut c_uchar, size: *mut size_t) -> c_int426 pub fn EVP_PKEY_derive(ctx: *mut EVP_PKEY_CTX, key: *mut c_uchar, size: *mut size_t) -> c_int;
427
EVP_PKEY_keygen_init(ctx: *mut EVP_PKEY_CTX) -> c_int428 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_int429 pub fn EVP_PKEY_keygen(ctx: *mut EVP_PKEY_CTX, key: *mut *mut EVP_PKEY) -> c_int;
430 }
431
432 cfg_if! {
433 if #[cfg(any(ossl110, libressl280))] {
434 extern "C" {
435 pub fn EVP_PKCS82PKEY(p8: *const PKCS8_PRIV_KEY_INFO) -> *mut EVP_PKEY;
436 }
437 } else {
438 extern "C" {
439 pub fn EVP_PKCS82PKEY(p8: *mut PKCS8_PRIV_KEY_INFO) -> *mut EVP_PKEY;
440 }
441 }
442 }
443
444 extern "C" {
EVP_EncodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int445 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_int446 pub fn EVP_DecodeBlock(dst: *mut c_uchar, src: *const c_uchar, src_len: c_int) -> c_int;
447 }
448