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/Mount.c | |
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/Mount.c')
-rw-r--r-- | src/Mount/Mount.c | 32 |
1 files changed, 31 insertions, 1 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 | ||