diff options
Diffstat (limited to 'src/lib/libssl/src/crypto/evp/evp.h')
-rw-r--r-- | src/lib/libssl/src/crypto/evp/evp.h | 539 |
1 files changed, 402 insertions, 137 deletions
diff --git a/src/lib/libssl/src/crypto/evp/evp.h b/src/lib/libssl/src/crypto/evp/evp.h index 82b5862ce7..da93e945f5 100644 --- a/src/lib/libssl/src/crypto/evp/evp.h +++ b/src/lib/libssl/src/crypto/evp/evp.h | |||
@@ -75,10 +75,6 @@ | |||
75 | #include <openssl/bio.h> | 75 | #include <openssl/bio.h> |
76 | #endif | 76 | #endif |
77 | 77 | ||
78 | #ifdef OPENSSL_FIPS | ||
79 | #include <openssl/fips.h> | ||
80 | #endif | ||
81 | |||
82 | /* | 78 | /* |
83 | #define EVP_RC2_KEY_SIZE 16 | 79 | #define EVP_RC2_KEY_SIZE 16 |
84 | #define EVP_RC4_KEY_SIZE 16 | 80 | #define EVP_RC4_KEY_SIZE 16 |
@@ -119,6 +115,7 @@ | |||
119 | #define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 | 115 | #define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 |
120 | #define EVP_PKEY_DH NID_dhKeyAgreement | 116 | #define EVP_PKEY_DH NID_dhKeyAgreement |
121 | #define EVP_PKEY_EC NID_X9_62_id_ecPublicKey | 117 | #define EVP_PKEY_EC NID_X9_62_id_ecPublicKey |
118 | #define EVP_PKEY_HMAC NID_hmac | ||
122 | 119 | ||
123 | #ifdef __cplusplus | 120 | #ifdef __cplusplus |
124 | extern "C" { | 121 | extern "C" { |
@@ -132,6 +129,8 @@ struct evp_pkey_st | |||
132 | int type; | 129 | int type; |
133 | int save_type; | 130 | int save_type; |
134 | int references; | 131 | int references; |
132 | const EVP_PKEY_ASN1_METHOD *ameth; | ||
133 | ENGINE *engine; | ||
135 | union { | 134 | union { |
136 | char *ptr; | 135 | char *ptr; |
137 | #ifndef OPENSSL_NO_RSA | 136 | #ifndef OPENSSL_NO_RSA |
@@ -156,73 +155,6 @@ struct evp_pkey_st | |||
156 | #define EVP_PKEY_MO_ENCRYPT 0x0004 | 155 | #define EVP_PKEY_MO_ENCRYPT 0x0004 |
157 | #define EVP_PKEY_MO_DECRYPT 0x0008 | 156 | #define EVP_PKEY_MO_DECRYPT 0x0008 |
158 | 157 | ||
159 | #if 0 | ||
160 | /* This structure is required to tie the message digest and signing together. | ||
161 | * The lookup can be done by md/pkey_method, oid, oid/pkey_method, or | ||
162 | * oid, md and pkey. | ||
163 | * This is required because for various smart-card perform the digest and | ||
164 | * signing/verification on-board. To handle this case, the specific | ||
165 | * EVP_MD and EVP_PKEY_METHODs need to be closely associated. | ||
166 | * When a PKEY is created, it will have a EVP_PKEY_METHOD associated with it. | ||
167 | * This can either be software or a token to provide the required low level | ||
168 | * routines. | ||
169 | */ | ||
170 | typedef struct evp_pkey_md_st | ||
171 | { | ||
172 | int oid; | ||
173 | EVP_MD *md; | ||
174 | EVP_PKEY_METHOD *pkey; | ||
175 | } EVP_PKEY_MD; | ||
176 | |||
177 | #define EVP_rsa_md2() \ | ||
178 | EVP_PKEY_MD_add(NID_md2WithRSAEncryption,\ | ||
179 | EVP_rsa_pkcs1(),EVP_md2()) | ||
180 | #define EVP_rsa_md5() \ | ||
181 | EVP_PKEY_MD_add(NID_md5WithRSAEncryption,\ | ||
182 | EVP_rsa_pkcs1(),EVP_md5()) | ||
183 | #define EVP_rsa_sha0() \ | ||
184 | EVP_PKEY_MD_add(NID_shaWithRSAEncryption,\ | ||
185 | EVP_rsa_pkcs1(),EVP_sha()) | ||
186 | #define EVP_rsa_sha1() \ | ||
187 | EVP_PKEY_MD_add(NID_sha1WithRSAEncryption,\ | ||
188 | EVP_rsa_pkcs1(),EVP_sha1()) | ||
189 | #define EVP_rsa_ripemd160() \ | ||
190 | EVP_PKEY_MD_add(NID_ripemd160WithRSA,\ | ||
191 | EVP_rsa_pkcs1(),EVP_ripemd160()) | ||
192 | #define EVP_rsa_mdc2() \ | ||
193 | EVP_PKEY_MD_add(NID_mdc2WithRSA,\ | ||
194 | EVP_rsa_octet_string(),EVP_mdc2()) | ||
195 | #define EVP_dsa_sha() \ | ||
196 | EVP_PKEY_MD_add(NID_dsaWithSHA,\ | ||
197 | EVP_dsa(),EVP_sha()) | ||
198 | #define EVP_dsa_sha1() \ | ||
199 | EVP_PKEY_MD_add(NID_dsaWithSHA1,\ | ||
200 | EVP_dsa(),EVP_sha1()) | ||
201 | |||
202 | typedef struct evp_pkey_method_st | ||
203 | { | ||
204 | char *name; | ||
205 | int flags; | ||
206 | int type; /* RSA, DSA, an SSLeay specific constant */ | ||
207 | int oid; /* For the pub-key type */ | ||
208 | int encrypt_oid; /* pub/priv key encryption */ | ||
209 | |||
210 | int (*sign)(); | ||
211 | int (*verify)(); | ||
212 | struct { | ||
213 | int (*set)(); /* get and/or set the underlying type */ | ||
214 | int (*get)(); | ||
215 | int (*encrypt)(); | ||
216 | int (*decrypt)(); | ||
217 | int (*i2d)(); | ||
218 | int (*d2i)(); | ||
219 | int (*dup)(); | ||
220 | } pub,priv; | ||
221 | int (*set_asn1_parameters)(); | ||
222 | int (*get_asn1_parameters)(); | ||
223 | } EVP_PKEY_METHOD; | ||
224 | #endif | ||
225 | |||
226 | #ifndef EVP_MD | 158 | #ifndef EVP_MD |
227 | struct env_md_st | 159 | struct env_md_st |
228 | { | 160 | { |
@@ -245,6 +177,8 @@ struct env_md_st | |||
245 | int required_pkey_type[5]; /*EVP_PKEY_xxx */ | 177 | int required_pkey_type[5]; /*EVP_PKEY_xxx */ |
246 | int block_size; | 178 | int block_size; |
247 | int ctx_size; /* how big does the ctx->md_data need to be */ | 179 | int ctx_size; /* how big does the ctx->md_data need to be */ |
180 | /* control function */ | ||
181 | int (*md_ctrl)(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); | ||
248 | } /* EVP_MD */; | 182 | } /* EVP_MD */; |
249 | 183 | ||
250 | typedef int evp_sign_method(int type,const unsigned char *m, | 184 | typedef int evp_sign_method(int type,const unsigned char *m, |
@@ -254,18 +188,42 @@ typedef int evp_verify_method(int type,const unsigned char *m, | |||
254 | unsigned int m_length,const unsigned char *sigbuf, | 188 | unsigned int m_length,const unsigned char *sigbuf, |
255 | unsigned int siglen, void *key); | 189 | unsigned int siglen, void *key); |
256 | 190 | ||
257 | typedef struct | ||
258 | { | ||
259 | EVP_MD_CTX *mctx; | ||
260 | void *key; | ||
261 | } EVP_MD_SVCTX; | ||
262 | |||
263 | #define EVP_MD_FLAG_ONESHOT 0x0001 /* digest can only handle a single | 191 | #define EVP_MD_FLAG_ONESHOT 0x0001 /* digest can only handle a single |
264 | * block */ | 192 | * block */ |
265 | 193 | ||
266 | #define EVP_MD_FLAG_FIPS 0x0400 /* Note if suitable for use in FIPS mode */ | 194 | #define EVP_MD_FLAG_PKEY_DIGEST 0x0002 /* digest is a "clone" digest used |
195 | * which is a copy of an existing | ||
196 | * one for a specific public key type. | ||
197 | * EVP_dss1() etc */ | ||
198 | |||
199 | /* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */ | ||
200 | |||
201 | #define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004 | ||
202 | |||
203 | /* DigestAlgorithmIdentifier flags... */ | ||
204 | |||
205 | #define EVP_MD_FLAG_DIGALGID_MASK 0x0018 | ||
267 | 206 | ||
268 | #define EVP_MD_FLAG_SVCTX 0x0800 /* pass EVP_MD_SVCTX to sign/verify */ | 207 | /* NULL or absent parameter accepted. Use NULL */ |
208 | |||
209 | #define EVP_MD_FLAG_DIGALGID_NULL 0x0000 | ||
210 | |||
211 | /* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ | ||
212 | |||
213 | #define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 | ||
214 | |||
215 | /* Custom handling via ctrl */ | ||
216 | |||
217 | #define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 | ||
218 | |||
219 | /* Digest ctrls */ | ||
220 | |||
221 | #define EVP_MD_CTRL_DIGALGID 0x1 | ||
222 | #define EVP_MD_CTRL_MICALG 0x2 | ||
223 | |||
224 | /* Minimum Algorithm specific ctrl value */ | ||
225 | |||
226 | #define EVP_MD_CTRL_ALG_CTRL 0x1000 | ||
269 | 227 | ||
270 | #define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} | 228 | #define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} |
271 | 229 | ||
@@ -307,6 +265,10 @@ struct env_md_ctx_st | |||
307 | ENGINE *engine; /* functional reference if 'digest' is ENGINE-provided */ | 265 | ENGINE *engine; /* functional reference if 'digest' is ENGINE-provided */ |
308 | unsigned long flags; | 266 | unsigned long flags; |
309 | void *md_data; | 267 | void *md_data; |
268 | /* Public key context for sign/verify */ | ||
269 | EVP_PKEY_CTX *pctx; | ||
270 | /* Update function: usually copied from EVP_MD */ | ||
271 | int (*update)(EVP_MD_CTX *ctx,const void *data,size_t count); | ||
310 | } /* EVP_MD_CTX */; | 272 | } /* EVP_MD_CTX */; |
311 | 273 | ||
312 | /* values for EVP_MD_CTX flags */ | 274 | /* values for EVP_MD_CTX flags */ |
@@ -317,17 +279,23 @@ struct env_md_ctx_st | |||
317 | * cleaned */ | 279 | * cleaned */ |
318 | #define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data | 280 | #define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data |
319 | * in EVP_MD_CTX_cleanup */ | 281 | * in EVP_MD_CTX_cleanup */ |
282 | /* FIPS and pad options are ignored in 1.0.0, definitions are here | ||
283 | * so we don't accidentally reuse the values for other purposes. | ||
284 | */ | ||
285 | |||
320 | #define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 /* Allow use of non FIPS digest | 286 | #define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 /* Allow use of non FIPS digest |
321 | * in FIPS mode */ | 287 | * in FIPS mode */ |
322 | 288 | ||
289 | /* The following PAD options are also currently ignored in 1.0.0, digest | ||
290 | * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() | ||
291 | * instead. | ||
292 | */ | ||
323 | #define EVP_MD_CTX_FLAG_PAD_MASK 0xF0 /* RSA mode to use */ | 293 | #define EVP_MD_CTX_FLAG_PAD_MASK 0xF0 /* RSA mode to use */ |
324 | #define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00 /* PKCS#1 v1.5 mode */ | 294 | #define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00 /* PKCS#1 v1.5 mode */ |
325 | #define EVP_MD_CTX_FLAG_PAD_X931 0x10 /* X9.31 mode */ | 295 | #define EVP_MD_CTX_FLAG_PAD_X931 0x10 /* X9.31 mode */ |
326 | #define EVP_MD_CTX_FLAG_PAD_PSS 0x20 /* PSS mode */ | 296 | #define EVP_MD_CTX_FLAG_PAD_PSS 0x20 /* PSS mode */ |
327 | #define M_EVP_MD_CTX_FLAG_PSS_SALT(ctx) \ | 297 | |
328 | ((ctx->flags>>16) &0xFFFF) /* seed length */ | 298 | #define EVP_MD_CTX_FLAG_NO_INIT 0x0100 /* Don't initialize md_data */ |
329 | #define EVP_MD_CTX_FLAG_PSS_MDLEN 0xFFFF /* salt len same as digest */ | ||
330 | #define EVP_MD_CTX_FLAG_PSS_MREC 0xFFFE /* salt max or auto recovered */ | ||
331 | 299 | ||
332 | struct evp_cipher_st | 300 | struct evp_cipher_st |
333 | { | 301 | { |
@@ -339,7 +307,7 @@ struct evp_cipher_st | |||
339 | int (*init)(EVP_CIPHER_CTX *ctx, const unsigned char *key, | 307 | int (*init)(EVP_CIPHER_CTX *ctx, const unsigned char *key, |
340 | const unsigned char *iv, int enc); /* init key */ | 308 | const unsigned char *iv, int enc); /* init key */ |
341 | int (*do_cipher)(EVP_CIPHER_CTX *ctx, unsigned char *out, | 309 | int (*do_cipher)(EVP_CIPHER_CTX *ctx, unsigned char *out, |
342 | const unsigned char *in, unsigned int inl);/* encrypt/decrypt data */ | 310 | const unsigned char *in, size_t inl);/* encrypt/decrypt data */ |
343 | int (*cleanup)(EVP_CIPHER_CTX *); /* cleanup ctx */ | 311 | int (*cleanup)(EVP_CIPHER_CTX *); /* cleanup ctx */ |
344 | int ctx_size; /* how big ctx->cipher_data needs to be */ | 312 | int ctx_size; /* how big ctx->cipher_data needs to be */ |
345 | int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Populate a ASN1_TYPE with parameters */ | 313 | int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Populate a ASN1_TYPE with parameters */ |
@@ -357,7 +325,7 @@ struct evp_cipher_st | |||
357 | #define EVP_CIPH_CBC_MODE 0x2 | 325 | #define EVP_CIPH_CBC_MODE 0x2 |
358 | #define EVP_CIPH_CFB_MODE 0x3 | 326 | #define EVP_CIPH_CFB_MODE 0x3 |
359 | #define EVP_CIPH_OFB_MODE 0x4 | 327 | #define EVP_CIPH_OFB_MODE 0x4 |
360 | #define EVP_CIPH_MODE 0x7 | 328 | #define EVP_CIPH_MODE 0xF0007 |
361 | /* Set if variable length cipher */ | 329 | /* Set if variable length cipher */ |
362 | #define EVP_CIPH_VARIABLE_LENGTH 0x8 | 330 | #define EVP_CIPH_VARIABLE_LENGTH 0x8 |
363 | /* Set if the iv handling should be done by the cipher itself */ | 331 | /* Set if the iv handling should be done by the cipher itself */ |
@@ -372,10 +340,8 @@ struct evp_cipher_st | |||
372 | #define EVP_CIPH_NO_PADDING 0x100 | 340 | #define EVP_CIPH_NO_PADDING 0x100 |
373 | /* cipher handles random key generation */ | 341 | /* cipher handles random key generation */ |
374 | #define EVP_CIPH_RAND_KEY 0x200 | 342 | #define EVP_CIPH_RAND_KEY 0x200 |
375 | /* Note if suitable for use in FIPS mode */ | 343 | /* cipher has its own additional copying logic */ |
376 | #define EVP_CIPH_FLAG_FIPS 0x400 | 344 | #define EVP_CIPH_CUSTOM_COPY 0x400 |
377 | /* Allow non FIPS cipher in FIPS mode */ | ||
378 | #define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x800 | ||
379 | /* Allow use default ASN1 get/set iv */ | 345 | /* Allow use default ASN1 get/set iv */ |
380 | #define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 | 346 | #define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 |
381 | /* Buffer length in bits not bytes: CFB1 mode only */ | 347 | /* Buffer length in bits not bytes: CFB1 mode only */ |
@@ -389,8 +355,10 @@ struct evp_cipher_st | |||
389 | #define EVP_CTRL_SET_RC2_KEY_BITS 0x3 | 355 | #define EVP_CTRL_SET_RC2_KEY_BITS 0x3 |
390 | #define EVP_CTRL_GET_RC5_ROUNDS 0x4 | 356 | #define EVP_CTRL_GET_RC5_ROUNDS 0x4 |
391 | #define EVP_CTRL_SET_RC5_ROUNDS 0x5 | 357 | #define EVP_CTRL_SET_RC5_ROUNDS 0x5 |
392 | #define EVP_CTRL_SET_ACSS_MODE 0x6 | 358 | #define EVP_CTRL_RAND_KEY 0x6 |
393 | #define EVP_CTRL_RAND_KEY 0x7 | 359 | #define EVP_CTRL_PBE_PRF_NID 0x7 |
360 | #define EVP_CTRL_COPY 0x8 | ||
361 | #define EVP_CTRL_SET_ACSS_MODE 0x9 | ||
394 | 362 | ||
395 | typedef struct evp_cipher_info_st | 363 | typedef struct evp_cipher_info_st |
396 | { | 364 | { |
@@ -463,26 +431,15 @@ typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | |||
463 | #define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) | 431 | #define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) |
464 | #define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) | 432 | #define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) |
465 | 433 | ||
466 | /* Macros to reduce FIPS dependencies: do NOT use in applications */ | ||
467 | #define M_EVP_MD_size(e) ((e)->md_size) | ||
468 | #define M_EVP_MD_block_size(e) ((e)->block_size) | ||
469 | #define M_EVP_MD_CTX_set_flags(ctx,flgs) ((ctx)->flags|=(flgs)) | ||
470 | #define M_EVP_MD_CTX_clear_flags(ctx,flgs) ((ctx)->flags&=~(flgs)) | ||
471 | #define M_EVP_MD_CTX_test_flags(ctx,flgs) ((ctx)->flags&(flgs)) | ||
472 | #define M_EVP_MD_type(e) ((e)->type) | ||
473 | #define M_EVP_MD_CTX_type(e) M_EVP_MD_type(M_EVP_MD_CTX_md(e)) | ||
474 | #define M_EVP_MD_CTX_md(e) ((e)->digest) | ||
475 | |||
476 | #define M_EVP_CIPHER_CTX_set_flags(ctx,flgs) ((ctx)->flags|=(flgs)) | ||
477 | |||
478 | int EVP_MD_type(const EVP_MD *md); | 434 | int EVP_MD_type(const EVP_MD *md); |
479 | #define EVP_MD_nid(e) EVP_MD_type(e) | 435 | #define EVP_MD_nid(e) EVP_MD_type(e) |
480 | #define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) | 436 | #define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) |
481 | int EVP_MD_pkey_type(const EVP_MD *md); | 437 | int EVP_MD_pkey_type(const EVP_MD *md); |
482 | int EVP_MD_size(const EVP_MD *md); | 438 | int EVP_MD_size(const EVP_MD *md); |
483 | int EVP_MD_block_size(const EVP_MD *md); | 439 | int EVP_MD_block_size(const EVP_MD *md); |
440 | unsigned long EVP_MD_flags(const EVP_MD *md); | ||
484 | 441 | ||
485 | const EVP_MD * EVP_MD_CTX_md(const EVP_MD_CTX *ctx); | 442 | 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)) | 443 | #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)) | 444 | #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)) | 445 | #define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) |
@@ -500,6 +457,7 @@ int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); | |||
500 | int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); | 457 | int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); |
501 | int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); | 458 | int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); |
502 | int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); | 459 | int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); |
460 | int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); | ||
503 | void * EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); | 461 | void * EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); |
504 | void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); | 462 | void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); |
505 | #define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) | 463 | #define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) |
@@ -517,6 +475,8 @@ unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx); | |||
517 | #define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) | 475 | #define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) |
518 | #define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) | 476 | #define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) |
519 | #define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) | 477 | #define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) |
478 | #define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) | ||
479 | #define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) | ||
520 | 480 | ||
521 | #ifdef CONST_STRICT | 481 | #ifdef CONST_STRICT |
522 | void BIO_set_md(BIO *,const EVP_MD *md); | 482 | void BIO_set_md(BIO *,const EVP_MD *md); |
@@ -563,6 +523,7 @@ int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); | |||
563 | int EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s); | 523 | int EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s); |
564 | 524 | ||
565 | int EVP_read_pw_string(char *buf,int length,const char *prompt,int verify); | 525 | int EVP_read_pw_string(char *buf,int length,const char *prompt,int verify); |
526 | int EVP_read_pw_string_min(char *buf,int minlen,int maxlen,const char *prompt,int verify); | ||
566 | void EVP_set_pw_prompt(const char *prompt); | 527 | void EVP_set_pw_prompt(const char *prompt); |
567 | char * EVP_get_pw_prompt(void); | 528 | char * EVP_get_pw_prompt(void); |
568 | 529 | ||
@@ -609,6 +570,16 @@ int EVP_SignFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s, | |||
609 | int EVP_VerifyFinal(EVP_MD_CTX *ctx,const unsigned char *sigbuf, | 570 | int EVP_VerifyFinal(EVP_MD_CTX *ctx,const unsigned char *sigbuf, |
610 | unsigned int siglen,EVP_PKEY *pkey); | 571 | unsigned int siglen,EVP_PKEY *pkey); |
611 | 572 | ||
573 | int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, | ||
574 | const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); | ||
575 | int EVP_DigestSignFinal(EVP_MD_CTX *ctx, | ||
576 | unsigned char *sigret, size_t *siglen); | ||
577 | |||
578 | int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, | ||
579 | const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); | ||
580 | int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, | ||
581 | unsigned char *sig, size_t siglen); | ||
582 | |||
612 | int EVP_OpenInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type, | 583 | int EVP_OpenInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type, |
613 | const unsigned char *ek, int ekl, const unsigned char *iv, | 584 | const unsigned char *ek, int ekl, const unsigned char *iv, |
614 | EVP_PKEY *priv); | 585 | EVP_PKEY *priv); |
@@ -681,6 +652,9 @@ const EVP_MD *EVP_mdc2(void); | |||
681 | #ifndef OPENSSL_NO_RIPEMD | 652 | #ifndef OPENSSL_NO_RIPEMD |
682 | const EVP_MD *EVP_ripemd160(void); | 653 | const EVP_MD *EVP_ripemd160(void); |
683 | #endif | 654 | #endif |
655 | #ifndef OPENSSL_NO_WHIRLPOOL | ||
656 | const EVP_MD *EVP_whirlpool(void); | ||
657 | #endif | ||
684 | const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ | 658 | const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ |
685 | #ifndef OPENSSL_NO_DES | 659 | #ifndef OPENSSL_NO_DES |
686 | const EVP_CIPHER *EVP_des_ecb(void); | 660 | const EVP_CIPHER *EVP_des_ecb(void); |
@@ -851,16 +825,31 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name); | |||
851 | const EVP_MD *EVP_get_digestbyname(const char *name); | 825 | const EVP_MD *EVP_get_digestbyname(const char *name); |
852 | void EVP_cleanup(void); | 826 | void EVP_cleanup(void); |
853 | 827 | ||
854 | int EVP_PKEY_decrypt(unsigned char *dec_key, | 828 | void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph, |
829 | const char *from, const char *to, void *x), void *arg); | ||
830 | void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph, | ||
831 | const char *from, const char *to, void *x), void *arg); | ||
832 | |||
833 | void EVP_MD_do_all(void (*fn)(const EVP_MD *ciph, | ||
834 | const char *from, const char *to, void *x), void *arg); | ||
835 | void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *ciph, | ||
836 | const char *from, const char *to, void *x), void *arg); | ||
837 | |||
838 | int EVP_PKEY_decrypt_old(unsigned char *dec_key, | ||
855 | const unsigned char *enc_key,int enc_key_len, | 839 | const unsigned char *enc_key,int enc_key_len, |
856 | EVP_PKEY *private_key); | 840 | EVP_PKEY *private_key); |
857 | int EVP_PKEY_encrypt(unsigned char *enc_key, | 841 | int EVP_PKEY_encrypt_old(unsigned char *enc_key, |
858 | const unsigned char *key,int key_len, | 842 | const unsigned char *key,int key_len, |
859 | EVP_PKEY *pub_key); | 843 | EVP_PKEY *pub_key); |
860 | int EVP_PKEY_type(int type); | 844 | int EVP_PKEY_type(int type); |
845 | int EVP_PKEY_id(const EVP_PKEY *pkey); | ||
846 | int EVP_PKEY_base_id(const EVP_PKEY *pkey); | ||
861 | int EVP_PKEY_bits(EVP_PKEY *pkey); | 847 | int EVP_PKEY_bits(EVP_PKEY *pkey); |
862 | int EVP_PKEY_size(EVP_PKEY *pkey); | 848 | int EVP_PKEY_size(EVP_PKEY *pkey); |
863 | int EVP_PKEY_assign(EVP_PKEY *pkey,int type,char *key); | 849 | int EVP_PKEY_set_type(EVP_PKEY *pkey,int type); |
850 | int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); | ||
851 | int EVP_PKEY_assign(EVP_PKEY *pkey,int type,void *key); | ||
852 | void * EVP_PKEY_get0(EVP_PKEY *pkey); | ||
864 | 853 | ||
865 | #ifndef OPENSSL_NO_RSA | 854 | #ifndef OPENSSL_NO_RSA |
866 | struct rsa_st; | 855 | struct rsa_st; |
@@ -903,6 +892,15 @@ int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); | |||
903 | 892 | ||
904 | int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); | 893 | int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); |
905 | 894 | ||
895 | int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, | ||
896 | int indent, ASN1_PCTX *pctx); | ||
897 | int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, | ||
898 | int indent, ASN1_PCTX *pctx); | ||
899 | int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, | ||
900 | int indent, ASN1_PCTX *pctx); | ||
901 | |||
902 | int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); | ||
903 | |||
906 | int EVP_CIPHER_type(const EVP_CIPHER *ctx); | 904 | int EVP_CIPHER_type(const EVP_CIPHER *ctx); |
907 | 905 | ||
908 | /* calls methods */ | 906 | /* calls methods */ |
@@ -920,6 +918,10 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | |||
920 | int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, | 918 | int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, |
921 | const unsigned char *salt, int saltlen, int iter, | 919 | const unsigned char *salt, int saltlen, int iter, |
922 | int keylen, unsigned char *out); | 920 | int keylen, unsigned char *out); |
921 | int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, | ||
922 | const unsigned char *salt, int saltlen, int iter, | ||
923 | const EVP_MD *digest, | ||
924 | int keylen, unsigned char *out); | ||
923 | int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | 925 | int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, |
924 | ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md, | 926 | ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md, |
925 | int en_de); | 927 | int en_de); |
@@ -928,27 +930,260 @@ void PKCS5_PBE_add(void); | |||
928 | 930 | ||
929 | int EVP_PBE_CipherInit (ASN1_OBJECT *pbe_obj, const char *pass, int passlen, | 931 | int EVP_PBE_CipherInit (ASN1_OBJECT *pbe_obj, const char *pass, int passlen, |
930 | ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); | 932 | ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); |
933 | |||
934 | /* PBE type */ | ||
935 | |||
936 | /* Can appear as the outermost AlgorithmIdentifier */ | ||
937 | #define EVP_PBE_TYPE_OUTER 0x0 | ||
938 | /* Is an PRF type OID */ | ||
939 | #define EVP_PBE_TYPE_PRF 0x1 | ||
940 | |||
941 | int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, int md_nid, | ||
942 | EVP_PBE_KEYGEN *keygen); | ||
931 | int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, | 943 | int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, |
932 | EVP_PBE_KEYGEN *keygen); | 944 | EVP_PBE_KEYGEN *keygen); |
945 | int EVP_PBE_find(int type, int pbe_nid, | ||
946 | int *pcnid, int *pmnid, EVP_PBE_KEYGEN **pkeygen); | ||
933 | void EVP_PBE_cleanup(void); | 947 | void EVP_PBE_cleanup(void); |
934 | 948 | ||
935 | #ifdef OPENSSL_FIPS | 949 | #define ASN1_PKEY_ALIAS 0x1 |
936 | #ifndef OPENSSL_NO_ENGINE | 950 | #define ASN1_PKEY_DYNAMIC 0x2 |
937 | void int_EVP_MD_set_engine_callbacks( | 951 | #define ASN1_PKEY_SIGPARAM_NULL 0x4 |
938 | int (*eng_md_init)(ENGINE *impl), | 952 | |
939 | int (*eng_md_fin)(ENGINE *impl), | 953 | #define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 |
940 | int (*eng_md_evp) | 954 | #define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 |
941 | (EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl)); | 955 | #define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 |
942 | void int_EVP_MD_init_engine_callbacks(void); | 956 | #define ASN1_PKEY_CTRL_CMS_SIGN 0x5 |
943 | void int_EVP_CIPHER_set_engine_callbacks( | 957 | #define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 |
944 | int (*eng_ciph_fin)(ENGINE *impl), | 958 | |
945 | int (*eng_ciph_evp) | 959 | int EVP_PKEY_asn1_get_count(void); |
946 | (EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pciph, ENGINE *impl)); | 960 | const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); |
947 | void int_EVP_CIPHER_init_engine_callbacks(void); | 961 | const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); |
948 | #endif | 962 | const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, |
949 | #endif | 963 | const char *str, int len); |
964 | int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); | ||
965 | int EVP_PKEY_asn1_add_alias(int to, int from); | ||
966 | int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, int *ppkey_flags, | ||
967 | const char **pinfo, const char **ppem_str, | ||
968 | const EVP_PKEY_ASN1_METHOD *ameth); | ||
969 | |||
970 | const EVP_PKEY_ASN1_METHOD* EVP_PKEY_get0_asn1(EVP_PKEY *pkey); | ||
971 | EVP_PKEY_ASN1_METHOD* EVP_PKEY_asn1_new(int id, int flags, | ||
972 | const char *pem_str, const char *info); | ||
973 | void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, | ||
974 | const EVP_PKEY_ASN1_METHOD *src); | ||
975 | void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); | ||
976 | void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, | ||
977 | int (*pub_decode)(EVP_PKEY *pk, X509_PUBKEY *pub), | ||
978 | int (*pub_encode)(X509_PUBKEY *pub, const EVP_PKEY *pk), | ||
979 | int (*pub_cmp)(const EVP_PKEY *a, const EVP_PKEY *b), | ||
980 | int (*pub_print)(BIO *out, const EVP_PKEY *pkey, int indent, | ||
981 | ASN1_PCTX *pctx), | ||
982 | int (*pkey_size)(const EVP_PKEY *pk), | ||
983 | int (*pkey_bits)(const EVP_PKEY *pk)); | ||
984 | void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, | ||
985 | int (*priv_decode)(EVP_PKEY *pk, PKCS8_PRIV_KEY_INFO *p8inf), | ||
986 | int (*priv_encode)(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pk), | ||
987 | int (*priv_print)(BIO *out, const EVP_PKEY *pkey, int indent, | ||
988 | ASN1_PCTX *pctx)); | ||
989 | void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, | ||
990 | int (*param_decode)(EVP_PKEY *pkey, | ||
991 | const unsigned char **pder, int derlen), | ||
992 | int (*param_encode)(const EVP_PKEY *pkey, unsigned char **pder), | ||
993 | int (*param_missing)(const EVP_PKEY *pk), | ||
994 | int (*param_copy)(EVP_PKEY *to, const EVP_PKEY *from), | ||
995 | int (*param_cmp)(const EVP_PKEY *a, const EVP_PKEY *b), | ||
996 | int (*param_print)(BIO *out, const EVP_PKEY *pkey, int indent, | ||
997 | ASN1_PCTX *pctx)); | ||
998 | |||
999 | void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, | ||
1000 | void (*pkey_free)(EVP_PKEY *pkey)); | ||
1001 | void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, | ||
1002 | int (*pkey_ctrl)(EVP_PKEY *pkey, int op, | ||
1003 | long arg1, void *arg2)); | ||
1004 | |||
1005 | |||
1006 | #define EVP_PKEY_OP_UNDEFINED 0 | ||
1007 | #define EVP_PKEY_OP_PARAMGEN (1<<1) | ||
1008 | #define EVP_PKEY_OP_KEYGEN (1<<2) | ||
1009 | #define EVP_PKEY_OP_SIGN (1<<3) | ||
1010 | #define EVP_PKEY_OP_VERIFY (1<<4) | ||
1011 | #define EVP_PKEY_OP_VERIFYRECOVER (1<<5) | ||
1012 | #define EVP_PKEY_OP_SIGNCTX (1<<6) | ||
1013 | #define EVP_PKEY_OP_VERIFYCTX (1<<7) | ||
1014 | #define EVP_PKEY_OP_ENCRYPT (1<<8) | ||
1015 | #define EVP_PKEY_OP_DECRYPT (1<<9) | ||
1016 | #define EVP_PKEY_OP_DERIVE (1<<10) | ||
1017 | |||
1018 | #define EVP_PKEY_OP_TYPE_SIG \ | ||
1019 | (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ | ||
1020 | | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) | ||
1021 | |||
1022 | #define EVP_PKEY_OP_TYPE_CRYPT \ | ||
1023 | (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) | ||
1024 | |||
1025 | #define EVP_PKEY_OP_TYPE_NOGEN \ | ||
1026 | (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE) | ||
1027 | |||
1028 | #define EVP_PKEY_OP_TYPE_GEN \ | ||
1029 | (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) | ||
1030 | |||
1031 | #define EVP_PKEY_CTX_set_signature_md(ctx, md) \ | ||
1032 | EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ | ||
1033 | EVP_PKEY_CTRL_MD, 0, (void *)md) | ||
1034 | |||
1035 | #define EVP_PKEY_CTRL_MD 1 | ||
1036 | #define EVP_PKEY_CTRL_PEER_KEY 2 | ||
1037 | |||
1038 | #define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 | ||
1039 | #define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 | ||
1040 | |||
1041 | #define EVP_PKEY_CTRL_PKCS7_SIGN 5 | ||
1042 | |||
1043 | #define EVP_PKEY_CTRL_SET_MAC_KEY 6 | ||
1044 | |||
1045 | #define EVP_PKEY_CTRL_DIGESTINIT 7 | ||
1046 | |||
1047 | /* Used by GOST key encryption in TLS */ | ||
1048 | #define EVP_PKEY_CTRL_SET_IV 8 | ||
1049 | |||
1050 | #define EVP_PKEY_CTRL_CMS_ENCRYPT 9 | ||
1051 | #define EVP_PKEY_CTRL_CMS_DECRYPT 10 | ||
1052 | #define EVP_PKEY_CTRL_CMS_SIGN 11 | ||
1053 | |||
1054 | #define EVP_PKEY_ALG_CTRL 0x1000 | ||
1055 | |||
1056 | |||
1057 | #define EVP_PKEY_FLAG_AUTOARGLEN 2 | ||
1058 | |||
1059 | const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); | ||
1060 | EVP_PKEY_METHOD* EVP_PKEY_meth_new(int id, int flags); | ||
1061 | void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); | ||
1062 | int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); | ||
1063 | |||
1064 | EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); | ||
1065 | EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); | ||
1066 | EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); | ||
1067 | void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); | ||
1068 | |||
1069 | int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, | ||
1070 | int cmd, int p1, void *p2); | ||
1071 | int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, | ||
1072 | const char *value); | ||
1073 | |||
1074 | int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); | ||
1075 | void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); | ||
1076 | |||
1077 | EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, | ||
1078 | unsigned char *key, int keylen); | ||
1079 | |||
1080 | void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); | ||
1081 | void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); | ||
1082 | EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); | ||
1083 | |||
1084 | EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); | ||
1085 | |||
1086 | void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); | ||
1087 | void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); | ||
1088 | |||
1089 | int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); | ||
1090 | int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, | ||
1091 | unsigned char *sig, size_t *siglen, | ||
1092 | const unsigned char *tbs, size_t tbslen); | ||
1093 | int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); | ||
1094 | int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, | ||
1095 | const unsigned char *sig, size_t siglen, | ||
1096 | const unsigned char *tbs, size_t tbslen); | ||
1097 | int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); | ||
1098 | int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, | ||
1099 | unsigned char *rout, size_t *routlen, | ||
1100 | const unsigned char *sig, size_t siglen); | ||
1101 | int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); | ||
1102 | int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, | ||
1103 | unsigned char *out, size_t *outlen, | ||
1104 | const unsigned char *in, size_t inlen); | ||
1105 | int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); | ||
1106 | int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, | ||
1107 | unsigned char *out, size_t *outlen, | ||
1108 | const unsigned char *in, size_t inlen); | ||
1109 | |||
1110 | int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); | ||
1111 | int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); | ||
1112 | int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); | ||
1113 | |||
1114 | typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); | ||
1115 | |||
1116 | int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); | ||
1117 | int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); | ||
1118 | int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); | ||
1119 | int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); | ||
1120 | |||
1121 | void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); | ||
1122 | EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); | ||
1123 | |||
1124 | int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); | ||
1125 | |||
1126 | void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, | ||
1127 | int (*init)(EVP_PKEY_CTX *ctx)); | ||
1128 | |||
1129 | void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, | ||
1130 | int (*copy)(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src)); | ||
1131 | |||
1132 | void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, | ||
1133 | void (*cleanup)(EVP_PKEY_CTX *ctx)); | ||
1134 | |||
1135 | void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, | ||
1136 | int (*paramgen_init)(EVP_PKEY_CTX *ctx), | ||
1137 | int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); | ||
1138 | |||
1139 | void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, | ||
1140 | int (*keygen_init)(EVP_PKEY_CTX *ctx), | ||
1141 | int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)); | ||
950 | 1142 | ||
951 | void EVP_add_alg_module(void); | 1143 | void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, |
1144 | int (*sign_init)(EVP_PKEY_CTX *ctx), | ||
1145 | int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, | ||
1146 | const unsigned char *tbs, size_t tbslen)); | ||
1147 | |||
1148 | void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, | ||
1149 | int (*verify_init)(EVP_PKEY_CTX *ctx), | ||
1150 | int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, | ||
1151 | const unsigned char *tbs, size_t tbslen)); | ||
1152 | |||
1153 | void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, | ||
1154 | int (*verify_recover_init)(EVP_PKEY_CTX *ctx), | ||
1155 | int (*verify_recover)(EVP_PKEY_CTX *ctx, | ||
1156 | unsigned char *sig, size_t *siglen, | ||
1157 | const unsigned char *tbs, size_t tbslen)); | ||
1158 | |||
1159 | void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, | ||
1160 | int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), | ||
1161 | int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, | ||
1162 | EVP_MD_CTX *mctx)); | ||
1163 | |||
1164 | void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, | ||
1165 | int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx), | ||
1166 | int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig,int siglen, | ||
1167 | EVP_MD_CTX *mctx)); | ||
1168 | |||
1169 | void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, | ||
1170 | int (*encrypt_init)(EVP_PKEY_CTX *ctx), | ||
1171 | int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, | ||
1172 | const unsigned char *in, size_t inlen)); | ||
1173 | |||
1174 | void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, | ||
1175 | int (*decrypt_init)(EVP_PKEY_CTX *ctx), | ||
1176 | int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, | ||
1177 | const unsigned char *in, size_t inlen)); | ||
1178 | |||
1179 | void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, | ||
1180 | int (*derive_init)(EVP_PKEY_CTX *ctx), | ||
1181 | int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen)); | ||
1182 | |||
1183 | void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, | ||
1184 | int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2), | ||
1185 | int (*ctrl_str)(EVP_PKEY_CTX *ctx, | ||
1186 | const char *type, const char *value)); | ||
952 | 1187 | ||
953 | /* BEGIN ERROR CODES */ | 1188 | /* BEGIN ERROR CODES */ |
954 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 1189 | /* The following lines are auto generated by the script mkerr.pl. Any changes |
@@ -961,46 +1196,66 @@ void ERR_load_EVP_strings(void); | |||
961 | /* Function codes. */ | 1196 | /* Function codes. */ |
962 | #define EVP_F_AESNI_INIT_KEY 165 | 1197 | #define EVP_F_AESNI_INIT_KEY 165 |
963 | #define EVP_F_AES_INIT_KEY 133 | 1198 | #define EVP_F_AES_INIT_KEY 133 |
964 | #define EVP_F_ALG_MODULE_INIT 138 | ||
965 | #define EVP_F_CAMELLIA_INIT_KEY 159 | 1199 | #define EVP_F_CAMELLIA_INIT_KEY 159 |
966 | #define EVP_F_D2I_PKEY 100 | 1200 | #define EVP_F_D2I_PKEY 100 |
967 | #define EVP_F_DO_EVP_ENC_ENGINE 140 | 1201 | #define EVP_F_DO_SIGVER_INIT 161 |
968 | #define EVP_F_DO_EVP_ENC_ENGINE_FULL 141 | ||
969 | #define EVP_F_DO_EVP_MD_ENGINE 139 | ||
970 | #define EVP_F_DO_EVP_MD_ENGINE_FULL 142 | ||
971 | #define EVP_F_DSAPKEY2PKCS8 134 | 1202 | #define EVP_F_DSAPKEY2PKCS8 134 |
972 | #define EVP_F_DSA_PKEY2PKCS8 135 | 1203 | #define EVP_F_DSA_PKEY2PKCS8 135 |
973 | #define EVP_F_ECDSA_PKEY2PKCS8 129 | 1204 | #define EVP_F_ECDSA_PKEY2PKCS8 129 |
974 | #define EVP_F_ECKEY_PKEY2PKCS8 132 | 1205 | #define EVP_F_ECKEY_PKEY2PKCS8 132 |
975 | #define EVP_F_EVP_CIPHERINIT 137 | ||
976 | #define EVP_F_EVP_CIPHERINIT_EX 123 | 1206 | #define EVP_F_EVP_CIPHERINIT_EX 123 |
1207 | #define EVP_F_EVP_CIPHER_CTX_COPY 163 | ||
977 | #define EVP_F_EVP_CIPHER_CTX_CTRL 124 | 1208 | #define EVP_F_EVP_CIPHER_CTX_CTRL 124 |
978 | #define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 | 1209 | #define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 |
979 | #define EVP_F_EVP_DECRYPTFINAL_EX 101 | 1210 | #define EVP_F_EVP_DECRYPTFINAL_EX 101 |
980 | #define EVP_F_EVP_DIGESTINIT 136 | ||
981 | #define EVP_F_EVP_DIGESTINIT_EX 128 | 1211 | #define EVP_F_EVP_DIGESTINIT_EX 128 |
982 | #define EVP_F_EVP_ENCRYPTFINAL_EX 127 | 1212 | #define EVP_F_EVP_ENCRYPTFINAL_EX 127 |
983 | #define EVP_F_EVP_MD_CTX_COPY_EX 110 | 1213 | #define EVP_F_EVP_MD_CTX_COPY_EX 110 |
1214 | #define EVP_F_EVP_MD_SIZE 162 | ||
984 | #define EVP_F_EVP_OPENINIT 102 | 1215 | #define EVP_F_EVP_OPENINIT 102 |
985 | #define EVP_F_EVP_PBE_ALG_ADD 115 | 1216 | #define EVP_F_EVP_PBE_ALG_ADD 115 |
1217 | #define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 | ||
986 | #define EVP_F_EVP_PBE_CIPHERINIT 116 | 1218 | #define EVP_F_EVP_PBE_CIPHERINIT 116 |
987 | #define EVP_F_EVP_PKCS82PKEY 111 | 1219 | #define EVP_F_EVP_PKCS82PKEY 111 |
1220 | #define EVP_F_EVP_PKCS82PKEY_BROKEN 136 | ||
988 | #define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 | 1221 | #define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 |
989 | #define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 | 1222 | #define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 |
1223 | #define EVP_F_EVP_PKEY_CTX_CTRL 137 | ||
1224 | #define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 | ||
1225 | #define EVP_F_EVP_PKEY_CTX_DUP 156 | ||
990 | #define EVP_F_EVP_PKEY_DECRYPT 104 | 1226 | #define EVP_F_EVP_PKEY_DECRYPT 104 |
1227 | #define EVP_F_EVP_PKEY_DECRYPT_INIT 138 | ||
1228 | #define EVP_F_EVP_PKEY_DECRYPT_OLD 151 | ||
1229 | #define EVP_F_EVP_PKEY_DERIVE 153 | ||
1230 | #define EVP_F_EVP_PKEY_DERIVE_INIT 154 | ||
1231 | #define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 | ||
991 | #define EVP_F_EVP_PKEY_ENCRYPT 105 | 1232 | #define EVP_F_EVP_PKEY_ENCRYPT 105 |
1233 | #define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 | ||
1234 | #define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 | ||
992 | #define EVP_F_EVP_PKEY_GET1_DH 119 | 1235 | #define EVP_F_EVP_PKEY_GET1_DH 119 |
993 | #define EVP_F_EVP_PKEY_GET1_DSA 120 | 1236 | #define EVP_F_EVP_PKEY_GET1_DSA 120 |
994 | #define EVP_F_EVP_PKEY_GET1_ECDSA 130 | 1237 | #define EVP_F_EVP_PKEY_GET1_ECDSA 130 |
995 | #define EVP_F_EVP_PKEY_GET1_EC_KEY 131 | 1238 | #define EVP_F_EVP_PKEY_GET1_EC_KEY 131 |
996 | #define EVP_F_EVP_PKEY_GET1_RSA 121 | 1239 | #define EVP_F_EVP_PKEY_GET1_RSA 121 |
1240 | #define EVP_F_EVP_PKEY_KEYGEN 146 | ||
1241 | #define EVP_F_EVP_PKEY_KEYGEN_INIT 147 | ||
997 | #define EVP_F_EVP_PKEY_NEW 106 | 1242 | #define EVP_F_EVP_PKEY_NEW 106 |
1243 | #define EVP_F_EVP_PKEY_PARAMGEN 148 | ||
1244 | #define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 | ||
1245 | #define EVP_F_EVP_PKEY_SIGN 140 | ||
1246 | #define EVP_F_EVP_PKEY_SIGN_INIT 141 | ||
1247 | #define EVP_F_EVP_PKEY_VERIFY 142 | ||
1248 | #define EVP_F_EVP_PKEY_VERIFY_INIT 143 | ||
1249 | #define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 | ||
1250 | #define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 | ||
998 | #define EVP_F_EVP_RIJNDAEL 126 | 1251 | #define EVP_F_EVP_RIJNDAEL 126 |
999 | #define EVP_F_EVP_SIGNFINAL 107 | 1252 | #define EVP_F_EVP_SIGNFINAL 107 |
1000 | #define EVP_F_EVP_VERIFYFINAL 108 | 1253 | #define EVP_F_EVP_VERIFYFINAL 108 |
1254 | #define EVP_F_INT_CTX_NEW 157 | ||
1001 | #define EVP_F_PKCS5_PBE_KEYIVGEN 117 | 1255 | #define EVP_F_PKCS5_PBE_KEYIVGEN 117 |
1002 | #define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 | 1256 | #define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 |
1003 | #define EVP_F_PKCS8_SET_BROKEN 112 | 1257 | #define EVP_F_PKCS8_SET_BROKEN 112 |
1258 | #define EVP_F_PKEY_SET_TYPE 158 | ||
1004 | #define EVP_F_RC2_MAGIC_TO_METH 109 | 1259 | #define EVP_F_RC2_MAGIC_TO_METH 109 |
1005 | #define EVP_F_RC5_CTRL 125 | 1260 | #define EVP_F_RC5_CTRL 125 |
1006 | 1261 | ||
@@ -1012,41 +1267,52 @@ void ERR_load_EVP_strings(void); | |||
1012 | #define EVP_R_BAD_KEY_LENGTH 137 | 1267 | #define EVP_R_BAD_KEY_LENGTH 137 |
1013 | #define EVP_R_BN_DECODE_ERROR 112 | 1268 | #define EVP_R_BN_DECODE_ERROR 112 |
1014 | #define EVP_R_BN_PUBKEY_ERROR 113 | 1269 | #define EVP_R_BN_PUBKEY_ERROR 113 |
1270 | #define EVP_R_BUFFER_TOO_SMALL 155 | ||
1015 | #define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 | 1271 | #define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 |
1016 | #define EVP_R_CIPHER_PARAMETER_ERROR 122 | 1272 | #define EVP_R_CIPHER_PARAMETER_ERROR 122 |
1273 | #define EVP_R_COMMAND_NOT_SUPPORTED 147 | ||
1017 | #define EVP_R_CTRL_NOT_IMPLEMENTED 132 | 1274 | #define EVP_R_CTRL_NOT_IMPLEMENTED 132 |
1018 | #define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 | 1275 | #define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 |
1019 | #define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 | 1276 | #define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 |
1020 | #define EVP_R_DECODE_ERROR 114 | 1277 | #define EVP_R_DECODE_ERROR 114 |
1021 | #define EVP_R_DIFFERENT_KEY_TYPES 101 | 1278 | #define EVP_R_DIFFERENT_KEY_TYPES 101 |
1022 | #define EVP_R_DISABLED_FOR_FIPS 144 | 1279 | #define EVP_R_DIFFERENT_PARAMETERS 153 |
1023 | #define EVP_R_ENCODE_ERROR 115 | 1280 | #define EVP_R_ENCODE_ERROR 115 |
1024 | #define EVP_R_ERROR_LOADING_SECTION 145 | ||
1025 | #define EVP_R_ERROR_SETTING_FIPS_MODE 146 | ||
1026 | #define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 | 1281 | #define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 |
1027 | #define EVP_R_EXPECTING_AN_RSA_KEY 127 | 1282 | #define EVP_R_EXPECTING_AN_RSA_KEY 127 |
1028 | #define EVP_R_EXPECTING_A_DH_KEY 128 | 1283 | #define EVP_R_EXPECTING_A_DH_KEY 128 |
1029 | #define EVP_R_EXPECTING_A_DSA_KEY 129 | 1284 | #define EVP_R_EXPECTING_A_DSA_KEY 129 |
1030 | #define EVP_R_EXPECTING_A_ECDSA_KEY 141 | 1285 | #define EVP_R_EXPECTING_A_ECDSA_KEY 141 |
1031 | #define EVP_R_EXPECTING_A_EC_KEY 142 | 1286 | #define EVP_R_EXPECTING_A_EC_KEY 142 |
1032 | #define EVP_R_FIPS_MODE_NOT_SUPPORTED 147 | ||
1033 | #define EVP_R_INITIALIZATION_ERROR 134 | 1287 | #define EVP_R_INITIALIZATION_ERROR 134 |
1034 | #define EVP_R_INPUT_NOT_INITIALIZED 111 | 1288 | #define EVP_R_INPUT_NOT_INITIALIZED 111 |
1035 | #define EVP_R_INVALID_FIPS_MODE 148 | 1289 | #define EVP_R_INVALID_DIGEST 152 |
1036 | #define EVP_R_INVALID_KEY_LENGTH 130 | 1290 | #define EVP_R_INVALID_KEY_LENGTH 130 |
1291 | #define EVP_R_INVALID_OPERATION 148 | ||
1037 | #define EVP_R_IV_TOO_LARGE 102 | 1292 | #define EVP_R_IV_TOO_LARGE 102 |
1038 | #define EVP_R_KEYGEN_FAILURE 120 | 1293 | #define EVP_R_KEYGEN_FAILURE 120 |
1294 | #define EVP_R_MESSAGE_DIGEST_IS_NULL 159 | ||
1295 | #define EVP_R_METHOD_NOT_SUPPORTED 144 | ||
1039 | #define EVP_R_MISSING_PARAMETERS 103 | 1296 | #define EVP_R_MISSING_PARAMETERS 103 |
1040 | #define EVP_R_NO_CIPHER_SET 131 | 1297 | #define EVP_R_NO_CIPHER_SET 131 |
1298 | #define EVP_R_NO_DEFAULT_DIGEST 158 | ||
1041 | #define EVP_R_NO_DIGEST_SET 139 | 1299 | #define EVP_R_NO_DIGEST_SET 139 |
1042 | #define EVP_R_NO_DSA_PARAMETERS 116 | 1300 | #define EVP_R_NO_DSA_PARAMETERS 116 |
1301 | #define EVP_R_NO_KEY_SET 154 | ||
1302 | #define EVP_R_NO_OPERATION_SET 149 | ||
1043 | #define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 | 1303 | #define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 |
1044 | #define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 | 1304 | #define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 |
1305 | #define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 | ||
1306 | #define EVP_R_OPERATON_NOT_INITIALIZED 151 | ||
1045 | #define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 | 1307 | #define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 |
1308 | #define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 | ||
1309 | #define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 | ||
1046 | #define EVP_R_PUBLIC_KEY_NOT_RSA 106 | 1310 | #define EVP_R_PUBLIC_KEY_NOT_RSA 106 |
1047 | #define EVP_R_UNKNOWN_OPTION 149 | 1311 | #define EVP_R_UNKNOWN_CIPHER 160 |
1312 | #define EVP_R_UNKNOWN_DIGEST 161 | ||
1048 | #define EVP_R_UNKNOWN_PBE_ALGORITHM 121 | 1313 | #define EVP_R_UNKNOWN_PBE_ALGORITHM 121 |
1049 | #define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 | 1314 | #define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 |
1315 | #define EVP_R_UNSUPPORTED_ALGORITHM 156 | ||
1050 | #define EVP_R_UNSUPPORTED_CIPHER 107 | 1316 | #define EVP_R_UNSUPPORTED_CIPHER 107 |
1051 | #define EVP_R_UNSUPPORTED_KEYLENGTH 123 | 1317 | #define EVP_R_UNSUPPORTED_KEYLENGTH 123 |
1052 | #define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 | 1318 | #define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 |
@@ -1056,7 +1322,6 @@ void ERR_load_EVP_strings(void); | |||
1056 | #define EVP_R_UNSUPPORTED_SALT_TYPE 126 | 1322 | #define EVP_R_UNSUPPORTED_SALT_TYPE 126 |
1057 | #define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 | 1323 | #define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 |
1058 | #define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 | 1324 | #define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 |
1059 | #define EVP_R_SEED_KEY_SETUP_FAILED 162 | ||
1060 | 1325 | ||
1061 | #ifdef __cplusplus | 1326 | #ifdef __cplusplus |
1062 | } | 1327 | } |