forked from wolfSSL/wolfssl
EVP_CIPHER_CTX_new/free, EVP_get_digestbyname
This commit is contained in:
committed by
Jacob Barthelmeh
parent
0c742654dc
commit
2ef85e3d4d
48
src/ssl.c
48
src/ssl.c
@@ -10538,12 +10538,48 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
const EVP_MD *wolfSSL_EVP_get_digestbyname(const char *name)
|
||||
{
|
||||
static const char *md_tbl[] = {
|
||||
#ifndef NO_MD5
|
||||
"MD5",
|
||||
#endif /* NO_MD5 */
|
||||
|
||||
#ifndef NO_SHA
|
||||
"SHA",
|
||||
#endif /* NO_SHA */
|
||||
|
||||
#ifdef WOLFSSL_SHA224
|
||||
"SHA224",
|
||||
#endif /* WOLFSSL_SHA224 */
|
||||
|
||||
"SHA256",
|
||||
|
||||
#ifdef WOLFSSL_SHA384
|
||||
"SHA384",
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
"SHA512",
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
NULL
|
||||
} ;
|
||||
|
||||
const char **tbl ;
|
||||
|
||||
for( tbl = md_tbl; *tbl != NULL; tbl++)
|
||||
if(XSTRNCMP(name, *tbl, XSTRLEN(*tbl)+1) == 0) {
|
||||
return (EVP_MD *)*tbl;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifndef NO_MD5
|
||||
|
||||
const WOLFSSL_EVP_MD* wolfSSL_EVP_md5(void)
|
||||
{
|
||||
static const char* type = "MD5";
|
||||
const char* type = EVP_get_digestbyname("MD5");
|
||||
WOLFSSL_ENTER("EVP_md5");
|
||||
return type;
|
||||
}
|
||||
@@ -10554,7 +10590,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
#ifndef NO_SHA
|
||||
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha1(void)
|
||||
{
|
||||
static const char* type = "SHA";
|
||||
const char* type = EVP_get_digestbyname("SHA");
|
||||
WOLFSSL_ENTER("EVP_sha1");
|
||||
return type;
|
||||
}
|
||||
@@ -10564,7 +10600,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
|
||||
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha224(void)
|
||||
{
|
||||
static const char* type = "SHA224";
|
||||
const char* type = EVP_get_digestbyname("SHA224");
|
||||
WOLFSSL_ENTER("EVP_sha224");
|
||||
return type;
|
||||
}
|
||||
@@ -10574,7 +10610,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
|
||||
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha256(void)
|
||||
{
|
||||
static const char* type = "SHA256";
|
||||
const char* type = EVP_get_digestbyname("SHA256");
|
||||
WOLFSSL_ENTER("EVP_sha256");
|
||||
return type;
|
||||
}
|
||||
@@ -10583,7 +10619,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
|
||||
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha384(void)
|
||||
{
|
||||
static const char* type = "SHA384";
|
||||
const char* type = EVP_get_digestbyname("SHA384");
|
||||
WOLFSSL_ENTER("EVP_sha384");
|
||||
return type;
|
||||
}
|
||||
@@ -10594,7 +10630,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
|
||||
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha512(void)
|
||||
{
|
||||
static const char* type = "SHA512";
|
||||
const char* type = EVP_get_digestbyname("SHA512");
|
||||
WOLFSSL_ENTER("EVP_sha512");
|
||||
return type;
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
static unsigned char cipherType(const WOLFSSL_EVP_CIPHER *cipher);
|
||||
static unsigned int cipherType(const WOLFSSL_EVP_CIPHER *cipher);
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
@@ -55,6 +55,59 @@ WOLFSSL_API int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
return wolfSSL_EVP_CipherInit(ctx, type, key, iv, 0);
|
||||
}
|
||||
|
||||
WOLFSSL_API WOLFSSL_EVP_CIPHER_CTX *wolfSSL_EVP_CIPHER_CTX_new(void)
|
||||
{
|
||||
WOLFSSL_EVP_CIPHER_CTX *ctx=XMALLOC(sizeof *ctx, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (ctx)
|
||||
wolfSSL_EVP_CIPHER_CTX_init(ctx);
|
||||
return ctx;
|
||||
}
|
||||
|
||||
WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_free(WOLFSSL_EVP_CIPHER_CTX *ctx)
|
||||
{
|
||||
if (ctx) {
|
||||
wolfSSL_EVP_CIPHER_CTX_cleanup(ctx);
|
||||
XFREE(ctx, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl)
|
||||
{
|
||||
if (ctx->enc)
|
||||
return wolfSSL_EVP_CipherFinal(ctx, out, outl);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl)
|
||||
{
|
||||
if (ctx->enc)
|
||||
return wolfSSL_EVP_CipherFinal(ctx, out, outl);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl)
|
||||
{
|
||||
if (ctx->enc)
|
||||
return 0;
|
||||
else
|
||||
return wolfSSL_EVP_CipherFinal(ctx, out, outl);
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl)
|
||||
{
|
||||
if (ctx->enc)
|
||||
return 0;
|
||||
else
|
||||
return wolfSSL_EVP_CipherFinal(ctx, out, outl);
|
||||
}
|
||||
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
|
||||
const WOLFSSL_EVP_MD* type,
|
||||
WOLFSSL_ENGINE *impl)
|
||||
@@ -304,7 +357,7 @@ WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX *
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned char cipherType(const WOLFSSL_EVP_CIPHER *cipher)
|
||||
static unsigned int cipherType(const WOLFSSL_EVP_CIPHER *cipher)
|
||||
{
|
||||
if (cipher == NULL) return 0; /* dummy for #ifdef */
|
||||
#ifndef NO_DES3
|
||||
|
@@ -179,6 +179,9 @@ WOLFSSL_API int wolfSSL_EVP_MD_size(const WOLFSSL_EVP_MD* md);
|
||||
WOLFSSL_API void wolfSSL_EVP_MD_CTX_init(WOLFSSL_EVP_MD_CTX* ctx);
|
||||
WOLFSSL_API int wolfSSL_EVP_MD_CTX_cleanup(WOLFSSL_EVP_MD_CTX* ctx);
|
||||
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbyname(const char *name);
|
||||
WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_get_digestbyname(const char *name);
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_DigestInit(WOLFSSL_EVP_MD_CTX* ctx,
|
||||
const WOLFSSL_EVP_MD* type);
|
||||
WOLFSSL_API int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
|
||||
@@ -242,6 +245,8 @@ WOLFSSL_API int wolfSSL_EVP_DecryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl);
|
||||
|
||||
WOLFSSL_API WOLFSSL_EVP_CIPHER_CTX *wolfSSL_EVP_CIPHER_CTX_new(void);
|
||||
WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_free(WOLFSSL_EVP_CIPHER_CTX *ctx);
|
||||
WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx);
|
||||
WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
int keylen);
|
||||
@@ -250,7 +255,7 @@ WOLFSSL_API int wolfSSL_EVP_Cipher(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
unsigned int len);
|
||||
|
||||
WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_get_digestbynid(int);
|
||||
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbyname(const char *name);
|
||||
WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get1_RSA(WOLFSSL_EVP_PKEY*);
|
||||
WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get1_DSA(WOLFSSL_EVP_PKEY*);
|
||||
WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get1_EC_KEY(WOLFSSL_EVP_PKEY *key);
|
||||
@@ -333,6 +338,9 @@ typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX;
|
||||
#define EVP_DigestFinal_ex wolfSSL_EVP_DigestFinal_ex
|
||||
#define EVP_BytesToKey wolfSSL_EVP_BytesToKey
|
||||
|
||||
#define EVP_get_cipherbyname wolfSSL_EVP_get_cipherbyname
|
||||
#define EVP_get_digestbyname wolfSSL_EVP_get_digestbyname
|
||||
|
||||
#define EVP_CIPHER_CTX_init wolfSSL_EVP_CIPHER_CTX_init
|
||||
#define EVP_CIPHER_CTX_cleanup wolfSSL_EVP_CIPHER_CTX_cleanup
|
||||
#define EVP_CIPHER_CTX_iv_length wolfSSL_EVP_CIPHER_CTX_iv_length
|
||||
@@ -356,7 +364,12 @@ typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX;
|
||||
#define EVP_DecryptFinal wolfSSL_EVP_CipherFinal
|
||||
#define EVP_DecryptFinal_ex wolfSSL_EVP_CipherFinal
|
||||
|
||||
#define EVP_CIPHER_CTX_free wolfSSL_EVP_CIPHER_CTX_free
|
||||
#define EVP_CIPHER_CTX_new wolfSSL_EVP_CIPHER_CTX_new
|
||||
|
||||
#define EVP_get_digestbynid wolfSSL_EVP_get_digestbynid
|
||||
#define EVP_get_cipherbyname wolfSSL_EVP_get_cipherbyname
|
||||
#define EVP_get_digestbyname wolfSSL_EVP_get_digestbyname
|
||||
|
||||
#define EVP_PKEY_get1_RSA wolfSSL_EVP_PKEY_get1_RSA
|
||||
#define EVP_PKEY_get1_DSA wolfSSL_EVP_PKEY_get1_DSA
|
||||
|
Reference in New Issue
Block a user