diff --git a/Cargo.lock b/Cargo.lock index 4b2be8d..9a36d03 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -330,7 +330,7 @@ dependencies = [ [[package]] name = "card-cli" -version = "1.4.0" +version = "1.4.1" dependencies = [ "authenticator", "base64 0.13.1", diff --git a/Cargo.toml b/Cargo.toml index fd9ec54..6e62cd1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "card-cli" -version = "1.4.0" +version = "1.4.1" authors = ["Hatter Jiang "] edition = "2018" diff --git a/src/cmd_chall.rs b/src/cmd_chall.rs index 0d87836..a5625bc 100644 --- a/src/cmd_chall.rs +++ b/src/cmd_chall.rs @@ -3,6 +3,7 @@ use std::ops::Deref; use clap::{App, Arg, ArgMatches, SubCommand}; use rust_util::util_clap::{Command, CommandError}; +use rust_util::util_msg; use yubico_manager::config::{Config, Mode, Slot}; use yubico_manager::Yubico; @@ -24,7 +25,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let sha1_output = sub_arg_matches.is_present("sha1"); let sha256_output = sub_arg_matches.is_present("sha256"); diff --git a/src/cmd_list.rs b/src/cmd_list.rs index 7dff0d9..cce32ef 100644 --- a/src/cmd_list.rs +++ b/src/cmd_list.rs @@ -2,6 +2,7 @@ use std::collections::BTreeMap; use clap::{App, Arg, ArgMatches, SubCommand}; use rust_util::util_clap::{Command, CommandError}; +use rust_util::util_msg; use yubikey::YubiKey; pub struct CommandImpl; @@ -16,7 +17,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let mut yk = opt_result!(YubiKey::open(), "YubiKey not found: {}"); diff --git a/src/cmd_pgpcarddecrypt.rs b/src/cmd_pgpcarddecrypt.rs index ad1d623..9ce26a9 100644 --- a/src/cmd_pgpcarddecrypt.rs +++ b/src/cmd_pgpcarddecrypt.rs @@ -4,6 +4,7 @@ use clap::{App, Arg, ArgMatches, SubCommand}; use openpgp_card::OpenPgp; use openpgp_card::crypto_data::Cryptogram; use rust_util::util_clap::{Command, CommandError}; +use rust_util::util_msg; pub struct CommandImpl; @@ -21,7 +22,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let pin_opt = sub_arg_matches.value_of("pass").or_else(|| sub_arg_matches.value_of("pin")); let pin = opt_value_result!(pin_opt, "User pin must be assigned"); diff --git a/src/cmd_pgpcardlist.rs b/src/cmd_pgpcardlist.rs index 1f12213..f0bd311 100644 --- a/src/cmd_pgpcardlist.rs +++ b/src/cmd_pgpcardlist.rs @@ -4,6 +4,7 @@ use clap::{App, Arg, ArgMatches, SubCommand}; use openpgp_card::{KeyType, OpenPgp}; use openpgp_card_pcsc::PcscBackend; use rust_util::util_clap::{Command, CommandError}; +use rust_util::util_msg; use crate::pkiutil::openpgp_card_public_key_pem as public_key_pem; @@ -21,7 +22,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let detail_output = sub_arg_matches.is_present("detail"); let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let mut jsons = vec![]; let cards = opt_result!(PcscBackend::cards(None), "Failed to list OpenPGP cards: {}"); diff --git a/src/cmd_pgpcardsign.rs b/src/cmd_pgpcardsign.rs index dfb3831..1864051 100644 --- a/src/cmd_pgpcardsign.rs +++ b/src/cmd_pgpcardsign.rs @@ -7,7 +7,7 @@ use digest::Digest; use openpgp_card::crypto_data::Hash; use openpgp_card::OpenPgp; use rust_util::util_clap::{Command, CommandError}; -use rust_util::XResult; +use rust_util::{util_msg, XResult}; use sha2::{Sha256, Sha384, Sha512}; const BUFF_SIZE: usize = 512 * 1024; @@ -33,7 +33,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let pin_opt = sub_arg_matches.value_of("pass").or_else(|| sub_arg_matches.value_of("pin")); let pin = opt_value_result!(pin_opt, "User pin must be assigned"); diff --git a/src/cmd_pivdecrypt.rs b/src/cmd_pivdecrypt.rs index f937fd1..023be8b 100644 --- a/src/cmd_pivdecrypt.rs +++ b/src/cmd_pivdecrypt.rs @@ -2,6 +2,7 @@ use std::collections::BTreeMap; use clap::{App, Arg, ArgMatches, SubCommand}; use rust_util::util_clap::{Command, CommandError}; +use rust_util::util_msg; use yubikey::piv::{AlgorithmId, SlotId}; use yubikey::YubiKey; @@ -19,7 +20,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let pin_opt = sub_arg_matches.value_of("pin"); let pin = opt_value_result!(pin_opt, "User pin must be assigned"); diff --git a/src/cmd_pivgenerate.rs b/src/cmd_pivgenerate.rs index 8566be5..0694f7f 100644 --- a/src/cmd_pivgenerate.rs +++ b/src/cmd_pivgenerate.rs @@ -1,6 +1,7 @@ use clap::{App, Arg, ArgMatches, SubCommand}; use rust_util::util_clap::{Command, CommandError}; -use yubikey::{PinPolicy, TouchPolicy, YubiKey}; +use rust_util::util_msg; +use yubikey::{piv, PinPolicy, TouchPolicy, YubiKey}; use yubikey::piv::{AlgorithmId, SlotId}; pub struct CommandImpl; @@ -16,7 +17,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } warning!("This feature is not works"); let pin = opt_value_result!(sub_arg_matches.value_of("pin"), "User pin must be assigned"); @@ -24,7 +25,7 @@ impl Command for CommandImpl { let mut yk = opt_result!(YubiKey::open(), "YubiKey not found: {}"); opt_result!(yk.verify_pin(pin.as_bytes()), "YubiKey verify pin failed: {}"); - let public_key_info = opt_result!(yubikey::piv::generate(&mut yk,SlotId::Signature, AlgorithmId::Rsa2048, + let public_key_info = opt_result!(piv::generate(&mut yk,SlotId::Signature, AlgorithmId::Rsa2048, PinPolicy::Default, TouchPolicy::Default), "Generate key failed: {}"); success!("Generate key success: {:?}", public_key_info); diff --git a/src/cmd_pivsign.rs b/src/cmd_pivsign.rs index f589768..96e7a7a 100644 --- a/src/cmd_pivsign.rs +++ b/src/cmd_pivsign.rs @@ -3,9 +3,9 @@ use std::collections::BTreeMap; use clap::{App, Arg, ArgMatches, SubCommand}; use rust_util::util_clap::{Command, CommandError}; use rust_util::util_msg::MessageType; -use rust_util::XResult; +use rust_util::{util_msg, XResult}; use yubikey::piv::{AlgorithmId, SlotId}; -use yubikey::YubiKey; +use yubikey::{piv, YubiKey}; pub struct CommandImpl; @@ -21,7 +21,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let pin_opt = sub_arg_matches.value_of("pin"); let pin = opt_value_result!(pin_opt, "User pin must be assigned"); @@ -53,7 +53,7 @@ impl Command for CommandImpl { debugging!("PKCS1 padding: {}", hex::encode(&hash_padding)); }); let raw_in = crate::digest::copy_rsa2048(&hash_padding).unwrap(); - let sign_result = yubikey::piv::sign_data(&mut yk, &raw_in, AlgorithmId::Rsa2048, SlotId::Signature); + let sign_result = piv::sign_data(&mut yk, &raw_in, AlgorithmId::Rsa2048, SlotId::Signature); let sign = opt_result!(sign_result, "Sign data failed: {}"); let sign_bytes = sign.as_slice(); diff --git a/src/cmd_rsadecrypt.rs b/src/cmd_rsadecrypt.rs index 9d68a99..4bbc1d7 100644 --- a/src/cmd_rsadecrypt.rs +++ b/src/cmd_rsadecrypt.rs @@ -6,6 +6,7 @@ use openssl::encrypt::Decrypter; use openssl::pkey::PKey; use openssl::rsa::Rsa; use rust_util::util_clap::{Command, CommandError}; +use rust_util::util_msg; use rust_util::util_msg::MessageType; pub struct CommandImpl; @@ -25,7 +26,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let pri_key_in = opt_value_result!(sub_arg_matches.value_of("pri-key-in"), "Require private key in"); let pri_key_bytes = opt_result!(std::fs::read(pri_key_in), "Read file: {}, failed: {}", pri_key_in); @@ -45,7 +46,7 @@ impl Command for CommandImpl { return simple_error!("Data is required, --data-hex or --data argument!"); }; - rust_util::util_msg::when(MessageType::DEBUG, || { + util_msg::when(MessageType::DEBUG, || { let rsa = keypair.rsa().unwrap(); let n = rsa.n(); let d = rsa.d(); diff --git a/src/cmd_rsaencrypt.rs b/src/cmd_rsaencrypt.rs index bb64212..6ada101 100644 --- a/src/cmd_rsaencrypt.rs +++ b/src/cmd_rsaencrypt.rs @@ -1,3 +1,4 @@ +use std::fs; use std::collections::BTreeMap; use clap::{App, Arg, ArgMatches, SubCommand}; @@ -5,6 +6,7 @@ use openssl::encrypt::Encrypter; use openssl::pkey::PKey; use openssl::rsa::Rsa; use rust_util::util_clap::{Command, CommandError}; +use rust_util::util_msg; use crate::digest::sha256_bytes; @@ -26,10 +28,10 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let pub_key_in = opt_value_result!(sub_arg_matches.value_of("pub-key-in"), "Require public key in"); - let pub_key_bytes = opt_result!(std::fs::read(pub_key_in), "Read file: {}, failed: {}", pub_key_in); + let pub_key_bytes = opt_result!(fs::read(pub_key_in), "Read file: {}, failed: {}", pub_key_in); let padding_opt = sub_arg_matches.value_of("padding"); let padding = crate::rsautil::parse_padding(padding_opt)?; diff --git a/src/cmd_rsaverify.rs b/src/cmd_rsaverify.rs index 7e5dd01..b9f7e94 100644 --- a/src/cmd_rsaverify.rs +++ b/src/cmd_rsaverify.rs @@ -1,3 +1,5 @@ +use std::fs; +use std::io; use std::fs::File; use clap::{App, Arg, ArgMatches, SubCommand}; @@ -8,7 +10,7 @@ use openssl::rsa::Rsa; use openssl::sign::Verifier; use rust_util::util_clap::{Command, CommandError}; use rust_util::util_msg::MessageType; -use rust_util::XResult; +use rust_util::{util_msg, XResult}; use crate::digest::sha256_bytes; @@ -34,7 +36,7 @@ impl Command for CommandImpl { // if json_output { rust_util::util_msg::set_logger_std_out(false); } let pub_key_in = opt_value_result!(sub_arg_matches.value_of("pub-key-in"), "Require public key in"); - let pub_key_bytes = opt_result!(std::fs::read(pub_key_in), "Read file: {}, failed: {}", pub_key_in); + let pub_key_bytes = opt_result!(fs::read(pub_key_in), "Read file: {}, failed: {}", pub_key_in); // let mut json = BTreeMap::new(); @@ -49,7 +51,7 @@ impl Command for CommandImpl { return simple_error!("Signature is required, --signature argument!"); }; - rust_util::util_msg::when(MessageType::DEBUG, || { + util_msg::when(MessageType::DEBUG, || { let rsa = keypair.rsa().unwrap(); let n = rsa.n(); let e = rsa.e(); @@ -68,7 +70,7 @@ impl Command for CommandImpl { let digest = get_digest(hash)?; let mut verifier = opt_result!(Verifier::new(digest, &keypair), "Verifier new failed: {}"); let mut f = opt_result!(File::open(file_in), "Open file: {}, failed: {}", file_in); - opt_result!(std::io::copy(&mut f, &mut verifier), "Verifier failed: {}"); + opt_result!(io::copy(&mut f, &mut verifier), "Verifier failed: {}"); let result = opt_result!(verifier.verify(&signature), "Verifier verify failed: {}"); if result { success!("Verify success"); diff --git a/src/cmd_u2fregister.rs b/src/cmd_u2fregister.rs index d19701e..710e5f4 100644 --- a/src/cmd_u2fregister.rs +++ b/src/cmd_u2fregister.rs @@ -9,6 +9,7 @@ use openssl::hash::MessageDigest; use openssl::pkey::PKey; use openssl::sign::Verifier; use rust_util::util_clap::{Command, CommandError}; +use rust_util::util_msg; use x509_parser::certificate::X509Certificate; use x509_parser::prelude::FromDer; @@ -32,7 +33,7 @@ impl Command for CommandImpl { fn run(&self, _arg_matches: &ArgMatches, sub_arg_matches: &ArgMatches) -> CommandError { let json_output = sub_arg_matches.is_present("json"); - if json_output { rust_util::util_msg::set_logger_std_out(false); } + if json_output { util_msg::set_logger_std_out(false); } let timeout_ms = match sub_arg_matches.value_of("timeout").unwrap().parse::() { Ok(t) => (t * 1000) as u64,