aboutsummaryrefslogtreecommitdiff
path: root/nitrocli/src/args.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2018-12-27 17:57:26 +0100
committerDaniel Mueller <deso@posteo.net>2019-01-07 18:13:50 -0800
commit32c22bd1eb9fe05db30cf1062d089b21bd00c3a7 (patch)
treed611e08ad6bdf27e01899d4c4e64fdc649dcfd60 /nitrocli/src/args.rs
parent0c679b30ef04de8bc556ce33b305d3ccf740a970 (diff)
downloadnitrocli-32c22bd1eb9fe05db30cf1062d089b21bd00c3a7.tar.gz
nitrocli-32c22bd1eb9fe05db30cf1062d089b21bd00c3a7.tar.bz2
Implement the lock command
This patch implements the lock command that locks the password safe and, on the Nitrokey Storage, the encrypted volume. See issue #18 for details on the locking mechanism.
Diffstat (limited to 'nitrocli/src/args.rs')
-rw-r--r--nitrocli/src/args.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/nitrocli/src/args.rs b/nitrocli/src/args.rs
index 4cf6258..f1db33f 100644
--- a/nitrocli/src/args.rs
+++ b/nitrocli/src/args.rs
@@ -32,6 +32,7 @@ type Result<T> = result::Result<T, Error>;
#[derive(Debug)]
pub enum Command {
Config,
+ Lock,
Otp,
Pin,
Pws,
@@ -44,6 +45,7 @@ impl Command {
pub fn execute(&self, args: Vec<String>) -> Result<()> {
match *self {
Command::Config => config(args),
+ Command::Lock => lock(args),
Command::Otp => otp(args),
Command::Pin => pin(args),
Command::Pws => pws(args),
@@ -60,6 +62,7 @@ impl fmt::Display for Command {
"{}",
match *self {
Command::Config => "config",
+ Command::Lock => "lock",
Command::Otp => "otp",
Command::Pin => "pin",
Command::Pws => "pws",
@@ -76,6 +79,7 @@ impl str::FromStr for Command {
fn from_str(s: &str) -> result::Result<Self, Self::Err> {
match s {
"config" => Ok(Command::Config),
+ "lock" => Ok(Command::Lock),
"otp" => Ok(Command::Otp),
"pin" => Ok(Command::Pin),
"pws" => Ok(Command::Pws),
@@ -585,6 +589,15 @@ fn config_set(args: Vec<String>) -> Result<()> {
commands::config_set(numlock, capslock, scrollock, otp_pin)
}
+/// Lock the Nitrokey.
+fn lock(args: Vec<String>) -> Result<()> {
+ let mut parser = argparse::ArgumentParser::new();
+ parser.set_description("Locks the connected Nitrokey device");
+ parse(&parser, args)?;
+
+ commands::lock()
+}
+
/// Execute an OTP subcommand.
fn otp(args: Vec<String>) -> Result<()> {
let mut subcommand = OtpCommand::Get;