1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2026-06-17 01:56:10 -05:00
Commit Graph

105 Commits

Author SHA1 Message Date
Mounir IDRASSI a173a11cfe Linux: parallelize header KDF autodetection
Extend the Unix encryption thread pool to run key-derivation work items and use it when mounting volumes without an explicitly selected KDF. This brings Linux/macOS header PRF autodetection closer to the Windows path while keeping selected-KDF mounts unchanged.

Fixes #1610.
2026-05-25 21:54:14 +09:00
Mounir IDRASSI c3ce2db9ac Document fixed Argon2id header key size
Argon2id includes the requested output length in its computation, so deriving 192 bytes and using a prefix is not equivalent to deriving only the selected cipher's key material length. This differs from PBKDF2, where the prefix property made this detail invisible.

VeraCrypt derives the maximum header key material currently needed by the supported cipher/cascade set, which is 192 bytes, and then uses the required prefix for the selected encryption algorithm. For AES-XTS this means the first 64 bytes of the 192-byte Argon2id output are used.

Make this design rule explicit in code and documentation by introducing ARGON2_HEADER_KEYDATA_SIZE instead of relying implicitly on GetMaxPkcs5OutSize. If a future cipher or cascade requires more than 192 bytes, that must be handled as an explicit format/design change.

Document the 192-byte Argon2id header KDF output requirement so third-party implementations derive the same header key material.

References: https://github.com/veracrypt/VeraCrypt/issues/1614
2026-05-21 18:10:06 +09:00
Mounir IDRASSI e59eb421fb Linux/macOS: Implement missing Argon2 KDF support on Unix 2026-04-19 17:52:44 +09:00
Mounir IDRASSI 5055382f08 macOS: fix macOS local arm64 build affecting Volume archive
Local macOS builds disable universal binaries. On Apple Silicon, that means
the regular objects are built for arm64 only, but Volume.make still selected
the macOS assembly bundle. Several of those assembly outputs are x86_64 only,
which makes ranlib reject Volume.a because it contains mixed cputypes.

Make local arm64 macOS builds use the existing arm64 crypto object path and
have the macOS build wrapper export CPU_ARCH/COMPILE_ASM consistently for
local builds.
2026-04-15 10:53:32 +09:00
uni-kod 7de81cd42b Fix code compilation. (#1583)
* Fix "blake2b.h" header file location.

* Include "blake2b.h" to fix compilation.
2025-08-31 15:32:33 +09:00
Mounir IDRASSI 3867c1cca3 Use blake2b as hash for random generator from Argon2 is used. 2025-07-03 17:32:47 +09:00
Mounir IDRASSI 9dc24ba7d0 Windows: speedup PRF autodetection mode by implementing abort mechanism in PBKDF2/Argon2 primitives 2025-06-29 21:44:32 +09:00
Mounir IDRASSI 04606da5ee Linux: Fix build issue after addition of Argon2 on Windows.
Argon2 support for Linux will come later
2025-06-26 10:15:01 +09:00
Mounir IDRASSI 44a9f8bcff Remove SM4 support! 2025-05-18 18:31:39 +09:00
Mounir IDRASSI 982fffe4db Reorder SM4-based cascade ciphers: apply SM4 as the final stage following external review.
The cascade order has been updated so that SM4 is applied after the other cipher(s) (e.g., Serpent). This change reflects standard cryptanalytic guidance, which shows that the overall strength of a cascade is limited by the first encryption stage. Given that SM4 uses a 128-bit key, its post-quantum brute-force resistance is lower than ciphers with a 256-bit key (such as Serpent). By placing SM4 last, we ensure that any potential weakness in SM4 cannot reduce the security margin provided by the stronger cipher.
2025-05-16 15:37:32 +09:00
Mounir IDRASSI 3a7b57cef8 Linux/macOS: don't advertise SM4 for system encryption until its support is implement. 2025-05-12 08:33:00 +09:00
Mounir IDRASSI b673901503 Move copyright and links to "AM Crypo", amcrypto.jp and veracrypt.jp 2025-05-11 16:02:20 +09:00
Mounir IDRASSI 01cfc169c6 Linux: Fix link error with gcc 4.8 by build AESNI version of SM4 from gcc 4.4
AESNI support was enabled starting from gcc 4.4 and so AESNI code of SM4 should be built starting from this version.
2025-05-10 17:47:28 +09:00
Mounir IDRASSI 0c5dccd6f9 Linux: Fix self-test by making the code supports key length in a generic way
This change allows to support SM4 self-test which uses a 128-bit key.
2025-05-04 03:15:16 +09:00
Mounir IDRASSI 4a371f807e Linux: Fix build issues caused by changes after SM4 addition 2025-05-04 02:45:09 +09:00
Mounir IDRASSI 7924f06e39 Initial support of SM4 cipher for normal volumes 2025-05-04 02:27:05 +09:00
Mounir IDRASSI 247c98d954 Implement SHA256 acceleration on ARM64 platforms using CPU instructions 2025-01-26 16:21:13 +01:00
Mounir IDRASSI 54bd819990 Windows/Linux/macOS: implement AES hardware support on ARM64 (ARMv8) 2025-01-17 00:58:54 +01:00
Mounir IDRASSI 1b35abb191 Increment version to 1.26.18. Update copyright date. Update Release Notes. Update Windows drivers. 2025-01-14 12:26:28 +01:00
Mounir IDRASSI c63b74bbfe Linux: Fix build error following latest code cleanup 2024-11-13 09:16:49 +01:00
Mounir IDRASSI 73684e56d8 Linux: Fix build error following SHA intrinsic support changes 2024-11-10 21:42:24 +01:00
Mounir IDRASSI 04c747fb2d Add support for SHA-256 x86 instrinsic for enhance performance of PBKDF2-HMAC-SHA256 2024-11-10 21:08:00 +01:00
Mounir IDRASSI ed1263bf8c Implement detection of volumes with vulnerable XTS master key.
If vulnerability detected, a warning message is displayed during mount or backup/restore header, and changing the password is disallowed since it will not change the master key.
2024-08-02 00:20:53 +02:00
Mounir IDRASSI c370d4887c Linux: Fix assembly files not built on Linux
This is a regression caused by macOS changes. And endif statement was misplaced.
2024-06-19 09:02:31 +02:00
Deniz Türkoglu 406a1686f5 Improve and simplify macOS builds (#1276)
* Add missing macOS requirement for 'make package'

We need packages for the last build step on macOS, update docs
to reflect the requirement.

* Add build instructions using homebrew

On macOS, we can use a package manager to easily install
dependencies. This simplifies onboarding and building Veracrypt.

* Add flag to use homebrew packages

When building, we can use prebuilt wxwidgets from homebrew to
simplify and speed up local building. We also put the package
behind a flag as it's optional during development.

* Skip signing for local builds

When building with homebrew, skip signing. This can be put behind
a flag to enable, if needed.

* Use system yasm on macOS if available

The binary in the repo is not universal (x86_64) and therefore
building fails on arm architecture if Rosetta is not installed.

Use local yasm if available.

* Build local arch only in development

When building via homebrew and locally, build only the local arch
which skips ASM for arm(Mx) for MacOS. This removes the need to
have rosetta installed for building.

* Fix compilation issue when COMPILE_ASM is undefined

Use a conditional check for COMPILE_ASM not being false instead of true.
This avoids passing the variable to other parts of the build script.

* Set SDK 12 as the minimum requirement and target

Align the requirement to SDK 12 in both the makefile and script,
and update the comment to remove confusion.
I chose to leave this on 12 to be on the side of err and support
as many building platforms as possible, when we can support.

The local script now also sets the target using the local sdk
version. This should improve the local development experience.

* Fix wrong architecture for macOS in x86 builds

We now build only the current arch for local development builds
in macOS. This change also fixes the x86 builds failing.

* Add instructions brew backed macOS local builds

Flags to build a local build using homebrew packages are not
default and require parameter -b to build. We also don't build
packages directly, which requires -p.

* Fix wxwidgets not linking in local x86 macOS development builds

* Clarify build location in the document
2024-06-16 10:39:18 +02:00
Mounir IDRASSI 455a4f2176 Avoid conflict with C++17 features std::byte by using uint8 type instead of byte 2024-06-12 12:30:04 +02:00
Mounir IDRASSI 1a21ea8d73 Linux/MacOSX: put entries at line start and use tabs instead of spaces 2023-11-19 16:44:48 +01:00
lealem47 9247ce1bb9 wolfCrypt as crypto backend for VeraCrypt (#1227)
* wolfCrypt as crypto backend for VeraCrypt

* Refactor to use EncryptionModeWolfCryptXTS class
2023-11-13 00:51:31 +01:00
Mounir IDRASSI 3f976c24d2 Linux/macOS: Remove TrueCrypt support 2023-07-24 08:48:52 +02:00
Mounir IDRASSI 034b64f415 EMV keyfile support: Overall code improvements and bug fixes 2023-06-29 00:06:20 +02:00
mmauv 502ab9112a Add EMV functionality (#1080)
* Add basic strcture needed for EMV implementation

* Add demo EMV functionality with C code pasted in a very dirty and unsafe way. NOT FINAL

* Refactor IccExtractor Structure

* Fix Makefile

* fix include file

* move global variables from h to c

* revert to memcpy

* fix icc data recovery functions

* Add EMV functionalities on windows

* Make EMVToken structures like SecurityToken

* Define constants instead of hard coded values

* Token structures created with inheritance

* refactor TokenKeyfile to use inherit. + polymor.

* add Token.h + Token.cpp in modules in VS2010

* Add a comment at each use of SecurityToken class or objects

* SecurityTokenKeyfilesDialog preparation

* Implemennt GetAvailableTokens in Token class on windows

* merge

* up (patching for Windows)

* foreach Token.cpp corrected

* Display EMV keyfiles on first window in graphic interface

* Add token to Windows UI

* EMVToken selection on OKButton on Linux

* Keyfile.cpp optimization

* Move getKeyfileData in the token class

* EMV::Token GetAvailableKeyfiles() base

* Move getKeyfileData in the token class on unix

* Remove test comments

* Warnings resolved

* RemoveeSecurityTokenLibraryNotInitialized exception if at least one emv token is detected

* Adding new files

* Remove old files and add the new version to the windows project

* Change make_shared to shared_ptr constructor

* IccExtractor integration working on linux

* Throwing card not EMV execption

* catch error when not EMV type in EMVToken::GetAvailableKeyfiles

* Change types to compile on windows

* list all keyfiles, security keyfiles and emv keyfiles in command line

* Change type to be coherent and remove old todo comments

* Remove todo comments

* Change indentation and resolve a bug from previous commit

* Use polymorphism for GetKeyfileData and add export option for EMVTokens on Linux

* Linux : Allow to export EMV Tokens in command lines, Windows : Disable the delete button when EMV Keyfiles are selected

* Remove SlotId from TokenInfo as it is already in Token

* Correct errors on Linux

* Disable delete option if one EMV Token is selected on Linux

* Fix bug enabling delete button if nothing is selected

* emv data used as reference then burnt

* use of normal files in linux corrected

* help updated

* help updated for export functionnality

* option EMV added to graphic interface but not yet working

* Bug fix : Allow to use multiple EMV on windows

* EMV Option added to UserPreferences

* EMV Option working for Linux

* EMV option added to Windows (not working yet)

* [NOT TESTED] EMV option for Windows

* Working EMV option on Windows

* EMV Option for data extraction working for volume creation

* EMV Option for data extraction working for Mount

* EMV Option for data extraction working for mounting favorites volumes

* EMV Option for extraction working for Changing volume password, Set Derivation Key Algorithm and Add or remove keyfile from volume

* Windows : re-checking EMV Option when getting data

* Removing error catches in the IccDataExtractor classe (It only throws error now). Changing GetPan signature to resemble the other functions signatures more

* Changing EMV errors

- Only throwing ICCExtractionException from outside of the ICC module.
- Catching all TLVExceptions and PCSCExceptions to throw the right ICCExtractionException

- Deleting APDU exceptions.

* First version of the documentation

* Adding function pointers for winscard library (but it crashes VeraCrypt)

* Debugging function pointers

* The import of the library on windows work as expected now

* Reverting EMVToken.cpp changes used to test to library import

* Searching for the System32 path instead of hard codding it

* Fixing the bug were VeraCrypt crashes if there is no readers when  "add Token files" is clicked

* Winscard library not initialized in object constructor anymore to delay it after EMVOption check

* Remove winscard lib from windows dependencies

* Properly displaying errors

* Adding a dot in Language.xml

* Catching TLVException

* Removing unused code

* Remove unusefull comments

* Trying to fix 0x1f error

* Update IccDataExtractor.cpp

* Delete History.xml

* Fix get data without get pan

* Cleanup code

* changes for linux compilation but linking not working

* error handling for linux

* erasing emv data

* Burn PAN

* Burn PAN from memory

* Uncomment selfcheck before merging master

* burn corrected

* EMV errors handling for Linux

* EMV working for Linux CLI

* Doc : Winscard Linux package and VeraCrypt versions

---------

Co-authored-by: doriandu45 <d45.poubelle@gmail.com>
Co-authored-by: red4game <redemgaiming@gmail.com>
Co-authored-by: Brice.Namy <brice.namy@insa-rennes.fr>
Co-authored-by: vocthor <pieceo108@gmail.com>
Co-authored-by: vocthor <67202139+vocthor@users.noreply.github.com>
Co-authored-by: Andrei COCAN <andrei.cocan@insa-rennes.fr>
Co-authored-by: AndreiCocan <95496161+AndreiCocan@users.noreply.github.com>
Co-authored-by: francoisLEROUX <francois3443@gmail.com>
2023-06-28 22:51:43 +02:00
Mounir IDRASSI 36795a688f Implement support of Blake2s-256 hash algorithm and remove deprecated algorithms RIPEMD-160 and GOST89. 2022-03-08 00:29:26 +01:00
Mounir IDRASSI d417b2806c Linux/FreeBSD: Enable building without AESNI support by setting environment variable DISABLE_AESNI to 1 during build or passing NOAESNI=1 to make command
This comes following Github issue #892 and which should be solved thanks to this.
2022-02-13 18:42:27 +01:00
Mounir IDRASSI d448713e61 MacOSX: Make AESNI availability linked to compiler target and not compilation host 2021-08-16 00:26:37 +02:00
Mounir IDRASSI ad544681c7 Linux/macOS: re-order PRF algorithms from faster to slower for quicker autodetection mounting when usual algorithms used 2021-07-14 23:59:31 +02:00
Mounir IDRASSI 885cc1d01d Linux/MacOSX: Erase sensitive memory explicitly instead of relying on the compiler not optimizing calls to method Memory::Erase 2020-06-28 01:06:39 +02:00
Mounir IDRASSI 5fb407cffe Linux/MacOSX: use standard std::shared_ptr instead of our custom implementation which is kept for compatibility with older compilers. We also introduce compatibility code for old compilers that don't define std::unique_ptr 2020-06-26 01:22:18 +02:00
Christopher Bergqvist 0a2c565aa9 Switch from auto_ptr to unique_ptr (#638) 2020-06-11 18:02:28 +02: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
alt3r 3go 64de5bc78a Debug build: fix ParameterIncorrect error on hash benchmark start (#542) (#544) 2019-11-15 12:28:06 +01:00
Mounir IDRASSI a7d5b6a477 Linux/MacOSX: Add switch to force the use of legacy maximum password length (64 UTF8 bytes)
The switch is --legacy-password-maxlength
2019-11-04 00:09:52 +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 6d7f7527be MacOSX: fix link error under Xcode 4.6.3 2019-10-06 19:14:45 +02:00
Mounir IDRASSI cdd1179c63 Increase password maximum length to 128 bytes from 64 bytes 2019-01-28 17:16:33 +01:00
Mounir IDRASSI ce0a34941a Linux/MacOSX crypto: report XTS optimization implemented previously on Windows
c
2019-01-25 19:23:13 +01:00
mounir 1d37997d3b Linux/MacOSX/FreeBSD: In TrueCrypt mode, reject Streebog as KDF since it is not supported. 2018-08-10 01:31:30 +02:00
Mounir IDRASSI 22b9ca94b3 Linux/MacOSX/FreeBSD: better handling for mounting systen encrypted disks whose first sector has been overwritten (e.g. during windows repair). 2018-06-14 00:31:05 +02:00
Mounir IDRASSI d5dca62b04 Linux/MacOSX/FreeBSD: Support mounting partially encrypted system partitions/drivers in ReadOnly mode in order to allow troubleshooting in some cases. 2018-06-11 00:14:53 +02:00
Mounir IDRASSI 7df9724e20 Crypto: Add support for 5 new cascades of cipher algorithms (Camellia-Kuznyechik, Camellia-Serpent, Kuznyechik-AES, Kuznyechik-Serpent-Camellia and Kuznyechik-Twofish) 2018-03-27 16:15:57 +02:00