/* Copyright (c) 2008-2009 TrueCrypt Developers Association. All rights reserved. Governed by the TrueCrypt License 3.0 the full text of which is contained in the file License.txt included in TrueCrypt binary and source code distribution packages. */ #include "Tcdefs.h" #include "Wipe.h" static BOOL Wipe1PseudoRandom (int pass, byte *buffer, size_t size) { return FALSE; } // Fill buffer with wipe patterns defined in "National Industrial Security Program Operating Manual", US DoD 5220.22-M. // Return: FALSE = buffer must be filled with random data static BOOL Wipe3Dod5220 (int pass, byte *buffer, size_t size) { byte wipeChar; switch (pass) { case 1: wipeChar = 0; break; case 2: wipeChar = 0xff; break; default: return FALSE; } memset (buffer, wipeChar, size); return TRUE; } static BOOL Wipe7Dod5220 (int pass, byte randChars[TC_WIPE_RAND_CHAR_COUNT], byte *buffer, size_t size) { byte wipeChar; switch (pass) { case 1: wipeChar = randChars[0]; break; case 2: wipeChar = ~randChars[0]; break; case 4: wipeChar = randChars[1]; break; case 5: wipeChar = randChars[2]; break; case 6: wipeChar = ~randChars[2]; break; default: return FALSE; } memset (buffer, wipeChar, size); return TRUE; } // Fill the buffer with wipe patterns defined in the paper "Secure Deletion of Data from Magnetic and Solid-State Memory" by Peter Gutmann. // Return: FALSE = buffer must be filled with random data static BOOL Wipe35Gutmann (int pass, byte *buffer, size_t size) { byte wipePat3[] = { 0x92, 0x49, 0x24 }; int wipePat3Pos; size_t i; switch (pass) { case 5: memset (buffer, 0x55, size); break; case 6: memset (buffer, 0xaa, size); break; case 7: case 26: case 29: wipePat3Pos = 0; goto wipe3; case 8: case 27: case 30: wipePat3Pos = 1; goto wipe3; case 9: case 28: case 31: wipePat3Pos = 2; goto wipe3; wipe3: if (pass >= 29) { wipePat3[0] = ~wipePat3[0]; wipePat3[1] = ~wipePat3[1]; wipePat3[2] = ~wipePat3[2]; } for (i = 0; i < size; ++i) { buffer[i] = wipePat3[wipePat3Pos++ % 3]; } break; default: if (pass >= 10 && pass <= 25) memset (buffer, (pass - 10) * 0x11, size); else return FALSE; } return TRUE; } int GetWipePassCount (WipeAlgorithmId algorithm) { switch (algorithm) { case TC_WIPE_1_RAND: return 1; case TC_WIPE_3_DOD_5220: return 3; case TC_WIPE_7_DOD_5220: return 7; case TC_WIPE_35_GUTMANN: return 35; case TC_WIPE_256: return 256; } return -1; // Prevent compiler warnings } BOOL WipeBuffer (WipeAlgorithmId algorithm, byte randChars[TC_WIPE_RAND_CHAR_COUNT], int pass, byte *buffer, size_t size) { switch (algorithm) { case TC_WIPE_1_RAND: case TC_WIPE_256: return Wipe1PseudoRandom (pass, buffer, size); case TC_WIPE_3_DOD_5220: return Wipe3Dod5220 (pass, buffer, size); case TC_WIPE_7_DOD_5220: return Wipe7Dod5220 (pass, randChars, buffer, size); case TC_WIPE_35_GUTMANN: return Wipe35Gutmann (pass, buffer, size); /* we will never reach here because all calls to WipeBuffer are preceeded * by a call to GetWipePassCount that already checks the same algorithm * parameters and in case of unsupported value an error is returned before * calling WipeBuffer */ /* default: TC_THROW_FATAL_EXCEPTION;*/ } return FALSE; // Prevent compiler warnings } tion>mode:
authorFelix Reichmann <54814163+Van-Fouran@users.noreply.github.com>2022-08-25 09:46:58 +0200
committerGitHub <noreply@github.com>2022-08-25 09:46:58 +0200
commitc0ff7a7c521b1d658316d9a177383ab0c403007a (patch)
treea24b464fba3425b245222f84fd428848900831ef
parent99c3cda01a4bb4d1f08b93753ff3b79bcbc3e63e (diff)
downloadVeraCrypt-c0ff7a7c521b1d658316d9a177383ab0c403007a.tar.gz
VeraCrypt-c0ff7a7c521b1d658316d9a177383ab0c403007a.zip
New sys enc wizard (#957)SysEncWizardPR957
* New VeraCrypt interface (for system encryption) with improved usability * System Encryption: translate password to US keyboard layout + improved new interface * Windows: Fix build error following merge * Windows: Remove unused variable * Windows: Add missing string in Language.xml * Windows: fix buffer overrun caused by wrong use of wmemset * Do not delete password file Since the file is only available in \Release\Setup Files\ it would be fully deleted after running this script the first time. * Correct return code Originally the function would have always returned the return-code 1 resulting that the user is not able to change the location for the rescue zip. * Added hint for sysenc Added a hint why the field for repeating the password is initially greyed out within the system encryption. * Corrected spelling mistake Corrected spelling mistake * Removed not working copy job The file to be copied was stored at the source location. Therefore the copyjob will not work. Instead the file is already in the target folder. * Removed RIPEMD-160 from Product64.wxs See commit from 21.03.2022 * Added german translation for new interface * Fixed PIM bug * Corrected translation file based on the guidelines within the pull request * Fixing merge conflicts * Fixed Compiling issues. Reverted keyboard translation * Removed artifacts of password translation * Corrected language.xml * Fixed order within german language file * Corrected positions Co-authored-by: Bruna2803 <bruna.radeljak@hotmail.com> Co-authored-by: felixreichmann <30237956+felixreichmann@users.noreply.github.com> Co-authored-by: Mounir IDRASSI <mounir.idrassi@idrix.fr>
Diffstat