explicit AESNI flag

This commit is contained in:
orignal 2014-06-02 10:05:04 -04:00
parent 6518727270
commit a728d9db5b
3 changed files with 16 additions and 12 deletions

View file

@ -11,6 +11,11 @@ INCFLAGS =
LDFLAGS = -Wl,-rpath,/usr/local/lib -lcryptopp -lboost_system -lboost_filesystem -lboost_regex -lboost_program_options -lpthread LDFLAGS = -Wl,-rpath,/usr/local/lib -lcryptopp -lboost_system -lboost_filesystem -lboost_regex -lboost_program_options -lpthread
LIBS = LIBS =
#check if AES-NI is supported by CPU
ifneq ($(shell grep -c aes /proc/cpuinfo),0)
CPU_FLAGS = -DAESNI
endif
all: obj i2p all: obj i2p
i2p: $(OBJECTS:obj/%=obj/%) i2p: $(OBJECTS:obj/%=obj/%)
@ -20,7 +25,7 @@ i2p: $(OBJECTS:obj/%=obj/%)
.SUFFIXES: .c .cc .C .cpp .o .SUFFIXES: .c .cc .C .cpp .o
obj/%.o : %.cpp obj/%.o : %.cpp
$(CC) -o $@ $< -c $(CFLAGS) $(INCFLAGS) $(CC) -o $@ $< -c $(CFLAGS) $(INCFLAGS) $(CPU_FLAGS)
obj: obj:
mkdir -p obj mkdir -p obj

14
aes.cpp
View file

@ -7,7 +7,7 @@ namespace i2p
namespace crypto namespace crypto
{ {
#ifdef __x86_64__ #ifdef AESNI
ECBCryptoAESNI::ECBCryptoAESNI () ECBCryptoAESNI::ECBCryptoAESNI ()
{ {
@ -167,7 +167,7 @@ namespace crypto
void CBCEncryption::Encrypt (int numBlocks, const ChipherBlock * in, ChipherBlock * out) void CBCEncryption::Encrypt (int numBlocks, const ChipherBlock * in, ChipherBlock * out)
{ {
#ifdef __x86_64__ #ifdef AESNI
__asm__ __asm__
( (
"movups (%[iv]), %%xmm1 \n" "movups (%[iv]), %%xmm1 \n"
@ -207,7 +207,7 @@ namespace crypto
void CBCEncryption::Encrypt (const uint8_t * in, uint8_t * out) void CBCEncryption::Encrypt (const uint8_t * in, uint8_t * out)
{ {
#ifdef __x86_64__ #ifdef AESNI
__asm__ __asm__
( (
"movups (%[iv]), %%xmm1 \n" "movups (%[iv]), %%xmm1 \n"
@ -228,7 +228,7 @@ namespace crypto
void CBCDecryption::Decrypt (int numBlocks, const ChipherBlock * in, ChipherBlock * out) void CBCDecryption::Decrypt (int numBlocks, const ChipherBlock * in, ChipherBlock * out)
{ {
#ifdef __x86_64__ #ifdef AESNI
__asm__ __asm__
( (
"movups (%[iv]), %%xmm1 \n" "movups (%[iv]), %%xmm1 \n"
@ -270,7 +270,7 @@ namespace crypto
void CBCDecryption::Decrypt (const uint8_t * in, uint8_t * out) void CBCDecryption::Decrypt (const uint8_t * in, uint8_t * out)
{ {
#ifdef __x86_64__ #ifdef AESNI
__asm__ __asm__
( (
"movups (%[iv]), %%xmm1 \n" "movups (%[iv]), %%xmm1 \n"
@ -291,7 +291,7 @@ namespace crypto
void TunnelEncryption::Encrypt (uint8_t * payload) void TunnelEncryption::Encrypt (uint8_t * payload)
{ {
#ifdef __x86_64__ #ifdef AESNI
__asm__ __asm__
( (
// encrypt IV // encrypt IV
@ -325,7 +325,7 @@ namespace crypto
void TunnelDecryption::Decrypt (uint8_t * payload) void TunnelDecryption::Decrypt (uint8_t * payload)
{ {
#ifdef __x86_64__ #ifdef AESNI
__asm__ __asm__
( (
// decrypt IV // decrypt IV

7
aes.h
View file

@ -21,8 +21,7 @@ namespace crypto
} }
}; };
#ifdef __x86_64__ #ifdef AESNI
// AES-NI assumed
class ECBCryptoAESNI class ECBCryptoAESNI
{ {
public: public:
@ -154,7 +153,7 @@ namespace crypto
private: private:
ECBEncryption m_IVEncryption; ECBEncryption m_IVEncryption;
#ifdef __x86_64__ #ifdef AESNI
ECBEncryption m_LayerEncryption; ECBEncryption m_LayerEncryption;
#else #else
CBCEncryption m_LayerEncryption; CBCEncryption m_LayerEncryption;
@ -176,7 +175,7 @@ namespace crypto
private: private:
ECBDecryption m_IVDecryption; ECBDecryption m_IVDecryption;
#ifdef __x86_64__ #ifdef AESNI
ECBDecryption m_LayerDecryption; ECBDecryption m_LayerDecryption;
#else #else
CBCDecryption m_LayerDecryption; CBCDecryption m_LayerDecryption;