mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-02 11:04:00 +01:00
explicit AESNI flag
This commit is contained in:
parent
6518727270
commit
a728d9db5b
7
Makefile
7
Makefile
|
@ -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
14
aes.cpp
|
@ -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
7
aes.h
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue