Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cCipherAES.cpp File Reference
#include "pch.h"
#include "Cipher/cCipherAES.h"
#include "GrayCore/include/cBits.h"

Namespaces

 GrayLib
 

Macros

#define MUL(x, y)   ((x && y) ? pow[(log[x] + log[y]) % 255] : 0)
 
#define AES_FROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3)
 
#define AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3)
 

Detailed Description

FIPS-197 compliant AES implementation The AES block cipher was designed by Vincent Rijmen and Joan Daemen. http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

Macro Definition Documentation

◆ AES_FROUND

#define AES_FROUND (   X0,
  X1,
  X2,
  X3,
  Y0,
  Y1,
  Y2,
  Y3 
)
Value:
{ \
X0 = *pRK++ ^ s_T->m_FT0[ (Y0) & 0xFF ] ^ \
s_T->m_FT1[ ( Y1 >> 8 ) & 0xFF ] ^ \
s_T->m_FT2[ ( Y2 >> 16 ) & 0xFF ] ^ \
s_T->m_FT3[ ( Y3 >> 24 ) & 0xFF ]; \
\
X1 = *pRK++ ^ s_T->m_FT0[ (Y1) & 0xFF ] ^ \
s_T->m_FT1[ ( Y2 >> 8 ) & 0xFF ] ^ \
s_T->m_FT2[ ( Y3 >> 16 ) & 0xFF ] ^ \
s_T->m_FT3[ ( Y0 >> 24 ) & 0xFF ]; \
\
X2 = *pRK++ ^ s_T->m_FT0[ (Y2) & 0xFF ] ^ \
s_T->m_FT1[ ( Y3 >> 8 ) & 0xFF ] ^ \
s_T->m_FT2[ ( Y0 >> 16 ) & 0xFF ] ^ \
s_T->m_FT3[ ( Y1 >> 24 ) & 0xFF ]; \
\
X3 = *pRK++ ^ s_T->m_FT0[ (Y3) & 0xFF ] ^ \
s_T->m_FT1[ ( Y0 >> 8 ) & 0xFF ] ^ \
s_T->m_FT2[ ( Y1 >> 16 ) & 0xFF ] ^ \
s_T->m_FT3[ ( Y2 >> 24 ) & 0xFF ]; \
}

◆ AES_RROUND

#define AES_RROUND (   X0,
  X1,
  X2,
  X3,
  Y0,
  Y1,
  Y2,
  Y3 
)
Value:
{ \
X0 = *pRK++ ^ s_T->m_RT0[ (Y0) & 0xFF ] ^ \
s_T->m_RT1[ ( Y3 >> 8 ) & 0xFF ] ^ \
s_T->m_RT2[ ( Y2 >> 16 ) & 0xFF ] ^ \
s_T->m_RT3[ ( Y1 >> 24 ) & 0xFF ]; \
\
X1 = *pRK++ ^ s_T->m_RT0[ (Y1) & 0xFF ] ^ \
s_T->m_RT1[ ( Y0 >> 8 ) & 0xFF ] ^ \
s_T->m_RT2[ ( Y3 >> 16 ) & 0xFF ] ^ \
s_T->m_RT3[ ( Y2 >> 24 ) & 0xFF ]; \
\
X2 = *pRK++ ^ s_T->m_RT0[ (Y2) & 0xFF ] ^ \
s_T->m_RT1[ ( Y1 >> 8 ) & 0xFF ] ^ \
s_T->m_RT2[ ( Y0 >> 16 ) & 0xFF ] ^ \
s_T->m_RT3[ ( Y3 >> 24 ) & 0xFF ]; \
\
X3 = *pRK++ ^ s_T->m_RT0[ (Y3) & 0xFF ] ^ \
s_T->m_RT1[ ( Y2 >> 8 ) & 0xFF ] ^ \
s_T->m_RT2[ ( Y1 >> 16 ) & 0xFF ] ^ \
s_T->m_RT3[ ( Y0 >> 24 ) & 0xFF ]; \
}

◆ MUL

#define MUL (   x,
 
)    ((x && y) ? pow[(log[x] + log[y]) % 255] : 0)