Adam Ierymenko 6 years ago
parent
commit
1d8f3cee62
1 changed files with 6 additions and 6 deletions
  1. 6 6
      node/AES.hpp

+ 6 - 6
node/AES.hpp

@@ -240,7 +240,7 @@ private:
 		} ni;
 		} ni;
 #endif
 #endif
 		struct {
 		struct {
-			uint32_t ek[60];
+			uint32_t ek[30];
 		} sw;
 		} sw;
 	} _k;
 	} _k;
 	/**************************************************************************/
 	/**************************************************************************/
@@ -423,7 +423,7 @@ private:
 
 
 	ZT_ALWAYS_INLINE void _crypt_ctr_aesni(const uint8_t iv[16],const uint8_t *in,unsigned int len,uint8_t *out) const
 	ZT_ALWAYS_INLINE void _crypt_ctr_aesni(const uint8_t iv[16],const uint8_t *in,unsigned int len,uint8_t *out) const
 	{
 	{
-		const uint64_t iv0 = *((const uint64_t *)iv);
+		const __m64 iv0 = (__m64)(*((const uint64_t *)iv));
 		uint64_t ctr = Utils::ntoh(*((const uint64_t *)(iv+8)));
 		uint64_t ctr = Utils::ntoh(*((const uint64_t *)(iv+8)));
 
 
 		const __m128i k0 = _k.ni.k[0];
 		const __m128i k0 = _k.ni.k[0];
@@ -443,10 +443,10 @@ private:
 		const __m128i k14 = _k.ni.k[14];
 		const __m128i k14 = _k.ni.k[14];
 
 
 		while (len >= 64) {
 		while (len >= 64) {
-			__m128i c0 = _mm_xor_si128(_mm_set_epi64((__m64)Utils::hton(ctr),(__m64)iv0),k0);
-			__m128i c1 = _mm_xor_si128(_mm_set_epi64((__m64)Utils::hton(ctr+1ULL),(__m64)iv0),k0);
-			__m128i c2 = _mm_xor_si128(_mm_set_epi64((__m64)Utils::hton(ctr+2ULL),(__m64)iv0),k0);
-			__m128i c3 = _mm_xor_si128(_mm_set_epi64((__m64)Utils::hton(ctr+3ULL),(__m64)iv0),k0);
+			__m128i c0 = _mm_xor_si128(_mm_set_epi64((__m64)Utils::hton(ctr),iv0),k0);
+			__m128i c1 = _mm_xor_si128(_mm_set_epi64((__m64)Utils::hton(ctr+1ULL),iv0),k0);
+			__m128i c2 = _mm_xor_si128(_mm_set_epi64((__m64)Utils::hton(ctr+2ULL),iv0),k0);
+			__m128i c3 = _mm_xor_si128(_mm_set_epi64((__m64)Utils::hton(ctr+3ULL),iv0),k0);
 			ctr += 4;
 			ctr += 4;
 			c0 = _mm_aesenc_si128(c0,k1);
 			c0 = _mm_aesenc_si128(c0,k1);
 			c1 = _mm_aesenc_si128(c1,k1);
 			c1 = _mm_aesenc_si128(c1,k1);