wolf SSL / wolfSSL-TLS13-Beta

Fork of wolfSSL by wolf SSL

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers evp.h Source File

evp.h

00001 /* evp.h
00002  *
00003  * Copyright (C) 2006-2016 wolfSSL Inc.
00004  *
00005  * This file is part of wolfSSL.
00006  *
00007  * wolfSSL is free software; you can redistribute it and/or modify
00008  * it under the terms of the GNU General Public License as published by
00009  * the Free Software Foundation; either version 2 of the License, or
00010  * (at your option) any later version.
00011  *
00012  * wolfSSL is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU General Public License
00018  * along with this program; if not, write to the Free Software
00019  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
00020  */
00021 
00022 
00023 
00024 /*  evp.h defines mini evp openssl compatibility layer
00025  *
00026  */
00027 
00028 
00029 #ifndef WOLFSSL_EVP_H_
00030 #define WOLFSSL_EVP_H_
00031 
00032 #include <wolfssl/wolfcrypt/settings.h>
00033 
00034 #ifdef WOLFSSL_PREFIX
00035 #include "prefix_evp.h"
00036 #endif
00037 
00038 #ifndef NO_MD5
00039     #include <wolfssl/openssl/md5.h>
00040 #endif
00041 #include <wolfssl/openssl/sha.h>
00042 #include <wolfssl/openssl/ripemd.h>
00043 #include <wolfssl/openssl/rsa.h>
00044 #include <wolfssl/openssl/dsa.h>
00045 #include <wolfssl/openssl/ec.h>
00046 
00047 #include <wolfssl/wolfcrypt/aes.h>
00048 #include <wolfssl/wolfcrypt/des3.h>
00049 #include <wolfssl/wolfcrypt/arc4.h>
00050 #ifdef HAVE_IDEA
00051     #include <wolfssl/wolfcrypt/idea.h>
00052 #endif
00053 
00054 #ifdef __cplusplus
00055     extern "C" {
00056 #endif
00057 
00058 typedef char WOLFSSL_EVP_CIPHER;
00059 typedef char WOLFSSL_EVP_MD;
00060 
00061 #ifndef NO_MD5
00062     WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_md5(void);
00063 #endif
00064 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha1(void);
00065 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha224(void);
00066 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha256(void);
00067 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha384(void);
00068 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha512(void);
00069 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_ripemd160(void);
00070 
00071 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ecb(void);
00072 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ecb(void);
00073 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ecb(void);
00074 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cbc(void);
00075 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cbc(void);
00076 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cbc(void);
00077 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ctr(void);
00078 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ctr(void);
00079 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ctr(void);
00080 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ecb(void);
00081 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_ecb(void);
00082 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_cbc(void);
00083 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_cbc(void);
00084 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_rc4(void);
00085 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_idea_cbc(void);
00086 WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_enc_null(void);
00087 
00088 
00089 typedef union {
00090     #ifndef NO_MD5
00091         WOLFSSL_MD5_CTX    md5;
00092     #endif
00093     WOLFSSL_SHA_CTX    sha;
00094     #ifdef WOLFSSL_SHA224
00095         WOLFSSL_SHA224_CTX sha224;
00096     #endif
00097     WOLFSSL_SHA256_CTX sha256;
00098     #ifdef WOLFSSL_SHA384
00099         WOLFSSL_SHA384_CTX sha384;
00100     #endif
00101     #ifdef WOLFSSL_SHA512
00102         WOLFSSL_SHA512_CTX sha512;
00103     #endif
00104     #ifdef WOLFSSL_RIPEMD
00105         WOLFSSL_RIPEMD_CTX ripemd;
00106     #endif
00107 } WOLFSSL_Hasher;
00108 
00109 
00110 typedef struct WOLFSSL_EVP_MD_CTX {
00111     WOLFSSL_Hasher hash;
00112     unsigned char macType;
00113 } WOLFSSL_EVP_MD_CTX;
00114 
00115 
00116 typedef union {
00117 #ifndef NO_AES
00118     Aes  aes;
00119 #endif
00120 #ifndef NO_DES3
00121     Des  des;
00122     Des3 des3;
00123 #endif
00124     Arc4 arc4;
00125 #ifdef HAVE_IDEA
00126     Idea idea;
00127 #endif
00128 } WOLFSSL_Cipher;
00129 
00130 
00131 enum {
00132     AES_128_CBC_TYPE  = 1,
00133     AES_192_CBC_TYPE  = 2,
00134     AES_256_CBC_TYPE  = 3,
00135     AES_128_CTR_TYPE  = 4,
00136     AES_192_CTR_TYPE  = 5,
00137     AES_256_CTR_TYPE  = 6,
00138     AES_128_ECB_TYPE  = 7,
00139     AES_192_ECB_TYPE  = 8,
00140     AES_256_ECB_TYPE  = 9,
00141     DES_CBC_TYPE      = 10,
00142     DES_ECB_TYPE      = 11,
00143     DES_EDE3_CBC_TYPE = 12,
00144     DES_EDE3_ECB_TYPE = 13,
00145     ARC4_TYPE         = 14,
00146     NULL_CIPHER_TYPE  = 15,
00147     EVP_PKEY_RSA      = 16,
00148     EVP_PKEY_DSA      = 17,
00149     EVP_PKEY_EC       = 18,
00150     IDEA_CBC_TYPE     = 19,
00151     NID_sha1          = 64,
00152     NID_md2           = 3,
00153     NID_md5           =  4
00154 };
00155 
00156 #define WOLFSSL_EVP_BUF_SIZE 16
00157 typedef struct WOLFSSL_EVP_CIPHER_CTX {
00158     int            keyLen;         /* user may set for variable */
00159     int            block_size;
00160     unsigned long  flags;
00161     unsigned char  enc;            /* if encrypt side, then true */
00162     unsigned char  cipherType;
00163 #ifndef NO_AES
00164     /* working iv pointer into cipher */
00165     ALIGN16 unsigned char  iv[AES_BLOCK_SIZE];
00166 #elif !defined(NO_DES3)
00167     /* working iv pointer into cipher */
00168     ALIGN16 unsigned char  iv[DES_BLOCK_SIZE];
00169 #endif
00170     WOLFSSL_Cipher  cipher;
00171     ALIGN16 byte buf[WOLFSSL_EVP_BUF_SIZE];
00172     int  bufUsed;
00173     ALIGN16 byte lastBlock[WOLFSSL_EVP_BUF_SIZE];
00174     int  lastUsed;
00175 } WOLFSSL_EVP_CIPHER_CTX;
00176 
00177 
00178 #ifndef WOLFSSL_EVP_PKEY_TYPE_DEFINED /* guard on redeclaration */
00179 typedef struct WOLFSSL_EVP_PKEY     WOLFSSL_EVP_PKEY;
00180 #define WOLFSSL_EVP_PKEY_TYPE_DEFINED
00181 #endif
00182 
00183 struct WOLFSSL_EVP_PKEY {
00184     int type;         /* openssh dereference */
00185     int save_type;    /* openssh dereference */
00186     int pkey_sz;
00187     union {
00188         char* ptr; /* der format of key / or raw for NTRU */
00189     } pkey;
00190     #ifdef HAVE_ECC
00191         int pkey_curve;
00192     #endif
00193 };
00194 
00195 typedef int WOLFSSL_ENGINE  ;
00196 typedef WOLFSSL_ENGINE ENGINE;
00197 
00198 WOLFSSL_API void wolfSSL_EVP_init(void);
00199 WOLFSSL_API int  wolfSSL_EVP_MD_size(const WOLFSSL_EVP_MD* md);
00200 WOLFSSL_API int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md);
00201 
00202 WOLFSSL_API WOLFSSL_EVP_MD_CTX *wolfSSL_EVP_MD_CTX_new (void);
00203 WOLFSSL_API void                wolfSSL_EVP_MD_CTX_free(WOLFSSL_EVP_MD_CTX* ctx);
00204 WOLFSSL_API void wolfSSL_EVP_MD_CTX_init(WOLFSSL_EVP_MD_CTX* ctx);
00205 WOLFSSL_API int  wolfSSL_EVP_MD_CTX_cleanup(WOLFSSL_EVP_MD_CTX* ctx);
00206 WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_MD_CTX_md(const WOLFSSL_EVP_MD_CTX *ctx);
00207 WOLFSSL_API const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbyname(const char *name);
00208 WOLFSSL_API const WOLFSSL_EVP_MD     *wolfSSL_EVP_get_digestbyname(const char *name);
00209 
00210 WOLFSSL_API int wolfSSL_EVP_DigestInit(WOLFSSL_EVP_MD_CTX* ctx,
00211                                      const WOLFSSL_EVP_MD* type);
00212 WOLFSSL_API int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
00213                                      const WOLFSSL_EVP_MD* type,
00214                                      WOLFSSL_ENGINE *impl);
00215 WOLFSSL_API int wolfSSL_EVP_DigestUpdate(WOLFSSL_EVP_MD_CTX* ctx, const void* data,
00216                                        unsigned long sz);
00217 WOLFSSL_API int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md,
00218                                       unsigned int* s);
00219 WOLFSSL_API int wolfSSL_EVP_DigestFinal_ex(WOLFSSL_EVP_MD_CTX* ctx,
00220                                             unsigned char* md, unsigned int* s);
00221 #ifndef NO_MD5
00222 WOLFSSL_API int wolfSSL_EVP_BytesToKey(const WOLFSSL_EVP_CIPHER*,
00223                               const WOLFSSL_EVP_MD*, const unsigned char*,
00224                               const unsigned char*, int, int, unsigned char*,
00225                               unsigned char*);
00226 #endif
00227 
00228 WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_init(WOLFSSL_EVP_CIPHER_CTX* ctx);
00229 WOLFSSL_API int  wolfSSL_EVP_CIPHER_CTX_cleanup(WOLFSSL_EVP_CIPHER_CTX* ctx);
00230 
00231 WOLFSSL_API int  wolfSSL_EVP_CIPHER_CTX_iv_length(const WOLFSSL_EVP_CIPHER_CTX*);
00232 WOLFSSL_API int  wolfSSL_EVP_CIPHER_iv_length(const WOLFSSL_EVP_CIPHER*);
00233 
00234 
00235 WOLFSSL_API int  wolfSSL_EVP_CipherInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
00236                                     const WOLFSSL_EVP_CIPHER* type,
00237                                     unsigned char* key, unsigned char* iv,
00238                                     int enc);
00239 WOLFSSL_API int  wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
00240                                     const WOLFSSL_EVP_CIPHER* type,
00241                                     WOLFSSL_ENGINE *impl,
00242                                     unsigned char* key, unsigned char* iv,
00243                                     int enc);
00244 WOLFSSL_API int  wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
00245                                     const WOLFSSL_EVP_CIPHER* type,
00246                                     unsigned char* key, unsigned char* iv);
00247 WOLFSSL_API int  wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
00248                                     const WOLFSSL_EVP_CIPHER* type,
00249                                     WOLFSSL_ENGINE *impl,
00250                                     unsigned char* key, unsigned char* iv);
00251 WOLFSSL_API int  wolfSSL_EVP_DecryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
00252                                     const WOLFSSL_EVP_CIPHER* type,
00253                                     unsigned char* key, unsigned char* iv);
00254 WOLFSSL_API int  wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
00255                                     const WOLFSSL_EVP_CIPHER* type,
00256                                     WOLFSSL_ENGINE *impl,
00257                                     unsigned char* key, unsigned char* iv);
00258 WOLFSSL_API int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx,
00259                                    unsigned char *out, int *outl,
00260                                    const unsigned char *in, int inl);
00261 WOLFSSL_API int  wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
00262                                    unsigned char *out, int *outl);
00263 WOLFSSL_API int  wolfSSL_EVP_CipherFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
00264                                    unsigned char *out, int *outl, int enc);
00265 WOLFSSL_API int  wolfSSL_EVP_EncryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
00266                                    unsigned char *out, int *outl);
00267 WOLFSSL_API int  wolfSSL_EVP_EncryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
00268                                    unsigned char *out, int *outl);
00269 WOLFSSL_API int  wolfSSL_EVP_DecryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
00270                                    unsigned char *out, int *outl);
00271 WOLFSSL_API int  wolfSSL_EVP_DecryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
00272                                    unsigned char *out, int *outl);
00273 
00274 WOLFSSL_API WOLFSSL_EVP_CIPHER_CTX *wolfSSL_EVP_CIPHER_CTX_new(void);
00275 WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_free(WOLFSSL_EVP_CIPHER_CTX *ctx);
00276 WOLFSSL_API int  wolfSSL_EVP_CIPHER_CTX_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx);
00277 WOLFSSL_API int  wolfSSL_EVP_CIPHER_CTX_set_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx,
00278                                                      int keylen);
00279 WOLFSSL_API int  wolfSSL_EVP_Cipher(WOLFSSL_EVP_CIPHER_CTX* ctx,
00280                           unsigned char* dst, unsigned char* src,
00281                           unsigned int len);
00282 
00283 WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_get_digestbynid(int);
00284 
00285 WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get1_RSA(WOLFSSL_EVP_PKEY*);
00286 WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get1_DSA(WOLFSSL_EVP_PKEY*);
00287 WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get1_EC_KEY(WOLFSSL_EVP_PKEY *key);
00288 
00289 /* these next ones don't need real OpenSSL type, for OpenSSH compat only */
00290 WOLFSSL_API void* wolfSSL_EVP_X_STATE(const WOLFSSL_EVP_CIPHER_CTX* ctx);
00291 WOLFSSL_API int   wolfSSL_EVP_X_STATE_LEN(const WOLFSSL_EVP_CIPHER_CTX* ctx);
00292 
00293 WOLFSSL_API void  wolfSSL_3des_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, int doset,
00294                                 unsigned char* iv, int len);
00295 WOLFSSL_API void  wolfSSL_aes_ctr_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, int doset,
00296                                 unsigned char* iv, int len);
00297 
00298 WOLFSSL_API int  wolfSSL_StoreExternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx);
00299 WOLFSSL_API int  wolfSSL_SetInternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx);
00300 
00301 WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX *ctx);
00302 WOLFSSL_API int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher);
00303 WOLFSSL_API unsigned long WOLFSSL_EVP_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher);
00304 WOLFSSL_API unsigned long WOLFSSL_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher);
00305 WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_flags(const WOLFSSL_EVP_CIPHER *cipher);
00306 WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_set_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags);
00307 WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_CTX_mode(const WOLFSSL_EVP_CIPHER_CTX *ctx);
00308 WOLFSSL_API int  wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *c, int pad);
00309 WOLFSSL_API int  wolfSSL_EVP_add_digest(const WOLFSSL_EVP_MD *digest);
00310 
00311 #define EVP_CIPH_STREAM_CIPHER WOLFSSL_EVP_CIPH_STREAM_CIPHER
00312 #define EVP_CIPH_ECB_MODE WOLFSSL_EVP_CIPH_ECB_MODE
00313 #define EVP_CIPH_CBC_MODE WOLFSSL_EVP_CIPH_CBC_MODE
00314 #define EVP_CIPH_CFB_MODE WOLFSSL_EVP_CIPH_CFB_MODE
00315 #define EVP_CIPH_OFB_MODE WOLFSSL_EVP_CIPH_OFB_MODE
00316 #define EVP_CIPH_CTR_MODE WOLFSSL_EVP_CIPH_CTR_MODE
00317 #define EVP_CIPH_GCM_MODE WOLFSSL_EVP_CIPH_GCM_MODE
00318 #define EVP_CIPH_CCM_MODE WOLFSSL_EVP_CIPH_CCM_MODE
00319 
00320 #define WOLFSSL_EVP_CIPH_MODE           0x0007
00321 #define WOLFSSL_EVP_CIPH_STREAM_CIPHER      0x0
00322 #define WOLFSSL_EVP_CIPH_ECB_MODE           0x1
00323 #define WOLFSSL_EVP_CIPH_CBC_MODE           0x2
00324 #define WOLFSSL_EVP_CIPH_CFB_MODE           0x3
00325 #define WOLFSSL_EVP_CIPH_OFB_MODE           0x4
00326 #define WOLFSSL_EVP_CIPH_CTR_MODE           0x5
00327 #define WOLFSSL_EVP_CIPH_GCM_MODE           0x6
00328 #define WOLFSSL_EVP_CIPH_CCM_MODE           0x7
00329 #define WOLFSSL_EVP_CIPH_NO_PADDING       0x100
00330 
00331 /* end OpenSSH compat */
00332 
00333 typedef WOLFSSL_EVP_MD         EVP_MD;
00334 typedef WOLFSSL_EVP_CIPHER     EVP_CIPHER;
00335 typedef WOLFSSL_EVP_MD_CTX     EVP_MD_CTX;
00336 typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX;
00337 
00338 #ifndef NO_MD5
00339     #define EVP_md5       wolfSSL_EVP_md5
00340 #endif
00341 #define EVP_sha1      wolfSSL_EVP_sha1
00342 #define EVP_sha224    wolfSSL_EVP_sha224
00343 #define EVP_sha256    wolfSSL_EVP_sha256
00344 #define EVP_sha384    wolfSSL_EVP_sha384
00345 #define EVP_sha512    wolfSSL_EVP_sha512
00346 #define EVP_ripemd160 wolfSSL_EVP_ripemd160
00347 
00348 #define EVP_aes_128_cbc  wolfSSL_EVP_aes_128_cbc
00349 #define EVP_aes_192_cbc  wolfSSL_EVP_aes_192_cbc
00350 #define EVP_aes_256_cbc  wolfSSL_EVP_aes_256_cbc
00351 #define EVP_aes_128_ecb  wolfSSL_EVP_aes_128_ecb
00352 #define EVP_aes_192_ecb  wolfSSL_EVP_aes_192_ecb
00353 #define EVP_aes_256_ecb  wolfSSL_EVP_aes_256_ecb
00354 #define EVP_aes_128_ctr  wolfSSL_EVP_aes_128_ctr
00355 #define EVP_aes_192_ctr  wolfSSL_EVP_aes_192_ctr
00356 #define EVP_aes_256_ctr  wolfSSL_EVP_aes_256_ctr
00357 #define EVP_des_cbc      wolfSSL_EVP_des_cbc
00358 #define EVP_des_ecb      wolfSSL_EVP_des_ecb
00359 #define EVP_des_ede3_cbc wolfSSL_EVP_des_ede3_cbc
00360 #define EVP_des_ede3_ecb wolfSSL_EVP_des_ede3_ecb
00361 #define EVP_rc4          wolfSSL_EVP_rc4
00362 #define EVP_idea_cbc     wolfSSL_EVP_idea_cbc
00363 #define EVP_enc_null     wolfSSL_EVP_enc_null
00364 
00365 #define EVP_MD_size        wolfSSL_EVP_MD_size
00366 #define EVP_MD_CTX_new     wolfSSL_EVP_MD_CTX_new
00367 #define EVP_MD_CTX_create  wolfSSL_EVP_MD_CTX_new
00368 #define EVP_MD_CTX_free    wolfSSL_EVP_MD_CTX_free
00369 #define EVP_MD_CTX_destroy wolfSSL_EVP_MD_CTX_free
00370 #define EVP_MD_CTX_init    wolfSSL_EVP_MD_CTX_init
00371 #define EVP_MD_CTX_cleanup wolfSSL_EVP_MD_CTX_cleanup
00372 #define EVP_MD_CTX_md      wolfSSL_EVP_MD_CTX_md
00373 #define EVP_MD_CTX_type    wolfSSL_EVP_MD_type
00374 #define EVP_MD_type        wolfSSL_EVP_MD_type
00375 
00376 #define EVP_DigestInit     wolfSSL_EVP_DigestInit
00377 #define EVP_DigestInit_ex  wolfSSL_EVP_DigestInit_ex
00378 #define EVP_DigestUpdate   wolfSSL_EVP_DigestUpdate
00379 #define EVP_DigestFinal    wolfSSL_EVP_DigestFinal
00380 #define EVP_DigestFinal_ex wolfSSL_EVP_DigestFinal_ex
00381 #define EVP_BytesToKey     wolfSSL_EVP_BytesToKey
00382 
00383 #define EVP_get_cipherbyname wolfSSL_EVP_get_cipherbyname
00384 #define EVP_get_digestbyname wolfSSL_EVP_get_digestbyname
00385 
00386 #define EVP_CIPHER_CTX_init           wolfSSL_EVP_CIPHER_CTX_init
00387 #define EVP_CIPHER_CTX_cleanup        wolfSSL_EVP_CIPHER_CTX_cleanup
00388 #define EVP_CIPHER_CTX_iv_length      wolfSSL_EVP_CIPHER_CTX_iv_length
00389 #define EVP_CIPHER_CTX_key_length     wolfSSL_EVP_CIPHER_CTX_key_length
00390 #define EVP_CIPHER_CTX_set_key_length wolfSSL_EVP_CIPHER_CTX_set_key_length
00391 #define EVP_CIPHER_CTX_mode           wolfSSL_EVP_CIPHER_CTX_mode
00392 
00393 #define EVP_CIPHER_iv_length          wolfSSL_EVP_CIPHER_iv_length
00394 
00395 #define EVP_CipherInit                wolfSSL_EVP_CipherInit
00396 #define EVP_CipherInit_ex             wolfSSL_EVP_CipherInit_ex
00397 #define EVP_EncryptInit               wolfSSL_EVP_EncryptInit
00398 #define EVP_EncryptInit_ex            wolfSSL_EVP_EncryptInit_ex
00399 #define EVP_DecryptInit               wolfSSL_EVP_DecryptInit
00400 #define EVP_DecryptInit_ex            wolfSSL_EVP_DecryptInit_ex
00401 
00402 #define EVP_Cipher                    wolfSSL_EVP_Cipher
00403 #define EVP_CipherUpdate              wolfSSL_EVP_CipherUpdate
00404 #define EVP_EncryptUpdate             wolfSSL_EVP_CipherUpdate
00405 #define EVP_DecryptUpdate             wolfSSL_EVP_CipherUpdate
00406 #define EVP_CipherFinal               wolfSSL_EVP_CipherFinal
00407 #define EVP_CipherFinal_ex            wolfSSL_EVP_CipherFinal
00408 #define EVP_EncryptFinal              wolfSSL_EVP_CipherFinal
00409 #define EVP_EncryptFinal_ex           wolfSSL_EVP_CipherFinal
00410 #define EVP_DecryptFinal              wolfSSL_EVP_CipherFinal
00411 #define EVP_DecryptFinal_ex           wolfSSL_EVP_CipherFinal
00412 
00413 #define EVP_CIPHER_CTX_free           wolfSSL_EVP_CIPHER_CTX_free
00414 #define EVP_CIPHER_CTX_new            wolfSSL_EVP_CIPHER_CTX_new
00415 
00416 #define EVP_get_digestbynid           wolfSSL_EVP_get_digestbynid
00417 #define EVP_get_cipherbyname          wolfSSL_EVP_get_cipherbyname
00418 #define EVP_get_digestbyname          wolfSSL_EVP_get_digestbyname
00419 
00420 #define EVP_PKEY_get1_RSA   wolfSSL_EVP_PKEY_get1_RSA
00421 #define EVP_PKEY_get1_DSA   wolfSSL_EVP_PKEY_get1_DSA
00422 #define EVP_PKEY_get1_EC_KEY wolfSSL_EVP_PKEY_get1_EC_KEY
00423 
00424 #define EVP_CIPHER_CTX_block_size  wolfSSL_EVP_CIPHER_CTX_block_size
00425 #define EVP_CIPHER_block_size      wolfSSL_EVP_CIPHER_block_size
00426 #define EVP_CIPHER_flags           wolfSSL_EVP_CIPHER_flags
00427 #define EVP_CIPHER_CTX_set_flags   wolfSSL_EVP_CIPHER_CTX_set_flags
00428 #define EVP_CIPHER_CTX_set_padding wolfSSL_EVP_CIPHER_CTX_set_padding
00429 #define EVP_CIPHER_CTX_flags       wolfSSL_EVP_CIPHER_CTX_flags
00430 #define EVP_add_digest             wolfSSL_EVP_add_digest
00431 
00432 #ifndef EVP_MAX_MD_SIZE
00433     #define EVP_MAX_MD_SIZE   64     /* sha512 */
00434 #endif
00435 
00436 #ifdef __cplusplus
00437     } /* extern "C" */
00438 #endif
00439 
00440 
00441 #endif /* WOLFSSL_EVP_H_ */
00442