forked from wolfSSL/wolfssl
add EVP_Cipher with EVP_aes_256_ecb()
This commit is contained in:
committed by
Jacob Barthelmeh
parent
0fd50cd57a
commit
bb400789b8
162
src/ssl.c
162
src/ssl.c
@@ -2488,15 +2488,21 @@ static const char *EVP_AES_256_CBC = "AES-256-CBC";
|
||||
static const char *EVP_AES_128_CTR = "AES-128-CTR";
|
||||
static const char *EVP_AES_192_CTR = "AES-192-CTR";
|
||||
static const char *EVP_AES_256_CTR = "AES-256-CTR";
|
||||
|
||||
static const char *EVP_AES_128_ECB = "AES-128-ECB";
|
||||
static const char *EVP_AES_192_ECB = "AES-192-ECB";
|
||||
static const char *EVP_AES_256_ECB = "AES-256-ECB";
|
||||
#endif
|
||||
static const int EVP_AES_SIZE = 11;
|
||||
#endif
|
||||
|
||||
#ifndef NO_DES3
|
||||
static const char *EVP_DES_CBC = "DES-CBC";
|
||||
static const char *EVP_DES_ECB = "DES-ECB";
|
||||
static const int EVP_DES_SIZE = 7;
|
||||
|
||||
static const char *EVP_DES_EDE3_CBC = "DES-EDE3-CBC";
|
||||
static const char *EVP_DES_EDE3_ECB = "DES-EDE3-ECB";
|
||||
static const int EVP_DES_EDE3_SIZE = 12;
|
||||
#endif
|
||||
|
||||
@@ -9972,6 +9978,25 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
return EVP_AES_256_CTR;
|
||||
}
|
||||
|
||||
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ecb(void)
|
||||
{
|
||||
WOLFSSL_ENTER("wolfSSL_EVP_aes_128_ecb");
|
||||
return EVP_AES_128_ECB;
|
||||
}
|
||||
|
||||
|
||||
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ecb(void)
|
||||
{
|
||||
WOLFSSL_ENTER("wolfSSL_EVP_aes_192_ecb");
|
||||
return EVP_AES_192_ECB;
|
||||
}
|
||||
|
||||
|
||||
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ecb(void)
|
||||
{
|
||||
WOLFSSL_ENTER("wolfSSL_EVP_aes_256_ecb");
|
||||
return EVP_AES_256_ECB;
|
||||
}
|
||||
#endif /* NO_AES */
|
||||
|
||||
#ifndef NO_DES3
|
||||
@@ -9980,13 +10005,25 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
WOLFSSL_ENTER("wolfSSL_EVP_des_cbc");
|
||||
return EVP_DES_CBC;
|
||||
}
|
||||
|
||||
|
||||
#ifdef WOLFSSL_DES_ECB
|
||||
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ecb(void)
|
||||
{
|
||||
WOLFSSL_ENTER("wolfSSL_EVP_des_ecb");
|
||||
return EVP_DES_ECB;
|
||||
}
|
||||
#endif
|
||||
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_cbc(void)
|
||||
{
|
||||
WOLFSSL_ENTER("wolfSSL_EVP_des_ede3_cbc");
|
||||
return EVP_DES_EDE3_CBC;
|
||||
}
|
||||
#ifdef WOLFSSL_DES_ECB
|
||||
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_ecb(void)
|
||||
{
|
||||
WOLFSSL_ENTER("wolfSSL_EVP_des_ede3_ecb");
|
||||
return EVP_DES_EDE3_ECB;
|
||||
}
|
||||
#endif
|
||||
#endif /* NO_DES3 */
|
||||
|
||||
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_rc4(void)
|
||||
@@ -10072,6 +10109,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
WOLFSSL_MSG(EVP_AES_128_CBC);
|
||||
ctx->cipherType = AES_128_CBC_TYPE;
|
||||
ctx->keyLen = 16;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
@@ -10091,6 +10129,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
WOLFSSL_MSG(EVP_AES_192_CBC);
|
||||
ctx->cipherType = AES_192_CBC_TYPE;
|
||||
ctx->keyLen = 24;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
@@ -10110,6 +10149,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
WOLFSSL_MSG(EVP_AES_256_CBC);
|
||||
ctx->cipherType = AES_256_CBC_TYPE;
|
||||
ctx->keyLen = 32;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
@@ -10130,11 +10170,12 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
WOLFSSL_MSG(EVP_AES_128_CTR);
|
||||
ctx->cipherType = AES_128_CTR_TYPE;
|
||||
ctx->keyLen = 16;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
ret = wc_AesSetKey(&ctx->cipher.aes, key, ctx->keyLen, iv,
|
||||
AES_ENCRYPTION);
|
||||
ctx->enc ? AES_ENCRYPTION : AES_DECRYPTION));
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
@@ -10149,11 +10190,12 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
WOLFSSL_MSG(EVP_AES_192_CTR);
|
||||
ctx->cipherType = AES_192_CTR_TYPE;
|
||||
ctx->keyLen = 24;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
ret = wc_AesSetKey(&ctx->cipher.aes, key, ctx->keyLen, iv,
|
||||
AES_ENCRYPTION);
|
||||
ctx->enc ? AES_ENCRYPTION : AES_DECRYPTION));
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
@@ -10168,11 +10210,12 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
WOLFSSL_MSG(EVP_AES_256_CTR);
|
||||
ctx->cipherType = AES_256_CTR_TYPE;
|
||||
ctx->keyLen = 32;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
ret = wc_AesSetKey(&ctx->cipher.aes, key, ctx->keyLen, iv,
|
||||
AES_ENCRYPTION);
|
||||
ctx->enc ? AES_ENCRYPTION : AES_DECRYPTION));
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
@@ -10183,6 +10226,52 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
}
|
||||
}
|
||||
#endif /* WOLFSSL_AES_CTR */
|
||||
else if (ctx->cipherType == AES_128_ECB_TYPE ||
|
||||
(type && XSTRNCMP(type, EVP_AES_128_ECB, EVP_AES_SIZE) == 0)) {
|
||||
WOLFSSL_MSG(EVP_AES_128_ECB);
|
||||
ctx->cipherType = AES_128_ECB_TYPE;
|
||||
ctx->keyLen = 16;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
ret = wc_AesSetKey(&ctx->cipher.aes, key, ctx->keyLen, NULL,
|
||||
ctx->enc ? AES_ENCRYPTION : AES_DECRYPTION);
|
||||
}
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
else if (ctx->cipherType == AES_192_ECB_TYPE ||
|
||||
(type && XSTRNCMP(type, EVP_AES_192_ECB, EVP_AES_SIZE) == 0)) {
|
||||
WOLFSSL_MSG(EVP_AES_192_ECB);
|
||||
ctx->cipherType = AES_192_ECB_TYPE;
|
||||
ctx->keyLen = 24;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
if(ctx->enc)
|
||||
ret = wc_AesSetKey(&ctx->cipher.aes, key, ctx->keyLen, NULL,
|
||||
ctx->enc ? AES_ENCRYPTION : AES_DECRYPTION);
|
||||
}
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
else if (ctx->cipherType == AES_256_ECB_TYPE ||
|
||||
(type && XSTRNCMP(type, EVP_AES_256_ECB, EVP_AES_SIZE) == 0)) {
|
||||
WOLFSSL_MSG(EVP_AES_256_ECB);
|
||||
ctx->cipherType = AES_256_ECB_TYPE;
|
||||
ctx->keyLen = 32;
|
||||
ctx->block_size = 16;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
ret = wc_AesSetKey(&ctx->cipher.aes, key, ctx->keyLen, NULL,
|
||||
ctx->enc ? AES_ENCRYPTION : AES_DECRYPTION);
|
||||
}
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
#endif /* NO_AES */
|
||||
|
||||
#ifndef NO_DES3
|
||||
@@ -10191,6 +10280,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
WOLFSSL_MSG(EVP_DES_CBC);
|
||||
ctx->cipherType = DES_CBC_TYPE;
|
||||
ctx->keyLen = 8;
|
||||
ctx->block_size = 8;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
@@ -10203,12 +10293,30 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
if (iv && key == NULL)
|
||||
wc_Des_SetIV(&ctx->cipher.des, iv);
|
||||
}
|
||||
#ifdef WOLFSSL_DES_ECB
|
||||
else if (ctx->cipherType == DES_ECB_TYPE ||
|
||||
(type && XSTRNCMP(type, EVP_DES_ECB, EVP_DES_SIZE) == 0)) {
|
||||
WOLFSSL_MSG(EVP_DES_ECB);
|
||||
ctx->cipherType = DES_ECB_TYPE;
|
||||
ctx->keyLen = 8;
|
||||
ctx->block_size = 8;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
ret = wc_Des_SetKey(&ctx->cipher.des, key, NULL,
|
||||
ctx->enc ? DES_ENCRYPTION : DES_DECRYPTION);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
else if (ctx->cipherType == DES_EDE3_CBC_TYPE ||
|
||||
(type &&
|
||||
XSTRNCMP(type, EVP_DES_EDE3_CBC, EVP_DES_EDE3_SIZE) == 0)) {
|
||||
WOLFSSL_MSG(EVP_DES_EDE3_CBC);
|
||||
ctx->cipherType = DES_EDE3_CBC_TYPE;
|
||||
ctx->keyLen = 24;
|
||||
ctx->block_size = 8;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
@@ -10224,6 +10332,22 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
else if (ctx->cipherType == DES_EDE3_ECB_TYPE ||
|
||||
(type &&
|
||||
XSTRNCMP(type, EVP_DES_EDE3_ECB, EVP_DES_EDE3_SIZE) == 0)) {
|
||||
WOLFSSL_MSG(EVP_DES_EDE3_ECB);
|
||||
ctx->cipherType = DES_EDE3_ECB_TYPE;
|
||||
ctx->keyLen = 24;
|
||||
ctx->block_size = 8;
|
||||
if (enc == 0 || enc == 1)
|
||||
ctx->enc = enc ? 1 : 0;
|
||||
if (key) {
|
||||
ret = wc_Des3_SetKey(&ctx->cipher.des3, key, NULL,
|
||||
ctx->enc ? DES_ENCRYPTION : DES_DECRYPTION);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
#endif /* NO_DES3 */
|
||||
#ifndef NO_RC4
|
||||
if (ctx->cipherType == ARC4_TYPE || (type &&
|
||||
@@ -10328,6 +10452,15 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
ret = wc_AesCbcDecrypt(&ctx->cipher.aes, dst, src, len);
|
||||
break;
|
||||
#endif /* HAVE_AES_CBC */
|
||||
case AES_128_ECB_TYPE :
|
||||
case AES_192_ECB_TYPE :
|
||||
case AES_256_ECB_TYPE :
|
||||
WOLFSSL_MSG("AES ECB");
|
||||
if (ctx->enc)
|
||||
ret = wc_AesEcbEncrypt(&ctx->cipher.aes, dst, src, len);
|
||||
else
|
||||
ret = wc_AesEcbDecrypt(&ctx->cipher.aes, dst, src, len);
|
||||
break;
|
||||
#ifdef WOLFSSL_AES_COUNTER
|
||||
case AES_128_CTR_TYPE :
|
||||
case AES_192_CTR_TYPE :
|
||||
@@ -10345,13 +10478,28 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
else
|
||||
wc_Des_CbcDecrypt(&ctx->cipher.des, dst, src, len);
|
||||
break;
|
||||
|
||||
#ifdef WOLFSSL_DES_ECB
|
||||
case DES_ECB_TYPE :
|
||||
if (ctx->enc)
|
||||
wc_Des_EbcEncrypt(&ctx->cipher.des, dst, src, len);
|
||||
else
|
||||
wc_Des_EbcDecrypt(&ctx->cipher.des, dst, src, len);
|
||||
break;
|
||||
#endif
|
||||
case DES_EDE3_CBC_TYPE :
|
||||
if (ctx->enc)
|
||||
ret = wc_Des3_CbcEncrypt(&ctx->cipher.des3, dst, src, len);
|
||||
else
|
||||
ret = wc_Des3_CbcDecrypt(&ctx->cipher.des3, dst, src, len);
|
||||
break;
|
||||
#ifdef WOLFSSL_DES_ECB
|
||||
case DES_EDE3_ECB_TYPE :
|
||||
if (ctx->enc)
|
||||
ret = wc_Des3_EcbEncrypt(&ctx->cipher.des3, dst, src, len);
|
||||
else
|
||||
ret = wc_Des3_EcbDecrypt(&ctx->cipher.des3, dst, src, len);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef NO_RC4
|
||||
@@ -10387,6 +10535,8 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
||||
return SSL_SUCCESS; /* success */
|
||||
}
|
||||
|
||||
#include "wolfcrypt/src/evp.c"
|
||||
|
||||
|
||||
/* store for external read of iv, SSL_SUCCESS on success */
|
||||
int wolfSSL_StoreExternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx)
|
||||
|
@@ -2842,6 +2842,33 @@ int wc_InitAes_h(Aes* aes, void* h)
|
||||
#endif /* AES-CBC block */
|
||||
#endif /* HAVE_AES_CBC */
|
||||
|
||||
#ifdef HAVE_AES_ECB
|
||||
int wc_AesEcbEncrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
if((in == NULL) || (out == NULL) || (aes == NULL))
|
||||
return BAD_FUNC_ARG;
|
||||
while(sz>0){
|
||||
wc_AesEncryptDirect(aes, out, in);
|
||||
out += AES_BLOCK_SIZE;
|
||||
in += AES_BLOCK_SIZE;
|
||||
sz -= AES_BLOCK_SIZE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
if((in == NULL) || (out == NULL) || (aes == NULL))
|
||||
return BAD_FUNC_ARG;
|
||||
while(sz>0){
|
||||
wc_AesDecryptDirect(aes, out, in);
|
||||
out += AES_BLOCK_SIZE;
|
||||
in += AES_BLOCK_SIZE;
|
||||
sz -= AES_BLOCK_SIZE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* AES-CTR */
|
||||
#ifdef WOLFSSL_AES_COUNTER
|
||||
|
||||
|
@@ -76,6 +76,10 @@ int wc_Des_EcbEncrypt(Des* des, byte* out, const byte* in, word32 sz)
|
||||
return Des_EcbEncrypt(des, out, in, sz);
|
||||
}
|
||||
|
||||
int wc_Des3_EcbEncrypt(Des3* des, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
return Des3_EcbEncrypt(des, out, in, sz);
|
||||
}
|
||||
#endif /* WOLFSSL_DES_ECB */
|
||||
|
||||
|
||||
@@ -1626,6 +1630,21 @@ int wc_Des_EcbEncrypt(Des* des, byte* out, const byte* in, word32 sz)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int wc_Des3_EcbEncrypt(Des3* des, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
word32 blocks = sz / DES3_BLOCK_SIZE;
|
||||
printf("wc_Des3_EcbEncrypt(%016x, %016x, %d)\n",
|
||||
*(unsigned long *)in, *(unsigned long *)out, sz) ;
|
||||
|
||||
while (blocks--) {
|
||||
Des3ProcessBlock(des, in, out);
|
||||
|
||||
out += DES3_BLOCK_SIZE;
|
||||
in += DES3_BLOCK_SIZE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_DES_ECB */
|
||||
|
||||
#endif /* End wolfCrypt software implementation */
|
||||
|
214
wolfcrypt/src/evp.c
Normal file
214
wolfcrypt/src/evp.c
Normal file
@@ -0,0 +1,214 @@
|
||||
/* evp.c
|
||||
*
|
||||
* Copyright (C) 2006-2016 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
unsigned char* key, unsigned char* iv)
|
||||
{
|
||||
return wolfSSL_EVP_CipherInit(ctx, type, key, iv, 1);
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
WOLFSSL_ENGINE *impl,
|
||||
unsigned char* key, unsigned char* iv)
|
||||
{
|
||||
(void) impl;
|
||||
return wolfSSL_EVP_CipherInit(ctx, type, key, iv, 1);
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
unsigned char* key, unsigned char* iv)
|
||||
{
|
||||
return wolfSSL_EVP_CipherInit(ctx, type, key, iv, 0);
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
WOLFSSL_ENGINE *impl,
|
||||
unsigned char* key, unsigned char* iv)
|
||||
{
|
||||
(void) impl;
|
||||
return wolfSSL_EVP_CipherInit(ctx, type, key, iv, 0);
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
|
||||
const WOLFSSL_EVP_MD* type,
|
||||
WOLFSSL_ENGINE *impl)
|
||||
{
|
||||
(void) impl;
|
||||
return wolfSSL_EVP_DigestInit(ctx, type);
|
||||
}
|
||||
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX *ctx)
|
||||
{
|
||||
switch(ctx->cipherType){
|
||||
|
||||
#if !defined(NO_AES) && defined(HAVE_AES_CBC)
|
||||
case AES_128_CBC_TYPE:
|
||||
case AES_192_CBC_TYPE:
|
||||
case AES_256_CBC_TYPE:
|
||||
#endif
|
||||
#if !defined(NO_AES) && defined(WOLFSSL_AES_COUNTER)
|
||||
case AES_128_CTR_TYPE:
|
||||
case AES_192_CTR_TYPE:
|
||||
case AES_256_CTR_TYPE:
|
||||
#endif
|
||||
#if !defined(NO_AES)
|
||||
case AES_128_ECB_TYPE:
|
||||
case AES_192_ECB_TYPE:
|
||||
case AES_256_ECB_TYPE:
|
||||
#endif
|
||||
#ifndef NO_DES3
|
||||
case DES_CBC_TYPE:
|
||||
case DES_ECB_TYPE:
|
||||
case DES_EDE3_CBC_TYPE:
|
||||
case DES_EDE3_ECB_TYPE:
|
||||
#endif
|
||||
return ctx->block_size;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned char cipherType(const WOLFSSL_EVP_CIPHER *cipher)
|
||||
{
|
||||
if(0)return 0; /* dummy for #ifdef */
|
||||
#ifndef NO_DES3
|
||||
else if (XSTRNCMP(cipher, EVP_DES_CBC, EVP_DES_SIZE) == 0)
|
||||
return DES_CBC_TYPE;
|
||||
else if (XSTRNCMP(cipher, EVP_DES_EDE3_CBC, EVP_DES_EDE3_SIZE) == 0)
|
||||
return DES_EDE3_CBC_TYPE;
|
||||
#if !defined(NO_DES3)
|
||||
else if (XSTRNCMP(cipher, EVP_DES_ECB, EVP_DES_SIZE) == 0)
|
||||
return DES_ECB_TYPE;
|
||||
else if (XSTRNCMP(cipher, EVP_DES_EDE3_ECB, EVP_DES_EDE3_SIZE) == 0)
|
||||
return DES_EDE3_ECB_TYPE;
|
||||
#endif /* NO_DES3 && HAVE_AES_ECB */
|
||||
#endif
|
||||
|
||||
#if !defined(NO_AES) && defined(HAVE_AES_CBC)
|
||||
else if (XSTRNCMP(cipher, EVP_AES_128_CBC, EVP_AES_SIZE) == 0)
|
||||
return AES_128_CBC_TYPE;
|
||||
else if (XSTRNCMP(cipher, EVP_AES_192_CBC, EVP_AES_SIZE) == 0)
|
||||
return AES_192_CBC_TYPE;
|
||||
else if (XSTRNCMP(cipher, EVP_AES_256_CBC, EVP_AES_SIZE) == 0)
|
||||
return AES_256_CBC_TYPE;
|
||||
#endif /* !NO_AES && HAVE_AES_CBC */
|
||||
#if !defined(NO_AES) && defined(WOLFSSL_AES_COUNTER)
|
||||
else if (XSTRNCMP(cipher, EVP_AES_128_CTR, EVP_AES_SIZE) == 0)
|
||||
return AES_128_CTR_TYPE;
|
||||
else if (XSTRNCMP(cipher, EVP_AES_192_CTR, EVP_AES_SIZE) == 0)
|
||||
return AES_192_CTR_TYPE;
|
||||
else if (XSTRNCMP(cipher, EVP_AES_256_CTR, EVP_AES_SIZE) == 0)
|
||||
return AES_256_CTR_TYPE;
|
||||
#endif /* !NO_AES && HAVE_AES_CBC */
|
||||
#if !defined(NO_AES) && defined(HAVE_AES_ECB)
|
||||
else if (XSTRNCMP(cipher, EVP_AES_128_ECB, EVP_AES_SIZE) == 0)
|
||||
return AES_128_ECB_TYPE;
|
||||
else if (XSTRNCMP(cipher, EVP_AES_192_ECB, EVP_AES_SIZE) == 0)
|
||||
return AES_192_ECB_TYPE;
|
||||
else if (XSTRNCMP(cipher, EVP_AES_256_ECB, EVP_AES_SIZE) == 0)
|
||||
return AES_256_ECB_TYPE;
|
||||
#endif /* !NO_AES && HAVE_AES_CBC */
|
||||
else return 0;
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher)
|
||||
{
|
||||
switch(cipherType(cipher)){
|
||||
#if !defined(NO_AES) && defined(HAVE_AES_CBC)
|
||||
case AES_128_CBC_TYPE: return 16;
|
||||
case AES_192_CBC_TYPE: return 24;
|
||||
case AES_256_CBC_TYPE: return 32;
|
||||
#endif
|
||||
#if !defined(NO_AES) && defined(WOLFSSL_AES_COUNTER)
|
||||
case AES_128_CTR_TYPE: return 16;
|
||||
case AES_192_CTR_TYPE: return 24;
|
||||
case AES_256_CTR_TYPE: return 32;
|
||||
#endif
|
||||
#if !defined(NO_AES) && defined(HAVE_AES_ECB)
|
||||
case AES_128_ECB_TYPE: return 16;
|
||||
case AES_192_ECB_TYPE: return 24;
|
||||
case AES_256_ECB_TYPE: return 32;
|
||||
#endif
|
||||
#ifndef NO_DES3
|
||||
case DES_CBC_TYPE: return 8;
|
||||
case DES_EDE3_CBC_TYPE: return 8;
|
||||
case DES_ECB_TYPE: return 8;
|
||||
case DES_EDE3_ECB_TYPE: return 8;
|
||||
#endif
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
WOLFSSL_API unsigned long WOLFSSL_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher)
|
||||
{
|
||||
switch(cipherType(cipher)){
|
||||
#if !defined(NO_AES) && defined(HAVE_AES_CBC)
|
||||
case AES_128_CBC_TYPE:
|
||||
case AES_192_CBC_TYPE:
|
||||
case AES_256_CBC_TYPE:
|
||||
return WOLFSSL_EVP_CIPH_CBC_MODE ;
|
||||
#endif
|
||||
#if !defined(NO_AES) && defined(WOLFSSL_AES_COUNTER)
|
||||
case AES_128_CTR_TYPE:
|
||||
case AES_192_CTR_TYPE:
|
||||
case AES_256_CTR_TYPE:
|
||||
return WOLFSSL_EVP_CIPH_CTR_MODE ;
|
||||
#endif
|
||||
#if !defined(NO_AES)
|
||||
case AES_128_ECB_TYPE:
|
||||
case AES_192_ECB_TYPE:
|
||||
case AES_256_ECB_TYPE:
|
||||
return WOLFSSL_EVP_CIPH_ECB_MODE ;
|
||||
#endif
|
||||
#ifndef NO_DES3
|
||||
case DES_CBC_TYPE:
|
||||
case DES_EDE3_CBC_TYPE:
|
||||
return WOLFSSL_EVP_CIPH_CBC_MODE ;
|
||||
case DES_ECB_TYPE:
|
||||
case DES_EDE3_ECB_TYPE:
|
||||
return WOLFSSL_EVP_CIPH_ECB_MODE ;
|
||||
#endif
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_flags(const WOLFSSL_EVP_CIPHER *cipher)
|
||||
{
|
||||
return WOLFSSL_CIPHER_mode(cipher);
|
||||
}
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *ctx, int padding)
|
||||
{
|
||||
(void) ctx;
|
||||
(void) padding;
|
||||
/*
|
||||
if(padding)ctx->flags &= ~WOLFSSL_EVP_CIPH_NO_PADDING;
|
||||
else ctx->flags |= WOLFSSL_EVP_CIPH_NO_PADDING;
|
||||
*/
|
||||
return 0;
|
||||
}
|
@@ -6880,7 +6880,7 @@ int openssl_test(void)
|
||||
|
||||
#ifndef NO_AES
|
||||
|
||||
{ /* evp_cipher test */
|
||||
{ /* evp_cipher test: EVP_aes_128_cbc */
|
||||
EVP_CIPHER_CTX ctx;
|
||||
|
||||
|
||||
@@ -6923,7 +6923,57 @@ int openssl_test(void)
|
||||
return -86;
|
||||
|
||||
|
||||
} /* end evp_cipher test: EVP_aes_128_cbc*/
|
||||
|
||||
#ifdef HAVE_AES_ECB
|
||||
{ /* evp_cipher test: EVP_aes_128_ecb*/
|
||||
EVP_CIPHER_CTX ctx;
|
||||
const byte msg[] =
|
||||
{
|
||||
0x6b,0xc1,0xbe,0xe2,0x2e,0x40,0x9f,0x96,
|
||||
0xe9,0x3d,0x7e,0x11,0x73,0x93,0x17,0x2a
|
||||
};
|
||||
|
||||
const byte verify[] =
|
||||
{
|
||||
0xf3,0xee,0xd1,0xbd,0xb5,0xd2,0xa0,0x3c,
|
||||
0x06,0x4b,0x5a,0x7e,0x3d,0xb1,0x81,0xf8
|
||||
};
|
||||
|
||||
const byte key[] =
|
||||
{
|
||||
0x60,0x3d,0xeb,0x10,0x15,0xca,0x71,0xbe,
|
||||
0x2b,0x73,0xae,0xf0,0x85,0x7d,0x77,0x81,
|
||||
0x1f,0x35,0x2c,0x07,0x3b,0x61,0x08,0xd7,
|
||||
0x2d,0x98,0x10,0xa3,0x09,0x14,0xdf,0xf4
|
||||
};
|
||||
|
||||
|
||||
byte cipher[AES_BLOCK_SIZE * 4];
|
||||
byte plain [AES_BLOCK_SIZE * 4];
|
||||
|
||||
EVP_CIPHER_CTX_init(&ctx);
|
||||
if (EVP_CipherInit(&ctx, EVP_aes_256_ecb(), (unsigned char*)key, NULL, 1) == 0)
|
||||
return -181;
|
||||
|
||||
if (EVP_Cipher(&ctx, cipher, (byte*)msg, 16) == 0)
|
||||
return -182;
|
||||
|
||||
if (XMEMCMP(cipher, verify, AES_BLOCK_SIZE))
|
||||
return -183;
|
||||
|
||||
EVP_CIPHER_CTX_init(&ctx);
|
||||
if (EVP_CipherInit(&ctx, EVP_aes_256_ecb(), (unsigned char*)key, NULL, 0) == 0)
|
||||
return -184;
|
||||
|
||||
if (EVP_Cipher(&ctx, plain, cipher, 16) == 0)
|
||||
return -185;
|
||||
|
||||
if (XMEMCMP(plain, msg, AES_BLOCK_SIZE))
|
||||
return -186;
|
||||
|
||||
} /* end evp_cipher test */
|
||||
#endif
|
||||
|
||||
#endif /* NO_AES */
|
||||
|
||||
|
@@ -66,12 +66,17 @@ WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha384(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha512(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_ripemd160(void);
|
||||
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ecb(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ecb(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ecb(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cbc(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cbc(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cbc(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ctr(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ctr(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ctr(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ecb(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_ecb(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_cbc(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_cbc(void);
|
||||
WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_rc4(void);
|
||||
@@ -128,14 +133,19 @@ enum {
|
||||
AES_128_CTR_TYPE = 4,
|
||||
AES_192_CTR_TYPE = 5,
|
||||
AES_256_CTR_TYPE = 6,
|
||||
DES_CBC_TYPE = 7,
|
||||
DES_EDE3_CBC_TYPE = 8,
|
||||
ARC4_TYPE = 9,
|
||||
NULL_CIPHER_TYPE = 10,
|
||||
EVP_PKEY_RSA = 11,
|
||||
EVP_PKEY_DSA = 12,
|
||||
EVP_PKEY_EC = 13,
|
||||
IDEA_CBC_TYPE = 14,
|
||||
AES_128_ECB_TYPE = 7,
|
||||
AES_192_ECB_TYPE = 8,
|
||||
AES_256_ECB_TYPE = 9,
|
||||
DES_CBC_TYPE = 10,
|
||||
DES_ECB_TYPE = 11,
|
||||
DES_EDE3_CBC_TYPE = 12,
|
||||
DES_EDE3_ECB_TYPE = 13,
|
||||
ARC4_TYPE = 14,
|
||||
NULL_CIPHER_TYPE = 15,
|
||||
EVP_PKEY_RSA = 16,
|
||||
EVP_PKEY_DSA = 17,
|
||||
EVP_PKEY_EC = 18,
|
||||
IDEA_CBC_TYPE = 19,
|
||||
NID_sha1 = 64,
|
||||
NID_md2 = 3,
|
||||
NID_md5 = 4
|
||||
@@ -144,6 +154,7 @@ enum {
|
||||
|
||||
typedef struct WOLFSSL_EVP_CIPHER_CTX {
|
||||
int keyLen; /* user may set for variable */
|
||||
int block_size;
|
||||
unsigned char enc; /* if encrypt side, then true */
|
||||
unsigned char cipherType;
|
||||
#ifndef NO_AES
|
||||
@@ -154,6 +165,7 @@ typedef struct WOLFSSL_EVP_CIPHER_CTX {
|
||||
WOLFSSL_Cipher cipher;
|
||||
} WOLFSSL_EVP_CIPHER_CTX;
|
||||
|
||||
typedef int WOLFSSL_ENGINE ;
|
||||
|
||||
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);
|
||||
@@ -161,6 +173,9 @@ WOLFSSL_API int wolfSSL_EVP_MD_CTX_cleanup(WOLFSSL_EVP_MD_CTX* ctx);
|
||||
|
||||
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,
|
||||
const WOLFSSL_EVP_MD* type,
|
||||
WOLFSSL_ENGINE *impl);
|
||||
WOLFSSL_API int wolfSSL_EVP_DigestUpdate(WOLFSSL_EVP_MD_CTX* ctx, const void* data,
|
||||
unsigned long sz);
|
||||
WOLFSSL_API int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md,
|
||||
@@ -184,6 +199,38 @@ WOLFSSL_API int wolfSSL_EVP_CipherInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
unsigned char* key, unsigned char* iv,
|
||||
int enc);
|
||||
WOLFSSL_API int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
WOLFSSL_ENGINE *impl,
|
||||
unsigned char* key, unsigned char* iv,
|
||||
int enc);
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
unsigned char* key, unsigned char* iv);
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
WOLFSSL_ENGINE *impl,
|
||||
unsigned char* key, unsigned char* iv);
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
unsigned char* key, unsigned char* iv);
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
|
||||
const WOLFSSL_EVP_CIPHER* type,
|
||||
WOLFSSL_ENGINE *impl,
|
||||
unsigned char* key, unsigned char* iv);
|
||||
WOLFSSL_API int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl, int enc);
|
||||
WOLFSSL_API int wolfSSL_EVP_CipherFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl, int enc);
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl);
|
||||
WOLFSSL_API int wolfSSL_EVP_EncryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl);
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl);
|
||||
WOLFSSL_API int wolfSSL_EVP_DecryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
||||
unsigned char *out, int *outl);
|
||||
|
||||
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);
|
||||
@@ -209,6 +256,24 @@ WOLFSSL_API void wolfSSL_aes_ctr_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, int doset,
|
||||
WOLFSSL_API int wolfSSL_StoreExternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx);
|
||||
WOLFSSL_API int wolfSSL_SetInternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx);
|
||||
|
||||
WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX *ctx);
|
||||
WOLFSSL_API int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher);
|
||||
WOLFSSL_API unsigned long WOLFSSL_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher);
|
||||
WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_flags(const WOLFSSL_EVP_CIPHER *cipher);
|
||||
WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_set_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags);
|
||||
WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *c, int pad);
|
||||
|
||||
#define WOLFSSL_EVP_CIPH_MODE 0xF0007
|
||||
#define WOLFSSL_EVP_CIPH_STREAM_CIPHER 0x0
|
||||
#define WOLFSSL_EVP_CIPH_ECB_MODE 0x1
|
||||
#define WOLFSSL_EVP_CIPH_CBC_MODE 0x2
|
||||
#define WOLFSSL_EVP_CIPH_CFB_MODE 0x3
|
||||
#define WOLFSSL_EVP_CIPH_OFB_MODE 0x4
|
||||
#define WOLFSSL_EVP_CIPH_CTR_MODE 0x5
|
||||
#define WOLFSSL_EVP_CIPH_GCM_MODE 0x6
|
||||
#define WOLFSSL_EVP_CIPH_CCM_MODE 0x7
|
||||
|
||||
#define wolfSSL_EVP_CIPHER_CTX_flags(c) wolfSSL_EVP_CIPHER_flags(WOLFSSL_EVP_CIPHER_CTX_cipher(c))
|
||||
|
||||
/* end OpenSSH compat */
|
||||
|
||||
@@ -230,11 +295,16 @@ typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX;
|
||||
#define EVP_aes_128_cbc wolfSSL_EVP_aes_128_cbc
|
||||
#define EVP_aes_192_cbc wolfSSL_EVP_aes_192_cbc
|
||||
#define EVP_aes_256_cbc wolfSSL_EVP_aes_256_cbc
|
||||
#define EVP_aes_128_ecb wolfSSL_EVP_aes_128_ecb
|
||||
#define EVP_aes_192_ecb wolfSSL_EVP_aes_192_ecb
|
||||
#define EVP_aes_256_ecb wolfSSL_EVP_aes_256_ecb
|
||||
#define EVP_aes_128_ctr wolfSSL_EVP_aes_128_ctr
|
||||
#define EVP_aes_192_ctr wolfSSL_EVP_aes_192_ctr
|
||||
#define EVP_aes_256_ctr wolfSSL_EVP_aes_256_ctr
|
||||
#define EVP_des_cbc wolfSSL_EVP_des_cbc
|
||||
#define EVP_des_ecb wolfSSL_EVP_des_ecb
|
||||
#define EVP_des_ede3_cbc wolfSSL_EVP_des_ede3_cbc
|
||||
#define EVP_des_ede3_ecb wolfSSL_EVP_des_ede3_ecb
|
||||
#define EVP_rc4 wolfSSL_EVP_rc4
|
||||
#define EVP_idea_cbc wolfSSL_EVP_idea_cbc
|
||||
#define EVP_enc_null wolfSSL_EVP_enc_null
|
||||
@@ -254,6 +324,12 @@ typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX;
|
||||
#define EVP_CIPHER_CTX_key_length wolfSSL_EVP_CIPHER_CTX_key_length
|
||||
#define EVP_CIPHER_CTX_set_key_length wolfSSL_EVP_CIPHER_CTX_set_key_length
|
||||
#define EVP_CipherInit wolfSSL_EVP_CipherInit
|
||||
#define EVP_CipherInit_ex wolfSSL_EVP_CipherInit_ex
|
||||
#define EVP_EncryptInit wolfSSL_EVP_EncryptInit
|
||||
#define EVP_EncryptInit_ex wolfSSL_EVP_EncryptInit_ex
|
||||
#define EVP_DecryptInit wolfSSL_EVP_DecryptInit
|
||||
#define EVP_DecryptInit_ex wolfSSL_EVP_DecryptInit_ex
|
||||
|
||||
#define EVP_Cipher wolfSSL_EVP_Cipher
|
||||
|
||||
#define EVP_get_digestbynid wolfSSL_EVP_get_digestbynid
|
||||
@@ -262,6 +338,13 @@ typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX;
|
||||
#define EVP_PKEY_get1_DSA wolfSSL_EVP_PKEY_get1_DSA
|
||||
#define EVP_PKEY_get1_EC_KEY wolfSSL_EVP_PKEY_get1_EC_KEY
|
||||
|
||||
#define EVP_CIPHER_CTX_block_size wolfSSL_EVP_CIPHER_CTX_block_size
|
||||
#define EVP_CIPHER_block_size wolfSSL_EVP_CIPHER_block_size
|
||||
#define EVP_CIPHER_flags wolfSSL_EVP_CIPHER_flags
|
||||
#define EVP_CIPHER_CTX_set_flags wolfSSL_EVP_CIPHER_CTX_set_flags
|
||||
#define EVP_CIPHER_CTX_set_padding wolfSSL_EVP_CIPHER_CTX_set_padding
|
||||
#define EVP_CIPHER_CTX_flags wolfSSL_EVP_CIPHER_CTX_flags
|
||||
|
||||
|
||||
#ifndef EVP_MAX_MD_SIZE
|
||||
#define EVP_MAX_MD_SIZE 64 /* sha512 */
|
||||
|
@@ -123,6 +123,31 @@ WOLFSSL_API int wc_AesCbcEncrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
WOLFSSL_API int wc_AesCbcDecrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
WOLFSSL_API int wc_AesEcbEncrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
WOLFSSL_API int wc_AesEcbDecrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
|
||||
#ifdef HAVE_AES_ECB
|
||||
WOLFSSL_API int wc_AesEcbEncrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
WOLFSSL_API int wc_AesEcbDecrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_AES_ECB
|
||||
WOLFSSL_API int wc_AesEcbEncrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
WOLFSSL_API int wc_AesEcbDecrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_AES_ECB
|
||||
WOLFSSL_API int wc_AesEcbEncrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
WOLFSSL_API int wc_AesEcbDecrypt(Aes* aes, byte* out,
|
||||
const byte* in, word32 sz);
|
||||
#endif
|
||||
|
||||
/* AES-CTR */
|
||||
#ifdef WOLFSSL_AES_COUNTER
|
||||
@@ -192,4 +217,3 @@ WOLFSSL_API int wc_AesGetKeySize(Aes* aes, word32* keySize);
|
||||
|
||||
#endif /* NO_AES */
|
||||
#endif /* WOLF_CRYPT_AES_H */
|
||||
|
||||
|
Reference in New Issue
Block a user