Linux & MacOSX: automatically check TrueCryptMode in password dialog when selecting a container file that has the .tc file extension

This commit is contained in:
Mounir IDRASSI 2016-12-18 15:26:35 +01:00
parent a8fea1d643
commit 1ef6177ae3
No known key found for this signature in database
GPG Key ID: DD0C382D5FCFB8FC
5 changed files with 51 additions and 0 deletions

View File

@ -24,6 +24,12 @@ namespace VeraCrypt
bool enableNewPassword = false;
bool enableNewKeyfiles = false;
bool enablePkcs5Prf = false;
bool isTrueCryptFile = false;
if (volumePath && volumePath->HasTrueCryptExtension ())
{
isTrueCryptFile = true;
}
switch (mode)
{
@ -54,6 +60,7 @@ namespace VeraCrypt
CurrentPasswordPanel = new VolumePasswordPanel (this, NULL, password, false, keyfiles, false, true, true, false, true, true);
CurrentPasswordPanel->UpdateEvent.Connect (EventConnector <ChangePasswordDialog> (this, &ChangePasswordDialog::OnPasswordPanelUpdate));
CurrentPasswordPanel->SetTrueCryptMode (isTrueCryptFile);
CurrentPasswordPanelSizer->Add (CurrentPasswordPanel, 1, wxALL | wxEXPAND);
NewPasswordPanel = new VolumePasswordPanel (this, NULL, newPassword, true, newKeyfiles, false, enableNewPassword, enableNewKeyfiles, enableNewPassword, enablePkcs5Prf);

View File

@ -36,6 +36,12 @@ namespace VeraCrypt
PasswordPanel = new VolumePasswordPanel (this, &options, options.Password, disableMountOptions, options.Keyfiles, !disableMountOptions, true, true, false, true, true);
PasswordPanel->SetCacheCheckBoxValidator (wxGenericValidator (&Options.CachePassword));
if (options.Path && options.Path->HasTrueCryptExtension() && !disableMountOptions
&& !options.TrueCryptMode && (options.Pim <= 0))
{
PasswordPanel->SetTrueCryptMode (true);
}
PasswordSizer->Add (PasswordPanel, 1, wxALL | wxEXPAND);

View File

@ -306,6 +306,16 @@ namespace VeraCrypt
{
return TrueCryptModeCheckBox->GetValue ();
}
void VolumePasswordPanel::SetTrueCryptMode (bool trueCryptMode)
{
bool bEnablePIM = !trueCryptMode;
TrueCryptModeCheckBox->SetValue (trueCryptMode);
PimCheckBox->Enable (bEnablePIM);
VolumePimStaticText->Enable (bEnablePIM);
VolumePimTextCtrl->Enable (bEnablePIM);
VolumePimHelpStaticText->Enable (bEnablePIM);
}
int VolumePasswordPanel::GetHeaderWipeCount () const
{

View File

@ -32,6 +32,7 @@ namespace VeraCrypt
shared_ptr <Pkcs5Kdf> GetPkcs5Kdf (bool bTrueCryptMode, bool &bUnsupportedKdf) const;
int GetVolumePim () const;
bool GetTrueCryptMode () const;
void SetTrueCryptMode (bool trueCryptMode);
int GetHeaderWipeCount () const;
void SetCacheCheckBoxValidator (const wxGenericValidator &validator) { CacheCheckBox->SetValidator (validator); }
void SetFocusToPasswordTextCtrl () { PasswordTextCtrl->SetSelection (-1, -1); PasswordTextCtrl->SetFocus(); }

View File

@ -39,6 +39,33 @@ namespace VeraCrypt
bool IsDevice () const { return FilesystemPath (Data).IsBlockDevice() || FilesystemPath (Data).IsCharacterDevice(); }
bool IsEmpty () const { return Data.empty(); }
wstring GetExtension () const
{
if (Data.empty() || (Data.size() == 1))
return L"";
else
{
size_t pos = Data.find_last_of (L'.');
if (pos == string::npos)
return L"";
return Data.substr (pos + 1);
}
}
bool HasTrueCryptExtension () const
{
wstring sExt = GetExtension ();
if ((sExt.size () == 2)
&& (sExt[0] == L't' || sExt[0] == L'T')
&& (sExt[1] == L'c' || sExt[1] == L'C')
)
{
return true;
}
else
return false;
}
protected:
wstring Data;