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