mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
AES-GCM: MSVC use generated assembly instead of inline
AES-GCM for MSVC was using inline assembly. Add MSVC version of AES-GCM assembly and use it instead. Removed inline assembly.
This commit is contained in:
@ -40,7 +40,7 @@ The folder hierarchy is the same as the wolfSSL folders with an exception of the
|
|||||||
|
|
||||||
4. Right click on each folders, add or link all the source code in the corresponding folder in wolfSSL.
|
4. Right click on each folders, add or link all the source code in the corresponding folder in wolfSSL.
|
||||||
|
|
||||||
5. Remove non-C platform dependent files from your build. At the moment, only aes_asm.asm and aes_asm.s must be removed from your wolfssl/wolfcrypt/src folder.
|
5. Remove non-C platform dependent files from your build. At the moment, only aes_asm.asm, aes_gcm_asm.asm and aes_asm.s must be removed from your wolfssl/wolfcrypt/src folder.
|
||||||
|
|
||||||
6. In your C/C++ compiler preprocessor settings, add the wolfSSL directories to your include paths.
|
6. In your C/C++ compiler preprocessor settings, add the wolfSSL directories to your include paths.
|
||||||
Here's an example of the paths that must be added.
|
Here's an example of the paths that must be added.
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#define HAVE_SECURE_RENEGOTIATION
|
#define HAVE_SECURE_RENEGOTIATION
|
||||||
|
|
||||||
#define HAVE_AESGCM
|
#define HAVE_AESGCM
|
||||||
|
#define WOLFSSL_AESGCM_STREAM
|
||||||
#define WOLFSSL_SHA384
|
#define WOLFSSL_SHA384
|
||||||
#define WOLFSSL_SHA512
|
#define WOLFSSL_SHA512
|
||||||
|
|
||||||
@ -56,12 +57,19 @@
|
|||||||
#define ECC_SHAMIR
|
#define ECC_SHAMIR
|
||||||
#define ECC_TIMING_RESISTANT
|
#define ECC_TIMING_RESISTANT
|
||||||
|
|
||||||
|
#define WOLFSSL_SP_X86_64
|
||||||
|
#define SP_INT_BITS 4096
|
||||||
|
|
||||||
/* Optional Performance Speedups */
|
/* Optional Performance Speedups */
|
||||||
#if 0
|
#if 0
|
||||||
/* AESNI on x64 */
|
/* AESNI on x64 */
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
#define HAVE_INTEL_RDSEED
|
#define HAVE_INTEL_RDSEED
|
||||||
#define WOLFSSL_AESNI
|
#define WOLFSSL_AESNI
|
||||||
|
#define HAVE_INTEL_AVX1
|
||||||
|
#if 0
|
||||||
|
#define HAVE_INTEL_AVX2
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Single Precision Support for RSA/DH 1024/2048/3072 and
|
/* Single Precision Support for RSA/DH 1024/2048/3072 and
|
||||||
@ -82,7 +90,6 @@
|
|||||||
#define WOLFSSL_SP_X86_64_ASM
|
#define WOLFSSL_SP_X86_64_ASM
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* The servers and clients */
|
/* The servers and clients */
|
||||||
#define OPENSSL_EXTRA
|
#define OPENSSL_EXTRA
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
#define HAVE_SECURE_RENEGOTIATION
|
#define HAVE_SECURE_RENEGOTIATION
|
||||||
|
|
||||||
#define HAVE_AESGCM
|
#define HAVE_AESGCM
|
||||||
|
#define WOLFSSL_AESGCM_STREAM
|
||||||
#define WOLFSSL_SHA384
|
#define WOLFSSL_SHA384
|
||||||
#define WOLFSSL_SHA512
|
#define WOLFSSL_SHA512
|
||||||
|
|
||||||
@ -61,12 +62,19 @@
|
|||||||
#define ECC_SHAMIR
|
#define ECC_SHAMIR
|
||||||
#define ECC_TIMING_RESISTANT
|
#define ECC_TIMING_RESISTANT
|
||||||
|
|
||||||
|
#define WOLFSSL_SP_X86_64
|
||||||
|
#define SP_INT_BITS 4096
|
||||||
|
|
||||||
/* Optional Performance Speedups */
|
/* Optional Performance Speedups */
|
||||||
#if 0
|
#if 0
|
||||||
/* AESNI on x64 */
|
/* AESNI on x64 */
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
#define HAVE_INTEL_RDSEED
|
#define HAVE_INTEL_RDSEED
|
||||||
#define WOLFSSL_AESNI
|
#define WOLFSSL_AESNI
|
||||||
|
#define HAVE_INTEL_AVX1
|
||||||
|
#if 0
|
||||||
|
#define HAVE_INTEL_AVX2
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Single Precision Support for RSA/DH 1024/2048/3072 and
|
/* Single Precision Support for RSA/DH 1024/2048/3072 and
|
||||||
|
@ -331,6 +331,22 @@
|
|||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="..\..\wolfcrypt\src\aes_gcm_asm.asm">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64.exe /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">ml64.exe /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</ExcludedFromBuild>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64.exe /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">ml64.exe /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="user_settings.h" />
|
<ClInclude Include="user_settings.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -307,6 +307,22 @@
|
|||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="..\..\wolfcrypt\src\aes_gcm_asm.asm">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64.exe /DHAVE_FIPS /DHAVE_FIPS_VERSION=5 /DHAVE_FIPS_VERSION_MINOR=1 /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">ml64.exe /DHAVE_FIPS /DHAVE_FIPS_VERSION=5 /DHAVE_FIPS_VERSION_MINOR=1 /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</ExcludedFromBuild>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64.exe /DHAVE_FIPS /DHAVE_FIPS_VERSION=5 /DHAVE_FIPS_VERSION_MINOR=1 /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">ml64.exe /DHAVE_FIPS /DHAVE_FIPS_VERSION=5 /DHAVE_FIPS_VERSION_MINOR=1 /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="resource.h" />
|
<ClInclude Include="resource.h" />
|
||||||
<ClInclude Include="user_settings.h" />
|
<ClInclude Include="user_settings.h" />
|
||||||
|
@ -9,6 +9,7 @@ src and wolfcrypt directories. Uncheck the following:
|
|||||||
|
|
||||||
```
|
```
|
||||||
wolfcrypt/src/aes_asm.asm
|
wolfcrypt/src/aes_asm.asm
|
||||||
|
wolfcrypt/src/aes_gcm_asm.asm
|
||||||
wolfcrypt/src/aes_asm.s
|
wolfcrypt/src/aes_asm.s
|
||||||
examples/echoclient/
|
examples/echoclient/
|
||||||
examples/echoserver/
|
examples/echoserver/
|
||||||
|
1150
wolfcrypt/src/aes.c
1150
wolfcrypt/src/aes.c
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
15423
wolfcrypt/src/aes_gcm_asm.asm
Normal file
15423
wolfcrypt/src/aes_gcm_asm.asm
Normal file
File diff suppressed because it is too large
Load Diff
@ -14,6 +14,7 @@ EXTRA_DIST += wolfcrypt/src/misc.c
|
|||||||
EXTRA_DIST += wolfcrypt/src/evp.c
|
EXTRA_DIST += wolfcrypt/src/evp.c
|
||||||
EXTRA_DIST += wolfcrypt/src/asm.c
|
EXTRA_DIST += wolfcrypt/src/asm.c
|
||||||
EXTRA_DIST += wolfcrypt/src/aes_asm.asm
|
EXTRA_DIST += wolfcrypt/src/aes_asm.asm
|
||||||
|
EXTRA_DIST += wolfcrypt/src/aes_gcm_asm.asm
|
||||||
EXTRA_DIST += wolfcrypt/src/wc_dsp.c
|
EXTRA_DIST += wolfcrypt/src/wc_dsp.c
|
||||||
EXTRA_DIST += wolfcrypt/src/sp_dsp32.c
|
EXTRA_DIST += wolfcrypt/src/sp_dsp32.c
|
||||||
EXTRA_DIST += wolfcrypt/src/sp_x86_64_asm.asm
|
EXTRA_DIST += wolfcrypt/src/sp_x86_64_asm.asm
|
||||||
|
@ -618,7 +618,12 @@ This library provides single precision (SP) integer math functions.
|
|||||||
while (0)
|
while (0)
|
||||||
/* Index of highest bit set. */
|
/* Index of highest bit set. */
|
||||||
#define SP_ASM_HI_BIT_SET_IDX(va, vi) \
|
#define SP_ASM_HI_BIT_SET_IDX(va, vi) \
|
||||||
vi = _BitScanReverse64(va)
|
do { \
|
||||||
|
unsigned long idx; \
|
||||||
|
_BitScanReverse64(&idx, va); \
|
||||||
|
vi = idx; \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(WOLFSSL_SP_DIV_WORD_HALF) && (!defined(_MSC_VER) || \
|
#if !defined(WOLFSSL_SP_DIV_WORD_HALF) && (!defined(_MSC_VER) || \
|
||||||
|
@ -20598,7 +20598,7 @@ _text SEGMENT READONLY PARA
|
|||||||
sp_2048_lshift_32 PROC
|
sp_2048_lshift_32 PROC
|
||||||
push r12
|
push r12
|
||||||
push r13
|
push r13
|
||||||
mov rcx, r8
|
mov cl, r8b
|
||||||
mov rax, rcx
|
mov rax, rcx
|
||||||
mov r12, 0
|
mov r12, 0
|
||||||
mov r13, QWORD PTR [rdx+216]
|
mov r13, QWORD PTR [rdx+216]
|
||||||
@ -40446,7 +40446,7 @@ _text SEGMENT READONLY PARA
|
|||||||
sp_3072_lshift_48 PROC
|
sp_3072_lshift_48 PROC
|
||||||
push r12
|
push r12
|
||||||
push r13
|
push r13
|
||||||
mov rcx, r8
|
mov cl, r8b
|
||||||
mov rax, rcx
|
mov rax, rcx
|
||||||
mov r12, 0
|
mov r12, 0
|
||||||
mov r13, QWORD PTR [rdx+344]
|
mov r13, QWORD PTR [rdx+344]
|
||||||
@ -53973,7 +53973,7 @@ _text SEGMENT READONLY PARA
|
|||||||
sp_4096_lshift_64 PROC
|
sp_4096_lshift_64 PROC
|
||||||
push r12
|
push r12
|
||||||
push r13
|
push r13
|
||||||
mov rcx, r8
|
mov cl, r8b
|
||||||
mov rax, rcx
|
mov rax, rcx
|
||||||
mov r12, 0
|
mov r12, 0
|
||||||
mov r13, QWORD PTR [rdx+472]
|
mov r13, QWORD PTR [rdx+472]
|
||||||
@ -67878,7 +67878,7 @@ _text SEGMENT READONLY PARA
|
|||||||
sp_521_lshift_9 PROC
|
sp_521_lshift_9 PROC
|
||||||
push r12
|
push r12
|
||||||
push r13
|
push r13
|
||||||
mov rcx, r8
|
mov cl, r8b
|
||||||
mov rax, rcx
|
mov rax, rcx
|
||||||
mov r12, 0
|
mov r12, 0
|
||||||
mov r13, QWORD PTR [rdx+32]
|
mov r13, QWORD PTR [rdx+32]
|
||||||
@ -67925,7 +67925,7 @@ _text SEGMENT READONLY PARA
|
|||||||
sp_521_lshift_18 PROC
|
sp_521_lshift_18 PROC
|
||||||
push r12
|
push r12
|
||||||
push r13
|
push r13
|
||||||
mov rcx, r8
|
mov cl, r8b
|
||||||
mov rax, rcx
|
mov rax, rcx
|
||||||
mov r12, 0
|
mov r12, 0
|
||||||
mov r13, QWORD PTR [rdx+104]
|
mov r13, QWORD PTR [rdx+104]
|
||||||
|
@ -362,6 +362,20 @@
|
|||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(OutDir)%(Filename).obj</Outputs>
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(OutDir)%(Filename).obj</Outputs>
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="wolfcrypt\src\aes_gcm_asm.asm">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64.exe /c /Zi /Fo"$(OutDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">ml64.exe /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(OutDir)%(Filename).obj</Outputs>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</ExcludedFromBuild>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64.exe /c /Zi /Fo"$(OutDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">ml64.exe /c /Zi /Fo"$(IntDir)%(Filename).obj" %(Identity)</Command>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(OutDir)%(Filename).obj</Outputs>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(IntDir)%(Filename).obj</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
<CustomBuild Include="wolfcrypt\src\sp_x86_64_asm.asm">
|
<CustomBuild Include="wolfcrypt\src\sp_x86_64_asm.asm">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</ExcludedFromBuild>
|
||||||
|
Reference in New Issue
Block a user