mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-06 12:33:44 +02:00
Move a few things.
This commit is contained in:
parent
641d1a52c8
commit
71a2206c5d
2 changed files with 42 additions and 42 deletions
40
core/AES.cpp
40
core/AES.cpp
|
@ -1215,6 +1215,46 @@ void AES::_init_aesni(const uint8_t key[32]) noexcept
|
||||||
_k.ni.h2[3] = _mm_xor_si128(_mm_shuffle_epi32(hhhh, 78), hhhh);
|
_k.ni.h2[3] = _mm_xor_si128(_mm_shuffle_epi32(hhhh, 78), hhhh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AES::_encrypt_aesni(const void *const in, void *const out) const noexcept
|
||||||
|
{
|
||||||
|
__m128i tmp = _mm_loadu_si128((const __m128i *)in);
|
||||||
|
tmp = _mm_xor_si128(tmp, _k.ni.k[0]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[1]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[2]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[3]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[4]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[5]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[6]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[7]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[8]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[9]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[10]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[11]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[12]);
|
||||||
|
tmp = _mm_aesenc_si128(tmp, _k.ni.k[13]);
|
||||||
|
_mm_storeu_si128((__m128i *)out, _mm_aesenclast_si128(tmp, _k.ni.k[14]));
|
||||||
|
}
|
||||||
|
|
||||||
|
void AES::_decrypt_aesni(const void *in, void *out) const noexcept
|
||||||
|
{
|
||||||
|
__m128i tmp = _mm_loadu_si128((const __m128i *)in);
|
||||||
|
tmp = _mm_xor_si128(tmp, _k.ni.k[14]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[15]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[16]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[17]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[18]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[19]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[20]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[21]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[22]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[23]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[24]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[25]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[26]);
|
||||||
|
tmp = _mm_aesdec_si128(tmp, _k.ni.k[27]);
|
||||||
|
_mm_storeu_si128((__m128i *)out, _mm_aesdeclast_si128(tmp, _k.ni.k[0]));
|
||||||
|
}
|
||||||
|
|
||||||
#endif // ZT_AES_AESNI
|
#endif // ZT_AES_AESNI
|
||||||
|
|
||||||
} // namespace ZeroTier
|
} // namespace ZeroTier
|
||||||
|
|
44
core/AES.hpp
44
core/AES.hpp
|
@ -512,49 +512,9 @@ private:
|
||||||
} _k;
|
} _k;
|
||||||
|
|
||||||
#ifdef ZT_AES_AESNI
|
#ifdef ZT_AES_AESNI
|
||||||
|
|
||||||
void _init_aesni(const uint8_t key[32]) noexcept;
|
void _init_aesni(const uint8_t key[32]) noexcept;
|
||||||
|
void _encrypt_aesni(const void *const in, void *const out) const noexcept;
|
||||||
ZT_INLINE void _encrypt_aesni(const void *const in, void *const out) const noexcept
|
void _decrypt_aesni(const void *in, void *out) const noexcept;
|
||||||
{
|
|
||||||
__m128i tmp = _mm_loadu_si128((const __m128i *)in);
|
|
||||||
tmp = _mm_xor_si128(tmp, _k.ni.k[0]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[1]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[2]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[3]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[4]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[5]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[6]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[7]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[8]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[9]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[10]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[11]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[12]);
|
|
||||||
tmp = _mm_aesenc_si128(tmp, _k.ni.k[13]);
|
|
||||||
_mm_storeu_si128((__m128i *)out, _mm_aesenclast_si128(tmp, _k.ni.k[14]));
|
|
||||||
}
|
|
||||||
|
|
||||||
ZT_INLINE void _decrypt_aesni(const void *in, void *out) const noexcept
|
|
||||||
{
|
|
||||||
__m128i tmp = _mm_loadu_si128((const __m128i *)in);
|
|
||||||
tmp = _mm_xor_si128(tmp, _k.ni.k[14]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[15]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[16]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[17]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[18]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[19]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[20]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[21]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[22]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[23]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[24]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[25]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[26]);
|
|
||||||
tmp = _mm_aesdec_si128(tmp, _k.ni.k[27]);
|
|
||||||
_mm_storeu_si128((__m128i *)out, _mm_aesdeclast_si128(tmp, _k.ni.k[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue