diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2016-12-30 12:17:09 +0100 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2016-12-30 23:56:28 +0100 |
commit | cdbe54e60542231f832d59389381bf9b56b710be (patch) | |
tree | cc71665cba8e86003f65c9385a166e787b8966aa /src/Mount | |
parent | d116eba1607ca82d90874018037a19088a4bb26d (diff) | |
download | VeraCrypt-cdbe54e60542231f832d59389381bf9b56b710be.tar.gz VeraCrypt-cdbe54e60542231f832d59389381bf9b56b710be.zip |
Windows: Implement Secure Desktop for password entry. Add option and command line switch to activate it.
Diffstat (limited to 'src/Mount')
-rw-r--r-- | src/Mount/Mount.c | 32 | ||||
-rw-r--r-- | src/Mount/Mount.rc | 26 | ||||
-rw-r--r-- | src/Mount/Resource.h | 3 |
3 files changed, 47 insertions, 14 deletions
diff --git a/src/Mount/Mount.c b/src/Mount/Mount.c index 12ee7985..28a43acf 100644 --- a/src/Mount/Mount.c +++ b/src/Mount/Mount.c | |||
@@ -721,6 +721,8 @@ void LoadSettingsAndCheckModified (HWND hwndDlg, BOOL bOnlyCheckModified, BOOL* | |||
721 | 721 | ||
722 | ConfigReadCompareInt ("HideWaitingDialog", FALSE, &bHideWaitingDialog, bOnlyCheckModified, pbSettingsModified); | 722 | ConfigReadCompareInt ("HideWaitingDialog", FALSE, &bHideWaitingDialog, bOnlyCheckModified, pbSettingsModified); |
723 | 723 | ||
724 | ConfigReadCompareInt ("UseSecureDesktop", FALSE, &bUseSecureDesktop, bOnlyCheckModified, pbSettingsModified); | ||
725 | |||
724 | ConfigReadCompareInt ("MountVolumesRemovable", FALSE, &defaultMountOptions.Removable, bOnlyCheckModified, pbSettingsModified); | 726 | ConfigReadCompareInt ("MountVolumesRemovable", FALSE, &defaultMountOptions.Removable, bOnlyCheckModified, pbSettingsModified); |
725 | ConfigReadCompareInt ("MountVolumesReadOnly", FALSE, &defaultMountOptions.ReadOnly, bOnlyCheckModified, pbSettingsModified); | 727 | ConfigReadCompareInt ("MountVolumesReadOnly", FALSE, &defaultMountOptions.ReadOnly, bOnlyCheckModified, pbSettingsModified); |
726 | 728 | ||
@@ -878,6 +880,7 @@ void SaveSettings (HWND hwndDlg) | |||
878 | ConfigWriteInt ("PreserveTimestamps", defaultMountOptions.PreserveTimestamp); | 880 | ConfigWriteInt ("PreserveTimestamps", defaultMountOptions.PreserveTimestamp); |
879 | ConfigWriteInt ("ShowDisconnectedNetworkDrives",bShowDisconnectedNetworkDrives); | 881 | ConfigWriteInt ("ShowDisconnectedNetworkDrives",bShowDisconnectedNetworkDrives); |
880 | ConfigWriteInt ("HideWaitingDialog", bHideWaitingDialog); | 882 | ConfigWriteInt ("HideWaitingDialog", bHideWaitingDialog); |
883 | ConfigWriteInt ("UseSecureDesktop", bUseSecureDesktop); | ||
881 | 884 | ||
882 | ConfigWriteInt ("EnableBackgroundTask", bEnableBkgTask); | 885 | ConfigWriteInt ("EnableBackgroundTask", bEnableBkgTask); |
883 | ConfigWriteInt ("CloseBackgroundTaskOnNoVolumes", bCloseBkgTaskWhenNoVolumes); | 886 | ConfigWriteInt ("CloseBackgroundTaskOnNoVolumes", bCloseBkgTaskWhenNoVolumes); |
@@ -3132,6 +3135,9 @@ BOOL CALLBACK PreferencesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM | |||
3132 | SendMessage (GetDlgItem (hwndDlg, IDC_HIDE_WAITING_DIALOG), BM_SETCHECK, | 3135 | SendMessage (GetDlgItem (hwndDlg, IDC_HIDE_WAITING_DIALOG), BM_SETCHECK, |
3133 | bHideWaitingDialog ? BST_CHECKED:BST_UNCHECKED, 0); | 3136 | bHideWaitingDialog ? BST_CHECKED:BST_UNCHECKED, 0); |
3134 | 3137 | ||
3138 | SendMessage (GetDlgItem (hwndDlg, IDC_SECURE_DESKTOP_PASSWORD_ENTRY), BM_SETCHECK, | ||
3139 | bUseSecureDesktop ? BST_CHECKED:BST_UNCHECKED, 0); | ||
3140 | |||
3135 | SendMessage (GetDlgItem (hwndDlg, IDC_PREF_TEMP_CACHE_ON_MULTIPLE_MOUNT), BM_SETCHECK, | 3141 | SendMessage (GetDlgItem (hwndDlg, IDC_PREF_TEMP_CACHE_ON_MULTIPLE_MOUNT), BM_SETCHECK, |
3136 | bCacheDuringMultipleMount ? BST_CHECKED:BST_UNCHECKED, 0); | 3142 | bCacheDuringMultipleMount ? BST_CHECKED:BST_UNCHECKED, 0); |
3137 | 3143 | ||
@@ -3247,6 +3253,7 @@ BOOL CALLBACK PreferencesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM | |||
3247 | bPreserveTimestamp = defaultMountOptions.PreserveTimestamp = IsButtonChecked (GetDlgItem (hwndDlg, IDC_PRESERVE_TIMESTAMPS)); | 3253 | bPreserveTimestamp = defaultMountOptions.PreserveTimestamp = IsButtonChecked (GetDlgItem (hwndDlg, IDC_PRESERVE_TIMESTAMPS)); |
3248 | bShowDisconnectedNetworkDrives = IsButtonChecked (GetDlgItem (hwndDlg, IDC_SHOW_DISCONNECTED_NETWORK_DRIVES)); | 3254 | bShowDisconnectedNetworkDrives = IsButtonChecked (GetDlgItem (hwndDlg, IDC_SHOW_DISCONNECTED_NETWORK_DRIVES)); |
3249 | bHideWaitingDialog = IsButtonChecked (GetDlgItem (hwndDlg, IDC_HIDE_WAITING_DIALOG)); | 3255 | bHideWaitingDialog = IsButtonChecked (GetDlgItem (hwndDlg, IDC_HIDE_WAITING_DIALOG)); |
3256 | bUseSecureDesktop = IsButtonChecked (GetDlgItem (hwndDlg, IDC_SECURE_DESKTOP_PASSWORD_ENTRY)); | ||
3250 | bCacheDuringMultipleMount = IsButtonChecked (GetDlgItem (hwndDlg, IDC_PREF_TEMP_CACHE_ON_MULTIPLE_MOUNT)); | 3257 | bCacheDuringMultipleMount = IsButtonChecked (GetDlgItem (hwndDlg, IDC_PREF_TEMP_CACHE_ON_MULTIPLE_MOUNT)); |
3251 | bWipeCacheOnExit = IsButtonChecked (GetDlgItem (hwndDlg, IDC_PREF_WIPE_CACHE_ON_EXIT)); | 3258 | bWipeCacheOnExit = IsButtonChecked (GetDlgItem (hwndDlg, IDC_PREF_WIPE_CACHE_ON_EXIT)); |
3252 | bWipeCacheOnAutoDismount = IsButtonChecked (GetDlgItem (hwndDlg, IDC_PREF_WIPE_CACHE_ON_AUTODISMOUNT)); | 3259 | bWipeCacheOnAutoDismount = IsButtonChecked (GetDlgItem (hwndDlg, IDC_PREF_WIPE_CACHE_ON_AUTODISMOUNT)); |
@@ -4537,7 +4544,7 @@ static int AskVolumePassword (HWND hwndDlg, Password *password, int *pkcs5, int | |||
4537 | dlgParam.pim = pim; | 4544 | dlgParam.pim = pim; |
4538 | dlgParam.truecryptMode = truecryptMode; | 4545 | dlgParam.truecryptMode = truecryptMode; |
4539 | 4546 | ||
4540 | result = DialogBoxParamW (hInst, | 4547 | result = SecureDesktopDialogBoxParam (hInst, |
4541 | MAKEINTRESOURCEW (IDD_PASSWORD_DLG), hwndDlg, | 4548 | MAKEINTRESOURCEW (IDD_PASSWORD_DLG), hwndDlg, |
4542 | (DLGPROC) PasswordDlgProc, (LPARAM) &dlgParam); | 4549 | (DLGPROC) PasswordDlgProc, (LPARAM) &dlgParam); |
4543 | 4550 | ||
@@ -6440,6 +6447,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa | |||
6440 | bPreserveTimestamp = defaultMountOptions.PreserveTimestamp = TRUE; | 6447 | bPreserveTimestamp = defaultMountOptions.PreserveTimestamp = TRUE; |
6441 | bShowDisconnectedNetworkDrives = FALSE; | 6448 | bShowDisconnectedNetworkDrives = FALSE; |
6442 | bHideWaitingDialog = FALSE; | 6449 | bHideWaitingDialog = FALSE; |
6450 | bUseSecureDesktop = FALSE; | ||
6443 | 6451 | ||
6444 | ResetWrongPwdRetryCount (); | 6452 | ResetWrongPwdRetryCount (); |
6445 | 6453 | ||
@@ -8449,6 +8457,7 @@ void ExtractCommandLine (HWND hwndDlg, wchar_t *lpszCommandLine) | |||
8449 | OptionPim, | 8457 | OptionPim, |
8450 | OptionTryEmptyPassword, | 8458 | OptionTryEmptyPassword, |
8451 | OptionNoWaitDlg, | 8459 | OptionNoWaitDlg, |
8460 | OptionSecureDesktop, | ||
8452 | }; | 8461 | }; |
8453 | 8462 | ||
8454 | argument args[]= | 8463 | argument args[]= |
@@ -8476,6 +8485,7 @@ void ExtractCommandLine (HWND hwndDlg, wchar_t *lpszCommandLine) | |||
8476 | { CommandWipeCache, L"/wipecache", L"/w", FALSE }, | 8485 | { CommandWipeCache, L"/wipecache", L"/w", FALSE }, |
8477 | { OptionTryEmptyPassword, L"/tryemptypass", NULL, FALSE }, | 8486 | { OptionTryEmptyPassword, L"/tryemptypass", NULL, FALSE }, |
8478 | { OptionNoWaitDlg, L"/nowaitdlg", NULL, FALSE }, | 8487 | { OptionNoWaitDlg, L"/nowaitdlg", NULL, FALSE }, |
8488 | { OptionSecureDesktop, L"/secureDesktop", NULL, FALSE }, | ||
8479 | }; | 8489 | }; |
8480 | 8490 | ||
8481 | argumentspec as; | 8491 | argumentspec as; |
@@ -8547,6 +8557,25 @@ void ExtractCommandLine (HWND hwndDlg, wchar_t *lpszCommandLine) | |||
8547 | } | 8557 | } |
8548 | break; | 8558 | break; |
8549 | 8559 | ||
8560 | case OptionSecureDesktop: | ||
8561 | { | ||
8562 | wchar_t szTmp[16] = {0}; | ||
8563 | bCmdUseSecureDesktop = TRUE; | ||
8564 | bCmdUseSecureDesktopValid = TRUE; | ||
8565 | |||
8566 | if (HAS_ARGUMENT == GetArgumentValue (lpszCommandLineArgs, &i, nNoCommandLineArgs, | ||
8567 | szTmp, ARRAYSIZE (szTmp))) | ||
8568 | { | ||
8569 | if (!_wcsicmp(szTmp,L"n") || !_wcsicmp(szTmp,L"no")) | ||
8570 | bCmdUseSecureDesktop = FALSE; | ||
8571 | else if (!_wcsicmp(szTmp,L"y") || !_wcsicmp(szTmp,L"yes")) | ||
8572 | bCmdUseSecureDesktop = TRUE; | ||
8573 | else | ||
8574 | AbortProcess ("COMMAND_LINE_ERROR"); | ||
8575 | } | ||
8576 | } | ||
8577 | break; | ||
8578 | |||
8550 | case OptionCache: | 8579 | case OptionCache: |
8551 | { | 8580 | { |
8552 | wchar_t szTmp[16] = {0}; | 8581 | wchar_t szTmp[16] = {0}; |
@@ -8972,6 +9001,7 @@ static BOOL StartSystemFavoritesService () | |||
8972 | DeviceChangeBroadcastDisabled = TRUE; | 9001 | DeviceChangeBroadcastDisabled = TRUE; |
8973 | bShowDisconnectedNetworkDrives = TRUE; | 9002 | bShowDisconnectedNetworkDrives = TRUE; |
8974 | bHideWaitingDialog = TRUE; | 9003 | bHideWaitingDialog = TRUE; |
9004 | bUseSecureDesktop = FALSE; | ||
8975 | 9005 | ||
8976 | InitOSVersionInfo(); | 9006 | InitOSVersionInfo(); |
8977 | 9007 | ||
diff --git a/src/Mount/Mount.rc b/src/Mount/Mount.rc index 03496871..2f96bff7 100644 --- a/src/Mount/Mount.rc +++ b/src/Mount/Mount.rc | |||
@@ -41,7 +41,7 @@ IDR_MOUNT_TLB TYPELIB "Mount.tlb" | |||
41 | // Dialog | 41 | // Dialog |
42 | // | 42 | // |
43 | 43 | ||
44 | IDD_PREFERENCES_DLG DIALOGEX 0, 0, 336, 333 | 44 | IDD_PREFERENCES_DLG DIALOGEX 0, 0, 336, 340 |
45 | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | 45 | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU |
46 | CAPTION "VeraCrypt - Preferences" | 46 | CAPTION "VeraCrypt - Preferences" |
47 | FONT 8, "MS Shell Dlg", 400, 0, 0x1 | 47 | FONT 8, "MS Shell Dlg", 400, 0, 0x1 |
@@ -78,28 +78,30 @@ BEGIN | |||
78 | CONTROL "Make disconnected network drives available for mounting",IDC_SHOW_DISCONNECTED_NETWORK_DRIVES, | 78 | CONTROL "Make disconnected network drives available for mounting",IDC_SHOW_DISCONNECTED_NETWORK_DRIVES, |
79 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,208,316,10 | 79 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,208,316,10 |
80 | CONTROL "Cache passwords in driver memory",IDC_PREF_CACHE_PASSWORDS, | 80 | CONTROL "Cache passwords in driver memory",IDC_PREF_CACHE_PASSWORDS, |
81 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,254,146,11 | 81 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,263,146,11 |
82 | CONTROL "Wipe cached passwords on exit",IDC_PREF_WIPE_CACHE_ON_EXIT, | 82 | CONTROL "Wipe cached passwords on exit",IDC_PREF_WIPE_CACHE_ON_EXIT, |
83 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,254,165,11 | 83 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,263,165,11 |
84 | CONTROL "Temporarily cache password during ""Mount Favorite Volumes"" operations",IDC_PREF_TEMP_CACHE_ON_MULTIPLE_MOUNT, | 84 | CONTROL "Temporarily cache password during ""Mount Favorite Volumes"" operations",IDC_PREF_TEMP_CACHE_ON_MULTIPLE_MOUNT, |
85 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,268,294,11 | 85 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,277,294,11 |
86 | CONTROL "Wipe cached passwords on auto-dismount",IDC_PREF_WIPE_CACHE_ON_AUTODISMOUNT, | 86 | CONTROL "Wipe cached passwords on auto-dismount",IDC_PREF_WIPE_CACHE_ON_AUTODISMOUNT, |
87 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,282,296,11 | 87 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,291,296,11 |
88 | CONTROL "Include PIM when caching a password",IDC_PREF_CACHE_PIM, | 88 | CONTROL "Include PIM when caching a password",IDC_PREF_CACHE_PIM, |
89 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,296,296,10 | 89 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,305,296,10 |
90 | PUSHBUTTON "More Settings...",IDC_MORE_SETTINGS,5,317,85,14 | 90 | PUSHBUTTON "More Settings...",IDC_MORE_SETTINGS,5,324,85,14 |
91 | DEFPUSHBUTTON "OK",IDOK,225,317,50,14 | 91 | DEFPUSHBUTTON "OK",IDOK,225,324,50,14 |
92 | PUSHBUTTON "Cancel",IDCANCEL,281,317,50,14 | 92 | PUSHBUTTON "Cancel",IDCANCEL,281,324,50,14 |
93 | GROUPBOX "Windows",IDT_WINDOWS_RELATED_SETTING,4,160,328,76 | 93 | GROUPBOX "Windows",IDT_WINDOWS_RELATED_SETTING,4,160,328,87 |
94 | GROUPBOX "Default Mount Options",IDT_DEFAULT_MOUNT_OPTIONS,4,3,328,26 | 94 | GROUPBOX "Default Mount Options",IDT_DEFAULT_MOUNT_OPTIONS,4,3,328,26 |
95 | GROUPBOX "VeraCrypt Background Task",IDT_TASKBAR_ICON,4,33,328,26 | 95 | GROUPBOX "VeraCrypt Background Task",IDT_TASKBAR_ICON,4,33,328,26 |
96 | GROUPBOX "Auto-Dismount",IDT_AUTO_DISMOUNT,4,94,328,62 | 96 | GROUPBOX "Auto-Dismount",IDT_AUTO_DISMOUNT,4,94,328,62 |
97 | LTEXT "minutes",IDT_MINUTES,289,129,39,10 | 97 | LTEXT "minutes",IDT_MINUTES,289,129,39,10 |
98 | LTEXT "Dismount all when:",IDT_AUTO_DISMOUNT_ON,9,104,71,20 | 98 | LTEXT "Dismount all when:",IDT_AUTO_DISMOUNT_ON,9,104,71,20 |
99 | GROUPBOX "Password Cache",IDT_PW_CACHE_OPTIONS,4,243,328,68 | 99 | GROUPBOX "Password Cache",IDT_PW_CACHE_OPTIONS,4,252,328,68 |
100 | GROUPBOX "Actions to perform upon logon to Windows",IDT_LOGON,4,63,328,28 | 100 | GROUPBOX "Actions to perform upon logon to Windows",IDT_LOGON,4,63,328,28 |
101 | CONTROL "Don't show wait message dialog when performing operations",IDC_HIDE_WAITING_DIALOG, | 101 | CONTROL "Don't show wait message dialog when performing operations",IDC_HIDE_WAITING_DIALOG, |
102 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,220,316,10 | 102 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,220,316,10 |
103 | CONTROL "Use Secure Desktop for password entry",IDC_SECURE_DESKTOP_PASSWORD_ENTRY, | ||
104 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,232,316,10 | ||
103 | END | 105 | END |
104 | 106 | ||
105 | IDD_VOLUME_PROPERTIES DIALOGEX 60, 30, 284, 224 | 107 | IDD_VOLUME_PROPERTIES DIALOGEX 60, 30, 284, 224 |
@@ -421,7 +423,7 @@ BEGIN | |||
421 | LEFTMARGIN, 7 | 423 | LEFTMARGIN, 7 |
422 | RIGHTMARGIN, 329 | 424 | RIGHTMARGIN, 329 |
423 | TOPMARGIN, 7 | 425 | TOPMARGIN, 7 |
424 | BOTTOMMARGIN, 331 | 426 | BOTTOMMARGIN, 338 |
425 | END | 427 | END |
426 | 428 | ||
427 | IDD_VOLUME_PROPERTIES, DIALOG | 429 | IDD_VOLUME_PROPERTIES, DIALOG |
diff --git a/src/Mount/Resource.h b/src/Mount/Resource.h index 12860915..0c863386 100644 --- a/src/Mount/Resource.h +++ b/src/Mount/Resource.h | |||
@@ -183,6 +183,7 @@ | |||
183 | #define IDC_DISABLE_BOOT_LOADER_PIM_PROMPT 1160 | 183 | #define IDC_DISABLE_BOOT_LOADER_PIM_PROMPT 1160 |
184 | #define IDC_HIDE_WAITING_DIALOG 1161 | 184 | #define IDC_HIDE_WAITING_DIALOG 1161 |
185 | #define IDC_DISABLE_BOOT_LOADER_HASH_PROMPT 1162 | 185 | #define IDC_DISABLE_BOOT_LOADER_HASH_PROMPT 1162 |
186 | #define IDC_SECURE_DESKTOP_PASSWORD_ENTRY 1163 | ||
186 | #define IDM_HELP 40001 | 187 | #define IDM_HELP 40001 |
187 | #define IDM_ABOUT 40002 | 188 | #define IDM_ABOUT 40002 |
188 | #define IDM_UNMOUNT_VOLUME 40003 | 189 | #define IDM_UNMOUNT_VOLUME 40003 |
@@ -259,7 +260,7 @@ | |||
259 | #define _APS_NO_MFC 1 | 260 | #define _APS_NO_MFC 1 |
260 | #define _APS_NEXT_RESOURCE_VALUE 120 | 261 | #define _APS_NEXT_RESOURCE_VALUE 120 |
261 | #define _APS_NEXT_COMMAND_VALUE 40069 | 262 | #define _APS_NEXT_COMMAND_VALUE 40069 |
262 | #define _APS_NEXT_CONTROL_VALUE 1163 | 263 | #define _APS_NEXT_CONTROL_VALUE 1164 |
263 | #define _APS_NEXT_SYMED_VALUE 101 | 264 | #define _APS_NEXT_SYMED_VALUE 101 |
264 | #endif | 265 | #endif |
265 | #endif | 266 | #endif |