Skip to content

Commit

Permalink
AES: Improve XOR routines
Browse files Browse the repository at this point in the history
  • Loading branch information
Sainan committed Dec 1, 2024
1 parent bed1296 commit d61175d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
8 changes: 7 additions & 1 deletion soup/aes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -875,9 +875,15 @@ NAMESPACE_SOUP

void aes::xorBlocks(uint8_t a[16], const uint8_t b[16]) noexcept
{
#if SOUP_BITS == 64
#if SOUP_BITS >= 64
// Could use _mm_xor_si128 if target supports SSE2
reinterpret_cast<uint64_t*>(a)[0] ^= reinterpret_cast<const uint64_t*>(b)[0];
reinterpret_cast<uint64_t*>(a)[1] ^= reinterpret_cast<const uint64_t*>(b)[1];
#elif SOUP_BITS >= 32
reinterpret_cast<uint32_t*>(a)[0] ^= reinterpret_cast<const uint32_t*>(b)[0];
reinterpret_cast<uint32_t*>(a)[1] ^= reinterpret_cast<const uint32_t*>(b)[1];
reinterpret_cast<uint32_t*>(a)[2] ^= reinterpret_cast<const uint32_t*>(b)[2];
reinterpret_cast<uint32_t*>(a)[3] ^= reinterpret_cast<const uint32_t*>(b)[3];
#else
for (unsigned int i = 0; i != 16; ++i)
{
Expand Down
2 changes: 1 addition & 1 deletion soup/aes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ NAMESPACE_SOUP
static void encryptBlock(const uint8_t in[16], uint8_t out[16], const uint8_t roundKeys[240], const int Nr) noexcept;
static void decryptBlock(const uint8_t in[16], uint8_t out[16], const uint8_t roundKeys[240], const int Nr) noexcept;
static SOUP_FORCEINLINE void xorBlocks(uint8_t a[16], const uint8_t b[16]) noexcept;
static void xorBlocks(uint8_t a[], const uint8_t b[], unsigned int len) noexcept;
static SOUP_FORCEINLINE void xorBlocks(uint8_t a[], const uint8_t b[], unsigned int len) noexcept;

static void ghash(uint8_t res[16], const uint8_t h[16], const std::vector<uint8_t>& x) noexcept;
static void calcH(uint8_t h[16], uint8_t roundKeys[240], const int Nr) noexcept;
Expand Down

0 comments on commit d61175d

Please sign in to comment.