mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-19 21:46:54 +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);
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
} // namespace ZeroTier
|
||||
|
|
44
core/AES.hpp
44
core/AES.hpp
|
@ -512,49 +512,9 @@ private:
|
|||
} _k;
|
||||
|
||||
#ifdef ZT_AES_AESNI
|
||||
|
||||
void _init_aesni(const uint8_t key[32]) noexcept;
|
||||
|
||||
ZT_INLINE void _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]));
|
||||
}
|
||||
|
||||
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]));
|
||||
}
|
||||
|
||||
void _encrypt_aesni(const void *const in, void *const out) const noexcept;
|
||||
void _decrypt_aesni(const void *in, void *out) const noexcept;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue