00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 #ifndef HEADER_ENVELOPE_H
00060 #define HEADER_ENVELOPE_H
00061
00062 #ifdef OPENSSL_ALGORITHM_DEFINES
00063 # include <openssl/opensslconf.h>
00064 #else
00065 # define OPENSSL_ALGORITHM_DEFINES
00066 # include <openssl/opensslconf.h>
00067 # undef OPENSSL_ALGORITHM_DEFINES
00068 #endif
00069
00070 #include <openssl/ossl_typ.h>
00071
00072 #include <openssl/symhacks.h>
00073
00074 #ifndef OPENSSL_NO_BIO
00075 #include <openssl/bio.h>
00076 #endif
00077
00078
00079
00080
00081
00082
00083
00084
00085 #define EVP_MAX_MD_SIZE 64
00086 #define EVP_MAX_KEY_LENGTH 32
00087 #define EVP_MAX_IV_LENGTH 16
00088 #define EVP_MAX_BLOCK_LENGTH 32
00089
00090 #define PKCS5_SALT_LEN 8
00091
00092 #define PKCS5_DEFAULT_ITER 2048
00093
00094 #include <openssl/objects.h>
00095
00096 #define EVP_PK_RSA 0x0001
00097 #define EVP_PK_DSA 0x0002
00098 #define EVP_PK_DH 0x0004
00099 #define EVP_PK_EC 0x0008
00100 #define EVP_PKT_SIGN 0x0010
00101 #define EVP_PKT_ENC 0x0020
00102 #define EVP_PKT_EXCH 0x0040
00103 #define EVP_PKS_RSA 0x0100
00104 #define EVP_PKS_DSA 0x0200
00105 #define EVP_PKS_EC 0x0400
00106 #define EVP_PKT_EXP 0x1000
00107
00108 #define EVP_PKEY_NONE NID_undef
00109 #define EVP_PKEY_RSA NID_rsaEncryption
00110 #define EVP_PKEY_RSA2 NID_rsa
00111 #define EVP_PKEY_DSA NID_dsa
00112 #define EVP_PKEY_DSA1 NID_dsa_2
00113 #define EVP_PKEY_DSA2 NID_dsaWithSHA
00114 #define EVP_PKEY_DSA3 NID_dsaWithSHA1
00115 #define EVP_PKEY_DSA4 NID_dsaWithSHA1_2
00116 #define EVP_PKEY_DH NID_dhKeyAgreement
00117 #define EVP_PKEY_EC NID_X9_62_id_ecPublicKey
00118
00119 #ifdef __cplusplus
00120 extern "C" {
00121 #endif
00122
00123
00124
00125
00126 struct evp_pkey_st
00127 {
00128 int type;
00129 int save_type;
00130 int references;
00131 union {
00132 char *ptr;
00133 #ifndef OPENSSL_NO_RSA
00134 struct rsa_st *rsa;
00135 #endif
00136 #ifndef OPENSSL_NO_DSA
00137 struct dsa_st *dsa;
00138 #endif
00139 #ifndef OPENSSL_NO_DH
00140 struct dh_st *dh;
00141 #endif
00142 #ifndef OPENSSL_NO_EC
00143 struct ec_key_st *ec;
00144 #endif
00145 } pkey;
00146 int save_parameters;
00147 STACK_OF(X509_ATTRIBUTE) *attributes;
00148 } ;
00149
00150 #define EVP_PKEY_MO_SIGN 0x0001
00151 #define EVP_PKEY_MO_VERIFY 0x0002
00152 #define EVP_PKEY_MO_ENCRYPT 0x0004
00153 #define EVP_PKEY_MO_DECRYPT 0x0008
00154
00155 #if 0
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166 typedef struct evp_pkey_md_st
00167 {
00168 int oid;
00169 EVP_MD *md;
00170 EVP_PKEY_METHOD *pkey;
00171 } EVP_PKEY_MD;
00172
00173 #define EVP_rsa_md2() \
00174 EVP_PKEY_MD_add(NID_md2WithRSAEncryption,\
00175 EVP_rsa_pkcs1(),EVP_md2())
00176 #define EVP_rsa_md5() \
00177 EVP_PKEY_MD_add(NID_md5WithRSAEncryption,\
00178 EVP_rsa_pkcs1(),EVP_md5())
00179 #define EVP_rsa_sha0() \
00180 EVP_PKEY_MD_add(NID_shaWithRSAEncryption,\
00181 EVP_rsa_pkcs1(),EVP_sha())
00182 #define EVP_rsa_sha1() \
00183 EVP_PKEY_MD_add(NID_sha1WithRSAEncryption,\
00184 EVP_rsa_pkcs1(),EVP_sha1())
00185 #define EVP_rsa_ripemd160() \
00186 EVP_PKEY_MD_add(NID_ripemd160WithRSA,\
00187 EVP_rsa_pkcs1(),EVP_ripemd160())
00188 #define EVP_rsa_mdc2() \
00189 EVP_PKEY_MD_add(NID_mdc2WithRSA,\
00190 EVP_rsa_octet_string(),EVP_mdc2())
00191 #define EVP_dsa_sha() \
00192 EVP_PKEY_MD_add(NID_dsaWithSHA,\
00193 EVP_dsa(),EVP_sha())
00194 #define EVP_dsa_sha1() \
00195 EVP_PKEY_MD_add(NID_dsaWithSHA1,\
00196 EVP_dsa(),EVP_sha1())
00197
00198 typedef struct evp_pkey_method_st
00199 {
00200 char *name;
00201 int flags;
00202 int type;
00203 int oid;
00204 int encrypt_oid;
00205
00206 int (*sign)();
00207 int (*verify)();
00208 struct {
00209 int (*set)();
00210 int (*get)();
00211 int (*encrypt)();
00212 int (*decrypt)();
00213 int (*i2d)();
00214 int (*d2i)();
00215 int (*dup)();
00216 } pub,priv;
00217 int (*set_asn1_parameters)();
00218 int (*get_asn1_parameters)();
00219 } EVP_PKEY_METHOD;
00220 #endif
00221
00222 #ifndef EVP_MD
00223 struct env_md_st
00224 {
00225 int type;
00226 int pkey_type;
00227 int md_size;
00228 unsigned long flags;
00229 int (*init)(EVP_MD_CTX *ctx);
00230 int (*update)(EVP_MD_CTX *ctx,const void *data,size_t count);
00231 int (*final)(EVP_MD_CTX *ctx,unsigned char *md);
00232 int (*copy)(EVP_MD_CTX *to,const EVP_MD_CTX *from);
00233 int (*cleanup)(EVP_MD_CTX *ctx);
00234
00235
00236 int (*sign)(int type, const unsigned char *m, unsigned int m_length,
00237 unsigned char *sigret, unsigned int *siglen, void *key);
00238 int (*verify)(int type, const unsigned char *m, unsigned int m_length,
00239 const unsigned char *sigbuf, unsigned int siglen,
00240 void *key);
00241 int required_pkey_type[5];
00242 int block_size;
00243 int ctx_size;
00244 } ;
00245
00246 typedef int evp_sign_method(int type,const unsigned char *m,
00247 unsigned int m_length,unsigned char *sigret,
00248 unsigned int *siglen, void *key);
00249 typedef int evp_verify_method(int type,const unsigned char *m,
00250 unsigned int m_length,const unsigned char *sigbuf,
00251 unsigned int siglen, void *key);
00252
00253 #define EVP_MD_FLAG_ONESHOT 0x0001
00254
00255
00256 #define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0}
00257
00258 #ifndef OPENSSL_NO_DSA
00259 #define EVP_PKEY_DSA_method (evp_sign_method *)DSA_sign, \
00260 (evp_verify_method *)DSA_verify, \
00261 {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3, \
00262 EVP_PKEY_DSA4,0}
00263 #else
00264 #define EVP_PKEY_DSA_method EVP_PKEY_NULL_method
00265 #endif
00266
00267 #ifndef OPENSSL_NO_ECDSA
00268 #define EVP_PKEY_ECDSA_method (evp_sign_method *)ECDSA_sign, \
00269 (evp_verify_method *)ECDSA_verify, \
00270 {EVP_PKEY_EC,0,0,0}
00271 #else
00272 #define EVP_PKEY_ECDSA_method EVP_PKEY_NULL_method
00273 #endif
00274
00275 #ifndef OPENSSL_NO_RSA
00276 #define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \
00277 (evp_verify_method *)RSA_verify, \
00278 {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0}
00279 #define EVP_PKEY_RSA_ASN1_OCTET_STRING_method \
00280 (evp_sign_method *)RSA_sign_ASN1_OCTET_STRING, \
00281 (evp_verify_method *)RSA_verify_ASN1_OCTET_STRING, \
00282 {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0}
00283 #else
00284 #define EVP_PKEY_RSA_method EVP_PKEY_NULL_method
00285 #define EVP_PKEY_RSA_ASN1_OCTET_STRING_method EVP_PKEY_NULL_method
00286 #endif
00287
00288 #endif
00289
00290 struct env_md_ctx_st
00291 {
00292 const EVP_MD *digest;
00293 ENGINE *engine;
00294 unsigned long flags;
00295 void *md_data;
00296 } ;
00297
00298
00299
00300 #define EVP_MD_CTX_FLAG_ONESHOT 0x0001
00301
00302 #define EVP_MD_CTX_FLAG_CLEANED 0x0002
00303
00304 #define EVP_MD_CTX_FLAG_REUSE 0x0004
00305
00306
00307 struct evp_cipher_st
00308 {
00309 int nid;
00310 int block_size;
00311 int key_len;
00312 int iv_len;
00313 unsigned long flags;
00314 int (*init)(EVP_CIPHER_CTX *ctx, const unsigned char *key,
00315 const unsigned char *iv, int enc);
00316 int (*do_cipher)(EVP_CIPHER_CTX *ctx, unsigned char *out,
00317 const unsigned char *in, unsigned int inl);
00318 int (*cleanup)(EVP_CIPHER_CTX *);
00319 int ctx_size;
00320 int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *);
00321 int (*get_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *);
00322 int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr);
00323 void *app_data;
00324 } ;
00325
00326
00327
00328
00329
00330 #define EVP_CIPH_STREAM_CIPHER 0x0
00331 #define EVP_CIPH_ECB_MODE 0x1
00332 #define EVP_CIPH_CBC_MODE 0x2
00333 #define EVP_CIPH_CFB_MODE 0x3
00334 #define EVP_CIPH_OFB_MODE 0x4
00335 #define EVP_CIPH_MODE 0x7
00336
00337 #define EVP_CIPH_VARIABLE_LENGTH 0x8
00338
00339 #define EVP_CIPH_CUSTOM_IV 0x10
00340
00341 #define EVP_CIPH_ALWAYS_CALL_INIT 0x20
00342
00343 #define EVP_CIPH_CTRL_INIT 0x40
00344
00345 #define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80
00346
00347 #define EVP_CIPH_NO_PADDING 0x100
00348
00349 #define EVP_CIPH_RAND_KEY 0x200
00350
00351
00352
00353 #define EVP_CTRL_INIT 0x0
00354 #define EVP_CTRL_SET_KEY_LENGTH 0x1
00355 #define EVP_CTRL_GET_RC2_KEY_BITS 0x2
00356 #define EVP_CTRL_SET_RC2_KEY_BITS 0x3
00357 #define EVP_CTRL_GET_RC5_ROUNDS 0x4
00358 #define EVP_CTRL_SET_RC5_ROUNDS 0x5
00359 #define EVP_CTRL_RAND_KEY 0x6
00360
00361 typedef struct evp_cipher_info_st
00362 {
00363 const EVP_CIPHER *cipher;
00364 unsigned char iv[EVP_MAX_IV_LENGTH];
00365 } EVP_CIPHER_INFO;
00366
00367 struct evp_cipher_ctx_st
00368 {
00369 const EVP_CIPHER *cipher;
00370 ENGINE *engine;
00371 int encrypt;
00372 int buf_len;
00373
00374 unsigned char oiv[EVP_MAX_IV_LENGTH];
00375 unsigned char iv[EVP_MAX_IV_LENGTH];
00376 unsigned char buf[EVP_MAX_BLOCK_LENGTH];
00377 int num;
00378
00379 void *app_data;
00380 int key_len;
00381 unsigned long flags;
00382 void *cipher_data;
00383 int final_used;
00384 int block_mask;
00385 unsigned char final[EVP_MAX_BLOCK_LENGTH];
00386 } ;
00387
00388 typedef struct evp_Encode_Ctx_st
00389 {
00390 int num;
00391 int length;
00392
00393
00394
00395
00396 unsigned char enc_data[80];
00397 int line_num;
00398 int expect_nl;
00399 } EVP_ENCODE_CTX;
00400
00401
00402 typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
00403 ASN1_TYPE *param, const EVP_CIPHER *cipher,
00404 const EVP_MD *md, int en_de);
00405
00406 #ifndef OPENSSL_NO_RSA
00407 #define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
00408 (char *)(rsa))
00409 #endif
00410
00411 #ifndef OPENSSL_NO_DSA
00412 #define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
00413 (char *)(dsa))
00414 #endif
00415
00416 #ifndef OPENSSL_NO_DH
00417 #define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\
00418 (char *)(dh))
00419 #endif
00420
00421 #ifndef OPENSSL_NO_EC
00422 #define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\
00423 (char *)(eckey))
00424 #endif
00425
00426
00427 #define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))
00428 #define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))
00429 #define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))
00430 #define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
00431
00432 int EVP_MD_type(const EVP_MD *md);
00433 #define EVP_MD_nid(e) EVP_MD_type(e)
00434 #define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e))
00435 int EVP_MD_pkey_type(const EVP_MD *md);
00436 int EVP_MD_size(const EVP_MD *md);
00437 int EVP_MD_block_size(const EVP_MD *md);
00438
00439 const EVP_MD * EVP_MD_CTX_md(const EVP_MD_CTX *ctx);
00440 #define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e))
00441 #define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e))
00442 #define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e))
00443
00444 int EVP_CIPHER_nid(const EVP_CIPHER *cipher);
00445 #define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e))
00446 int EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
00447 int EVP_CIPHER_key_length(const EVP_CIPHER *cipher);
00448 int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher);
00449 unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher);
00450 #define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE)
00451
00452 const EVP_CIPHER * EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx);
00453 int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx);
00454 int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx);
00455 int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx);
00456 int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx);
00457 void * EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
00458 void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data);
00459 #define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))
00460 unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx);
00461 #define EVP_CIPHER_CTX_mode(e) (EVP_CIPHER_CTX_flags(e) & EVP_CIPH_MODE)
00462
00463 #define EVP_ENCODE_LENGTH(l) (((l+2)/3*4)+(l/48+1)*2+80)
00464 #define EVP_DECODE_LENGTH(l) ((l+3)/4*3+80)
00465
00466 #define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
00467 #define EVP_SignInit(a,b) EVP_DigestInit(a,b)
00468 #define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
00469 #define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
00470 #define EVP_VerifyInit(a,b) EVP_DigestInit(a,b)
00471 #define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
00472 #define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e)
00473 #define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e)
00474
00475 #ifdef CONST_STRICT
00476 void BIO_set_md(BIO *,const EVP_MD *md);
00477 #else
00478 # define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)md)
00479 #endif
00480 #define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)mdp)
00481 #define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(char *)mdcp)
00482 #define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(char *)mdcp)
00483 #define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL)
00484 #define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(char *)c_pp)
00485
00486 int EVP_Cipher(EVP_CIPHER_CTX *c,
00487 unsigned char *out,
00488 const unsigned char *in,
00489 unsigned int inl);
00490
00491 #define EVP_add_cipher_alias(n,alias) \
00492 OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n))
00493 #define EVP_add_digest_alias(n,alias) \
00494 OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n))
00495 #define EVP_delete_cipher_alias(alias) \
00496 OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS);
00497 #define EVP_delete_digest_alias(alias) \
00498 OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS);
00499
00500 void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
00501 int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
00502 EVP_MD_CTX *EVP_MD_CTX_create(void);
00503 void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
00504 int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out,const EVP_MD_CTX *in);
00505 void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags);
00506 void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags);
00507 int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx,int flags);
00508 int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
00509 int EVP_DigestUpdate(EVP_MD_CTX *ctx,const void *d,
00510 size_t cnt);
00511 int EVP_DigestFinal_ex(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s);
00512 int EVP_Digest(const void *data, size_t count,
00513 unsigned char *md, unsigned int *size, const EVP_MD *type, ENGINE *impl);
00514
00515 int EVP_MD_CTX_copy(EVP_MD_CTX *out,const EVP_MD_CTX *in);
00516 int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
00517 int EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s);
00518
00519 int EVP_read_pw_string(char *buf,int length,const char *prompt,int verify);
00520 void EVP_set_pw_prompt(const char *prompt);
00521 char * EVP_get_pw_prompt(void);
00522
00523 int EVP_BytesToKey(const EVP_CIPHER *type,const EVP_MD *md,
00524 const unsigned char *salt, const unsigned char *data,
00525 int datal, int count, unsigned char *key,unsigned char *iv);
00526
00527 int EVP_EncryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher,
00528 const unsigned char *key, const unsigned char *iv);
00529 int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl,
00530 const unsigned char *key, const unsigned char *iv);
00531 int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
00532 int *outl, const unsigned char *in, int inl);
00533 int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
00534 int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
00535
00536 int EVP_DecryptInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher,
00537 const unsigned char *key, const unsigned char *iv);
00538 int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl,
00539 const unsigned char *key, const unsigned char *iv);
00540 int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
00541 int *outl, const unsigned char *in, int inl);
00542 int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
00543 int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
00544
00545 int EVP_CipherInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher,
00546 const unsigned char *key,const unsigned char *iv,
00547 int enc);
00548 int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl,
00549 const unsigned char *key,const unsigned char *iv,
00550 int enc);
00551 int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
00552 int *outl, const unsigned char *in, int inl);
00553 int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
00554 int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
00555
00556 int EVP_SignFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s,
00557 EVP_PKEY *pkey);
00558
00559 int EVP_VerifyFinal(EVP_MD_CTX *ctx,const unsigned char *sigbuf,
00560 unsigned int siglen,EVP_PKEY *pkey);
00561
00562 int EVP_OpenInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type,
00563 const unsigned char *ek, int ekl, const unsigned char *iv,
00564 EVP_PKEY *priv);
00565 int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
00566
00567 int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
00568 unsigned char **ek, int *ekl, unsigned char *iv,
00569 EVP_PKEY **pubk, int npubk);
00570 int EVP_SealFinal(EVP_CIPHER_CTX *ctx,unsigned char *out,int *outl);
00571
00572 void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
00573 void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl,
00574 const unsigned char *in,int inl);
00575 void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl);
00576 int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
00577
00578 void EVP_DecodeInit(EVP_ENCODE_CTX *ctx);
00579 int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl,
00580 const unsigned char *in, int inl);
00581 int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned
00582 char *out, int *outl);
00583 int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
00584
00585 void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
00586 int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
00587 EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
00588 void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a);
00589 int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
00590 int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad);
00591 int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
00592 int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key);
00593
00594 #ifndef OPENSSL_NO_BIO
00595 BIO_METHOD *BIO_f_md(void);
00596 BIO_METHOD *BIO_f_base64(void);
00597 BIO_METHOD *BIO_f_cipher(void);
00598 BIO_METHOD *BIO_f_reliable(void);
00599 void BIO_set_cipher(BIO *b,const EVP_CIPHER *c,const unsigned char *k,
00600 const unsigned char *i, int enc);
00601 #endif
00602
00603 const EVP_MD *EVP_md_null(void);
00604 #ifndef OPENSSL_NO_MD2
00605 const EVP_MD *EVP_md2(void);
00606 #endif
00607 #ifndef OPENSSL_NO_MD4
00608 const EVP_MD *EVP_md4(void);
00609 #endif
00610 #ifndef OPENSSL_NO_MD5
00611 const EVP_MD *EVP_md5(void);
00612 #endif
00613 #ifndef OPENSSL_NO_SHA
00614 const EVP_MD *EVP_sha(void);
00615 const EVP_MD *EVP_sha1(void);
00616 const EVP_MD *EVP_dss(void);
00617 const EVP_MD *EVP_dss1(void);
00618 const EVP_MD *EVP_ecdsa(void);
00619 #endif
00620 #ifndef OPENSSL_NO_SHA256
00621 const EVP_MD *EVP_sha224(void);
00622 const EVP_MD *EVP_sha256(void);
00623 #endif
00624 #ifndef OPENSSL_NO_SHA512
00625 const EVP_MD *EVP_sha384(void);
00626 const EVP_MD *EVP_sha512(void);
00627 #endif
00628 #ifndef OPENSSL_NO_MDC2
00629 const EVP_MD *EVP_mdc2(void);
00630 #endif
00631 #ifndef OPENSSL_NO_RIPEMD
00632 const EVP_MD *EVP_ripemd160(void);
00633 #endif
00634 const EVP_CIPHER *EVP_enc_null(void);
00635 #ifndef OPENSSL_NO_DES
00636 const EVP_CIPHER *EVP_des_ecb(void);
00637 const EVP_CIPHER *EVP_des_ede(void);
00638 const EVP_CIPHER *EVP_des_ede3(void);
00639 const EVP_CIPHER *EVP_des_ede_ecb(void);
00640 const EVP_CIPHER *EVP_des_ede3_ecb(void);
00641 const EVP_CIPHER *EVP_des_cfb64(void);
00642 # define EVP_des_cfb EVP_des_cfb64
00643 const EVP_CIPHER *EVP_des_cfb1(void);
00644 const EVP_CIPHER *EVP_des_cfb8(void);
00645 const EVP_CIPHER *EVP_des_ede_cfb64(void);
00646 # define EVP_des_ede_cfb EVP_des_ede_cfb64
00647 #if 0
00648 const EVP_CIPHER *EVP_des_ede_cfb1(void);
00649 const EVP_CIPHER *EVP_des_ede_cfb8(void);
00650 #endif
00651 const EVP_CIPHER *EVP_des_ede3_cfb64(void);
00652 # define EVP_des_ede3_cfb EVP_des_ede3_cfb64
00653 const EVP_CIPHER *EVP_des_ede3_cfb1(void);
00654 const EVP_CIPHER *EVP_des_ede3_cfb8(void);
00655 const EVP_CIPHER *EVP_des_ofb(void);
00656 const EVP_CIPHER *EVP_des_ede_ofb(void);
00657 const EVP_CIPHER *EVP_des_ede3_ofb(void);
00658 const EVP_CIPHER *EVP_des_cbc(void);
00659 const EVP_CIPHER *EVP_des_ede_cbc(void);
00660 const EVP_CIPHER *EVP_des_ede3_cbc(void);
00661 const EVP_CIPHER *EVP_desx_cbc(void);
00662
00663
00664 #if 0
00665 # ifdef OPENSSL_OPENBSD_DEV_CRYPTO
00666 const EVP_CIPHER *EVP_dev_crypto_des_ede3_cbc(void);
00667 const EVP_CIPHER *EVP_dev_crypto_rc4(void);
00668 const EVP_MD *EVP_dev_crypto_md5(void);
00669 # endif
00670 #endif
00671 #endif
00672 #ifndef OPENSSL_NO_RC4
00673 const EVP_CIPHER *EVP_rc4(void);
00674 const EVP_CIPHER *EVP_rc4_40(void);
00675 #endif
00676 #ifndef OPENSSL_NO_IDEA
00677 const EVP_CIPHER *EVP_idea_ecb(void);
00678 const EVP_CIPHER *EVP_idea_cfb64(void);
00679 # define EVP_idea_cfb EVP_idea_cfb64
00680 const EVP_CIPHER *EVP_idea_ofb(void);
00681 const EVP_CIPHER *EVP_idea_cbc(void);
00682 #endif
00683 #ifndef OPENSSL_NO_RC2
00684 const EVP_CIPHER *EVP_rc2_ecb(void);
00685 const EVP_CIPHER *EVP_rc2_cbc(void);
00686 const EVP_CIPHER *EVP_rc2_40_cbc(void);
00687 const EVP_CIPHER *EVP_rc2_64_cbc(void);
00688 const EVP_CIPHER *EVP_rc2_cfb64(void);
00689 # define EVP_rc2_cfb EVP_rc2_cfb64
00690 const EVP_CIPHER *EVP_rc2_ofb(void);
00691 #endif
00692 #ifndef OPENSSL_NO_BF
00693 const EVP_CIPHER *EVP_bf_ecb(void);
00694 const EVP_CIPHER *EVP_bf_cbc(void);
00695 const EVP_CIPHER *EVP_bf_cfb64(void);
00696 # define EVP_bf_cfb EVP_bf_cfb64
00697 const EVP_CIPHER *EVP_bf_ofb(void);
00698 #endif
00699 #ifndef OPENSSL_NO_CAST
00700 const EVP_CIPHER *EVP_cast5_ecb(void);
00701 const EVP_CIPHER *EVP_cast5_cbc(void);
00702 const EVP_CIPHER *EVP_cast5_cfb64(void);
00703 # define EVP_cast5_cfb EVP_cast5_cfb64
00704 const EVP_CIPHER *EVP_cast5_ofb(void);
00705 #endif
00706 #ifndef OPENSSL_NO_RC5
00707 const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void);
00708 const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void);
00709 const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void);
00710 # define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64
00711 const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void);
00712 #endif
00713 #ifndef OPENSSL_NO_AES
00714 const EVP_CIPHER *EVP_aes_128_ecb(void);
00715 const EVP_CIPHER *EVP_aes_128_cbc(void);
00716 const EVP_CIPHER *EVP_aes_128_cfb1(void);
00717 const EVP_CIPHER *EVP_aes_128_cfb8(void);
00718 const EVP_CIPHER *EVP_aes_128_cfb128(void);
00719 # define EVP_aes_128_cfb EVP_aes_128_cfb128
00720 const EVP_CIPHER *EVP_aes_128_ofb(void);
00721 #if 0
00722 const EVP_CIPHER *EVP_aes_128_ctr(void);
00723 #endif
00724 const EVP_CIPHER *EVP_aes_192_ecb(void);
00725 const EVP_CIPHER *EVP_aes_192_cbc(void);
00726 const EVP_CIPHER *EVP_aes_192_cfb1(void);
00727 const EVP_CIPHER *EVP_aes_192_cfb8(void);
00728 const EVP_CIPHER *EVP_aes_192_cfb128(void);
00729 # define EVP_aes_192_cfb EVP_aes_192_cfb128
00730 const EVP_CIPHER *EVP_aes_192_ofb(void);
00731 #if 0
00732 const EVP_CIPHER *EVP_aes_192_ctr(void);
00733 #endif
00734 const EVP_CIPHER *EVP_aes_256_ecb(void);
00735 const EVP_CIPHER *EVP_aes_256_cbc(void);
00736 const EVP_CIPHER *EVP_aes_256_cfb1(void);
00737 const EVP_CIPHER *EVP_aes_256_cfb8(void);
00738 const EVP_CIPHER *EVP_aes_256_cfb128(void);
00739 # define EVP_aes_256_cfb EVP_aes_256_cfb128
00740 const EVP_CIPHER *EVP_aes_256_ofb(void);
00741 #if 0
00742 const EVP_CIPHER *EVP_aes_256_ctr(void);
00743 #endif
00744 #endif
00745 #ifndef OPENSSL_NO_CAMELLIA
00746 const EVP_CIPHER *EVP_camellia_128_ecb(void);
00747 const EVP_CIPHER *EVP_camellia_128_cbc(void);
00748 const EVP_CIPHER *EVP_camellia_128_cfb1(void);
00749 const EVP_CIPHER *EVP_camellia_128_cfb8(void);
00750 const EVP_CIPHER *EVP_camellia_128_cfb128(void);
00751 # define EVP_camellia_128_cfb EVP_camellia_128_cfb128
00752 const EVP_CIPHER *EVP_camellia_128_ofb(void);
00753 const EVP_CIPHER *EVP_camellia_192_ecb(void);
00754 const EVP_CIPHER *EVP_camellia_192_cbc(void);
00755 const EVP_CIPHER *EVP_camellia_192_cfb1(void);
00756 const EVP_CIPHER *EVP_camellia_192_cfb8(void);
00757 const EVP_CIPHER *EVP_camellia_192_cfb128(void);
00758 # define EVP_camellia_192_cfb EVP_camellia_192_cfb128
00759 const EVP_CIPHER *EVP_camellia_192_ofb(void);
00760 const EVP_CIPHER *EVP_camellia_256_ecb(void);
00761 const EVP_CIPHER *EVP_camellia_256_cbc(void);
00762 const EVP_CIPHER *EVP_camellia_256_cfb1(void);
00763 const EVP_CIPHER *EVP_camellia_256_cfb8(void);
00764 const EVP_CIPHER *EVP_camellia_256_cfb128(void);
00765 # define EVP_camellia_256_cfb EVP_camellia_256_cfb128
00766 const EVP_CIPHER *EVP_camellia_256_ofb(void);
00767 #endif
00768
00769 void OPENSSL_add_all_algorithms_noconf(void);
00770 void OPENSSL_add_all_algorithms_conf(void);
00771
00772 #ifdef OPENSSL_LOAD_CONF
00773 #define OpenSSL_add_all_algorithms() \
00774 OPENSSL_add_all_algorithms_conf()
00775 #else
00776 #define OpenSSL_add_all_algorithms() \
00777 OPENSSL_add_all_algorithms_noconf()
00778 #endif
00779
00780 void OpenSSL_add_all_ciphers(void);
00781 void OpenSSL_add_all_digests(void);
00782 #define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms()
00783 #define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers()
00784 #define SSLeay_add_all_digests() OpenSSL_add_all_digests()
00785
00786 int EVP_add_cipher(const EVP_CIPHER *cipher);
00787 int EVP_add_digest(const EVP_MD *digest);
00788
00789 const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
00790 const EVP_MD *EVP_get_digestbyname(const char *name);
00791 void EVP_cleanup(void);
00792
00793 int EVP_PKEY_decrypt(unsigned char *dec_key,
00794 const unsigned char *enc_key,int enc_key_len,
00795 EVP_PKEY *private_key);
00796 int EVP_PKEY_encrypt(unsigned char *enc_key,
00797 const unsigned char *key,int key_len,
00798 EVP_PKEY *pub_key);
00799 int EVP_PKEY_type(int type);
00800 int EVP_PKEY_bits(EVP_PKEY *pkey);
00801 int EVP_PKEY_size(EVP_PKEY *pkey);
00802 int EVP_PKEY_assign(EVP_PKEY *pkey,int type,char *key);
00803
00804 #ifndef OPENSSL_NO_RSA
00805 struct rsa_st;
00806 int EVP_PKEY_set1_RSA(EVP_PKEY *pkey,struct rsa_st *key);
00807 struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
00808 #endif
00809 #ifndef OPENSSL_NO_DSA
00810 struct dsa_st;
00811 int EVP_PKEY_set1_DSA(EVP_PKEY *pkey,struct dsa_st *key);
00812 struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
00813 #endif
00814 #ifndef OPENSSL_NO_DH
00815 struct dh_st;
00816 int EVP_PKEY_set1_DH(EVP_PKEY *pkey,struct dh_st *key);
00817 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey);
00818 #endif
00819 #ifndef OPENSSL_NO_EC
00820 struct ec_key_st;
00821 int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey,struct ec_key_st *key);
00822 struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
00823 #endif
00824
00825 EVP_PKEY * EVP_PKEY_new(void);
00826 void EVP_PKEY_free(EVP_PKEY *pkey);
00827
00828 EVP_PKEY * d2i_PublicKey(int type,EVP_PKEY **a, const unsigned char **pp,
00829 long length);
00830 int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp);
00831
00832 EVP_PKEY * d2i_PrivateKey(int type,EVP_PKEY **a, const unsigned char **pp,
00833 long length);
00834 EVP_PKEY * d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
00835 long length);
00836 int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp);
00837
00838 int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from);
00839 int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey);
00840 int EVP_PKEY_save_parameters(EVP_PKEY *pkey,int mode);
00841 int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b);
00842
00843 int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
00844
00845 int EVP_CIPHER_type(const EVP_CIPHER *ctx);
00846
00847
00848 int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
00849 int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
00850
00851
00852 int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c,ASN1_TYPE *type);
00853 int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c,ASN1_TYPE *type);
00854
00855
00856 int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
00857 ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md,
00858 int en_de);
00859 int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
00860 const unsigned char *salt, int saltlen, int iter,
00861 int keylen, unsigned char *out);
00862 int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
00863 ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md,
00864 int en_de);
00865
00866 void PKCS5_PBE_add(void);
00867
00868 int EVP_PBE_CipherInit (ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
00869 ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de);
00870 int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md,
00871 EVP_PBE_KEYGEN *keygen);
00872 void EVP_PBE_cleanup(void);
00873
00874
00875
00876
00877
00878 void ERR_load_EVP_strings(void);
00879
00880
00881
00882
00883 #define EVP_F_AES_INIT_KEY 133
00884 #define EVP_F_CAMELLIA_INIT_KEY 159
00885 #define EVP_F_D2I_PKEY 100
00886 #define EVP_F_DSAPKEY2PKCS8 134
00887 #define EVP_F_DSA_PKEY2PKCS8 135
00888 #define EVP_F_ECDSA_PKEY2PKCS8 129
00889 #define EVP_F_ECKEY_PKEY2PKCS8 132
00890 #define EVP_F_EVP_CIPHERINIT_EX 123
00891 #define EVP_F_EVP_CIPHER_CTX_CTRL 124
00892 #define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122
00893 #define EVP_F_EVP_DECRYPTFINAL_EX 101
00894 #define EVP_F_EVP_DIGESTINIT_EX 128
00895 #define EVP_F_EVP_ENCRYPTFINAL_EX 127
00896 #define EVP_F_EVP_MD_CTX_COPY_EX 110
00897 #define EVP_F_EVP_OPENINIT 102
00898 #define EVP_F_EVP_PBE_ALG_ADD 115
00899 #define EVP_F_EVP_PBE_CIPHERINIT 116
00900 #define EVP_F_EVP_PKCS82PKEY 111
00901 #define EVP_F_EVP_PKEY2PKCS8_BROKEN 113
00902 #define EVP_F_EVP_PKEY_COPY_PARAMETERS 103
00903 #define EVP_F_EVP_PKEY_DECRYPT 104
00904 #define EVP_F_EVP_PKEY_ENCRYPT 105
00905 #define EVP_F_EVP_PKEY_GET1_DH 119
00906 #define EVP_F_EVP_PKEY_GET1_DSA 120
00907 #define EVP_F_EVP_PKEY_GET1_ECDSA 130
00908 #define EVP_F_EVP_PKEY_GET1_EC_KEY 131
00909 #define EVP_F_EVP_PKEY_GET1_RSA 121
00910 #define EVP_F_EVP_PKEY_NEW 106
00911 #define EVP_F_EVP_RIJNDAEL 126
00912 #define EVP_F_EVP_SIGNFINAL 107
00913 #define EVP_F_EVP_VERIFYFINAL 108
00914 #define EVP_F_PKCS5_PBE_KEYIVGEN 117
00915 #define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118
00916 #define EVP_F_PKCS8_SET_BROKEN 112
00917 #define EVP_F_RC2_MAGIC_TO_METH 109
00918 #define EVP_F_RC5_CTRL 125
00919
00920
00921 #define EVP_R_AES_KEY_SETUP_FAILED 143
00922 #define EVP_R_ASN1_LIB 140
00923 #define EVP_R_BAD_BLOCK_LENGTH 136
00924 #define EVP_R_BAD_DECRYPT 100
00925 #define EVP_R_BAD_KEY_LENGTH 137
00926 #define EVP_R_BN_DECODE_ERROR 112
00927 #define EVP_R_BN_PUBKEY_ERROR 113
00928 #define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157
00929 #define EVP_R_CIPHER_PARAMETER_ERROR 122
00930 #define EVP_R_CTRL_NOT_IMPLEMENTED 132
00931 #define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133
00932 #define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138
00933 #define EVP_R_DECODE_ERROR 114
00934 #define EVP_R_DIFFERENT_KEY_TYPES 101
00935 #define EVP_R_ENCODE_ERROR 115
00936 #define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119
00937 #define EVP_R_EXPECTING_AN_RSA_KEY 127
00938 #define EVP_R_EXPECTING_A_DH_KEY 128
00939 #define EVP_R_EXPECTING_A_DSA_KEY 129
00940 #define EVP_R_EXPECTING_A_ECDSA_KEY 141
00941 #define EVP_R_EXPECTING_A_EC_KEY 142
00942 #define EVP_R_INITIALIZATION_ERROR 134
00943 #define EVP_R_INPUT_NOT_INITIALIZED 111
00944 #define EVP_R_INVALID_KEY_LENGTH 130
00945 #define EVP_R_IV_TOO_LARGE 102
00946 #define EVP_R_KEYGEN_FAILURE 120
00947 #define EVP_R_MISSING_PARAMETERS 103
00948 #define EVP_R_NO_CIPHER_SET 131
00949 #define EVP_R_NO_DIGEST_SET 139
00950 #define EVP_R_NO_DSA_PARAMETERS 116
00951 #define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104
00952 #define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105
00953 #define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117
00954 #define EVP_R_PUBLIC_KEY_NOT_RSA 106
00955 #define EVP_R_UNKNOWN_PBE_ALGORITHM 121
00956 #define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135
00957 #define EVP_R_UNSUPPORTED_CIPHER 107
00958 #define EVP_R_UNSUPPORTED_KEYLENGTH 123
00959 #define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124
00960 #define EVP_R_UNSUPPORTED_KEY_SIZE 108
00961 #define EVP_R_UNSUPPORTED_PRF 125
00962 #define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118
00963 #define EVP_R_UNSUPPORTED_SALT_TYPE 126
00964 #define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109
00965 #define EVP_R_WRONG_PUBLIC_KEY_TYPE 110
00966
00967 #ifdef __cplusplus
00968 }
00969 #endif
00970 #endif