Rename SSLeay_add_all_algorithms() et al to
[openssl.git] / crypto / evp / evp.h
index b8d645e129e742baf103b7c3a3db9ad45ed94312..bc99e8757841f41e1891fc3b94ae221ee17f38ae 100644 (file)
@@ -64,40 +64,40 @@ extern "C" {
 #endif
 
 #ifndef NO_MD2
-#include "md2.h"
+#include <openssl/md2.h>
 #endif
 #ifndef NO_MD5
-#include "md5.h"
+#include <openssl/md5.h>
 #endif
-#if !defined(NO_SHA) || !defined(NO_SHA1)
-#include "sha.h"
+#ifndef NO_SHA
+#include <openssl/sha.h>
 #endif
-#ifndef NO_RMD160
-#include "ripemd.h"
+#ifndef NO_RIPEMD
+#include <openssl/ripemd.h>
 #endif
 #ifndef NO_DES
-#include "des.h"
+#include <openssl/des.h>
 #endif
 #ifndef NO_RC4
-#include "rc4.h"
+#include <openssl/rc4.h>
 #endif
 #ifndef NO_RC2
-#include "rc2.h"
+#include <openssl/rc2.h>
 #endif
 #ifndef NO_RC5
-#include "rc5.h"
+#include <openssl/rc5.h>
 #endif
-#ifndef NO_BLOWFISH
-#include "blowfish.h"
+#ifndef NO_BF
+#include <openssl/blowfish.h>
 #endif
 #ifndef NO_CAST
-#include "cast.h"
+#include <openssl/cast.h>
 #endif
 #ifndef NO_IDEA
-#include "idea.h"
+#include <openssl/idea.h>
 #endif
 #ifndef NO_MDC2
-#include "mdc2.h"
+#include <openssl/mdc2.h>
 #endif
 
 #define EVP_RC2_KEY_SIZE               16
@@ -109,25 +109,23 @@ extern "C" {
 #define EVP_MAX_KEY_LENGTH             24
 #define EVP_MAX_IV_LENGTH              8
 
+#define PKCS5_SALT_LEN                 8
+/* Default PKCS#5 iteration count */
+#define PKCS5_DEFAULT_ITER             2048
+
 #ifndef NO_RSA
-#include "rsa.h"
-#else
-#define RSA    long
+#include <openssl/rsa.h>
 #endif
 
 #ifndef NO_DSA
-#include "dsa.h"
-#else
-#define DSA    long
+#include <openssl/dsa.h>
 #endif
 
 #ifndef NO_DH
-#include "dh.h"
-#else
-#define DH     long
+#include <openssl/dh.h>
 #endif
 
-#include "objects.h"
+#include <openssl/objects.h>
 
 #define EVP_PK_RSA     0x0001
 #define EVP_PK_DSA     0x0002
@@ -151,7 +149,7 @@ extern "C" {
 
 /* Type needs to be a bit field
  * Sub-type needs to be for variations on the method, as in, can it do
- * arbitary encryption.... */
+ * arbitrary encryption.... */
 typedef struct evp_pkey_st
        {
        int type;
@@ -159,9 +157,15 @@ typedef struct evp_pkey_st
        int references;
        union   {
                char *ptr;
+#ifndef NO_RSA
                struct rsa_st *rsa;     /* RSA */
+#endif
+#ifndef NO_DSA
                struct dsa_st *dsa;     /* DSA */
+#endif
+#ifndef NO_DH
                struct dh_st *dh;       /* DH */
+#endif
                } pkey;
        int save_parameters;
        STACK /*X509_ATTRIBUTE*/ *attributes; /* [ 0 ] */
@@ -294,10 +298,10 @@ typedef struct env_md_ctx_st
 #ifndef NO_MD5
                MD5_CTX md5;
 #endif
-#ifndef NO_RMD160
+#ifndef NO_RIPEMD
                RIPEMD160_CTX ripemd160;
 #endif
-#if !defined(NO_SHA) || !defined(NO_SHA1)
+#ifndef NO_SHA
                SHA_CTX sha;
 #endif
 #ifndef NO_MDC2
@@ -339,7 +343,7 @@ typedef struct evp_cipher_ctx_st
        unsigned char buf[EVP_MAX_IV_LENGTH];   /* saved partial block */
        int num;                                /* used by cfb/ofb mode */
 
-       char *app_data;         /* aplication stuff */
+       char *app_data;         /* application stuff */
        union   {
 #ifndef NO_RC4
                struct
@@ -353,8 +357,8 @@ typedef struct evp_cipher_ctx_st
                struct
                        {
                        des_key_schedule ks;/* key schedule */
-                       C_Block inw;
-                       C_Block outw;
+                       des_cblock inw;
+                       des_cblock outw;
                        } desx_cbc;
                struct
                        {
@@ -372,7 +376,7 @@ typedef struct evp_cipher_ctx_st
 #ifndef NO_RC5
                RC5_32_KEY rc5_ks;/* key schedule */
 #endif
-#ifndef NO_BLOWFISH
+#ifndef NO_BF
                BF_KEY bf_ks;/* key schedule */
 #endif
 #ifndef NO_CAST
@@ -395,9 +399,9 @@ typedef struct evp_Encode_Ctx_st
        } EVP_ENCODE_CTX;
 
 /* Password based encryption function */
-typedef int (EVP_PBE_KEYGEN)(const char *pass, int passlen,
-         unsigned char *salt,  int saltlen, int iter, EVP_CIPHER *cipher,
-                EVP_MD *md, unsigned char *key, unsigned char *iv);
+typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
+               ASN1_TYPE *param, EVP_CIPHER *cipher,
+                EVP_MD *md, int en_de);
 
 #define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
                                        (char *)(rsa))
@@ -433,6 +437,7 @@ typedef int (EVP_PBE_KEYGEN)(const char *pass, int passlen,
 #define EVP_CIPHER_CTX_iv_length(e)    ((e)->cipher->iv_len)
 #define EVP_CIPHER_CTX_get_app_data(e) ((e)->app_data)
 #define EVP_CIPHER_CTX_set_app_data(e,d) ((e)->app_data=(char *)(d))
+#define EVP_CIPHER_CTX_type(c)         EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))
 
 #define EVP_ENCODE_LENGTH(l)   (((l+2)/3*4)+(l/48+1)*2+80)
 #define EVP_DECODE_LENGTH(l)   ((l+3)/4*3+80)
@@ -465,11 +470,10 @@ void BIO_set_md(BIO *,const EVP_MD *md);
 #define EVP_delete_digest_alias(alias) \
        OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS);
 
-#ifndef NOPROTO
 
 int     EVP_MD_CTX_copy(EVP_MD_CTX *out,EVP_MD_CTX *in);  
 void   EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
-void   EVP_DigestUpdate(EVP_MD_CTX *ctx,const unsigned char *d,
+void   EVP_DigestUpdate(EVP_MD_CTX *ctx,const void *d,
                         unsigned int cnt);
 void   EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s);
 
@@ -517,15 +521,14 @@ void      EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
 void   EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx,unsigned char *out,
                int *outl,unsigned char *in,int inl);
 void   EVP_EncodeFinal(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl);
-int    EVP_EncodeBlock(unsigned char *t, unsigned char *f, int n);
+int    EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
 
 void   EVP_DecodeInit(EVP_ENCODE_CTX *ctx);
 int    EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl,
                unsigned char *in, int inl);
 int    EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned
                char *out, int *outl);
-int    EVP_DecodeBlock(unsigned char *t, unsigned
-               char *f, int n);
+int    EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
 
 void   ERR_load_EVP_strings(void );
 
@@ -590,9 +593,12 @@ EVP_CIPHER *EVP_rc5_32_12_16_ecb(void);
 EVP_CIPHER *EVP_rc5_32_12_16_cfb(void);
 EVP_CIPHER *EVP_rc5_32_12_16_ofb(void);
 
-void SSLeay_add_all_algorithms(void);
-void SSLeay_add_all_ciphers(void);
-void SSLeay_add_all_digests(void);
+void OpenSSL_add_all_algorithms(void);
+void OpenSSL_add_all_ciphers(void);
+void OpenSSL_add_all_digests(void);
+#define SSLeay_add_all_algorithms() OpenSSL_add_all_algorithms()
+#define SSLeay_add_all_ciphers() OpenSSL_add_all_ciphers()
+#define SSLeay_add_all_digests() OpenSSL_add_all_digests()
 
 int EVP_add_cipher(EVP_CIPHER *cipher);
 int EVP_add_digest(EVP_MD *digest);
@@ -609,6 +615,18 @@ int                EVP_PKEY_type(int type);
 int            EVP_PKEY_bits(EVP_PKEY *pkey);
 int            EVP_PKEY_size(EVP_PKEY *pkey);
 int            EVP_PKEY_assign(EVP_PKEY *pkey,int type,char *key);
+#ifndef NO_RSA
+int            EVP_PKEY_rset_RSA(EVP_PKEY *pkey,RSA *key);
+RSA *          EVP_PKEY_rget_RSA(EVP_PKEY *pkey);
+#endif
+#ifndef NO_DSA
+int            EVP_PKEY_rset_DSA(EVP_PKEY *pkey,DSA *key);
+DSA *          EVP_PKEY_rget_DSA(EVP_PKEY *pkey);
+#endif
+#ifndef NO_DH
+int            EVP_PKEY_rset_DH(EVP_PKEY *pkey,DH *key);
+DH *           EVP_PKEY_rget_DH(EVP_PKEY *pkey);
+#endif
 EVP_PKEY *     EVP_PKEY_new(void);
 void           EVP_PKEY_free(EVP_PKEY *pkey);
 EVP_PKEY *     d2i_PublicKey(int type,EVP_PKEY **a, unsigned char **pp,
@@ -617,6 +635,8 @@ int         i2d_PublicKey(EVP_PKEY *a, unsigned char **pp);
 
 EVP_PKEY *     d2i_PrivateKey(int type,EVP_PKEY **a, unsigned char **pp,
                        long length);
+EVP_PKEY *     d2i_AutoPrivateKey(EVP_PKEY **a, unsigned char **pp,
+                       long length);
 int            i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp);
 
 int EVP_PKEY_copy_parameters(EVP_PKEY *to,EVP_PKEY *from);
@@ -624,6 +644,8 @@ int EVP_PKEY_missing_parameters(EVP_PKEY *pkey);
 int EVP_PKEY_save_parameters(EVP_PKEY *pkey,int mode);
 int EVP_PKEY_cmp_parameters(EVP_PKEY *a,EVP_PKEY *b);
 
+int EVP_CIPHER_type(const EVP_CIPHER *ctx);
+
 /* calls methods */
 int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
 int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
@@ -632,154 +654,30 @@ int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
 int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c,ASN1_TYPE *type);
 int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c,ASN1_TYPE *type);
 
-#else
-
-int     EVP_MD_CTX_copy(); 
-void   EVP_DigestInit();
-void   EVP_DigestUpdate();
-void   EVP_DigestFinal();
-
-int    EVP_read_pw_string();
-void   EVP_set_pw_prompt();
-char * EVP_get_pw_prompt();
-
-int    EVP_BytesToKey();
-
-EVP_CIPHER *EVP_get_cipherbyname();
-
-void   EVP_EncryptInit();
-void   EVP_EncryptUpdate();
-void   EVP_EncryptFinal();
-
-void   EVP_DecryptInit();
-void   EVP_DecryptUpdate();
-int    EVP_DecryptFinal();
-
-void   EVP_CipherInit();
-void   EVP_CipherUpdate();
-int    EVP_CipherFinal();
-
-int    EVP_SignFinal();
-
-int    EVP_VerifyFinal();
-
-int    EVP_OpenInit();
-int    EVP_OpenFinal();
-
-int    EVP_SealInit();
-void   EVP_SealFinal();
-
-void   EVP_EncodeInit();
-void   EVP_EncodeUpdate();
-void   EVP_EncodeFinal();
-int    EVP_EncodeBlock();
-
-void   EVP_DecodeInit();
-int    EVP_DecodeUpdate();
-int    EVP_DecodeFinal();
-int    EVP_DecodeBlock();
-
-void   ERR_load_EVP_strings();
-
-void EVP_CIPHER_CTX_init();
-void EVP_CIPHER_CTX_cleanup();
-
-#ifdef HEADER_BIO_H
-BIO_METHOD *BIO_f_md();
-BIO_METHOD *BIO_f_base64();
-BIO_METHOD *BIO_f_cipher();
-BIO_METHOD *BIO_f_reliable();
-void BIO_set_cipher();
-#endif
-
-EVP_MD *EVP_md_null();
-EVP_MD *EVP_md2();
-EVP_MD *EVP_md5();
-EVP_MD *EVP_sha();
-EVP_MD *EVP_sha1();
-EVP_MD *EVP_dss();
-EVP_MD *EVP_dss1();
-EVP_MD *EVP_mdc2();
-EVP_MD *EVP_ripemd160();
-
-EVP_CIPHER *EVP_enc_null();
-EVP_CIPHER *EVP_des_ecb();
-EVP_CIPHER *EVP_des_ede();
-EVP_CIPHER *EVP_des_ede3();
-EVP_CIPHER *EVP_des_cfb();
-EVP_CIPHER *EVP_des_ede_cfb();
-EVP_CIPHER *EVP_des_ede3_cfb();
-EVP_CIPHER *EVP_des_ofb();
-EVP_CIPHER *EVP_des_ede_ofb();
-EVP_CIPHER *EVP_des_ede3_ofb();
-EVP_CIPHER *EVP_des_cbc();
-EVP_CIPHER *EVP_des_ede_cbc();
-EVP_CIPHER *EVP_des_ede3_cbc();
-EVP_CIPHER *EVP_desx_cbc();
-EVP_CIPHER *EVP_rc4();
-EVP_CIPHER *EVP_rc4_40();
-EVP_CIPHER *EVP_idea_ecb();
-EVP_CIPHER *EVP_idea_cfb();
-EVP_CIPHER *EVP_idea_ofb();
-EVP_CIPHER *EVP_idea_cbc();
-EVP_CIPHER *EVP_rc2_ecb();
-EVP_CIPHER *EVP_rc2_cbc();
-EVP_CIPHER *EVP_rc2_40_cbc();
-EVP_CIPHER *EVP_rc2_64_cbc();
-EVP_CIPHER *EVP_rc2_cfb();
-EVP_CIPHER *EVP_rc2_ofb();
-EVP_CIPHER *EVP_bf_ecb();
-EVP_CIPHER *EVP_bf_cbc();
-EVP_CIPHER *EVP_bf_cfb();
-EVP_CIPHER *EVP_bf_ofb();
-EVP_CIPHER *EVP_cast5_ecb();
-EVP_CIPHER *EVP_cast5_cbc();
-EVP_CIPHER *EVP_cast5_cfb();
-EVP_CIPHER *EVP_cast5_ofb();
-EVP_CIPHER *EVP_rc5_32_12_16_cbc();
-EVP_CIPHER *EVP_rc5_32_12_16_ecb();
-EVP_CIPHER *EVP_rc5_32_12_16_cfb();
-EVP_CIPHER *EVP_rc5_32_12_16_ofb();
-
-void SSLeay_add_all_algorithms();
-void SSLeay_add_all_ciphers();
-void SSLeay_add_all_digests();
-
-int EVP_add_cipher();
-int EVP_add_digest();
-
-EVP_CIPHER *EVP_get_cipherbyname();
-EVP_MD *EVP_get_digestbyname();
-void EVP_cleanup();
-
-int            EVP_PKEY_decrypt();
-int            EVP_PKEY_encrypt();
-int            EVP_PKEY_type();
-int            EVP_PKEY_bits();
-int            EVP_PKEY_size();
-int            EVP_PKEY_assign();
-EVP_PKEY *     EVP_PKEY_new();
-void           EVP_PKEY_free();
-EVP_PKEY *     d2i_PublicKey();
-int            i2d_PublicKey();
-
-EVP_PKEY *     d2i_PrivateKey();
-int            i2d_PrivateKey();
-
-int EVP_PKEY_copy_parameters();
-int EVP_PKEY_missing_parameters();
-int EVP_PKEY_save_parameters();
-int EVP_PKEY_cmp_parameters();
-
-int EVP_CIPHER_param_to_asn1();
-int EVP_CIPHER_asn1_to_param();
-
-int EVP_CIPHER_set_asn1_iv();
-int EVP_CIPHER_get_asn1_iv();
-
-#endif
+/* PKCS5 password based encryption */
+int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
+                        ASN1_TYPE *param, EVP_CIPHER *cipher, EVP_MD *md,
+                        int en_de);
+int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
+                          unsigned char *salt, int saltlen, int iter,
+                          int keylen, unsigned char *out);
+int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
+                        ASN1_TYPE *param, EVP_CIPHER *cipher, EVP_MD *md,
+                        int en_de);
+
+void PKCS5_PBE_add(void);
+
+int EVP_PBE_CipherInit (ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
+            ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de);
+int EVP_PBE_alg_add(int nid, EVP_CIPHER *cipher, EVP_MD *md,
+                   EVP_PBE_KEYGEN *keygen);
+void EVP_PBE_cleanup(void);
 
 /* BEGIN ERROR CODES */
+/* The following lines are auto generated by the script mkerr.pl. Any changes
+ * made after this point may be overwritten when the script is next run.
+ */
+
 /* Error codes for the EVP functions. */
 
 /* Function codes. */
@@ -787,7 +685,6 @@ int EVP_CIPHER_get_asn1_iv();
 #define EVP_F_EVP_DECRYPTFINAL                          101
 #define EVP_F_EVP_MD_CTX_COPY                           110
 #define EVP_F_EVP_OPENINIT                              102
-#define EVP_F_EVP_PBE_ALGOR_CIPHERINIT                  114
 #define EVP_F_EVP_PBE_ALG_ADD                           115
 #define EVP_F_EVP_PBE_CIPHERINIT                        116
 #define EVP_F_EVP_PKCS82PKEY                            111
@@ -797,22 +694,31 @@ int EVP_CIPHER_get_asn1_iv();
 #define EVP_F_EVP_PKEY_DECRYPT                          104
 #define EVP_F_EVP_PKEY_ENCRYPT                          105
 #define EVP_F_EVP_PKEY_NEW                              106
+#define EVP_F_EVP_PKEY_RGET_DH                          119
+#define EVP_F_EVP_PKEY_RGET_DSA                                 120
+#define EVP_F_EVP_PKEY_RGET_RSA                                 121
 #define EVP_F_EVP_SIGNFINAL                             107
 #define EVP_F_EVP_VERIFYFINAL                           108
+#define EVP_F_PKCS5_PBE_KEYIVGEN                        117
+#define EVP_F_PKCS5_V2_PBE_KEYIVGEN                     118
 #define EVP_F_RC2_MAGIC_TO_METH                                 109
 
 /* Reason codes. */
 #define EVP_R_BAD_DECRYPT                               100
 #define EVP_R_BN_DECODE_ERROR                           112
 #define EVP_R_BN_PUBKEY_ERROR                           113
+#define EVP_R_CIPHER_PARAMETER_ERROR                    122
 #define EVP_R_DECODE_ERROR                              114
 #define EVP_R_DIFFERENT_KEY_TYPES                       101
 #define EVP_R_ENCODE_ERROR                              115
 #define EVP_R_EVP_PBE_CIPHERINIT_ERROR                  119
+#define EVP_R_EXPECTING_AN_RSA_KEY                      127
+#define EVP_R_EXPECTING_A_DH_KEY                        128
+#define EVP_R_EXPECTING_A_DSA_KEY                       129
 #define EVP_R_INPUT_NOT_INITIALIZED                     111
 #define EVP_R_IV_TOO_LARGE                              102
 #define EVP_R_KEYGEN_FAILURE                            120
-#define EVP_R_MISSING_PARMATERS                                 103
+#define EVP_R_MISSING_PARAMETERS                        103
 #define EVP_R_NO_DSA_PARAMETERS                                 116
 #define EVP_R_NO_SIGN_FUNCTION_CONFIGURED               104
 #define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED             105
@@ -820,11 +726,15 @@ int EVP_CIPHER_get_asn1_iv();
 #define EVP_R_PUBLIC_KEY_NOT_RSA                        106
 #define EVP_R_UNKNOWN_PBE_ALGORITHM                     121
 #define EVP_R_UNSUPPORTED_CIPHER                        107
+#define EVP_R_UNSUPPORTED_KEYLENGTH                     123
+#define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION       124
 #define EVP_R_UNSUPPORTED_KEY_SIZE                      108
+#define EVP_R_UNSUPPORTED_PRF                           125
 #define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM                 118
+#define EVP_R_UNSUPPORTED_SALT_TYPE                     126
 #define EVP_R_WRONG_FINAL_BLOCK_LENGTH                  109
 #define EVP_R_WRONG_PUBLIC_KEY_TYPE                     110
+
 #ifdef  __cplusplus
 }
 #endif