diff --git a/rijndael-simd.cpp b/rijndael-simd.cpp index dd160396..78390a4c 100644 --- a/rijndael-simd.cpp +++ b/rijndael-simd.cpp @@ -446,8 +446,9 @@ static inline void AESNI_Dec_4_Blocks(__m128i &block0, __m128i &block1, __m128i ANONYMOUS_NAMESPACE_END -void Rijndael_UncheckedSetKey_SSE4_AESNI(const byte *userKey, size_t keyLen, word32 *rk, unsigned int rounds) +void Rijndael_UncheckedSetKey_SSE4_AESNI(const byte *userKey, size_t keyLen, word32 *rk) { + const size_t rounds = keyLen / 4 + 6; const word32 *rc = s_rconLE; __m128i temp = _mm_loadu_si128(M128_CAST(userKey+keyLen-16)); diff --git a/rijndael.cpp b/rijndael.cpp index 6c6de914..c398526c 100644 --- a/rijndael.cpp +++ b/rijndael.cpp @@ -284,7 +284,7 @@ void Rijndael::Base::FillDecTable() } #if (CRYPTOPP_AESNI_AVAILABLE) -extern void Rijndael_UncheckedSetKey_SSE4_AESNI(const byte *userKey, size_t keyLen, word32* rk, unsigned int rounds); +extern void Rijndael_UncheckedSetKey_SSE4_AESNI(const byte *userKey, size_t keyLen, word32* rk); extern void Rijndael_UncheckedSetKeyRev_AESNI(word32 *key, unsigned int rounds); extern size_t Rijndael_Enc_AdvancedProcessBlocks_AESNI(const word32 *subkeys, size_t rounds, @@ -331,7 +331,7 @@ void Rijndael::Base::UncheckedSetKey(const byte *userKey, unsigned int keyLen, c { // TODO: Add non-SSE4.1 variant for low-end Atoms. The low-end // Atoms have SSE2-SSSE3 and AES-NI, but not SSE4.1 or SSE4.2. - Rijndael_UncheckedSetKey_SSE4_AESNI(userKey, keyLen, rk, m_rounds); + Rijndael_UncheckedSetKey_SSE4_AESNI(userKey, keyLen, rk); if (!IsForwardTransformation()) Rijndael_UncheckedSetKeyRev_AESNI(m_key, m_rounds);