Commit Graph

99 Commits

Author SHA1 Message Date
Mounir IDRASSI
2ab57bcf70
Windows: fix compilation error of legacy MBR bootloader caused by missing intrin.h header 2019-08-26 00:50:25 +02:00
Mounir IDRASSI
08a8a0ce30
Linux: Fix compilation error caused by wrong include of "intrin.h" 2019-03-21 18:52:14 +01:00
Mounir IDRASSI
321715202a
Windows: Generalize RAM encryption for keys to VeraCrypt binaries, especially Format and Expander 2019-03-02 10:23:39 +01:00
Mounir IDRASSI
cf48b532b4
Windows: Implement RAM encryption for keys on 64-bit machines using ChaCha12 cipher and t1ha non-cryptographic fast hash (https://github.com/leo-yuriev/t1ha) 2019-03-01 00:35:13 +01:00
Mounir IDRASSI
86f0fde6e7
Windows: Use Hardware RNG based on CPU timing jitter "Jitterentropy" by Stephan Mueller as a good alternative to RDRAND (http://www.chronox.de/jent.html, smueller@chronox.de) 2019-02-12 19:06:14 +01:00
Mounir IDRASSI
ba5da0946c
Windows: Add implementation of ChaCha20 based random generator. Use it for driver need of random bytes (currently only wipe bytes but more to come later). 2019-02-08 01:50:12 +01:00
Mounir IDRASSI
61c1baa4bf
Windows: use CPU RDRAND or RDSEED as an additional entropy source for our random generator when available 2019-02-01 00:35:50 +01:00
Mounir IDRASSI
915855f43b
Fix detection of CPU features AVX2 & BMI2. Add detection of RDRAND & RDSEED CPU features. Detect Hygon CPU as AMD one. 2019-02-01 00:35:42 +01:00
Mounir IDRASSI
f02882ce60
Help compiler optimize some crypto code on 64-bit build since x64 capable CPUs always support SSE and SSE2 2019-01-30 00:46:10 +01:00
Mounir IDRASSI
a11cada735
crypto: cleaner code for Streebog carry bit handling and add comment about missing handling of overflow caused by carry bit. 2018-08-06 00:13:15 +02:00
Mounir IDRASSI
f53eb8e260
SIMD speed optimization for Kuznyechik cipher implementation (up to 2x speedup). Based on https://github.com/aprelev/libgost15. 2017-11-27 16:16:35 +01:00
Mounir IDRASSI
3bdb9a32d7
Windows MBR bootloader: reduce required stack size for cascade bootloader by removing unnecessary field from Twofish structure in this case. 2017-07-19 01:12:23 +02:00
Mounir IDRASSI
b37d732408
Windows MBR Bootloader: workaround for 16-bit compiler internal error when compiling Camellia source code. In GET_UINT32_BE macro, we use |= operator instead of ORing shift values. 2017-07-19 01:12:22 +02:00
Mounir IDRASSI
ac37fb0003
Windows: generate pdb files for binaries in order to help investigate crashes in the future. 2017-07-09 09:49:33 +02:00
Mounir IDRASSI
d2eacde0da
Remove unnecessary code from Camellia assembly implementation that checks for key size since we always use it with 256-bit keys. 2017-07-09 00:19:14 +02:00
Mounir IDRASSI
2577797fc4
Windows: preserve volatile registers XMM6-XMM15 in 64-bit assembly of Camellia. 2017-07-09 00:19:12 +02:00
Mounir IDRASSI
88cc8a00f4
Windows: correctly handle SEH exceptions during self-tests in order to disable CPU extended features in such case. 2017-07-04 12:28:17 +02:00
Mounir IDRASSI
0358eb6c71
Don't check for SSSE3 to use 64-bit SHA-512 assembly code since it uses only SSE2 instructions. 2017-07-04 02:26:26 +02:00
Mounir IDRASSI
89efcdb8cd
Windows Driver: correctly save and restore extended processor state when performing AVX operations on Windows 7 and later. Enhance readability of code handling save/restore of floating point state. 2017-07-04 02:26:24 +02:00
Mounir IDRASSI
c2f6190627
Windows: use stack instead of MMX register to save registers in 64-bit assembly implementation of SHA-512 in order to avoid issues with the driver. 2017-07-04 02:26:23 +02:00
Mounir IDRASSI
e5728bd36e
Linux/MacOSX: align workspace stack variable in WhirlpoolTransform SSE code. 2017-07-02 00:51:57 +02:00
Mounir IDRASSI
d8dd1accb4
Avoid alignement issues with some old compilers by using movdqu instead of movdqa in SHA-256 SSE2 assembly. 2017-07-02 00:51:56 +02:00
Mounir IDRASSI
fe278afb18
Fix crash on machines without SSSE3 support in CPU by correctly checking for SSSE3 before using SHA-512 SSE2 assembly which uses PSHUFB instruction. 2017-07-01 01:56:33 +02:00
Mounir IDRASSI
f5e6136830
For code logic clarity, add check for xgetbv support in CPU before using it. 2017-07-01 01:56:32 +02:00
Mounir IDRASSI
eebb277374
Enable AVX assembly instructions only when the OS implements AVX support 2017-06-27 00:55:25 +02:00
Mounir IDRASSI
79cb3af526
Windows: use yasm define __YASM__ for compatibility with the assembly changes done in MacOSX. 2017-06-27 00:55:24 +02:00
Mounir IDRASSI
3d8260d3d3
MacOSX: various changes for assembly files build. Don't use 32-bit assembly code of SHA-512 since it is not compatible with PIE configuration of OSX compiler (absolute addressing used) 2017-06-27 00:55:22 +02:00
Mounir IDRASSI
a64d054cdd
Linux/MacOSX: properly declare 64-bit constant integer values to avoid being truncated by compiler. 2017-06-24 01:11:16 +02:00
Mounir IDRASSI
0ebc26e125
Update IDRIX copyright year 2017-06-23 22:15:59 +02:00
Mounir IDRASSI
f27b37b73f
Modify Aes_hw_cpu.asm to use nasm syntax that is compatible with yasm. 2017-06-23 19:05:47 +02:00
Mounir IDRASSI
546d6cff44
Crypto: Add optimized SHA-512 and SHA-256 assembly implementations for x86_64 and x86. This improves speed by 30%. 2017-06-23 02:11:21 +02:00
Mounir IDRASSI
f3db66f37f
Windows: don't use AVX optimized Camellia in EFI bootloader until compatibility issues are investigated 2017-06-21 01:39:57 +02:00
Mounir IDRASSI
70097ecfe5
Crypto: Add optimized Camellia assembly implementation for x86_64 based on work by Jussi Kivilinna (https://github.com/jkivilin/supercop-blockciphers). This improve speed by a factor of 2.5 when AES-NI supported by CPU and by 30% if AES-NI not supported. 2017-06-21 01:39:55 +02:00
Mounir IDRASSI
78803703e6
Windows: fix compilation error of assembly files after latest changes on Linux. 2017-06-21 01:39:51 +02:00
Mounir IDRASSI
ba1fbb688e
Linux: fix executable stack in resulting binary which was caused by crypto assembly files missing the GNU-stack note. 2017-06-13 01:26:22 +02:00
kavsrf
79aa488106
cland static code analyzer fixes 2017-06-05 17:45:47 +02:00
Mounir IDRASSI
7c78c4f4ac
Windows Driver: fix "__chkstk" link error in debug build caused by some crypto functions using too much stack space for local variables. 2017-05-22 00:43:29 +02:00
Mounir IDRASSI
c0f46187de
Fix build error in Crypto/Whirpool.c when using LLVM Clang compiler by disabling inline assembly in this case (caused by http://llvm.org/bugs/show_bug.cgi?id=24232) 2017-01-12 18:13:24 +01:00
Mounir IDRASSI
5493de11d5
Windows: Enable Twofish optimized 64-bit assembly for UEFI bootloader since a pre-compiled object file was included to its build system. 2016-12-26 00:00:05 +01:00
Mounir IDRASSI
a0eadbd660
Windows: Don't use Twofish x64 assembly implementation for UEFI bootloader (for now, yasm is not integrated in EDKII framework). 2016-12-07 12:36:08 +01:00
Mounir IDRASSI
f10e26fc89
Windows Bootloader: fix compilation error following Twofish code changes. 2016-12-07 12:36:07 +01:00
Mounir IDRASSI
91e0de6145
Crypto: remove unnecessary alignment adjusting code in Serpent since the SIMD implementation works with unaligned data and gain negligible compared to memcpy overhead. 2016-12-07 12:36:05 +01:00
Mounir IDRASSI
263abeee3a
Crypto: Add optimized Twofish assembly implementation for x86_64. 2016-12-07 12:36:04 +01:00
Mounir IDRASSI
15b6c7d3b7
Implement detection of new CPU features: AVX2 and BMI2 2016-10-17 18:40:33 +02:00
Mounir IDRASSI
2edd12fe22
Optimize performance of Twofish C implementation. 2016-10-17 18:40:32 +02:00
Mounir IDRASSI
2a10640f42
Add missing fast Serpent implementation sources. 2016-10-17 18:40:25 +02:00
Mounir IDRASSI
e5a9e9239b
Crypto: Use SIMD optimized Serpent implementation from Botan. 2.5x speed gain factor. Update credits and copyrights notice. 2016-10-17 18:40:23 +02:00
Mounir IDRASSI
57ce7aab7b
Use properly aligned memory in code using Streebog hash implementation that uses SSE. 2016-10-17 18:40:19 +02:00
Mounir IDRASSI
b65eabe23d
Add test vectors for Kuznyechik and GOST89 (the later is deprecated) 2016-10-17 18:40:16 +02:00
Mounir IDRASSI
194b641ebd
Crypto: remove specific PBKDF2 optimization for block index encoding (except in 16-bit bootloader) in order to make code clearer and avoid bad usage in the future if this implementation is used to generate more bytes than today. 2016-10-17 18:40:13 +02:00