From 8ebf5ac605d57eab80b600a7827d2ba48668d887 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Tue, 26 May 2015 01:36:20 +0200 Subject: Windows: first implementation of dynamic mode --- src/Format/Format.rc | 176 ++++++++++++++++++++++++++------------------------ src/Format/InPlace.c | 14 ++-- src/Format/InPlace.h | 2 +- src/Format/Resource.h | 10 ++- src/Format/Tcformat.c | 57 ++++++++++++---- src/Format/Tcformat.h | 2 +- 6 files changed, 153 insertions(+), 108 deletions(-) (limited to 'src/Format') diff --git a/src/Format/Format.rc b/src/Format/Format.rc index 51564a64..c4e50fdd 100644 --- a/src/Format/Format.rc +++ b/src/Format/Format.rc @@ -79,23 +79,23 @@ IDR_FORMAT_TLB TYPELIB "Format.tlb" // Dialog // -IDD_VOL_CREATION_WIZARD_DLG DIALOGEX 0, 0, 400, 209 +IDD_VOL_CREATION_WIZARD_DLG DIALOGEX 0, 0, 400, 229 STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "VeraCrypt Volume Creation Wizard" CLASS "VeraCryptCustomDlg" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - PUSHBUTTON "&Help",IDHELP,176,189,50,14 - PUSHBUTTON "",IDC_PREV,235,189,50,14 - DEFPUSHBUTTON "",IDC_NEXT,285,189,50,14 - PUSHBUTTON "Cancel",IDCANCEL,343,189,50,14 + PUSHBUTTON "&Help",IDHELP,176,209,50,14 + PUSHBUTTON "",IDC_PREV,235,209,50,14 + DEFPUSHBUTTON "",IDC_NEXT,285,209,50,14 + PUSHBUTTON "Cancel",IDCANCEL,343,209,50,14 LTEXT "",IDC_BOX_TITLE,160,8,233,17 - GROUPBOX "",IDC_STATIC,4,0,392,183 + GROUPBOX "",IDC_STATIC,4,0,392,203 CONTROL 116,IDC_BITMAP_WIZARD,"Static",SS_BITMAP | SS_SUNKEN,10,9,137,169 - LTEXT "",IDC_POS_BOX,160,24,231,152 + LTEXT "",IDC_POS_BOX,160,24,231,172 END -IDD_CIPHER_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_CIPHER_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -110,21 +110,24 @@ BEGIN LTEXT "Information on hash algorithms",IDC_LINK_HASH_INFO,97,124,115,8,SS_NOTIFY END -IDD_PASSWORD_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_PASSWORD_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN EDITTEXT IDC_PASSWORD,53,3,163,14,ES_PASSWORD | ES_AUTOHSCROLL EDITTEXT IDC_VERIFY,53,19,163,14,ES_PASSWORD | ES_AUTOHSCROLL - CONTROL "&Display password",IDC_SHOW_PASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,45,95,11,WS_EX_TRANSPARENT - CONTROL "U&se keyfiles",IDC_KEYFILES_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,35,95,10 - PUSHBUTTON "&Keyfiles...",IDC_KEY_FILES,152,36,64,14,WS_DISABLED + EDITTEXT IDC_PIN,53,35,42,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER + CONTROL "&Display password",IDC_SHOW_PASSWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,65,95,11,WS_EX_TRANSPARENT + CONTROL "U&se keyfiles",IDC_KEYFILES_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,53,55,95,10 + PUSHBUTTON "&Keyfiles...",IDC_KEY_FILES,152,56,64,14,WS_DISABLED RTEXT "Password:",IDT_PASSWORD,1,6,50,8 RTEXT "&Confirm:",IDT_CONFIRM,1,23,50,8 - LTEXT "",IDC_BOX_HELP,0,59,225,89 + LTEXT "",IDC_BOX_HELP,0,79,225,89 + RTEXT "Volume Pin:",IDT_PIN,1,38,50,8 + LTEXT "(Empty or 0 for default iterations)",IDC_PIN_HELP,97,38,126,8 END -IDD_SIZE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SIZE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -136,17 +139,17 @@ BEGIN LTEXT "",IDC_SPACE_LEFT,0,44,214,21 END -IDD_VOLUME_LOCATION_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_VOLUME_LOCATION_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN COMBOBOX IDC_COMBO_BOX,0,9,148,80,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP CONTROL "&Never save history",IDC_NO_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,3,28,137,10 PUSHBUTTON "",IDC_SELECT_VOLUME_LOCATION,155,9,62,14 - LTEXT "",IDC_BOX_HELP,0,45,219,104 + LTEXT "",IDC_BOX_HELP,0,45,219,108 END -IDD_FORMAT_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_FORMAT_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -176,7 +179,7 @@ BEGIN CONTROL "",IDC_RANDOM_BYTES,"Static",SS_SIMPLE | WS_GROUP,57,38,155,8,WS_EX_TRANSPARENT END -IDD_INTRO_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_INTRO_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -193,22 +196,22 @@ BEGIN LTEXT "Encrypts the partition/drive where Windows is installed. Anyone who wants to gain access and use the system, read and write files, etc., will need to enter the correct password each time before Windows boots. Optionally, creates a hidden system.",IDT_SYS_DEVICE,16,100,205,33 END -IDD_INFO_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_INFO_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN LTEXT "",IDC_BOX_HELP,0,10,225,137 END -IDD_HIDVOL_HOST_FILL_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_HIDVOL_HOST_FILL_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - LTEXT "",IDC_BOX_HELP,0,6,226,130 - PUSHBUTTON "Open Outer Volume",IDC_OPEN_OUTER_VOLUME,0,136,85,14 + LTEXT "",IDC_BOX_HELP,0,6,226,138 + PUSHBUTTON "Open Outer Volume",IDC_OPEN_OUTER_VOLUME,0,146,85,14 END -IDD_HIDDEN_VOL_WIZARD_MODE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_HIDDEN_VOL_WIZARD_MODE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -218,32 +221,35 @@ BEGIN LTEXT "",IDC_BOX_HELP2,16,89,205,50 END -IDD_PASSWORD_ENTRY_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_PASSWORD_ENTRY_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN EDITTEXT IDC_PASSWORD_DIRECT,50,2,149,14,ES_PASSWORD | ES_AUTOHSCROLL COMBOBOX IDC_PKCS5_PRF_ID,50,17,91,90,CBS_DROPDOWNLIST | WS_TABSTOP - CONTROL "&Display password",IDC_SHOW_PASSWORD_SINGLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,50,31,84,11,WS_EX_TRANSPARENT - CONTROL "U&se keyfiles",IDC_KEYFILES_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,50,42,82,11 - PUSHBUTTON "&Keyfiles...",IDC_KEY_FILES,142,39,64,14 - LTEXT "",IDC_BOX_HELP,0,57,225,94 + EDITTEXT IDC_PIN,50,32,42,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER + CONTROL "&Display password",IDC_SHOW_PASSWORD_SINGLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,50,46,84,11,WS_EX_TRANSPARENT + CONTROL "U&se keyfiles",IDC_KEYFILES_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,50,57,82,11 + PUSHBUTTON "&Keyfiles...",IDC_KEY_FILES,142,54,64,14 + LTEXT "",IDC_BOX_HELP,0,74,225,94 RTEXT "Password:",IDT_PASSWORD,0,6,48,8 - RTEXT "PKCS-5 PRF:",IDT_PKCS5_PRF,0,17,48,8 + RTEXT "PKCS-5 PRF:",IDT_PKCS5_PRF,0,19,48,8 + RTEXT "Volume PIN:",IDT_PIN,0,34,48,8 + LTEXT "(Empty or 0 for default iterations)",IDC_PIN_HELP,96,34,127,8 END -IDD_VOLUME_TYPE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_VOLUME_TYPE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN CONTROL "Standard VeraCrypt volume",IDC_STD_VOL,"Button",BS_AUTORADIOBUTTON,0,7,212,10 CONTROL "Hi&dden VeraCrypt volume ",IDC_HIDDEN_VOL,"Button",BS_AUTORADIOBUTTON,0,53,212,10 - LTEXT "More information about hidden volumes",IDC_HIDDEN_VOL_HELP,16,125,205,10,SS_NOTIFY + LTEXT "More information about hidden volumes",IDC_HIDDEN_VOL_HELP,16,126,205,10,SS_NOTIFY LTEXT "",IDC_BOX_HELP_NORMAL_VOL,16,20,205,25 LTEXT "",IDC_BOX_HELP,16,66,205,57 END -IDD_SYSENC_SPAN_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_SPAN_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -251,19 +257,19 @@ BEGIN "Button",BS_AUTORADIOBUTTON,0,7,212,10 CONTROL "Encrypt the whole drive",IDC_WHOLE_SYS_DRIVE,"Button",BS_AUTORADIOBUTTON,0,53,212,10 LTEXT "Select this option to encrypt the partition where the currently running Windows operating system is installed.",IDT_SYS_PARTITION,16,20,205,32 - LTEXT "",IDT_WHOLE_SYS_DRIVE,16,66,205,79 + LTEXT "",IDT_WHOLE_SYS_DRIVE,16,70,205,95 END -IDD_SYSENC_RESCUE_DISK_CREATION_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_RESCUE_DISK_CREATION_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - EDITTEXT IDC_RESCUE_DISK_ISO_PATH,0,135,163,13,ES_AUTOHSCROLL - PUSHBUTTON "Bro&wse...",IDC_BROWSE,166,134,59,14 - LTEXT "",IDT_RESCUE_DISK_INFO,0,1,225,129 + EDITTEXT IDC_RESCUE_DISK_ISO_PATH,0,152,163,13,ES_AUTOHSCROLL + PUSHBUTTON "Bro&wse...",IDC_BROWSE,166,151,59,14 + LTEXT "",IDT_RESCUE_DISK_INFO,0,1,225,145 END -IDD_SYSENC_COLLECTING_RANDOM_DATA_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_COLLECTING_RANDOM_DATA_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -273,7 +279,7 @@ BEGIN GROUPBOX "Current pool content (partial)",IDT_PARTIAL_POOL_CONTENTS,0,5,222,88 END -IDD_SYSENC_MULTI_BOOT_MODE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_MULTI_BOOT_MODE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -283,7 +289,7 @@ BEGIN LTEXT "Select this option if there are two or more operating systems installed on this computer.\n\nFor example:\n- Windows XP and Windows XP\n- Windows XP and Windows Vista\n- Windows and Mac OS X\n- Windows and Linux\n- Windows, Linux and Mac OS X",IDT_MULTI_BOOT,16,66,205,72 END -IDD_SYSENC_RESCUE_DISK_BURN_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_RESCUE_DISK_BURN_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -291,7 +297,7 @@ BEGIN LTEXT "",IDT_RESCUE_DISK_BURN_INFO,0,4,225,128 END -IDD_SYSENC_WIPE_MODE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_WIPE_MODE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -300,7 +306,7 @@ BEGIN LTEXT "",IDT_WIPE_MODE_INFO,0,19,225,128 END -IDD_INPLACE_ENCRYPTION_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_INPLACE_ENCRYPTION_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -320,7 +326,7 @@ BEGIN GROUPBOX "",IDC_STATIC,0,32,225,41 END -IDD_SYSENC_KEYS_GEN_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_KEYS_GEN_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -334,7 +340,7 @@ BEGIN GROUPBOX "",-1,0,65,225,26 END -IDD_UNIVERSAL_DUAL_CHOICE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_UNIVERSAL_DUAL_CHOICE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -343,7 +349,7 @@ BEGIN LTEXT "",IDC_BOX_HELP,1,34,220,112 END -IDD_SYSENC_DRIVE_ANALYSIS_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_DRIVE_ANALYSIS_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -352,18 +358,18 @@ BEGIN LTEXT "Progress:",IDT_PROGRESS,2,104,57,8 END -IDD_SYSENC_TYPE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_TYPE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN CONTROL "Normal",IDC_SYSENC_NORMAL,"Button",BS_AUTORADIOBUTTON,0,7,212,10 CONTROL "Hi&dden",IDC_SYSENC_HIDDEN,"Button",BS_AUTORADIOBUTTON,0,53,212,10 - LTEXT "More information",IDC_HIDDEN_SYSENC_INFO_LINK,16,138,205,10,SS_NOTIFY + LTEXT "More information",IDC_HIDDEN_SYSENC_INFO_LINK,16,148,205,10,SS_NOTIFY LTEXT "",IDC_BOX_HELP_SYSENC_NORMAL,16,20,205,25 - LTEXT "",IDC_BOX_HELP,16,66,205,72 + LTEXT "",IDC_BOX_HELP,16,67,205,72 END -IDD_SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -371,7 +377,7 @@ BEGIN LTEXT "",IDC_BOX_HELP,0,2,225,136 END -IDD_DEVICE_WIPE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_DEVICE_WIPE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -390,7 +396,7 @@ BEGIN LTEXT "",IDC_WIPE_MODE,67,21,125,11,SS_CENTERIMAGE,WS_EX_TRANSPARENT | WS_EX_STATICEDGE END -IDD_DEVICE_WIPE_MODE_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_DEVICE_WIPE_MODE_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -399,7 +405,7 @@ BEGIN LTEXT "",IDT_WIPE_MODE_INFO,0,29,225,122 END -IDD_DEVICE_TRANSFORM_MODE_DLG DIALOGEX 0, 0, 226, 152 +IDD_DEVICE_TRANSFORM_MODE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -408,10 +414,10 @@ BEGIN CONTROL "Encrypt partition in place",IDC_DEVICE_TRANSFORM_MODE_INPLACE, "Button",BS_AUTORADIOBUTTON,0,98,217,10 LTEXT "",IDC_BOX_HELP,16,21,205,74 - LTEXT "",IDC_BOX_HELP2,16,111,205,34 + LTEXT "",IDC_BOX_HELP2,16,112,205,53 END -IDD_EXPANDED_LIST_SELECT_PAGE_DLG DIALOGEX 0, 0, 226, 152 +IDD_EXPANDED_LIST_SELECT_PAGE_DLG DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -419,7 +425,7 @@ BEGIN LISTBOX IDC_LIST_BOX,0,3,222,100,LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_VSCROLL END -IDD_DRIVE_LETTER_SELECTION_PAGE DIALOGEX 0, 0, 226, 152 +IDD_DRIVE_LETTER_SELECTION_PAGE DIALOGEX 0, 0, 226, 172 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -468,38 +474,38 @@ BEGIN BEGIN RIGHTMARGIN, 393 TOPMARGIN, 1 - BOTTOMMARGIN, 207 - HORZGUIDE, 196 + BOTTOMMARGIN, 227 + HORZGUIDE, 216 END IDD_CIPHER_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 223 - BOTTOMMARGIN, 141 + BOTTOMMARGIN, 161 END IDD_PASSWORD_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 223 - BOTTOMMARGIN, 123 + BOTTOMMARGIN, 143 END IDD_SIZE_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 223 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_VOLUME_LOCATION_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 223 - BOTTOMMARGIN, 147 + BOTTOMMARGIN, 167 END IDD_FORMAT_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 217 - BOTTOMMARGIN, 133 + BOTTOMMARGIN, 153 HORZGUIDE, 80 HORZGUIDE, 96 END @@ -509,7 +515,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_INFO_PAGE_DLG, DIALOG @@ -517,7 +523,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_HIDVOL_HOST_FILL_PAGE_DLG, DIALOG @@ -525,7 +531,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_HIDDEN_VOL_WIZARD_MODE_PAGE_DLG, DIALOG @@ -533,13 +539,13 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_PASSWORD_ENTRY_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 223 - BOTTOMMARGIN, 123 + BOTTOMMARGIN, 143 END IDD_VOLUME_TYPE_PAGE_DLG, DIALOG @@ -547,7 +553,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_SYSENC_SPAN_PAGE_DLG, DIALOG @@ -555,19 +561,19 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_SYSENC_RESCUE_DISK_CREATION_DLG, DIALOG BEGIN RIGHTMARGIN, 223 - BOTTOMMARGIN, 147 + BOTTOMMARGIN, 167 END IDD_SYSENC_COLLECTING_RANDOM_DATA_DLG, DIALOG BEGIN RIGHTMARGIN, 217 - BOTTOMMARGIN, 133 + BOTTOMMARGIN, 153 HORZGUIDE, 80 HORZGUIDE, 96 END @@ -577,13 +583,13 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_SYSENC_RESCUE_DISK_BURN_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 223 - BOTTOMMARGIN, 147 + BOTTOMMARGIN, 167 END IDD_SYSENC_WIPE_MODE_PAGE_DLG, DIALOG @@ -591,13 +597,13 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_INPLACE_ENCRYPTION_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 217 - BOTTOMMARGIN, 133 + BOTTOMMARGIN, 153 HORZGUIDE, 80 HORZGUIDE, 96 END @@ -605,7 +611,7 @@ BEGIN IDD_SYSENC_KEYS_GEN_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 217 - BOTTOMMARGIN, 133 + BOTTOMMARGIN, 153 HORZGUIDE, 80 HORZGUIDE, 96 END @@ -615,13 +621,13 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_SYSENC_DRIVE_ANALYSIS_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 217 - BOTTOMMARGIN, 133 + BOTTOMMARGIN, 153 HORZGUIDE, 80 HORZGUIDE, 96 END @@ -631,19 +637,19 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_SYSENC_HIDDEN_OS_REQ_CHECK_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 223 - BOTTOMMARGIN, 147 + BOTTOMMARGIN, 167 END IDD_DEVICE_WIPE_PAGE_DLG, DIALOG BEGIN RIGHTMARGIN, 217 - BOTTOMMARGIN, 133 + BOTTOMMARGIN, 153 HORZGUIDE, 80 HORZGUIDE, 96 END @@ -653,7 +659,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_DEVICE_TRANSFORM_MODE_DLG, DIALOG @@ -661,7 +667,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_EXPANDED_LIST_SELECT_PAGE_DLG, DIALOG @@ -669,7 +675,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END IDD_DRIVE_LETTER_SELECTION_PAGE, DIALOG @@ -677,7 +683,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 219 TOPMARGIN, 7 - BOTTOMMARGIN, 145 + BOTTOMMARGIN, 165 END END #endif // APSTUDIO_INVOKED diff --git a/src/Format/InPlace.c b/src/Format/InPlace.c index cf96b813..043c1cd7 100644 --- a/src/Format/InPlace.c +++ b/src/Format/InPlace.c @@ -570,6 +570,7 @@ int EncryptPartitionInPlaceBegin (volatile FORMAT_VOL_PARAMETERS *volParams, vol FIRST_MODE_OF_OPERATION_ID, volParams->password, volParams->pkcs5, + volParams->pin, wipePass == 0 ? NULL : (char *) cryptoInfo->master_keydata, &cryptoInfo, dataAreaSize, @@ -609,7 +610,7 @@ int EncryptPartitionInPlaceBegin (volatile FORMAT_VOL_PARAMETERS *volParams, vol /* Now we will try to decrypt the backup header to verify it has been correctly written. */ - nStatus = OpenBackupHeader (dev, volParams->volumePath, volParams->password, volParams->pkcs5,&cryptoInfo2, NULL, deviceSize); + nStatus = OpenBackupHeader (dev, volParams->volumePath, volParams->password, volParams->pkcs5, volParams->pin, &cryptoInfo2, NULL, deviceSize); if (nStatus != ERR_SUCCESS || cryptoInfo->EncryptedAreaStart.Value != cryptoInfo2->EncryptedAreaStart.Value @@ -725,6 +726,7 @@ int EncryptPartitionInPlaceResume (HANDLE dev, char *devicePath = volParams->volumePath; Password *password = volParams->password; int pkcs5_prf = volParams->pkcs5; + int pin = volParams->pin; DISK_GEOMETRY driveGeometry; HWND hwndDlg = volParams->hwndDlg; @@ -818,7 +820,7 @@ int EncryptPartitionInPlaceResume (HANDLE dev, sectorSize = driveGeometry.BytesPerSector; - nStatus = OpenBackupHeader (dev, devicePath, password, pkcs5_prf, &masterCryptoInfo, headerCryptoInfo, deviceSize); + nStatus = OpenBackupHeader (dev, devicePath, password, pkcs5_prf, pin, &masterCryptoInfo, headerCryptoInfo, deviceSize); if (nStatus != ERR_SUCCESS) goto closing_seq; @@ -1048,6 +1050,7 @@ inplace_enc_read: headerCryptoInfo->mode, password, masterCryptoInfo->pkcs5, + pin, (char *) masterCryptoInfo->master_keydata, &tmpCryptoInfo, masterCryptoInfo->VolumeSize.Value, @@ -1198,6 +1201,7 @@ int DecryptPartitionInPlace (volatile FORMAT_VOL_PARAMETERS *volParams, volatile Password *password = volParams->password; HWND hwndDlg = volParams->hwndDlg; int pkcs5_prf = volParams->pkcs5; + int pin = volParams->pin; DISK_GEOMETRY driveGeometry; @@ -1291,7 +1295,7 @@ int DecryptPartitionInPlace (volatile FORMAT_VOL_PARAMETERS *volParams, volatile } - nStatus = OpenBackupHeader (dev, devicePath, password, pkcs5_prf, &masterCryptoInfo, headerCryptoInfo, deviceSize); + nStatus = OpenBackupHeader (dev, devicePath, password, pkcs5_prf, pin, &masterCryptoInfo, headerCryptoInfo, deviceSize); if (nStatus != ERR_SUCCESS) goto closing_seq; @@ -2081,7 +2085,7 @@ closing_seq: } -static int OpenBackupHeader (HANDLE dev, const char *devicePath, Password *password, int pkcs5, PCRYPTO_INFO *retMasterCryptoInfo, CRYPTO_INFO *headerCryptoInfo, __int64 deviceSize) +static int OpenBackupHeader (HANDLE dev, const char *devicePath, Password *password, int pkcs5, int pin, PCRYPTO_INFO *retMasterCryptoInfo, CRYPTO_INFO *headerCryptoInfo, __int64 deviceSize) { LARGE_INTEGER offset; DWORD n; @@ -2107,7 +2111,7 @@ static int OpenBackupHeader (HANDLE dev, const char *devicePath, Password *passw } - nStatus = ReadVolumeHeader (FALSE, header, password, pkcs5, FALSE, retMasterCryptoInfo, headerCryptoInfo); + nStatus = ReadVolumeHeader (FALSE, header, password, pkcs5, pin, FALSE, retMasterCryptoInfo, headerCryptoInfo); if (nStatus != ERR_SUCCESS) goto closing_seq; diff --git a/src/Format/InPlace.h b/src/Format/InPlace.h index 6b59bbd4..d482c714 100644 --- a/src/Format/InPlace.h +++ b/src/Format/InPlace.h @@ -40,7 +40,7 @@ static int ConcealNTFS (HANDLE dev); BOOL SaveNonSysInPlaceEncSettings (int delta, WipeAlgorithmId wipeAlgorithm, BOOL bDecrypting); static void ExportProgressStats (__int64 bytesDone, __int64 totalSize); int ZeroUnreadableSectors (HANDLE dev, LARGE_INTEGER startOffset, int64 size, int sectorSize, uint64 *zeroedSectorCount); -static int OpenBackupHeader (HANDLE dev, const char *devicePath, Password *password, int pkcs5, PCRYPTO_INFO *retCryptoInfo, CRYPTO_INFO *headerCryptoInfo, __int64 deviceSize); +static int OpenBackupHeader (HANDLE dev, const char *devicePath, Password *password, int pkcs5, int pin, PCRYPTO_INFO *retCryptoInfo, CRYPTO_INFO *headerCryptoInfo, __int64 deviceSize); BOOL MoveClustersBeforeThreshold (HANDLE volumeHandle, PWSTR volumeDevicePath, int64 clusterThreshold); #ifdef __cplusplus diff --git a/src/Format/Resource.h b/src/Format/Resource.h index feba5ec3..2dc03faa 100644 --- a/src/Format/Resource.h +++ b/src/Format/Resource.h @@ -138,8 +138,12 @@ #define IDT_PASS 1100 #define IDC_DEVICE_TRANSFORM_MODE_FORMAT 1101 #define IDC_DEVICE_TRANSFORM_MODE_INPLACE 1102 -#define IDC_DRIVE_LETTER_LIST 1103 -#define IDT_DRIVE_LETTER 1104 +#define IDC_DRIVE_LETTER_LIST 1103 +#define IDT_DRIVE_LETTER 1104 +#define IDT_PIN 1105 +#define IDC_PIN 1106 +#define IDC_PIN_HELP 1107 +#define IDC_EDIT1 1108 // Next default values for new objects // @@ -148,7 +152,7 @@ #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 133 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1105 +#define _APS_NEXT_CONTROL_VALUE 1109 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/Format/Tcformat.c b/src/Format/Tcformat.c index bc59a433..574d61eb 100644 --- a/src/Format/Tcformat.c +++ b/src/Format/Tcformat.c @@ -228,6 +228,7 @@ Password volumePassword; /* User password */ char szVerify[MAX_PASSWORD + 1]; /* Tmp password buffer */ char szRawPassword[MAX_PASSWORD + 1]; /* Password before keyfile was applied to it */ +int volumePin = 0; BOOL bHistoryCmdLine = FALSE; /* History control is always disabled */ BOOL ComServerMode = FALSE; @@ -278,7 +279,7 @@ void CALLBACK ResumeInPlaceEncWaitThreadProc(void* pArg, HWND hwndDlg) if (device.Path == szDevicePath) { OpenVolumeContext volume; - int status = OpenVolume (&volume, device.Path.c_str(), &volumePassword, hash_algo, FALSE, FALSE, FALSE, TRUE); + int status = OpenVolume (&volume, device.Path.c_str(), &volumePassword, hash_algo, volumePin, FALSE, FALSE, FALSE, TRUE); if ( status == ERR_SUCCESS) { @@ -324,7 +325,7 @@ void CALLBACK ResumeInPlaceEncWaitThreadProc(void* pArg, HWND hwndDlg) OpenVolumeContext volume; - if (OpenVolume (&volume, device.Path.c_str(), &volumePassword, hash_algo, FALSE, FALSE, FALSE, TRUE) == ERR_SUCCESS) + if (OpenVolume (&volume, device.Path.c_str(), &volumePassword, hash_algo, volumePin, FALSE, FALSE, FALSE, TRUE) == ERR_SUCCESS) { if ((volume.CryptoInfo->HeaderFlags & TC_HEADER_FLAG_NONSYS_INPLACE_ENC) != 0 && volume.CryptoInfo->EncryptedAreaLength.Value != volume.CryptoInfo->VolumeSize.Value) @@ -2500,6 +2501,7 @@ static void __cdecl volTransformThreadFunction (void *hwndDlgArg) volParams->sectorSize = GetFormatSectorSize(); volParams->realClusterSize = &realClusterSize; volParams->password = &volumePassword; + volParams->pin = volumePin; volParams->hwndDlg = hwndDlg; if (bInPlaceDecNonSys) @@ -2571,7 +2573,7 @@ static void __cdecl volTransformThreadFunction (void *hwndDlgArg) if (bHiddenVolHost && !bVolTransformThreadCancel && nStatus == 0) { /* Auto mount the newly created hidden volume host */ - switch (MountHiddenVolHost (hwndDlg, szDiskFile, &hiddenVolHostDriveNo, &volumePassword, hash_algo, FALSE)) + switch (MountHiddenVolHost (hwndDlg, szDiskFile, &hiddenVolHostDriveNo, &volumePassword, hash_algo, volumePin, FALSE)) { case ERR_NO_FREE_DRIVES: MessageBoxW (hwndDlg, GetString ("NO_FREE_DRIVE_FOR_OUTER_VOL"), lpszTitle, ICON_HAND); @@ -4064,6 +4066,14 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa SetFocus (GetDlgItem (hwndDlg, IDC_PASSWORD_DIRECT)); + SendMessage (GetDlgItem (hwndDlg, IDC_PIN), EM_LIMITTEXT, MAX_PIN, 0); + if (volumePin > 0) + { + char szTmp[MAX_PIN + 1]; + StringCbPrintfA(szTmp, sizeof(szTmp), "%d", volumePin); + SetWindowText (GetDlgItem (hwndDlg, IDC_PIN), szTmp); + } + SetCheckBox (hwndDlg, IDC_KEYFILES_ENABLE, KeyFilesEnable); SetWindowTextW (GetDlgItem (hwndDlg, IDC_BOX_HELP), GetString (bInPlaceEncNonSys ? (bInPlaceEncNonSysResumed ? "NONSYS_INPLACE_ENC_RESUME_PASSWORD_PAGE_HELP" : "NONSYS_INPLACE_DEC_PASSWORD_PAGE_HELP") : "PASSWORD_HIDDENVOL_HOST_DIRECT_HELP")); @@ -4084,7 +4094,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa wchar_t str[1000]; hPasswordInputField = GetDlgItem (hwndDlg, IDC_PASSWORD); - hVerifyPasswordInputField = GetDlgItem (hwndDlg, IDC_VERIFY); + hVerifyPasswordInputField = GetDlgItem (hwndDlg, IDC_VERIFY); if (SysEncInEffect ()) { @@ -4138,6 +4148,14 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa SetFocus (GetDlgItem (hwndDlg, IDC_PASSWORD)); + SendMessage (GetDlgItem (hwndDlg, IDC_PIN), EM_LIMITTEXT, SysEncInEffect()? MAX_BOOT_PIN: MAX_PIN, 0); + if (volumePin > 0) + { + char szTmp[MAX_PIN + 1]; + StringCbPrintfA(szTmp, sizeof(szTmp), "%d", volumePin); + SetWindowText (GetDlgItem (hwndDlg, IDC_PIN), szTmp); + } + SetCheckBox (hwndDlg, IDC_KEYFILES_ENABLE, KeyFilesEnable && !SysEncInEffect()); EnableWindow (GetDlgItem (hwndDlg, IDC_KEY_FILES), KeyFilesEnable); @@ -4164,6 +4182,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa NULL, KeyFilesEnable && FirstKeyFile!=NULL && !SysEncInEffect()); volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text); + } break; @@ -6941,16 +6960,24 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text); + volumePin = GetPin (hCurPage, IDC_PIN); + if (volumePassword.Length > 0) - { + { // Password character encoding if (!CheckPasswordCharEncoding (GetDlgItem (hCurPage, IDC_PASSWORD), NULL)) { Error ("UNSUPPORTED_CHARS_IN_PWD", hwndDlg); return 1; } + else if (SysEncInEffect() && (volumePin > MAX_BOOT_PIN_VALUE)) + { + SetFocus (GetDlgItem(hCurPage, IDC_PIN)); + Error ("PIN_SYSENC_TOO_BIG", hwndDlg); + return 1; + } // Check password length (check also done for outer volume which is not the case in TrueCrypt). - else if (!CheckPasswordLength (hwndDlg, GetDlgItem (hCurPage, IDC_PASSWORD))) + else if (!CheckPasswordLength (hwndDlg, GetDlgItem (hCurPage, IDC_PASSWORD), volumePin, SysEncInEffect())) { return 1; } @@ -7013,6 +7040,8 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa hash_algo = (int) SendMessage (GetDlgItem (hCurPage, IDC_PKCS5_PRF_ID), CB_GETITEMDATA, SendMessage (GetDlgItem (hCurPage, IDC_PKCS5_PRF_ID), CB_GETCURSEL, 0, 0), 0); + volumePin = GetPin (hCurPage, IDC_PIN); + // Store the password in case we need to restore it after keyfile is applied to it GetWindowText (GetDlgItem (hCurPage, IDC_PASSWORD_DIRECT), szRawPassword, sizeof (szRawPassword)); @@ -7050,7 +7079,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa // Mount the hidden volume host as read-only (to ensure consistent and secure // results of the volume bitmap scanning) - switch (MountHiddenVolHost (hwndDlg, szDiskFile, &hiddenVolHostDriveNo, &volumePassword, hash_algo, TRUE)) + switch (MountHiddenVolHost (hwndDlg, szDiskFile, &hiddenVolHostDriveNo, &volumePassword, hash_algo, volumePin, TRUE)) { case ERR_NO_FREE_DRIVES: NormalCursor (); @@ -7218,7 +7247,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa // Check that it is not a hidden or legacy volume - if (MountVolume (hwndDlg, driveNo, szFileName, &volumePassword, hash_algo, FALSE, FALSE, TRUE, &mountOptions, FALSE, TRUE) < 1) + if (MountVolume (hwndDlg, driveNo, szFileName, &volumePassword, hash_algo, volumePin, FALSE, FALSE, TRUE, &mountOptions, FALSE, TRUE) < 1) { NormalCursor(); return 1; @@ -7260,7 +7289,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa mountOptions.UseBackupHeader = TRUE; // This must be TRUE at this point (we won't be using the regular header, which will be lost soon after the decryption process starts) - if (MountVolume (hwndDlg, driveNo, szFileName, &volumePassword, hash_algo, FALSE, FALSE, TRUE, &mountOptions, FALSE, TRUE) < 1) + if (MountVolume (hwndDlg, driveNo, szFileName, &volumePassword, hash_algo, volumePin, FALSE, FALSE, TRUE, &mountOptions, FALSE, TRUE) < 1) { NormalCursor(); return 1; @@ -7326,7 +7355,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa try { WaitCursor(); - BootEncObj->PrepareInstallation (!bWholeSysDrive, volumePassword, nVolumeEA, FIRST_MODE_OF_OPERATION_ID, hash_algo, ""); + BootEncObj->PrepareInstallation (!bWholeSysDrive, volumePassword, nVolumeEA, FIRST_MODE_OF_OPERATION_ID, hash_algo, volumePin, ""); } catch (Exception &e) { @@ -7872,7 +7901,7 @@ retryCDDriveCheck: { // Remount the hidden volume host as read-only (to ensure consistent and secure // results of the volume bitmap scanning) - switch (MountHiddenVolHost (hwndDlg, szDiskFile, &hiddenVolHostDriveNo, &volumePassword, hash_algo, TRUE)) + switch (MountHiddenVolHost (hwndDlg, szDiskFile, &hiddenVolHostDriveNo, &volumePassword, hash_algo, volumePin, TRUE)) { case ERR_NO_FREE_DRIVES: MessageBoxW (hwndDlg, GetString ("NO_FREE_DRIVE_FOR_OUTER_VOL"), lpszTitle, ICON_HAND); @@ -8096,6 +8125,8 @@ ovf_end: volumePassword.Length = (unsigned __int32) strlen ((char *) volumePassword.Text); + volumePin = GetPin (hCurPage, IDC_PIN); + nNewPageNo = SIZE_PAGE + 1; // Skip the hidden volume host password page if (SysEncInEffect ()) @@ -8691,7 +8722,7 @@ efsf_error: // Mounts a volume within which the user intends to create a hidden volume -int MountHiddenVolHost (HWND hwndDlg, char *volumePath, int *driveNo, Password *password, int pkcs5_prf, BOOL bReadOnly) +int MountHiddenVolHost (HWND hwndDlg, char *volumePath, int *driveNo, Password *password, int pkcs5_prf, int pin, BOOL bReadOnly) { MountOptions mountOptions; ZeroMemory (&mountOptions, sizeof (mountOptions)); @@ -8711,7 +8742,7 @@ int MountHiddenVolHost (HWND hwndDlg, char *volumePath, int *driveNo, Password * mountOptions.PartitionInInactiveSysEncScope = FALSE; mountOptions.UseBackupHeader = FALSE; - if (MountVolume (hwndDlg, *driveNo, volumePath, password, pkcs5_prf, FALSE, FALSE, TRUE, &mountOptions, FALSE, TRUE) < 1) + if (MountVolume (hwndDlg, *driveNo, volumePath, password, pkcs5_prf, pin, FALSE, FALSE, TRUE, &mountOptions, FALSE, TRUE) < 1) { *driveNo = -3; return ERR_VOL_MOUNT_FAILED; diff --git a/src/Format/Tcformat.h b/src/Format/Tcformat.h index 15a81534..11d5b354 100644 --- a/src/Format/Tcformat.h +++ b/src/Format/Tcformat.h @@ -68,7 +68,7 @@ static void NonSysInplaceEncPause (void); static void NonSysInplaceEncResume (void); void ShowNonSysInPlaceEncUIStatus (void); void UpdateNonSysInPlaceEncControls (void); -int MountHiddenVolHost ( HWND hwndDlg, char *volumePath, int *driveNo, Password *password, int pkcs5_prf, BOOL bReadOnly ); +int MountHiddenVolHost ( HWND hwndDlg, char *volumePath, int *driveNo, Password *password, int pkcs5_prf, int pin, BOOL bReadOnly ); int AnalyzeHiddenVolumeHost (HWND hwndDlg, int *driveNo, __int64 hiddenVolHostSize, int *realClusterSize, __int64 *pnbrFreeClusters); int ScanVolClusterBitmap ( HWND hwndDlg, int *driveNo, __int64 nbrClusters, __int64 *nbrFreeClusters); static void WipeStart (void); -- cgit v1.2.3