Botan  1.11.15
Namespaces | Defines | Functions
src/lib/block/aes_ni/aes_ni.cpp File Reference
#include <botan/internal/block_utils.h>
#include <botan/aes_ni.h>
#include <botan/cpuid.h>
#include <wmmintrin.h>

Go to the source code of this file.

Namespaces

namespace  Botan

Defines

#define AES_128_key_exp(K, RCON)   aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
#define AES_192_key_exp(RCON, EK_OFF)
#define AES_DEC_4_LAST_ROUNDS(K)
#define AES_DEC_4_ROUNDS(K)
#define AES_ENC_4_LAST_ROUNDS(K)
#define AES_ENC_4_ROUNDS(K)

Functions

 Botan::BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF (CPUID::has_aes_ni(), AES_128_NI,"AES-128","aes_ni", 16)
 Botan::BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF (CPUID::has_aes_ni(), AES_192_NI,"AES-192","aes_ni", 16)
 Botan::BOTAN_REGISTER_BLOCK_CIPHER_NOARGS_IF (CPUID::has_aes_ni(), AES_256_NI,"AES-256","aes_ni", 16)

Define Documentation

#define AES_128_key_exp (   K,
  RCON 
)    aes_128_key_expansion(K, _mm_aeskeygenassist_si128(K, RCON))
#define AES_192_key_exp (   RCON,
  EK_OFF 
)
Value:
aes_192_key_expansion(&K0, &K1,                             \
                           _mm_aeskeygenassist_si128(K1, RCON),  \
                           &EK[EK_OFF], EK_OFF == 48)
#define AES_DEC_4_LAST_ROUNDS (   K)
Value:
do                                           \
      {                                         \
      B0 = _mm_aesdeclast_si128(B0, K);         \
      B1 = _mm_aesdeclast_si128(B1, K);         \
      B2 = _mm_aesdeclast_si128(B2, K);         \
      B3 = _mm_aesdeclast_si128(B3, K);         \
      } while(0)

Definition at line 99 of file aes_ni.cpp.

Referenced by Botan::AES_128_NI::decrypt_n(), Botan::AES_192_NI::decrypt_n(), and Botan::AES_256_NI::decrypt_n().

#define AES_DEC_4_ROUNDS (   K)
Value:
do                                           \
      {                                         \
      B0 = _mm_aesdec_si128(B0, K);             \
      B1 = _mm_aesdec_si128(B1, K);             \
      B2 = _mm_aesdec_si128(B2, K);             \
      B3 = _mm_aesdec_si128(B3, K);             \
      } while(0)

Definition at line 90 of file aes_ni.cpp.

Referenced by Botan::AES_128_NI::decrypt_n(), Botan::AES_192_NI::decrypt_n(), and Botan::AES_256_NI::decrypt_n().

#define AES_ENC_4_LAST_ROUNDS (   K)
Value:
do                                           \
      {                                         \
      B0 = _mm_aesenclast_si128(B0, K);         \
      B1 = _mm_aesenclast_si128(B1, K);         \
      B2 = _mm_aesenclast_si128(B2, K);         \
      B3 = _mm_aesenclast_si128(B3, K);         \
      } while(0)

Definition at line 81 of file aes_ni.cpp.

Referenced by Botan::AES_128_NI::encrypt_n(), Botan::AES_192_NI::encrypt_n(), and Botan::AES_256_NI::encrypt_n().

#define AES_ENC_4_ROUNDS (   K)
Value:
do                                           \
      {                                         \
      B0 = _mm_aesenc_si128(B0, K);             \
      B1 = _mm_aesenc_si128(B1, K);             \
      B2 = _mm_aesenc_si128(B2, K);             \
      B3 = _mm_aesenc_si128(B3, K);             \
      } while(0)

Definition at line 72 of file aes_ni.cpp.

Referenced by Botan::AES_128_NI::encrypt_n(), Botan::AES_192_NI::encrypt_n(), and Botan::AES_256_NI::encrypt_n().