From c9d8d24eecc9cd2ba2f02fd447e296a45e7fd9a1 Mon Sep 17 00:00:00 2001 From: shimunn Date: Tue, 17 Sep 2019 21:44:51 +0200 Subject: [PATCH] fetch salt only once --- src/config.rs | 14 +++++++------- src/main.rs | 10 +++++++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/config.rs b/src/config.rs index 20071ed..1cb24a3 100644 --- a/src/config.rs +++ b/src/config.rs @@ -8,36 +8,36 @@ use std::collections::HashMap; use std::env; use std::fs::File; use std::io::Read; -use std::path::{PathBuf, Path}; +use std::path::{Path, PathBuf}; use std::process::Command; - #[derive(Debug, Deserialize, Serialize)] pub struct EnvConfig { credential_id: String, uuid: String, salt: String, mapper_name: String, - password_helper: String + password_helper: String, } impl Into for EnvConfig { fn into(self) -> Config { - Config{ + Config { credential_id: self.credential_id, device: format!("/dev/disk/by-uuid/{}", self.uuid).into(), mapper_name: self.mapper_name, password_helper: PasswordHelper::Script(self.password_helper), input_salt: if PathBuf::from(&self.salt).exists() { - InputSalt::File { path: self.salt.into() } + InputSalt::File { + path: self.salt.into(), + } } else { InputSalt::AskPassword - } + }, } } } - #[derive(Debug, Deserialize, Serialize)] pub struct Config { pub credential_id: String, diff --git a/src/main.rs b/src/main.rs index f805878..103fe3b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -94,8 +94,6 @@ fn main() -> Fido2LuksResult<()> { )) }; if args.is_empty() { - let salt = conf.input_salt.obtain(&conf.password_helper)?; - dbg!(hex::encode(&salt)); if env.contains_key("CRYPTTAB_NAME") { //Indicates that this script is being run as keyscript let mut out = stdout(); @@ -109,7 +107,13 @@ fn main() -> Fido2LuksResult<()> { match args.first().map(|s| s.as_ref()).unwrap() { "addkey" => add_key_to_luks(&Config::load_default_location()?).map(|_| ()), "setup" => setup(), - "open" if args.get(1).map(|a| &*a == "-e").unwrap_or(false) => open(&envy::prefixed("FIDO2LUKS_").from_env::().expect("Missing env config values").into(), &secret()?), + "open" if args.get(1).map(|a| &*a == "-e").unwrap_or(false) => open( + &envy::prefixed("FIDO2LUKS_") + .from_env::() + .expect("Missing env config values") + .into(), + &secret()?, + ), "open" => open(&conf, &secret()?), "connected" => match authenticator_connected()? { false => {