1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-12 19:38:26 -06:00

Crypto: Add optimized SHA-512 and SHA-256 assembly implementations for x86_64 and x86. This improves speed by 30%.

This commit is contained in:
Mounir IDRASSI
2017-06-23 02:07:32 +02:00
parent ab7b5dc685
commit 546d6cff44
28 changed files with 5408 additions and 884 deletions

View File

@@ -330,7 +330,7 @@ static void ComputeBootLoaderFingerprint(PDEVICE_OBJECT LowerDeviceObject, byte*
#if !defined (_WIN64)
KFLOATING_SAVE floatingPointState;
NTSTATUS saveStatus = STATUS_SUCCESS;
if (HasISSE())
if (HasISSE()|| (HasSSE2() && HasMMX()))
saveStatus = KeSaveFloatingPointState (&floatingPointState);
#endif
WHIRLPOOL_add (ioBuffer, TC_BOOT_SECTOR_PIM_VALUE_OFFSET, &whirlpool);
@@ -368,7 +368,7 @@ static void ComputeBootLoaderFingerprint(PDEVICE_OBJECT LowerDeviceObject, byte*
}
#if !defined (_WIN64)
if (NT_SUCCESS (saveStatus) && HasISSE())
if (NT_SUCCESS (saveStatus) && (HasISSE() || (HasSSE2() && HasMMX())))
KeRestoreFloatingPointState (&floatingPointState);
#endif
}

View File

@@ -225,6 +225,33 @@ BuildDriver.cmd -rebuild -debug -x64 "$(SolutionDir)\Common" "$(SolutionDir)\Cry
<None Include="..\Crypto\Aes_x86.asm" />
<None Include="..\Crypto\Camellia_aesni_x64.S" />
<None Include="..\Crypto\Camellia_x64.S" />
<None Include="..\Crypto\sha256-x86-nayuki.S">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\sha256_avx1_x64.asm">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\sha256_avx2_x64.asm">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\sha256_sse4_x64.asm">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\sha512-x64-nayuki.S">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\sha512-x86-nayuki.S">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\sha512_avx1_x64.asm">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\sha512_avx2_x64.asm">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\sha512_sse4_x64.asm">
<FileType>Document</FileType>
</None>
<None Include="..\Crypto\Twofish_x64.S" />
<None Include="BuildDriver.cmd" />
<None Include="Makefile" />

View File

@@ -152,6 +152,33 @@
<None Include="..\Crypto\Twofish_x64.S">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha256-x86-nayuki.S">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha512_sse4_x64.asm">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha256_avx1_x64.asm">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha256_avx2_x64.asm">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha256_sse4_x64.asm">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha512-x86-nayuki.S">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha512-x64-nayuki.S">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha512_avx1_x64.asm">
<Filter>Source Files\Crypto</Filter>
</None>
<None Include="..\Crypto\sha512_avx2_x64.asm">
<Filter>Source Files\Crypto</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\Common\Apidrvr.h">