Compare commits

...
Author SHA1 Message Date
Mounir IDRASSI 242fdbc056 Language XML files: Update Arabic translation (contributed by Ali Khojah) 2018-03-30 13:54:10 +02:00
Mounir IDRASSI b60030a3cf Windows: Update EFI bootloader files for 1.22 release 2018-03-30 13:54:09 +02:00
Mounir IDRASSI 5b364099e1 Windows: Update signed driver files for 1.22 2018-03-30 13:54:07 +02:00
Mounir IDRASSI 76649073ea Docummentation: update Release Notes for 1.22 2018-03-30 13:54:06 +02:00
Mounir IDRASSI 5f691297c0 Increment version to 1.22 (1.22.9) 2018-03-30 13:54:05 +02:00
Mounir IDRASSI e57ef0229b Windows: workaround for cases where password dialog is not able to get focus. 2018-03-30 13:53:59 +02:00
Mounir IDRASSI 8dd58ddf6d Update some XML languages files using translations done in Transifex 2018-03-30 13:53:58 +02:00
Mounir IDRASSI da77d7e2c4 Simplify format of XML language files to make it easy to integrate in collaborative translation platforms (e.g. Transifex). 2018-03-30 13:53:37 +02:00
Mounir IDRASSI 1732ee57d0 Documentation: Add missing image file. 2018-03-30 13:51:58 +02:00
Mounir IDRASSI 849a2eae81 Language XML files: update Russian XML file by Dmitry Yerokhin. 2018-03-28 20:34:31 +02:00
Mounir IDRASSI 46ace708b6 Windows: Update EFI bootloader files for 1.22-BETA8 2018-03-28 16:50:05 +02:00
Mounir IDRASSI e2c0d1cf36 Increment version to 1.22-BETA8 (1.22.8) 2018-03-28 16:50:03 +02:00
Mounir IDRASSI 806c86bd19 Windows: use the same default value for EFI system encryption password prompt as in the one used in the bootloader. 2018-03-28 16:49:55 +02:00
Mounir IDRASSI ca31073eae Linux/MacOSX: use latest wxWidgets version 3.0.4 for official build 2018-03-27 19:54:10 +02:00
Mounir IDRASSI f11368a4ee Windows: Update EFI bootloader files for 1.22-BETA7 2018-03-27 16:16:19 +02:00
Mounir IDRASSI c30396bea9 Windows: Update signed driver files for 1.22-BETA7 2018-03-27 16:16:16 +02:00
Mounir IDRASSI 0b2bad77ac Docummentation: update Release Notes for 1.22-BETA7 2018-03-27 16:16:15 +02:00
Mounir IDRASSI 7d1a3e4f4e Increment version to 1.22-BETA7 (1.22.7) 2018-03-27 16:16:14 +02:00
Mounir IDRASSI 5a63585f7e Documentation: document newly added cascades of cipher algorithms (Camellia-Kuznyechik, Camellia-Serpent, Kuznyechik-AES, Kuznyechik-Serpent-Camellia and Kuznyechik-Twofish) 2018-03-27 16:16:04 +02:00
Mounir IDRASSI c9deed4686 Linux/MacOSX: make the benchmark dialog resize dynamically to accommodate the displayed results. 2018-03-27 16:16:00 +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
Mounir IDRASSI da69304dc8 Language Files: update polish translation 2018-03-26 15:17:44 +02:00
Mounir IDRASSI c43f2abaa6 Docummentation: update Release Notes for 1.22-BETA6 2018-03-25 22:00:43 +02:00
Mounir IDRASSI caf2fff60e Increment version to 1.22-BETA6 (1.22.6) 2018-03-25 22:00:39 +02:00
Mounir IDRASSI f38c4cfee8 Windows: handle rare case where call to SwitchDestop fails when trying to display password dialog in our secure desktop. This can happen for example if VeraCrypt process is launched early when user session is opened and it tries to load favorites before user workstation becomes visible. 2018-03-25 22:00:28 +02:00
Mounir IDRASSI b206988531 Windows: use cleaner approach to implement bringing our windows to foreground. The previous implementation was causing issues with other application, like random freezing. 2018-03-25 22:00:27 +02:00
Mounir IDRASSI e412c0458b Windows: ensure that out secure desktop has always user input to avoid cases where another application switch to default desktop while our password dialog is displayed. 2018-03-25 22:00:27 +02:00
Mounir IDRASSI 6ebc83bbed Update dates on some copyrights statements 2018-03-22 11:13:35 +01:00
Mounir IDRASSI 4c0c4577df Update EFI bootloader files to latest VeraCrypt-DCS (commit "llmath updated (EFI based)") 2018-03-22 10:27:06 +01:00
Mounir IDRASSI a6e76e714c Windows: Update signed driver files for 1.22-BETA5 2018-03-22 10:27:04 +01:00
Mounir IDRASSI b81b1d3bff Docummentation: update Release Notes for 1.22-BETA5 2018-03-22 10:25:55 +01:00
Mounir IDRASSI f7a56b8f29 Increment version to 1.22-BETA5 (1.22.5) 2018-03-22 10:25:54 +01:00
Mounir IDRASSI e29ecee6bc Documentation: Update copyright information. 2018-03-22 10:25:46 +01:00
Mounir IDRASSI c24105feac Documentation: add information about data leaks in Windows related to shellbags registry keys (reported by DrunkenSasquatch at https://github.com/veracrypt/VeraCrypt/issues/276) 2018-03-22 00:27:33 +01:00
Mounir IDRASSI fd693b3a0c Windows: Fix some cases of external applications freezing during mount/dismount by using an internal window as parent to the waiting dialog instead of the desktop window. 2018-03-20 00:21:58 +01:00
Mounir IDRASSI f278df95e9 XML Languages files: remove unused entry. 2018-03-20 00:21:57 +01:00
Mounir IDRASSI eafac3be5c Update various copyright dates. 2018-03-18 23:30:29 +01:00
Mounir IDRASSI cd7a01c34f Windows: Update libzip to version 1.5.0 that include fixes for some security issues. 2018-03-18 23:13:40 +01:00
Mounir IDRASSI 49a8e52139 XML Language files: Set lang to "de" to newly translated entries in German language file. 2018-03-18 18:08:20 +01:00
Ettore AtalanandMounir IDRASSI f4bea28fe4 Update Language.de.xml (#293)
Translated the latest strings for TRIM commands.
2018-03-18 17:56:03 +01:00
Mounir IDRASSI d20df7c990 Windows: when /silent specified in command line, avoid performing any WIN32 UI calls. This fixes issue of current application losing focus when VeraCrypt is run with /quit /silent (cf https://github.com/veracrypt/VeraCrypt/issues/274) 2018-03-13 18:34:21 +01:00
Mounir IDRASSI 6c69cbfd29 Fix ampersand symbol not properly escaped in Romanian translation. 2018-03-12 23:33:05 +01:00
Mounir IDRASSI 7ee9e21525 XML Language files: update Chinese translation 2018-03-12 23:33:04 +01:00
Mounir IDRASSI cfe9218655 XML Language files: Update Hungarian translation (by Szaki) 2018-03-12 00:26:13 +01:00
Mounir IDRASSI 2c961dc1a6 Language XML file: remove unused text entry. 2018-03-12 00:26:12 +01:00
Mounir IDRASSI 5e3d756806 Windows: make TRIM blocking option grayed in System -> Settings UI under hidden OS since TRIM commands are always blocked in this case. 2018-03-12 00:26:11 +01:00
Mounir IDRASSI c215c5d0b2 Update donation page to match online version and remove references to Tibit service since it has shutdown. 2018-03-07 00:23:03 +01:00
TigerxWoodandMounir IDRASSI 232e27c979 Update language.ro.xml to 1.22-BETA4 (#288)
Corrected
2018-03-06 23:11:11 +01:00
Mounir IDRASSI d17c5a0d89 Windows: Replace the text "TRIM operation" by "TRIM command" in UI and translations for better consistency. 2018-03-05 19:35:13 +01:00
Mounir IDRASSI d907627f7e Windows: Add option to block TRIM command on system encryption SSD drives. 2018-03-05 19:35:07 +01:00
Mounir IDRASSI bac2ad29b6 XML Languages files: Add translation entry for non-system TRIM configuration 2018-03-05 19:35:01 +01:00
TigerxWoodandMounir IDRASSI 59ebfd2683 Update language.ro.xml to 1.22-BETA4 (#285) 2018-03-05 12:21:21 +01:00
Mounir IDRASSI cd59d5364f Windows: Implement TRIM support for non-system SSD partitions/drives and add driver option to enable it (TRIM is disabled by default for non-system SSD partitions/drives) 2018-03-04 18:50:23 +01:00
Mounir IDRASSI 5065116e56 Windows: fix build issue under VS 2017 caused by msxml6.dll 2018-03-04 18:50:21 +01:00
Mounir IDRASSI 95d682a60f Windows: remove dependency to afxres.h header to allow build on community edition of Visual Studio. 2018-03-04 18:50:20 +01:00
Mounir IDRASSI 21ef234989 Windows: fix build issue of zip library with Visual Studio 2015/2017 2018-03-04 18:50:19 +01:00
Mounir IDRASSIandGitHub 1c78303d94 Merge pull request #277 from DrunkenSasquatch/master
Fix Location Typo
2018-02-11 16:27:19 +01:00
DrunkenSasquatch 61454c3df7 Fix Location Typo 2018-02-10 08:48:54 +10:00
Mounir IDRASSIandGitHub b076fb09d7 Merge pull request #267 from gv5470/patch-100
Fix wxWidgets assertion failed when backing up/restoring volume heade…
2018-01-26 01:00:55 +01:00
gv5470 fbd0b47ff0 Fix wxWidgets assertion failed when backing up/restoring volume header (closes #100) 2018-01-21 11:17:34 +01:00
Mounir IDRASSI ea94096df7 Language XML Files: Add untranslated Thai language file. 2017-12-29 01:06:31 +01:00
Mounir IDRASSIandGitHub 2a60a5728e Merge pull request #252 from Musikolo/develop
Update Spanish translations
2017-12-28 13:39:11 +01:00
Mounir IDRASSIandGitHub 58287614e6 Merge pull request #250 from Atalanttore/patch-1
Update Language.de.xml
2017-12-28 12:50:04 +01:00
Unknown 26bf85575d Fix a lot of typos 2017-12-28 00:15:06 -06:00
Unknown 394bc1a4dd Fix minor typo 2017-12-27 23:22:13 -06:00
Unknown 81cc646107 Add some missing changes 2017-12-26 22:08:18 -06:00
Unknown dc4d3923f2 Update Spanish translations 2017-12-26 21:34:15 -06:00
Ettore AtalanandGitHub 270df0103a Update Language.de.xml 2017-12-26 10:26:37 +01:00
Ettore AtalanandGitHub 80d53604cf Update Language.de.xml
I've translated the new strings for the upcoming version 1.22.
2017-12-26 10:20:50 +01:00
Mounir IDRASSI e1646365b0 Docummentation: update Release Notes with fix for KDE GUI install. 2017-12-13 16:24:02 +01:00
Mounir IDRASSI 9b09b47055 Linux: fix failure to install GUI version under recent versions of KDE. 2017-12-13 16:23:59 +01:00
Mounir IDRASSI c2a3a00516 Linux: fix compilation error with older versions of gcc (e.g. 4.x) 2017-12-09 15:11:48 +01:00
Mounir IDRASSI d03b06a40f Windows: Update signed driver files for 1.22-BETA4 2017-12-09 15:11:47 +01:00
Mounir IDRASSI 857d0f16c0 Docummentation: update Release Notes for 1.22-BETA4 2017-12-09 15:11:44 +01:00
Mounir IDRASSI 2ef3c3a482 Increment version to 1.22-BETA4 (1.22.4) 2017-12-09 15:11:33 +01:00
Mounir IDRASSI f3d5ed570f MacOSX: fix issue that prevented some local help files from opening in the browser (e.g Beginner's Tutorial). 2017-12-08 12:24:50 +01:00
Mounir IDRASSI 700b54aee9 MacOSX: Update reference of code signing certificate in Makefile to use new IDRIX certificates. 2017-12-06 23:25:46 +01:00
Mounir IDRASSI d6f03627dd Linux/MacOSX: Avoid OS leaking previously used directory if user choose not to save history. 2017-12-06 23:25:45 +01:00
Mounir IDRASSI b4ed8de5d5 Documentation: Remove codeplex reference from Flattr donation link. 2017-12-05 17:23:48 +01:00
Mounir IDRASSI fb403ab552 Docummentation: correct Release Notes for 1.22-BETA3 2017-12-05 17:23:47 +01:00
Mounir IDRASSI 668d5e3cad Linux: Only add disk to mountable devices if it doesn't have a partition. This fixes a strange issue where the function "open" would fail with error ENOENT (No such file or directory) on a partition (e.g. /dev/sdb1) if it was called previously on the main disk (e.g. /dev/sdb). 2017-11-29 17:27:39 +01:00
Mounir IDRASSI ee6da31fb6 Language XML files: remove references to GOST89 since it is not supported anymore. 2017-11-28 23:31:08 +01:00
Mounir IDRASSIandGitHub c5e48c56c9 Merge pull request #243 from gv5470/patch-233-pr
Linux: autodetect host drive name using sysfs (closes #233)
2017-11-28 22:56:20 +01:00
gv5470 49f9516c9e Linux: autodetect host drive name using sysfs (closes #233) 2017-11-28 19:03:07 +01: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 685fad2d5d Documentation: Add OSX 10.13 High Sierra to the list of support operating systems. 2017-11-27 16:16:33 +01:00
Mounir IDRASSIandGitHub 7dfca3573b Merge pull request #206 from strazzere/patch-1
Fix typo
2017-11-27 15:59:50 +01:00
Mounir IDRASSIandGitHub 743f1ff329 Merge pull request #226 from TigerxWood/patch-2
Romanian Translation: Update to ver. 122 and made some corrections.
2017-11-27 15:59:00 +01:00
Mounir IDRASSIandGitHub d4d1fba035 Merge pull request #230 from bmintz/issue-198
Fix compilation on Linux (closes #198)
2017-11-27 15:54:16 +01:00
Mounir IDRASSIandGitHub 7ed41b3fde Merge pull request #227 from wwj402/patch-1
Update Language.zh-cn.xml
2017-11-27 15:51:38 +01:00
Mounir IDRASSIandGitHub e9519da49e Merge pull request #234 from user9209/master
fixed kuznyechik blocksize in german description
2017-11-27 15:46:29 +01:00
Georg Schmidt 3c52c07dbc fixed kuznyechik blocksize in german description 2017-11-10 21:07:53 +01:00
TigerxWoodandGitHub d74d568e6d Update ver. 1.22 beta3
Corrected lang="ro" for key="GPT_BOOT_DRIVE_UNSUPPORTED">
2017-11-10 06:34:01 +02:00
bmintz 5800d245e5 Fix compilation on Linux (closes #198)
This patch was provided by Krytarik Raido via unit93
https://github.com/veracrypt/VeraCrypt/issues/198#issuecomment-341453420
2017-11-06 21:05:21 -06:00
wwj402andGitHub de4a0393df Update Language.zh-cn.xml
Chinese Simplified language 1.22-BETA3 translation update.
2017-11-05 11:39:48 +08:00
TigerxWoodandGitHub f6b14ee300 Update to ver. 122 and made some corections.
The line 1403 ="GOST89_HELP" is still there, should be removed, because from ver. 1.19 the encryption algorithm was removed.
2017-11-04 12:30:38 +02:00
Tim StrazzereandGitHub 5b46b82e6d Fix typo
`incorrrect` -> `incorrect`
2017-08-30 09:59:44 -07:00
Mounir IDRASSI 6575ce3e9e Language XML files: update Czech translation (contributed by Lagardere) 2017-08-09 00:08:51 +02:00
Mounir IDRASSI dca51c6393 Docummentation: update Release Notes for 1.22-BETA3 2017-08-02 17:31:27 +02:00
Mounir IDRASSI 0137f63d81 Windows: Update signed driver files for 1.22-BETA3 2017-08-02 17:31:26 +02:00
Mounir IDRASSI ed7a17e47f Windows: Increment version to 1.22-BETA3 2017-08-02 17:31:20 +02:00
Mounir IDRASSI 2fde7f0b47 Windows MBR bootloader: reduce CPU usage during password prompt (Credit: Jason Pyeron of CipherShed project https://github.com/CipherShed/CipherShed/commit/00ea00e8e6a23a4243316f860aa07ed59203ab97) 2017-08-02 17:31:19 +02:00
Mounir IDRASSI 21fc5a8750 Windows: Update signed driver files for 1.22-BETA2-Build6 2017-07-29 15:54:32 +02:00
Mounir IDRASSI 53adfd5a1d Windows: increment version to 1.22-BETA2-Build6 2017-07-29 15:54:29 +02:00
Mounir IDRASSI 7158e2b097 Windows Driver: avoid allocating memory for some IOCTL_STORAGE_QUERY_PROPERTY calls that always return fixed size structures. 2017-07-29 15:54:28 +02:00
Mounir IDRASSI 8288fecc0a Windows: Add portable installer that only extra binaries without the need of administrative privileges for extraction. 2017-07-29 15:54:27 +02:00
Mounir IDRASSI 7a94a05974 Documentation: update release notes for 1.22-BETA2-Build5 2017-07-27 00:30:57 +02:00
Mounir IDRASSI 076c64dc8e Language Files: update polish translation 2017-07-27 00:30:57 +02:00
Mounir IDRASSI 6409f9c8e5 Windows: Update signed driver files for 1.22-BETA2-Build5 2017-07-27 00:30:56 +02:00
Mounir IDRASSI 03f45d842d Windows: increment version to 1.22-BETA2-Build5 2017-07-27 00:30:55 +02:00
Mounir IDRASSI aaa9a08bd4 Windows: when mounting system favorites using VolumeID feature, query all disks each time instead of caching previous call results. This is not efficient but it should fix rare cases where issues happen. 2017-07-27 00:30:54 +02:00
Mounir IDRASSI 72b7147021 Windows: use large output buffer for IOCTL_DISK_GET_DRIVE_GEOMETRY_EX calls to avoid failure with disk drivers that don't support returning only sizeof(DISK_GEOMETRY_EX). 2017-07-27 00:30:53 +02:00
Mounir IDRASSI c29ee8331a Windows driver: correctly handle IOCTL_DISK_GET_DRIVE_GEOMETRY_EX to fix issues with some disks. Implement IOCTL_STORAGE_GET_MEDIA_TYPES_EX. 2017-07-27 00:30:51 +02:00
Mounir IDRASSI 7e892b7b24 Documentation: update release notes for 1.22-BETA2-Build1 2017-07-23 14:52:25 +02:00
Mounir IDRASSI 6f371c0973 Windows MBR Bootloader: always compress bootloader with upx to reduce runtime memory requirement thanks to its in-place decompression. 2017-07-23 14:52:24 +02:00
Mounir IDRASSI 3d3a3900c6 Windows: Update signed driver files for 1.22-BETA2-Build1 2017-07-23 14:52:22 +02:00
Mounir IDRASSI dd72cf9068 Windows: Increment version to 1.22-BETA2-Build1 2017-07-23 14:52:19 +02:00
Mounir IDRASSI 3dfd4a5332 Windows: display notice about creating new Rescue Disk at first boot after upgrade. 2017-07-23 14:52:12 +02:00
Mounir IDRASSI 7cc2a3527d Windows Driver: make IOCTL_DISK_GET_DRIVE_GEOMETRY_EX support optional. Make disk size equal to partition size to avoid compatibility issues with existing software. 2017-07-23 14:52:12 +02:00
Mounir IDRASSI 1812449906 Windows Driver: add legacy handling for IOCTL_DISK_GET_DRIVE_LAYOUT_EX/IOCTL_DISK_GET_DRIVE_LAYOUT IOCTLs to fix issues with faulty applications and drivers that don't handle them correctly. 2017-07-23 14:52:11 +02:00
Mounir IDRASSI 6bb0440d4a Documentation: Remove OSX 10.6 from list of officially supported operating systems 2017-07-23 14:52:08 +02:00
Mounir IDRASSI ff871511af Windows: reduce size of MBR bootloader by removing unused functions in each build type. 2017-07-22 00:30:19 +02:00
Mounir IDRASSI 0fb2befe3a Windows: fix truncated license text in installer wizard. 2017-07-20 23:23:26 +02:00
Mounir IDRASSI 1ab09916f6 Windows: display prompt to upgrade Rescue Disk when installing 1.22 version because of the fix for hidden os boot issue on some machines. 2017-07-20 23:23:25 +02:00
Mounir IDRASSI ad8e8509f4 Documentation: update release notes for 1.22-BETA1-Build4 version 2017-07-20 23:23:24 +02:00
Mounir IDRASSI 6e78cb1ab5 Documentation: Add FreeBSD 11 to the list of Supported Operating Systems. 2017-07-20 23:23:23 +02:00
Mounir IDRASSI 853adda540 Windows: Update signed driver files for 1.22-BETA1-Build4 2017-07-20 23:23:22 +02:00
Mounir IDRASSI a27c314613 Windows: Increment version to 1.22-BETA1-Build4 2017-07-20 23:23:21 +02:00
Mounir IDRASSI fb317ebc48 Windows: enable secure desktop feature for VeraCrypt Format application. 2017-07-20 23:23:21 +02:00
Mounir IDRASSI 6d6aafe58d Windows driver: only activate newly supported IOCTLs if the option to enable extended IOCTLs is enabled in VeraCrypt driver settings. 2017-07-20 23:23:20 +02:00
Mounir IDRASSI ac77142949 Windows driver: fix IOCTL_DISK_GET_DRIVE_LAYOUT and IOCTL_DISK_GET_DRIVE_LAYOUT_EX output by using setting PartitionCount to 4 instead of 1 since this field must always be a multiple of 4 for MBR disks. 2017-07-20 23:23:20 +02:00
Mounir IDRASSI 5a9409a3af Windows driver: remove filesystem detection mechanism when mounting volumes since it is not reliable. 2017-07-20 23:23:19 +02:00
Mounir IDRASSI 7f2981f257 Windows: use Secure Desktop for smart card PIN dialog if it is activated for password dialog. 2017-07-20 23:23:18 +02:00
Mounir IDRASSI 3021745f67 Windows: better workaround for cases where ERROR_INVALID_PARAMETER is returned during system encryption which is due to 4096-bytes alignment of disk. 2017-07-20 23:23:18 +02:00
Mounir IDRASSI fe26ed8a5d Windows: in case of mounting system favorites, call driver to get list of drives instead of using SetupAPI in order to fix some rare issues where some disks were not detected at boot. 2017-07-20 23:23:16 +02:00
Mounir IDRASSI d78a3d0273 Windows MBR bootloader: remove unused test function in release build 2017-07-19 01:12:23 +02: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 86a78d55ed Windows: Update signed driver files for 1.22-BETA0 2017-07-19 01:12:21 +02:00
Mounir IDRASSI 12e0a594fb Windows: Increment version to 1.22-BETA0 2017-07-19 01:12:19 +02:00
Mounir IDRASSI 6674fb4401 Windows Driver: remove dependency to wcsstr by using simple memcmp comparison 2017-07-19 01:12:19 +02:00
kavsrfandMounir IDRASSI f45dba14be RPI, armv7 target 2017-07-16 15:14:52 +02:00
Mounir IDRASSI 295d5affbb Documentation: add missing release notes for 1.20 and 1.21. 2017-07-10 16:31:06 +02:00
286 changed files with 74308 additions and 60173 deletions
+29 -1
View File
@@ -700,7 +700,7 @@ Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
____________________________________________________________
Copyright (C) 1999-2016 Dieter Baron and Thomas Klausner
Copyright (C) 1999-2017 Dieter Baron and Thomas Klausner
The authors can be contacted at <libzip@nih.at>
@@ -742,3 +742,31 @@ version 3.0 (LGPL-3.0).
The full text of the license may be found at https://opensource.org/licenses/LGPL-3.0
____________________________________________________________
Copyright (c) 1999-2016 Jack Lloyd.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
____________________________________________________________
+4 -4
View File
@@ -241,18 +241,18 @@ Copyright Information
---------------------
This software as a whole:
Copyright (c) 2013-2017 IDRIX. All rights reserved.
Copyright (c) 2013-2018 IDRIX. All rights reserved.
Portions of this software:
Copyright (c) 2013-2017 IDRIX. All rights reserved.
Copyright (c) 2013-2018 IDRIX. All rights reserved.
Copyright (c) 2003-2012 TrueCrypt Developers Association. All rights reserved.
Copyright (c) 1998-2000 Paul Le Roux. All rights reserved.
Copyright (c) 1998-2008 Brian Gladman, Worcester, UK. All rights reserved.
Copyright (c) 1995-2017 Jean-loup Gailly and Mark Adler.
Copyright (c) 2016 Disk Cryptography Services for EFI (DCS), Alex Kolotnikov
Copyright (c) Dieter Baron and Thomas Klausner.
Copyright (C) 1999-2017 Dieter Baron and Thomas Klausner.
Copyright (c) 2013, Alexey Degtyarev. All rights reserved.
Copyright (c) 1999-2013,2014,2015,2016 Jack Lloyd. All rights reserved.
Copyright (c) 1999-2016 Jack Lloyd. All rights reserved.
For more information, please see the legal notices attached to parts of the
source code.
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1425
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1416 -1430
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1417 -1431
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1415 -1427
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
+1415 -1429
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.
+10 -2
View File
@@ -17,6 +17,8 @@ arrow_right.gif
Authenticity and Integrity.html
Authors.html
bank_30x30.png
BC_Logo_30x30.png
BCH_Logo_48x30.png
Beginner's Tutorial.html
Beginner's Tutorial_Image_001.jpg
Beginner's Tutorial_Image_002.jpg
@@ -65,7 +67,10 @@ Donation_donate_Dollars.gif
Donation_donate_Euros.gif
Donation_donate_GBP.gif
Donation_donate_YEN.gif
Donation_VeraCrypt_Bitcoin.png
Donation_VeraCrypt_Bitcoin_small.png
Donation_VeraCrypt_BitcoinCash.png
Donation_VeraCrypt_Litecoin.png
Donation_VeraCrypt_Monero.png
Encryption Algorithms.html
Encryption Scheme.html
FAQ.html
@@ -80,7 +85,6 @@ Hidden Operating System.html
Hidden Volume.html
Home_facebook_veracrypt.png
Home_reddit.png
Home_tibitDonateButton.png
Home_utilities-file-archiver-3.png
Home_VeraCrypt_Default_Mount_Parameters.png
Home_VeraCrypt_menu_Default_Mount_Parameters.png
@@ -96,16 +100,20 @@ Keyfiles.html
Kuznyechik.html
Language Packs.html
Legal Information.html
liberapay_donate.svg
LTC_Logo_30x30.png
Main Program Window.html
Malware.html
Memory Dump Files.html
Miscellaneous.html
Modes of Operation.html
Monero_Logo_30x30.png
Mounting VeraCrypt Volumes.html
Multi-User Environment.html
Notation.html
Paging File.html
Parallelization.html
paypal_30x30.png
Personal Iterations Multiplier (PIM).html
Personal Iterations Multiplier (PIM)_VeraCrypt_ChangePIM_Step1.png
Personal Iterations Multiplier (PIM)_VeraCrypt_ChangePIM_Step2.png
+1 -1
View File
@@ -7,7 +7,7 @@ copy ..\html\* .
hhc VeraCrypt.hhp
del /F /Q *.html *.css *.jpg *.gif *.png
del /F /Q *.html *.css *.jpg *.gif *.png *.svg
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

+25
View File
@@ -47,6 +47,31 @@
<em>Modes of Operation</em></a>). Each 128-bit block is first encrypted with Serpent (256-bit key) in XTS mode, then with Twofish (256-bit key) in XTS mode, and finally with AES (256-bit key) in XTS mode. Each of the cascaded ciphers uses its own key. All encryption
keys are mutually independent (note that header keys are independent too, even though they are derived from a single password &ndash; see the section
<a href="Header Key Derivation.html"><em>Header Key Derivation, Salt, and Iteration Count</em></a>). See above for information on the individual cascaded ciphers.</p>
<h2>Camellia-Kuznyechik</h2>
<p>Two ciphers in a cascade [15, 16] operating in XTS mode (see the section <a href="Modes%20of%20Operation.html">
<em>Modes of Operation</em></a>). Each 128-bit block is first encrypted with Kuznyechik (256-bit key) in XTS mode and then with Camellia (256-bit key) in XTS mode. Each of the cascaded ciphers uses its own key. All encryption keys are mutually independent (note that
header keys are independent too, even though they are derived from a single password &ndash; see the section
<a href="Header Key Derivation.html"><em>Header Key Derivation, Salt, and Iteration Count</em></a>). See above for information on the individual cascaded ciphers.</p>
<h2>Camellia-Serpent</h2>
<p>Two ciphers in a cascade [15, 16] operating in XTS mode (see the section <a href="Modes%20of%20Operation.html">
<em>Modes of Operation</em></a>). Each 128-bit block is first encrypted with Serpent (256-bit key) in XTS mode and then with Camellia (256-bit key) in XTS mode. Each of the cascaded ciphers uses its own key. All encryption keys are mutually independent (note that
header keys are independent too, even though they are derived from a single password &ndash; see the section
<a href="Header Key Derivation.html"><em>Header Key Derivation, Salt, and Iteration Count</em></a>). See above for information on the individual cascaded ciphers.</p>
<h2>Kuznyechik-AES</h2>
<p>Two ciphers in a cascade [15, 16] operating in XTS mode (see the section <a href="Modes%20of%20Operation.html">
<em>Modes of Operation</em></a>). Each 128-bit block is first encrypted with AES (256-bit key) in XTS mode and then with Kuznyechik (256-bit key) in XTS mode. Each of the cascaded ciphers uses its own key. All encryption keys are mutually independent (note that
header keys are independent too, even though they are derived from a single password &ndash; see the section
<a href="Header Key Derivation.html"><em>Header Key Derivation, Salt, and Iteration Count</em></a>). See above for information on the individual cascaded ciphers.</p>
<h2>Kuznyechik-Serpent-Camellia</h2>
<p>Three ciphers in a cascade [15, 16] operating in XTS mode (see the section <a href="Modes%20of%20Operation.html">
<em>Modes of Operation</em></a>). Each 128-bit block is first encrypted with Camellia (256-bit key) in XTS mode, then with Serpent (256- bit key) in XTS mode, and finally with Kuznyechik (256-bit key) in XTS mode. Each of the cascaded ciphers uses its own key. All
encryption keys are mutually independent (note that header keys are independent too, even though they are derived from a single password &ndash; see the section
<a href="Header Key Derivation.html"><em>Header Key Derivation, Salt, and Iteration Count</em></a>). See above for information on the individual cascaded ciphers.</p>
<h2>Kuznyechik-Twofish</h2>
<p>Two ciphers in a cascade [15, 16] operating in XTS mode (see the section <a href="Modes%20of%20Operation.html">
<em>Modes of Operation</em></a>). Each 128-bit block is first encrypted with Twofish (256-bit key) in XTS mode and then with Kuznyechik (256-bit key) in XTS mode. Each of the cascaded ciphers uses its own key. All encryption keys are mutually independent (note that
header keys are independent too, even though they are derived from a single password &ndash; see the section
<a href="Header Key Derivation.html"><em>Header Key Derivation, Salt, and Iteration Count</em></a>). See above for information on the individual cascaded ciphers.</p>
<h2>Serpent-AES</h2>
<p>Two ciphers in a cascade [15, 16] operating in XTS mode (see the section <a href="Modes%20of%20Operation.html">
<em>Modes of Operation</em></a>). Each 128-bit block is first encrypted with AES (256-bit key) in XTS mode and then with Serpent (256-bit key) in XTS mode. Each of the cascaded ciphers uses its own key. All encryption keys are mutually independent (note that
+5 -2
View File
@@ -37,8 +37,11 @@
<div class="wikidoc">
<h2>Data Leaks</h2>
<p>When a VeraCrypt volume is mounted, the operating system and third-party applications may write to unencrypted volumes (typically, to the unencrypted system volume) unencrypted information about the data stored in the VeraCrypt volume (e.g. filenames and
locations of recently accessed files, databases created by file indexing tools, etc.), or the data itself in an unencrypted form (temporary files, etc.), or unencrypted information about the filesystem residing in the VeraCrypt volume. Note that Windows automatically
records large amounts of potentially sensitive data, such as the names and locations of files you open, applications you run, etc.</p>
locations of recently accessed files, databases created by file indexing tools, etc.), or the data itself in an unencrypted form (temporary files, etc.), or unencrypted information about the filesystem residing in the VeraCrypt volume.</p>
<p>Note that Windows automatically records large amounts of potentially sensitive data, such as the names and locations of files you open, applications you run, etc. For example, Windows uses a set of Registry keys known as “shellbags” to store the name, size, view, icon, and position of a folder when using Explorer.
Each time you open a folder, this information is updated including the time and date of access. Windows Shellbags may be found in a few locations, depending on operating system version and user profile.
On a Windows XP system, shellbags may be found under <strong>"HKEY_USERS\{USERID}\Software\Microsoft\Windows\Shell\"</strong> and <strong>"HKEY_USERS\{USERID}\Software\Microsoft\Windows\ShellNoRoam\"</strong>.
On a Windows 7 system, shellbags may be found under <strong>"HEKY_USERS\{USERID}\Local Settings\Software\Microsoft\Windows\Shell\"</strong>. More information available at <a href="https://www.sans.org/reading-room/whitepapers/forensics/windows-shellbag-forensics-in-depth-34545" target="_blank">https://www.sans.org/reading-room/whitepapers/forensics/windows-shellbag-forensics-in-depth-34545</a>.
<p>Also, starting from Windows 8, every time a VeraCrypt volume that is formatted using NTFS is mounted, an Event 98 is written for the system Events Log and it will contain the device name (\\device\VeraCryptVolumeXX) of the volume. This event log &quot;feature&quot;
was introduced in Windows 8 as part of newly introduced NTFS health checks as explained
<a href="https://blogs.msdn.microsoft.com/b8/2012/05/09/redesigning-chkdsk-and-the-new-ntfs-health-model/" target="_blank">
+61 -64
View File
@@ -27,78 +27,75 @@
<div class="wikidoc">
<h1>Donation to VeraCrypt</h1>
<p>You can support VeraCrypt development through donations using PayPal, Bitcoins, bank transfers. It is also possible to donate using Flattr and Tibit.</p>
<table border="1" width="645" style="height:427px">
<p>You can support VeraCrypt development through donations using PayPal, bank transfers and cryptocurrencies (<a href="#Bitcoin">Bitcoin</a>, <a href="#BitcoinCash">Bitcoin Cash</a>, <a href="#Litecoin">Litecoin</a> and <a href="#Monero">Monero</a>). It is also possible to donate using Liberapay and Flattr.</p>
<hr>
<h3><img src="paypal_30x30.png" style="vertical-align: middle; margin-right: 5px">PayPal</h3>
<table>
<tbody>
<tr>
<th>
<h4>PayPal</h4>
</th>
<th>
<h4>Bitcoins</h4>
</th>
<th>
<h4 style="text-align:center">Others</h4>
</th>
<td align="center"><a title="Donate to VeraCrypt in Euros" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=H25GJLUDHBMB6" target="_blank"><img src="Donation_donate_Euros.gif" alt="" width="92" height="26"></a></td>
<td align="center"><a title="VeraCrypt Donation in USD" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=B8PU86SHE2ZVA" target="_blank"><img src="Donation_donate_Dollars.gif" alt="" width="92" height="26"></a></td>
<td align="center"><a title="VeraCrypt Donation in GBP" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MFAZACXK9NXT8" target="_blank"><img src="Donation_donate_GBP.gif" alt="" width="92" height="26"></a></td>
<td align="center"><a title="VeraCrypt Donation in Canadian Dollar" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QAN6T5E5F7F5J" target="_blank"><img src="Donation_donate_Dollars.gif" alt="" width="92" height="26"></a></td>
<td align="center"><a title="VeraCrypt Donation in Swiss Francs" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=98RJHVLY5NJ5U" target="_blank"><img src="Donation_donate_CHF.gif" alt="" width="92" height="26"></a></td>
<td align="center"><a title="VeraCrypt Donation in Japanese Yen" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=M9DXZ83WD7S8Y" target="_blank"><img src="Donation_donate_YEN.gif" alt="" width="92" height="26"></a></td>
</tr>
<tr>
<td>
<table border="1">
<tbody>
<tr>
<td><strong>Euro</strong></td>
<td>
<h3><a title="Donate to VeraCrypt in Euros" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=H25GJLUDHBMB6" target="_blank"><img src="Donation_donate_Euros.gif" alt="" width="92" height="26"></a></h3>
</td>
</tr>
<tr>
<td><strong>US Dollar</strong></td>
<td>
<h3><a title="VeraCrypt Donation in USD" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=B8PU86SHE2ZVA" target="_blank"><img src="Donation_donate_Dollars.gif" alt="" width="92" height="26"></a></h3>
</td>
</tr>
<tr>
<td><strong>Pound Sterling</strong></td>
<td>
<h3><a title="VeraCrypt Donation in GBP" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MFAZACXK9NXT8" target="_blank"><img src="Donation_donate_GBP.gif" alt="" width="92" height="26"></a></h3>
</td>
</tr>
<tr>
<td><strong>Canadian Dollar</strong></td>
<td>
<h3><a title="VeraCrypt Donation in Canadian Dollar" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QAN6T5E5F7F5J" target="_blank"><img src="Donation_donate_Dollars.gif" alt="" width="92" height="26"></a></h3>
</td>
</tr>
<tr>
<td><strong>Swiss Franc</strong></td>
<td>
<h3><a title="VeraCrypt Donation in Swiss Francs" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=98RJHVLY5NJ5U" target="_blank"><img src="Donation_donate_CHF.gif" alt="" width="92" height="26"></a></h3>
</td>
</tr>
<tr>
<td><strong>Japanese Yen</strong></td>
<td>
<h3><a title="VeraCrypt Donation in Japanese Yen" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=M9DXZ83WD7S8Y" target="_blank"><img src="Donation_donate_YEN.gif" alt="" width="92" height="26"></a></h3>
</td>
</tr>
</tbody>
</table>
</td>
<td style="text-align:center; vertical-align:middle">
<p><img src="Donation_VeraCrypt_Bitcoin.png" alt="VeraCrypt Bitcoin Address" width="250" height="250"></p>
<p><strong>1NRoPQsm8by5iWyMMmHQy3P5takur3kYgG</strong></p>
</td>
<td style="text-align:left; vertical-align:top">
<p><strong>Tibit:<br>
<a title="Donate a tib to VeraCrypt" href="https://tib.me/1NRoPQsm8by5iWyMMmHQy3P5takur3kYgG/VeraCrypt/?TIB=https://veracrypt.codeplex.com" target="_blank"><img src="Home_tibitDonateButton.png" alt="Donate using Tibit" width="120" height="40"></a></strong></p>
<p>&nbsp;</p>
<p><strong>Flattr:</strong><br>
<a title="Donate using Flattr" href="https://flattr.com/submit/auto?user_id=idrix&url=https://veracrypt.codeplex.com&title=VeraCrypt" target="_blank"><img title="Flattr VeraCrypt" src="flattr-badge-large.png" alt="Flattr VeraCrypt" width="93" height="20" border="0"></a></p>
</td>
<td align="center">Euro</td>
<td align="center">US Dollar</td>
<td align="center">Pound Sterling</td>
<td align="center">Canadian Dollar</td>
<td align="center">Swiss Franc</td>
<td align="center">Japanese Yen</td>
</tr>
</tbody>
</table>
<hr>
<p><img src="bank_30x30.png" style="margin-right: 5px"><strong>Donate using bank transfer:</strong>&nbsp;<a href="Contact.html" target="_blank.html">contact us</a> for bank account details (based in France).</p>
<hr>
<h3>Donation Platforms:</h3>
<ul>
<li><strong>Liberapay: <a href="https://liberapay.com/VeraCrypt/donate" target="_blank"><img alt="Donate using Liberapay" src="liberapay_donate.svg" style="vertical-align: middle; margin-bottom: 5px"></a></strong></li>
<li><strong>Flattr: <a title="Donate using Flattr" href="https://flattr.com/submit/auto?user_id=idrix&url=https://www.veracrypt.fr&title=VeraCrypt" target="_blank"><img title="Flattr VeraCrypt" src="flattr-badge-large.png" alt="Flattr VeraCrypt" width="93" height="20" border="0" style="vertical-align: middle; margin-bottom: 5px"></a></strong></li>
</ul>
<hr>
<h3 id="Bitcoin"><img src="BC_Logo_30x30.png" style="vertical-align: middle; margin-right: 5px">Bitcoin</h3>
<p><img src="Donation_VeraCrypt_Bitcoin_small.png" alt="VeraCrypt Bitcoin Address" width="150" height="150"></p>
<p><strong>1NRoPQsm8by5iWyMMmHQy3P5takur3kYgG</strong></p>
<hr>
<h3 id="BitcoinCash"><img src="BCH_Logo_48x30.png" style="vertical-align: middle; margin-right: 5px">Bitcoin Cash</h3>
<p><img src="Donation_VeraCrypt_BitcoinCash.png" alt="VeraCrypt Bitcoin Cash Address" width="150" height="150"></p>
<p><strong>1AYu65KkZvriz2DUd6FJJZp73NYqEdHzxa</strong></p>
<hr>
<h3 id="Litecoin"><img src="LTC_Logo_30x30.png" style="vertical-align: middle; margin-right: 5px">Litecoin</h3>
<p><img src="Donation_VeraCrypt_Litecoin.png" alt="VeraCrypt Litecoin Address" width="150" height="150"></p>
<p><strong>LZkkfkMs4qHmWaP9DAvS1Ep1fAxaf8A2T7</strong></p>
<hr>
<h3 id="Monero"><img src="Monero_Logo_30x30.png" style="vertical-align: middle; margin-right: 5px">Monero</h3>
<p><img src="Donation_VeraCrypt_Monero.png" alt="VeraCrypt Monero Address" width="150" height="150"></p>
<p><strong>464GGAau9CE5XiER4PSZ6SMbK4wxPCgdm2r36uqnL8NoS6zDjxUYXnyQymbUsK1QipDMY2fsSgDyZ3tMaLfpWvSr2EE8wMw</strong></p>
<hr>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div><div class="ClearBoth"></div></body></html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

+60
View File
@@ -154,6 +154,66 @@ XTS</td>
</tr>
<tr style="text-align:left">
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
<a href="Cascades.html" style="color:#0080c0; text-decoration:none.html">Camellia-Kuznyechik</a></td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
&nbsp;</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
256; 256</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
128</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
XTS</td>
</tr>
<tr style="text-align:left">
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
<a href="Cascades.html" style="color:#0080c0; text-decoration:none.html">Camellia-Serpent</a></td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
&nbsp;</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
256; 256</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
128</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
XTS</td>
</tr>
<tr style="text-align:left">
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
<a href="Cascades.html" style="color:#0080c0; text-decoration:none.html">Kuznyechik-AES</a></td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
&nbsp;</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
256; 256</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
128</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
XTS</td>
</tr>
<tr style="text-align:left">
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
<a href="Cascades.html" style="color:#0080c0; text-decoration:none.html">Kuznyechik-Serpent-Camellia</a></td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
&nbsp;</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
256; 256; 256</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
128</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
XTS</td>
</tr>
<tr style="text-align:left">
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
<a href="Cascades.html" style="color:#0080c0; text-decoration:none.html">Kuznyechik-Twofish</a></td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
&nbsp;</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
256; 256</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
128</td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
XTS</td>
</tr>
<tr style="text-align:left">
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
<a href="Cascades.html" style="color:#0080c0; text-decoration:none.html">Serpent-AES</a></td>
<td style="color:#000000; font-size:11px; line-height:13px; font-family:Verdana,Arial,Helvetica,sans-serif; text-align:center; vertical-align:middle; border-width:0px 1px 0px 0px; border-style:none solid solid none; padding:5px; border-color:white #000000 #ffffff white">
&nbsp;</td>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

+4 -4
View File
@@ -43,10 +43,10 @@ can be found here</a>.</p>
<h3>Copyright Information</h3>
<p>This software as a whole:<br>
<br>
Copyright &copy; 2013-2016 IDRIX. All rights reserved.<br>
Copyright &copy; 2013-2018 IDRIX. All rights reserved.<br>
<br>
Portions of this software:</p>
<p>Copyright &copy; 2013-2016 IDRIX. All rights reserved.<br>
<p>Copyright &copy; 2013-2018 IDRIX. All rights reserved.<br>
<br>
Copyright &copy; 2003-2012 TrueCrypt Developers Association. All rights reserved.</p>
<p>Copyright &copy; 1998-2000 Paul Le Roux. All rights reserved.<br>
@@ -54,9 +54,9 @@ Copyright &copy; 2003-2012 TrueCrypt Developers Association. All rights reserved
Copyright &copy; 1998-2008 Brian Gladman, Worcester, UK. All rights reserved.</p>
<p>Copyright &copy; 1995-2017 Jean-loup Gailly and Mark Adler.</p>
<p>Copyright &copy; 2016 Disk Cryptography Services for EFI (DCS), Alex Kolotnikov</p>
<p>Copyright &copy; 1999-2014 Dieter Baron and Thomas Klausner.</p>
<p>Copyright &copy; 1999-2017 Dieter Baron and Thomas Klausner.</p>
<p>Copyright &copy; 2013, Alexey Degtyarev. All rights reserved.</p>
<p>Copyright &copy; 1999-2013,2014,2015,2016 Jack Lloyd. All rights reserved.<br>
<p>Copyright &copy; 1999-2016 Jack Lloyd. All rights reserved.<br>
<br>
For more information, please see the legal notices attached to parts of the source code.</p>
<h3>Trademark Information</h3>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

+140
View File
@@ -34,6 +34,146 @@
<div class="wikidoc">
<h1>Release Notes</h1>
<p><strong style="text-align:left">1.22 </strong>(March 30<sup>th</sup>, 2018):</p>
<ul>
<li><strong>All OSs:</strong>
<ul>
<li>SIMD speed optimization for Kuznyechik cipher implementation (up to 2x speedup).</li>
<li>Add 5 new cascades of cipher algorithms: Camellia-Kuznyechik, Camellia-Serpent, Kuznyechik-AES, Kuznyechik-Serpent-Camellia and Kuznyechik-Twofish.</li>
</ul>
</li>
<li><strong>Windows:</strong>
<ul>
<li>MBR Bootloader: Fix failure to boot hidden OS on some machines.</li>
<li>MBR Bootloader: Reduce CPU usage during password prompt.</li>
<li>Security enhancement: Add option to block TRIM command for system encryption on SSD drives.</li>
<li>Implement TRIM support for non-system SSD drives and add option to enable it (TRIM is disabled by default for non-system volumes).</li>
<li>Better fix for "Parameter Incorrect" issues during EFI system encryption in some machines.</li>
<li>Driver: remove unnecessary dependency to wcsstr which can cause issues on some machines.</li>
<li>Driver: Fix "Incorrect Parameter" error when mounting volumes on some machines.</li>
<li>Fix failure to mount system favorites during boot on some machines.</li>
<li>Fix current application losing focus when VeraCrypt is run in command line with /quit /silent switches.</li>
<li>Fix some cases of external applications freezing during mount/dismount.</li>
<li>Fix rare cases of secure desktop for password dialog not visible which caused UI to block.</li>
<li>Update libzip to version 1.5.0 that include fixes for some security issues.</li>
<li>Extend Secure Desktop feature to smart card PIN entry dialog.</li>
<li>Fix truncated license text in installer wizard.</li>
<li>Add portable package that allows extracting binaries without asking for admin privileges.</li>
<li>Simplify format of language XML files.</li>
<li>Workaround for cases where password dialog doesn't get keyboard focus if Secure Desktop is not enabled.</li>
</ul>
<li><strong>Linux:</strong>
<ul>
<li>Fix failure to install GUI version under recent versions of KDE.</li>
<li>Fix wxWidgets assertion failed when backing up/restoring volume header.</li>
</ul>
</li>
<li><strong>MacOSX:</strong>
<ul>
<li>Fix issue preventing some local help files from opening in the browser.</li>
</ul>
</li>
</ul>
<p><strong style="text-align:left">1.21 </strong>(July 9<sup>th</sup>, 2017):</p>
<ul>
<li><strong>All OSs:</strong>
<ul>
<li>Fix 1.20 regression crash when running on CPU not supporting extended features.</li>
</ul>
</li>
<li><strong>Windows:</strong>
<ul>
<li>Fix 1.20 regression that caused PIM value stored in favorites to be ignored during mount.</li>
<li>Fix 1.20 regression that causes system favorites not to mount in some cases.</li>
<li>Fix some cases of "Parameter Incorrect" error during EFI system encryption wizard.</li>
<li>Install PDF documents related to EFI system encryption configuration for advanced users:
<ul>
<li>disk_encryption_v1_2.pdf related to EFI hidden OS and full fisk encryption</li>
<li>dcs_tpm_owner_02.pdf related to TPM configuration for EFI system encryption.</li>
</li>
</ul>
</ul>
</li>
<li><strong>FreeBSD:</strong>
<ul>
<li>Add support for building on FreeBSD.</li>
</ul>
</li>
</ul>
<p><strong style="text-align:left">1.20 </strong>(June 29<sup>th</sup>, 2017):</p>
<ul>
<li><strong>All OSs:</strong>
<ul>
<li>Use 64-bit optimized assembly implementation of Twofish and Camellia by Jussi Kivilinna.
<ul>
<li>Camellia 2.5 faster when AES-NI supported by CPU. 30% faster without it.</li>
</ul>
</li>
<li>Use optimized implementation for SHA-512/SHA256.
<ul>
<li>33% speedup on 64-bit systems.</li>
</ul>
</li>
<li>Deploy local HTML documentation instead of User Guide PDF.</li>
<li>Change links in UI from ones on Codeplex to ones hosted at veracrypt.fr </li>
<li>Security: build binaries with support for Address Space Layout Randomization (ASLR).</li>
</ul>
</li>
<li><strong>Windows:</strong>
<ul>
<li>Several fixes and modifications for EFI System Encryption:
<ul>
<li>Fix bug in EFI system decryption using EFI Rescue Disk</li>
<li>Add support for TPM 1.2 and TPM 2.0 (experimental) through DCS low level configuration.
<ul>
<li><a href="https://dc5.sourceforge.io/docs/dcs_tpm_owner_02.pdf" target="_blank">https://dc5.sourceforge.io/docs/dcs_tpm_owner_02.pdf</a>
</li>
</ul>
<li>Add Support for EFI full disk encryption and hidden OS using manual procedure (not exposed in UI).
<ul>
<li><a href="https://dc5.sourceforge.io/docs/disk_encryption_v1_2.pdf" target="_blank">https://dc5.sourceforge.io/docs/disk_encryption_v1_2.pdf</a>
</li>
</ul>
</li>
</li>
</ul>
</li>
<li>Enable using Secure Desktop for password entry. Add preferences option and command line switch (/secureDesktop) to activate it.</li>
<li>Use default mount parameters when mounting multiple favorites with password caching.</li>
<li>Enable specifying PRF and TrueCryptMode for favorites.</li>
<li>Preliminary driver changes to support EFI hidden OS functionality.</li>
<li>Fix Streebog not recognized by /hash command line.</li>
<li>Add support for ReFS filesystem on Windows 10 when creating normal volumes</li>
<li>Fix high CPU usage when favorite configured to mount with VolumeID on arrival.</li>
<li>Use CHM file for User Guide instead of PDF.</li>
<li>Fix false warning in case of EFI system encryption about Windows not installed on boot drive.</li>
<li>Enhancements to driver handling of various disk IOCTL.</li>
<li>Enhancements to EFI bootloader. Add possibility to manually edit EFI configuration file.</li>
<li>Driver Security: Use enhanced protection of NX pool under Windows 8 and later.</li>
<li>Reduce performance impact of internal check for disconnected network drives.</li>
<li>Minor fixes.</li>
</ul>
</li>
<li><strong>MacOSX:</strong>
<ul>
<li>OSX 10.7 or newer is required to run VeraCrypt.</li>
<li>Make VeraCrypt default handler of .hc & .tc files.</li>
<li>Add custom VeraCrypt icon to .hc and .tc files in Finder.</li>
<li>Check TrueCryptMode in password dialog when opening container file with .tc extension.</li>
</ul>
</li>
<li><strong>Linux:</strong>
<ul>
<li>Check TrueCryptMode in password dialog when opening container file with .tc extension.</li>
<li>Fix executable stack in resulting binary which was caused by crypto assembly files missing the GNU-stack note.</li>
</ul>
</li>
</ul>
<p><strong style="text-align:left">1.19 </strong>(October 17<sup>th</sup>, 2016):</p>
<ul>
<li><strong>All OSs:</strong>
+1 -1
View File
@@ -38,7 +38,7 @@
<h2>Volume Mounted as Removable Medium</h2>
<p>This section applies to VeraCrypt volumes mounted when one of the following options is enabled (as applicable):</p>
<ul>
<li><em>Tools</em> &gt; <em>Preferences</em> &gt; <em>Mount volumes as removable media</em>
<li><em>Settings</em> &gt; <em>Preferences</em> &gt; <em>Mount volumes as removable media</em>
</li><li><em>Mount Options</em> &gt; <em>Mount volume as removable medium</em> </li><li><em>Favorites</em> &gt; <em>Organize Favorite Volumes</em> &gt; <em>Mount selected volume as removable medium</em>
</li><li><em>Favorites</em> &gt; <em>Organize System Favorite Volumes</em> &gt; <em>Mount selected volume as removable medium</em>
</li></ul>
+3 -2
View File
@@ -44,14 +44,15 @@ Windows Server 2012 </li><li style="text-align:left; margin-top:0px; margin-bott
Windows Server 2008 R2 (64-bit) </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Windows Server 2008 </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Windows Server 2003 </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Mac OS X 10.13 High Sierra </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Mac OS X 10.12 Sierra </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Mac OS X 10.11 El Capitan </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Mac OS X 10.10 Yosemite </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Mac OS X 10.9 Mavericks </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Mac OS X 10.8 Mountain Lion </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Mac OS X 10.7 Lion </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Mac OS X 10.6 Snow Leopard </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
Linux x86 (32-bit and 64-bit versions, kernel 2.6 or compatible) </li></ul>
Linux x86 (32-bit and 64-bit versions, kernel 2.6 or compatible) </li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
FreeBSD x86 (32-bit and 64-bit versions, starting from version 11) </li></ul>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<br style="text-align:left">
<span style="text-align:left; font-size:10px; line-height:12px">Note: The following operating systems (among others) are not supported: Windows RT, Windows 2003 IA-64, Windows 2008 IA-64, Windows XP IA-64, and the Embedded/Tablet versions of Windows.</span></div>
+2
View File
@@ -0,0 +1,2 @@
<svg xmlns="http://www.w3.org/2000/svg" width="83" height="30"><rect id="back" fill="#f6c915" x="1" y=".5" width="82" height="29" rx="4"/><svg viewBox="0 0 80 80" height="16" width="16" x="7" y="7"><g transform="translate(-78.37-208.06)" fill="#1a171b"><path d="m104.28 271.1c-3.571 0-6.373-.466-8.41-1.396-2.037-.93-3.495-2.199-4.375-3.809-.88-1.609-1.308-3.457-1.282-5.544.025-2.086.313-4.311.868-6.675l9.579-40.05 11.69-1.81-10.484 43.44c-.202.905-.314 1.735-.339 2.489-.026.754.113 1.421.415 1.999.302.579.817 1.044 1.546 1.395.729.353 1.747.579 3.055.679l-2.263 9.278"/><path d="m146.52 246.14c0 3.671-.604 7.03-1.811 10.07-1.207 3.043-2.879 5.669-5.01 7.881-2.138 2.213-4.702 3.935-7.693 5.167-2.992 1.231-6.248 1.848-9.767 1.848-1.71 0-3.42-.151-5.129-.453l-3.394 13.651h-11.162l12.52-52.19c2.01-.603 4.311-1.143 6.901-1.622 2.589-.477 5.393-.716 8.41-.716 2.815 0 5.242.428 7.278 1.282 2.037.855 3.708 2.024 5.02 3.507 1.307 1.484 2.274 3.219 2.904 5.205.627 1.987.942 4.11.942 6.373m-27.378 15.461c.854.202 1.91.302 3.167.302 1.961 0 3.746-.364 5.355-1.094 1.609-.728 2.979-1.747 4.111-3.055 1.131-1.307 2.01-2.877 2.64-4.714.628-1.835.943-3.858.943-6.071 0-2.161-.479-3.998-1.433-5.506-.956-1.508-2.615-2.263-4.978-2.263-1.61 0-3.118.151-4.525.453l-5.28 21.948"/></g></svg><text fill="#1a171b" text-anchor="middle" font-family="Helvetica Neue,Helvetica,Arial,sans-serif"
font-weight="700" font-size="14" x="50" y="20">Donate</text></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -17,7 +17,7 @@
#include "BootDefs.h"
// The user will be advised to upgrade the rescue disk if upgrading from the following or any previous version
#define TC_RESCUE_DISK_UPGRADE_NOTICE_MAX_VERSION 0x0120
#define TC_RESCUE_DISK_UPGRADE_NOTICE_MAX_VERSION 0x0121
#define TC_BOOT_LOADER_AREA_SIZE (TC_BOOT_LOADER_AREA_SECTOR_COUNT * TC_SECTOR_SIZE_BIOS)
+26 -3
View File
@@ -19,17 +19,19 @@
static int ScreenOutputDisabled = 0;
#if defined(TC_TRACE_INT13) || !defined(TC_WINDOWS_BOOT_RESCUE_DISK_MODE)
void DisableScreenOutput ()
{
++ScreenOutputDisabled;
}
#endif
#ifdef TC_TRACE_INT13
void EnableScreenOutput ()
{
--ScreenOutputDisabled;
}
#endif
void PrintChar (char c)
{
@@ -236,11 +238,32 @@ byte GetKeyboardChar ()
return GetKeyboardChar (nullptr);
}
/*
inline void Sleep ()
{
__asm
{
mov al, 0
mov ah, 0x86
// Sleep for 250 milliseconds = 250 000 microseconds = 0x0003D090
mov cx, 0x0003
mov dx, 0xD090
int 0x15
}
}
*/
byte GetKeyboardChar (byte *scanCode)
{
// Work around potential BIOS bugs (Windows boot manager polls the keystroke buffer)
while (!IsKeyboardCharAvailable());
while (!IsKeyboardCharAvailable())
{
// reduce CPU usage by halting CPU until the next external interrupt is fired
__asm
{
hlt
}
}
byte asciiCode;
byte scan;
+4 -2
View File
@@ -157,6 +157,7 @@ BiosResult ReadWriteSectors (bool write, uint16 bufferSegment, uint16 bufferOffs
return result;
}
#ifdef TC_WINDOWS_BOOT_RESCUE_DISK_MODE
BiosResult ReadWriteSectors (bool write, byte *buffer, byte drive, const ChsAddress &chs, byte sectorCount, bool silent)
{
@@ -165,18 +166,19 @@ BiosResult ReadWriteSectors (bool write, byte *buffer, byte drive, const ChsAddr
return ReadWriteSectors (write, codeSeg, (uint16) buffer, drive, chs, sectorCount, silent);
}
BiosResult ReadSectors (byte *buffer, byte drive, const ChsAddress &chs, byte sectorCount, bool silent)
{
return ReadWriteSectors (false, buffer, drive, chs, sectorCount, silent);
}
#if 0
BiosResult WriteSectors (byte *buffer, byte drive, const ChsAddress &chs, byte sectorCount, bool silent)
{
return ReadWriteSectors (true, buffer, drive, chs, sectorCount, silent);
}
#endif
#endif
static BiosResult ReadWriteSectors (bool write, BiosLbaPacket &dapPacket, byte drive, const uint64 &sector, uint16 sectorCount, bool silent)
{
+2 -2
View File
@@ -197,9 +197,9 @@ $(LIBS)
del $(PROJ).crf $(PROJ).crf2
# Compress the Rescue Disk botloader for Cascades and Serpent since it is too big (size > 31232 bytes)
!if DEFINED(RESCUE_DISK) && (!DEFINED (SINGLE_CIPHER) || ("$(SINGLE_CIPHER)" == "SERPENT") || ("$(SINGLE_CIPHER)" == "CAMELLIA"))
#!if DEFINED(RESCUE_DISK) && (!DEFINED (SINGLE_CIPHER) || ("$(SINGLE_CIPHER)" == "SERPENT") || ("$(SINGLE_CIPHER)" == "CAMELLIA"))
upx $(PROJ).$(TARGETEXT)
!endif
#!endif
gzip.exe -c -n --best $(PROJ).$(TARGETEXT) >$(PROJ).$(TARGETEXT).gz
-dd.exe conv=notrunc,sync bs=512 seek=5 if=$(PROJ).$(TARGETEXT).gz of=$(PROJ).flp 2>NUL:
cd ..
+3
View File
@@ -137,6 +137,8 @@ bool operator<= (const uint64 &a, const uint64 &b)
return a < b || a == b;
}
#ifdef TC_BOOT_DEBUG_ENABLED
bool TestInt64 ()
{
uint64 a, b, c;
@@ -161,6 +163,7 @@ bool TestInt64 ()
return c.HighPart == 0x22446755UL && c.LowPart == 0x78024600UL;
}
#endif
void CopyMemory (void *source, uint16 destSegment, uint16 destOffset, uint16 blockSize)
{
+2
View File
@@ -110,7 +110,9 @@ void CopyMemory (uint16 sourceSegment, uint16 sourceOffset, void *destination, u
extern "C" void EraseMemory (void *memory, int size);
uint32 GetLinearAddress (uint16 segment, uint16 offset);
bool RegionsIntersect (const uint64 &start1, uint32 length1, const uint64 &start2, const uint64 &end2);
#ifdef TC_BOOT_DEBUG_ENABLED
bool TestInt64 ();
#endif
extern "C" void ThrowFatalException (int line);
#endif // TC_HEADER_Boot_Platform
+1 -1
View File
@@ -74,7 +74,7 @@
<string>TRUE</string>
<key>CFBundleVersion</key>
<string>1.21.5</string>
<string>1.22.9</string>
<key>CFBundleShortVersionString</key>
<string>_VERSION_</string>
+1 -1
View File
@@ -22,7 +22,7 @@ if [ "$(id -u)" != "0" ]; then
fi
# the sources of wxWidgets 3.0.3 must be extracted to the parent directory
export WX_ROOT=$PARENTDIR/wxWidgets-3.0.3
export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4
echo "Using wxWidgets sources in $WX_ROOT"
cd $SOURCEPATH
+1 -1
View File
@@ -21,7 +21,7 @@ if [ "$(id -u)" != "0" ]; then
fi
# the sources of wxWidgets 3.0.3 must be extracted to the parent directory
export WX_ROOT=$PARENTDIR/wxWidgets-3.0.3
export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4
echo "Using wxWidgets sources in $WX_ROOT"
cd $SOURCEPATH
+1 -1
View File
@@ -13,7 +13,7 @@ SOURCEPATH=$(cd "$(dirname "$SCRIPTPATH/../.")"; pwd)
PARENTDIR=$(cd "$(dirname "$SCRIPTPATH/../../../.")"; pwd)
# the sources of wxWidgets 3.0.3 must be extracted to the parent directory
export WX_ROOT=$PARENTDIR/wxWidgets-3.0.3
export WX_ROOT=$PARENTDIR/wxWidgets-3.0.4
echo "Using wxWidgets sources in $WX_ROOT"
# this will be the temporary wxWidgets directory
+2
View File
@@ -410,5 +410,7 @@ typedef struct
#define TC_DRIVER_CONFIG_ENABLE_EXTENDED_IOCTL 0x10
#define TC_DRIVER_CONFIG_DISABLE_EVIL_MAID_ATTACK_DETECTION 0x20
#define TC_DRIVER_CONFIG_CACHE_BOOT_PIM 0x40
#define VC_DRIVER_CONFIG_ALLOW_NONSYS_TRIM 0x80
#define VC_DRIVER_CONFIG_BLOCK_SYS_TRIM 0x100
#endif /* _WIN32 */
+108 -36
View File
@@ -474,12 +474,12 @@ namespace VeraCrypt
#endif // SETUP
File::File (wstring path, bool readOnly, bool create, bool useNormalAttributes) : Elevated (false), FileOpen (false), ReadOnly (readOnly), LastError(0)
File::File (wstring path, bool readOnly, bool create) : Elevated (false), FileOpen (false), ReadOnly (readOnly), LastError(0)
{
Handle = CreateFile (path.c_str(),
readOnly ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, create ? CREATE_ALWAYS : OPEN_EXISTING,
useNormalAttributes? FILE_ATTRIBUTE_NORMAL : (FILE_FLAG_RANDOM_ACCESS | FILE_FLAG_WRITE_THROUGH), NULL);
FILE_FLAG_RANDOM_ACCESS | FILE_FLAG_WRITE_THROUGH, NULL);
if (Handle != INVALID_HANDLE_VALUE)
{
@@ -530,7 +530,45 @@ namespace VeraCrypt
return bytesRead;
}
throw_sys_if (!ReadFile (Handle, buffer, size, &bytesRead, NULL));
if (!ReadFile (Handle, buffer, size, &bytesRead, NULL))
{
DWORD dwLastError = GetLastError();
if ((dwLastError == ERROR_INVALID_PARAMETER) && IsDevice && (size % 4096))
{
DWORD remainingSize = (size % 4096);
DWORD alignedSize = size - remainingSize;
LARGE_INTEGER offset;
if (alignedSize)
{
if (ReadFile (Handle, buffer, alignedSize, &bytesRead, NULL))
{
if (bytesRead < alignedSize)
return bytesRead;
buffer += alignedSize;
size -= alignedSize;
}
else
throw SystemException (SRC_POS);
}
if (ReadFile (Handle, ReadBuffer, 4096, &bytesRead, NULL))
{
DWORD effectiveSize = min (bytesRead, remainingSize);
memcpy (buffer, ReadBuffer, effectiveSize);
offset.QuadPart = - ((LONGLONG) bytesRead) + (LONGLONG) effectiveSize;
SetFilePointerEx (Handle, offset, NULL, FILE_CURRENT);
return alignedSize + effectiveSize;
}
else
throw SystemException (SRC_POS);
}
else
throw SystemException (SRC_POS);
}
return bytesRead;
}
@@ -600,7 +638,63 @@ namespace VeraCrypt
}
else
{
throw_sys_if (!WriteFile (Handle, buffer, size, &bytesWritten, NULL) || bytesWritten != size);
if (!WriteFile (Handle, buffer, size, &bytesWritten, NULL))
{
DWORD dwLastError = GetLastError ();
if ((ERROR_INVALID_PARAMETER == dwLastError) && IsDevice && !ReadOnly && (size % 4096))
{
bool bSuccess = false;
DWORD remainingSize = (size % 4096);
DWORD alignedSize = size - remainingSize;
DWORD bytesRead = 0;
bytesWritten = 0;
if (alignedSize)
{
if (WriteFile (Handle, buffer, alignedSize, &bytesWritten, NULL))
{
throw_sys_if (bytesWritten != alignedSize);
buffer += alignedSize;
size -= alignedSize;
}
else
{
bytesWritten = 0;
dwLastError = GetLastError ();
}
}
if (!alignedSize || (alignedSize && bytesWritten))
{
LARGE_INTEGER offset;
throw_sys_if (!ReadFile (Handle, ReadBuffer, 4096, &bytesRead, NULL) || (bytesRead != 4096));
offset.QuadPart = -4096;
throw_sys_if (!SetFilePointerEx (Handle, offset, NULL, FILE_CURRENT));
memcpy (ReadBuffer, buffer, remainingSize);
if (WriteFile (Handle, ReadBuffer, 4096, &bytesWritten, NULL))
{
throw_sys_if (bytesWritten != 4096);
bSuccess = true;
}
else
{
dwLastError = GetLastError ();
}
}
if (!bSuccess)
{
SetLastError (dwLastError);
throw SystemException (SRC_POS);
}
}
else
throw SystemException (SRC_POS);
}
else
throw_sys_if (bytesWritten != size);
}
}
catch (SystemException &e)
@@ -1845,7 +1939,7 @@ namespace VeraCrypt
NtQuerySystemInformationFn NtQuerySystemInformationPtr = NULL;
EfiBootConf::EfiBootConf() : passwordType (0),
passwordMsg ("Enter Password: "),
passwordMsg ("Password: "),
passwordPicture ("login.bmp"),
hashMsg ("(0) TEST ALL (1) SHA512 (2) WHIRLPOOL (3) SHA256 (4) RIPEMD160 (5) STREEBOG\nHash: "),
hashAlgo (0),
@@ -1962,7 +2056,7 @@ namespace VeraCrypt
char buffer[1024];
passwordType = ReadConfigInteger (configContent, "PasswordType", 0);
passwordMsg = ReadConfigString (configContent, "PasswordMsg", "Enter password: ", buffer, sizeof (buffer));
passwordMsg = ReadConfigString (configContent, "PasswordMsg", "Password: ", buffer, sizeof (buffer));
passwordPicture = ReadConfigString (configContent, "PasswordPicture", "\\EFI\\VeraCrypt\\login.bmp", buffer, sizeof (buffer));
//hashMsg = ReadConfigString (configContent, "HashMsg", "(0) TEST ALL (1) SHA512 (2) WHIRLPOOL (3) SHA256 (4) RIPEMD160 (5) STREEBOG\nHash: ", buffer, sizeof (buffer));
hashAlgo = ReadConfigInteger (configContent, "Hash", 0);
@@ -2134,21 +2228,10 @@ namespace VeraCrypt
memcpy (fileContent.data(), "\xEF\xBB\xBF", 3);
memcpy (&fileContent[dwOffset], pbData, dwDataLen);
try
{
File f(pathESP + szFilePath, false, true);
f.Write(fileContent.data(), dwSize);
f.Close();
}
catch (SystemException &e)
{
if (e.ErrorCode != ERROR_INVALID_PARAMETER)
throw;
// try again with normal attributes
File f(pathESP + szFilePath, false, true, true);
f.Write(fileContent.data(), dwSize);
f.Close();
}
File f(pathESP + szFilePath, false, true);
f.Write(fileContent.data(), dwSize);
f.Close();
}
EfiBoot::EfiBoot() {
@@ -2436,22 +2519,11 @@ namespace VeraCrypt
void EfiBoot::SaveFile(const wchar_t* name, byte* data, DWORD size) {
wstring path = EfiBootPartPath;
path += name;
try
{
File f(path, false, true);
f.Write(data, size);
f.Close();
}
catch (SystemException &e)
{
if (e.ErrorCode != ERROR_INVALID_PARAMETER)
throw;
// try again with normal attributes
File f(path, false, true, true);
f.Write(data, size);
f.Close();
}
File f(path, false, true);
f.Write(data, size);
f.Close();
}
void EfiBoot::GetFileSize(const wchar_t* name, unsigned __int64& size) {
+2 -1
View File
@@ -37,7 +37,7 @@ namespace VeraCrypt
{
public:
File () : Elevated (false), FileOpen (false), ReadOnly (false), FilePointerPosition(0), Handle(INVALID_HANDLE_VALUE), IsDevice(false), LastError(0) { }
File (wstring path,bool readOnly = false, bool create = false, bool useNormalAttributes = false);
File (wstring path,bool readOnly = false, bool create = false);
virtual ~File () { Close(); }
void CheckOpened (const char* srcPos) { if (!FileOpen) { SetLastError (LastError); throw SystemException (srcPos);} }
@@ -58,6 +58,7 @@ namespace VeraCrypt
bool IsDevice;
wstring Path;
DWORD LastError;
BYTE ReadBuffer[4096];
};
+2
View File
@@ -23,6 +23,8 @@
#define VOLUME_ID_SIZE SHA256_DIGESTSIZE
#define ALIGN_VALUE(value, alignment) (((alignment) == 0)? (value) : (((value) + ((alignment) - 1)) & ~((alignment) - 1)))
typedef enum
{
// IMPORTANT: If you add a new item here, update IsOSVersionAtLeast().
+1 -1
View File
@@ -7,7 +7,7 @@
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
+2
View File
@@ -121,6 +121,7 @@ unsigned __int32 GetCrc32 (unsigned char *data, int length)
return r ^ 0xFFFFFFFFUL;
}
#if 0
BOOL crc32_selftests ()
{
unsigned __int8 testData[32];
@@ -131,5 +132,6 @@ BOOL crc32_selftests ()
return GetCrc32 (testData, sizeof (testData)) == 0x91267E8AUL;
}
#endif
#endif // TC_MINIMIZE_CODE_SIZE
+58 -44
View File
@@ -87,6 +87,11 @@ static EncryptionAlgorithm EncryptionAlgorithms[] =
{ { AES, SERPENT, 0 }, { XTS, 0 }, 1, 1 },
{ { AES, TWOFISH, SERPENT, 0 }, { XTS, 0 }, 1, 1 },
{ { SERPENT, TWOFISH, 0 }, { XTS, 0 }, 1, 1 },
{ { KUZNYECHIK, CAMELLIA, 0 }, { XTS, 0 }, 0, 1 },
{ { TWOFISH, KUZNYECHIK, 0 }, { XTS, 0 }, 0, 1 },
{ { SERPENT, CAMELLIA, 0 }, { XTS, 0 }, 0, 1 },
{ { AES, KUZNYECHIK, 0 }, { XTS, 0 }, 0, 1 },
{ { CAMELLIA, SERPENT, KUZNYECHIK, 0 }, { XTS, 0 }, 0, 1 },
{ { 0, 0 }, { 0, 0}, 0, 0 } // Must be all-zero
#else // TC_WINDOWS_BOOT
@@ -254,6 +259,20 @@ void EncipherBlocks (int cipher, void *dataPtr, void *ks, size_t blockCount)
else if (cipher == CAMELLIA) {
camellia_encrypt_blocks(ks, data, data, (uint32) blockCount);
}
#endif
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && !defined (_UEFI)
else if (cipher == KUZNYECHIK
&& HasSSE2()
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
&& (blockCount >= 4) && NT_SUCCESS (KeSaveFloatingPointState (&floatingPointState))
#endif
)
{
kuznyechik_encrypt_blocks (data, data, blockCount, ks);
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
KeRestoreFloatingPointState (&floatingPointState);
#endif
}
#endif
else if (cipher == GOST89) {
gost_encrypt(data, data, ks, (int)blockCount);
@@ -357,6 +376,20 @@ void DecipherBlocks (int cipher, void *dataPtr, void *ks, size_t blockCount)
else if (cipher == CAMELLIA) {
camellia_decrypt_blocks(ks, data, data, (uint32) blockCount);
}
#endif
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && !defined (_UEFI)
else if (cipher == KUZNYECHIK
&& HasSSE2()
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
&& (blockCount >= 4) && NT_SUCCESS (KeSaveFloatingPointState (&floatingPointState))
#endif
)
{
kuznyechik_decrypt_blocks (data, data, blockCount, ks);
#if defined (TC_WINDOWS_DRIVER) && !defined (_WIN64)
KeRestoreFloatingPointState (&floatingPointState);
#endif
}
#endif
else if (cipher == GOST89) {
gost_decrypt(data, data, ks, (int)blockCount);
@@ -393,17 +426,13 @@ const wchar_t *CipherGetName (int cipherId)
Cipher* pCipher = CipherGet (cipherId);
return pCipher? pCipher -> Name : L"";
}
#endif
int CipherGetBlockSize (int cipherId)
{
#ifdef TC_WINDOWS_BOOT
return CipherGet (cipherId) -> BlockSize;
#else
Cipher* pCipher = CipherGet (cipherId);
return pCipher? pCipher -> BlockSize : 0;
#endif
}
#endif
int CipherGetKeySize (int cipherId)
{
@@ -433,6 +462,7 @@ BOOL CipherSupportsIntraDataUnitParallelization (int cipher)
|| (cipher == GOST89)
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE && !defined (_UEFI)
|| (cipher == SERPENT && HasSSE2())
|| (cipher == KUZNYECHIK && HasSSE2())
#endif
#if CRYPTOPP_BOOL_X64
|| (cipher == TWOFISH)
@@ -451,6 +481,7 @@ int EAGetFirst ()
return 1;
}
#ifndef TC_WINDOWS_BOOT
// Returns number of EAs
int EAGetCount (void)
{
@@ -462,6 +493,7 @@ int EAGetCount (void)
}
return count;
}
#endif
int EAGetNext (int previousEA)
{
@@ -593,6 +625,8 @@ int EAGetKeySize (int ea)
}
#ifndef TC_WINDOWS_BOOT
// Returns the first mode of operation of EA
int EAGetFirstMode (int ea)
{
@@ -612,9 +646,6 @@ int EAGetNextMode (int ea, int previousModeId)
return 0;
}
#ifndef TC_WINDOWS_BOOT
// Returns the name of the mode of operation of the whole EA
wchar_t *EAGetModeName (int ea, int mode, BOOL capitalLetters)
{
@@ -645,38 +676,7 @@ int EAGetKeyScheduleSize (int ea)
return size;
}
// Returns the largest key size needed by an EA for the specified mode of operation
int EAGetLargestKeyForMode (int mode)
{
int ea, key = 0;
for (ea = EAGetFirst (); ea != 0; ea = EAGetNext (ea))
{
if (!EAIsModeSupported (ea, mode))
continue;
if (EAGetKeySize (ea) >= key)
key = EAGetKeySize (ea);
}
return key;
}
// Returns the largest key needed by any EA for any mode
int EAGetLargestKey ()
{
int ea, key = 0;
for (ea = EAGetFirst (); ea != 0; ea = EAGetNext (ea))
{
if (EAGetKeySize (ea) >= key)
key = EAGetKeySize (ea);
}
return key;
}
#ifndef TC_WINDOWS_BOOT
// Returns number of ciphers in EA
int EAGetCipherCount (int ea)
@@ -687,6 +687,7 @@ int EAGetCipherCount (int ea)
return i - 1;
}
#endif
int EAGetFirstCipher (int ea)
{
@@ -732,18 +733,16 @@ int EAGetPreviousCipher (int ea, int previousCipherId)
return 0;
}
#ifndef TC_WINDOWS_BOOT
int EAIsFormatEnabled (int ea)
{
return EncryptionAlgorithms[ea].FormatEnabled;
}
#ifndef TC_WINDOWS_BOOT
int EAIsMbrSysEncEnabled (int ea)
{
return EncryptionAlgorithms[ea].MbrSysEncEnabled;
}
#endif
// Returns TRUE if the mode of operation is supported for the encryption algorithm
BOOL EAIsModeSupported (int ea, int testedMode)
@@ -758,7 +757,6 @@ BOOL EAIsModeSupported (int ea, int testedMode)
return FALSE;
}
#ifndef TC_WINDOWS_BOOT
Hash *HashGet (int id)
{
int i;
@@ -810,6 +808,22 @@ BOOL HashForSystemEncryption (int hashId)
}
// Returns the largest key size needed by an EA for the specified mode of operation
int EAGetLargestKeyForMode (int mode)
{
int ea, key = 0;
for (ea = EAGetFirst (); ea != 0; ea = EAGetNext (ea))
{
if (!EAIsModeSupported (ea, mode))
continue;
if (EAGetKeySize (ea) >= key)
key = EAGetKeySize (ea);
}
return key;
}
// Returns the maximum number of bytes necessary to be generated by the PBKDF2 (PKCS #5)
int GetMaxPkcs5OutSize (void)
{
+2 -2
View File
@@ -173,7 +173,7 @@ typedef struct
#ifdef TC_WINDOWS_BOOT
#define MAX_EXPANDED_KEY VC_MAX((AES_KS + SERPENT_KS + TWOFISH_KS), CAMELLIA_KS)
#else
#define MAX_EXPANDED_KEY VC_MAX(VC_MAX(VC_MAX((AES_KS + SERPENT_KS + TWOFISH_KS), GOST_KS), CAMELLIA_KS), KUZNYECHIK_KS)
#define MAX_EXPANDED_KEY VC_MAX(VC_MAX(VC_MAX(VC_MAX((AES_KS + SERPENT_KS + TWOFISH_KS), GOST_KS), CAMELLIA_KS + KUZNYECHIK_KS + SERPENT_KS), KUZNYECHIK_KS + TWOFISH_KS), AES_KS + KUZNYECHIK_KS)
#endif
#endif
@@ -354,8 +354,8 @@ int EAGetFirstCipher (int ea);
int EAGetLastCipher (int ea);
int EAGetNextCipher (int ea, int previousCipherId);
int EAGetPreviousCipher (int ea, int previousCipherId);
int EAIsFormatEnabled (int ea);
#ifndef TC_WINDOWS_BOOT
int EAIsFormatEnabled (int ea);
int EAIsMbrSysEncEnabled (int ea);
#endif
BOOL EAIsModeSupported (int ea, int testedMode);
+291 -105
View File
@@ -26,7 +26,7 @@
#include <time.h>
#include <tchar.h>
#include <Richedit.h>
#ifdef TCMOUNT
#if defined (TCMOUNT) || defined (VOLFORMAT)
#include <Shlwapi.h>
#include <process.h>
#include <Tlhelp32.h>
@@ -1267,18 +1267,18 @@ BOOL CALLBACK AboutDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
L"Based on TrueCrypt 7.1a, freely available at http://www.truecrypt.org/ .\r\n\r\n"
L"Portions of this software:\r\n"
L"Copyright \xA9 2013-2017 IDRIX. All rights reserved.\r\n"
L"Copyright \xA9 2013-2018 IDRIX. All rights reserved.\r\n"
L"Copyright \xA9 2003-2012 TrueCrypt Developers Association. All Rights Reserved.\r\n"
L"Copyright \xA9 1998-2000 Paul Le Roux. All Rights Reserved.\r\n"
L"Copyright \xA9 1998-2008 Brian Gladman. All Rights Reserved.\r\n"
L"Copyright \xA9 1995-2017 Jean-loup Gailly and Mark Adler.\r\n"
L"Copyright \xA9 2016 Disk Cryptography Services for EFI (DCS), Alex Kolotnikov.\r\n"
L"Copyright \xA9 Dieter Baron and Thomas Klausner.\r\n"
L"Copyright \xA9 1999-2017 Dieter Baron and Thomas Klausner.\r\n"
L"Copyright \xA9 2013, Alexey Degtyarev. All rights reserved.\r\n"
L"Copyright \xA9 1999-2013,2014,2015,2016 Jack Lloyd. All rights reserved.\r\n\r\n"
L"Copyright \xA9 1999-2016 Jack Lloyd. All rights reserved.\r\n\r\n"
L"This software as a whole:\r\n"
L"Copyright \xA9 2013-2017 IDRIX. All rights reserved.\r\n\r\n"
L"Copyright \xA9 2013-2018 IDRIX. All rights reserved.\r\n\r\n"
L"An IDRIX Release");
@@ -1790,13 +1790,13 @@ static int g_waitCursorCounter = 0;
void
WaitCursor ()
{
static HCURSOR hcWait;
static HCURSOR hcWait = NULL;
if (hcWait == NULL)
hcWait = LoadCursor (NULL, IDC_WAIT);
if ((g_waitCursorCounter == 0) || (hCursor != hcWait))
{
SetCursor (hcWait);
if (!Silent) SetCursor (hcWait);
hCursor = hcWait;
}
g_waitCursorCounter++;
@@ -1805,14 +1805,14 @@ WaitCursor ()
void
NormalCursor ()
{
static HCURSOR hcArrow;
static HCURSOR hcArrow = NULL;
if (hcArrow == NULL)
hcArrow = LoadCursor (NULL, IDC_ARROW);
if (g_waitCursorCounter > 0)
g_waitCursorCounter--;
if (g_waitCursorCounter == 0)
{
SetCursor (hcArrow);
if (!Silent) SetCursor (hcArrow);
hCursor = NULL;
}
}
@@ -1820,12 +1820,12 @@ NormalCursor ()
void
ArrowWaitCursor ()
{
static HCURSOR hcArrowWait;
static HCURSOR hcArrowWait = NULL;
if (hcArrowWait == NULL)
hcArrowWait = LoadCursor (NULL, IDC_APPSTARTING);
if ((g_waitCursorCounter == 0) || (hCursor != hcArrowWait))
{
SetCursor (hcArrowWait);
if (!Silent) SetCursor (hcArrowWait);
hCursor = hcArrowWait;
}
g_waitCursorCounter++;
@@ -1833,7 +1833,7 @@ ArrowWaitCursor ()
void HandCursor ()
{
static HCURSOR hcHand;
static HCURSOR hcHand = NULL;
if (hcHand == NULL)
hcHand = LoadCursor (NULL, IDC_HAND);
SetCursor (hcHand);
@@ -2534,6 +2534,7 @@ void SavePostInstallTasksSettings (int command)
case TC_POST_INSTALL_CFG_REMOVE_ALL:
_wremove (GetConfigPath (TC_APPD_FILENAME_POST_INSTALL_TASK_TUTORIAL));
_wremove (GetConfigPath (TC_APPD_FILENAME_POST_INSTALL_TASK_RELEASE_NOTES));
_wremove (GetConfigPath (TC_APPD_FILENAME_POST_INSTALL_TASK_RESCUE_DISK));
break;
case TC_POST_INSTALL_CFG_TUTORIAL:
@@ -2544,6 +2545,10 @@ void SavePostInstallTasksSettings (int command)
f = _wfopen (GetConfigPath (TC_APPD_FILENAME_POST_INSTALL_TASK_RELEASE_NOTES), L"w");
break;
case TC_POST_INSTALL_CFG_RESCUE_DISK:
f = _wfopen (GetConfigPath (TC_APPD_FILENAME_POST_INSTALL_TASK_RESCUE_DISK), L"w");
break;
default:
return;
}
@@ -2584,6 +2589,14 @@ void DoPostInstallTasks (HWND hwndDlg)
bDone = TRUE;
}
if (FileExists (GetConfigPath (TC_APPD_FILENAME_POST_INSTALL_TASK_RESCUE_DISK)))
{
if (AskYesNo ("AFTER_UPGRADE_RESCUE_DISK", hwndDlg) == IDYES)
PostMessage (hwndDlg, VC_APPMSG_CREATE_RESCUE_DISK, 0, 0);
bDone = TRUE;
}
if (bDone)
SavePostInstallTasksSettings (TC_POST_INSTALL_CFG_REMOVE_ALL);
}
@@ -7564,33 +7577,42 @@ BOOL CALLBACK WaitDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
}
void BringToForeground(HWND hWnd)
// Based on source: https://www.codeproject.com/Tips/76427/How-to-bring-window-to-top-with-SetForegroundWindo?msg=5285754#xx5285754xx
void BringToForeground (HWND hWnd)
{
if(!::IsWindow(hWnd)) return;
DWORD lockTimeOut = 0;
HWND hCurrWnd = ::GetForegroundWindow();
DWORD dwThisTID = ::GetCurrentThreadId(),
dwCurrTID = ::GetWindowThreadProcessId(hCurrWnd,0);
// This structure will be used to create the keyboard
// input event.
INPUT ip;
if (hCurrWnd != hWnd)
{
if(dwThisTID != dwCurrTID)
{
::AttachThreadInput(dwThisTID, dwCurrTID, TRUE);
::SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT,0,&lockTimeOut,0);
::SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT,0,0,SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
::AllowSetForegroundWindow(ASFW_ANY);
// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
// Press the "A" key
ip.ki.wVk = VK_MENU; // virtual-key code for the "a" key
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
::Sleep(250); //Sometimes SetForegroundWindow will fail and the window will flash instead of it being show. Sleeping for a bit seems to help.
}
::SetForegroundWindow(hWnd);
if(dwThisTID != dwCurrTID)
{
::SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT,0,(PVOID)lockTimeOut,SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
::AttachThreadInput(dwThisTID, dwCurrTID, FALSE);
// Release the "A" key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));
}
}
@@ -7603,9 +7625,14 @@ void BringToForeground(HWND hWnd)
#endif
}
static LRESULT CALLBACK ShowWaitDialogParentWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
return DefWindowProcW (hWnd, message, wParam, lParam);
}
void ShowWaitDialog(HWND hwnd, BOOL bUseHwndAsParent, WaitThreadProc callback, void* pArg)
{
HWND hParent = (hwnd && bUseHwndAsParent)? hwnd : GetDesktopWindow();
BOOL bEffectiveHideWaitingDialog = bCmdHideWaitingDialogValid? bCmdHideWaitingDialog : bHideWaitingDialog;
WaitThreadParam threadParam;
threadParam.callback = callback;
@@ -7619,9 +7646,12 @@ void ShowWaitDialog(HWND hwnd, BOOL bUseHwndAsParent, WaitThreadProc callback, v
}
else
{
const wchar_t *className = L"VeraCryptShowWaitDialogParent";
BOOL bIsForeground = FALSE;
HWND creatorWnd = hwnd? hwnd : MainDlg;
WaitDialogDisplaying = TRUE;
HWND hParent = NULL;
if (creatorWnd)
{
if (GetForegroundWindow () == creatorWnd)
@@ -7629,6 +7659,28 @@ void ShowWaitDialog(HWND hwnd, BOOL bUseHwndAsParent, WaitThreadProc callback, v
EnableWindow (creatorWnd, FALSE);
}
if (hwnd && bUseHwndAsParent)
hParent = hwnd;
else
{
/* create invisible window and use it as parent */
WNDCLASSEXW winClass;
memset (&winClass, 0, sizeof (winClass));
winClass.cbSize = sizeof (WNDCLASSEX);
winClass.lpfnWndProc = (WNDPROC) ShowWaitDialogParentWndProc;
winClass.hInstance = hInst;
winClass.lpszClassName = className;
RegisterClassExW (&winClass);
hParent = CreateWindowExW (WS_EX_TOOLWINDOW | WS_EX_LAYERED, className, L"VeraCrypt ShowWaitDialog Parent", 0, 0, 0, 1, 1, NULL, NULL, hInst, NULL);
if (hParent)
{
SetLayeredWindowAttributes (hParent, 0, 1, LWA_ALPHA);
ShowWindow (hParent, SW_SHOWNORMAL);
}
}
finally_do_arg2 (HWND, creatorWnd, BOOL, bIsForeground, { if (finally_arg) { EnableWindow(finally_arg, TRUE); if (finally_arg2) BringToForeground (finally_arg);}});
DialogBoxParamW (hInst,
@@ -7636,6 +7688,13 @@ void ShowWaitDialog(HWND hwnd, BOOL bUseHwndAsParent, WaitThreadProc callback, v
(DLGPROC) WaitDlgProc, (LPARAM) &threadParam);
WaitDialogDisplaying = FALSE;
if (!(hwnd && bUseHwndAsParent))
{
if (hParent)
DestroyWindow (hParent);
UnregisterClassW (className, hInst);
}
}
}
@@ -7646,7 +7705,7 @@ static BOOL PerformMountIoctl (MOUNT_STRUCT* pmount, LPDWORD pdwResult, BOOL use
{
if (useVolumeID)
{
wstring devicePath = FindDeviceByVolumeID (volumeID);
wstring devicePath = FindDeviceByVolumeID (volumeID, FALSE);
if (devicePath == L"")
{
if (pdwResult)
@@ -8492,11 +8551,14 @@ BOOL GetPhysicalDriveGeometry (int driveNumber, PDISK_GEOMETRY_EX diskGeometry)
DWORD bytesRead = 0;
ZeroMemory (diskGeometry, sizeof (DISK_GEOMETRY_EX));
BYTE dgBuffer[256];
if ( DeviceIoControl (hDev, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, diskGeometry, sizeof (DISK_GEOMETRY_EX), &bytesRead, NULL)
&& (bytesRead == sizeof (DISK_GEOMETRY_EX))
&& diskGeometry->Geometry.BytesPerSector)
if ( DeviceIoControl (hDev, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, dgBuffer, sizeof (dgBuffer), &bytesRead, NULL)
&& (bytesRead >= (sizeof (DISK_GEOMETRY) + sizeof (LARGE_INTEGER)))
&& ((PDISK_GEOMETRY_EX) dgBuffer)->Geometry.BytesPerSector)
{
memcpy (&diskGeometry->Geometry, &((PDISK_GEOMETRY_EX) dgBuffer)->Geometry, sizeof (DISK_GEOMETRY));
diskGeometry->DiskSize.QuadPart = ((PDISK_GEOMETRY_EX) dgBuffer)->DiskSize.QuadPart;
bResult = TRUE;
}
@@ -10897,15 +10959,15 @@ int OpenVolume (OpenVolumeContext *context, const wchar_t *volumePath, Password
}
else
{
DISK_GEOMETRY_EX driveInfo;
BYTE dgBuffer[256];
if (!DeviceIoControl (context->HostFileHandle, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, &driveInfo, sizeof (driveInfo), &dwResult, NULL))
if (!DeviceIoControl (context->HostFileHandle, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, dgBuffer, sizeof (dgBuffer), &dwResult, NULL))
{
status = ERR_OS_ERROR;
goto error;
}
context->HostSize = driveInfo.DiskSize.QuadPart;
context->HostSize = ((PDISK_GEOMETRY_EX) dgBuffer)->DiskSize.QuadPart;
}
if (context->HostSize == 0)
@@ -11093,10 +11155,10 @@ BOOL IsPagingFileActive (BOOL checkNonWindowsPartitionsOnly)
if (handle == INVALID_HANDLE_VALUE)
continue;
DISK_GEOMETRY_EX driveInfo;
BYTE dgBuffer[256];
DWORD dwResult;
if (!DeviceIoControl (handle, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, &driveInfo, sizeof (driveInfo), &dwResult, NULL))
if (!DeviceIoControl (handle, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, dgBuffer, sizeof (dgBuffer), &dwResult, NULL))
{
CloseHandle (handle);
continue;
@@ -11652,7 +11714,7 @@ BOOL InitSecurityTokenLibrary (HWND hwndDlg)
HWND hParent = IsWindow (m_hwnd)? m_hwnd : GetActiveWindow();
if (!hParent)
hParent = GetForegroundWindow ();
if (DialogBoxParamW (hInst, MAKEINTRESOURCEW (IDD_TOKEN_PASSWORD), hParent, (DLGPROC) SecurityTokenPasswordDlgProc, (LPARAM) &str) == IDCANCEL)
if (SecureDesktopDialogBoxParam (hInst, MAKEINTRESOURCEW (IDD_TOKEN_PASSWORD), hParent, (DLGPROC) SecurityTokenPasswordDlgProc, (LPARAM) &str) == IDCANCEL)
throw UserAbort (SRC_POS);
}
if (hCursor != NULL)
@@ -12155,10 +12217,8 @@ void UpdateMountableHostDeviceList ()
}
}
wstring FindDeviceByVolumeID (const BYTE volumeID [VOLUME_ID_SIZE])
wstring FindDeviceByVolumeID (const BYTE volumeID [VOLUME_ID_SIZE], BOOL bFromService)
{
static std::vector<HostDevice> volumeIdCandidates;
/* if it is already mounted, get the real path name used for mounting */
MOUNT_LIST_STRUCT mlist;
DWORD dwResult;
@@ -12189,77 +12249,108 @@ wstring FindDeviceByVolumeID (const BYTE volumeID [VOLUME_ID_SIZE])
/* not mounted. Look for it in the local drives*/
EnterCriticalSection (&csMountableDevices);
std::vector<HostDevice> newDevices = mountableDevices;
LeaveCriticalSection (&csMountableDevices);
EnterCriticalSection (&csVolumeIdCandidates);
finally_do ({ LeaveCriticalSection (&csVolumeIdCandidates); });
/* remove any devices that don't exist anymore */
for (std::vector<HostDevice>::iterator It = volumeIdCandidates.begin();
It != volumeIdCandidates.end();)
if (bFromService)
{
bool bFound = false;
for (int devNumber = 0; devNumber < MAX_HOST_DRIVE_NUMBER; devNumber++)
{
for (int partNumber = 0; partNumber < MAX_HOST_PARTITION_NUMBER; partNumber++)
{
wstringstream strm;
strm << L"\\Device\\Harddisk" << devNumber << L"\\Partition" << partNumber;
wstring devPathStr (strm.str());
const wchar_t *devPath = devPathStr.c_str();
OPEN_TEST_STRUCT openTest = {0};
if (OpenDevice (devPath, &openTest, TRUE, TRUE)
&& (openTest.VolumeIDComputed[TC_VOLUME_TYPE_NORMAL] && openTest.VolumeIDComputed[TC_VOLUME_TYPE_HIDDEN])
)
{
if ( (0 == memcmp (volumeID, openTest.volumeIDs[TC_VOLUME_TYPE_NORMAL], VOLUME_ID_SIZE))
|| (0 == memcmp (volumeID, openTest.volumeIDs[TC_VOLUME_TYPE_HIDDEN], VOLUME_ID_SIZE))
)
{
return devPath;
}
}
}
}
}
else
{
static std::vector<HostDevice> volumeIdCandidates;
EnterCriticalSection (&csMountableDevices);
std::vector<HostDevice> newDevices = mountableDevices;
LeaveCriticalSection (&csMountableDevices);
EnterCriticalSection (&csVolumeIdCandidates);
finally_do ({ LeaveCriticalSection (&csVolumeIdCandidates); });
/* remove any devices that don't exist anymore */
for (std::vector<HostDevice>::iterator It = volumeIdCandidates.begin();
It != volumeIdCandidates.end();)
{
bool bFound = false;
for (std::vector<HostDevice>::iterator newIt = newDevices.begin();
newIt != newDevices.end(); newIt++)
{
if (It->Path == newIt->Path)
{
bFound = true;
break;
}
}
if (bFound)
It++;
else
It = volumeIdCandidates.erase (It);
}
/* Add newly inserted devices and compute their VolumeID */
for (std::vector<HostDevice>::iterator newIt = newDevices.begin();
newIt != newDevices.end(); newIt++)
{
if (It->Path == newIt->Path)
bool bFound = false;
for (std::vector<HostDevice>::iterator It = volumeIdCandidates.begin();
It != volumeIdCandidates.end(); It++)
{
bFound = true;
break;
if (It->Path == newIt->Path)
{
bFound = true;
break;
}
}
if (!bFound)
{
/* new device/partition. Compute its Volume IDs */
OPEN_TEST_STRUCT openTest = {0};
if (OpenDevice (newIt->Path.c_str(), &openTest, TRUE, TRUE)
&& (openTest.VolumeIDComputed[TC_VOLUME_TYPE_NORMAL] && openTest.VolumeIDComputed[TC_VOLUME_TYPE_HIDDEN])
)
{
memcpy (newIt->VolumeIDs, openTest.volumeIDs, sizeof (newIt->VolumeIDs));
newIt->HasVolumeIDs = true;
}
else
newIt->HasVolumeIDs = false;
volumeIdCandidates.push_back (*newIt);
}
}
if (bFound)
It++;
else
It = volumeIdCandidates.erase (It);
}
/* Add newly inserted devices and compute their VolumeID */
for (std::vector<HostDevice>::iterator newIt = newDevices.begin();
newIt != newDevices.end(); newIt++)
{
bool bFound = false;
for (std::vector<HostDevice>::iterator It = volumeIdCandidates.begin();
It != volumeIdCandidates.end(); It++)
{
if (It->Path == newIt->Path)
{
bFound = true;
break;
}
}
if (!bFound)
{
/* new device/partition. Compute its Volume IDs */
OPEN_TEST_STRUCT openTest = {0};
if (OpenDevice (newIt->Path.c_str(), &openTest, TRUE, TRUE)
&& (openTest.VolumeIDComputed[TC_VOLUME_TYPE_NORMAL] && openTest.VolumeIDComputed[TC_VOLUME_TYPE_HIDDEN])
if ( It->HasVolumeIDs &&
( (0 == memcmp (volumeID, It->VolumeIDs[TC_VOLUME_TYPE_NORMAL], VOLUME_ID_SIZE))
|| (0 == memcmp (volumeID, It->VolumeIDs[TC_VOLUME_TYPE_HIDDEN], VOLUME_ID_SIZE))
)
)
{
memcpy (newIt->VolumeIDs, openTest.volumeIDs, sizeof (newIt->VolumeIDs));
newIt->HasVolumeIDs = true;
return It->Path;
}
else
newIt->HasVolumeIDs = false;
volumeIdCandidates.push_back (*newIt);
}
}
for (std::vector<HostDevice>::iterator It = volumeIdCandidates.begin();
It != volumeIdCandidates.end(); It++)
{
if ( It->HasVolumeIDs &&
( (0 == memcmp (volumeID, It->VolumeIDs[TC_VOLUME_TYPE_NORMAL], VOLUME_ID_SIZE))
|| (0 == memcmp (volumeID, It->VolumeIDs[TC_VOLUME_TYPE_HIDDEN], VOLUME_ID_SIZE))
)
)
{
return It->Path;
}
}
@@ -12889,7 +12980,7 @@ BOOL TranslateVolumeID (HWND hwndDlg, wchar_t* pathValue, size_t cchPathValue)
&& (arr.size() == VOLUME_ID_SIZE)
)
{
std::wstring devicePath = FindDeviceByVolumeID (&arr[0]);
std::wstring devicePath = FindDeviceByVolumeID (&arr[0], FALSE);
if (devicePath.length() > 0)
StringCchCopyW (pathValue, cchPathValue, devicePath.c_str());
else
@@ -13011,7 +13102,7 @@ BOOL DeleteDirectory (const wchar_t* szDirName)
return bStatus;
}
#ifdef TCMOUNT
#if defined (TCMOUNT) || defined (VOLFORMAT)
/*********************************************************************/
static BOOL GenerateRandomString (HWND hwndDlg, LPTSTR szName, DWORD maxCharsCount)
@@ -13049,6 +13140,7 @@ static BOOL GenerateRandomString (HWND hwndDlg, LPTSTR szName, DWORD maxCharsCou
typedef struct
{
HDESK hDesk;
LPCWSTR szDesktopName;
HINSTANCE hInstance;
LPCWSTR lpTemplateName;
DLGPROC lpDialogFunc;
@@ -13056,16 +13148,113 @@ typedef struct
INT_PTR retValue;
} SecureDesktopThreadParam;
typedef struct
{
LPCWSTR szVCDesktopName;
HDESK hVcDesktop;
volatile BOOL* pbStopMonitoring;
} SecureDesktopMonitoringThreadParam;
#define SECUREDESKTOP_MONOTIR_PERIOD 500
// This thread checks if VeraCrypt secure desktop is the one that has user input
// and if it is not then it will call SwitchDesktop to make it the input desktop
static unsigned int __stdcall SecureDesktopMonitoringThread( LPVOID lpThreadParameter )
{
SecureDesktopMonitoringThreadParam* pMonitorParam = (SecureDesktopMonitoringThreadParam*) lpThreadParameter;
if (pMonitorParam)
{
volatile BOOL* pbStopMonitoring = pMonitorParam->pbStopMonitoring;
LPCWSTR szVCDesktopName = pMonitorParam->szVCDesktopName;
HDESK hVcDesktop = pMonitorParam->hVcDesktop;
while (!*pbStopMonitoring)
{
// check that our secure desktop is still the input desktop
// otherwise, switch to it
BOOL bPerformSwitch = FALSE;
HDESK currentDesk = OpenInputDesktop (0, FALSE, GENERIC_READ);
if (currentDesk)
{
LPWSTR szName = NULL;
DWORD dwLen = 0;
if (!GetUserObjectInformation (currentDesk, UOI_NAME, NULL, 0, &dwLen))
{
szName = (LPWSTR) malloc (dwLen);
if (szName)
{
if (GetUserObjectInformation (currentDesk, UOI_NAME, szName, dwLen, &dwLen))
{
if (0 != _wcsicmp (szName, szVCDesktopName))
bPerformSwitch = TRUE;
}
free (szName);
}
}
CloseDesktop (currentDesk);
}
if (bPerformSwitch)
SwitchDesktop (hVcDesktop);
Sleep (SECUREDESKTOP_MONOTIR_PERIOD);
}
}
return 0;
}
static DWORD WINAPI SecureDesktopThread(LPVOID lpThreadParameter)
{
volatile BOOL bStopMonitoring = FALSE;
HANDLE hMonitoringThread = NULL;
unsigned int monitoringThreadID = 0;
SecureDesktopThreadParam* pParam = (SecureDesktopThreadParam*) lpThreadParameter;
SecureDesktopMonitoringThreadParam monitorParam;
HDESK hOriginalDesk = GetThreadDesktop (GetCurrentThreadId ());
BOOL bNewDesktopSet = FALSE;
int counter = 0;
SetThreadDesktop (pParam->hDesk);
SwitchDesktop (pParam->hDesk);
// wait for SwitchDesktop to succeed before using it for current thread
// we wait a maximum of 5 seconds
for (counter = 0; counter < 10; counter++)
{
if (SwitchDesktop (pParam->hDesk))
{
bNewDesktopSet = TRUE;
break;
}
Sleep (SECUREDESKTOP_MONOTIR_PERIOD);
}
if (bNewDesktopSet)
{
SetThreadDesktop (pParam->hDesk);
// create the thread that will ensure that VeraCrypt secure desktop has always user input
monitorParam.szVCDesktopName = pParam->szDesktopName;
monitorParam.hVcDesktop = pParam->hDesk;
monitorParam.pbStopMonitoring = &bStopMonitoring;
hMonitoringThread = (HANDLE) _beginthreadex (NULL, 0, SecureDesktopMonitoringThread, (LPVOID) &monitorParam, 0, &monitoringThreadID);
}
pParam->retValue = DialogBoxParamW (pParam->hInstance, pParam->lpTemplateName,
NULL, pParam->lpDialogFunc, pParam->dwInitParam);
if (hMonitoringThread)
{
bStopMonitoring = TRUE;
WaitForSingleObject (hMonitoringThread, INFINITE);
CloseHandle (hMonitoringThread);
}
if (bNewDesktopSet)
{
SetThreadDesktop (hOriginalDesk);
SwitchDesktop (hOriginalDesk);
}
return 0;
}
@@ -13124,10 +13313,10 @@ INT_PTR SecureDesktopDialogBoxParam(
hSecureDesk = CreateDesktop (szDesktopName, NULL, NULL, 0, desktopAccess, NULL);
if (hSecureDesk)
{
HDESK hOriginalDesk = GetThreadDesktop (GetCurrentThreadId ());
SecureDesktopThreadParam param;
param.hDesk = hSecureDesk;
param.szDesktopName = szDesktopName;
param.hInstance = hInstance;
param.lpTemplateName = lpTemplateName;
param.lpDialogFunc = lpDialogFunc;
@@ -13140,9 +13329,6 @@ INT_PTR SecureDesktopDialogBoxParam(
WaitForSingleObject (hThread, INFINITE);
CloseHandle (hThread);
SwitchDesktop (hOriginalDesk);
SetThreadDesktop (hOriginalDesk);
retValue = param.retValue;
bSuccess = TRUE;
}
+5 -2
View File
@@ -79,6 +79,7 @@ enum
#define TC_APPD_FILENAME_NONSYS_INPLACE_ENC_WIPE L"In-Place Encryption Wipe Algo"
#define TC_APPD_FILENAME_POST_INSTALL_TASK_TUTORIAL L"Post-Install Task - Tutorial"
#define TC_APPD_FILENAME_POST_INSTALL_TASK_RELEASE_NOTES L"Post-Install Task - Release Notes"
#define TC_APPD_FILENAME_POST_INSTALL_TASK_RESCUE_DISK L"Post-Install Task - Rescue Disk"
#define VC_FILENAME_RENAMED_SUFFIX L"_old"
@@ -94,7 +95,8 @@ enum
{
TC_POST_INSTALL_CFG_REMOVE_ALL = 0,
TC_POST_INSTALL_CFG_TUTORIAL,
TC_POST_INSTALL_CFG_RELEASE_NOTES
TC_POST_INSTALL_CFG_RELEASE_NOTES,
TC_POST_INSTALL_CFG_RESCUE_DISK,
};
extern char *LastDialogId;
@@ -178,6 +180,7 @@ enum tc_app_msg_ids
TC_APPMSG_MOUNT_ENABLE_DISABLE_CONTROLS = WM_APP + 201,
TC_APPMSG_MOUNT_SHOW_WINDOW = WM_APP + 202,
TC_APPMSG_PREBOOT_PASSWORD_MODE = WM_APP + 203,
VC_APPMSG_CREATE_RESCUE_DISK = WM_APP + 204,
// Format
TC_APPMSG_VOL_TRANSFORM_THREAD_ENDED = WM_APP + 301,
TC_APPMSG_FORMAT_FINISHED = WM_APP + 302,
@@ -618,7 +621,7 @@ std::wstring GetUserFriendlyVersionString (int version);
std::wstring IntToWideString (int val);
std::wstring ArrayToHexWideString (const unsigned char* pbData, int cbData);
bool HexWideStringToArray (const wchar_t* hexStr, std::vector<byte>& arr);
std::wstring FindDeviceByVolumeID (const BYTE volumeID [VOLUME_ID_SIZE]);
std::wstring FindDeviceByVolumeID (const BYTE volumeID [VOLUME_ID_SIZE], BOOL bFromService);
void RegisterDriverInf (bool registerFilter, const std::string& filter, const std::string& filterReg, HWND ParentWindow, HKEY regKey);
std::wstring GetTempPathString ();
void CorrectFileName (std::wstring& fileName);
-14
View File
@@ -43,17 +43,3 @@ uint64 MirrorBytes64 (uint64 x)
}
#endif
void
LongReverse (unsigned __int32 *buffer, unsigned byteCount)
{
unsigned __int32 value;
byteCount /= sizeof (unsigned __int32);
while (byteCount--)
{
value = *buffer;
value = ((value & 0xFF00FF00L) >> 8) | \
((value & 0x00FF00FFL) << 8);
*buffer++ = (value << 16) | (value >> 16);
}
}
+1 -2
View File
@@ -139,8 +139,7 @@ unsigned __int16 MirrorBytes16 (unsigned __int16 x);
unsigned __int32 MirrorBytes32 (unsigned __int32 x);
#ifndef TC_NO_COMPILER_INT64
uint64 MirrorBytes64 (uint64 x);
#endif
void LongReverse ( unsigned __int32 *buffer , unsigned byteCount );
#endif
#if defined(__cplusplus)
}

Some files were not shown because too many files have changed in this diff Show More