diff options
author | Sebastian Ramacher <sebastian+dev@ramacher.at> | 2013-11-05 13:44:57 +0100 |
---|---|---|
committer | Dwayne Litzenberger <dlitz@dlitz.net> | 2014-06-22 17:26:16 -0700 |
commit | 8dcd95ed3ce3bcf799c2da66d9650ba24e875763 (patch) | |
tree | 10664f0f1a95308aa21c08a42b3bd8360c4ed246 | |
parent | 0bf79348351d9f505458325be0fd69a8f0ce4641 (diff) | |
download | pycrypto-8dcd95ed3ce3bcf799c2da66d9650ba24e875763.tar.gz |
Fix compilation with clang-3.3
clang-3.3 is stricter regarding the second argument of _mm_shuffle_epi32.
Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
-rw-r--r-- | src/AESNI.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/AESNI.c b/src/AESNI.c index 50f0cd6..3f1e061 100644 --- a/src/AESNI.c +++ b/src/AESNI.c @@ -75,13 +75,11 @@ static void* aligned_malloc_wrapper(size_t alignment, size_t size) /* Helper functions to expand keys */ -static __m128i aes128_keyexpand(__m128i key, __m128i keygened, int shuf) +static __m128i aes128_keyexpand(__m128i key) { key = _mm_xor_si128(key, _mm_slli_si128(key, 4)); key = _mm_xor_si128(key, _mm_slli_si128(key, 4)); - key = _mm_xor_si128(key, _mm_slli_si128(key, 4)); - keygened = _mm_shuffle_epi32(keygened, shuf); - return _mm_xor_si128(key, keygened); + return _mm_xor_si128(key, _mm_slli_si128(key, 4)); } static __m128i aes192_keyexpand_2(__m128i key, __m128i key2) @@ -91,11 +89,14 @@ static __m128i aes192_keyexpand_2(__m128i key, __m128i key2) return _mm_xor_si128(key, key2); } -#define KEYEXP128(K, I) aes128_keyexpand(K, _mm_aeskeygenassist_si128(K, I), 0xff) -#define KEYEXP192(K1, K2, I) aes128_keyexpand(K1, _mm_aeskeygenassist_si128(K2, I), 0x55) +#define KEYEXP128_H(K1, K2, I, S) _mm_xor_si128(aes128_keyexpand(K1), \ + _mm_shuffle_epi32(_mm_aeskeygenassist_si128(K2, I), S)) + +#define KEYEXP128(K, I) KEYEXP128_H(K, K, I, 0xff) +#define KEYEXP192(K1, K2, I) KEYEXP128_H(K1, K2, I, 0x55) #define KEYEXP192_2(K1, K2) aes192_keyexpand_2(K1, K2) -#define KEYEXP256(K1, K2, I) aes128_keyexpand(K1, _mm_aeskeygenassist_si128(K2, I), 0xff) -#define KEYEXP256_2(K1, K2) aes128_keyexpand(K1, _mm_aeskeygenassist_si128(K2, 0x00), 0xaa) +#define KEYEXP256(K1, K2, I) KEYEXP128_H(K1, K2, I, 0xff) +#define KEYEXP256_2(K1, K2) KEYEXP128_H(K1, K2, 0x00, 0xaa) /* Encryption key setup */ static void aes_key_setup_enc(__m128i rk[], const u8* cipherKey, int keylen) |