mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-11 11:08:02 -06:00
Linux: Make the C++ code compatible with old compilers (g++ 4.4.7 on CentOS 6)
This commit is contained in:
@@ -6,7 +6,7 @@ namespace VeraCrypt
|
|||||||
{
|
{
|
||||||
SCardManager SCard::manager;
|
SCardManager SCard::manager;
|
||||||
|
|
||||||
SCard::SCard() : m_reader(NULL)
|
SCard::SCard()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ namespace VeraCrypt
|
|||||||
return scardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen);
|
return scardStatus(hCard, mszReaderNames, pcchReaderLen, pdwState, pdwProtocol, pbAtr, pcbAtrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
LONG SCardLoader::SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout, LPSCARD_READERSTATE rgReaderStates, DWORD cReaders)
|
LONG SCardLoader::SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout, SCARD_READERSTATE* rgReaderStates, DWORD cReaders)
|
||||||
{
|
{
|
||||||
Initialize();
|
Initialize();
|
||||||
|
|
||||||
@@ -399,4 +399,4 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
return scardSetAttrib(hCard, dwAttrId, pbAttr, cbAttrLen);
|
return scardSetAttrib(hCard, dwAttrId, pbAttr, cbAttrLen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,6 @@
|
|||||||
#include <PCSC/winscard.h>
|
#include <PCSC/winscard.h>
|
||||||
#include <PCSC/wintypes.h>
|
#include <PCSC/wintypes.h>
|
||||||
#include "reader.h"
|
#include "reader.h"
|
||||||
typedef LPSCARD_READERSTATE_A LPSCARD_READERSTATE;
|
|
||||||
using VeraCrypt::uint8;
|
|
||||||
#define BOOL int
|
#define BOOL int
|
||||||
#else
|
#else
|
||||||
#undef BOOL
|
#undef BOOL
|
||||||
@@ -22,7 +20,6 @@ using VeraCrypt::uint8;
|
|||||||
#include <winscard.h>
|
#include <winscard.h>
|
||||||
#include <wintypes.h>
|
#include <wintypes.h>
|
||||||
#include <reader.h>
|
#include <reader.h>
|
||||||
using VeraCrypt::uint8;
|
|
||||||
#define BOOL int
|
#define BOOL int
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@@ -48,7 +45,7 @@ namespace VeraCrypt
|
|||||||
typedef LONG (SCARD_CALL_SPEC *SCardBeginTransactionPtr)(SCARDHANDLE hCard);
|
typedef LONG (SCARD_CALL_SPEC *SCardBeginTransactionPtr)(SCARDHANDLE hCard);
|
||||||
typedef LONG (SCARD_CALL_SPEC *SCardEndTransactionPtr)(SCARDHANDLE hCard, DWORD dwDisposition);
|
typedef LONG (SCARD_CALL_SPEC *SCardEndTransactionPtr)(SCARDHANDLE hCard, DWORD dwDisposition);
|
||||||
typedef LONG (SCARD_CALL_SPEC *SCardStatusPtr)(SCARDHANDLE hCard, LPTSTR mszReaderNames, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, BYTE* pbAtr, LPDWORD pcbAtrLen);
|
typedef LONG (SCARD_CALL_SPEC *SCardStatusPtr)(SCARDHANDLE hCard, LPTSTR mszReaderNames, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, BYTE* pbAtr, LPDWORD pcbAtrLen);
|
||||||
typedef LONG (SCARD_CALL_SPEC *SCardGetStatusChangePtr)(SCARDCONTEXT hContext, DWORD dwTimeout, LPSCARD_READERSTATE rgReaderStates, DWORD cReaders);
|
typedef LONG (SCARD_CALL_SPEC *SCardGetStatusChangePtr)(SCARDCONTEXT hContext, DWORD dwTimeout, SCARD_READERSTATE* rgReaderStates, DWORD cReaders);
|
||||||
typedef LONG (SCARD_CALL_SPEC *SCardControlPtr)(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID pbSendBuffer, DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength, LPDWORD lpBytesReturned);
|
typedef LONG (SCARD_CALL_SPEC *SCardControlPtr)(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID pbSendBuffer, DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength, LPDWORD lpBytesReturned);
|
||||||
typedef LONG (SCARD_CALL_SPEC *SCardTransmitPtr)(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, const BYTE* pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, BYTE* pbRecvBuffer, LPDWORD pcbRecvLength);
|
typedef LONG (SCARD_CALL_SPEC *SCardTransmitPtr)(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, const BYTE* pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, BYTE* pbRecvBuffer, LPDWORD pcbRecvLength);
|
||||||
typedef LONG (SCARD_CALL_SPEC *SCardListReaderGroupsPtr)(SCARDCONTEXT hContext, LPTSTR mszGroups, LPDWORD pcchGroups);
|
typedef LONG (SCARD_CALL_SPEC *SCardListReaderGroupsPtr)(SCARDCONTEXT hContext, LPTSTR mszGroups, LPDWORD pcchGroups);
|
||||||
@@ -111,7 +108,7 @@ namespace VeraCrypt
|
|||||||
static LONG SCardBeginTransaction(SCARDHANDLE hCard);
|
static LONG SCardBeginTransaction(SCARDHANDLE hCard);
|
||||||
static LONG SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition);
|
static LONG SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition);
|
||||||
static LONG SCardStatus(SCARDHANDLE hCard, LPTSTR mszReaderNames, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, BYTE* pbAtr, LPDWORD pcbAtrLen);
|
static LONG SCardStatus(SCARDHANDLE hCard, LPTSTR mszReaderNames, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, BYTE* pbAtr, LPDWORD pcbAtrLen);
|
||||||
static LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout, LPSCARD_READERSTATE rgReaderStates, DWORD cReaders);
|
static LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout, SCARD_READERSTATE* rgReaderStates, DWORD cReaders);
|
||||||
static LONG SCardControl(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID pbSendBuffer, DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength, LPDWORD lpBytesReturned);
|
static LONG SCardControl(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID pbSendBuffer, DWORD cbSendLength, LPVOID pbRecvBuffer, DWORD cbRecvLength, LPDWORD lpBytesReturned);
|
||||||
static LONG SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, const BYTE* pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, BYTE* pbRecvBuffer, LPDWORD pcbRecvLength);
|
static LONG SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci, const BYTE* pbSendBuffer, DWORD cbSendLength, LPSCARD_IO_REQUEST pioRecvPci, BYTE* pbRecvBuffer, LPDWORD pcbRecvLength);
|
||||||
static LONG SCardListReaderGroups(SCARDCONTEXT hContext, LPTSTR mszGroups, LPDWORD pcchGroups);
|
static LONG SCardListReaderGroups(SCARDCONTEXT hContext, LPTSTR mszGroups, LPDWORD pcchGroups);
|
||||||
@@ -122,4 +119,4 @@ namespace VeraCrypt
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TC_HEADER_Common_SCardLoader
|
#endif // TC_HEADER_Common_SCardLoader
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace VeraCrypt
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_scardLoader = NULL;
|
m_scardLoader.reset();
|
||||||
m_hSCReaderContext = 0;
|
m_hSCReaderContext = 0;
|
||||||
}
|
}
|
||||||
m_hCard = hCard;
|
m_hCard = hCard;
|
||||||
@@ -84,7 +84,7 @@ namespace VeraCrypt
|
|||||||
void SCardReader::Clear(void)
|
void SCardReader::Clear(void)
|
||||||
{
|
{
|
||||||
m_szSCReaderName = L"";
|
m_szSCReaderName = L"";
|
||||||
m_scardLoader = NULL;
|
m_scardLoader.reset();
|
||||||
m_hSCReaderContext = 0;
|
m_hSCReaderContext = 0;
|
||||||
m_hCard = 0;
|
m_hCard = 0;
|
||||||
m_dwProtocol = 0;
|
m_dwProtocol = 0;
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ namespace VeraCrypt
|
|||||||
shared_ptr<TLVNode> TLVParser::TLV_Find(shared_ptr<TLVNode> node, uint16 tag)
|
shared_ptr<TLVNode> TLVParser::TLV_Find(shared_ptr<TLVNode> node, uint16 tag)
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
shared_ptr<TLVNode> tmpnode = NULL;
|
shared_ptr<TLVNode> tmpnode;
|
||||||
if (node->Tag == tag)
|
if (node->Tag == tag)
|
||||||
{
|
{
|
||||||
return node;
|
return node;
|
||||||
@@ -177,11 +177,11 @@ namespace VeraCrypt
|
|||||||
for (i = 0; i < node->Subs->size(); i++)
|
for (i = 0; i < node->Subs->size(); i++)
|
||||||
{
|
{
|
||||||
tmpnode = TLV_Find(node->Subs->at(i),tag);
|
tmpnode = TLV_Find(node->Subs->at(i),tag);
|
||||||
if (tmpnode != NULL)
|
if (tmpnode)
|
||||||
{
|
{
|
||||||
return tmpnode;
|
return tmpnode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return shared_ptr<TLVNode>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,6 +82,51 @@ namespace VeraCrypt
|
|||||||
LanguageListBox->Append("System default");
|
LanguageListBox->Append("System default");
|
||||||
LanguageListBox->Append("English");
|
LanguageListBox->Append("English");
|
||||||
|
|
||||||
|
langEntries = {
|
||||||
|
{"system", L"System default"},
|
||||||
|
{"ar", L"العربية"},
|
||||||
|
{"be", L"Беларуская"},
|
||||||
|
{"bg", L"Български"},
|
||||||
|
{"ca", L"Català"},
|
||||||
|
{"co", L"Corsu"},
|
||||||
|
{"cs", L"Čeština"},
|
||||||
|
{"da", L"Dansk"},
|
||||||
|
{"de", L"Deutsch"},
|
||||||
|
{"el", L"Ελληνικά"},
|
||||||
|
{"en", L"English"},
|
||||||
|
{"es", L"Español"},
|
||||||
|
{"et", L"Eesti"},
|
||||||
|
{"eu", L"Euskara"},
|
||||||
|
{"fa", L"فارسي"},
|
||||||
|
{"fi", L"Suomi"},
|
||||||
|
{"fr", L"Français"},
|
||||||
|
{"he", L"עברית"},
|
||||||
|
{"hu", L"Magyar"},
|
||||||
|
{"id", L"Bahasa Indonesia"},
|
||||||
|
{"it", L"Italiano"},
|
||||||
|
{"ja", L"日本語"},
|
||||||
|
{"ka", L"ქართული"},
|
||||||
|
{"ko", L"한국어"},
|
||||||
|
{"lv", L"Latviešu"},
|
||||||
|
{"nl", L"Nederlands"},
|
||||||
|
{"nn", L"Norsk Nynorsk"},
|
||||||
|
{"pl", L"Polski"},
|
||||||
|
{"ro", L"Română"},
|
||||||
|
{"ru", L"Русский"},
|
||||||
|
{"pt-br", L"Português-Brasil"},
|
||||||
|
{"sk", L"Slovenčina"},
|
||||||
|
{"sl", L"Slovenščina"},
|
||||||
|
{"sv", L"Svenska"},
|
||||||
|
{"th", L"ภาษาไทย"},
|
||||||
|
{"tr", L"Türkçe"},
|
||||||
|
{"uk", L"Українська"},
|
||||||
|
{"uz", L"Ўзбекча"},
|
||||||
|
{"vi", L"Tiếng Việt"},
|
||||||
|
{"zh-cn", L"简体中文"},
|
||||||
|
{"zh-hk", L"繁體中文(香港)"},
|
||||||
|
{"zh-tw", L"繁體中文"}
|
||||||
|
};
|
||||||
|
|
||||||
if (wxDir::Exists(languagesFolder.GetName())) {
|
if (wxDir::Exists(languagesFolder.GetName())) {
|
||||||
size_t langCount;
|
size_t langCount;
|
||||||
langCount = wxDir::GetAllFiles(languagesFolder.GetName(), &langArray, wxEmptyString, wxDIR_FILES);
|
langCount = wxDir::GetAllFiles(languagesFolder.GetName(), &langArray, wxEmptyString, wxDIR_FILES);
|
||||||
@@ -435,11 +480,11 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
if (LanguageListBox->GetSelection() != wxNOT_FOUND) {
|
if (LanguageListBox->GetSelection() != wxNOT_FOUND) {
|
||||||
wxString langToFind = LanguageListBox->GetString(LanguageListBox->GetSelection());
|
wxString langToFind = LanguageListBox->GetString(LanguageListBox->GetSelection());
|
||||||
for (const auto &each: langEntries) {
|
for (map<wxString, std::wstring>::const_iterator each = langEntries.begin(); each != langEntries.end(); ++each) {
|
||||||
if (each.second == langToFind) {
|
if (each->second == langToFind) {
|
||||||
Preferences.Language = each.first;
|
Preferences.Language = each->first;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
cout << "Lang set to: " << each.first << endl;
|
cout << "Lang set to: " << each->first << endl;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,50 +60,7 @@ namespace VeraCrypt
|
|||||||
UserPreferences Preferences;
|
UserPreferences Preferences;
|
||||||
bool RestoreValidatorBell;
|
bool RestoreValidatorBell;
|
||||||
HotkeyList UnregisteredHotkeys;
|
HotkeyList UnregisteredHotkeys;
|
||||||
map<wxString, wstring> langEntries = {
|
map<wxString, wstring> langEntries;
|
||||||
{"system", L"System default"},
|
|
||||||
{"ar", L"العربية"},
|
|
||||||
{"be", L"Беларуская"},
|
|
||||||
{"bg", L"Български"},
|
|
||||||
{"ca", L"Català"},
|
|
||||||
{"co", L"Corsu"},
|
|
||||||
{"cs", L"Čeština"},
|
|
||||||
{"da", L"Dansk"},
|
|
||||||
{"de", L"Deutsch"},
|
|
||||||
{"el", L"Ελληνικά"},
|
|
||||||
{"en", L"English"},
|
|
||||||
{"es", L"Español"},
|
|
||||||
{"et", L"Eesti"},
|
|
||||||
{"eu", L"Euskara"},
|
|
||||||
{"fa", L"فارسي"},
|
|
||||||
{"fi", L"Suomi"},
|
|
||||||
{"fr", L"Français"},
|
|
||||||
{"he", L"עברית"},
|
|
||||||
{"hu", L"Magyar"},
|
|
||||||
{"id", L"Bahasa Indonesia"},
|
|
||||||
{"it", L"Italiano"},
|
|
||||||
{"ja", L"日本語"},
|
|
||||||
{"ka", L"ქართული"},
|
|
||||||
{"ko", L"한국어"},
|
|
||||||
{"lv", L"Latviešu"},
|
|
||||||
{"nl", L"Nederlands"},
|
|
||||||
{"nn", L"Norsk Nynorsk"},
|
|
||||||
{"pl", L"Polski"},
|
|
||||||
{"ro", L"Română"},
|
|
||||||
{"ru", L"Русский"},
|
|
||||||
{"pt-br", L"Português-Brasil"},
|
|
||||||
{"sk", L"Slovenčina"},
|
|
||||||
{"sl", L"Slovenščina"},
|
|
||||||
{"sv", L"Svenska"},
|
|
||||||
{"th", L"ภาษาไทย"},
|
|
||||||
{"tr", L"Türkçe"},
|
|
||||||
{"uk", L"Українська"},
|
|
||||||
{"uz", L"Ўзбекча"},
|
|
||||||
{"vi", L"Tiếng Việt"},
|
|
||||||
{"zh-cn", L"简体中文"},
|
|
||||||
{"zh-hk", L"繁體中文(香港)"},
|
|
||||||
{"zh-tw", L"繁體中文"}
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,19 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
class OpenOuterVolumeFunctor : public Functor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
OpenOuterVolumeFunctor (const DirectoryPath &outerVolumeMountPoint) : OuterVolumeMountPoint (outerVolumeMountPoint) { }
|
||||||
|
|
||||||
|
virtual void operator() ()
|
||||||
|
{
|
||||||
|
Gui->OpenExplorerWindow (OuterVolumeMountPoint);
|
||||||
|
}
|
||||||
|
|
||||||
|
DirectoryPath OuterVolumeMountPoint;
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef TC_MACOSX
|
#ifdef TC_MACOSX
|
||||||
|
|
||||||
bool VolumeCreationWizard::ProcessEvent(wxEvent& event)
|
bool VolumeCreationWizard::ProcessEvent(wxEvent& event)
|
||||||
@@ -338,18 +351,6 @@ namespace VeraCrypt
|
|||||||
return new InfoWizardPage (GetPageParent());
|
return new InfoWizardPage (GetPageParent());
|
||||||
}
|
}
|
||||||
|
|
||||||
struct OpenOuterVolumeFunctor : public Functor
|
|
||||||
{
|
|
||||||
OpenOuterVolumeFunctor (const DirectoryPath &outerVolumeMountPoint) : OuterVolumeMountPoint (outerVolumeMountPoint) { }
|
|
||||||
|
|
||||||
virtual void operator() ()
|
|
||||||
{
|
|
||||||
Gui->OpenExplorerWindow (OuterVolumeMountPoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
DirectoryPath OuterVolumeMountPoint;
|
|
||||||
};
|
|
||||||
|
|
||||||
InfoWizardPage *page = new InfoWizardPage (GetPageParent(), LangString["LINUX_OPEN_OUTER_VOL"],
|
InfoWizardPage *page = new InfoWizardPage (GetPageParent(), LangString["LINUX_OPEN_OUTER_VOL"],
|
||||||
shared_ptr <Functor> (new OpenOuterVolumeFunctor (MountedOuterVolume->MountPoint)));
|
shared_ptr <Functor> (new OpenOuterVolumeFunctor (MountedOuterVolume->MountPoint)));
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,33 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
class AdminPasswordRequestHandler : public GetStringFunctor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void operator() (string &passwordStr)
|
||||||
|
{
|
||||||
|
|
||||||
|
wxString sValue;
|
||||||
|
if (Gui->GetWaitDialog())
|
||||||
|
{
|
||||||
|
Gui->GetWaitDialog()->RequestAdminPassword(sValue);
|
||||||
|
if (sValue.IsEmpty())
|
||||||
|
throw UserAbort (SRC_POS);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wxPasswordEntryDialog dialog (Gui->GetActiveWindow(), LangString["LINUX_ADMIN_PW_QUERY"], LangString["LINUX_ADMIN_PW_QUERY_TITLE"]);
|
||||||
|
if (dialog.ShowModal() != wxID_OK)
|
||||||
|
throw UserAbort (SRC_POS);
|
||||||
|
sValue = dialog.GetValue();
|
||||||
|
}
|
||||||
|
wstring wPassword (sValue); // A copy of the password is created here by wxWidgets, which cannot be erased
|
||||||
|
finally_do_arg (wstring *, &wPassword, { StringConverter::Erase (*finally_arg); });
|
||||||
|
|
||||||
|
StringConverter::ToSingle (wPassword, passwordStr);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef TC_MACOSX
|
#ifdef TC_MACOSX
|
||||||
int GraphicUserInterface::g_customIdCmdV = 0;
|
int GraphicUserInterface::g_customIdCmdV = 0;
|
||||||
int GraphicUserInterface::g_customIdCmdA = 0;
|
int GraphicUserInterface::g_customIdCmdA = 0;
|
||||||
@@ -452,32 +479,6 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
shared_ptr <GetStringFunctor> GraphicUserInterface::GetAdminPasswordRequestHandler ()
|
shared_ptr <GetStringFunctor> GraphicUserInterface::GetAdminPasswordRequestHandler ()
|
||||||
{
|
{
|
||||||
struct AdminPasswordRequestHandler : public GetStringFunctor
|
|
||||||
{
|
|
||||||
virtual void operator() (string &passwordStr)
|
|
||||||
{
|
|
||||||
|
|
||||||
wxString sValue;
|
|
||||||
if (Gui->GetWaitDialog())
|
|
||||||
{
|
|
||||||
Gui->GetWaitDialog()->RequestAdminPassword(sValue);
|
|
||||||
if (sValue.IsEmpty())
|
|
||||||
throw UserAbort (SRC_POS);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wxPasswordEntryDialog dialog (Gui->GetActiveWindow(), LangString["LINUX_ADMIN_PW_QUERY"], LangString["LINUX_ADMIN_PW_QUERY_TITLE"]);
|
|
||||||
if (dialog.ShowModal() != wxID_OK)
|
|
||||||
throw UserAbort (SRC_POS);
|
|
||||||
sValue = dialog.GetValue();
|
|
||||||
}
|
|
||||||
wstring wPassword (sValue); // A copy of the password is created here by wxWidgets, which cannot be erased
|
|
||||||
finally_do_arg (wstring *, &wPassword, { StringConverter::Erase (*finally_arg); });
|
|
||||||
|
|
||||||
StringConverter::ToSingle (wPassword, passwordStr);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return shared_ptr <GetStringFunctor> (new AdminPasswordRequestHandler);
|
return shared_ptr <GetStringFunctor> (new AdminPasswordRequestHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,10 @@ namespace VeraCrypt
|
|||||||
StringFormatter (const wxString &format, StringFormatterArg arg0 = StringFormatterArg(), StringFormatterArg arg1 = StringFormatterArg(), StringFormatterArg arg2 = StringFormatterArg(), StringFormatterArg arg3 = StringFormatterArg(), StringFormatterArg arg4 = StringFormatterArg(), StringFormatterArg arg5 = StringFormatterArg(), StringFormatterArg arg6 = StringFormatterArg(), StringFormatterArg arg7 = StringFormatterArg(), StringFormatterArg arg8 = StringFormatterArg(), StringFormatterArg arg9 = StringFormatterArg());
|
StringFormatter (const wxString &format, StringFormatterArg arg0 = StringFormatterArg(), StringFormatterArg arg1 = StringFormatterArg(), StringFormatterArg arg2 = StringFormatterArg(), StringFormatterArg arg3 = StringFormatterArg(), StringFormatterArg arg4 = StringFormatterArg(), StringFormatterArg arg5 = StringFormatterArg(), StringFormatterArg arg6 = StringFormatterArg(), StringFormatterArg arg7 = StringFormatterArg(), StringFormatterArg arg8 = StringFormatterArg(), StringFormatterArg arg9 = StringFormatterArg());
|
||||||
virtual ~StringFormatter ();
|
virtual ~StringFormatter ();
|
||||||
|
|
||||||
explicit operator wstring () const { return wstring (FormattedString); }
|
#if (__cplusplus >= 201103L)
|
||||||
|
explicit
|
||||||
|
#endif
|
||||||
|
operator wstring () const { return wstring (FormattedString); }
|
||||||
operator wxString () const { return FormattedString; }
|
operator wxString () const { return FormattedString; }
|
||||||
operator StringFormatterArg () const { return FormattedString; }
|
operator StringFormatterArg () const { return FormattedString; }
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,27 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
class AdminPasswordRequestHandler : public GetStringFunctor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AdminPasswordRequestHandler (TextUserInterface *userInterface) : UI (userInterface) { }
|
||||||
|
virtual void operator() (string &passwordStr)
|
||||||
|
{
|
||||||
|
UI->ShowString (_("Enter your user password or administrator password: "));
|
||||||
|
|
||||||
|
TextUserInterface::SetTerminalEcho (false);
|
||||||
|
finally_do ({ TextUserInterface::SetTerminalEcho (true); });
|
||||||
|
|
||||||
|
wstring wPassword (UI->ReadInputStreamLine());
|
||||||
|
finally_do_arg (wstring *, &wPassword, { StringConverter::Erase (*finally_arg); });
|
||||||
|
|
||||||
|
UI->ShowString (L"\n");
|
||||||
|
|
||||||
|
StringConverter::ToSingle (wPassword, passwordStr);
|
||||||
|
}
|
||||||
|
TextUserInterface *UI;
|
||||||
|
};
|
||||||
|
|
||||||
TextUserInterface::TextUserInterface ()
|
TextUserInterface::TextUserInterface ()
|
||||||
{
|
{
|
||||||
#ifdef TC_UNIX
|
#ifdef TC_UNIX
|
||||||
@@ -1095,26 +1116,6 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
shared_ptr <GetStringFunctor> TextUserInterface::GetAdminPasswordRequestHandler ()
|
shared_ptr <GetStringFunctor> TextUserInterface::GetAdminPasswordRequestHandler ()
|
||||||
{
|
{
|
||||||
struct AdminPasswordRequestHandler : public GetStringFunctor
|
|
||||||
{
|
|
||||||
AdminPasswordRequestHandler (TextUserInterface *userInterface) : UI (userInterface) { }
|
|
||||||
virtual void operator() (string &passwordStr)
|
|
||||||
{
|
|
||||||
UI->ShowString (_("Enter your user password or administrator password: "));
|
|
||||||
|
|
||||||
TextUserInterface::SetTerminalEcho (false);
|
|
||||||
finally_do ({ TextUserInterface::SetTerminalEcho (true); });
|
|
||||||
|
|
||||||
wstring wPassword (UI->ReadInputStreamLine());
|
|
||||||
finally_do_arg (wstring *, &wPassword, { StringConverter::Erase (*finally_arg); });
|
|
||||||
|
|
||||||
UI->ShowString (L"\n");
|
|
||||||
|
|
||||||
StringConverter::ToSingle (wPassword, passwordStr);
|
|
||||||
}
|
|
||||||
TextUserInterface *UI;
|
|
||||||
};
|
|
||||||
|
|
||||||
return shared_ptr <GetStringFunctor> (new AdminPasswordRequestHandler (this));
|
return shared_ptr <GetStringFunctor> (new AdminPasswordRequestHandler (this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,9 +19,11 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
class AdminPasswordRequestHandler;
|
||||||
class TextUserInterface : public UserInterface
|
class TextUserInterface : public UserInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
friend class AdminPasswordRequestHandler;
|
||||||
TextUserInterface ();
|
TextUserInterface ();
|
||||||
virtual ~TextUserInterface ();
|
virtual ~TextUserInterface ();
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,15 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
class AdminPasswordRequestHandler : public GetStringFunctor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void operator() (string &str)
|
||||||
|
{
|
||||||
|
throw ElevationFailed (SRC_POS, "sudo", 1, "");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
UserInterface::UserInterface ()
|
UserInterface::UserInterface ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -558,14 +567,6 @@ namespace VeraCrypt
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
struct AdminPasswordRequestHandler : public GetStringFunctor
|
|
||||||
{
|
|
||||||
virtual void operator() (string &str)
|
|
||||||
{
|
|
||||||
throw ElevationFailed (SRC_POS, "sudo", 1, "");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Core->SetAdminPasswordCallback (shared_ptr <GetStringFunctor> (new AdminPasswordRequestHandler));
|
Core->SetAdminPasswordCallback (shared_ptr <GetStringFunctor> (new AdminPasswordRequestHandler));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user