OpenSSL
1.0.1c
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
include
openssl
evp.h
Go to the documentation of this file.
1
/* crypto/evp/evp.h */
2
/* Copyright (C) 1995-1998 Eric Young (
[email protected]
)
3
* All rights reserved.
4
*
5
* This package is an SSL implementation written
6
* by Eric Young (
[email protected]
).
7
* The implementation was written so as to conform with Netscapes SSL.
8
*
9
* This library is free for commercial and non-commercial use as long as
10
* the following conditions are aheared to. The following conditions
11
* apply to all code found in this distribution, be it the RC4, RSA,
12
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
* included with this distribution is covered by the same copyright terms
14
* except that the holder is Tim Hudson (
[email protected]
).
15
*
16
* Copyright remains Eric Young's, and as such any Copyright notices in
17
* the code are not to be removed.
18
* If this package is used in a product, Eric Young should be given attribution
19
* as the author of the parts of the library used.
20
* This can be in the form of a textual message at program startup or
21
* in documentation (online or textual) provided with the package.
22
*
23
* Redistribution and use in source and binary forms, with or without
24
* modification, are permitted provided that the following conditions
25
* are met:
26
* 1. Redistributions of source code must retain the copyright
27
* notice, this list of conditions and the following disclaimer.
28
* 2. Redistributions in binary form must reproduce the above copyright
29
* notice, this list of conditions and the following disclaimer in the
30
* documentation and/or other materials provided with the distribution.
31
* 3. All advertising materials mentioning features or use of this software
32
* must display the following acknowledgement:
33
* "This product includes cryptographic software written by
34
* Eric Young (
[email protected]
)"
35
* The word 'cryptographic' can be left out if the rouines from the library
36
* being used are not cryptographic related :-).
37
* 4. If you include any Windows specific code (or a derivative thereof) from
38
* the apps directory (application code) you must include an acknowledgement:
39
* "This product includes software written by Tim Hudson (
[email protected]
)"
40
*
41
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
* SUCH DAMAGE.
52
*
53
* The licence and distribution terms for any publically available version or
54
* derivative of this code cannot be changed. i.e. this code cannot simply be
55
* copied and put under another distribution licence
56
* [including the GNU Public Licence.]
57
*/
58
59
#ifndef HEADER_ENVELOPE_H
60
#define HEADER_ENVELOPE_H
61
62
#ifdef OPENSSL_ALGORITHM_DEFINES
63
# include <
openssl/opensslconf.h
>
64
#else
65
# define OPENSSL_ALGORITHM_DEFINES
66
# include <
openssl/opensslconf.h
>
67
# undef OPENSSL_ALGORITHM_DEFINES
68
#endif
69
70
#include <
openssl/ossl_typ.h
>
71
72
#include <
openssl/symhacks.h
>
73
74
#ifndef OPENSSL_NO_BIO
75
#include <
openssl/bio.h
>
76
#endif
77
78
/*
79
#define EVP_RC2_KEY_SIZE 16
80
#define EVP_RC4_KEY_SIZE 16
81
#define EVP_BLOWFISH_KEY_SIZE 16
82
#define EVP_CAST5_KEY_SIZE 16
83
#define EVP_RC5_32_12_16_KEY_SIZE 16
84
*/
85
#define EVP_MAX_MD_SIZE 64
/* longest known is SHA512 */
86
#define EVP_MAX_KEY_LENGTH 64
87
#define EVP_MAX_IV_LENGTH 16
88
#define EVP_MAX_BLOCK_LENGTH 32
89
90
#define PKCS5_SALT_LEN 8
91
/* Default PKCS#5 iteration count */
92
#define PKCS5_DEFAULT_ITER 2048
93
94
#include <
openssl/objects.h
>
95
96
#define EVP_PK_RSA 0x0001
97
#define EVP_PK_DSA 0x0002
98
#define EVP_PK_DH 0x0004
99
#define EVP_PK_EC 0x0008
100
#define EVP_PKT_SIGN 0x0010
101
#define EVP_PKT_ENC 0x0020
102
#define EVP_PKT_EXCH 0x0040
103
#define EVP_PKS_RSA 0x0100
104
#define EVP_PKS_DSA 0x0200
105
#define EVP_PKS_EC 0x0400
106
#define EVP_PKT_EXP 0x1000
/* <= 512 bit key */
107
108
#define EVP_PKEY_NONE NID_undef
109
#define EVP_PKEY_RSA NID_rsaEncryption
110
#define EVP_PKEY_RSA2 NID_rsa
111
#define EVP_PKEY_DSA NID_dsa
112
#define EVP_PKEY_DSA1 NID_dsa_2
113
#define EVP_PKEY_DSA2 NID_dsaWithSHA
114
#define EVP_PKEY_DSA3 NID_dsaWithSHA1
115
#define EVP_PKEY_DSA4 NID_dsaWithSHA1_2
116
#define EVP_PKEY_DH NID_dhKeyAgreement
117
#define EVP_PKEY_EC NID_X9_62_id_ecPublicKey
118
#define EVP_PKEY_HMAC NID_hmac
119
#define EVP_PKEY_CMAC NID_cmac
120
121
#ifdef __cplusplus
122
extern
"C"
{
123
#endif
124
125
/* Type needs to be a bit field
126
* Sub-type needs to be for variations on the method, as in, can it do
127
* arbitrary encryption.... */
128
struct
evp_pkey_st
129
{
130
int
type
;
131
int
save_type
;
132
int
references
;
133
const
EVP_PKEY_ASN1_METHOD
*
ameth
;
134
ENGINE
*
engine
;
135
union
{
136
char
*
ptr
;
137
#ifndef OPENSSL_NO_RSA
138
struct
rsa_st
*
rsa
;
/* RSA */
139
#endif
140
#ifndef OPENSSL_NO_DSA
141
struct
dsa_st
*
dsa
;
/* DSA */
142
#endif
143
#ifndef OPENSSL_NO_DH
144
struct
dh_st
*
dh
;
/* DH */
145
#endif
146
#ifndef OPENSSL_NO_EC
147
struct
ec_key_st
*
ec
;
/* ECC */
148
#endif
149
}
pkey
;
150
int
save_parameters
;
151
STACK_OF
(
X509_ATTRIBUTE
) *attributes;
/* [ 0 ] */
152
}
/* EVP_PKEY */
;
153
154
#define EVP_PKEY_MO_SIGN 0x0001
155
#define EVP_PKEY_MO_VERIFY 0x0002
156
#define EVP_PKEY_MO_ENCRYPT 0x0004
157
#define EVP_PKEY_MO_DECRYPT 0x0008
158
159
#ifndef EVP_MD
160
struct
env_md_st
161
{
162
int
type
;
163
int
pkey_type
;
164
int
md_size
;
165
unsigned
long
flags
;
166
int (*
init
)(
EVP_MD_CTX
*ctx);
167
int (*
update
)(
EVP_MD_CTX
*ctx,
const
void
*
data
,
size_t
count);
168
int (*
final
)(
EVP_MD_CTX
*ctx,
unsigned
char
*md);
169
int (*
copy
)(
EVP_MD_CTX
*to,
const
EVP_MD_CTX
*from);
170
int (*
cleanup
)(
EVP_MD_CTX
*ctx);
171
172
/* FIXME: prototype these some day */
173
int (*
sign
)(
int
type
,
const
unsigned
char
*m,
unsigned
int
m_length,
174
unsigned
char
*sigret,
unsigned
int
*siglen,
void
*
key
);
175
int (*
verify
)(
int
type
,
const
unsigned
char
*m,
unsigned
int
m_length,
176
const
unsigned
char
*sigbuf,
unsigned
int
siglen,
177
void
*
key
);
178
int
required_pkey_type
[5];
/*EVP_PKEY_xxx */
179
int
block_size
;
180
int
ctx_size
;
/* how big does the ctx->md_data need to be */
181
/* control function */
182
int (*
md_ctrl
)(
EVP_MD_CTX
*ctx,
int
cmd,
int
p1,
void
*p2);
183
}
/* EVP_MD */
;
184
185
typedef
int
evp_sign_method
(
int
type
,
const
unsigned
char
*m,
186
unsigned
int
m_length,
unsigned
char
*sigret,
187
unsigned
int
*siglen,
void
*
key
);
188
typedef
int
evp_verify_method
(
int
type
,
const
unsigned
char
*m,
189
unsigned
int
m_length,
const
unsigned
char
*sigbuf,
190
unsigned
int
siglen,
void
*
key
);
191
192
#define EVP_MD_FLAG_ONESHOT 0x0001
/* digest can only handle a single
193
* block */
194
195
#define EVP_MD_FLAG_PKEY_DIGEST 0x0002
/* digest is a "clone" digest used
196
* which is a copy of an existing
197
* one for a specific public key type.
198
* EVP_dss1() etc */
199
200
/* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */
201
202
#define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004
203
204
/* DigestAlgorithmIdentifier flags... */
205
206
#define EVP_MD_FLAG_DIGALGID_MASK 0x0018
207
208
/* NULL or absent parameter accepted. Use NULL */
209
210
#define EVP_MD_FLAG_DIGALGID_NULL 0x0000
211
212
/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */
213
214
#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
215
216
/* Custom handling via ctrl */
217
218
#define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018
219
220
#define EVP_MD_FLAG_FIPS 0x0400
/* Note if suitable for use in FIPS mode */
221
222
/* Digest ctrls */
223
224
#define EVP_MD_CTRL_DIGALGID 0x1
225
#define EVP_MD_CTRL_MICALG 0x2
226
227
/* Minimum Algorithm specific ctrl value */
228
229
#define EVP_MD_CTRL_ALG_CTRL 0x1000
230
231
#define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0}
232
233
#ifndef OPENSSL_NO_DSA
234
#define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \
235
(evp_verify_method *)DSA_verify, \
236
{EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \
237
EVP_PKEY_DSA4,0}
238
#else
239
#define EVP_PKEY_DSA_method EVP_PKEY_NULL_method
240
#endif
241
242
#ifndef OPENSSL_NO_ECDSA
243
#define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \
244
(evp_verify_method *)ECDSA_verify, \
245
{EVP_PKEY_EC,0,0,0}
246
#else
247
#define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method
248
#endif
249
250
#ifndef OPENSSL_NO_RSA
251
#define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \
252
(evp_verify_method *)RSA_verify, \
253
{EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0}
254
#define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \
255
(evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \
256
(evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \
257
{EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0}
258
#else
259
#define EVP_PKEY_RSA_method EVP_PKEY_NULL_method
260
#define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method
261
#endif
262
263
#endif
/* !EVP_MD */
264
265
struct
env_md_ctx_st
266
{
267
const
EVP_MD
*
digest
;
268
ENGINE
*
engine
;
/* functional reference if 'digest' is ENGINE-provided */
269
unsigned
long
flags
;
270
void
*
md_data
;
271
/* Public key context for sign/verify */
272
EVP_PKEY_CTX
*
pctx
;
273
/* Update function: usually copied from EVP_MD */
274
int (*
update
)(
EVP_MD_CTX
*ctx,
const
void
*
data
,
size_t
count);
275
}
/* EVP_MD_CTX */
;
276
277
/* values for EVP_MD_CTX flags */
278
279
#define EVP_MD_CTX_FLAG_ONESHOT 0x0001
/* digest update will be called
280
* once only */
281
#define EVP_MD_CTX_FLAG_CLEANED 0x0002
/* context has already been
282
* cleaned */
283
#define EVP_MD_CTX_FLAG_REUSE 0x0004
/* Don't free up ctx->md_data
284
* in EVP_MD_CTX_cleanup */
285
/* FIPS and pad options are ignored in 1.0.0, definitions are here
286
* so we don't accidentally reuse the values for other purposes.
287
*/
288
289
#define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008
/* Allow use of non FIPS digest
290
* in FIPS mode */
291
292
/* The following PAD options are also currently ignored in 1.0.0, digest
293
* parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*()
294
* instead.
295
*/
296
#define EVP_MD_CTX_FLAG_PAD_MASK 0xF0
/* RSA mode to use */
297
#define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00
/* PKCS#1 v1.5 mode */
298
#define EVP_MD_CTX_FLAG_PAD_X931 0x10
/* X9.31 mode */
299
#define EVP_MD_CTX_FLAG_PAD_PSS 0x20
/* PSS mode */
300
301
#define EVP_MD_CTX_FLAG_NO_INIT 0x0100
/* Don't initialize md_data */
302
303
struct
evp_cipher_st
304
{
305
int
nid
;
306
int
block_size
;
307
int
key_len
;
/* Default value for variable length ciphers */
308
int
iv_len
;
309
unsigned
long
flags
;
/* Various flags */
310
int (*
init
)(
EVP_CIPHER_CTX
*ctx,
const
unsigned
char
*
key
,
311
const
unsigned
char
*iv,
int
enc
);
/* init key */
312
int (*
do_cipher
)(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*
out
,
313
const
unsigned
char
*
in
,
size_t
inl);
/* encrypt/decrypt data */
314
int (*
cleanup
)(
EVP_CIPHER_CTX
*);
/* cleanup ctx */
315
int
ctx_size
;
/* how big ctx->cipher_data needs to be */
316
int (*
set_asn1_parameters
)(
EVP_CIPHER_CTX
*,
ASN1_TYPE
*);
/* Populate a ASN1_TYPE with parameters */
317
int (*
get_asn1_parameters
)(
EVP_CIPHER_CTX
*,
ASN1_TYPE
*);
/* Get parameters from a ASN1_TYPE */
318
int (*
ctrl
)(
EVP_CIPHER_CTX
*,
int
type
,
int
arg
,
void
*
ptr
);
/* Miscellaneous operations */
319
void
*
app_data
;
/* Application data */
320
}
/* EVP_CIPHER */
;
321
322
/* Values for cipher flags */
323
324
/* Modes for ciphers */
325
326
#define EVP_CIPH_STREAM_CIPHER 0x0
327
#define EVP_CIPH_ECB_MODE 0x1
328
#define EVP_CIPH_CBC_MODE 0x2
329
#define EVP_CIPH_CFB_MODE 0x3
330
#define EVP_CIPH_OFB_MODE 0x4
331
#define EVP_CIPH_CTR_MODE 0x5
332
#define EVP_CIPH_GCM_MODE 0x6
333
#define EVP_CIPH_CCM_MODE 0x7
334
#define EVP_CIPH_XTS_MODE 0x10001
335
#define EVP_CIPH_MODE 0xF0007
336
/* Set if variable length cipher */
337
#define EVP_CIPH_VARIABLE_LENGTH 0x8
338
/* Set if the iv handling should be done by the cipher itself */
339
#define EVP_CIPH_CUSTOM_IV 0x10
340
/* Set if the cipher's init() function should be called if key is NULL */
341
#define EVP_CIPH_ALWAYS_CALL_INIT 0x20
342
/* Call ctrl() to init cipher parameters */
343
#define EVP_CIPH_CTRL_INIT 0x40
344
/* Don't use standard key length function */
345
#define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80
346
/* Don't use standard block padding */
347
#define EVP_CIPH_NO_PADDING 0x100
348
/* cipher handles random key generation */
349
#define EVP_CIPH_RAND_KEY 0x200
350
/* cipher has its own additional copying logic */
351
#define EVP_CIPH_CUSTOM_COPY 0x400
352
/* Allow use default ASN1 get/set iv */
353
#define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000
354
/* Buffer length in bits not bytes: CFB1 mode only */
355
#define EVP_CIPH_FLAG_LENGTH_BITS 0x2000
356
/* Note if suitable for use in FIPS mode */
357
#define EVP_CIPH_FLAG_FIPS 0x4000
358
/* Allow non FIPS cipher in FIPS mode */
359
#define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000
360
/* Cipher handles any and all padding logic as well
361
* as finalisation.
362
*/
363
#define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000
364
#define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000
365
366
/* ctrl() values */
367
368
#define EVP_CTRL_INIT 0x0
369
#define EVP_CTRL_SET_KEY_LENGTH 0x1
370
#define EVP_CTRL_GET_RC2_KEY_BITS 0x2
371
#define EVP_CTRL_SET_RC2_KEY_BITS 0x3
372
#define EVP_CTRL_GET_RC5_ROUNDS 0x4
373
#define EVP_CTRL_SET_RC5_ROUNDS 0x5
374
#define EVP_CTRL_RAND_KEY 0x6
375
#define EVP_CTRL_PBE_PRF_NID 0x7
376
#define EVP_CTRL_COPY 0x8
377
#define EVP_CTRL_GCM_SET_IVLEN 0x9
378
#define EVP_CTRL_GCM_GET_TAG 0x10
379
#define EVP_CTRL_GCM_SET_TAG 0x11
380
#define EVP_CTRL_GCM_SET_IV_FIXED 0x12
381
#define EVP_CTRL_GCM_IV_GEN 0x13
382
#define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN
383
#define EVP_CTRL_CCM_GET_TAG EVP_CTRL_GCM_GET_TAG
384
#define EVP_CTRL_CCM_SET_TAG EVP_CTRL_GCM_SET_TAG
385
#define EVP_CTRL_CCM_SET_L 0x14
386
#define EVP_CTRL_CCM_SET_MSGLEN 0x15
387
/* AEAD cipher deduces payload length and returns number of bytes
388
* required to store MAC and eventual padding. Subsequent call to
389
* EVP_Cipher even appends/verifies MAC.
390
*/
391
#define EVP_CTRL_AEAD_TLS1_AAD 0x16
392
/* Used by composite AEAD ciphers, no-op in GCM, CCM... */
393
#define EVP_CTRL_AEAD_SET_MAC_KEY 0x17
394
/* Set the GCM invocation field, decrypt only */
395
#define EVP_CTRL_GCM_SET_IV_INV 0x18
396
397
/* GCM TLS constants */
398
/* Length of fixed part of IV derived from PRF */
399
#define EVP_GCM_TLS_FIXED_IV_LEN 4
400
/* Length of explicit part of IV part of TLS records */
401
#define EVP_GCM_TLS_EXPLICIT_IV_LEN 8
402
/* Length of tag for TLS */
403
#define EVP_GCM_TLS_TAG_LEN 16
404
405
406
typedef
struct
evp_cipher_info_st
407
{
408
const
EVP_CIPHER
*
cipher
;
409
unsigned
char
iv
[
EVP_MAX_IV_LENGTH
];
410
}
EVP_CIPHER_INFO
;
411
412
struct
evp_cipher_ctx_st
413
{
414
const
EVP_CIPHER
*
cipher
;
415
ENGINE
*
engine
;
/* functional reference if 'cipher' is ENGINE-provided */
416
int
encrypt
;
/* encrypt or decrypt */
417
int
buf_len
;
/* number we have left */
418
419
unsigned
char
oiv
[
EVP_MAX_IV_LENGTH
];
/* original iv */
420
unsigned
char
iv
[
EVP_MAX_IV_LENGTH
];
/* working iv */
421
unsigned
char
buf
[
EVP_MAX_BLOCK_LENGTH
];
/* saved partial block */
422
int
num
;
/* used by cfb/ofb/ctr mode */
423
424
void
*
app_data
;
/* application stuff */
425
int
key_len
;
/* May change for variable length cipher */
426
unsigned
long
flags
;
/* Various flags */
427
void
*
cipher_data
;
/* per EVP data */
428
int
final_used
;
429
int
block_mask
;
430
unsigned
char
final
[
EVP_MAX_BLOCK_LENGTH
];
/* possible final block */
431
}
/* EVP_CIPHER_CTX */
;
432
433
typedef
struct
evp_Encode_Ctx_st
434
{
435
int
num
;
/* number saved in a partial encode/decode */
436
int
length
;
/* The length is either the output line length
437
* (in input bytes) or the shortest input line
438
* length that is ok. Once decoding begins,
439
* the length is adjusted up each time a longer
440
* line is decoded */
441
unsigned
char
enc_data
[80];
/* data to encode */
442
int
line_num
;
/* number read on current line */
443
int
expect_nl
;
444
}
EVP_ENCODE_CTX
;
445
446
/* Password based encryption function */
447
typedef
int (
EVP_PBE_KEYGEN
)(
EVP_CIPHER_CTX
*ctx,
const
char
*
pass
,
int
passlen
,
448
ASN1_TYPE
*param,
const
EVP_CIPHER
*cipher,
449
const
EVP_MD
*md,
int
en_de);
450
451
#ifndef OPENSSL_NO_RSA
452
#define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
453
(char *)(rsa))
454
#endif
455
456
#ifndef OPENSSL_NO_DSA
457
#define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
458
(char *)(dsa))
459
#endif
460
461
#ifndef OPENSSL_NO_DH
462
#define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\
463
(char *)(dh))
464
#endif
465
466
#ifndef OPENSSL_NO_EC
467
#define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\
468
(char *)(eckey))
469
#endif
470
471
/* Add some extra combinations */
472
#define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))
473
#define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))
474
#define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))
475
#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
476
477
int
EVP_MD_type
(
const
EVP_MD
*md);
478
#define EVP_MD_nid(e) EVP_MD_type(e)
479
#define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e))
480
int
EVP_MD_pkey_type
(
const
EVP_MD
*md);
481
int
EVP_MD_size
(
const
EVP_MD
*md);
482
int
EVP_MD_block_size
(
const
EVP_MD
*md);
483
unsigned
long
EVP_MD_flags
(
const
EVP_MD
*md);
484
485
const
EVP_MD
*
EVP_MD_CTX_md
(
const
EVP_MD_CTX
*ctx);
486
#define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e))
487
#define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e))
488
#define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e))
489
490
int
EVP_CIPHER_nid
(
const
EVP_CIPHER
*cipher);
491
#define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e))
492
int
EVP_CIPHER_block_size
(
const
EVP_CIPHER
*cipher);
493
int
EVP_CIPHER_key_length
(
const
EVP_CIPHER
*cipher);
494
int
EVP_CIPHER_iv_length
(
const
EVP_CIPHER
*cipher);
495
unsigned
long
EVP_CIPHER_flags
(
const
EVP_CIPHER
*cipher);
496
#define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE)
497
498
const
EVP_CIPHER
*
EVP_CIPHER_CTX_cipher
(
const
EVP_CIPHER_CTX
*ctx);
499
int
EVP_CIPHER_CTX_nid
(
const
EVP_CIPHER_CTX
*ctx);
500
int
EVP_CIPHER_CTX_block_size
(
const
EVP_CIPHER_CTX
*ctx);
501
int
EVP_CIPHER_CTX_key_length
(
const
EVP_CIPHER_CTX
*ctx);
502
int
EVP_CIPHER_CTX_iv_length
(
const
EVP_CIPHER_CTX
*ctx);
503
int
EVP_CIPHER_CTX_copy
(
EVP_CIPHER_CTX
*out,
const
EVP_CIPHER_CTX
*in);
504
void
*
EVP_CIPHER_CTX_get_app_data
(
const
EVP_CIPHER_CTX
*ctx);
505
void
EVP_CIPHER_CTX_set_app_data
(
EVP_CIPHER_CTX
*ctx,
void
*
data
);
506
#define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))
507
unsigned
long
EVP_CIPHER_CTX_flags
(
const
EVP_CIPHER_CTX
*ctx);
508
#define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE)
509
510
#define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80)
511
#define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80)
512
513
#define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
514
#define EVP_SignInit(a,b) EVP_DigestInit(a,b)
515
#define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
516
#define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
517
#define EVP_VerifyInit(a,b) EVP_DigestInit(a,b)
518
#define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
519
#define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e)
520
#define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e)
521
#define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
522
#define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
523
524
#ifdef CONST_STRICT
525
void
BIO_set_md
(
BIO
*,
const
EVP_MD
*md);
526
#else
527
# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md)
528
#endif
529
#define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp)
530
#define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp)
531
#define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp)
532
#define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL)
533
#define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp)
534
535
int
EVP_Cipher
(
EVP_CIPHER_CTX
*c,
536
unsigned
char
*out,
537
const
unsigned
char
*in,
538
unsigned
int
inl);
539
540
#define EVP_add_cipher_alias(n,alias) \
541
OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n))
542
#define EVP_add_digest_alias(n,alias) \
543
OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n))
544
#define EVP_delete_cipher_alias(alias) \
545
OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS);
546
#define EVP_delete_digest_alias(alias) \
547
OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS);
548
549
void
EVP_MD_CTX_init
(
EVP_MD_CTX
*ctx);
550
int
EVP_MD_CTX_cleanup
(
EVP_MD_CTX
*ctx);
551
EVP_MD_CTX
*
EVP_MD_CTX_create
(
void
);
552
void
EVP_MD_CTX_destroy
(
EVP_MD_CTX
*ctx);
553
int
EVP_MD_CTX_copy_ex
(
EVP_MD_CTX
*out,
const
EVP_MD_CTX
*in);
554
void
EVP_MD_CTX_set_flags
(
EVP_MD_CTX
*ctx,
int
flags
);
555
void
EVP_MD_CTX_clear_flags
(
EVP_MD_CTX
*ctx,
int
flags
);
556
int
EVP_MD_CTX_test_flags
(
const
EVP_MD_CTX
*ctx,
int
flags
);
557
int
EVP_DigestInit_ex
(
EVP_MD_CTX
*ctx,
const
EVP_MD
*
type
,
ENGINE
*impl);
558
int
EVP_DigestUpdate
(
EVP_MD_CTX
*ctx,
const
void
*d,
559
size_t
cnt);
560
int
EVP_DigestFinal_ex
(
EVP_MD_CTX
*ctx,
unsigned
char
*md,
unsigned
int
*s);
561
int
EVP_Digest
(
const
void
*
data
,
size_t
count,
562
unsigned
char
*md,
unsigned
int
*size,
const
EVP_MD
*
type
,
ENGINE
*impl);
563
564
int
EVP_MD_CTX_copy
(
EVP_MD_CTX
*out,
const
EVP_MD_CTX
*in);
565
int
EVP_DigestInit
(
EVP_MD_CTX
*ctx,
const
EVP_MD
*
type
);
566
int
EVP_DigestFinal
(
EVP_MD_CTX
*ctx,
unsigned
char
*md,
unsigned
int
*s);
567
568
int
EVP_read_pw_string
(
char
*buf,
int
length
,
const
char
*prompt,
int
verify);
569
int
EVP_read_pw_string_min
(
char
*buf,
int
minlen,
int
maxlen,
const
char
*prompt,
int
verify);
570
void
EVP_set_pw_prompt
(
const
char
*prompt);
571
char
*
EVP_get_pw_prompt
(
void
);
572
573
int
EVP_BytesToKey
(
const
EVP_CIPHER
*
type
,
const
EVP_MD
*md,
574
const
unsigned
char
*salt,
const
unsigned
char
*
data
,
575
int
datal,
int
count,
unsigned
char
*
key
,
unsigned
char
*iv);
576
577
void
EVP_CIPHER_CTX_set_flags
(
EVP_CIPHER_CTX
*ctx,
int
flags
);
578
void
EVP_CIPHER_CTX_clear_flags
(
EVP_CIPHER_CTX
*ctx,
int
flags
);
579
int
EVP_CIPHER_CTX_test_flags
(
const
EVP_CIPHER_CTX
*ctx,
int
flags
);
580
581
int
EVP_EncryptInit
(
EVP_CIPHER_CTX
*ctx,
const
EVP_CIPHER
*cipher,
582
const
unsigned
char
*
key
,
const
unsigned
char
*iv);
583
int
EVP_EncryptInit_ex
(
EVP_CIPHER_CTX
*ctx,
const
EVP_CIPHER
*cipher,
ENGINE
*impl,
584
const
unsigned
char
*
key
,
const
unsigned
char
*iv);
585
int
EVP_EncryptUpdate
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*out,
586
int
*outl,
const
unsigned
char
*in,
int
inl);
587
int
EVP_EncryptFinal_ex
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*out,
int
*outl);
588
int
EVP_EncryptFinal
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*out,
int
*outl);
589
590
int
EVP_DecryptInit
(
EVP_CIPHER_CTX
*ctx,
const
EVP_CIPHER
*cipher,
591
const
unsigned
char
*
key
,
const
unsigned
char
*iv);
592
int
EVP_DecryptInit_ex
(
EVP_CIPHER_CTX
*ctx,
const
EVP_CIPHER
*cipher,
ENGINE
*impl,
593
const
unsigned
char
*
key
,
const
unsigned
char
*iv);
594
int
EVP_DecryptUpdate
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*out,
595
int
*outl,
const
unsigned
char
*in,
int
inl);
596
int
EVP_DecryptFinal
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*outm,
int
*outl);
597
int
EVP_DecryptFinal_ex
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*outm,
int
*outl);
598
599
int
EVP_CipherInit
(
EVP_CIPHER_CTX
*ctx,
const
EVP_CIPHER
*cipher,
600
const
unsigned
char
*
key
,
const
unsigned
char
*iv,
601
int
enc
);
602
int
EVP_CipherInit_ex
(
EVP_CIPHER_CTX
*ctx,
const
EVP_CIPHER
*cipher,
ENGINE
*impl,
603
const
unsigned
char
*
key
,
const
unsigned
char
*iv,
604
int
enc
);
605
int
EVP_CipherUpdate
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*out,
606
int
*outl,
const
unsigned
char
*in,
int
inl);
607
int
EVP_CipherFinal
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*outm,
int
*outl);
608
int
EVP_CipherFinal_ex
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*outm,
int
*outl);
609
610
int
EVP_SignFinal
(
EVP_MD_CTX
*ctx,
unsigned
char
*md,
unsigned
int
*s,
611
EVP_PKEY
*pkey);
612
613
int
EVP_VerifyFinal
(
EVP_MD_CTX
*ctx,
const
unsigned
char
*sigbuf,
614
unsigned
int
siglen,
EVP_PKEY
*pkey);
615
616
int
EVP_DigestSignInit
(
EVP_MD_CTX
*ctx,
EVP_PKEY_CTX
**pctx,
617
const
EVP_MD
*
type
,
ENGINE
*
e
,
EVP_PKEY
*pkey);
618
int
EVP_DigestSignFinal
(
EVP_MD_CTX
*ctx,
619
unsigned
char
*sigret,
size_t
*siglen);
620
621
int
EVP_DigestVerifyInit
(
EVP_MD_CTX
*ctx,
EVP_PKEY_CTX
**pctx,
622
const
EVP_MD
*
type
,
ENGINE
*
e
,
EVP_PKEY
*pkey);
623
int
EVP_DigestVerifyFinal
(
EVP_MD_CTX
*ctx,
624
unsigned
char
*sig,
size_t
siglen);
625
626
int
EVP_OpenInit
(
EVP_CIPHER_CTX
*ctx,
const
EVP_CIPHER
*
type
,
627
const
unsigned
char
*ek,
int
ekl,
const
unsigned
char
*iv,
628
EVP_PKEY
*priv);
629
int
EVP_OpenFinal
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*out,
int
*outl);
630
631
int
EVP_SealInit
(
EVP_CIPHER_CTX
*ctx,
const
EVP_CIPHER
*
type
,
632
unsigned
char
**ek,
int
*ekl,
unsigned
char
*iv,
633
EVP_PKEY
**pubk,
int
npubk);
634
int
EVP_SealFinal
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*out,
int
*outl);
635
636
void
EVP_EncodeInit
(
EVP_ENCODE_CTX
*ctx);
637
void
EVP_EncodeUpdate
(
EVP_ENCODE_CTX
*ctx,
unsigned
char
*out,
int
*outl,
638
const
unsigned
char
*in,
int
inl);
639
void
EVP_EncodeFinal
(
EVP_ENCODE_CTX
*ctx,
unsigned
char
*out,
int
*outl);
640
int
EVP_EncodeBlock
(
unsigned
char
*
t
,
const
unsigned
char
*
f
,
int
n);
641
642
void
EVP_DecodeInit
(
EVP_ENCODE_CTX
*ctx);
643
int
EVP_DecodeUpdate
(
EVP_ENCODE_CTX
*ctx,
unsigned
char
*out,
int
*outl,
644
const
unsigned
char
*in,
int
inl);
645
int
EVP_DecodeFinal
(
EVP_ENCODE_CTX
*ctx,
unsigned
646
char
*out,
int
*outl);
647
int
EVP_DecodeBlock
(
unsigned
char
*
t
,
const
unsigned
char
*
f
,
int
n);
648
649
void
EVP_CIPHER_CTX_init
(
EVP_CIPHER_CTX
*
a
);
650
int
EVP_CIPHER_CTX_cleanup
(
EVP_CIPHER_CTX
*
a
);
651
EVP_CIPHER_CTX
*
EVP_CIPHER_CTX_new
(
void
);
652
void
EVP_CIPHER_CTX_free
(
EVP_CIPHER_CTX
*
a
);
653
int
EVP_CIPHER_CTX_set_key_length
(
EVP_CIPHER_CTX
*x,
int
keylen);
654
int
EVP_CIPHER_CTX_set_padding
(
EVP_CIPHER_CTX
*c,
int
pad);
655
int
EVP_CIPHER_CTX_ctrl
(
EVP_CIPHER_CTX
*ctx,
int
type
,
int
arg
,
void
*
ptr
);
656
int
EVP_CIPHER_CTX_rand_key
(
EVP_CIPHER_CTX
*ctx,
unsigned
char
*
key
);
657
658
#ifndef OPENSSL_NO_BIO
659
BIO_METHOD
*
BIO_f_md
(
void
);
660
BIO_METHOD
*
BIO_f_base64
(
void
);
661
BIO_METHOD
*
BIO_f_cipher
(
void
);
662
BIO_METHOD
*
BIO_f_reliable
(
void
);
663
void
BIO_set_cipher
(
BIO
*
b
,
const
EVP_CIPHER
*c,
const
unsigned
char
*k,
664
const
unsigned
char
*i,
int
enc
);
665
#endif
666
667
const
EVP_MD
*
EVP_md_null
(
void
);
668
#ifndef OPENSSL_NO_MD2
669
const
EVP_MD
*
EVP_md2
(
void
);
670
#endif
671
#ifndef OPENSSL_NO_MD4
672
const
EVP_MD
*
EVP_md4
(
void
);
673
#endif
674
#ifndef OPENSSL_NO_MD5
675
const
EVP_MD
*
EVP_md5
(
void
);
676
#endif
677
#ifndef OPENSSL_NO_SHA
678
const
EVP_MD
*
EVP_sha
(
void
);
679
const
EVP_MD
*
EVP_sha1
(
void
);
680
const
EVP_MD
*
EVP_dss
(
void
);
681
const
EVP_MD
*
EVP_dss1
(
void
);
682
const
EVP_MD
*
EVP_ecdsa
(
void
);
683
#endif
684
#ifndef OPENSSL_NO_SHA256
685
const
EVP_MD
*
EVP_sha224
(
void
);
686
const
EVP_MD
*
EVP_sha256
(
void
);
687
#endif
688
#ifndef OPENSSL_NO_SHA512
689
const
EVP_MD
*
EVP_sha384
(
void
);
690
const
EVP_MD
*
EVP_sha512
(
void
);
691
#endif
692
#ifndef OPENSSL_NO_MDC2
693
const
EVP_MD
*
EVP_mdc2
(
void
);
694
#endif
695
#ifndef OPENSSL_NO_RIPEMD
696
const
EVP_MD
*
EVP_ripemd160
(
void
);
697
#endif
698
#ifndef OPENSSL_NO_WHIRLPOOL
699
const
EVP_MD
*
EVP_whirlpool
(
void
);
700
#endif
701
const
EVP_CIPHER
*
EVP_enc_null
(
void
);
/* does nothing :-) */
702
#ifndef OPENSSL_NO_DES
703
const
EVP_CIPHER
*
EVP_des_ecb
(
void
);
704
const
EVP_CIPHER
*
EVP_des_ede
(
void
);
705
const
EVP_CIPHER
*
EVP_des_ede3
(
void
);
706
const
EVP_CIPHER
*
EVP_des_ede_ecb
(
void
);
707
const
EVP_CIPHER
*
EVP_des_ede3_ecb
(
void
);
708
const
EVP_CIPHER
*
EVP_des_cfb64
(
void
);
709
# define EVP_des_cfb EVP_des_cfb64
710
const
EVP_CIPHER
*
EVP_des_cfb1
(
void
);
711
const
EVP_CIPHER
*
EVP_des_cfb8
(
void
);
712
const
EVP_CIPHER
*
EVP_des_ede_cfb64
(
void
);
713
# define EVP_des_ede_cfb EVP_des_ede_cfb64
714
#if 0
715
const
EVP_CIPHER
*EVP_des_ede_cfb1(
void
);
716
const
EVP_CIPHER
*EVP_des_ede_cfb8(
void
);
717
#endif
718
const
EVP_CIPHER
*
EVP_des_ede3_cfb64
(
void
);
719
# define EVP_des_ede3_cfb EVP_des_ede3_cfb64
720
const
EVP_CIPHER
*
EVP_des_ede3_cfb1
(
void
);
721
const
EVP_CIPHER
*
EVP_des_ede3_cfb8
(
void
);
722
const
EVP_CIPHER
*
EVP_des_ofb
(
void
);
723
const
EVP_CIPHER
*
EVP_des_ede_ofb
(
void
);
724
const
EVP_CIPHER
*
EVP_des_ede3_ofb
(
void
);
725
const
EVP_CIPHER
*
EVP_des_cbc
(
void
);
726
const
EVP_CIPHER
*
EVP_des_ede_cbc
(
void
);
727
const
EVP_CIPHER
*
EVP_des_ede3_cbc
(
void
);
728
const
EVP_CIPHER
*
EVP_desx_cbc
(
void
);
729
/* This should now be supported through the dev_crypto ENGINE. But also, why are
730
* rc4 and md5 declarations made here inside a "NO_DES" precompiler branch? */
731
#if 0
732
# ifdef OPENSSL_OPENBSD_DEV_CRYPTO
733
const
EVP_CIPHER
*EVP_dev_crypto_des_ede3_cbc(
void
);
734
const
EVP_CIPHER
*EVP_dev_crypto_rc4(
void
);
735
const
EVP_MD
*EVP_dev_crypto_md5(
void
);
736
# endif
737
#endif
738
#endif
739
#ifndef OPENSSL_NO_RC4
740
const
EVP_CIPHER
*
EVP_rc4
(
void
);
741
const
EVP_CIPHER
*
EVP_rc4_40
(
void
);
742
#ifndef OPENSSL_NO_MD5
743
const
EVP_CIPHER
*
EVP_rc4_hmac_md5
(
void
);
744
#endif
745
#endif
746
#ifndef OPENSSL_NO_IDEA
747
const
EVP_CIPHER
*
EVP_idea_ecb
(
void
);
748
const
EVP_CIPHER
*
EVP_idea_cfb64
(
void
);
749
# define EVP_idea_cfb EVP_idea_cfb64
750
const
EVP_CIPHER
*
EVP_idea_ofb
(
void
);
751
const
EVP_CIPHER
*
EVP_idea_cbc
(
void
);
752
#endif
753
#ifndef OPENSSL_NO_RC2
754
const
EVP_CIPHER
*
EVP_rc2_ecb
(
void
);
755
const
EVP_CIPHER
*
EVP_rc2_cbc
(
void
);
756
const
EVP_CIPHER
*
EVP_rc2_40_cbc
(
void
);
757
const
EVP_CIPHER
*
EVP_rc2_64_cbc
(
void
);
758
const
EVP_CIPHER
*
EVP_rc2_cfb64
(
void
);
759
# define EVP_rc2_cfb EVP_rc2_cfb64
760
const
EVP_CIPHER
*
EVP_rc2_ofb
(
void
);
761
#endif
762
#ifndef OPENSSL_NO_BF
763
const
EVP_CIPHER
*
EVP_bf_ecb
(
void
);
764
const
EVP_CIPHER
*
EVP_bf_cbc
(
void
);
765
const
EVP_CIPHER
*
EVP_bf_cfb64
(
void
);
766
# define EVP_bf_cfb EVP_bf_cfb64
767
const
EVP_CIPHER
*
EVP_bf_ofb
(
void
);
768
#endif
769
#ifndef OPENSSL_NO_CAST
770
const
EVP_CIPHER
*
EVP_cast5_ecb
(
void
);
771
const
EVP_CIPHER
*
EVP_cast5_cbc
(
void
);
772
const
EVP_CIPHER
*
EVP_cast5_cfb64
(
void
);
773
# define EVP_cast5_cfb EVP_cast5_cfb64
774
const
EVP_CIPHER
*
EVP_cast5_ofb
(
void
);
775
#endif
776
#ifndef OPENSSL_NO_RC5
777
const
EVP_CIPHER
*
EVP_rc5_32_12_16_cbc
(
void
);
778
const
EVP_CIPHER
*
EVP_rc5_32_12_16_ecb
(
void
);
779
const
EVP_CIPHER
*
EVP_rc5_32_12_16_cfb64
(
void
);
780
# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64
781
const
EVP_CIPHER
*
EVP_rc5_32_12_16_ofb
(
void
);
782
#endif
783
#ifndef OPENSSL_NO_AES
784
const
EVP_CIPHER
*
EVP_aes_128_ecb
(
void
);
785
const
EVP_CIPHER
*
EVP_aes_128_cbc
(
void
);
786
const
EVP_CIPHER
*
EVP_aes_128_cfb1
(
void
);
787
const
EVP_CIPHER
*
EVP_aes_128_cfb8
(
void
);
788
const
EVP_CIPHER
*
EVP_aes_128_cfb128
(
void
);
789
# define EVP_aes_128_cfb EVP_aes_128_cfb128
790
const
EVP_CIPHER
*
EVP_aes_128_ofb
(
void
);
791
const
EVP_CIPHER
*
EVP_aes_128_ctr
(
void
);
792
const
EVP_CIPHER
*
EVP_aes_128_gcm
(
void
);
793
const
EVP_CIPHER
*
EVP_aes_128_ccm
(
void
);
794
const
EVP_CIPHER
*
EVP_aes_128_xts
(
void
);
795
const
EVP_CIPHER
*
EVP_aes_192_ecb
(
void
);
796
const
EVP_CIPHER
*
EVP_aes_192_cbc
(
void
);
797
const
EVP_CIPHER
*
EVP_aes_192_cfb1
(
void
);
798
const
EVP_CIPHER
*
EVP_aes_192_cfb8
(
void
);
799
const
EVP_CIPHER
*
EVP_aes_192_cfb128
(
void
);
800
# define EVP_aes_192_cfb EVP_aes_192_cfb128
801
const
EVP_CIPHER
*
EVP_aes_192_ofb
(
void
);
802
const
EVP_CIPHER
*
EVP_aes_192_ctr
(
void
);
803
const
EVP_CIPHER
*
EVP_aes_192_gcm
(
void
);
804
const
EVP_CIPHER
*
EVP_aes_192_ccm
(
void
);
805
const
EVP_CIPHER
*
EVP_aes_256_ecb
(
void
);
806
const
EVP_CIPHER
*
EVP_aes_256_cbc
(
void
);
807
const
EVP_CIPHER
*
EVP_aes_256_cfb1
(
void
);
808
const
EVP_CIPHER
*
EVP_aes_256_cfb8
(
void
);
809
const
EVP_CIPHER
*
EVP_aes_256_cfb128
(
void
);
810
# define EVP_aes_256_cfb EVP_aes_256_cfb128
811
const
EVP_CIPHER
*
EVP_aes_256_ofb
(
void
);
812
const
EVP_CIPHER
*
EVP_aes_256_ctr
(
void
);
813
const
EVP_CIPHER
*
EVP_aes_256_gcm
(
void
);
814
const
EVP_CIPHER
*
EVP_aes_256_ccm
(
void
);
815
const
EVP_CIPHER
*
EVP_aes_256_xts
(
void
);
816
#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
817
const
EVP_CIPHER
*
EVP_aes_128_cbc_hmac_sha1
(
void
);
818
const
EVP_CIPHER
*
EVP_aes_256_cbc_hmac_sha1
(
void
);
819
#endif
820
#endif
821
#ifndef OPENSSL_NO_CAMELLIA
822
const
EVP_CIPHER
*
EVP_camellia_128_ecb
(
void
);
823
const
EVP_CIPHER
*
EVP_camellia_128_cbc
(
void
);
824
const
EVP_CIPHER
*
EVP_camellia_128_cfb1
(
void
);
825
const
EVP_CIPHER
*
EVP_camellia_128_cfb8
(
void
);
826
const
EVP_CIPHER
*
EVP_camellia_128_cfb128
(
void
);
827
# define EVP_camellia_128_cfb EVP_camellia_128_cfb128
828
const
EVP_CIPHER
*
EVP_camellia_128_ofb
(
void
);
829
const
EVP_CIPHER
*
EVP_camellia_192_ecb
(
void
);
830
const
EVP_CIPHER
*
EVP_camellia_192_cbc
(
void
);
831
const
EVP_CIPHER
*
EVP_camellia_192_cfb1
(
void
);
832
const
EVP_CIPHER
*
EVP_camellia_192_cfb8
(
void
);
833
const
EVP_CIPHER
*
EVP_camellia_192_cfb128
(
void
);
834
# define EVP_camellia_192_cfb EVP_camellia_192_cfb128
835
const
EVP_CIPHER
*
EVP_camellia_192_ofb
(
void
);
836
const
EVP_CIPHER
*
EVP_camellia_256_ecb
(
void
);
837
const
EVP_CIPHER
*
EVP_camellia_256_cbc
(
void
);
838
const
EVP_CIPHER
*
EVP_camellia_256_cfb1
(
void
);
839
const
EVP_CIPHER
*
EVP_camellia_256_cfb8
(
void
);
840
const
EVP_CIPHER
*
EVP_camellia_256_cfb128
(
void
);
841
# define EVP_camellia_256_cfb EVP_camellia_256_cfb128
842
const
EVP_CIPHER
*
EVP_camellia_256_ofb
(
void
);
843
#endif
844
845
#ifndef OPENSSL_NO_SEED
846
const
EVP_CIPHER
*
EVP_seed_ecb
(
void
);
847
const
EVP_CIPHER
*
EVP_seed_cbc
(
void
);
848
const
EVP_CIPHER
*
EVP_seed_cfb128
(
void
);
849
# define EVP_seed_cfb EVP_seed_cfb128
850
const
EVP_CIPHER
*
EVP_seed_ofb
(
void
);
851
#endif
852
853
void
OPENSSL_add_all_algorithms_noconf
(
void
);
854
void
OPENSSL_add_all_algorithms_conf
(
void
);
855
856
#ifdef OPENSSL_LOAD_CONF
857
#define OpenSSL_add_all_algorithms() \
858
OPENSSL_add_all_algorithms_conf()
859
#else
860
#define OpenSSL_add_all_algorithms() \
861
OPENSSL_add_all_algorithms_noconf()
862
#endif
863
864
void
OpenSSL_add_all_ciphers
(
void
);
865
void
OpenSSL_add_all_digests
(
void
);
866
#define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms()
867
#define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers()
868
#define SSLeay_add_all_digests() OpenSSL_add_all_digests()
869
870
int
EVP_add_cipher
(
const
EVP_CIPHER
*cipher);
871
int
EVP_add_digest
(
const
EVP_MD
*digest);
872
873
const
EVP_CIPHER
*
EVP_get_cipherbyname
(
const
char
*name);
874
const
EVP_MD
*
EVP_get_digestbyname
(
const
char
*name);
875
void
EVP_cleanup
(
void
);
876
877
void
EVP_CIPHER_do_all
(
void
(*fn)(
const
EVP_CIPHER
*ciph,
878
const
char
*from,
const
char
*to,
void
*x),
void
*
arg
);
879
void
EVP_CIPHER_do_all_sorted
(
void
(*fn)(
const
EVP_CIPHER
*ciph,
880
const
char
*from,
const
char
*to,
void
*x),
void
*
arg
);
881
882
void
EVP_MD_do_all
(
void
(*fn)(
const
EVP_MD
*ciph,
883
const
char
*from,
const
char
*to,
void
*x),
void
*
arg
);
884
void
EVP_MD_do_all_sorted
(
void
(*fn)(
const
EVP_MD
*ciph,
885
const
char
*from,
const
char
*to,
void
*x),
void
*
arg
);
886
887
int
EVP_PKEY_decrypt_old
(
unsigned
char
*dec_key,
888
const
unsigned
char
*enc_key,
int
enc_key_len,
889
EVP_PKEY
*private_key);
890
int
EVP_PKEY_encrypt_old
(
unsigned
char
*enc_key,
891
const
unsigned
char
*
key
,
int
key_len,
892
EVP_PKEY
*pub_key);
893
int
EVP_PKEY_type
(
int
type
);
894
int
EVP_PKEY_id
(
const
EVP_PKEY
*pkey);
895
int
EVP_PKEY_base_id
(
const
EVP_PKEY
*pkey);
896
int
EVP_PKEY_bits
(
EVP_PKEY
*pkey);
897
int
EVP_PKEY_size
(
EVP_PKEY
*pkey);
898
int
EVP_PKEY_set_type
(
EVP_PKEY
*pkey,
int
type
);
899
int
EVP_PKEY_set_type_str
(
EVP_PKEY
*pkey,
const
char
*str,
int
len
);
900
int
EVP_PKEY_assign
(
EVP_PKEY
*pkey,
int
type
,
void
*
key
);
901
void
*
EVP_PKEY_get0
(
EVP_PKEY
*pkey);
902
903
#ifndef OPENSSL_NO_RSA
904
struct
rsa_st
;
905
int
EVP_PKEY_set1_RSA
(
EVP_PKEY
*pkey,
struct
rsa_st
*
key
);
906
struct
rsa_st
*
EVP_PKEY_get1_RSA
(
EVP_PKEY
*pkey);
907
#endif
908
#ifndef OPENSSL_NO_DSA
909
struct
dsa_st
;
910
int
EVP_PKEY_set1_DSA
(
EVP_PKEY
*pkey,
struct
dsa_st
*
key
);
911
struct
dsa_st
*
EVP_PKEY_get1_DSA
(
EVP_PKEY
*pkey);
912
#endif
913
#ifndef OPENSSL_NO_DH
914
struct
dh_st
;
915
int
EVP_PKEY_set1_DH
(
EVP_PKEY
*pkey,
struct
dh_st
*
key
);
916
struct
dh_st
*
EVP_PKEY_get1_DH
(
EVP_PKEY
*pkey);
917
#endif
918
#ifndef OPENSSL_NO_EC
919
struct
ec_key_st
;
920
int
EVP_PKEY_set1_EC_KEY
(
EVP_PKEY
*pkey,
struct
ec_key_st
*
key
);
921
struct
ec_key_st
*
EVP_PKEY_get1_EC_KEY
(
EVP_PKEY
*pkey);
922
#endif
923
924
EVP_PKEY
*
EVP_PKEY_new
(
void
);
925
void
EVP_PKEY_free
(
EVP_PKEY
*pkey);
926
927
EVP_PKEY
*
d2i_PublicKey
(
int
type
,
EVP_PKEY
**
a
,
const
unsigned
char
**
pp
,
928
long
length
);
929
int
i2d_PublicKey
(
EVP_PKEY
*
a
,
unsigned
char
**
pp
);
930
931
EVP_PKEY
*
d2i_PrivateKey
(
int
type
,
EVP_PKEY
**
a
,
const
unsigned
char
**
pp
,
932
long
length
);
933
EVP_PKEY
*
d2i_AutoPrivateKey
(
EVP_PKEY
**
a
,
const
unsigned
char
**
pp
,
934
long
length
);
935
int
i2d_PrivateKey
(
EVP_PKEY
*
a
,
unsigned
char
**
pp
);
936
937
int
EVP_PKEY_copy_parameters
(
EVP_PKEY
*to,
const
EVP_PKEY
*from);
938
int
EVP_PKEY_missing_parameters
(
const
EVP_PKEY
*pkey);
939
int
EVP_PKEY_save_parameters
(
EVP_PKEY
*pkey,
int
mode);
940
int
EVP_PKEY_cmp_parameters
(
const
EVP_PKEY
*
a
,
const
EVP_PKEY
*
b
);
941
942
int
EVP_PKEY_cmp
(
const
EVP_PKEY
*
a
,
const
EVP_PKEY
*
b
);
943
944
int
EVP_PKEY_print_public
(
BIO
*out,
const
EVP_PKEY
*pkey,
945
int
indent,
ASN1_PCTX
*pctx);
946
int
EVP_PKEY_print_private
(
BIO
*out,
const
EVP_PKEY
*pkey,
947
int
indent,
ASN1_PCTX
*pctx);
948
int
EVP_PKEY_print_params
(
BIO
*out,
const
EVP_PKEY
*pkey,
949
int
indent,
ASN1_PCTX
*pctx);
950
951
int
EVP_PKEY_get_default_digest_nid
(
EVP_PKEY
*pkey,
int
*pnid);
952
953
int
EVP_CIPHER_type
(
const
EVP_CIPHER
*ctx);
954
955
/* calls methods */
956
int
EVP_CIPHER_param_to_asn1
(
EVP_CIPHER_CTX
*c,
ASN1_TYPE
*
type
);
957
int
EVP_CIPHER_asn1_to_param
(
EVP_CIPHER_CTX
*c,
ASN1_TYPE
*
type
);
958
959
/* These are used by EVP_CIPHER methods */
960
int
EVP_CIPHER_set_asn1_iv
(
EVP_CIPHER_CTX
*c,
ASN1_TYPE
*
type
);
961
int
EVP_CIPHER_get_asn1_iv
(
EVP_CIPHER_CTX
*c,
ASN1_TYPE
*
type
);
962
963
/* PKCS5 password based encryption */
964
int
PKCS5_PBE_keyivgen
(
EVP_CIPHER_CTX
*ctx,
const
char
*pass,
int
passlen,
965
ASN1_TYPE
*param,
const
EVP_CIPHER
*cipher,
const
EVP_MD
*md,
966
int
en_de);
967
int
PKCS5_PBKDF2_HMAC_SHA1
(
const
char
*pass,
int
passlen,
968
const
unsigned
char
*salt,
int
saltlen,
int
iter,
969
int
keylen,
unsigned
char
*out);
970
int
PKCS5_PBKDF2_HMAC
(
const
char
*pass,
int
passlen,
971
const
unsigned
char
*salt,
int
saltlen,
int
iter,
972
const
EVP_MD
*digest,
973
int
keylen,
unsigned
char
*out);
974
int
PKCS5_v2_PBE_keyivgen
(
EVP_CIPHER_CTX
*ctx,
const
char
*pass,
int
passlen,
975
ASN1_TYPE
*param,
const
EVP_CIPHER
*cipher,
const
EVP_MD
*md,
976
int
en_de);
977
978
void
PKCS5_PBE_add
(
void
);
979
980
int
EVP_PBE_CipherInit
(
ASN1_OBJECT
*pbe_obj,
const
char
*pass,
int
passlen,
981
ASN1_TYPE
*param,
EVP_CIPHER_CTX
*ctx,
int
en_de);
982
983
/* PBE type */
984
985
/* Can appear as the outermost AlgorithmIdentifier */
986
#define EVP_PBE_TYPE_OUTER 0x0
987
/* Is an PRF type OID */
988
#define EVP_PBE_TYPE_PRF 0x1
989
990
int
EVP_PBE_alg_add_type
(
int
pbe_type,
int
pbe_nid,
int
cipher_nid,
int
md_nid,
991
EVP_PBE_KEYGEN
*keygen);
992
int
EVP_PBE_alg_add
(
int
nid
,
const
EVP_CIPHER
*cipher,
const
EVP_MD
*md,
993
EVP_PBE_KEYGEN
*keygen);
994
int
EVP_PBE_find
(
int
type
,
int
pbe_nid,
995
int
*pcnid,
int
*pmnid,
EVP_PBE_KEYGEN
**pkeygen);
996
void
EVP_PBE_cleanup
(
void
);
997
998
#define ASN1_PKEY_ALIAS 0x1
999
#define ASN1_PKEY_DYNAMIC 0x2
1000
#define ASN1_PKEY_SIGPARAM_NULL 0x4
1001
1002
#define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1
1003
#define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2
1004
#define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3
1005
#define ASN1_PKEY_CTRL_CMS_SIGN 0x5
1006
#define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7
1007
1008
int
EVP_PKEY_asn1_get_count
(
void
);
1009
const
EVP_PKEY_ASN1_METHOD
*
EVP_PKEY_asn1_get0
(
int
idx);
1010
const
EVP_PKEY_ASN1_METHOD
*
EVP_PKEY_asn1_find
(
ENGINE
**pe,
int
type
);
1011
const
EVP_PKEY_ASN1_METHOD
*
EVP_PKEY_asn1_find_str
(
ENGINE
**pe,
1012
const
char
*str,
int
len
);
1013
int
EVP_PKEY_asn1_add0
(
const
EVP_PKEY_ASN1_METHOD
*ameth);
1014
int
EVP_PKEY_asn1_add_alias
(
int
to,
int
from);
1015
int
EVP_PKEY_asn1_get0_info
(
int
*ppkey_id,
int
*pkey_base_id,
int
*ppkey_flags,
1016
const
char
**pinfo,
const
char
**ppem_str,
1017
const
EVP_PKEY_ASN1_METHOD
*ameth);
1018
1019
const
EVP_PKEY_ASN1_METHOD
*
EVP_PKEY_get0_asn1
(
EVP_PKEY
*pkey);
1020
EVP_PKEY_ASN1_METHOD
*
EVP_PKEY_asn1_new
(
int
id
,
int
flags
,
1021
const
char
*pem_str,
const
char
*info);
1022
void
EVP_PKEY_asn1_copy
(
EVP_PKEY_ASN1_METHOD
*dst,
1023
const
EVP_PKEY_ASN1_METHOD
*src);
1024
void
EVP_PKEY_asn1_free
(
EVP_PKEY_ASN1_METHOD
*ameth);
1025
void
EVP_PKEY_asn1_set_public
(
EVP_PKEY_ASN1_METHOD
*ameth,
1026
int
(*pub_decode)(
EVP_PKEY
*pk,
X509_PUBKEY
*pub),
1027
int
(*pub_encode)(
X509_PUBKEY
*pub,
const
EVP_PKEY
*pk),
1028
int
(*pub_cmp)(
const
EVP_PKEY
*
a
,
const
EVP_PKEY
*
b
),
1029
int
(*pub_print)(
BIO
*out,
const
EVP_PKEY
*pkey,
int
indent,
1030
ASN1_PCTX
*pctx),
1031
int
(*pkey_size)(
const
EVP_PKEY
*pk),
1032
int
(*pkey_bits)(
const
EVP_PKEY
*pk));
1033
void
EVP_PKEY_asn1_set_private
(
EVP_PKEY_ASN1_METHOD
*ameth,
1034
int
(*priv_decode)(
EVP_PKEY
*pk,
PKCS8_PRIV_KEY_INFO
*p8inf),
1035
int
(*priv_encode)(
PKCS8_PRIV_KEY_INFO
*p8,
const
EVP_PKEY
*pk),
1036
int
(*priv_print)(
BIO
*out,
const
EVP_PKEY
*pkey,
int
indent,
1037
ASN1_PCTX
*pctx));
1038
void
EVP_PKEY_asn1_set_param
(
EVP_PKEY_ASN1_METHOD
*ameth,
1039
int
(*param_decode)(
EVP_PKEY
*pkey,
1040
const
unsigned
char
**pder,
int
derlen),
1041
int
(*param_encode)(
const
EVP_PKEY
*pkey,
unsigned
char
**pder),
1042
int
(*param_missing)(
const
EVP_PKEY
*pk),
1043
int
(*param_copy)(
EVP_PKEY
*to,
const
EVP_PKEY
*from),
1044
int
(*param_cmp)(
const
EVP_PKEY
*a,
const
EVP_PKEY
*b),
1045
int
(*param_print)(
BIO
*out,
const
EVP_PKEY
*pkey,
int
indent,
1046
ASN1_PCTX
*pctx));
1047
1048
void
EVP_PKEY_asn1_set_free
(
EVP_PKEY_ASN1_METHOD
*ameth,
1049
void
(*pkey_free)(
EVP_PKEY
*pkey));
1050
void
EVP_PKEY_asn1_set_ctrl
(
EVP_PKEY_ASN1_METHOD
*ameth,
1051
int
(*pkey_ctrl)(
EVP_PKEY
*pkey,
int
op,
1052
long
arg1,
void
*arg2));
1053
1054
1055
#define EVP_PKEY_OP_UNDEFINED 0
1056
#define EVP_PKEY_OP_PARAMGEN (1<<1)
1057
#define EVP_PKEY_OP_KEYGEN (1<<2)
1058
#define EVP_PKEY_OP_SIGN (1<<3)
1059
#define EVP_PKEY_OP_VERIFY (1<<4)
1060
#define EVP_PKEY_OP_VERIFYRECOVER (1<<5)
1061
#define EVP_PKEY_OP_SIGNCTX (1<<6)
1062
#define EVP_PKEY_OP_VERIFYCTX (1<<7)
1063
#define EVP_PKEY_OP_ENCRYPT (1<<8)
1064
#define EVP_PKEY_OP_DECRYPT (1<<9)
1065
#define EVP_PKEY_OP_DERIVE (1<<10)
1066
1067
#define EVP_PKEY_OP_TYPE_SIG \
1068
(EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \
1069
| EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
1070
1071
#define EVP_PKEY_OP_TYPE_CRYPT \
1072
(EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT)
1073
1074
#define EVP_PKEY_OP_TYPE_NOGEN \
1075
(EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE)
1076
1077
#define EVP_PKEY_OP_TYPE_GEN \
1078
(EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN)
1079
1080
#define EVP_PKEY_CTX_set_signature_md(ctx, md) \
1081
EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \
1082
EVP_PKEY_CTRL_MD, 0, (void *)md)
1083
1084
#define EVP_PKEY_CTRL_MD 1
1085
#define EVP_PKEY_CTRL_PEER_KEY 2
1086
1087
#define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3
1088
#define EVP_PKEY_CTRL_PKCS7_DECRYPT 4
1089
1090
#define EVP_PKEY_CTRL_PKCS7_SIGN 5
1091
1092
#define EVP_PKEY_CTRL_SET_MAC_KEY 6
1093
1094
#define EVP_PKEY_CTRL_DIGESTINIT 7
1095
1096
/* Used by GOST key encryption in TLS */
1097
#define EVP_PKEY_CTRL_SET_IV 8
1098
1099
#define EVP_PKEY_CTRL_CMS_ENCRYPT 9
1100
#define EVP_PKEY_CTRL_CMS_DECRYPT 10
1101
#define EVP_PKEY_CTRL_CMS_SIGN 11
1102
1103
#define EVP_PKEY_CTRL_CIPHER 12
1104
1105
#define EVP_PKEY_ALG_CTRL 0x1000
1106
1107
1108
#define EVP_PKEY_FLAG_AUTOARGLEN 2
1109
/* Method handles all operations: don't assume any digest related
1110
* defaults.
1111
*/
1112
#define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4
1113
1114
const
EVP_PKEY_METHOD
*
EVP_PKEY_meth_find
(
int
type
);
1115
EVP_PKEY_METHOD
*
EVP_PKEY_meth_new
(
int
id
,
int
flags
);
1116
void
EVP_PKEY_meth_get0_info
(
int
*ppkey_id,
int
*pflags,
1117
const
EVP_PKEY_METHOD
*meth);
1118
void
EVP_PKEY_meth_copy
(
EVP_PKEY_METHOD
*dst,
const
EVP_PKEY_METHOD
*src);
1119
void
EVP_PKEY_meth_free
(
EVP_PKEY_METHOD
*pmeth);
1120
int
EVP_PKEY_meth_add0
(
const
EVP_PKEY_METHOD
*pmeth);
1121
1122
EVP_PKEY_CTX
*
EVP_PKEY_CTX_new
(
EVP_PKEY
*pkey,
ENGINE
*
e
);
1123
EVP_PKEY_CTX
*
EVP_PKEY_CTX_new_id
(
int
id
,
ENGINE
*
e
);
1124
EVP_PKEY_CTX
*
EVP_PKEY_CTX_dup
(
EVP_PKEY_CTX
*ctx);
1125
void
EVP_PKEY_CTX_free
(
EVP_PKEY_CTX
*ctx);
1126
1127
int
EVP_PKEY_CTX_ctrl
(
EVP_PKEY_CTX
*ctx,
int
keytype,
int
optype,
1128
int
cmd,
int
p1,
void
*p2);
1129
int
EVP_PKEY_CTX_ctrl_str
(
EVP_PKEY_CTX
*ctx,
const
char
*
type
,
1130
const
char
*value);
1131
1132
int
EVP_PKEY_CTX_get_operation
(
EVP_PKEY_CTX
*ctx);
1133
void
EVP_PKEY_CTX_set0_keygen_info
(
EVP_PKEY_CTX
*ctx,
int
*dat,
int
datlen);
1134
1135
EVP_PKEY
*
EVP_PKEY_new_mac_key
(
int
type
,
ENGINE
*
e
,
1136
const
unsigned
char
*
key
,
int
keylen);
1137
1138
void
EVP_PKEY_CTX_set_data
(
EVP_PKEY_CTX
*ctx,
void
*
data
);
1139
void
*
EVP_PKEY_CTX_get_data
(
EVP_PKEY_CTX
*ctx);
1140
EVP_PKEY
*
EVP_PKEY_CTX_get0_pkey
(
EVP_PKEY_CTX
*ctx);
1141
1142
EVP_PKEY
*
EVP_PKEY_CTX_get0_peerkey
(
EVP_PKEY_CTX
*ctx);
1143
1144
void
EVP_PKEY_CTX_set_app_data
(
EVP_PKEY_CTX
*ctx,
void
*
data
);
1145
void
*
EVP_PKEY_CTX_get_app_data
(
EVP_PKEY_CTX
*ctx);
1146
1147
int
EVP_PKEY_sign_init
(
EVP_PKEY_CTX
*ctx);
1148
int
EVP_PKEY_sign
(
EVP_PKEY_CTX
*ctx,
1149
unsigned
char
*sig,
size_t
*siglen,
1150
const
unsigned
char
*tbs,
size_t
tbslen);
1151
int
EVP_PKEY_verify_init
(
EVP_PKEY_CTX
*ctx);
1152
int
EVP_PKEY_verify
(
EVP_PKEY_CTX
*ctx,
1153
const
unsigned
char
*sig,
size_t
siglen,
1154
const
unsigned
char
*tbs,
size_t
tbslen);
1155
int
EVP_PKEY_verify_recover_init
(
EVP_PKEY_CTX
*ctx);
1156
int
EVP_PKEY_verify_recover
(
EVP_PKEY_CTX
*ctx,
1157
unsigned
char
*rout,
size_t
*routlen,
1158
const
unsigned
char
*sig,
size_t
siglen);
1159
int
EVP_PKEY_encrypt_init
(
EVP_PKEY_CTX
*ctx);
1160
int
EVP_PKEY_encrypt
(
EVP_PKEY_CTX
*ctx,
1161
unsigned
char
*out,
size_t
*outlen,
1162
const
unsigned
char
*in,
size_t
inlen);
1163
int
EVP_PKEY_decrypt_init
(
EVP_PKEY_CTX
*ctx);
1164
int
EVP_PKEY_decrypt
(
EVP_PKEY_CTX
*ctx,
1165
unsigned
char
*out,
size_t
*outlen,
1166
const
unsigned
char
*in,
size_t
inlen);
1167
1168
int
EVP_PKEY_derive_init
(
EVP_PKEY_CTX
*ctx);
1169
int
EVP_PKEY_derive_set_peer
(
EVP_PKEY_CTX
*ctx,
EVP_PKEY
*peer);
1170
int
EVP_PKEY_derive
(
EVP_PKEY_CTX
*ctx,
unsigned
char
*
key
,
size_t
*keylen);
1171
1172
typedef
int
EVP_PKEY_gen_cb
(
EVP_PKEY_CTX
*ctx);
1173
1174
int
EVP_PKEY_paramgen_init
(
EVP_PKEY_CTX
*ctx);
1175
int
EVP_PKEY_paramgen
(
EVP_PKEY_CTX
*ctx,
EVP_PKEY
**ppkey);
1176
int
EVP_PKEY_keygen_init
(
EVP_PKEY_CTX
*ctx);
1177
int
EVP_PKEY_keygen
(
EVP_PKEY_CTX
*ctx,
EVP_PKEY
**ppkey);
1178
1179
void
EVP_PKEY_CTX_set_cb
(
EVP_PKEY_CTX
*ctx,
EVP_PKEY_gen_cb
*
cb
);
1180
EVP_PKEY_gen_cb
*
EVP_PKEY_CTX_get_cb
(
EVP_PKEY_CTX
*ctx);
1181
1182
int
EVP_PKEY_CTX_get_keygen_info
(
EVP_PKEY_CTX
*ctx,
int
idx);
1183
1184
void
EVP_PKEY_meth_set_init
(
EVP_PKEY_METHOD
*pmeth,
1185
int
(*init)(
EVP_PKEY_CTX
*ctx));
1186
1187
void
EVP_PKEY_meth_set_copy
(
EVP_PKEY_METHOD
*pmeth,
1188
int
(*copy)(
EVP_PKEY_CTX
*dst,
EVP_PKEY_CTX
*src));
1189
1190
void
EVP_PKEY_meth_set_cleanup
(
EVP_PKEY_METHOD
*pmeth,
1191
void
(*cleanup)(
EVP_PKEY_CTX
*ctx));
1192
1193
void
EVP_PKEY_meth_set_paramgen
(
EVP_PKEY_METHOD
*pmeth,
1194
int
(*paramgen_init)(
EVP_PKEY_CTX
*ctx),
1195
int
(*paramgen)(
EVP_PKEY_CTX
*ctx,
EVP_PKEY
*pkey));
1196
1197
void
EVP_PKEY_meth_set_keygen
(
EVP_PKEY_METHOD
*pmeth,
1198
int
(*keygen_init)(
EVP_PKEY_CTX
*ctx),
1199
int
(*keygen)(
EVP_PKEY_CTX
*ctx,
EVP_PKEY
*pkey));
1200
1201
void
EVP_PKEY_meth_set_sign
(
EVP_PKEY_METHOD
*pmeth,
1202
int
(*sign_init)(
EVP_PKEY_CTX
*ctx),
1203
int
(*sign)(
EVP_PKEY_CTX
*ctx,
unsigned
char
*sig,
size_t
*siglen,
1204
const
unsigned
char
*tbs,
size_t
tbslen));
1205
1206
void
EVP_PKEY_meth_set_verify
(
EVP_PKEY_METHOD
*pmeth,
1207
int
(*verify_init)(
EVP_PKEY_CTX
*ctx),
1208
int
(*verify)(
EVP_PKEY_CTX
*ctx,
const
unsigned
char
*sig,
size_t
siglen,
1209
const
unsigned
char
*tbs,
size_t
tbslen));
1210
1211
void
EVP_PKEY_meth_set_verify_recover
(
EVP_PKEY_METHOD
*pmeth,
1212
int
(*verify_recover_init)(
EVP_PKEY_CTX
*ctx),
1213
int
(*verify_recover)(
EVP_PKEY_CTX
*ctx,
1214
unsigned
char
*sig,
size_t
*siglen,
1215
const
unsigned
char
*tbs,
size_t
tbslen));
1216
1217
void
EVP_PKEY_meth_set_signctx
(
EVP_PKEY_METHOD
*pmeth,
1218
int
(*signctx_init)(
EVP_PKEY_CTX
*ctx,
EVP_MD_CTX
*mctx),
1219
int
(*signctx)(
EVP_PKEY_CTX
*ctx,
unsigned
char
*sig,
size_t
*siglen,
1220
EVP_MD_CTX
*mctx));
1221
1222
void
EVP_PKEY_meth_set_verifyctx
(
EVP_PKEY_METHOD
*pmeth,
1223
int
(*verifyctx_init)(
EVP_PKEY_CTX
*ctx,
EVP_MD_CTX
*mctx),
1224
int
(*verifyctx)(
EVP_PKEY_CTX
*ctx,
const
unsigned
char
*sig,
int
siglen,
1225
EVP_MD_CTX
*mctx));
1226
1227
void
EVP_PKEY_meth_set_encrypt
(
EVP_PKEY_METHOD
*pmeth,
1228
int
(*encrypt_init)(
EVP_PKEY_CTX
*ctx),
1229
int
(*encryptfn)(
EVP_PKEY_CTX
*ctx,
unsigned
char
*out,
size_t
*outlen,
1230
const
unsigned
char
*in,
size_t
inlen));
1231
1232
void
EVP_PKEY_meth_set_decrypt
(
EVP_PKEY_METHOD
*pmeth,
1233
int
(*decrypt_init)(
EVP_PKEY_CTX
*ctx),
1234
int
(*decrypt)(
EVP_PKEY_CTX
*ctx,
unsigned
char
*out,
size_t
*outlen,
1235
const
unsigned
char
*in,
size_t
inlen));
1236
1237
void
EVP_PKEY_meth_set_derive
(
EVP_PKEY_METHOD
*pmeth,
1238
int
(*derive_init)(
EVP_PKEY_CTX
*ctx),
1239
int
(*derive)(
EVP_PKEY_CTX
*ctx,
unsigned
char
*
key
,
size_t
*keylen));
1240
1241
void
EVP_PKEY_meth_set_ctrl
(
EVP_PKEY_METHOD
*pmeth,
1242
int
(*ctrl)(
EVP_PKEY_CTX
*ctx,
int
type
,
int
p1,
void
*p2),
1243
int
(*ctrl_str)(
EVP_PKEY_CTX
*ctx,
1244
const
char
*type,
const
char
*value));
1245
1246
/* BEGIN ERROR CODES */
1247
/* The following lines are auto generated by the script mkerr.pl. Any changes
1248
* made after this point may be overwritten when the script is next run.
1249
*/
1250
void
ERR_load_EVP_strings
(
void
);
1251
1252
/* Error codes for the EVP functions. */
1253
1254
/* Function codes. */
1255
#define EVP_F_AESNI_INIT_KEY 165
1256
#define EVP_F_AESNI_XTS_CIPHER 176
1257
#define EVP_F_AES_INIT_KEY 133
1258
#define EVP_F_AES_XTS 172
1259
#define EVP_F_AES_XTS_CIPHER 175
1260
#define EVP_F_CAMELLIA_INIT_KEY 159
1261
#define EVP_F_CMAC_INIT 173
1262
#define EVP_F_D2I_PKEY 100
1263
#define EVP_F_DO_SIGVER_INIT 161
1264
#define EVP_F_DSAPKEY2PKCS8 134
1265
#define EVP_F_DSA_PKEY2PKCS8 135
1266
#define EVP_F_ECDSA_PKEY2PKCS8 129
1267
#define EVP_F_ECKEY_PKEY2PKCS8 132
1268
#define EVP_F_EVP_CIPHERINIT_EX 123
1269
#define EVP_F_EVP_CIPHER_CTX_COPY 163
1270
#define EVP_F_EVP_CIPHER_CTX_CTRL 124
1271
#define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122
1272
#define EVP_F_EVP_DECRYPTFINAL_EX 101
1273
#define EVP_F_EVP_DIGESTINIT_EX 128
1274
#define EVP_F_EVP_ENCRYPTFINAL_EX 127
1275
#define EVP_F_EVP_MD_CTX_COPY_EX 110
1276
#define EVP_F_EVP_MD_SIZE 162
1277
#define EVP_F_EVP_OPENINIT 102
1278
#define EVP_F_EVP_PBE_ALG_ADD 115
1279
#define EVP_F_EVP_PBE_ALG_ADD_TYPE 160
1280
#define EVP_F_EVP_PBE_CIPHERINIT 116
1281
#define EVP_F_EVP_PKCS82PKEY 111
1282
#define EVP_F_EVP_PKCS82PKEY_BROKEN 136
1283
#define EVP_F_EVP_PKEY2PKCS8_BROKEN 113
1284
#define EVP_F_EVP_PKEY_COPY_PARAMETERS 103
1285
#define EVP_F_EVP_PKEY_CTX_CTRL 137
1286
#define EVP_F_EVP_PKEY_CTX_CTRL_STR 150
1287
#define EVP_F_EVP_PKEY_CTX_DUP 156
1288
#define EVP_F_EVP_PKEY_DECRYPT 104
1289
#define EVP_F_EVP_PKEY_DECRYPT_INIT 138
1290
#define EVP_F_EVP_PKEY_DECRYPT_OLD 151
1291
#define EVP_F_EVP_PKEY_DERIVE 153
1292
#define EVP_F_EVP_PKEY_DERIVE_INIT 154
1293
#define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155
1294
#define EVP_F_EVP_PKEY_ENCRYPT 105
1295
#define EVP_F_EVP_PKEY_ENCRYPT_INIT 139
1296
#define EVP_F_EVP_PKEY_ENCRYPT_OLD 152
1297
#define EVP_F_EVP_PKEY_GET1_DH 119
1298
#define EVP_F_EVP_PKEY_GET1_DSA 120
1299
#define EVP_F_EVP_PKEY_GET1_ECDSA 130
1300
#define EVP_F_EVP_PKEY_GET1_EC_KEY 131
1301
#define EVP_F_EVP_PKEY_GET1_RSA 121
1302
#define EVP_F_EVP_PKEY_KEYGEN 146
1303
#define EVP_F_EVP_PKEY_KEYGEN_INIT 147
1304
#define EVP_F_EVP_PKEY_NEW 106
1305
#define EVP_F_EVP_PKEY_PARAMGEN 148
1306
#define EVP_F_EVP_PKEY_PARAMGEN_INIT 149
1307
#define EVP_F_EVP_PKEY_SIGN 140
1308
#define EVP_F_EVP_PKEY_SIGN_INIT 141
1309
#define EVP_F_EVP_PKEY_VERIFY 142
1310
#define EVP_F_EVP_PKEY_VERIFY_INIT 143
1311
#define EVP_F_EVP_PKEY_VERIFY_RECOVER 144
1312
#define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145
1313
#define EVP_F_EVP_RIJNDAEL 126
1314
#define EVP_F_EVP_SIGNFINAL 107
1315
#define EVP_F_EVP_VERIFYFINAL 108
1316
#define EVP_F_FIPS_CIPHERINIT 166
1317
#define EVP_F_FIPS_CIPHER_CTX_COPY 170
1318
#define EVP_F_FIPS_CIPHER_CTX_CTRL 167
1319
#define EVP_F_FIPS_CIPHER_CTX_SET_KEY_LENGTH 171
1320
#define EVP_F_FIPS_DIGESTINIT 168
1321
#define EVP_F_FIPS_MD_CTX_COPY 169
1322
#define EVP_F_HMAC_INIT_EX 174
1323
#define EVP_F_INT_CTX_NEW 157
1324
#define EVP_F_PKCS5_PBE_KEYIVGEN 117
1325
#define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118
1326
#define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164
1327
#define EVP_F_PKCS8_SET_BROKEN 112
1328
#define EVP_F_PKEY_SET_TYPE 158
1329
#define EVP_F_RC2_MAGIC_TO_METH 109
1330
#define EVP_F_RC5_CTRL 125
1331
1332
/* Reason codes. */
1333
#define EVP_R_AES_IV_SETUP_FAILED 162
1334
#define EVP_R_AES_KEY_SETUP_FAILED 143
1335
#define EVP_R_ASN1_LIB 140
1336
#define EVP_R_BAD_BLOCK_LENGTH 136
1337
#define EVP_R_BAD_DECRYPT 100
1338
#define EVP_R_BAD_KEY_LENGTH 137
1339
#define EVP_R_BN_DECODE_ERROR 112
1340
#define EVP_R_BN_PUBKEY_ERROR 113
1341
#define EVP_R_BUFFER_TOO_SMALL 155
1342
#define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157
1343
#define EVP_R_CIPHER_PARAMETER_ERROR 122
1344
#define EVP_R_COMMAND_NOT_SUPPORTED 147
1345
#define EVP_R_CTRL_NOT_IMPLEMENTED 132
1346
#define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133
1347
#define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138
1348
#define EVP_R_DECODE_ERROR 114
1349
#define EVP_R_DIFFERENT_KEY_TYPES 101
1350
#define EVP_R_DIFFERENT_PARAMETERS 153
1351
#define EVP_R_DISABLED_FOR_FIPS 163
1352
#define EVP_R_ENCODE_ERROR 115
1353
#define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119
1354
#define EVP_R_EXPECTING_AN_RSA_KEY 127
1355
#define EVP_R_EXPECTING_A_DH_KEY 128
1356
#define EVP_R_EXPECTING_A_DSA_KEY 129
1357
#define EVP_R_EXPECTING_A_ECDSA_KEY 141
1358
#define EVP_R_EXPECTING_A_EC_KEY 142
1359
#define EVP_R_INITIALIZATION_ERROR 134
1360
#define EVP_R_INPUT_NOT_INITIALIZED 111
1361
#define EVP_R_INVALID_DIGEST 152
1362
#define EVP_R_INVALID_KEY_LENGTH 130
1363
#define EVP_R_INVALID_OPERATION 148
1364
#define EVP_R_IV_TOO_LARGE 102
1365
#define EVP_R_KEYGEN_FAILURE 120
1366
#define EVP_R_MESSAGE_DIGEST_IS_NULL 159
1367
#define EVP_R_METHOD_NOT_SUPPORTED 144
1368
#define EVP_R_MISSING_PARAMETERS 103
1369
#define EVP_R_NO_CIPHER_SET 131
1370
#define EVP_R_NO_DEFAULT_DIGEST 158
1371
#define EVP_R_NO_DIGEST_SET 139
1372
#define EVP_R_NO_DSA_PARAMETERS 116
1373
#define EVP_R_NO_KEY_SET 154
1374
#define EVP_R_NO_OPERATION_SET 149
1375
#define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104
1376
#define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105
1377
#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150
1378
#define EVP_R_OPERATON_NOT_INITIALIZED 151
1379
#define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117
1380
#define EVP_R_PRIVATE_KEY_DECODE_ERROR 145
1381
#define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146
1382
#define EVP_R_PUBLIC_KEY_NOT_RSA 106
1383
#define EVP_R_TOO_LARGE 164
1384
#define EVP_R_UNKNOWN_CIPHER 160
1385
#define EVP_R_UNKNOWN_DIGEST 161
1386
#define EVP_R_UNKNOWN_PBE_ALGORITHM 121
1387
#define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135
1388
#define EVP_R_UNSUPPORTED_ALGORITHM 156
1389
#define EVP_R_UNSUPPORTED_CIPHER 107
1390
#define EVP_R_UNSUPPORTED_KEYLENGTH 123
1391
#define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124
1392
#define EVP_R_UNSUPPORTED_KEY_SIZE 108
1393
#define EVP_R_UNSUPPORTED_PRF 125
1394
#define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118
1395
#define EVP_R_UNSUPPORTED_SALT_TYPE 126
1396
#define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109
1397
#define EVP_R_WRONG_PUBLIC_KEY_TYPE 110
1398
1399
#ifdef __cplusplus
1400
}
1401
#endif
1402
#endif
Generated on Thu Jan 10 2013 09:53:37 for OpenSSL by
1.8.2