VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Main/CommandLineInterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Main/CommandLineInterface.cpp')
-rw-r--r--src/Main/CommandLineInterface.cpp108
1 files changed, 61 insertions, 47 deletions
diff --git a/src/Main/CommandLineInterface.cpp b/src/Main/CommandLineInterface.cpp
index b5f18dd3..2bbc73ea 100644
--- a/src/Main/CommandLineInterface.cpp
+++ b/src/Main/CommandLineInterface.cpp
@@ -29,7 +29,6 @@ namespace VeraCrypt
ArgPim (-1),
ArgSize (0),
ArgVolumeType (VolumeType::Unknown),
- ArgTrueCryptMode (false),
ArgDisableFileSizeCheck (false),
ArgUseLegacyPassword (false),
#if defined(TC_LINUX ) || defined (TC_FREEBSD)
@@ -56,7 +55,7 @@ namespace VeraCrypt
parser.AddSwitch (L"", L"display-password", _("Display password while typing"));
parser.AddOption (L"", L"encryption", _("Encryption algorithm"));
parser.AddSwitch (L"", L"explore", _("Open explorer window for mounted volume"));
- parser.AddSwitch (L"", L"export-token-keyfile",_("Export keyfile from security token"));
+ parser.AddSwitch (L"", L"export-token-keyfile",_("Export keyfile from token"));
parser.AddOption (L"", L"filesystem", _("Filesystem type"));
parser.AddSwitch (L"f", L"force", _("Force mount/dismount/overwrite"));
#if !defined(TC_WINDOWS) && !defined(TC_MACOSX)
@@ -67,7 +66,9 @@ namespace VeraCrypt
parser.AddSwitch (L"", L"import-token-keyfiles", _("Import keyfiles to security token"));
parser.AddOption (L"k", L"keyfiles", _("Keyfiles"));
parser.AddSwitch (L"l", L"list", _("List mounted volumes"));
- parser.AddSwitch (L"", L"list-token-keyfiles", _("List security token keyfiles"));
+ parser.AddSwitch (L"", L"list-token-keyfiles", _("List token keyfiles"));
+ parser.AddSwitch (L"", L"list-securitytoken-keyfiles", _("List security token keyfiles"));
+ parser.AddSwitch (L"", L"list-emvtoken-keyfiles", _("List EMV token keyfiles"));
parser.AddSwitch (L"", L"load-preferences", _("Load user preferences"));
parser.AddSwitch (L"", L"mount", _("Mount volume interactively"));
parser.AddOption (L"m", L"mount-options", _("VeraCrypt volume mount options"));
@@ -90,7 +91,6 @@ namespace VeraCrypt
parser.AddSwitch (L"", L"quick", _("Enable quick format"));
parser.AddOption (L"", L"size", _("Size in bytes"));
parser.AddOption (L"", L"slot", _("Volume slot number"));
- parser.AddSwitch (L"tc",L"truecrypt", _("Enable TrueCrypt mode. Should be put first to avoid issues."));
parser.AddSwitch (L"", L"test", _("Test internal algorithms"));
parser.AddSwitch (L"t", L"text", _("Use text user interface"));
parser.AddOption (L"", L"token-lib", _("Security token library"));
@@ -219,13 +219,13 @@ namespace VeraCrypt
if (parser.Found (L"export-token-keyfile"))
{
CheckCommandSingle();
- ArgCommand = CommandId::ExportSecurityTokenKeyfile;
+ ArgCommand = CommandId::ExportTokenKeyfile;
}
if (parser.Found (L"import-token-keyfiles"))
{
CheckCommandSingle();
- ArgCommand = CommandId::ImportSecurityTokenKeyfiles;
+ ArgCommand = CommandId::ImportTokenKeyfiles;
}
if (parser.Found (L"list"))
@@ -238,8 +238,18 @@ namespace VeraCrypt
if (parser.Found (L"list-token-keyfiles"))
{
CheckCommandSingle();
- ArgCommand = CommandId::ListSecurityTokenKeyfiles;
+ ArgCommand = CommandId::ListTokenKeyfiles;
}
+ if (parser.Found (L"list-securitytoken-keyfiles"))
+ {
+ CheckCommandSingle();
+ ArgCommand = CommandId::ListSecurityTokenKeyfiles;
+ }
+ if (parser.Found (L"list-emvtoken-keyfiles"))
+ {
+ CheckCommandSingle();
+ ArgCommand = CommandId::ListEMVTokenKeyfiles;
+ }
if (parser.Found (L"mount"))
{
@@ -318,6 +328,8 @@ namespace VeraCrypt
ArgFilesystem = VolumeCreationOptions::FilesystemType::NTFS;
else if (str.IsSameAs (L"exFAT", false))
ArgFilesystem = VolumeCreationOptions::FilesystemType::exFAT;
+ else if (str.IsSameAs (L"Btrfs", false))
+ ArgFilesystem = VolumeCreationOptions::FilesystemType::Btrfs;
#elif defined (TC_MACOSX)
else if ( str.IsSameAs (L"HFS", false)
|| str.IsSameAs (L"HFS+", false)
@@ -328,6 +340,8 @@ namespace VeraCrypt
}
else if (str.IsSameAs (L"exFAT", false))
ArgFilesystem = VolumeCreationOptions::FilesystemType::exFAT;
+ else if (str.IsSameAs (L"Btrfs", false))
+ ArgFilesystem = VolumeCreationOptions::FilesystemType::Btrfs;
else if (str.IsSameAs (L"APFS", false))
ArgFilesystem = VolumeCreationOptions::FilesystemType::APFS;
#elif defined (TC_FREEBSD) || defined (TC_SOLARIS)
@@ -335,15 +349,14 @@ namespace VeraCrypt
ArgFilesystem = VolumeCreationOptions::FilesystemType::UFS;
#endif
else
- ArgFilesystem = VolumeCreationOptions::FilesystemType::None;
+ throw_err (LangString["UNKNOWN_OPTION"] + L": " + str);
}
}
ArgForce = parser.Found (L"force");
- ArgTrueCryptMode = parser.Found (L"truecrypt");
ArgDisableFileSizeCheck = parser.Found (L"no-size-check");
- ArgUseLegacyPassword = parser.Found (L"legacy-password-maxlength") || ArgTrueCryptMode;
+ ArgUseLegacyPassword = parser.Found (L"legacy-password-maxlength");
#if defined(TC_LINUX ) || defined (TC_FREEBSD)
ArgUseDummySudoPassword = parser.Found (L"use-dummy-sudo-password");
#endif
@@ -433,8 +446,6 @@ namespace VeraCrypt
if (ArgNewPim < 0 || ArgNewPim > (ArgMountOptions.PartitionInSystemEncryptionScope? MAX_BOOT_PIM_VALUE: MAX_PIM_VALUE))
throw_err (LangString["PARAMETER_INCORRECT"] + L": " + str);
- else if (ArgNewPim > 0 && ArgTrueCryptMode)
- throw_err (LangString["PIM_NOT_SUPPORTED_FOR_TRUECRYPT_MODE"]);
}
if (parser.Found (L"non-interactive"))
@@ -473,8 +484,6 @@ namespace VeraCrypt
if (ArgPim < 0 || ArgPim > (ArgMountOptions.PartitionInSystemEncryptionScope? MAX_BOOT_PIM_VALUE: MAX_PIM_VALUE))
throw_err (LangString["PARAMETER_INCORRECT"] + L": " + str);
- else if (ArgPim > 0 && ArgTrueCryptMode)
- throw_err (LangString["PIM_NOT_SUPPORTED_FOR_TRUECRYPT_MODE"]);
}
if (parser.Found (L"protect-hidden", &str))
@@ -529,7 +538,7 @@ namespace VeraCrypt
if (hashName.IsSameAs (str, false) || hashAltName.IsSameAs (str, false))
{
bHashFound = true;
- ArgMountOptions.ProtectionKdf = Pkcs5Kdf::GetAlgorithm (*hash, ArgTrueCryptMode);
+ ArgMountOptions.ProtectionKdf = Pkcs5Kdf::GetAlgorithm (*hash);
}
}
@@ -570,40 +579,45 @@ namespace VeraCrypt
if (parser.Found (L"size", &str))
{
- uint64 multiplier;
- wxChar lastChar = str [str.Length () - 1];
- if (lastChar >= wxT('0') && lastChar <= wxT('9'))
- multiplier = 1;
- else if (lastChar == wxT('K') || lastChar == wxT('k'))
- multiplier = BYTES_PER_KB;
- else if (lastChar == wxT('M') || lastChar == wxT('m'))
- multiplier = BYTES_PER_MB;
- else if (lastChar == wxT('G') || lastChar == wxT('g'))
- multiplier = BYTES_PER_GB;
- else if (lastChar == wxT('T') || lastChar == wxT('t'))
- multiplier = BYTES_PER_TB;
- else
- throw_err (LangString["PARAMETER_INCORRECT"] + L": " + str);
-
- // remove suffix if present
- if (multiplier != 1)
- str.RemoveLast ();
- // check that we only have digits in the string
- size_t index = str.find_first_not_of (wxT("0123456789"));
- if (index != (size_t) wxNOT_FOUND)
+ if (str.CmpNoCase (wxT("max")) == 0)
{
- // restore last characater for error display
- if (multiplier != 1)
- str += lastChar;
- throw_err (LangString["PARAMETER_INCORRECT"] + L": " + str);
- }
- try
- {
- ArgSize = multiplier * StringConverter::ToUInt64 (wstring (str));
+ ArgSize = (uint64) -1; // indicator of maximum available size
}
- catch (...)
+ else
{
- throw_err (LangString["PARAMETER_INCORRECT"] + L": " + str);
+ uint64 multiplier;
+ wxString originalStr = str;
+ size_t index = str.find_first_not_of (wxT("0123456789"));
+ if (index == 0)
+ {
+ throw_err (LangString["PARAMETER_INCORRECT"] + L": " + str);
+ }
+ else if (index != (size_t) wxNOT_FOUND)
+ {
+ wxString sizeSuffix = str.Mid(index);
+ if (sizeSuffix.CmpNoCase(wxT("K")) == 0 || sizeSuffix.CmpNoCase(wxT("KiB")) == 0)
+ multiplier = BYTES_PER_KB;
+ else if (sizeSuffix.CmpNoCase(wxT("M")) == 0 || sizeSuffix.CmpNoCase(wxT("MiB")) == 0)
+ multiplier = BYTES_PER_MB;
+ else if (sizeSuffix.CmpNoCase(wxT("G")) == 0 || sizeSuffix.CmpNoCase(wxT("GiB")) == 0)
+ multiplier = BYTES_PER_GB;
+ else if (sizeSuffix.CmpNoCase(wxT("T")) == 0 || sizeSuffix.CmpNoCase(wxT("TiB")) == 0)
+ multiplier = BYTES_PER_TB;
+ else
+ throw_err (LangString["PARAMETER_INCORRECT"] + L": " + str);
+
+ str = str.Left (index);
+ }
+ else
+ multiplier = 1;
+ try
+ {
+ ArgSize = multiplier * StringConverter::ToUInt64 (wstring (str));
+ }
+ catch (...)
+ {
+ throw_err (LangString["PARAMETER_INCORRECT"] + L": " + originalStr);
+ }
}
}
@@ -828,5 +842,5 @@ namespace VeraCrypt
return shared_ptr<SecureBuffer>(new SecureBuffer ());
}
- auto_ptr <CommandLineInterface> CmdLine;
+ unique_ptr <CommandLineInterface> CmdLine;
}