feat: v1.12.9
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||
use rust_util::util_clap::{Command, CommandError};
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
use rust_util::XResult;
|
||||
use crate::{cmdutil, hmacutil, pbeutil, util};
|
||||
|
||||
pub struct CommandImpl;
|
||||
@@ -21,24 +21,17 @@ impl Command for CommandImpl {
|
||||
.required(true)
|
||||
.help("Plaintext"),
|
||||
)
|
||||
.arg(Arg::with_name("with-pbe").long("with-pbe").help("With PBE encryption"))
|
||||
.arg(Arg::with_name("double-pin-check").long("double-pin-check").help("Double PIN check"))
|
||||
.arg(Arg::with_name("pbe-iteration").long("pbe-iteration").takes_value(true).help("PBE iteration, default 100000"))
|
||||
.arg(cmdutil::build_with_pbe_encrypt_arg())
|
||||
.arg(cmdutil::build_double_pin_check_arg())
|
||||
.arg(cmdutil::build_pbe_iteration_arg())
|
||||
.arg(cmdutil::build_json_arg())
|
||||
}
|
||||
|
||||
fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError {
|
||||
let json_output = cmdutil::check_json_output(sub_arg_matches);
|
||||
|
||||
let mut text = sub_arg_matches.value_of("plaintext").unwrap().to_string();
|
||||
let with_pbe = sub_arg_matches.is_present("with-pbe");
|
||||
if with_pbe {
|
||||
let double_pin_check = sub_arg_matches.is_present("double-pin-check");
|
||||
let iteration = sub_arg_matches.value_of("pbe-iteration")
|
||||
.map(|x| x.parse::<u32>().unwrap()).unwrap_or(100000);
|
||||
text = pbeutil::simple_pbe_encrypt_with_prompt_from_string(iteration, &text, double_pin_check)?;
|
||||
}
|
||||
let hmac_encrypt_ciphertext = hmacutil::hmac_encrypt_from_string(&text)?;
|
||||
let text = sub_arg_matches.value_of("plaintext").unwrap().to_string();
|
||||
let hmac_encrypt_ciphertext = hmac_encrypt(&text, &mut None, sub_arg_matches)?;
|
||||
|
||||
if json_output {
|
||||
let mut json = BTreeMap::<&'_ str, String>::new();
|
||||
@@ -52,3 +45,16 @@ impl Command for CommandImpl {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn hmac_encrypt(text: &str, password_opt: &mut Option<String>, sub_arg_matches: &ArgMatches) -> XResult<String> {
|
||||
let with_pbe_encrypt = sub_arg_matches.is_present("with-pbe-encrypt");
|
||||
let text = if with_pbe_encrypt {
|
||||
let double_pin_check = sub_arg_matches.is_present("double-pin-check");
|
||||
let iteration = sub_arg_matches.value_of("pbe-iteration")
|
||||
.map(|x| x.parse::<u32>().unwrap()).unwrap_or(100000);
|
||||
pbeutil::simple_pbe_encrypt_with_prompt_from_string(iteration, &text, password_opt, double_pin_check)?
|
||||
} else {
|
||||
text.to_string()
|
||||
};
|
||||
Ok(hmacutil::hmac_encrypt_from_string(&text)?)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user