]> git.proxmox.com Git - rustc.git/blob - vendor/openssl-sys/src/evp.rs
New upstream version 1.74.1+dfsg1
[rustc.git] / vendor / openssl-sys / src / evp.rs
1 use super::*;
2 use libc::*;
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_SM2: c_int = NID_sm2;
15 #[cfg(any(ossl111, libressl370))]
16 pub const EVP_PKEY_X25519: c_int = NID_X25519;
17 #[cfg(any(ossl111, libressl370))]
18 pub const EVP_PKEY_ED25519: c_int = NID_ED25519;
19 #[cfg(ossl111)]
20 pub const EVP_PKEY_X448: c_int = NID_X448;
21 #[cfg(ossl111)]
22 pub const EVP_PKEY_ED448: c_int = NID_ED448;
23 pub const EVP_PKEY_HMAC: c_int = NID_hmac;
24 pub const EVP_PKEY_CMAC: c_int = NID_cmac;
25 #[cfg(ossl111)]
26 pub const EVP_PKEY_POLY1305: c_int = NID_poly1305;
27 #[cfg(ossl110)]
28 pub const EVP_PKEY_HKDF: c_int = NID_hkdf;
29
30 #[cfg(ossl102)]
31 pub const EVP_CIPHER_CTX_FLAG_WRAP_ALLOW: c_int = 0x1;
32
33 pub const EVP_CTRL_GCM_SET_IVLEN: c_int = 0x9;
34 pub const EVP_CTRL_GCM_GET_TAG: c_int = 0x10;
35 pub const EVP_CTRL_GCM_SET_TAG: c_int = 0x11;
36
37 pub unsafe fn EVP_get_digestbynid(type_: c_int) -> *const EVP_MD {
38 EVP_get_digestbyname(OBJ_nid2sn(type_))
39 }
40
41 cfg_if! {
42 if #[cfg(ossl300)] {
43 #[inline]
44 pub unsafe fn EVP_MD_CTX_md(ctx: *const EVP_MD_CTX) -> *const EVP_MD {
45 EVP_MD_CTX_get0_md(ctx)
46 }
47
48 #[inline]
49 pub unsafe fn EVP_MD_CTX_get_size(ctx: *const EVP_MD_CTX) -> c_int {
50 EVP_MD_get_size(EVP_MD_CTX_get0_md(ctx))
51 }
52
53 #[inline]
54 pub unsafe fn EVP_MD_CTX_size(ctx: *const EVP_MD_CTX) -> c_int {
55 EVP_MD_CTX_get_size(ctx)
56 }
57
58 #[inline]
59 pub unsafe fn EVP_MD_block_size(md: *const EVP_MD) -> c_int {
60 EVP_MD_get_block_size(md)
61 }
62
63 #[inline]
64 pub unsafe fn EVP_MD_size(md: *const EVP_MD) -> c_int {
65 EVP_MD_get_size(md)
66 }
67
68 #[inline]
69 pub unsafe fn EVP_MD_type(md: *const EVP_MD) -> c_int {
70 EVP_MD_get_type(md)
71 }
72
73 #[inline]
74 pub unsafe fn EVP_CIPHER_key_length(cipher: *const EVP_CIPHER) -> c_int {
75 EVP_CIPHER_get_key_length(cipher)
76 }
77
78 #[inline]
79 pub unsafe fn EVP_CIPHER_block_size(cipher: *const EVP_CIPHER) -> c_int {
80 EVP_CIPHER_get_block_size(cipher)
81 }
82
83 #[inline]
84 pub unsafe fn EVP_CIPHER_iv_length(cipher: *const EVP_CIPHER) -> c_int {
85 EVP_CIPHER_get_iv_length(cipher)
86 }
87
88 #[inline]
89 pub unsafe fn EVP_CIPHER_nid(cipher: *const EVP_CIPHER) -> c_int {
90 EVP_CIPHER_get_nid(cipher)
91 }
92
93 #[inline]
94 pub unsafe fn EVP_CIPHER_CTX_block_size(ctx: *const EVP_CIPHER_CTX) -> c_int {
95 EVP_CIPHER_CTX_get_block_size(ctx)
96 }
97
98 #[inline]
99 pub unsafe fn EVP_CIPHER_CTX_key_length(ctx: *const EVP_CIPHER_CTX) -> c_int {
100 EVP_CIPHER_CTX_get_key_length(ctx)
101 }
102
103 #[inline]
104 pub unsafe fn EVP_CIPHER_CTX_iv_length(ctx: *const EVP_CIPHER_CTX) -> c_int {
105 EVP_CIPHER_CTX_get_iv_length(ctx)
106 }
107
108 #[inline]
109 pub unsafe fn EVP_CIPHER_CTX_num(ctx: *const EVP_CIPHER_CTX) -> c_int {
110 EVP_CIPHER_CTX_get_num(ctx)
111 }
112 } else {
113 pub unsafe fn EVP_MD_CTX_size(ctx: *const EVP_MD_CTX) -> c_int {
114 EVP_MD_size(EVP_MD_CTX_md(ctx))
115 }
116 }
117 }
118 #[cfg(not(ossl300))]
119 #[inline]
120 pub unsafe fn EVP_DigestSignUpdate(
121 ctx: *mut EVP_MD_CTX,
122 data: *const c_void,
123 dsize: size_t,
124 ) -> c_int {
125 EVP_DigestUpdate(ctx, data, dsize)
126 }
127 #[cfg(not(ossl300))]
128 #[inline]
129 pub unsafe fn EVP_DigestVerifyUpdate(
130 ctx: *mut EVP_MD_CTX,
131 data: *const c_void,
132 dsize: size_t,
133 ) -> c_int {
134 EVP_DigestUpdate(ctx, data, dsize)
135 }
136 #[cfg(ossl300)]
137 #[inline]
138 pub unsafe fn EVP_PKEY_size(pkey: *const EVP_PKEY) -> c_int {
139 EVP_PKEY_get_size(pkey)
140 }
141
142 cfg_if! {
143 if #[cfg(ossl300)] {
144 #[inline]
145 pub unsafe fn EVP_PKEY_id(pkey: *const EVP_PKEY) -> c_int {
146 EVP_PKEY_get_id(pkey)
147 }
148
149 #[inline]
150 pub unsafe fn EVP_PKEY_bits(pkey: *const EVP_PKEY) -> c_int {
151 EVP_PKEY_get_bits(pkey)
152 }
153
154 #[inline]
155 pub unsafe fn EVP_PKEY_security_bits(pkey: *const EVP_PKEY) -> c_int {
156 EVP_PKEY_get_security_bits(pkey)
157 }
158 }
159 }
160
161 pub const EVP_PKEY_OP_KEYGEN: c_int = 1 << 2;
162 cfg_if! {
163 if #[cfg(ossl300)] {
164 pub const EVP_PKEY_OP_SIGN: c_int = 1 << 4;
165 pub const EVP_PKEY_OP_VERIFY: c_int = 1 << 5;
166 pub const EVP_PKEY_OP_VERIFYRECOVER: c_int = 1 << 6;
167 pub const EVP_PKEY_OP_SIGNCTX: c_int = 1 << 7;
168 pub const EVP_PKEY_OP_VERIFYCTX: c_int = 1 << 8;
169 pub const EVP_PKEY_OP_ENCRYPT: c_int = 1 << 9;
170 pub const EVP_PKEY_OP_DECRYPT: c_int = 1 << 10;
171 pub const EVP_PKEY_OP_DERIVE: c_int = 1 << 11;
172 } else {
173 pub const EVP_PKEY_OP_SIGN: c_int = 1 << 3;
174 pub const EVP_PKEY_OP_VERIFY: c_int = 1 << 4;
175 pub const EVP_PKEY_OP_VERIFYRECOVER: c_int = 1 << 5;
176 pub const EVP_PKEY_OP_SIGNCTX: c_int = 1 << 6;
177 pub const EVP_PKEY_OP_VERIFYCTX: c_int = 1 << 7;
178 pub const EVP_PKEY_OP_ENCRYPT: c_int = 1 << 8;
179 pub const EVP_PKEY_OP_DECRYPT: c_int = 1 << 9;
180 pub const EVP_PKEY_OP_DERIVE: c_int = 1 << 10;
181 }
182 }
183
184 pub const EVP_PKEY_OP_TYPE_SIG: c_int = EVP_PKEY_OP_SIGN
185 | EVP_PKEY_OP_VERIFY
186 | EVP_PKEY_OP_VERIFYRECOVER
187 | EVP_PKEY_OP_SIGNCTX
188 | EVP_PKEY_OP_VERIFYCTX;
189
190 pub const EVP_PKEY_OP_TYPE_CRYPT: c_int = EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT;
191
192 pub const EVP_PKEY_CTRL_MD: c_int = 1;
193
194 pub const EVP_PKEY_CTRL_SET_MAC_KEY: c_int = 6;
195
196 pub const EVP_PKEY_CTRL_CIPHER: c_int = 12;
197
198 pub const EVP_PKEY_ALG_CTRL: c_int = 0x1000;
199
200 #[cfg(ossl111)]
201 pub const EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND: c_int = 0;
202
203 #[cfg(ossl111)]
204 pub const EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY: c_int = 1;
205
206 #[cfg(ossl111)]
207 pub const EVP_PKEY_HKDEF_MODE_EXPAND_ONLY: c_int = 2;
208
209 #[cfg(ossl110)]
210 pub const EVP_PKEY_CTRL_HKDF_MD: c_int = EVP_PKEY_ALG_CTRL + 3;
211
212 #[cfg(ossl110)]
213 pub const EVP_PKEY_CTRL_HKDF_SALT: c_int = EVP_PKEY_ALG_CTRL + 4;
214
215 #[cfg(ossl110)]
216 pub const EVP_PKEY_CTRL_HKDF_KEY: c_int = EVP_PKEY_ALG_CTRL + 5;
217
218 #[cfg(ossl110)]
219 pub const EVP_PKEY_CTRL_HKDF_INFO: c_int = EVP_PKEY_ALG_CTRL + 6;
220
221 #[cfg(ossl111)]
222 pub const EVP_PKEY_CTRL_HKDF_MODE: c_int = EVP_PKEY_ALG_CTRL + 7;
223
224 #[cfg(all(ossl111, not(ossl300)))]
225 pub unsafe fn EVP_PKEY_CTX_set_hkdf_mode(ctx: *mut EVP_PKEY_CTX, mode: c_int) -> c_int {
226 EVP_PKEY_CTX_ctrl(
227 ctx,
228 -1,
229 EVP_PKEY_OP_DERIVE,
230 EVP_PKEY_CTRL_HKDF_MODE,
231 mode,
232 std::ptr::null_mut(),
233 )
234 }
235
236 #[cfg(all(ossl110, not(ossl300)))]
237 pub unsafe fn EVP_PKEY_CTX_set_hkdf_md(ctx: *mut EVP_PKEY_CTX, md: *const EVP_MD) -> c_int {
238 EVP_PKEY_CTX_ctrl(
239 ctx,
240 -1,
241 EVP_PKEY_OP_DERIVE,
242 EVP_PKEY_CTRL_HKDF_MD,
243 0,
244 md as *mut c_void,
245 )
246 }
247
248 #[cfg(all(ossl110, not(ossl300)))]
249 pub unsafe fn EVP_PKEY_CTX_set1_hkdf_salt(
250 ctx: *mut EVP_PKEY_CTX,
251 salt: *const u8,
252 saltlen: c_int,
253 ) -> c_int {
254 EVP_PKEY_CTX_ctrl(
255 ctx,
256 -1,
257 EVP_PKEY_OP_DERIVE,
258 EVP_PKEY_CTRL_HKDF_SALT,
259 saltlen,
260 salt as *mut c_void,
261 )
262 }
263
264 #[cfg(all(ossl110, not(ossl300)))]
265 pub unsafe fn EVP_PKEY_CTX_set1_hkdf_key(
266 ctx: *mut EVP_PKEY_CTX,
267 key: *const u8,
268 keylen: c_int,
269 ) -> c_int {
270 EVP_PKEY_CTX_ctrl(
271 ctx,
272 -1,
273 EVP_PKEY_OP_DERIVE,
274 EVP_PKEY_CTRL_HKDF_KEY,
275 keylen,
276 key as *mut c_void,
277 )
278 }
279
280 #[cfg(all(ossl110, not(ossl300)))]
281 pub unsafe fn EVP_PKEY_CTX_add1_hkdf_info(
282 ctx: *mut EVP_PKEY_CTX,
283 info: *const u8,
284 infolen: c_int,
285 ) -> c_int {
286 EVP_PKEY_CTX_ctrl(
287 ctx,
288 -1,
289 EVP_PKEY_OP_DERIVE,
290 EVP_PKEY_CTRL_HKDF_INFO,
291 infolen,
292 info as *mut c_void,
293 )
294 }
295
296 #[cfg(all(not(ossl300), not(boringssl)))]
297 pub unsafe fn EVP_PKEY_CTX_set_signature_md(cxt: *mut EVP_PKEY_CTX, md: *mut EVP_MD) -> c_int {
298 EVP_PKEY_CTX_ctrl(
299 cxt,
300 -1,
301 EVP_PKEY_OP_TYPE_SIG,
302 EVP_PKEY_CTRL_MD,
303 0,
304 md as *mut c_void,
305 )
306 }
307
308 pub unsafe fn EVP_PKEY_assign_RSA(pkey: *mut EVP_PKEY, rsa: *mut RSA) -> c_int {
309 EVP_PKEY_assign(pkey, EVP_PKEY_RSA, rsa as *mut c_void)
310 }
311
312 pub unsafe fn EVP_PKEY_assign_DSA(pkey: *mut EVP_PKEY, dsa: *mut DSA) -> c_int {
313 EVP_PKEY_assign(pkey, EVP_PKEY_DSA, dsa as *mut c_void)
314 }
315
316 pub unsafe fn EVP_PKEY_assign_DH(pkey: *mut EVP_PKEY, dh: *mut DH) -> c_int {
317 EVP_PKEY_assign(pkey, EVP_PKEY_DH, dh as *mut c_void)
318 }
319
320 pub unsafe fn EVP_PKEY_assign_EC_KEY(pkey: *mut EVP_PKEY, ec_key: *mut EC_KEY) -> c_int {
321 EVP_PKEY_assign(pkey, EVP_PKEY_EC, ec_key as *mut c_void)
322 }