mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2026-06-17 10:06:06 -05:00
EMV keyfile support: Overall code improvements and bug fixes
This commit is contained in:
@@ -204,7 +204,7 @@ namespace VeraCrypt
|
||||
wxBusyCursor busy;
|
||||
ChangePasswordThreadRoutine routine(Path, Gui->GetPreferences().DefaultMountOptions.PreserveTimestamps,
|
||||
CurrentPasswordPanel->GetPassword(), CurrentPasswordPanel->GetVolumePim(), CurrentPasswordPanel->GetPkcs5Kdf(bUnsupportedKdf), CurrentPasswordPanel->GetTrueCryptMode(),CurrentPasswordPanel->GetKeyfiles(),
|
||||
newPassword, newPim, newKeyfiles, NewPasswordPanel->GetPkcs5Kdf(bUnsupportedKdf), NewPasswordPanel->GetHeaderWipeCount(), Gui->GetPreferences().ActivateEMVOption);
|
||||
newPassword, newPim, newKeyfiles, NewPasswordPanel->GetPkcs5Kdf(bUnsupportedKdf), NewPasswordPanel->GetHeaderWipeCount(), Gui->GetPreferences().EMVSupportEnabled);
|
||||
Gui->ExecuteWaitThreadRoutine (this, &routine);
|
||||
}
|
||||
|
||||
|
||||
@@ -2208,13 +2208,13 @@ PreferencesDialogBase::PreferencesDialogBase( wxWindow* parent, wxWindowID id, c
|
||||
|
||||
bSizer128->Add( sbSizer37, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizer38;
|
||||
sbSizer38 = new wxStaticBoxSizer( new wxStaticBox( SecurityTokensPage, wxID_ANY, _("IDT_EMV_OPTIONS") ), wxVERTICAL );
|
||||
wxStaticBoxSizer* sbSizer38;
|
||||
sbSizer38 = new wxStaticBoxSizer( new wxStaticBox( SecurityTokensPage, wxID_ANY, _("IDT_EMV_OPTIONS") ), wxVERTICAL );
|
||||
|
||||
ActivateEMVOptionCheckBox = new wxCheckBox( sbSizer38->GetStaticBox(), wxID_ANY, _("IDC_ACTIVATE_EMV_OPTION"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
sbSizer38->Add( ActivateEMVOptionCheckBox, 0, wxALL, 5 );
|
||||
EMVSupportEnabledCheckBox = new wxCheckBox( sbSizer38->GetStaticBox(), wxID_ANY, _("IDC_ENABLE_EMV_SUPPORT"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
sbSizer38->Add( EMVSupportEnabledCheckBox, 0, wxALL, 5 );
|
||||
|
||||
bSizer128->Add( sbSizer38, 0, wxEXPAND|wxALL, 5 );
|
||||
bSizer128->Add( sbSizer38, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
bSizer127->Add( bSizer128, 1, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
@@ -593,7 +593,7 @@ namespace VeraCrypt
|
||||
wxTextCtrl* Pkcs11ModulePathTextCtrl;
|
||||
wxButton* SelectPkcs11ModuleButton;
|
||||
wxCheckBox* CloseSecurityTokenSessionsAfterMountCheckBox;
|
||||
wxCheckBox* ActivateEMVOptionCheckBox;
|
||||
wxCheckBox* EMVSupportEnabledCheckBox;
|
||||
wxListCtrl* HotkeyListCtrl;
|
||||
wxTextCtrl* HotkeyTextCtrl;
|
||||
wxButton* AssignHotkeyButton;
|
||||
|
||||
@@ -683,7 +683,7 @@ namespace VeraCrypt
|
||||
{
|
||||
mountOptions.Pim = CmdLine->ArgPim;
|
||||
}
|
||||
mountOptions.EMVOption = GetPreferences().ActivateEMVOption;
|
||||
mountOptions.EMVSupportEnabled = GetPreferences().EMVSupportEnabled;
|
||||
Gui->MountAllFavoriteVolumes (mountOptions);
|
||||
}
|
||||
catch (exception &e)
|
||||
@@ -718,7 +718,7 @@ namespace VeraCrypt
|
||||
{
|
||||
mountOptions.Pim = CmdLine->ArgPim;
|
||||
}
|
||||
mountOptions.EMVOption = GetPreferences().ActivateEMVOption;
|
||||
mountOptions.EMVSupportEnabled = GetPreferences().EMVSupportEnabled;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -193,7 +193,7 @@ namespace VeraCrypt
|
||||
Options.MountPoint = make_shared <DirectoryPath> (mountPoint);
|
||||
|
||||
Options.FilesystemOptions = FilesystemOptionsTextCtrl->GetValue();
|
||||
Options.EMVOption = Gui->GetPreferences().ActivateEMVOption;
|
||||
Options.EMVSupportEnabled = Gui->GetPreferences().EMVSupportEnabled;
|
||||
|
||||
EndModal (wxID_OK);
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ namespace VeraCrypt
|
||||
// Security tokens
|
||||
Pkcs11ModulePathTextCtrl->SetValue (wstring (Preferences.SecurityTokenModule));
|
||||
TC_CHECK_BOX_VALIDATOR (CloseSecurityTokenSessionsAfterMount);
|
||||
TC_CHECK_BOX_VALIDATOR (ActivateEMVOption);
|
||||
TC_CHECK_BOX_VALIDATOR (EMVSupportEnabled);
|
||||
|
||||
// System integration
|
||||
TC_CHECK_BOX_VALIDATOR (StartOnLogon);
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace VeraCrypt
|
||||
wxBusyCursor busy;
|
||||
|
||||
SecurityTokenKeyfileListCtrl->DeleteAllItems();
|
||||
SecurityTokenKeyfileList = Token::GetAvailableKeyfiles(Gui->GetPreferences().ActivateEMVOption);
|
||||
SecurityTokenKeyfileList = Token::GetAvailableKeyfiles(Gui->GetPreferences().EMVSupportEnabled);
|
||||
|
||||
size_t i = 0;
|
||||
foreach (const shared_ptr<TokenKeyfile> key, SecurityTokenKeyfileList)
|
||||
@@ -177,34 +177,38 @@ namespace VeraCrypt
|
||||
}
|
||||
}
|
||||
|
||||
void SecurityTokenKeyfilesDialog::OnListItemSelected(wxListEvent &event) {
|
||||
if (event.GetItem().GetData() != (wxUIntPtr) nullptr) {
|
||||
BOOL deletable = true;
|
||||
foreach(long
|
||||
item, Gui->GetListCtrlSelectedItems(SecurityTokenKeyfileListCtrl))
|
||||
{
|
||||
TokenKeyfile *keyfile = reinterpret_cast <TokenKeyfile *> (SecurityTokenKeyfileListCtrl->GetItemData(
|
||||
item));
|
||||
if (!keyfile->Token->isEditable()) {
|
||||
deletable = false;
|
||||
}
|
||||
}
|
||||
if (deletable) {
|
||||
DeleteButton->Enable();
|
||||
}
|
||||
ExportButton->Enable();
|
||||
OKButton->Enable();
|
||||
}
|
||||
}
|
||||
void SecurityTokenKeyfilesDialog::OnListItemSelected(wxListEvent &event)
|
||||
{
|
||||
if (event.GetItem().GetData() != (wxUIntPtr) nullptr)
|
||||
{
|
||||
BOOL deletable = true;
|
||||
foreach(long
|
||||
item, Gui->GetListCtrlSelectedItems(SecurityTokenKeyfileListCtrl))
|
||||
{
|
||||
TokenKeyfile *keyfile = reinterpret_cast <TokenKeyfile *> (SecurityTokenKeyfileListCtrl->GetItemData(item));
|
||||
if (!keyfile->Token->isEditable())
|
||||
{
|
||||
deletable = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (deletable)
|
||||
{
|
||||
DeleteButton->Enable();
|
||||
}
|
||||
ExportButton->Enable();
|
||||
OKButton->Enable();
|
||||
}
|
||||
}
|
||||
|
||||
void SecurityTokenKeyfilesDialog::OnOKButtonClick ()
|
||||
{
|
||||
foreach (long item, Gui->GetListCtrlSelectedItems (SecurityTokenKeyfileListCtrl))
|
||||
{
|
||||
TokenKeyfile *key = reinterpret_cast <TokenKeyfile *> (SecurityTokenKeyfileListCtrl->GetItemData(item));
|
||||
{
|
||||
TokenKeyfile *key = reinterpret_cast <TokenKeyfile *> (SecurityTokenKeyfileListCtrl->GetItemData(item));
|
||||
|
||||
SelectedSecurityTokenKeyfilePaths.push_back(*key);
|
||||
}
|
||||
SelectedSecurityTokenKeyfilePaths.push_back(*key);
|
||||
}
|
||||
EndModal (wxID_OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -795,7 +795,7 @@ namespace VeraCrypt
|
||||
shared_ptr <VolumePassword> hiddenPassword;
|
||||
try
|
||||
{
|
||||
hiddenPassword = Keyfile::ApplyListToPassword (Keyfiles, Password, Gui->GetPreferences().ActivateEMVOption);
|
||||
hiddenPassword = Keyfile::ApplyListToPassword (Keyfiles, Password, Gui->GetPreferences().EMVSupportEnabled);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@@ -846,7 +846,7 @@ namespace VeraCrypt
|
||||
shared_ptr <VolumePassword> hiddenPassword;
|
||||
try
|
||||
{
|
||||
hiddenPassword = Keyfile::ApplyListToPassword (Keyfiles, Password, Gui->GetPreferences().ActivateEMVOption);
|
||||
hiddenPassword = Keyfile::ApplyListToPassword (Keyfiles, Password, Gui->GetPreferences().EMVSupportEnabled);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@@ -1032,7 +1032,7 @@ namespace VeraCrypt
|
||||
options->Size = VolumeSize;
|
||||
options->Type = OuterVolume ? VolumeType::Normal : SelectedVolumeType;
|
||||
options->VolumeHeaderKdf = Pkcs5Kdf::GetAlgorithm (*SelectedHash, false);
|
||||
options->EMVOption = Gui->GetPreferences().ActivateEMVOption;
|
||||
options->EMVSupportEnabled = Gui->GetPreferences().EMVSupportEnabled;
|
||||
|
||||
|
||||
Creator.reset (new VolumeCreator);
|
||||
@@ -1162,7 +1162,7 @@ namespace VeraCrypt
|
||||
// remember Outer password and keyfiles in order to be able to compare it with those of Hidden volume
|
||||
try
|
||||
{
|
||||
OuterPassword = Keyfile::ApplyListToPassword (Keyfiles, Password, Gui->GetPreferences().ActivateEMVOption);
|
||||
OuterPassword = Keyfile::ApplyListToPassword (Keyfiles, Password, Gui->GetPreferences().EMVSupportEnabled);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
#include "System.h"
|
||||
#include "Volume/EncryptionModeXTS.h"
|
||||
#include "Main/GraphicUserInterface.h"
|
||||
#include "Common/PCSCException.h"
|
||||
#include "Common/SecurityToken.h"
|
||||
#include "Common/IccDataExtractor.h"
|
||||
#include "WaitDialog.h"
|
||||
|
||||
namespace VeraCrypt
|
||||
@@ -103,12 +103,18 @@ namespace VeraCrypt
|
||||
VC_CONVERT_EXCEPTION (VolumeException);
|
||||
VC_CONVERT_EXCEPTION (PasswordException);
|
||||
|
||||
VC_CONVERT_EXCEPTION (PCSCException);
|
||||
VC_CONVERT_EXCEPTION (WinscardLibraryNotInitialized);
|
||||
VC_CONVERT_EXCEPTION (InvalidEMVPath);
|
||||
VC_CONVERT_EXCEPTION (EMVKeyfileDataNotFound);
|
||||
VC_CONVERT_EXCEPTION (EMVPANNotFound);
|
||||
VC_CONVERT_EXCEPTION (EMVUnknownCardType);
|
||||
VC_CONVERT_EXCEPTION (PCSCException);
|
||||
VC_CONVERT_EXCEPTION (CommandAPDUNotValid);
|
||||
VC_CONVERT_EXCEPTION (ExtendedAPDUNotSupported);
|
||||
VC_CONVERT_EXCEPTION (ScardLibraryInitializationFailed);
|
||||
VC_CONVERT_EXCEPTION (EMVUnknownCardType);
|
||||
VC_CONVERT_EXCEPTION (EMVSelectAIDFailed);
|
||||
VC_CONVERT_EXCEPTION (EMVIccCertNotFound);
|
||||
VC_CONVERT_EXCEPTION (EMVIssuerCertNotFound);
|
||||
VC_CONVERT_EXCEPTION (EMVCPLCNotFound);
|
||||
VC_CONVERT_EXCEPTION (InvalidEMVPath);
|
||||
VC_CONVERT_EXCEPTION (EMVKeyfileDataNotFound);
|
||||
VC_CONVERT_EXCEPTION (EMVPANNotFound);
|
||||
|
||||
throw *ex;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user