Some AES cleanup and include controller with Go build.

This commit is contained in:
Adam Ierymenko 2020-05-30 17:03:12 -07:00
parent 33269cd29d
commit 3621fe8897
No known key found for this signature in database
GPG key ID: C8877CF2D7A5D7F3
4 changed files with 569 additions and 533 deletions

View file

@ -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 Load diff

View file

@ -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
};

View file

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