From 2b328e8f8bbcb96d28d6978e8e04a66715b49cde Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 30 Sep 2016 09:31:23 -0400 Subject: [PATCH] Fix AES and X86 compile on Solaris --- rijndael.cpp | 16 +++++++++------- rijndael.h | 5 +---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/rijndael.cpp b/rijndael.cpp index ffab6a64..eba60b41 100644 --- a/rijndael.cpp +++ b/rijndael.cpp @@ -1250,7 +1250,7 @@ inline size_t AESNI_AdvancedProcessBlocks(F1 func1, F4 func4, MAYBE_CONST __m128 } #endif -#if (CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE || defined(CRYPTOPP_X64_MASM_AVAILABLE)) && !defined(CRYPTOPP_DISABLE_RIJNDAEL_ASM) +#if CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X86 struct Locals { word32 subkeys[4*12], workspace[8]; @@ -1260,9 +1260,11 @@ struct Locals size_t regSpill, lengthAndCounterFlag, keysBegin; }; -const size_t Rijndael::Enc::aliasPageSize = 4096; -const size_t Rijndael::Enc::aliasBlockSize = 256; -const size_t Rijndael::Enc::sizeToAllocate = aliasPageSize + aliasBlockSize + sizeof(Locals); +const size_t s_aliasPageSize = 4096; +const size_t s_aliasBlockSize = 256; +const size_t s_sizeToAllocate = s_aliasPageSize + s_aliasBlockSize + sizeof(Locals); + +Rijndael::Enc::Enc() : m_aliasBlock(s_sizeToAllocate) { } #endif size_t Rijndael::Enc::AdvancedProcessBlocks(const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) const @@ -1278,15 +1280,15 @@ size_t Rijndael::Enc::AdvancedProcessBlocks(const byte *inBlocks, const byte *xo if (length < BLOCKSIZE) return length; - static const byte *zeros = (const byte*)(Te+aliasBlockSize); + static const byte *zeros = (const byte*)(Te+256); byte *space = NULL, *originalSpace = const_cast(m_aliasBlock.data()); // round up to nearest 256 byte boundary - space = originalSpace + (aliasBlockSize - (uintptr_t)originalSpace % aliasBlockSize) % aliasBlockSize; + space = originalSpace + (s_aliasBlockSize - (uintptr_t)originalSpace % s_aliasBlockSize) % s_aliasBlockSize; while (AliasedWithTable(space, space + sizeof(Locals))) { space += 256; - CRYPTOPP_ASSERT(space < (originalSpace + aliasPageSize)); + CRYPTOPP_ASSERT(space < (originalSpace + s_aliasPageSize)); } size_t increment = BLOCKSIZE; diff --git a/rijndael.h b/rijndael.h index a5c61994..5b334ffc 100644 --- a/rijndael.h +++ b/rijndael.h @@ -56,12 +56,9 @@ class CRYPTOPP_DLL Rijndael : public Rijndael_Info, public BlockCipherDocumentat public: void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const; #if CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X86 - Enc() : m_aliasBlock(sizeToAllocate) {} + Enc(); size_t AdvancedProcessBlocks(const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) const; private: - static const size_t aliasPageSize; - static const size_t aliasBlockSize; - static const size_t sizeToAllocate; SecByteBlock m_aliasBlock; #endif };