mirror of
https://github.com/veracrypt/VeraCrypt
synced 2024-11-28 05:53:29 +01:00
Linux/MacOSX: Implement waiting dialog for lengthy operations in order to have a better user experience.
This commit is contained in:
parent
bbcc944855
commit
d90d9f0c40
132
src/Core/Core.h
132
src/Core/Core.h
@ -15,6 +15,138 @@ namespace VeraCrypt
|
|||||||
{
|
{
|
||||||
extern auto_ptr <CoreBase> Core;
|
extern auto_ptr <CoreBase> Core;
|
||||||
extern auto_ptr <CoreBase> CoreDirect;
|
extern auto_ptr <CoreBase> CoreDirect;
|
||||||
|
|
||||||
|
class WaitThreadRoutine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Exception* m_pException;
|
||||||
|
WaitThreadRoutine() : m_pException(NULL) {}
|
||||||
|
virtual ~WaitThreadRoutine() {if (m_pException) delete m_pException;}
|
||||||
|
bool HasException () { return m_pException != NULL;}
|
||||||
|
Exception* GetException () const { return m_pException;}
|
||||||
|
void Execute(void)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ExecutionCode();
|
||||||
|
}
|
||||||
|
catch(Exception& ex)
|
||||||
|
{
|
||||||
|
m_pException = ex.CloneNew();
|
||||||
|
}
|
||||||
|
catch(...)
|
||||||
|
{
|
||||||
|
m_pException = new UnknownException (SRC_POS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
virtual void ExecutionCode(void) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class MountThreadRoutine : public WaitThreadRoutine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MountOptions& m_options;
|
||||||
|
shared_ptr <VolumeInfo> m_pVolume;
|
||||||
|
MountThreadRoutine(MountOptions &options) : m_options(options) {}
|
||||||
|
virtual ~MountThreadRoutine() { }
|
||||||
|
virtual void ExecutionCode(void) { m_pVolume = Core->MountVolume(m_options); }
|
||||||
|
};
|
||||||
|
|
||||||
|
class VolumeCreatorThreadRoutine : public WaitThreadRoutine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
shared_ptr <VolumeCreationOptions> m_options;
|
||||||
|
shared_ptr <VolumeCreator> m_pCreator;
|
||||||
|
VolumeCreatorThreadRoutine(shared_ptr <VolumeCreationOptions> options, shared_ptr <VolumeCreator> pCreator)
|
||||||
|
: m_options(options), m_pCreator(pCreator) {}
|
||||||
|
virtual ~VolumeCreatorThreadRoutine() { }
|
||||||
|
virtual void ExecutionCode(void) { m_pCreator->CreateVolume (m_options); }
|
||||||
|
};
|
||||||
|
|
||||||
|
class ChangePasswordThreadRoutine : public WaitThreadRoutine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
shared_ptr <VolumePath> m_volumePath;
|
||||||
|
bool m_preserveTimestamps;
|
||||||
|
shared_ptr <VolumePassword> m_password;
|
||||||
|
shared_ptr <Pkcs5Kdf> m_kdf;
|
||||||
|
shared_ptr <KeyfileList> m_keyfiles;
|
||||||
|
shared_ptr <VolumePassword> m_newPassword;
|
||||||
|
shared_ptr <KeyfileList> m_newKeyfiles;
|
||||||
|
shared_ptr <Pkcs5Kdf> m_newPkcs5Kdf;
|
||||||
|
int m_wipeCount;
|
||||||
|
ChangePasswordThreadRoutine(shared_ptr <VolumePath> volumePath, bool preserveTimestamps, shared_ptr <VolumePassword> password, shared_ptr <Pkcs5Kdf> kdf, shared_ptr <KeyfileList> keyfiles, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf, int wipeCount) : m_volumePath(volumePath), m_preserveTimestamps(preserveTimestamps), m_password(password), m_kdf(kdf), m_keyfiles(keyfiles), m_newPassword(newPassword), m_newKeyfiles(newKeyfiles), m_newPkcs5Kdf(newPkcs5Kdf), m_wipeCount(wipeCount) {}
|
||||||
|
virtual ~ChangePasswordThreadRoutine() { }
|
||||||
|
virtual void ExecutionCode(void) { Core->ChangePassword(m_volumePath, m_preserveTimestamps, m_password, m_kdf, m_keyfiles, m_newPassword, m_newKeyfiles, m_newPkcs5Kdf, m_wipeCount); }
|
||||||
|
};
|
||||||
|
|
||||||
|
class OpenVolumeThreadRoutine : public WaitThreadRoutine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
shared_ptr <VolumePath> m_volumePath;
|
||||||
|
bool m_preserveTimestamps;
|
||||||
|
shared_ptr <VolumePassword> m_password;
|
||||||
|
shared_ptr<Pkcs5Kdf> m_Kdf;
|
||||||
|
shared_ptr <KeyfileList> m_keyfiles;
|
||||||
|
VolumeProtection::Enum m_protection;
|
||||||
|
shared_ptr <VolumePassword> m_protectionPassword;
|
||||||
|
shared_ptr<Pkcs5Kdf> m_protectionKdf;
|
||||||
|
shared_ptr <KeyfileList> m_protectionKeyfiles;
|
||||||
|
bool m_sharedAccessAllowed;
|
||||||
|
VolumeType::Enum m_volumeType;
|
||||||
|
bool m_useBackupHeaders;
|
||||||
|
bool m_partitionInSystemEncryptionScope;
|
||||||
|
shared_ptr <Volume> m_pVolume;
|
||||||
|
|
||||||
|
OpenVolumeThreadRoutine(shared_ptr <VolumePath> volumePath, bool preserveTimestamps, shared_ptr <VolumePassword> password, shared_ptr<Pkcs5Kdf> Kdf, shared_ptr <KeyfileList> keyfiles, VolumeProtection::Enum protection = VolumeProtection::None, shared_ptr <VolumePassword> protectionPassword = shared_ptr <VolumePassword> (), shared_ptr<Pkcs5Kdf> protectionKdf = shared_ptr<Pkcs5Kdf> (), shared_ptr <KeyfileList> protectionKeyfiles = shared_ptr <KeyfileList> (), bool sharedAccessAllowed = false, VolumeType::Enum volumeType = VolumeType::Unknown, bool useBackupHeaders = false, bool partitionInSystemEncryptionScope = false):
|
||||||
|
m_volumePath(volumePath), m_preserveTimestamps(preserveTimestamps), m_password(password), m_Kdf(Kdf), m_keyfiles(keyfiles),
|
||||||
|
m_protection(protection), m_protectionPassword(protectionPassword), m_protectionKdf(protectionKdf), m_protectionKeyfiles(protectionKeyfiles), m_sharedAccessAllowed(sharedAccessAllowed), m_volumeType(volumeType),m_useBackupHeaders(useBackupHeaders),
|
||||||
|
m_partitionInSystemEncryptionScope(partitionInSystemEncryptionScope) {}
|
||||||
|
|
||||||
|
~OpenVolumeThreadRoutine() {}
|
||||||
|
|
||||||
|
virtual void ExecutionCode(void) { m_pVolume = Core->OpenVolume(m_volumePath,m_preserveTimestamps,m_password,m_Kdf,m_keyfiles, m_protection,m_protectionPassword,m_protectionKdf, m_protectionKeyfiles,m_sharedAccessAllowed,m_volumeType,m_useBackupHeaders, m_partitionInSystemEncryptionScope); }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class ReEncryptHeaderThreadRoutine : public WaitThreadRoutine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
const BufferPtr &m_newHeaderBuffer;
|
||||||
|
shared_ptr <VolumeHeader> m_header;
|
||||||
|
shared_ptr <VolumePassword> m_password;
|
||||||
|
shared_ptr <KeyfileList> m_keyfiles;
|
||||||
|
ReEncryptHeaderThreadRoutine(const BufferPtr &newHeaderBuffer, shared_ptr <VolumeHeader> header, shared_ptr <VolumePassword> password, shared_ptr <KeyfileList> keyfiles)
|
||||||
|
: m_newHeaderBuffer(newHeaderBuffer), m_header(header), m_password(password), m_keyfiles(keyfiles) {}
|
||||||
|
virtual ~ReEncryptHeaderThreadRoutine() { }
|
||||||
|
virtual void ExecutionCode(void) { Core->ReEncryptVolumeHeaderWithNewSalt (m_newHeaderBuffer, m_header, m_password, m_keyfiles); }
|
||||||
|
};
|
||||||
|
|
||||||
|
class DecryptThreadRoutine : public WaitThreadRoutine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
shared_ptr <VolumeHeader> m_pHeader;
|
||||||
|
const ConstBufferPtr &m_encryptedData;
|
||||||
|
const VolumePassword &m_password;
|
||||||
|
shared_ptr <Pkcs5Kdf> m_kdf;
|
||||||
|
const Pkcs5KdfList &m_keyDerivationFunctions;
|
||||||
|
const EncryptionAlgorithmList &m_encryptionAlgorithms;
|
||||||
|
const EncryptionModeList &m_encryptionModes;
|
||||||
|
bool m_bResult;
|
||||||
|
DecryptThreadRoutine(shared_ptr <VolumeHeader> header, const ConstBufferPtr &encryptedData, const VolumePassword &password, shared_ptr <Pkcs5Kdf> kdf, const Pkcs5KdfList &keyDerivationFunctions, const EncryptionAlgorithmList &encryptionAlgorithms, const EncryptionModeList &encryptionModes)
|
||||||
|
: m_pHeader(header), m_encryptedData(encryptedData), m_password(password), m_kdf(kdf), m_keyDerivationFunctions(keyDerivationFunctions), m_encryptionAlgorithms(encryptionAlgorithms), m_encryptionModes(encryptionModes), m_bResult(false){}
|
||||||
|
virtual ~DecryptThreadRoutine() { }
|
||||||
|
virtual void ExecutionCode(void) { m_bResult = m_pHeader->Decrypt(m_encryptedData, m_password, m_kdf, m_keyDerivationFunctions, m_encryptionAlgorithms, m_encryptionModes); }
|
||||||
|
};
|
||||||
|
|
||||||
|
class WaitThreadUI
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WaitThreadUI(WaitThreadRoutine* pRoutine): m_pRoutine(pRoutine) {}
|
||||||
|
virtual ~WaitThreadUI() {}
|
||||||
|
virtual void Run(void) { m_pRoutine->ExecutionCode();}
|
||||||
|
WaitThreadRoutine* m_pRoutine;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TC_HEADER_Core_Core
|
#endif // TC_HEADER_Core_Core
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "CoreException.h"
|
#include "CoreException.h"
|
||||||
#include "HostDevice.h"
|
#include "HostDevice.h"
|
||||||
#include "MountOptions.h"
|
#include "MountOptions.h"
|
||||||
|
#include "VolumeCreator.h"
|
||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "Main/Main.h"
|
#include "Main/Main.h"
|
||||||
#include "Main/GraphicUserInterface.h"
|
#include "Main/GraphicUserInterface.h"
|
||||||
#include "ChangePasswordDialog.h"
|
#include "ChangePasswordDialog.h"
|
||||||
|
#include "WaitDialog.h"
|
||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
@ -124,9 +125,11 @@ namespace VeraCrypt
|
|||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
wxBusyCursor busy;
|
wxBusyCursor busy;
|
||||||
Core->ChangePassword (Path, Gui->GetPreferences().DefaultMountOptions.PreserveTimestamps,
|
ChangePasswordThreadRoutine routine(Path, Gui->GetPreferences().DefaultMountOptions.PreserveTimestamps,
|
||||||
CurrentPasswordPanel->GetPassword(), CurrentPasswordPanel->GetPkcs5Kdf(), CurrentPasswordPanel->GetKeyfiles(),
|
CurrentPasswordPanel->GetPassword(), CurrentPasswordPanel->GetPkcs5Kdf(), CurrentPasswordPanel->GetKeyfiles(),
|
||||||
newPassword, newKeyfiles, NewPasswordPanel->GetPkcs5Kdf(), NewPasswordPanel->GetHeaderWipeCount());
|
newPassword, newKeyfiles, NewPasswordPanel->GetPkcs5Kdf(), NewPasswordPanel->GetHeaderWipeCount());
|
||||||
|
WaitDialog dlg(this, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine);
|
||||||
|
dlg.Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (DialogMode)
|
switch (DialogMode)
|
||||||
|
35
src/Main/Forms/Forms.cpp
Normal file → Executable file
35
src/Main/Forms/Forms.cpp
Normal file → Executable file
@ -3349,3 +3349,38 @@ VolumeSizeWizardPageBase::~VolumeSizeWizardPageBase()
|
|||||||
VolumeSizePrefixChoice->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( VolumeSizeWizardPageBase::OnVolumeSizePrefixSelected ), NULL, this );
|
VolumeSizePrefixChoice->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( VolumeSizeWizardPageBase::OnVolumeSizePrefixSelected ), NULL, this );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WaitDialogBase::WaitDialogBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
|
||||||
|
{
|
||||||
|
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
||||||
|
|
||||||
|
wxBoxSizer* bSizer160;
|
||||||
|
bSizer160 = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
|
WaitStaticText = new wxStaticText( this, wxID_ANY, _("MyLabel"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
|
||||||
|
WaitStaticText->Wrap( -1 );
|
||||||
|
bSizer160->Add( WaitStaticText, 0, wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
WaitProgessBar = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL|wxGA_SMOOTH );
|
||||||
|
WaitProgessBar->SetValue( 0 );
|
||||||
|
bSizer160->Add( WaitProgessBar, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
this->SetSizer( bSizer160 );
|
||||||
|
this->Layout();
|
||||||
|
bSizer160->Fit( this );
|
||||||
|
|
||||||
|
this->Centre( wxBOTH );
|
||||||
|
|
||||||
|
// Connect Events
|
||||||
|
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( WaitDialogBase::OnWaitDialogClose ) );
|
||||||
|
this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( WaitDialogBase::OnWaitDialogInit ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
WaitDialogBase::~WaitDialogBase()
|
||||||
|
{
|
||||||
|
// Disconnect Events
|
||||||
|
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( WaitDialogBase::OnWaitDialogClose ) );
|
||||||
|
this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( WaitDialogBase::OnWaitDialogInit ) );
|
||||||
|
|
||||||
|
}
|
||||||
|
23
src/Main/Forms/Forms.h
Normal file → Executable file
23
src/Main/Forms/Forms.h
Normal file → Executable file
@ -1025,6 +1025,29 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// Class WaitDialogBase
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class WaitDialogBase : public wxDialog
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxStaticText* WaitStaticText;
|
||||||
|
wxGauge* WaitProgessBar;
|
||||||
|
|
||||||
|
// Virtual event handlers, overide them in your derived class
|
||||||
|
virtual void OnWaitDialogClose( wxCloseEvent& event ) { event.Skip(); }
|
||||||
|
virtual void OnWaitDialogInit( wxInitDialogEvent& event ) { event.Skip(); }
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
WaitDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("VeraCrypt"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxCAPTION );
|
||||||
|
~WaitDialogBase();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace VeraCrypt
|
} // namespace VeraCrypt
|
||||||
|
|
||||||
#endif //__FORMS_H__
|
#endif //__FORMS_H__
|
||||||
|
@ -36,6 +36,10 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_UPDATE_VOLUME_LIST)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_PREF_UPDATED)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_OPEN_VOLUME_REQUEST)
|
||||||
|
|
||||||
MainFrame::MainFrame (wxWindow* parent) : MainFrameBase (parent),
|
MainFrame::MainFrame (wxWindow* parent) : MainFrameBase (parent),
|
||||||
ListItemRightClickEventPending (false),
|
ListItemRightClickEventPending (false),
|
||||||
SelectedItemIndex (-1),
|
SelectedItemIndex (-1),
|
||||||
@ -84,6 +88,11 @@ namespace VeraCrypt
|
|||||||
Gui->ShowError (e);
|
Gui->ShowError (e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Connect( wxID_ANY, wxEVT_COMMAND_UPDATE_VOLUME_LIST, wxCommandEventHandler( MainFrame::OnUpdateVolumeList ) );
|
||||||
|
Connect( wxID_ANY, wxEVT_COMMAND_PREF_UPDATED, wxCommandEventHandler( MainFrame::OnPreferencesUpdated ) );
|
||||||
|
Connect( wxID_ANY, wxEVT_COMMAND_OPEN_VOLUME_REQUEST, wxCommandEventHandler( MainFrame::OnOpenVolumeSystemRequest ) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MainFrame::~MainFrame ()
|
MainFrame::~MainFrame ()
|
||||||
@ -100,6 +109,9 @@ namespace VeraCrypt
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Disconnect( wxID_ANY, wxEVT_COMMAND_UPDATE_VOLUME_LIST, wxCommandEventHandler( MainFrame::OnUpdateVolumeList ) );
|
||||||
|
Disconnect( wxID_ANY, wxEVT_COMMAND_PREF_UPDATED, wxCommandEventHandler( MainFrame::OnPreferencesUpdated ) );
|
||||||
|
Disconnect( wxID_ANY, wxEVT_COMMAND_OPEN_VOLUME_REQUEST, wxCommandEventHandler( MainFrame::OnOpenVolumeSystemRequest ) );
|
||||||
Core->VolumeMountedEvent.Disconnect (this);
|
Core->VolumeMountedEvent.Disconnect (this);
|
||||||
Core->VolumeDismountedEvent.Disconnect (this);
|
Core->VolumeDismountedEvent.Disconnect (this);
|
||||||
Gui->OpenVolumeSystemRequestEvent.Disconnect (this);
|
Gui->OpenVolumeSystemRequestEvent.Disconnect (this);
|
||||||
@ -343,7 +355,7 @@ namespace VeraCrypt
|
|||||||
Core->VolumeMountedEvent.Connect (EventConnector <MainFrame> (this, &MainFrame::OnVolumeMounted));
|
Core->VolumeMountedEvent.Connect (EventConnector <MainFrame> (this, &MainFrame::OnVolumeMounted));
|
||||||
Core->VolumeDismountedEvent.Connect (EventConnector <MainFrame> (this, &MainFrame::OnVolumeDismounted));
|
Core->VolumeDismountedEvent.Connect (EventConnector <MainFrame> (this, &MainFrame::OnVolumeDismounted));
|
||||||
Gui->OpenVolumeSystemRequestEvent.Connect (EventConnector <MainFrame> (this, &MainFrame::OnOpenVolumeSystemRequestEvent));
|
Gui->OpenVolumeSystemRequestEvent.Connect (EventConnector <MainFrame> (this, &MainFrame::OnOpenVolumeSystemRequestEvent));
|
||||||
Gui->PreferencesUpdatedEvent.Connect (EventConnector <MainFrame> (this, &MainFrame::OnPreferencesUpdated));
|
Gui->PreferencesUpdatedEvent.Connect (EventConnector <MainFrame> (this, &MainFrame::OnPreferencesUpdatedEvent));
|
||||||
|
|
||||||
// Drag & drop
|
// Drag & drop
|
||||||
class FileDropTarget : public wxFileDropTarget
|
class FileDropTarget : public wxFileDropTarget
|
||||||
@ -1139,7 +1151,22 @@ namespace VeraCrypt
|
|||||||
dialog.ShowModal();
|
dialog.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainFrame::OnPreferencesUpdated (EventArgs &args)
|
void MainFrame::OnOpenVolumeSystemRequest (wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
wstring* eventPath = (wstring*) event.GetClientData();
|
||||||
|
SetVolumePath (*eventPath);
|
||||||
|
delete eventPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainFrame::OnOpenVolumeSystemRequestEvent (EventArgs &args)
|
||||||
|
{
|
||||||
|
wstring* eventPath = new wstring (dynamic_cast <OpenVolumeSystemRequestEventArgs &> (args).mVolumePath);
|
||||||
|
wxCommandEvent* pEvent = new wxCommandEvent( wxEVT_COMMAND_OPEN_VOLUME_REQUEST,0);
|
||||||
|
pEvent->SetClientData(eventPath);
|
||||||
|
wxQueueEvent (this, pEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainFrame::OnPreferencesUpdated (wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
const UserPreferences &prefs = GetPreferences();
|
const UserPreferences &prefs = GetPreferences();
|
||||||
|
|
||||||
|
@ -16,6 +16,10 @@ namespace VeraCrypt
|
|||||||
{
|
{
|
||||||
struct FavoriteVolume;
|
struct FavoriteVolume;
|
||||||
|
|
||||||
|
DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_UPDATE_VOLUME_LIST, -1);
|
||||||
|
DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_PREF_UPDATED, -1);
|
||||||
|
DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_OPEN_VOLUME_REQUEST, -1);
|
||||||
|
|
||||||
class MainFrame : public MainFrameBase
|
class MainFrame : public MainFrameBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -109,10 +113,12 @@ namespace VeraCrypt
|
|||||||
void OnNoHistoryCheckBoxClick (wxCommandEvent& event);
|
void OnNoHistoryCheckBoxClick (wxCommandEvent& event);
|
||||||
void OnOnlineHelpMenuItemSelected (wxCommandEvent& event) { Gui->OpenOnlineHelp (this); }
|
void OnOnlineHelpMenuItemSelected (wxCommandEvent& event) { Gui->OpenOnlineHelp (this); }
|
||||||
void OnOpenVolumeMenuItemSelected (wxCommandEvent& event) { OpenSelectedVolume(); }
|
void OnOpenVolumeMenuItemSelected (wxCommandEvent& event) { OpenSelectedVolume(); }
|
||||||
void OnOpenVolumeSystemRequestEvent (EventArgs &args) { SetVolumePath (wstring (dynamic_cast <OpenVolumeSystemRequestEventArgs &> (args).mVolumePath)); }
|
void OnOpenVolumeSystemRequest (wxCommandEvent& event);
|
||||||
|
void OnOpenVolumeSystemRequestEvent (EventArgs &args);
|
||||||
void OnOrganizeFavoritesMenuItemSelected (wxCommandEvent& event);
|
void OnOrganizeFavoritesMenuItemSelected (wxCommandEvent& event);
|
||||||
void OnPreferencesMenuItemSelected (wxCommandEvent& event);
|
void OnPreferencesMenuItemSelected (wxCommandEvent& event);
|
||||||
void OnPreferencesUpdated (EventArgs &args);
|
void OnPreferencesUpdated (wxCommandEvent& event);
|
||||||
|
void OnPreferencesUpdatedEvent (EventArgs &args) { wxQueueEvent (this, new wxCommandEvent( wxEVT_COMMAND_PREF_UPDATED,0)); }
|
||||||
void OnRemoveKeyfilesMenuItemSelected (wxCommandEvent& event) { ChangePassword (ChangePasswordDialog::Mode::RemoveAllKeyfiles); }
|
void OnRemoveKeyfilesMenuItemSelected (wxCommandEvent& event) { ChangePassword (ChangePasswordDialog::Mode::RemoveAllKeyfiles); }
|
||||||
void OnRepairFilesystemMenuItemSelected( wxCommandEvent& event ) { CheckFilesystem (true); }
|
void OnRepairFilesystemMenuItemSelected( wxCommandEvent& event ) { CheckFilesystem (true); }
|
||||||
void OnRestoreVolumeHeaderMenuItemSelected (wxCommandEvent& event);
|
void OnRestoreVolumeHeaderMenuItemSelected (wxCommandEvent& event);
|
||||||
@ -126,8 +132,9 @@ namespace VeraCrypt
|
|||||||
void OnVolumePropertiesButtonClick (wxCommandEvent& event);
|
void OnVolumePropertiesButtonClick (wxCommandEvent& event);
|
||||||
void OnVolumeToolsButtonClick (wxCommandEvent& event);
|
void OnVolumeToolsButtonClick (wxCommandEvent& event);
|
||||||
void OnVolumeButtonClick (wxCommandEvent& event);
|
void OnVolumeButtonClick (wxCommandEvent& event);
|
||||||
void OnVolumeDismounted (EventArgs &args) { UpdateVolumeList(); }
|
void OnUpdateVolumeList (wxCommandEvent& event) { UpdateVolumeList(); }
|
||||||
void OnVolumeMounted (EventArgs &args) { UpdateVolumeList(); }
|
void OnVolumeDismounted (EventArgs &args) { wxQueueEvent (this, new wxCommandEvent( wxEVT_COMMAND_UPDATE_VOLUME_LIST,0)); }
|
||||||
|
void OnVolumeMounted (EventArgs &args) { wxQueueEvent (this, new wxCommandEvent( wxEVT_COMMAND_UPDATE_VOLUME_LIST,0)); }
|
||||||
void OnUserGuideMenuItemSelected (wxCommandEvent& event) { Gui->OpenUserGuide (this); }
|
void OnUserGuideMenuItemSelected (wxCommandEvent& event) { Gui->OpenUserGuide (this); }
|
||||||
void OnWebsiteMenuItemSelected (wxCommandEvent& event) { Gui->OpenHomepageLink (this, L"website"); }
|
void OnWebsiteMenuItemSelected (wxCommandEvent& event) { Gui->OpenHomepageLink (this, L"website"); }
|
||||||
void OnWipeCacheButtonClick (wxCommandEvent& event);
|
void OnWipeCacheButtonClick (wxCommandEvent& event);
|
||||||
|
239
src/Main/Forms/TrueCrypt.fbp
Normal file → Executable file
239
src/Main/Forms/TrueCrypt.fbp
Normal file → Executable file
@ -26918,5 +26918,244 @@
|
|||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="Dialog" expanded="0">
|
||||||
|
<property name="aui_managed">0</property>
|
||||||
|
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="center">wxBOTH</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="event_handler">impl_virtual</property>
|
||||||
|
<property name="extra_style"></property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">WaitDialogBase</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="size">-1,-1</property>
|
||||||
|
<property name="style">wxCAPTION</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="title">VeraCrypt</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnActivate"></event>
|
||||||
|
<event name="OnActivateApp"></event>
|
||||||
|
<event name="OnAuiFindManager"></event>
|
||||||
|
<event name="OnAuiPaneButton"></event>
|
||||||
|
<event name="OnAuiPaneClose"></event>
|
||||||
|
<event name="OnAuiPaneMaximize"></event>
|
||||||
|
<event name="OnAuiPaneRestore"></event>
|
||||||
|
<event name="OnAuiRender"></event>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnClose">OnWaitDialogClose</event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnHibernate"></event>
|
||||||
|
<event name="OnIconize"></event>
|
||||||
|
<event name="OnIdle"></event>
|
||||||
|
<event name="OnInitDialog">OnWaitDialogInit</event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
<object class="wxBoxSizer" expanded="0">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bSizer160</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticText" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">MyLabel</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">WaitStaticText</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxALIGN_CENTRE</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="0">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxALL|wxEXPAND</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxGauge" expanded="0">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">WaitProgessBar</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="range">100</property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style">wxGA_HORIZONTAL|wxGA_SMOOTH</property>
|
||||||
|
<property name="subclass"></property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="validator_data_type"></property>
|
||||||
|
<property name="validator_style">wxFILTER_NONE</property>
|
||||||
|
<property name="validator_type">wxDefaultValidator</property>
|
||||||
|
<property name="validator_variable"></property>
|
||||||
|
<property name="value">0</property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<event name="OnChar"></event>
|
||||||
|
<event name="OnEnterWindow"></event>
|
||||||
|
<event name="OnEraseBackground"></event>
|
||||||
|
<event name="OnKeyDown"></event>
|
||||||
|
<event name="OnKeyUp"></event>
|
||||||
|
<event name="OnKillFocus"></event>
|
||||||
|
<event name="OnLeaveWindow"></event>
|
||||||
|
<event name="OnLeftDClick"></event>
|
||||||
|
<event name="OnLeftDown"></event>
|
||||||
|
<event name="OnLeftUp"></event>
|
||||||
|
<event name="OnMiddleDClick"></event>
|
||||||
|
<event name="OnMiddleDown"></event>
|
||||||
|
<event name="OnMiddleUp"></event>
|
||||||
|
<event name="OnMotion"></event>
|
||||||
|
<event name="OnMouseEvents"></event>
|
||||||
|
<event name="OnMouseWheel"></event>
|
||||||
|
<event name="OnPaint"></event>
|
||||||
|
<event name="OnRightDClick"></event>
|
||||||
|
<event name="OnRightDown"></event>
|
||||||
|
<event name="OnRightUp"></event>
|
||||||
|
<event name="OnSetFocus"></event>
|
||||||
|
<event name="OnSize"></event>
|
||||||
|
<event name="OnUpdateUI"></event>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</wxFormBuilder_Project>
|
</wxFormBuilder_Project>
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "VolumeLocationWizardPage.h"
|
#include "VolumeLocationWizardPage.h"
|
||||||
#include "VolumePasswordWizardPage.h"
|
#include "VolumePasswordWizardPage.h"
|
||||||
#include "VolumeSizeWizardPage.h"
|
#include "VolumeSizeWizardPage.h"
|
||||||
|
#include "WaitDialog.h"
|
||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
@ -865,7 +866,9 @@ namespace VeraCrypt
|
|||||||
options->VolumeHeaderKdf = Pkcs5Kdf::GetAlgorithm (*SelectedHash);
|
options->VolumeHeaderKdf = Pkcs5Kdf::GetAlgorithm (*SelectedHash);
|
||||||
|
|
||||||
Creator.reset (new VolumeCreator);
|
Creator.reset (new VolumeCreator);
|
||||||
Creator->CreateVolume (options);
|
VolumeCreatorThreadRoutine routine(options, Creator);
|
||||||
|
WaitDialog dlg(this, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine);
|
||||||
|
dlg.Run();
|
||||||
|
|
||||||
page->SetKeyInfo (Creator->GetKeyInfo());
|
page->SetKeyInfo (Creator->GetKeyInfo());
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ namespace VeraCrypt
|
|||||||
volatile bool AbortConfirmationPending;
|
volatile bool AbortConfirmationPending;
|
||||||
volatile bool AbortRequested;
|
volatile bool AbortRequested;
|
||||||
volatile bool CreationAborted;
|
volatile bool CreationAborted;
|
||||||
auto_ptr <VolumeCreator> Creator;
|
shared_ptr <VolumeCreator> Creator;
|
||||||
bool CrossPlatformSupport;
|
bool CrossPlatformSupport;
|
||||||
static bool DeviceWarningConfirmed;
|
static bool DeviceWarningConfirmed;
|
||||||
bool DisplayKeyInfo;
|
bool DisplayKeyInfo;
|
||||||
|
94
src/Main/Forms/WaitDialog.cpp
Executable file
94
src/Main/Forms/WaitDialog.cpp
Executable file
@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2014 IDRIX. All rights reserved.
|
||||||
|
|
||||||
|
Governed by the VeraCrypt License the full text of which is contained in
|
||||||
|
the file License.txt included in VeraCrypt binary and source code distribution
|
||||||
|
packages.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "System.h"
|
||||||
|
#include "Volume/EncryptionModeXTS.h"
|
||||||
|
#include "Main/GraphicUserInterface.h"
|
||||||
|
#include "Common/SecurityToken.h"
|
||||||
|
#include "WaitDialog.h"
|
||||||
|
|
||||||
|
namespace VeraCrypt
|
||||||
|
{
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED)
|
||||||
|
|
||||||
|
wxThread::ExitCode WaitThread::Entry()
|
||||||
|
{
|
||||||
|
wxCommandEvent finishEvent( wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED,0);
|
||||||
|
|
||||||
|
m_pRoutine->Execute();
|
||||||
|
wxQueueEvent (m_pHandler, new wxCommandEvent( wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED,0));
|
||||||
|
return (wxThread::ExitCode)0; // success
|
||||||
|
}
|
||||||
|
|
||||||
|
void WaitDialog::ThrowException(Exception* ex)
|
||||||
|
{
|
||||||
|
#define VC_CONVERT_EXCEPTION(NAME) if (dynamic_cast<NAME*> (ex)) throw (NAME&) *ex;
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordKeyfilesIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordOrKeyboardLayoutIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordOrMountOptionsIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (ProtectionPasswordIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (ProtectionPasswordKeyfilesIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordEmpty);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordTooLong);
|
||||||
|
VC_CONVERT_EXCEPTION (UnportablePassword);
|
||||||
|
VC_CONVERT_EXCEPTION (ElevationFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (RootDeviceUnavailable);
|
||||||
|
VC_CONVERT_EXCEPTION (DriveLetterUnavailable);
|
||||||
|
VC_CONVERT_EXCEPTION (DriverError);
|
||||||
|
VC_CONVERT_EXCEPTION (EncryptedSystemRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (HigherFuseVersionRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (KernelCryptoServiceTestFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (LoopDeviceSetupFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (MountPointRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (MountPointUnavailable);
|
||||||
|
VC_CONVERT_EXCEPTION (NoDriveLetterAvailable);
|
||||||
|
VC_CONVERT_EXCEPTION (TemporaryDirectoryFailure);
|
||||||
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSizeHiddenVolumeProtection);
|
||||||
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSizeNoKernelCrypto);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeAlreadyMounted);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeSlotUnavailable);
|
||||||
|
VC_CONVERT_EXCEPTION (UserInterfaceException);
|
||||||
|
VC_CONVERT_EXCEPTION (MissingArgument);
|
||||||
|
VC_CONVERT_EXCEPTION (NoItemSelected);
|
||||||
|
VC_CONVERT_EXCEPTION (StringFormatterException);
|
||||||
|
VC_CONVERT_EXCEPTION (ExecutedProcessFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (AlreadyInitialized);
|
||||||
|
VC_CONVERT_EXCEPTION (AssertionFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (ExternalException);
|
||||||
|
VC_CONVERT_EXCEPTION (InsufficientData);
|
||||||
|
VC_CONVERT_EXCEPTION (NotApplicable);
|
||||||
|
VC_CONVERT_EXCEPTION (NotImplemented);
|
||||||
|
VC_CONVERT_EXCEPTION (NotInitialized);
|
||||||
|
VC_CONVERT_EXCEPTION (ParameterIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (ParameterTooLarge);
|
||||||
|
VC_CONVERT_EXCEPTION (PartitionDeviceRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (StringConversionFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (TestFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (TimeOut);
|
||||||
|
VC_CONVERT_EXCEPTION (UnknownException);
|
||||||
|
VC_CONVERT_EXCEPTION (UserAbort)
|
||||||
|
VC_CONVERT_EXCEPTION (CipherInitError);
|
||||||
|
VC_CONVERT_EXCEPTION (WeakKeyDetected);
|
||||||
|
VC_CONVERT_EXCEPTION (HigherVersionRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (KeyfilePathEmpty);
|
||||||
|
VC_CONVERT_EXCEPTION (MissingVolumeData);
|
||||||
|
VC_CONVERT_EXCEPTION (MountedVolumeInUse);
|
||||||
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSize);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeEncryptionNotCompleted);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeHostInUse);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeProtected);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeReadOnly);
|
||||||
|
VC_CONVERT_EXCEPTION (Pkcs11Exception);
|
||||||
|
VC_CONVERT_EXCEPTION (InvalidSecurityTokenKeyfilePath);
|
||||||
|
VC_CONVERT_EXCEPTION (SecurityTokenLibraryNotInitialized);
|
||||||
|
VC_CONVERT_EXCEPTION (SecurityTokenKeyfileAlreadyExists);
|
||||||
|
VC_CONVERT_EXCEPTION (SecurityTokenKeyfileNotFound);
|
||||||
|
throw *ex;
|
||||||
|
}
|
||||||
|
}
|
90
src/Main/Forms/WaitDialog.h
Executable file
90
src/Main/Forms/WaitDialog.h
Executable file
@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2014 IDRIX. All rights reserved.
|
||||||
|
|
||||||
|
Governed by the VeraCrypt License the full text of which is contained in
|
||||||
|
the file License.txt included in VeraCrypt binary and source code distribution
|
||||||
|
packages.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TC_HEADER_Main_Forms_WaitDialog
|
||||||
|
#define TC_HEADER_Main_Forms_WaitDialog
|
||||||
|
|
||||||
|
#include "Forms.h"
|
||||||
|
#include "Main/Main.h"
|
||||||
|
|
||||||
|
namespace VeraCrypt
|
||||||
|
{
|
||||||
|
|
||||||
|
DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED, -1);
|
||||||
|
|
||||||
|
class WaitDialog;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class WaitThread : public wxThread
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WaitThread(WaitDialog *handler, WaitThreadRoutine* pRoutine) : wxThread(wxTHREAD_DETACHED), m_pRoutine(pRoutine)
|
||||||
|
{
|
||||||
|
m_pHandler = handler;
|
||||||
|
}
|
||||||
|
~WaitThread()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual ExitCode Entry();
|
||||||
|
WaitDialog *m_pHandler;
|
||||||
|
WaitThreadRoutine* m_pRoutine;
|
||||||
|
};
|
||||||
|
|
||||||
|
class WaitDialog : public WaitDialogBase, public WaitThreadUI
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WaitDialog (wxWindow *parent, const wxString& label, WaitThreadRoutine* pRoutine)
|
||||||
|
: WaitDialogBase(parent), WaitThreadUI(pRoutine), m_timer (this)
|
||||||
|
{
|
||||||
|
WaitStaticText->SetLabel (label);
|
||||||
|
WaitProgessBar->Pulse();
|
||||||
|
Layout();
|
||||||
|
GetSizer()->Fit( this );
|
||||||
|
Centre( wxBOTH );
|
||||||
|
Connect( wxID_ANY, wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED, wxCommandEventHandler( WaitDialog::OnThreadCompletion ) );
|
||||||
|
Connect( wxEVT_TIMER, wxTimerEventHandler( WaitDialog::OnProgressTimer ), NULL, this );
|
||||||
|
m_thread = new WaitThread(this, pRoutine);
|
||||||
|
}
|
||||||
|
|
||||||
|
~WaitDialog()
|
||||||
|
{
|
||||||
|
Disconnect( wxEVT_TIMER, wxTimerEventHandler( WaitDialog::OnProgressTimer ));
|
||||||
|
Disconnect( wxID_ANY, wxEVT_COMMAND_WAITDIALOGTHREAD_COMPLETED, wxCommandEventHandler( WaitDialog::OnThreadCompletion ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void OnWaitDialogInit( wxInitDialogEvent& event )
|
||||||
|
{
|
||||||
|
m_thread->Run();
|
||||||
|
m_timer.Start(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
// virtual void OnWaitDialogClose( wxCloseEvent& event ) { }
|
||||||
|
void OnThreadCompletion(wxCommandEvent &)
|
||||||
|
{
|
||||||
|
EndModal(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnProgressTimer(wxTimerEvent& event)
|
||||||
|
{
|
||||||
|
WaitProgessBar->Pulse();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void Run(void) { ShowModal(); if (m_pRoutine->HasException()) ThrowException(m_pRoutine->m_pException); }
|
||||||
|
|
||||||
|
void ThrowException(Exception* ex);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
WaitThread* m_thread;
|
||||||
|
wxTimer m_timer;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // TC_HEADER_Main_Forms_WaitDialog
|
@ -30,6 +30,7 @@
|
|||||||
#include "Forms/MountOptionsDialog.h"
|
#include "Forms/MountOptionsDialog.h"
|
||||||
#include "Forms/RandomPoolEnrichmentDialog.h"
|
#include "Forms/RandomPoolEnrichmentDialog.h"
|
||||||
#include "Forms/SecurityTokenKeyfilesDialog.h"
|
#include "Forms/SecurityTokenKeyfilesDialog.h"
|
||||||
|
#include "Forms/WaitDialog.h"
|
||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
@ -173,7 +174,7 @@ namespace VeraCrypt
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
wxBusyCursor busy;
|
wxBusyCursor busy;
|
||||||
volume = Core->OpenVolume (
|
OpenVolumeThreadRoutine routine(
|
||||||
options->Path,
|
options->Path,
|
||||||
options->PreserveTimestamps,
|
options->PreserveTimestamps,
|
||||||
options->Password,
|
options->Password,
|
||||||
@ -187,6 +188,10 @@ namespace VeraCrypt
|
|||||||
volumeType,
|
volumeType,
|
||||||
options->UseBackupHeaders
|
options->UseBackupHeaders
|
||||||
);
|
);
|
||||||
|
WaitDialog dlg(parent, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine);
|
||||||
|
dlg.Run();
|
||||||
|
|
||||||
|
volume = routine.m_pVolume;
|
||||||
}
|
}
|
||||||
catch (PasswordException &e)
|
catch (PasswordException &e)
|
||||||
{
|
{
|
||||||
@ -263,14 +268,18 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
// Re-encrypt volume header
|
// Re-encrypt volume header
|
||||||
SecureBuffer newHeaderBuffer (normalVolume->GetLayout()->GetHeaderSize());
|
SecureBuffer newHeaderBuffer (normalVolume->GetLayout()->GetHeaderSize());
|
||||||
Core->ReEncryptVolumeHeaderWithNewSalt (newHeaderBuffer, normalVolume->GetHeader(), normalVolumeMountOptions.Password, normalVolumeMountOptions.Keyfiles);
|
ReEncryptHeaderThreadRoutine routine(newHeaderBuffer, normalVolume->GetHeader(), normalVolumeMountOptions.Password, normalVolumeMountOptions.Keyfiles);
|
||||||
|
WaitDialog dlg(parent, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine);
|
||||||
|
dlg.Run();
|
||||||
|
|
||||||
backupFile.Write (newHeaderBuffer);
|
backupFile.Write (newHeaderBuffer);
|
||||||
|
|
||||||
if (hiddenVolume)
|
if (hiddenVolume)
|
||||||
{
|
{
|
||||||
// Re-encrypt hidden volume header
|
// Re-encrypt hidden volume header
|
||||||
Core->ReEncryptVolumeHeaderWithNewSalt (newHeaderBuffer, hiddenVolume->GetHeader(), hiddenVolumeMountOptions.Password, hiddenVolumeMountOptions.Keyfiles);
|
ReEncryptHeaderThreadRoutine hiddenRoutine(newHeaderBuffer, hiddenVolume->GetHeader(), hiddenVolumeMountOptions.Password, hiddenVolumeMountOptions.Keyfiles);
|
||||||
|
WaitDialog hiddenDlg(parent, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &hiddenRoutine);
|
||||||
|
hiddenDlg.Run();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1259,7 +1268,7 @@ namespace VeraCrypt
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
wxBusyCursor busy;
|
wxBusyCursor busy;
|
||||||
volume = Core->OpenVolume (
|
OpenVolumeThreadRoutine routine(
|
||||||
options.Path,
|
options.Path,
|
||||||
options.PreserveTimestamps,
|
options.PreserveTimestamps,
|
||||||
options.Password,
|
options.Password,
|
||||||
@ -1273,6 +1282,10 @@ namespace VeraCrypt
|
|||||||
VolumeType::Unknown,
|
VolumeType::Unknown,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
WaitDialog dlg(parent, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine);
|
||||||
|
dlg.Run();
|
||||||
|
|
||||||
|
volume = routine.m_pVolume;
|
||||||
}
|
}
|
||||||
catch (PasswordException &e)
|
catch (PasswordException &e)
|
||||||
{
|
{
|
||||||
@ -1293,7 +1306,9 @@ namespace VeraCrypt
|
|||||||
// Re-encrypt volume header
|
// Re-encrypt volume header
|
||||||
wxBusyCursor busy;
|
wxBusyCursor busy;
|
||||||
SecureBuffer newHeaderBuffer (volume->GetLayout()->GetHeaderSize());
|
SecureBuffer newHeaderBuffer (volume->GetLayout()->GetHeaderSize());
|
||||||
Core->ReEncryptVolumeHeaderWithNewSalt (newHeaderBuffer, volume->GetHeader(), options.Password, options.Keyfiles);
|
ReEncryptHeaderThreadRoutine routine(newHeaderBuffer, volume->GetHeader(), options.Password, options.Keyfiles);
|
||||||
|
WaitDialog dlg(parent, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine);
|
||||||
|
dlg.Run();
|
||||||
|
|
||||||
// Write volume header
|
// Write volume header
|
||||||
int headerOffset = volume->GetLayout()->GetHeaderOffset();
|
int headerOffset = volume->GetLayout()->GetHeaderOffset();
|
||||||
@ -1377,7 +1392,15 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
// Decrypt header
|
// Decrypt header
|
||||||
shared_ptr <VolumePassword> passwordKey = Keyfile::ApplyListToPassword (options.Keyfiles, options.Password);
|
shared_ptr <VolumePassword> passwordKey = Keyfile::ApplyListToPassword (options.Keyfiles, options.Password);
|
||||||
if (layout->GetHeader()->Decrypt (headerBuffer, *passwordKey, options.Kdf, layout->GetSupportedKeyDerivationFunctions(), layout->GetSupportedEncryptionAlgorithms(), layout->GetSupportedEncryptionModes()))
|
Pkcs5KdfList keyDerivationFunctions = layout->GetSupportedKeyDerivationFunctions();
|
||||||
|
EncryptionAlgorithmList encryptionAlgorithms = layout->GetSupportedEncryptionAlgorithms();
|
||||||
|
EncryptionModeList encryptionModes = layout->GetSupportedEncryptionModes();
|
||||||
|
|
||||||
|
DecryptThreadRoutine decryptRoutine(layout->GetHeader(), headerBuffer, *passwordKey, options.Kdf, keyDerivationFunctions, encryptionAlgorithms, encryptionModes);
|
||||||
|
WaitDialog decryptDlg(parent, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &decryptRoutine);
|
||||||
|
decryptDlg.Run();
|
||||||
|
|
||||||
|
if (decryptRoutine.m_bResult)
|
||||||
{
|
{
|
||||||
decryptedLayout = layout;
|
decryptedLayout = layout;
|
||||||
break;
|
break;
|
||||||
@ -1402,7 +1425,9 @@ namespace VeraCrypt
|
|||||||
// Re-encrypt volume header
|
// Re-encrypt volume header
|
||||||
wxBusyCursor busy;
|
wxBusyCursor busy;
|
||||||
SecureBuffer newHeaderBuffer (decryptedLayout->GetHeaderSize());
|
SecureBuffer newHeaderBuffer (decryptedLayout->GetHeaderSize());
|
||||||
Core->ReEncryptVolumeHeaderWithNewSalt (newHeaderBuffer, decryptedLayout->GetHeader(), options.Password, options.Keyfiles);
|
ReEncryptHeaderThreadRoutine routine(newHeaderBuffer, decryptedLayout->GetHeader(), options.Password, options.Keyfiles);
|
||||||
|
WaitDialog dlg(parent, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine);
|
||||||
|
dlg.Run();
|
||||||
|
|
||||||
// Write volume header
|
// Write volume header
|
||||||
int headerOffset = decryptedLayout->GetHeaderOffset();
|
int headerOffset = decryptedLayout->GetHeaderOffset();
|
||||||
@ -1416,7 +1441,9 @@ namespace VeraCrypt
|
|||||||
if (decryptedLayout->HasBackupHeader())
|
if (decryptedLayout->HasBackupHeader())
|
||||||
{
|
{
|
||||||
// Re-encrypt backup volume header
|
// Re-encrypt backup volume header
|
||||||
Core->ReEncryptVolumeHeaderWithNewSalt (newHeaderBuffer, decryptedLayout->GetHeader(), options.Password, options.Keyfiles);
|
ReEncryptHeaderThreadRoutine backupRoutine(newHeaderBuffer, decryptedLayout->GetHeader(), options.Password, options.Keyfiles);
|
||||||
|
WaitDialog backupDlg(parent, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &backupRoutine);
|
||||||
|
backupDlg.Run();
|
||||||
|
|
||||||
// Write backup volume header
|
// Write backup volume header
|
||||||
headerOffset = decryptedLayout->GetBackupHeaderOffset();
|
headerOffset = decryptedLayout->GetBackupHeaderOffset();
|
||||||
@ -1758,6 +1785,20 @@ namespace VeraCrypt
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WaitThreadUI* GraphicUserInterface::GetWaitThreadUI(WaitThreadRoutine *pRoutine) const
|
||||||
|
{
|
||||||
|
return new WaitDialog(GetTopWindow(), LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], pRoutine);
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_ptr <VolumeInfo> GraphicUserInterface::MountVolumeThread (MountOptions &options) const
|
||||||
|
{
|
||||||
|
MountThreadRoutine routine(options);
|
||||||
|
WaitDialog dlg(GetTopWindow(), LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine);
|
||||||
|
dlg.Run();
|
||||||
|
|
||||||
|
return routine.m_pVolume;
|
||||||
|
}
|
||||||
|
|
||||||
DEFINE_EVENT_TYPE (TC_EVENT_THREAD_EXITING);
|
DEFINE_EVENT_TYPE (TC_EVENT_THREAD_EXITING);
|
||||||
|
|
||||||
GraphicUserInterface *Gui = nullptr;
|
GraphicUserInterface *Gui = nullptr;
|
||||||
|
@ -88,6 +88,8 @@ namespace VeraCrypt
|
|||||||
virtual bool UpdateListCtrlItem (wxListCtrl *listCtrl, long itemIndex, const vector <wstring> &itemFields) const;
|
virtual bool UpdateListCtrlItem (wxListCtrl *listCtrl, long itemIndex, const vector <wstring> &itemFields) const;
|
||||||
virtual void UserEnrichRandomPool (wxWindow *parent, shared_ptr <Hash> hash = shared_ptr <Hash>()) const;
|
virtual void UserEnrichRandomPool (wxWindow *parent, shared_ptr <Hash> hash = shared_ptr <Hash>()) const;
|
||||||
virtual void Yield () const;
|
virtual void Yield () const;
|
||||||
|
virtual WaitThreadUI* GetWaitThreadUI(WaitThreadRoutine *pRoutine) const;
|
||||||
|
virtual shared_ptr <VolumeInfo> MountVolumeThread (MountOptions &options) const;
|
||||||
|
|
||||||
#ifdef TC_MACOSX
|
#ifdef TC_MACOSX
|
||||||
virtual void MacOpenFile (const wxString &fileName);
|
virtual void MacOpenFile (const wxString &fileName);
|
||||||
|
@ -52,6 +52,7 @@ OBJS += Forms/VolumeFormatOptionsWizardPage.o
|
|||||||
OBJS += Forms/VolumeLocationWizardPage.o
|
OBJS += Forms/VolumeLocationWizardPage.o
|
||||||
OBJS += Forms/VolumePasswordWizardPage.o
|
OBJS += Forms/VolumePasswordWizardPage.o
|
||||||
OBJS += Forms/VolumeSizeWizardPage.o
|
OBJS += Forms/VolumeSizeWizardPage.o
|
||||||
|
OBJS += Forms/WaitDialog.o
|
||||||
OBJS += Forms/WizardFrame.o
|
OBJS += Forms/WizardFrame.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include "Platform/Unix/Process.h"
|
#include "Platform/Unix/Process.h"
|
||||||
#endif
|
#endif
|
||||||
#include "Platform/SystemInfo.h"
|
#include "Platform/SystemInfo.h"
|
||||||
|
#include "Platform/SystemException.h"
|
||||||
#include "Common/SecurityToken.h"
|
#include "Common/SecurityToken.h"
|
||||||
#include "Volume/EncryptionTest.h"
|
#include "Volume/EncryptionTest.h"
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
@ -729,7 +730,8 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
volume = Core->MountVolume (options);
|
volume = MountVolumeThread (options);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (VolumeHostInUse&)
|
catch (VolumeHostInUse&)
|
||||||
{
|
{
|
||||||
@ -1496,4 +1498,73 @@ namespace VeraCrypt
|
|||||||
return L"?";
|
return L"?";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define VC_CONVERT_EXCEPTION(NAME) if (dynamic_cast<NAME*> (ex)) throw (NAME&) *ex;
|
||||||
|
|
||||||
|
void UserInterface::ThrowException (Exception* ex)
|
||||||
|
{
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordKeyfilesIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordOrKeyboardLayoutIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordOrMountOptionsIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (ProtectionPasswordIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (ProtectionPasswordKeyfilesIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordEmpty);
|
||||||
|
VC_CONVERT_EXCEPTION (PasswordTooLong);
|
||||||
|
VC_CONVERT_EXCEPTION (UnportablePassword);
|
||||||
|
VC_CONVERT_EXCEPTION (ElevationFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (RootDeviceUnavailable);
|
||||||
|
VC_CONVERT_EXCEPTION (DriveLetterUnavailable);
|
||||||
|
VC_CONVERT_EXCEPTION (DriverError);
|
||||||
|
VC_CONVERT_EXCEPTION (EncryptedSystemRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (HigherFuseVersionRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (KernelCryptoServiceTestFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (LoopDeviceSetupFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (MountPointRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (MountPointUnavailable);
|
||||||
|
VC_CONVERT_EXCEPTION (NoDriveLetterAvailable);
|
||||||
|
VC_CONVERT_EXCEPTION (TemporaryDirectoryFailure);
|
||||||
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSizeHiddenVolumeProtection);
|
||||||
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSizeNoKernelCrypto);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeAlreadyMounted);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeSlotUnavailable);
|
||||||
|
VC_CONVERT_EXCEPTION (UserInterfaceException);
|
||||||
|
VC_CONVERT_EXCEPTION (MissingArgument);
|
||||||
|
VC_CONVERT_EXCEPTION (NoItemSelected);
|
||||||
|
VC_CONVERT_EXCEPTION (StringFormatterException);
|
||||||
|
VC_CONVERT_EXCEPTION (ExecutedProcessFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (AlreadyInitialized);
|
||||||
|
VC_CONVERT_EXCEPTION (AssertionFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (ExternalException);
|
||||||
|
VC_CONVERT_EXCEPTION (InsufficientData);
|
||||||
|
VC_CONVERT_EXCEPTION (NotApplicable);
|
||||||
|
VC_CONVERT_EXCEPTION (NotImplemented);
|
||||||
|
VC_CONVERT_EXCEPTION (NotInitialized);
|
||||||
|
VC_CONVERT_EXCEPTION (ParameterIncorrect);
|
||||||
|
VC_CONVERT_EXCEPTION (ParameterTooLarge);
|
||||||
|
VC_CONVERT_EXCEPTION (PartitionDeviceRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (StringConversionFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (TestFailed);
|
||||||
|
VC_CONVERT_EXCEPTION (TimeOut);
|
||||||
|
VC_CONVERT_EXCEPTION (UnknownException);
|
||||||
|
VC_CONVERT_EXCEPTION (UserAbort)
|
||||||
|
VC_CONVERT_EXCEPTION (CipherInitError);
|
||||||
|
VC_CONVERT_EXCEPTION (WeakKeyDetected);
|
||||||
|
VC_CONVERT_EXCEPTION (HigherVersionRequired);
|
||||||
|
VC_CONVERT_EXCEPTION (KeyfilePathEmpty);
|
||||||
|
VC_CONVERT_EXCEPTION (MissingVolumeData);
|
||||||
|
VC_CONVERT_EXCEPTION (MountedVolumeInUse);
|
||||||
|
VC_CONVERT_EXCEPTION (UnsupportedSectorSize);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeEncryptionNotCompleted);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeHostInUse);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeProtected);
|
||||||
|
VC_CONVERT_EXCEPTION (VolumeReadOnly);
|
||||||
|
VC_CONVERT_EXCEPTION (Pkcs11Exception);
|
||||||
|
VC_CONVERT_EXCEPTION (InvalidSecurityTokenKeyfilePath);
|
||||||
|
VC_CONVERT_EXCEPTION (SecurityTokenLibraryNotInitialized);
|
||||||
|
VC_CONVERT_EXCEPTION (SecurityTokenKeyfileAlreadyExists);
|
||||||
|
VC_CONVERT_EXCEPTION (SecurityTokenKeyfileNotFound);
|
||||||
|
VC_CONVERT_EXCEPTION (SystemException);
|
||||||
|
throw *ex;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,7 @@ namespace VeraCrypt
|
|||||||
virtual void ListMountedVolumes (const VolumeInfoList &volumes) const;
|
virtual void ListMountedVolumes (const VolumeInfoList &volumes) const;
|
||||||
virtual void ListSecurityTokenKeyfiles () const = 0;
|
virtual void ListSecurityTokenKeyfiles () const = 0;
|
||||||
virtual shared_ptr <VolumeInfo> MountVolume (MountOptions &options) const;
|
virtual shared_ptr <VolumeInfo> MountVolume (MountOptions &options) const;
|
||||||
|
virtual shared_ptr <VolumeInfo> MountVolumeThread (MountOptions &options) const { return Core->MountVolume (options);}
|
||||||
virtual VolumeInfoList MountAllDeviceHostedVolumes (MountOptions &options) const;
|
virtual VolumeInfoList MountAllDeviceHostedVolumes (MountOptions &options) const;
|
||||||
virtual VolumeInfoList MountAllFavoriteVolumes (MountOptions &options);
|
virtual VolumeInfoList MountAllFavoriteVolumes (MountOptions &options);
|
||||||
virtual void OpenExplorerWindow (const DirectoryPath &path);
|
virtual void OpenExplorerWindow (const DirectoryPath &path);
|
||||||
@ -75,6 +76,7 @@ namespace VeraCrypt
|
|||||||
virtual wxString TimeSpanToString (uint64 seconds) const;
|
virtual wxString TimeSpanToString (uint64 seconds) const;
|
||||||
virtual bool VolumeHasUnrecommendedExtension (const VolumePath &path) const;
|
virtual bool VolumeHasUnrecommendedExtension (const VolumePath &path) const;
|
||||||
virtual void Yield () const = 0;
|
virtual void Yield () const = 0;
|
||||||
|
virtual WaitThreadUI* GetWaitThreadUI(WaitThreadRoutine *pRoutine) const { return new WaitThreadUI(pRoutine);}
|
||||||
virtual wxDateTime VolumeTimeToDateTime (VolumeTime volumeTime) const { return wxDateTime ((time_t) (volumeTime / 1000ULL / 1000 / 10 - 134774ULL * 24 * 3600)); }
|
virtual wxDateTime VolumeTimeToDateTime (VolumeTime volumeTime) const { return wxDateTime ((time_t) (volumeTime / 1000ULL / 1000 / 10 - 134774ULL * 24 * 3600)); }
|
||||||
virtual wxString VolumeTimeToString (VolumeTime volumeTime) const;
|
virtual wxString VolumeTimeToString (VolumeTime volumeTime) const;
|
||||||
virtual wxString VolumeTypeToString (VolumeType::Enum type, VolumeProtection::Enum protection) const;
|
virtual wxString VolumeTypeToString (VolumeType::Enum type, VolumeProtection::Enum protection) const;
|
||||||
@ -88,6 +90,8 @@ namespace VeraCrypt
|
|||||||
const UserInterface *UI;
|
const UserInterface *UI;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void ThrowException (Exception* ex);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
UserInterface ();
|
UserInterface ();
|
||||||
virtual bool OnExceptionInMainLoop () { throw; }
|
virtual bool OnExceptionInMainLoop () { throw; }
|
||||||
|
Loading…
Reference in New Issue
Block a user