Commit Graph
93 Commits
Author SHA1 Message Date
Mounir IDRASSI 250a488a84 macOS: Use SMB backend for FUSE-T auxiliary mounts 2026-04-14 14:42:36 +09:00
Mounir IDRASSI cdc00dc4aa Linux: add support for building against FUSE3 2026-04-13 09:43:22 +09:00
Mounir IDRASSI f7c9e62909 macOS: fix typo in defaultDirs in Process::FindSystemBinary 2026-04-13 09:42:40 +09:00
Mounir IDRASSI bfa19f5603 Documentation: fix wrong name for pbkdf2.html causing issues under Linux. 2025-09-26 21:47:29 +09:00
Mounir IDRASSI 573f870175 Increment version to 1.26.17 is packaging files. 2025-09-21 16:49:05 +09:00
Mounir IDRASSI 26c149a031 Update translations 2025-09-21 12:02:10 +09:00
Mounir IDRASSI b1007c6135 Increment version to 1.26.27. Update Release notes, Windows driver, bootloader 2025-09-21 11:56:50 +09:00
Mounir IDRASSI b952201412 Windows: Add setting/CLI switch to enable IME during Secure Desktop. Fix Preferences tabs handling.
Now it is possible to enable IME during Secure Desktop using a setting in Preferences or using /enableIME switch.
This helps solve issues with some IME that causes VeraCrypt to freeze when selecting keyfile while VeraCrypt secure desktop is active.
See: https://sourceforge.net/p/veracrypt/discussion/general/thread/1e8b9aeacd
2025-09-20 22:31:13 +09:00
Mounir IDRASSI a7ebddc5f3 Windows driver: enhance IRP completion by avoiding inline ones and using CriticalWorkQueue for faster completion dispatch
This change adds more robustness in low memory case and avoid freezes.
It also protects cancel handling with cancel spin lock
2025-09-17 04:51:57 +09:00
Mounir IDRASSI e4e6b167e2 Windows driver: add safe MapIrpDataBuffer function to prevent rare BSOD when irp->MdlAddress is NULL
Introduce MapIrpDataBuffer to handle Direct/Buffered/Neither I/O, probing & locking pages and allocating a temp MDL when needed.
Replace blind MmGetSystemAddressForMdlSafe usage. clean up TempUserMdl in OnItemCompleted to avoid crashes when MdlAddress is NULL.

Issue reported at https://sourceforge.net/p/veracrypt/discussion/technical/thread/e43bde8d86/
2025-09-15 14:34:22 +09:00
Mounir IDRASSI f257d7b4a5 Windows driver: revert to single completion thread until proper implementation is in place 2025-09-15 11:25:05 +09:00
Mounir IDRASSI 41812674bb Windows: correct processor group affinity handling and off-by-one mapping
- Replace dynamic GetProcAddress usage with direct SetThreadGroupAffinity call since we run under Windows 10 minimum
- Compute affinity mask based on actual active processor count
- Fix off-by-one when assigning threads to processor groups (use > instead of >=), preventing premature group advance
- Improves correctness on multi-group (>=64 CPU) systems
2025-09-13 23:30:13 +09:00
Mounir IDRASSI f380dc13d9 Windows driver: fix VERIFY/TRIM offset & validation, label handling, CPU group affinity, and cleanup
- Use local volumeOffset, correct IOCTL_DISK_VERIFY & TRIM range translation/validation
- Enforce DataSetRangesLength alignment & per-range sanity checks
- Add missing returns after PsTerminateSystemThread
- Remove obsolete PsDereferenceImpersonationToken dynamic lookup
- Correct wide string size usage & zero label info buffer
- Fix DEBUG_TRACE macro check and GetCpuGroup off-by-one. proper affinity mask
- Minor safety/clarity cleanups
2025-09-13 23:26:12 +09:00
Mounir IDRASSI 54b81ed2d1 Windows driver: add defensive checks to TCCloseVolume implementation 2025-09-13 15:26:53 +09:00
Mounir IDRASSI 0b60d2a119 Windows: remove wrong static declaration of functions in Ntvol.h 2025-09-13 15:25:56 +09:00
Mounir IDRASSI 02e7b48836 Windows driver: revert IRP completion overhaul changes until more tests are conducted 2025-09-13 15:08:38 +09:00
Mounir IDRASSI f6f25eec8f Windows driver: simplify TCSleep to use KeDelayExecutionThread
Replace timer-based TCSleep (which allocated a KTIMER and waited on it) with an
implementation that calls KeDelayExecutionThread. This removes dynamic allocation
and kernel timer usage to simplify the code and reduce resource overhead.
Adds an IRQL <= APC_LEVEL assertion and documents the requirement.

This is safe because TCSleep is always called from code that runs at PASSIVE_LEVEL
2025-09-08 12:14:20 +09:00
Mounir IDRASSI 7df2c2957f Windows driver fix: Decrement IoThreadPendingRequestCount on allocation failure in MainThreadProc
Added InterlockedDecrement in the error path when GetPoolBuffer fails for EncryptedIoRequest to ensure accurate tracking of pending IO requests and prevent potential resource leaks.
2025-09-08 11:40:33 +09:00
Mounir IDRASSI f40f316dfb Windows driver: remove unneeded __try/__finally 2025-09-08 11:38:30 +09:00
Mounir IDRASSI 0e19cb9223 Windows driver: harden UpdateBuffer against integer overflow. Make completion backoff per request (no shared state) 2025-09-08 10:36:18 +09:00
Mounir IDRASSI 062b385a69 Windows driver: overhaul IRP completion path in EncryptedIoQueue, add dual completion threads, precise byte accounting & safer UpdateBuffer
Major changes:
- Added pooled + elastic work item model with retry/backoff (MAX_WI_RETRIES). removed semaphore usage.
- Introduced two completion threads to reduce contention and latency under heavy IO.
- Added BytesCompleted (per IRP) and ActualBytes (per fragment) for correct short read/write accounting. total read/write stats now reflect real transferred bytes instead of requested length.
- Moved decryption of read fragments into IO thread. completion threads now only finalize IRPs (reduces race window and simplifies flow).
- Deferred final IRP completion via FinalizeOriginalIrp to avoid inline IoCompleteRequest re-entrancy. added safe OOM inline fallback.
- Implemented work item pool drain & orderly shutdown (ActiveWorkItems + NoActiveWorkItemsEvent) with robust stop protocol.
- Replaced semaphore-based work item acquisition with spin lock + free list + event (WorkItemAvailableEvent). added exponential backoff for transient exhaustion.
- Added elastic (on-demand) work item allocation with pool vs dynamic origin tracking (FromPool).
- Added FreeCompletionWorkItemPool() for symmetric cleanup; ensured all threads are explicitly awakened during stop.
- Added second completion thread replacing single CompletionThread.
- Hardened UpdateBuffer: fixed parameter name typo, added bounds/overflow checks using IntSafe (ULongLongAdd), validated Count, guarded sector end computation.
- Fixed GPT/system region write protection logic to pass correct length instead of end offset.
- Ensured ASSERTs use fragment‑relative bounds (cast + length) and avoided mixed 64/32 comparisons.
- Added MAX_WI_RETRIES constant. added WiRetryCount field in EncryptedIoRequest.
- Ensured RemoveLock is released only after all queue/accounting updates (OnItemCompleted).
- Reset/read-ahead logic preserved. read-ahead trigger now based on actual completion & zero pending fragment count.
- General refactoring, clearer separation of concerns (TryAcquireCompletionWorkItem / FinalizeOriginalIrp / HandleCompleteOriginalIrp).

Safety / correctness improvements:
- Accurate short read handling (STATUS_END_OF_FILE with true byte count).
- Eliminated risk of double free or premature RemoveLock release on completion paths.
- Prevented potential overflow in sector end arithmetic.
- Reduced contention and potential deadlock scenarios present with previous semaphore wait path.
2025-09-07 23:58:35 +09:00
Mounir IDRASSI 55adda7504 Windows driver: add more checks and comments to crash dump filter
- Document HIGH_LEVEL constraints and rationale for pre-building a nonpaged scratch MDL.
- Allocate contiguous scratch buffer with conservative PFN cap (0x7FFFFFFFFFF) and fall back to unlimited cap if needed.
- Replace ASSERT with TC_BUG_CHECK for validation of write MDL mapping at HIGH_LEVEL.
- Safely copy PFNs from prebuilt MDL into caller MDL: compute dst/src page counts, check capacity, copy exact PFNs and retarget MDL header fields (preserve MdlFlags).
- Make DumpData cleanup defensive in unload path.
- comments improvements for clarity and maintainability.
2025-09-06 16:42:42 +09:00
Mounir IDRASSI 2dd4e29430 Fix warning caused by clash between Argon2 AVX2 rotrX macros and integer equivalents in VeraCrypt headers 2025-09-06 00:03:03 +09:00
Mounir IDRASSI c5589ac4fb Translations: set correct "lang" attribute in Swedish language file 2025-09-05 23:55:18 +09:00
Mounir IDRASSI 10c4d30312 Documentation: Add entry about KDF, PBKDF2. 2025-08-31 23:11:06 +09:00
Mounir IDRASSI 1326844065 Windows: Use tab control for VeraCrypt preferences to reduce clutter and size of dialog 2025-08-31 23:03:32 +09:00
Mounir IDRASSI 26a754b198 Documentation: Use "KDF" instead of "PKCS-5 PRF". Add Argon2 related information. 2025-08-08 23:38:40 +09:00
Mounir IDRASSI 54c39e4eb2 Use "KDF" instead of "PKCS5 PRF" for UI selection of KDF to use 2025-08-08 22:53:04 +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 eadb02d8ef Windows: set version to 1.26.26. Update Release Notes, bootloader and Windows drivers. 2025-06-29 23:31:18 +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 84f7ec5250 Linux: Fix build error under ARM64 2025-06-26 17:07:16 +09:00
Mounir IDRASSI 176d1c8bff Windows: Update MSI version to 1.26.25 2025-06-26 11:12:30 +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 6949417181 Windows: use correct default PIM value for Argon2 when validating small PIM values 2025-06-26 00:05:28 +09:00
Mounir IDRASSI 90e315dae2 Windows: Add missing x64 driver file 2025-06-26 00:00:40 +09:00
Mounir IDRASSI c148898ece Update some translations 2025-06-25 23:36:17 +09:00
Mounir IDRASSI 28f0c6cb4a Update Release Notes and CHM. 2025-06-25 23:14:34 +09:00
Mounir IDRASSI c782051e27 Windows: Fix build errors on ARM64 configuration due to missing include path in projects 2025-06-25 22:01:32 +09:00
Mounir IDRASSI f1b1112254 Windows: Update Windows MBR bootloader 2025-06-25 22:00:31 +09:00
Mounir IDRASSI ab2937c889 Add new entry in XML files for Argon2 memory cost. Increment version to 1.26.25 2025-06-25 20:32:09 +09:00
Mounir IDRASSI 3c17b8ced2 Windows: Add support for Argon2id as an alternative to PBKDF2 key derivation 2025-06-25 15:44:31 +09:00
Mounir IDRASSI 228129362a Windows: Include SDL dlls in signing batch file 2025-06-24 15:49:32 +09:00
Mounir IDRASSI 5627e7a738 Windows: Add CLI switches to control memory/screen protection features. Disable non-configurable settings in portable mode 2025-06-24 15:48:01 +09:00
Mounir IDRASSI c1dbcb32e6 Windows: Add resource file to Format dll. Fix copying output of Format dll project. 2025-06-24 15:31:39 +09:00
Mounir IDRASSI 79f7791036 Windows: Add password length and pin value defined to SDK header 2025-06-13 22:25:08 +09:00
Mounir IDRASSI 4402d153b9 Windows: Fix incorrect comment in SDK header file 2025-06-13 21:15:03 +09:00
Mounir IDRASSI 2b531dd113 Windows: Add an SDK for VeraCrypt Format that allows third-party application to create volumes 2025-06-13 21:12:14 +09:00
Mounir IDRASSI 08093f460a Windows: fix link error in custom EFI / VC_SKIP_OS_DRIVER_REQ_CHECK configuration 2025-06-09 11:41:12 +09:00
Mounir IDRASSI 87a5024a5b Linux: Allow AppImage file to start with "veracrypt" in any case 2025-06-09 11:07:07 +09:00
Mounir IDRASSI 69852fad9a Windows: Increase length of screen protection setting label to avoid truncation in some cases. 2025-06-09 10:41:10 +09:00
Mounir IDRASSI 1a47391d62 Documentation: Fix invalid HTML structure in some files 2025-06-09 10:38:57 +09:00
Mounir IDRASSI 9edb5d1ab5 Translations: revert to previous translation of IDC_DISABLE_SCREEN_PROTECTION for Russian 2025-06-09 10:36:11 +09:00
Mounir IDRASSI d9c41e0dba Documentation: Update Russian translations by Dmitry Yerokhin 2025-06-01 10:49:44 +09:00
Mounir IDRASSI 716ff4180e Add python script that automates uploading VeraCrypt release files to Launchpad 2025-06-01 10:44:10 +09:00
Mounir IDRASSI 0f509dba9c Windows:Continuation of fix of tab navigation in various dialogs 2025-05-29 22:07:03 +09:00
Mounir IDRASSI 08c813efd6 Increment version to 1.26.24. Update Release Notes and Windows drivers. 2025-05-29 18:10:59 +09:00
Mounir IDRASSI 704a21d31f Windows: Fix tab navigation in various dialogs 2025-05-29 06:17:06 +09:00
Mounir IDRASSI 4774bde1f1 macOS: use macFUSE name instead of OSXFUSE to match the new name of the macOS fuse library project. 2025-05-29 06:03:52 +09:00
Mounir IDRASSI b64b7c9ca4 macOS: Create symlink to VeraCrypt binary at /usr/local/bin/veracrypt during installation
This makes it easier to use the VeraCrypt CLI in a manner similar to Linux systems.
2025-05-29 05:48:40 +09:00
Mounir IDRASSI 71f538bcda Windows: real fix for "Unmount all" button label!! 2025-05-28 21:03:09 +09:00
Mounir IDRASSI e68c98ab6b Increment version to 1.26.3. Update Release Notes and signed drivers 2025-05-28 19:28:32 +09:00
Mounir IDRASSI c0ab75d499 Documentation: Fix rendering issue of localized CHM files by using correct encoding 2025-05-28 16:12:10 +09:00
Mounir IDRASSI 1ebd11c750 Windows: Replace remaining "Dismount All" by "Unmount All" 2025-05-28 11:08:16 +09:00
Mounir IDRASSI 26eb821c69 Update Release Notes and release date. Increment version of Windows binaries 2025-05-27 18:15:32 +09:00
Mounir IDRASSI 98102bbff6 Linux/macOS: Make help text less confusing with regards to optional parameter of certain commands
the presence of '=' sign was not correct.
2025-05-27 17:14:17 +09:00
Mounir IDRASSI b18c2d3c71 Windows: Implement mutex to serialize initialization across multiple VeraCrypt instances
When multiple VeraCrypt.exe instances were launched simultaneously, race conditions
could occur during the WM_INITDIALOG processing phase, potentially causing application
crashes or hang. This was because the initialization logic handles critical operations
like mounting/unmounting volumes and processing favorite volumes that modify global
system state.

This commit:
- Adds a named local session mutex (MainInitMutex) that serializes the WM_INITDIALOG handler
- Implements proper acquisition and release of the mutex during initialization
- Ensures proper cleanup of mutex resources on application exit
2025-05-27 15:18:06 +09:00
Mounir IDRASSI 58ad07c4d5 Translations: Update and fix various language files. 2025-05-25 17:18:58 +09:00
Mounir IDRASSI 54600e18af Github workflows: enhance xmlvalidate.sh to catch invalid escape sequences 2025-05-25 17:17:32 +09:00
Mounir IDRASSI 4b46d992da Increment version to 1.26.22. Update Release Notes. Update signed drivers. 2025-05-25 09:49:49 +09:00
Mounir IDRASSI 34c6557e75 Documentation: Add missing image for mastodon contact 2025-05-25 09:27:47 +09:00
Mounir IDRASSI 733980dc2c Translations: Add translation of newly added fields for some languages 2025-05-24 17:14:16 +09:00
Mounir IDRASSI 9ea5ccc4aa Windows: Enable screen protection by default to block screenshots, recordings & Windows Recall. Add configurable setting in Preferences, Installer, and MSI.
This update introduces a screen protection mechanism that leverages the Windows Display Affinity API to prevent screen capture, screen recording, and inclusion in the Windows 11 Recall feature. By default, all VeraCrypt windows, menus, and tooltips are protected. Users can enable or disable this feature through a new setting available in the application Preferences, as well as in the installer and MSI configurations.

This enhances user privacy by mitigating potential leaks of sensitive interface content.

Note: Due to a regression in Windows 11 affecting layered windows, ComboBox dropdowns cannot currently be protected by this mechanism.
2025-05-24 15:28:39 +09:00
Mounir IDRASSI 44a9f8bcff Remove SM4 support! 2025-05-18 18:31:39 +09:00
Mounir IDRASSI ec0fa4f482 macOS: make dmg template larger to accommodate increase size of documentation 2025-05-18 18:13:43 +09:00
Mounir IDRASSI 4b6e1a2309 macOS/FreeBSD: add missing GCC_GTEQ_440 define in Makefile 2025-05-18 17:39:41 +09:00
Mounir IDRASSI d4c8add9c4 Update Readme to indicate veracrypt.io as the new official mirror 2025-05-16 20:48:26 +09:00
Mounir IDRASSI cf5a0ad003 Update Release Notes.html and release date. 2025-05-16 15:41:10 +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 b0311f7a86 Documentation: Add missing reference to SM4-based Cascades ciphers. 2025-05-15 18:34:35 +09:00
Mounir IDRASSI 1839a4a746 Set release date to May 16th. 2025-05-15 10:39:35 +09:00
Mounir IDRASSI e1c7f2f043 Silence compiler warning in HasTranslatedDocumentation function 2025-05-15 10:29:59 +09:00
Mounir IDRASSI a6f734ae2b Linux: cleanup old build artifacts before performing new build 2025-05-15 10:29:09 +09:00
Mounir IDRASSI a882fd65d0 Documentation: remove unused donation image files 2025-05-14 16:04:03 +09:00
Mounir IDRASSI 0d3e0c954b Update Donation details (bank, crypto, paypal) 2025-05-14 11:05:28 +09:00
Mounir IDRASSI 009d189768 Linux/macOS: Fix build error cause by missing conversion 2025-05-12 17:30:38 +09:00
Mounir IDRASSI 5ae263e6e6 Linux: Update local documentation logic to the new organization of folders under "docs/html" 2025-05-12 16:23:49 +09:00
Mounir IDRASSI acac37b5b7 Update Release Notes and CHM. Set release date and update signed Windows drivers. 2025-05-12 10:21:58 +09:00
Mounir IDRASSI f0a1da146e Windows: fix path errors in WiX file that blocked creation of MSI. 2025-05-12 09:12:47 +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 358f7f095e Documentation: Fix missing AM Crypto references 2025-05-11 21:31:15 +09:00
Mounir IDRASSI 09c635e592 Removed unused declarations in sm4.cpp 2025-05-11 18:13:00 +09:00
Mounir IDRASSI 0a8848de6c Update PayPal donation links 2025-05-11 18:09:43 +09:00