Browse Source

Some AES cleanup and include controller with Go build.

Adam Ierymenko 5 years ago
parent
commit
3621fe8897
4 changed files with 410 additions and 408 deletions
  1. 1 1
      CMakeLists.txt
  2. 407 362
      node/AES.cpp
  3. 1 44
      node/AES.hpp
  4. 1 1
      node/Tests.cpp

+ 1 - 1
CMakeLists.txt

@@ -120,4 +120,4 @@ add_custom_target(zerotier ALL
 	WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/go
 	COMMAND rm -f ../build/zerotier && go build -trimpath -ldflags -s -o ../build/zerotier cmd/zerotier/zerotier.go
 )
-add_dependencies(zerotier zt_osdep zt_core zt_go_native)
+add_dependencies(zerotier zt_osdep zt_core zt_controller zt_go_native)

File diff suppressed because it is too large
+ 407 - 362
node/AES.cpp


+ 1 - 44
node/AES.hpp

@@ -507,7 +507,7 @@ private:
 #ifdef ZT_AES_AESNI
 		struct {
 			__m128i k[28];
-			__m128i h,hh,hhh,hhhh;
+			__m128i h[4]; // h, hh, hhh, hhhh
 		} ni;
 #endif
 
@@ -519,8 +519,6 @@ private:
 	} _k;
 
 #ifdef ZT_AES_AESNI
-	static const __m128i s_shuf;
-
 	void _init_aesni(const uint8_t key[32]) noexcept;
 
 	ZT_INLINE void _encrypt_aesni(const void *const in,void *const out) const noexcept
@@ -562,47 +560,6 @@ private:
 		tmp = _mm_aesdec_si128(tmp,_k.ni.k[27]);
 		_mm_storeu_si128((__m128i *)out,_mm_aesdeclast_si128(tmp,_k.ni.k[0]));
 	}
-
-	static ZT_INLINE __m128i _mult_block_aesni(const __m128i shuf,const __m128i h,__m128i y) noexcept
-	{
-		y = _mm_shuffle_epi8(y,shuf);
-		__m128i t1 = _mm_clmulepi64_si128(h,y,0x00);
-		__m128i t2 = _mm_clmulepi64_si128(h,y,0x01);
-		__m128i t3 = _mm_clmulepi64_si128(h,y,0x10);
-		__m128i t4 = _mm_clmulepi64_si128(h,y,0x11);
-		t2 = _mm_xor_si128(t2,t3);
-		t3 = _mm_slli_si128(t2,8);
-		t2 = _mm_srli_si128(t2,8);
-		t1 = _mm_xor_si128(t1,t3);
-		t4 = _mm_xor_si128(t4,t2);
-		__m128i t5 = _mm_srli_epi32(t1,31);
-		t1 = _mm_slli_epi32(t1,1);
-		__m128i t6 = _mm_srli_epi32(t4,31);
-		t4 = _mm_slli_epi32(t4,1);
-		t3 = _mm_srli_si128(t5,12);
-		t6 = _mm_slli_si128(t6,4);
-		t5 = _mm_slli_si128(t5,4);
-		t1 = _mm_or_si128(t1,t5);
-		t4 = _mm_or_si128(t4,t6);
-		t4 = _mm_or_si128(t4,t3);
-		t5 = _mm_slli_epi32(t1,31);
-		t6 = _mm_slli_epi32(t1,30);
-		t3 = _mm_slli_epi32(t1,25);
-		t5 = _mm_xor_si128(t5,t6);
-		t5 = _mm_xor_si128(t5,t3);
-		t6 = _mm_srli_si128(t5,4);
-		t4 = _mm_xor_si128(t4,t6);
-		t5 = _mm_slli_si128(t5,12);
-		t1 = _mm_xor_si128(t1,t5);
-		t4 = _mm_xor_si128(t4,t1);
-		t5 = _mm_srli_epi32(t1,1);
-		t2 = _mm_srli_epi32(t1,2);
-		t3 = _mm_srli_epi32(t1,7);
-		t4 = _mm_xor_si128(t4,t2);
-		t4 = _mm_xor_si128(t4,t3);
-		t4 = _mm_xor_si128(t4,t5);
-		return _mm_shuffle_epi8(t4,shuf);
-	}
 #endif
 };
 

+ 1 - 1
node/Tests.cpp

@@ -13,7 +13,7 @@
 
 #include "Tests.h"
 
-//#define ZT_ENABLE_TESTS
+#define ZT_ENABLE_TESTS
 #ifdef ZT_ENABLE_TESTS
 
 #include "Constants.hpp"

Some files were not shown because too many files changed in this diff