add Aes SetIV fips mode

This commit is contained in:
toddouska
2014-03-24 14:01:36 -07:00
parent 0ea10a4388
commit 8c5d958a8b
3 changed files with 33 additions and 15 deletions

View File

@@ -154,6 +154,7 @@ CYASSL_API int AesCcmDecrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
/* fips wrapper calls, user can call direct */ /* fips wrapper calls, user can call direct */
CYASSL_API int AesSetKey_fips(Aes* aes, const byte* key, word32 len, CYASSL_API int AesSetKey_fips(Aes* aes, const byte* key, word32 len,
const byte* iv, int dir); const byte* iv, int dir);
CYASSL_API int AesSetIV_fips(Aes* aes, const byte* iv);
CYASSL_API int AesCbcEncrypt_fips(Aes* aes, byte* out, const byte* in, CYASSL_API int AesCbcEncrypt_fips(Aes* aes, byte* out, const byte* in,
word32 sz); word32 sz);
CYASSL_API int AesCbcDecrypt_fips(Aes* aes, byte* out, const byte* in, CYASSL_API int AesCbcDecrypt_fips(Aes* aes, byte* out, const byte* in,
@@ -161,6 +162,7 @@ CYASSL_API int AesCcmDecrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
#ifndef FIPS_NO_WRAPPERS #ifndef FIPS_NO_WRAPPERS
/* if not impl or fips.c impl wrapper force fips calls if fips build */ /* if not impl or fips.c impl wrapper force fips calls if fips build */
#define AesSetKey AesSetKey_fips #define AesSetKey AesSetKey_fips
#define AesSetIV AesSetIV_fips
#define AesCbcEncrypt AesCbcEncrypt_fips #define AesCbcEncrypt AesCbcEncrypt_fips
#define AesCbcDecrypt AesCbcDecrypt_fips #define AesCbcDecrypt AesCbcDecrypt_fips
#endif /* FIPS_NO_WRAPPERS */ #endif /* FIPS_NO_WRAPPERS */

View File

@@ -416,9 +416,7 @@ int CRYPT_AES_IvSet(CRYPT_AES_CTX* aes, const unsigned char* iv)
if (aes == NULL || iv == NULL) if (aes == NULL || iv == NULL)
return BAD_FUNC_ARG; return BAD_FUNC_ARG;
AesSetIV((Aes*)aes, iv); return AesSetIV((Aes*)aes, iv);
return 0;
} }

View File

@@ -6765,8 +6765,11 @@ int CyaSSL_set_compression(CYASSL* ssl)
if (ret != 0) if (ret != 0)
return ret; return ret;
} }
if (iv && key == NULL) if (iv && key == NULL) {
AesSetIV(&ctx->cipher.aes, iv); ret = AesSetIV(&ctx->cipher.aes, iv);
if (ret != 0)
return ret;
}
} }
else if (ctx->cipherType == AES_192_CBC_TYPE || (type && else if (ctx->cipherType == AES_192_CBC_TYPE || (type &&
XSTRNCMP(type, "AES192-CBC", 10) == 0)) { XSTRNCMP(type, "AES192-CBC", 10) == 0)) {
@@ -6781,8 +6784,11 @@ int CyaSSL_set_compression(CYASSL* ssl)
if (ret != 0) if (ret != 0)
return ret; return ret;
} }
if (iv && key == NULL) if (iv && key == NULL) {
AesSetIV(&ctx->cipher.aes, iv); ret = AesSetIV(&ctx->cipher.aes, iv);
if (ret != 0)
return ret;
}
} }
else if (ctx->cipherType == AES_256_CBC_TYPE || (type && else if (ctx->cipherType == AES_256_CBC_TYPE || (type &&
XSTRNCMP(type, "AES256-CBC", 10) == 0)) { XSTRNCMP(type, "AES256-CBC", 10) == 0)) {
@@ -6797,8 +6803,11 @@ int CyaSSL_set_compression(CYASSL* ssl)
if (ret != 0) if (ret != 0)
return ret; return ret;
} }
if (iv && key == NULL) if (iv && key == NULL) {
AesSetIV(&ctx->cipher.aes, iv); ret = AesSetIV(&ctx->cipher.aes, iv);
if (ret != 0)
return ret;
}
} }
#ifdef CYASSL_AES_COUNTER #ifdef CYASSL_AES_COUNTER
else if (ctx->cipherType == AES_128_CTR_TYPE || (type && else if (ctx->cipherType == AES_128_CTR_TYPE || (type &&
@@ -6814,8 +6823,11 @@ int CyaSSL_set_compression(CYASSL* ssl)
if (ret != 0) if (ret != 0)
return ret; return ret;
} }
if (iv && key == NULL) if (iv && key == NULL) {
AesSetIV(&ctx->cipher.aes, iv); ret = AesSetIV(&ctx->cipher.aes, iv);
if (ret != 0)
return ret;
}
} }
else if (ctx->cipherType == AES_192_CTR_TYPE || (type && else if (ctx->cipherType == AES_192_CTR_TYPE || (type &&
XSTRNCMP(type, "AES192-CTR", 10) == 0)) { XSTRNCMP(type, "AES192-CTR", 10) == 0)) {
@@ -6830,8 +6842,11 @@ int CyaSSL_set_compression(CYASSL* ssl)
if (ret != 0) if (ret != 0)
return ret; return ret;
} }
if (iv && key == NULL) if (iv && key == NULL) {
AesSetIV(&ctx->cipher.aes, iv); ret = AesSetIV(&ctx->cipher.aes, iv);
if (ret != 0)
return ret;
}
} }
else if (ctx->cipherType == AES_256_CTR_TYPE || (type && else if (ctx->cipherType == AES_256_CTR_TYPE || (type &&
XSTRNCMP(type, "AES256-CTR", 10) == 0)) { XSTRNCMP(type, "AES256-CTR", 10) == 0)) {
@@ -6846,8 +6861,11 @@ int CyaSSL_set_compression(CYASSL* ssl)
if (ret != 0) if (ret != 0)
return ret; return ret;
} }
if (iv && key == NULL) if (iv && key == NULL) {
AesSetIV(&ctx->cipher.aes, iv); ret = AesSetIV(&ctx->cipher.aes, iv);
if (ret != 0)
return ret;
}
} }
#endif /* CYASSL_AES_CTR */ #endif /* CYASSL_AES_CTR */
else if (ctx->cipherType == DES_CBC_TYPE || (type && else if (ctx->cipherType == DES_CBC_TYPE || (type &&