mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-04 05:04:41 +02:00
Added comments in aes.c for locating software implementation of algorithm using Software AES
.
This commit is contained in:
@@ -29,6 +29,8 @@
|
||||
|
||||
#if !defined(NO_AES)
|
||||
|
||||
/* Tip: Locate the software cipher modes by searching for "Software AES" */
|
||||
|
||||
#if defined(HAVE_FIPS) && \
|
||||
defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)
|
||||
|
||||
@@ -737,7 +739,7 @@
|
||||
|
||||
#else
|
||||
|
||||
/* using wolfCrypt software AES implementation */
|
||||
/* using wolfCrypt software implementation */
|
||||
#define NEED_AES_TABLES
|
||||
#endif
|
||||
|
||||
@@ -1360,7 +1362,7 @@ static WC_INLINE word32 PreFetchTe(void)
|
||||
return x;
|
||||
}
|
||||
|
||||
|
||||
/* Software AES - ECB Encrypt */
|
||||
static void wc_AesEncrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
||||
{
|
||||
word32 s0, s1, s2, s3;
|
||||
@@ -1370,7 +1372,7 @@ static void wc_AesEncrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
||||
|
||||
if (r > 7 || r == 0) {
|
||||
WOLFSSL_MSG("AesEncrypt encountered improper key, set it up");
|
||||
return; /* stop instead of segfaulting, set up your keys! */
|
||||
return; /* stop instead of seg-faulting, set up your keys! */
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_AESNI
|
||||
@@ -1579,6 +1581,7 @@ static WC_INLINE word32 PreFetchTd4(void)
|
||||
return x;
|
||||
}
|
||||
|
||||
/* Software AES - ECB Decrypt */
|
||||
static void wc_AesDecrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
||||
{
|
||||
word32 s0, s1, s2, s3;
|
||||
@@ -1588,7 +1591,7 @@ static void wc_AesDecrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
||||
const word32* rk = aes->key;
|
||||
if (r > 7 || r == 0) {
|
||||
WOLFSSL_MSG("AesDecrypt encountered improper key, set it up");
|
||||
return; /* stop instead of segfaulting, set up your keys! */
|
||||
return; /* stop instead of seg-faulting, set up your keys! */
|
||||
}
|
||||
#ifdef WOLFSSL_AESNI
|
||||
if (haveAESNI && aes->use_aesni) {
|
||||
@@ -1955,6 +1958,8 @@ static void wc_AesDecrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
||||
/* implemented in wolfcrypt/src/port/devcrypto/devcrypto_aes.c */
|
||||
|
||||
#else
|
||||
|
||||
/* Software AES - SetKey */
|
||||
static int wc_AesSetKeyLocal(Aes* aes, const byte* userKey, word32 keylen,
|
||||
const byte* iv, int dir)
|
||||
{
|
||||
@@ -2828,6 +2833,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
|
||||
#else
|
||||
|
||||
/* Software AES - CBC Encrypt */
|
||||
int wc_AesCbcEncrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
word32 blocks = (sz / AES_BLOCK_SIZE);
|
||||
@@ -2917,6 +2923,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
}
|
||||
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
/* Software AES - CBC Decrypt */
|
||||
int wc_AesCbcDecrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
word32 blocks;
|
||||
@@ -3171,6 +3178,7 @@ int wc_AesSetIV(Aes* aes, const byte* iv)
|
||||
}
|
||||
}
|
||||
|
||||
/* Software AES - CTR Encrypt */
|
||||
int wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
byte* tmp;
|
||||
@@ -3348,7 +3356,7 @@ static void GenerateM0(Aes* aes)
|
||||
|
||||
#endif /* GCM_TABLE */
|
||||
|
||||
|
||||
/* Software AES - GCM SetKey */
|
||||
int wc_AesGcmSetKey(Aes* aes, const byte* key, word32 len)
|
||||
{
|
||||
int ret;
|
||||
@@ -8367,6 +8375,7 @@ int AES_GCM_encrypt_C(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Software AES - GCM Encrypt */
|
||||
int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
const byte* iv, word32 ivSz,
|
||||
byte* authTag, word32 authTagSz,
|
||||
@@ -8452,8 +8461,6 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
}
|
||||
#endif /* WOLFSSL_ASYNC_CRYPT */
|
||||
|
||||
/* Software AES-GCM */
|
||||
|
||||
#ifdef WOLFSSL_AESNI
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(intel_flags)) {
|
||||
@@ -8765,6 +8772,7 @@ int AES_GCM_decrypt_C(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Software AES - GCM Decrypt */
|
||||
int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
const byte* iv, word32 ivSz,
|
||||
const byte* authTag, word32 authTagSz,
|
||||
@@ -8852,8 +8860,6 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
}
|
||||
#endif /* WOLFSSL_ASYNC_CRYPT */
|
||||
|
||||
/* software AES GCM */
|
||||
|
||||
#ifdef WOLFSSL_AESNI
|
||||
#ifdef HAVE_INTEL_AVX2
|
||||
if (IS_INTEL_AVX2(intel_flags)) {
|
||||
@@ -9155,10 +9161,9 @@ int wc_AesCcmDecrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||
}
|
||||
#endif /* HAVE_AES_DECRYPT */
|
||||
|
||||
|
||||
/* software AES CCM */
|
||||
#else
|
||||
|
||||
/* Software CCM */
|
||||
static void roll_x(Aes* aes, const byte* in, word32 inSz, byte* out)
|
||||
{
|
||||
/* process the bulk of the data */
|
||||
@@ -9231,6 +9236,7 @@ static WC_INLINE void AesCcmCtrInc(byte* B, word32 lenSz)
|
||||
}
|
||||
}
|
||||
|
||||
/* Software AES - CCM Encrypt */
|
||||
/* return 0 on success */
|
||||
int wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||
const byte* nonce, word32 nonceSz,
|
||||
@@ -9299,6 +9305,7 @@ int wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||
}
|
||||
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
/* Software AES - CCM Decrypt */
|
||||
int wc_AesCcmDecrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||
const byte* nonce, word32 nonceSz,
|
||||
const byte* authTag, word32 authTagSz,
|
||||
@@ -9390,7 +9397,7 @@ int wc_AesCcmDecrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||
}
|
||||
|
||||
#endif /* HAVE_AES_DECRYPT */
|
||||
#endif /* software AES CCM */
|
||||
#endif /* software CCM */
|
||||
|
||||
/* abstract functions that call lower level AESCCM functions */
|
||||
#ifndef WC_NO_RNG
|
||||
@@ -9584,7 +9591,7 @@ int wc_AesGetKeySize(Aes* aes, word32* keySize)
|
||||
|
||||
#else
|
||||
|
||||
/* software implementation */
|
||||
/* Software AES - ECB */
|
||||
int wc_AesEcbEncrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
word32 blocks = sz / AES_BLOCK_SIZE;
|
||||
@@ -9631,6 +9638,7 @@ int wc_AesEcbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
*
|
||||
* returns 0 on success and negative error values on failure
|
||||
*/
|
||||
/* Software AES - CFB Encrypt */
|
||||
int wc_AesCfbEncrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
byte* tmp = NULL;
|
||||
@@ -9692,6 +9700,7 @@ int wc_AesCfbEncrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
*
|
||||
* returns 0 on success and negative error values on failure
|
||||
*/
|
||||
/* Software AES - CFB Decrypt */
|
||||
int wc_AesCfbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
{
|
||||
byte* tmp;
|
||||
@@ -10070,7 +10079,7 @@ static int _AesXtsHelper(Aes* aes, byte* out, const byte* in, word32 sz, int dir
|
||||
word32 j;
|
||||
byte carry = 0;
|
||||
|
||||
/* multiply by shift left and propogate carry */
|
||||
/* multiply by shift left and propagate carry */
|
||||
for (j = 0; j < AES_BLOCK_SIZE && outSz > 0; j++, outSz--) {
|
||||
byte tmpC;
|
||||
|
||||
@@ -10108,6 +10117,7 @@ static int _AesXtsHelper(Aes* aes, byte* out, const byte* in, word32 sz, int dir
|
||||
*
|
||||
* returns 0 on success
|
||||
*/
|
||||
/* Software AES - XTS Encrypt */
|
||||
int wc_AesXtsEncrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||
const byte* i, word32 iSz)
|
||||
{
|
||||
@@ -10160,7 +10170,7 @@ int wc_AesXtsEncrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||
#endif
|
||||
xorbuf(out, tmp, AES_BLOCK_SIZE);
|
||||
|
||||
/* multiply by shift left and propogate carry */
|
||||
/* multiply by shift left and propagate carry */
|
||||
for (j = 0; j < AES_BLOCK_SIZE; j++) {
|
||||
byte tmpC;
|
||||
|
||||
@@ -10215,6 +10225,7 @@ int wc_AesXtsEncrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||
*
|
||||
* returns 0 on success
|
||||
*/
|
||||
/* Software AES - XTS Decrypt */
|
||||
int wc_AesXtsDecrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||
const byte* i, word32 iSz)
|
||||
{
|
||||
@@ -10274,7 +10285,7 @@ int wc_AesXtsDecrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||
#endif
|
||||
xorbuf(out, tmp, AES_BLOCK_SIZE);
|
||||
|
||||
/* multiply by shift left and propogate carry */
|
||||
/* multiply by shift left and propagate carry */
|
||||
for (j = 0; j < AES_BLOCK_SIZE; j++) {
|
||||
byte tmpC;
|
||||
|
||||
@@ -10298,7 +10309,7 @@ int wc_AesXtsDecrypt(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||
byte buf[AES_BLOCK_SIZE];
|
||||
byte tmp2[AES_BLOCK_SIZE];
|
||||
|
||||
/* multiply by shift left and propogate carry */
|
||||
/* multiply by shift left and propagate carry */
|
||||
for (j = 0; j < AES_BLOCK_SIZE; j++) {
|
||||
byte tmpC;
|
||||
|
||||
|
Reference in New Issue
Block a user