1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2026-06-09 22:36:59 -05:00
Commit Graph

114 Commits

Author SHA1 Message Date
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
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