Mounir IDRASSI
31c4fbfc12
Fix wrong check on the define CRYPTOPP_BOOL_X64
2019-12-09 18:59:20 +01:00
Mounir IDRASSI
08593aa7ab
Linux/MacOSX: use x64 optimized SHA256 implementation instead of limiting it to Windows.
2019-12-09 18:10:21 +01:00
Hanno Böck
e6aae8bd71
Add burn calls for temporary ss variable ( #569 )
2019-12-09 17:45:35 +01:00
alt3r 3go
0364a36f84
Linux: fix NOASM compilation ( #563 ) ( #568 )
...
Signed-off-by: alt3r 3go <alt3r.3go@protonmail.com >
2019-12-09 17:43:33 +01:00
Mounir IDRASSI
3818b443c3
Windows: include rdrand.h file only in Windows case since it is not yet included for other OSes
2019-11-09 00:26:21 +01:00
Mounir IDRASSI
dc08b69240
Windows: fix driver build error caused by missing header
2019-11-07 00:47:45 +01:00
Mounir IDRASSI
bd7200e2b5
Linux/MacOSX: Fix build error caused by RDRAND_getBytes/RDSEED_getBytes implemented only on Windows
2019-11-03 15:38:35 +01:00
Mounir IDRASSI
1994520e75
Windows: when building for EFI bootloader, don't make calls to RDRAND/RDSEED functions since we don't link against their implementation in EFI bootloader
2019-11-02 01:00:16 +01:00
Mounir IDRASSI
6252d96b0d
Update Jitterentropy Library to version 2.2.0
2019-10-30 22:05:25 +01:00
Mounir IDRASSI
3565cb1afe
Disable both RDRAND and RDSEED if a failure is detected
2019-10-30 09:09:45 +01:00
Mounir IDRASSI
5ecff99edc
Add check for buggy RDRAND (AMD Ryzen CPU case) even if we always use RDSEED instead of RDRAND when RDSEED is available (which is the case on modern CPUs)
2019-10-30 08:53:03 +01:00
Mounir IDRASSI
7a35ecb154
Windows: use separate assembly files for RDRAND and RDSEED in order to fix a mysterious crash when MASM_RDSEED_GenerateBlock is called after MASM_RDRAND_GenerateBlock.
2019-10-30 08:52:55 +01:00
Mounir IDRASSI
3b5d4771a0
Fix wrong detection of AMD CPUs.
2019-10-29 15:42:43 +01:00
Mounir IDRASSI
afe6b2f45b
Linux: Fix compilation error on non-x86 platform by providing generic implementation for jent_get_nstime function
2019-10-28 23:18:11 +01:00
Mounir IDRASSI
3fa636d477
Linux: Fix compilation error if type __u64 is already defined by gcc
...
This is the case with Mageia Cauldron which has gcc 9.2.1
2019-10-28 18:59:07 +01:00
Mounir IDRASSI
96c90d18c2
Linux/MacOSX: Better approach to avoid that jitterentropy code is optimized by the compiler
2019-10-24 21:07:39 +02:00
Mounir IDRASSI
478066c607
Linux/MacOSX: Add missing JitterEntropy implementation
2019-10-23 22:46:25 +02:00
Mounir IDRASSI
4119521f9e
Linux: Workaround for gcc 4.4.7 bug under CentOS 6 that causes VeraCrypt built under CentOS 6 to crash when Whirlpool hash is used.
2019-10-17 15:00:37 +02:00
El Mostafa Idrassi
9a895bedde
Fix "error "SSSE3 instruction set not enabled" when compiling using GCC version < 4.9 without -mssse3 option (SSSE3=1 when using make). ( #507 )
...
Compiling with -mxxx defines the corresponding macro of the intrinsics.
For example, -mssse3 defines __SSSE3__ macro to 1.
In GCC versions < 4.9, it is not possible to use and call x86 intrinsics only at runtime without
compiling the entire file with the -mxxx option.
For example, if we want to call SSSE3 intrinsics without compiling with -mssse3, the macro __SSSE3__ is not defined.
Therefore, when including <tmmintrin.h>, this results in "error "SSSE3 instruction set not enabled"" because of :
#ifndef __SSSE3__
# error "SSSE3 instruction set not enabled"
Since GCC 4.9, this has been fixed and it is possible to call x86 intrinsics from select functions in a file
that are tagged with the corresponding target attribute without having to compile the entire file with the -mxxx option.
This can be seen in <tmmintrin.h> which in recent versions (>= 4.9) contains :
#ifndef __SSSE3__
#pragma GCC push_options
#pragma GCC target("ssse3")
#define __DISABLE_SSSE3__
Since SSSE3 is only used under Windows for ChaCha256, this can be fixed by preceding '#include <tmmintrin.h>' with
#if defined (_MSC_VER) && !defined (TC_WINDOWS_BOOT).
See https://gcc.gnu.org/gcc-4.9/changes.html
2019-10-04 14:07:10 +02:00
Hans-Peter Jansen
0d91dab5b9
Align section types of Whirlpool_C and SHA256_K ( #479 )
...
in order to fix LTO linking.
After switching to LTO for openSUSE Tumbleweed, veracrypt build failed with:
[ 185s] ../Crypto/Whirlpool.c:105:45: error: 'Whirlpool_C' causes a section type conflict with 'SHA256_K'
[ 185s] 105 | CRYPTOPP_ALIGN_DATA(16) static const uint64 Whirlpool_C[8*256+R] CRYPTOPP_SECTION_ALIGN16 = {
[ 185s] | ^
[ 185s] ../Crypto/Sha2.c:321:34: note: 'SHA256_K' was declared here
[ 185s] 321 | CRYPTOPP_ALIGN_DATA(16) uint_32t SHA256_K[64] CRYPTOPP_SECTION_ALIGN16 = {
[ 185s] | ^
[ 185s] lto-wrapper: fatal error: g++ returned 1 exit status
Aligning section types of Whirlpool_C and SHA256_K fixes this.
2019-10-02 21:25:10 +02:00
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