diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2015-08-31 01:56:56 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2015-08-31 01:56:56 +0200 |
commit | 4470d11c39bca7c3d29f7dd596a8fa66f19d42bc (patch) | |
tree | d1899b3a02e915693a1d32e3c88bd007014e77a3 | |
parent | 90f91945582b2020f236d666e16028159143c57f (diff) | |
parent | 9582d8fbcb57c0297aad3d4a05eac53f1c125cd3 (diff) | |
download | VeraCrypt-4470d11c39bca7c3d29f7dd596a8fa66f19d42bc.tar.gz VeraCrypt-4470d11c39bca7c3d29f7dd596a8fa66f19d42bc.zip |
Merge pull request #18 from LouisTakePILLz/master
Linux/MacOSX: Support supplying password to VeraCrypt via pipe (stdin)
-rw-r--r-- | src/Main/CommandLineInterface.cpp | 15 | ||||
-rw-r--r-- | src/Main/UserInterface.cpp | 14 | ||||
-rw-r--r-- | src/Main/UserPreferences.h | 2 |
3 files changed, 27 insertions, 4 deletions
diff --git a/src/Main/CommandLineInterface.cpp b/src/Main/CommandLineInterface.cpp index 4b1584c8..3563f0b0 100644 --- a/src/Main/CommandLineInterface.cpp +++ b/src/Main/CommandLineInterface.cpp @@ -71,6 +71,7 @@ namespace VeraCrypt parser.AddOption (L"", L"new-password", _("New password")); parser.AddOption (L"", L"new-pim", _("New PIM")); parser.AddSwitch (L"", L"non-interactive", _("Do not interact with user")); + parser.AddSwitch (L"", L"stdin", _("Read password from standard input")); parser.AddOption (L"p", L"password", _("Password")); parser.AddOption (L"", L"pim", _("PIM")); parser.AddOption (L"", L"protect-hidden", _("Protect hidden volume")); @@ -402,9 +403,21 @@ namespace VeraCrypt Preferences.NonInteractive = true; } + if (parser.Found (L"stdin")) + { + if (!Preferences.NonInteractive) + throw_err (L"--stdin is supported only in non-interactive mode"); + + Preferences.UseStandardInput = true; + } + if (parser.Found (L"password", &str)) + { + if (Preferences.UseStandardInput) + throw_err (L"--password cannot be used with --stdin"); ArgPassword.reset (new VolumePassword (wstring (str))); - + } + if (parser.Found (L"pim", &str)) { try diff --git a/src/Main/UserInterface.cpp b/src/Main/UserInterface.cpp index 68048663..070a49c1 100644 --- a/src/Main/UserInterface.cpp +++ b/src/Main/UserInterface.cpp @@ -889,11 +889,19 @@ namespace VeraCrypt { CommandLineInterface &cmdLine = *CmdLine; - switch (cmdLine.ArgCommand) - { - case CommandId::None: + if (cmdLine.ArgCommand == CommandId::None) return false; + if (Preferences.UseStandardInput) + { + wstring pwdInput; + wcin >> pwdInput; + + cmdLine.ArgPassword = make_shared<VolumePassword> (pwdInput); + } + + switch (cmdLine.ArgCommand) + { case CommandId::AutoMountDevices: case CommandId::AutoMountFavorites: case CommandId::AutoMountDevicesFavorites: diff --git a/src/Main/UserPreferences.h b/src/Main/UserPreferences.h index 2c7d16f1..efc02d5e 100644 --- a/src/Main/UserPreferences.h +++ b/src/Main/UserPreferences.h @@ -43,6 +43,7 @@ namespace VeraCrypt MountDevicesOnLogon (false), MountFavoritesOnLogon (false), NonInteractive (false), + UseStandardInput (false), OpenExplorerWindowAfterMount (false), SaveHistory (false), StartOnLogon (false), @@ -83,6 +84,7 @@ namespace VeraCrypt bool MountDevicesOnLogon; bool MountFavoritesOnLogon; bool NonInteractive; + bool UseStandardInput; bool OpenExplorerWindowAfterMount; bool SaveHistory; FilePath SecurityTokenModule; |