Browse Source

limit aesni inline asm to x86

Signed-off-by: contextswap <ctxswp@proton.me>
pull/1921/head
contextswap 1 year ago
parent
commit
7418f11651
No known key found for this signature in database
GPG Key ID: 6A0B660A90A787B
  1. 30
      libi2pd/Crypto.cpp

30
libi2pd/Crypto.cpp

@ -555,7 +555,7 @@ namespace crypto
} }
// AES // AES
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
#define KeyExpansion256(round0,round1) \ #define KeyExpansion256(round0,round1) \
"pshufd $0xff, %%xmm2, %%xmm2 \n" \ "pshufd $0xff, %%xmm2, %%xmm2 \n" \
"movaps %%xmm1, %%xmm4 \n" \ "movaps %%xmm1, %%xmm4 \n" \
@ -580,7 +580,7 @@ namespace crypto
"movaps %%xmm3, "#round1"(%[sched]) \n" "movaps %%xmm3, "#round1"(%[sched]) \n"
#endif #endif
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
void ECBCryptoAESNI::ExpandKey (const AESKey& key) void ECBCryptoAESNI::ExpandKey (const AESKey& key)
{ {
__asm__ __asm__
@ -621,7 +621,7 @@ namespace crypto
#endif #endif
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
#define EncryptAES256(sched) \ #define EncryptAES256(sched) \
"pxor (%["#sched"]), %%xmm0 \n" \ "pxor (%["#sched"]), %%xmm0 \n" \
"aesenc 16(%["#sched"]), %%xmm0 \n" \ "aesenc 16(%["#sched"]), %%xmm0 \n" \
@ -642,7 +642,7 @@ namespace crypto
void ECBEncryption::Encrypt (const ChipherBlock * in, ChipherBlock * out) void ECBEncryption::Encrypt (const ChipherBlock * in, ChipherBlock * out)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
__asm__ __asm__
@ -660,7 +660,7 @@ namespace crypto
} }
} }
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
#define DecryptAES256(sched) \ #define DecryptAES256(sched) \
"pxor 224(%["#sched"]), %%xmm0 \n" \ "pxor 224(%["#sched"]), %%xmm0 \n" \
"aesdec 208(%["#sched"]), %%xmm0 \n" \ "aesdec 208(%["#sched"]), %%xmm0 \n" \
@ -681,7 +681,7 @@ namespace crypto
void ECBDecryption::Decrypt (const ChipherBlock * in, ChipherBlock * out) void ECBDecryption::Decrypt (const ChipherBlock * in, ChipherBlock * out)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
__asm__ __asm__
@ -699,7 +699,7 @@ namespace crypto
} }
} }
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
#define CallAESIMC(offset) \ #define CallAESIMC(offset) \
"movaps "#offset"(%[shed]), %%xmm0 \n" \ "movaps "#offset"(%[shed]), %%xmm0 \n" \
"aesimc %%xmm0, %%xmm0 \n" \ "aesimc %%xmm0, %%xmm0 \n" \
@ -708,7 +708,7 @@ namespace crypto
void ECBEncryption::SetKey (const AESKey& key) void ECBEncryption::SetKey (const AESKey& key)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
ExpandKey (key); ExpandKey (key);
@ -722,7 +722,7 @@ namespace crypto
void ECBDecryption::SetKey (const AESKey& key) void ECBDecryption::SetKey (const AESKey& key)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
ExpandKey (key); // expand encryption key first ExpandKey (key); // expand encryption key first
@ -754,7 +754,7 @@ namespace crypto
void CBCEncryption::Encrypt (int numBlocks, const ChipherBlock * in, ChipherBlock * out) void CBCEncryption::Encrypt (int numBlocks, const ChipherBlock * in, ChipherBlock * out)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
__asm__ __asm__
@ -799,7 +799,7 @@ namespace crypto
void CBCEncryption::Encrypt (const uint8_t * in, uint8_t * out) void CBCEncryption::Encrypt (const uint8_t * in, uint8_t * out)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
__asm__ __asm__
@ -823,7 +823,7 @@ namespace crypto
void CBCDecryption::Decrypt (int numBlocks, const ChipherBlock * in, ChipherBlock * out) void CBCDecryption::Decrypt (int numBlocks, const ChipherBlock * in, ChipherBlock * out)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
__asm__ __asm__
@ -869,7 +869,7 @@ namespace crypto
void CBCDecryption::Decrypt (const uint8_t * in, uint8_t * out) void CBCDecryption::Decrypt (const uint8_t * in, uint8_t * out)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
__asm__ __asm__
@ -893,7 +893,7 @@ namespace crypto
void TunnelEncryption::Encrypt (const uint8_t * in, uint8_t * out) void TunnelEncryption::Encrypt (const uint8_t * in, uint8_t * out)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
__asm__ __asm__
@ -934,7 +934,7 @@ namespace crypto
void TunnelDecryption::Decrypt (const uint8_t * in, uint8_t * out) void TunnelDecryption::Decrypt (const uint8_t * in, uint8_t * out)
{ {
#ifdef __AES__ #ifdef __AES__ && (defined(__x86_64__) || defined(__i386__))
if(i2p::cpu::aesni) if(i2p::cpu::aesni)
{ {
__asm__ __asm__

Loading…
Cancel
Save