VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Mount
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2014-07-27 02:36:23 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2014-11-08 23:21:43 +0100
commit1c11ee428d9e06be1440133f6d1163ce6c709410 (patch)
treed593910f3e6e3d2441bfd4bfe25d6e58c508a0b0 /src/Mount
parent97154aaf51efe787dd1678c8e1baeeb65ce46fe1 (diff)
downloadVeraCrypt-1c11ee428d9e06be1440133f6d1163ce6c709410.tar.gz
VeraCrypt-1c11ee428d9e06be1440133f6d1163ce6c709410.zip
Add option in select the number of passes for volume header over-writing. By default, it is set to 3 but it can be increased to 256 passes (which can lead to a delay of many hours for a single password change operation).
Diffstat (limited to 'src/Mount')
-rw-r--r--src/Mount/MainCom.cpp8
-rw-r--r--src/Mount/MainCom.h2
-rw-r--r--src/Mount/MainCom.idl2
-rw-r--r--src/Mount/Mount.c15
-rw-r--r--src/Mount/Mount.rc10
-rw-r--r--src/Mount/Mount.vcproj4
-rw-r--r--src/Mount/Resource.h2
7 files changed, 30 insertions, 13 deletions
diff --git a/src/Mount/MainCom.cpp b/src/Mount/MainCom.cpp
index 537a187f..829cd21f 100644
--- a/src/Mount/MainCom.cpp
+++ b/src/Mount/MainCom.cpp
@@ -83,47 +83,47 @@ public:
else
return ERR_OUTOFMEMORY;
}
virtual int STDMETHODCALLTYPE RestoreVolumeHeader (LONG_PTR hwndDlg, BSTR lpszVolume)
{
USES_CONVERSION;
CW2A szVolumeA(lpszVolume);
MainDlg = (HWND) hwndDlg;
if (szVolumeA.m_psz)
return ::RestoreVolumeHeader ((HWND) hwndDlg, szVolumeA.m_psz);
else
return ERR_OUTOFMEMORY;
}
virtual DWORD STDMETHODCALLTYPE CallDriver (DWORD ioctl, BSTR input, BSTR *output)
{
return BaseCom::CallDriver (ioctl, input, output);
}
- virtual int STDMETHODCALLTYPE ChangePassword (BSTR volumePath, Password *oldPassword, Password *newPassword, int pkcs5, LONG_PTR hWnd)
+ virtual int STDMETHODCALLTYPE ChangePassword (BSTR volumePath, Password *oldPassword, Password *newPassword, int pkcs5, int wipePassCount, LONG_PTR hWnd)
{
USES_CONVERSION;
CW2A volumePathA(volumePath);
MainDlg = (HWND) hWnd;
if (volumePathA.m_psz)
- return ::ChangePwd (volumePathA.m_psz, oldPassword, newPassword, pkcs5, (HWND) hWnd);
+ return ::ChangePwd (volumePathA.m_psz, oldPassword, newPassword, pkcs5, wipePassCount,(HWND) hWnd);
else
return ERR_OUTOFMEMORY;
}
virtual DWORD STDMETHODCALLTYPE CopyFile (BSTR sourceFile, BSTR destinationFile)
{
return BaseCom::CopyFile (sourceFile, destinationFile);
}
virtual DWORD STDMETHODCALLTYPE DeleteFile (BSTR file)
{
return BaseCom::DeleteFile (file);
}
virtual BOOL STDMETHODCALLTYPE IsPagingFileActive (BOOL checkNonWindowsPartitionsOnly)
{
return BaseCom::IsPagingFileActive (checkNonWindowsPartitionsOnly);
}
virtual DWORD STDMETHODCALLTYPE ReadWriteFile (BOOL write, BOOL device, BSTR filePath, BSTR *bufferBstr, unsigned __int64 offset, unsigned __int32 size, DWORD *sizeDone)
@@ -244,36 +244,36 @@ extern "C" int UacBackupVolumeHeader (HWND hwndDlg, BOOL bRequireConfirmation, c
extern "C" int UacRestoreVolumeHeader (HWND hwndDlg, char *lpszVolume)
{
CComPtr<ITrueCryptMainCom> tc;
int r;
CoInitialize (NULL);
if (ComGetInstance (hwndDlg, &tc))
r = tc->RestoreVolumeHeader ((LONG_PTR) hwndDlg, CComBSTR (lpszVolume));
else
r = -1;
CoUninitialize ();
return r;
}
-extern "C" int UacChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg)
+extern "C" int UacChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, int wipePassCount, HWND hwndDlg)
{
CComPtr<ITrueCryptMainCom> tc;
int r;
if (ComGetInstance (hwndDlg, &tc))
{
WaitCursor ();
- r = tc->ChangePassword (CComBSTR (lpszVolume), oldPassword, newPassword, pkcs5, (LONG_PTR) hwndDlg);
+ r = tc->ChangePassword (CComBSTR (lpszVolume), oldPassword, newPassword, pkcs5, wipePassCount, (LONG_PTR) hwndDlg);
NormalCursor ();
}
else
r = -1;
return r;
}
diff --git a/src/Mount/MainCom.h b/src/Mount/MainCom.h
index 44d9db45..a22eb345 100644
--- a/src/Mount/MainCom.h
+++ b/src/Mount/MainCom.h
@@ -6,27 +6,27 @@
packages.
*/
#ifndef TC_HEADER_MAIN_COM
#define TC_HEADER_MAIN_COM
#include <windows.h>
#ifdef __cplusplus
#include "MainCom_h.h"
ITrueCryptMainCom *GetElevatedInstance (HWND parent);
extern "C" {
#endif
BOOL ComServerMain ();
void UacAnalyzeKernelMiniDump (HWND hwndDlg);
int UacBackupVolumeHeader (HWND hwndDlg, BOOL bRequireConfirmation, char *lpszVolume);
int UacRestoreVolumeHeader (HWND hwndDlg, char *lpszVolume);
-int UacChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg);
+int UacChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, int wipePassCount, HWND hwndDlg);
#ifdef __cplusplus
}
#endif
#endif // TC_HEADER_MAIN_COM
diff --git a/src/Mount/MainCom.idl b/src/Mount/MainCom.idl
index 8999d4ec..8550fe8f 100644
--- a/src/Mount/MainCom.idl
+++ b/src/Mount/MainCom.idl
@@ -10,41 +10,41 @@ import "wtypes.idl";
import "..\Common\Password.h";
[
uuid(9ACF6176-5FC4-4690-A025-B3306A50EB6A),
helpstring("VeraCrypt Main UAC Support Library"),
version(2.4) // Update ComSetup.cpp when changing version number
]
library TrueCryptMainCom
{
[
uuid(C786E27C-2801-482c-B45D-D4357B270A29),
object,
oleautomation,
helpstring("VeraCrypt Main UAC Support Interface")
]
interface ITrueCryptMainCom : IUnknown
{
void AnalyzeKernelMiniDump (LONG_PTR hwndDlg);
int BackupVolumeHeader (LONG_PTR hwndDlg, BOOL bRequireConfirmation, BSTR lpszVolume);
DWORD CallDriver (DWORD ioctl, BSTR input, BSTR *output);
- int ChangePassword (BSTR volumePath, Password *oldPassword, Password *newPassword, int pkcs5, LONG_PTR hWnd);
+ int ChangePassword (BSTR volumePath, Password *oldPassword, Password *newPassword, int pkcs5, int wipePassCount, LONG_PTR hWnd);
DWORD CopyFile (BSTR sourceFile, BSTR destinationFile);
DWORD DeleteFile (BSTR file);
BOOL IsPagingFileActive (BOOL checkNonWindowsPartitionsOnly);
DWORD ReadWriteFile (BOOL write, BOOL device, BSTR filePath, BSTR *bufferBstr, unsigned __int64 offset, unsigned __int32 size, DWORD *sizeDone);
DWORD RegisterFilterDriver (BOOL registerDriver, int filterType);
DWORD RegisterSystemFavoritesService (BOOL registerService);
int RestoreVolumeHeader (LONG_PTR hwndDlg, BSTR lpszVolume);
DWORD SetDriverServiceStartType (DWORD startType);
DWORD WriteLocalMachineRegistryDwordValue (BSTR keyPath, BSTR valueName, DWORD value);
};
[
uuid(FE8B3B95-C80C-41f7-830F-FBA271C26F7E),
helpstring("VeraCrypt Main UAC Support Coclass")
]
coclass TrueCryptMainCom
{
[default] interface ITrueCryptMainCom;
}
}
diff --git a/src/Mount/Mount.c b/src/Mount/Mount.c
index 380cd04a..6b11c178 100644
--- a/src/Mount/Mount.c
+++ b/src/Mount/Mount.c
@@ -1379,71 +1379,75 @@ static void PasswordChangeEnable (HWND hwndDlg, int button, int passwordId, BOOL
}
/* Except in response to the WM_INITDIALOG message, the dialog box procedure
should return nonzero if it processes the message, and zero if it does
not. - see DialogProc */
BOOL CALLBACK PasswordChangeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
static KeyFilesDlgParam newKeyFilesParam;
WORD lw = LOWORD (wParam);
WORD hw = HIWORD (wParam);
switch (msg)
{
case WM_INITDIALOG:
{
LPARAM nIndex;
HWND hComboBox = GetDlgItem (hwndDlg, IDC_PKCS5_PRF_ID);
int i;
+ WipeAlgorithmId headerWipeMode = TC_WIPE_3_DOD_5220;
ZeroMemory (&newKeyFilesParam, sizeof (newKeyFilesParam));
SetWindowTextW (hwndDlg, GetString ("IDD_PASSWORDCHANGE_DLG"));
LocalizeDialog (hwndDlg, "IDD_PASSWORDCHANGE_DLG");
SendMessage (GetDlgItem (hwndDlg, IDC_OLD_PASSWORD), EM_LIMITTEXT, MAX_PASSWORD, 0);
SendMessage (GetDlgItem (hwndDlg, IDC_PASSWORD), EM_LIMITTEXT, MAX_PASSWORD, 0);
SendMessage (GetDlgItem (hwndDlg, IDC_VERIFY), EM_LIMITTEXT, MAX_PASSWORD, 0);
EnableWindow (GetDlgItem (hwndDlg, IDOK), FALSE);
SetCheckBox (hwndDlg, IDC_ENABLE_KEYFILES, KeyFilesEnable);
EnableWindow (GetDlgItem (hwndDlg, IDC_KEYFILES), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDC_NEW_KEYFILES), TRUE);
SendMessage (hComboBox, CB_RESETCONTENT, 0, 0);
nIndex = SendMessageW (hComboBox, CB_ADDSTRING, 0, (LPARAM) GetString ("UNCHANGED"));
SendMessage (hComboBox, CB_SETITEMDATA, nIndex, (LPARAM) 0);
for (i = FIRST_PRF_ID; i <= LAST_PRF_ID; i++)
{
if (!HashIsDeprecated (i))
{
nIndex = SendMessage (hComboBox, CB_ADDSTRING, 0, (LPARAM) get_pkcs5_prf_name(i));
SendMessage (hComboBox, CB_SETITEMDATA, nIndex, (LPARAM) i);
}
}
SendMessage (hComboBox, CB_SETCURSEL, 0, 0);
+ PopulateWipeModeCombo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), FALSE, FALSE, TRUE);
+ SelectAlgo (GetDlgItem (hwndDlg, IDC_WIPE_MODE), (int *) &headerWipeMode);
+
switch (pwdChangeDlgMode)
{
case PCDM_CHANGE_PKCS5_PRF:
SetWindowTextW (hwndDlg, GetString ("IDD_PCDM_CHANGE_PKCS5_PRF"));
LocalizeDialog (hwndDlg, "IDD_PCDM_CHANGE_PKCS5_PRF");
EnableWindow (GetDlgItem (hwndDlg, IDC_PASSWORD), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_ENABLE_NEW_KEYFILES), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_SHOW_PASSWORD_CHPWD_NEW), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_NEW_KEYFILES), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDT_NEW_PASSWORD), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDT_CONFIRM_PASSWORD), FALSE);
break;
case PCDM_ADD_REMOVE_VOL_KEYFILES:
SetWindowTextW (hwndDlg, GetString ("IDD_PCDM_ADD_REMOVE_VOL_KEYFILES"));
LocalizeDialog (hwndDlg, "IDD_PCDM_ADD_REMOVE_VOL_KEYFILES");
newKeyFilesParam.EnableKeyFiles = TRUE;
EnableWindow (GetDlgItem (hwndDlg, IDC_PASSWORD), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_VERIFY), FALSE);
@@ -1734,40 +1738,45 @@ BOOL CALLBACK PasswordChangeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPAR
if (lw == IDC_SHOW_PASSWORD_CHPWD_NEW)
{
SendMessage (GetDlgItem (hwndDlg, IDC_PASSWORD),
EM_SETPASSWORDCHAR,
GetCheckBox (hwndDlg, IDC_SHOW_PASSWORD_CHPWD_NEW) ? 0 : '*',
0);
SendMessage (GetDlgItem (hwndDlg, IDC_VERIFY),
EM_SETPASSWORDCHAR,
GetCheckBox (hwndDlg, IDC_SHOW_PASSWORD_CHPWD_NEW) ? 0 : '*',
0);
InvalidateRect (GetDlgItem (hwndDlg, IDC_PASSWORD), NULL, TRUE);
InvalidateRect (GetDlgItem (hwndDlg, IDC_VERIFY), NULL, TRUE);
return 1;
}
if (lw == IDOK)
{
HWND hParent = GetParent (hwndDlg);
Password oldPassword;
Password newPassword;
+ WipeAlgorithmId headerWiperMode = (WipeAlgorithmId) SendMessage (
+ GetDlgItem (hwndDlg, IDC_WIPE_MODE),
+ CB_GETITEMDATA,
+ SendMessage (GetDlgItem (hwndDlg, IDC_WIPE_MODE), CB_GETCURSEL, 0, 0),
+ 0);
int nStatus;
int pkcs5 = SendMessage (GetDlgItem (hwndDlg, IDC_PKCS5_PRF_ID), CB_GETITEMDATA,
SendMessage (GetDlgItem (hwndDlg, IDC_PKCS5_PRF_ID), CB_GETCURSEL, 0, 0), 0);
if (!CheckPasswordCharEncoding (GetDlgItem (hwndDlg, IDC_PASSWORD), NULL))
{
Error ("UNSUPPORTED_CHARS_IN_PWD");
return 1;
}
if (pwdChangeDlgMode == PCDM_CHANGE_PKCS5_PRF)
{
newKeyFilesParam.EnableKeyFiles = KeyFilesEnable;
}
else if (!(newKeyFilesParam.EnableKeyFiles && newKeyFilesParam.FirstKeyFile != NULL)
&& pwdChangeDlgMode == PCDM_CHANGE_PASSWORD)
{
if (!CheckPasswordLength (hwndDlg, GetDlgItem (hwndDlg, IDC_PASSWORD)))
return 1;
}
@@ -1796,60 +1805,60 @@ BOOL CALLBACK PasswordChangeDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPAR
if (KeyFilesEnable)
KeyFilesApply (&oldPassword, FirstKeyFile);
if (newKeyFilesParam.EnableKeyFiles)
{
if (!KeyFilesApply (&newPassword, pwdChangeDlgMode == PCDM_CHANGE_PKCS5_PRF ? FirstKeyFile : newKeyFilesParam.FirstKeyFile))
{
nStatus = ERR_DONT_REPORT;
goto err;
}
}
if (bSysEncPwdChangeDlgMode)
{
// System
pkcs5 = 0; // PKCS-5 PRF unchanged (currently system encryption supports only RIPEMD-160)
try
{
- nStatus = BootEncObj->ChangePassword (&oldPassword, &newPassword, pkcs5);
+ nStatus = BootEncObj->ChangePassword (&oldPassword, &newPassword, pkcs5, GetWipePassCount(headerWiperMode));
}
catch (Exception &e)
{
e.Show (MainDlg);
nStatus = ERR_OS_ERROR;
}
}
else
{
// Non-system
- nStatus = ChangePwd (szFileName, &oldPassword, &newPassword, pkcs5, hwndDlg);
+ nStatus = ChangePwd (szFileName, &oldPassword, &newPassword, pkcs5, GetWipePassCount(headerWiperMode), hwndDlg);
if (nStatus == ERR_OS_ERROR
&& GetLastError () == ERROR_ACCESS_DENIED
&& IsUacSupported ()
&& IsVolumeDeviceHosted (szFileName))
{
- nStatus = UacChangePwd (szFileName, &oldPassword, &newPassword, pkcs5, hwndDlg);
+ nStatus = UacChangePwd (szFileName, &oldPassword, &newPassword, pkcs5, GetWipePassCount(headerWiperMode), hwndDlg);
}
}
err:
burn (&oldPassword, sizeof (oldPassword));
burn (&newPassword, sizeof (newPassword));
NormalCursor ();
if (nStatus == 0)
{
// Attempt to wipe passwords stored in the input field buffers
char tmp[MAX_PASSWORD+1];
memset (tmp, 'X', MAX_PASSWORD);
tmp[MAX_PASSWORD] = 0;
SetWindowText (GetDlgItem (hwndDlg, IDC_PASSWORD), tmp);
SetWindowText (GetDlgItem (hwndDlg, IDC_OLD_PASSWORD), tmp);
SetWindowText (GetDlgItem (hwndDlg, IDC_VERIFY), tmp);
KeyFileRemoveAll (&newKeyFilesParam.FirstKeyFile);
diff --git a/src/Mount/Mount.rc b/src/Mount/Mount.rc
index 05dc0f23..fcae0c36 100644
--- a/src/Mount/Mount.rc
+++ b/src/Mount/Mount.rc
@@ -84,64 +84,66 @@ BEGIN
PUSHBUTTON "Cancel",IDCANCEL,281,262,50,14
GROUPBOX "Windows",IDT_WINDOWS_RELATED_SETTING,4,160,328,52
GROUPBOX "Default Mount Options",IDT_DEFAULT_MOUNT_OPTIONS,4,3,328,26
GROUPBOX "VeraCrypt Background Task",IDT_TASKBAR_ICON,4,33,328,26
GROUPBOX "Auto-Dismount",IDT_AUTO_DISMOUNT,4,94,328,62
LTEXT "minutes",IDT_MINUTES,289,129,39,10
LTEXT "Dismount all when:",IDT_AUTO_DISMOUNT_ON,9,110,71,17
GROUPBOX "Password Cache",IDT_PW_CACHE_OPTIONS,4,216,328,39
GROUPBOX "Actions to perform upon logon to Windows",IDT_LOGON,4,63,328,28
END
IDD_VOLUME_PROPERTIES DIALOGEX 60, 30, 284, 186
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "VeraCrypt Volume Properties"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,114,166,55,14
CONTROL "",IDC_VOLUME_PROPERTIES_LIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,6,269,154
END
-IDD_PASSWORDCHANGE_DLG DIALOGEX 0, 0, 316, 162
+IDD_PASSWORDCHANGE_DLG DIALOGEX 0, 0, 316, 183
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Change Password or Keyfiles"
CLASS "CustomDlg"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
EDITTEXT IDC_OLD_PASSWORD,89,14,147,13,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "Use keyfiles",IDC_ENABLE_KEYFILES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,89,34,86,10
PUSHBUTTON "Keyfiles...",IDC_KEYFILES,177,32,59,14
CONTROL "Display password",IDC_SHOW_PASSWORD_CHPWD_ORI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,89,46,138,10,WS_EX_TRANSPARENT
EDITTEXT IDC_PASSWORD,89,74,147,13,ES_PASSWORD | ES_AUTOHSCROLL
EDITTEXT IDC_VERIFY,89,90,147,13,ES_PASSWORD | ES_AUTOHSCROLL
CONTROL "Use keyfiles",IDC_ENABLE_NEW_KEYFILES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,89,109,86,11
PUSHBUTTON "Keyfiles...",IDC_NEW_KEYFILES,177,107,59,14
CONTROL "Display password",IDC_SHOW_PASSWORD_CHPWD_NEW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,89,121,139,11,WS_EX_TRANSPARENT
COMBOBOX IDC_PKCS5_PRF_ID,89,136,91,90,CBS_DROPDOWNLIST | WS_TABSTOP
DEFPUSHBUTTON "OK",IDOK,251,7,59,14
PUSHBUTTON "Cancel",IDCANCEL,251,24,59,14
RTEXT "Password:",IDT_PASSWORD,12,16,72,8
RTEXT "Password:",IDT_NEW_PASSWORD,8,77,76,8
RTEXT "Confirm Password:",IDT_CONFIRM_PASSWORD,9,93,75,16
RTEXT "PKCS-5 PRF:",IDT_PKCS5_PRF,9,137,74,10,SS_CENTERIMAGE
GROUPBOX "Current",IDT_CURRENT,6,3,238,58
- GROUPBOX "New",IDT_NEW,6,63,238,93
+ GROUPBOX "New",IDT_NEW,6,63,238,113
+ COMBOBOX IDC_WIPE_MODE,89,155,125,90,CBS_DROPDOWNLIST | WS_TABSTOP
+ RTEXT "Wipe mode:",IDT_WIPE_MODE,9,157,74,8,0,WS_EX_RIGHT
END
IDD_MOUNT_DLG DIALOGEX 0, 0, 375, 271
STYLE DS_SETFONT | DS_SETFOREGROUND | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "VeraCrypt"
MENU IDR_MENU
CLASS "CustomDlg"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
CONTROL "",IDC_DRIVELIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,8,5,360,135
PUSHBUTTON "&Create Volume",IDC_CREATE_VOLUME,16,159,84,14
PUSHBUTTON "&Volume Properties...",IDC_VOLUME_PROPERTIES,146,159,84,14
PUSHBUTTON "&Wipe Cache",IDC_WIPE_CACHE,276,159,84,14
COMBOBOX IDC_VOLUME,56,192,212,74,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
CONTROL "&Never save history",IDC_NO_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,56,207,122,10
PUSHBUTTON "Volume &Tools...",IDC_VOLUME_TOOLS,184,211,84,14
PUSHBUTTON "Select &File...",IDC_SELECT_FILE,276,192,84,14
PUSHBUTTON "Select D&evice...",IDC_SELECT_DEVICE,276,211,84,14
DEFPUSHBUTTON "OK",IDOK,8,243,84,18,WS_GROUP
PUSHBUTTON "&Auto-Mount Devices",IDC_MOUNTALL,100,243,84,18
@@ -334,41 +336,41 @@ BEGIN
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 329
TOPMARGIN, 7
BOTTOMMARGIN, 280
END
IDD_VOLUME_PROPERTIES, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 277
TOPMARGIN, 7
BOTTOMMARGIN, 179
END
IDD_PASSWORDCHANGE_DLG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 309
TOPMARGIN, 7
- BOTTOMMARGIN, 155
+ BOTTOMMARGIN, 176
END
IDD_MOUNT_DLG, DIALOG
BEGIN
RIGHTMARGIN, 369
BOTTOMMARGIN, 269
END
IDD_PASSWORD_DLG, DIALOG
BEGIN
BOTTOMMARGIN, 63
END
IDD_TRAVELER_DLG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 293
TOPMARGIN, 7
BOTTOMMARGIN, 262
END
@@ -576,41 +578,41 @@ BEGIN
MENUITEM "Language...", IDM_LANGUAGE
MENUITEM "Hot Keys...", IDM_HOTKEY_SETTINGS
MENUITEM SEPARATOR
MENUITEM "System Encryption...", IDM_SYSENC_SETTINGS
MENUITEM "System Favorite Volumes...", IDM_SYS_FAVORITES_SETTINGS
MENUITEM SEPARATOR
MENUITEM "Performance...", IDM_PERFORMANCE_SETTINGS
MENUITEM SEPARATOR
MENUITEM "Default Keyfiles...", IDM_DEFAULT_KEYFILES
MENUITEM "Security Tokens...", IDM_TOKEN_PREFERENCES
MENUITEM SEPARATOR
MENUITEM "Preferences...", IDM_PREFERENCES
END
POPUP "Hel&p"
BEGIN
MENUITEM "User's Guide", IDM_HELP
MENUITEM "Online Help", IDM_ONLINE_HELP
MENUITEM "Beginner's Tutorial", IDM_ONLINE_TUTORIAL
MENUITEM "Frequently Asked Questions", IDM_FAQ
MENUITEM SEPARATOR
- MENUITEM "VeraCrypt Website", IDM_WEBSITE
+ MENUITEM "VeraCrypt Website", IDM_WEBSITE
MENUITEM "Downloads", IDM_TC_DOWNLOADS
MENUITEM "News", IDM_NEWS
MENUITEM "Version History", IDM_VERSION_HISTORY
MENUITEM SEPARATOR
MENUITEM "Analyze a System Crash...", IDM_ANALYZE_SYSTEM_CRASH
MENUITEM SEPARATOR
MENUITEM "Contact", IDM_CONTACT
MENUITEM "Legal Notices", IDM_LICENSE
MENUITEM "About", IDM_ABOUT
END
MENUITEM "&Homepage ", IDM_HOMEPAGE
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
diff --git a/src/Mount/Mount.vcproj b/src/Mount/Mount.vcproj
index f2c3f63f..cb0be04e 100644
--- a/src/Mount/Mount.vcproj
+++ b/src/Mount/Mount.vcproj
@@ -357,40 +357,44 @@
RelativePath="..\Common\Random.c"
>
</File>
<File
RelativePath="..\Common\Registry.c"
>
</File>
<File
RelativePath="..\Common\SecurityToken.cpp"
>
</File>
<File
RelativePath="..\Common\Tests.c"
>
</File>
<File
RelativePath="..\Common\Volumes.c"
>
</File>
<File
+ RelativePath="..\Common\Wipe.c"
+ >
+ </File>
+ <File
RelativePath="..\Common\Wipe.h"
>
</File>
<File
RelativePath="..\Common\Xml.c"
>
</File>
<File
RelativePath="..\Common\Xts.c"
>
</File>
</Filter>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\Common\Apidrvr.h"
diff --git a/src/Mount/Resource.h b/src/Mount/Resource.h
index c410d36b..7ed08e06 100644
--- a/src/Mount/Resource.h
+++ b/src/Mount/Resource.h
@@ -89,45 +89,47 @@
#define IDT_TASKBAR_ICON 1066
#define IDT_AUTO_DISMOUNT 1067
#define IDC_PREF_FORCE_AUTO_DISMOUNT 1068
#define IDC_PREF_DISMOUNT_INACTIVE_TIME 1069
#define IDT_MINUTES 1070
#define IDC_PREF_DISMOUNT_SCREENSAVER 1071
#define IDC_PREF_DISMOUNT_POWERSAVING 1072
#define IDT_AUTO_DISMOUNT_ON 1073
#define IDC_PREF_WIPE_CACHE_ON_AUTODISMOUNT 1074
#define IDC_CLOSE_BKG_TASK_WHEN_NOVOL 1075
#define IDC_MORE_INFO_ON_HW_ACCELERATION 1076
#define IDT_LOGON 1077
#define IDC_MORE_INFO_ON_THREAD_BASED_PARALLELIZATION 1078
#define IDC_PREF_LOGON_START 1079
#define IDC_PREF_LOGON_MOUNT_DEVICES 1080
#define IDC_SHOW_PASSWORD_CHPWD_NEW 1081
#define IDC_HK_DISMOUNT_BALLOON_TOOLTIP 1082
#define IDC_SHOW_PASSWORD_CHPWD_ORI 1083
#define IDC_HK_DISMOUNT_PLAY_SOUND 1084
#define IDC_HOTKEY_ASSIGN 1085
+#define IDC_WIPE_MODE 1085
#define IDC_HOTKEY_REMOVE 1086
#define IDC_HOTKEY_KEY 1087
#define IDT_HOTKEY_KEY 1088
#define IDC_HOTKEY_LIST 1089
#define IDC_RESET_HOTKEYS 1090
+#define IDT_WIPE_MODE 1090
#define IDT_DISMOUNT_ACTION 1091
#define IDT_ASSIGN_HOTKEY 1092
#define IDC_HK_MOD_SHIFT 1093
#define IDC_HK_MOD_CTRL 1094
#define IDC_HK_MOD_ALT 1095
#define IDC_HK_MOD_WIN 1096
#define IDC_SHOW_PASSWORD 1097
#define IDC_LOGO 1098
#define IDT_PKCS11_LIB_PATH 1099
#define IDC_PKCS11_MODULE 1100
#define IDC_SELECT_PKCS11_MODULE 1101
#define IDC_AUTO_DETECT_PKCS11_MODULE 1102
#define IDC_CLOSE_TOKEN_SESSION_AFTER_MOUNT 1103
#define IDT_SECURITY_OPTIONS 1104
#define IDC_DISABLE_BOOT_LOADER_OUTPUT 1105
#define IDC_ALLOW_ESC_PBA_BYPASS 1106
#define IDC_CUSTOM_BOOT_LOADER_MESSAGE 1107
#define IDC_BOOT_LOADER_CACHE_PASSWORD 1108
#define IDC_MORE_SETTINGS 1109
#define IDT_CUSTOM_BOOT_LOADER_MESSAGE 1110