8 #include <botan/noekeon_simd.h>     9 #include <botan/internal/simd_32.h>    16 #define NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3)  \    18       SIMD_32 T = A0 ^ A2;                              \    21       T_l8.rotate_left(8);                              \    22       T_r8.rotate_right(8);                             \    36       T_l8.rotate_left(8);                              \    37       T_r8.rotate_right(8);                             \    47 #define NOK_SIMD_GAMMA(A0, A1, A2, A3)                                  \    70    SIMD_32 K0 = SIMD_32(EK[0]);
    71    SIMD_32 K1 = SIMD_32(EK[1]);
    72    SIMD_32 K2 = SIMD_32(EK[2]);
    73    SIMD_32 K3 = SIMD_32(EK[3]);
    82       SIMD_32::transpose(A0, A1, A2, A3);
    84       for(
size_t i = 0; i != 16; ++i)
   101       A0 ^= SIMD_32(
RC[16]);
   104       SIMD_32::transpose(A0, A1, A2, A3);
   107       A1.store_be(out + 16);
   108       A2.store_be(out + 32);
   109       A3.store_be(out + 48);
   127    SIMD_32 K0 = SIMD_32(DK[0]);
   128    SIMD_32 K1 = SIMD_32(DK[1]);
   129    SIMD_32 K2 = SIMD_32(DK[2]);
   130    SIMD_32 K3 = SIMD_32(DK[3]);
   139       SIMD_32::transpose(A0, A1, A2, A3);
   141       for(
size_t i = 0; i != 16; ++i)
   145          A0 ^= SIMD_32(
RC[16-i]);
   159       A0 ^= SIMD_32(
RC[0]);
   161       SIMD_32::transpose(A0, A1, A2, A3);
   164       A1.store_be(out + 16);
   165       A2.store_be(out + 32);
   166       A3.store_be(out + 48);
 T load_be(const byte in[], size_t off)
void encrypt_n(const byte in[], byte out[], size_t blocks) const
#define NOK_SIMD_GAMMA(A0, A1, A2, A3)
void encrypt_n(const byte in[], byte out[], size_t blocks) const
#define NOK_SIMD_THETA(A0, A1, A2, A3, K0, K1, K2, K3)
void decrypt_n(const byte in[], byte out[], size_t blocks) const
void decrypt_n(const byte in[], byte out[], size_t blocks) const
const SecureVector< u32bit > & get_DK() const
const SecureVector< u32bit > & get_EK() const