From 370754b436f1fafa1c7973a949b965b89e066a55 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Tue, 29 Mar 2022 23:35:51 +0800 Subject: [PATCH] feat: opt card logging --- src/cmd_pgpcardsign.rs | 8 ++++---- src/pgpcardutil.rs | 8 ++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/cmd_pgpcardsign.rs b/src/cmd_pgpcardsign.rs index da458ad..19a55e2 100644 --- a/src/cmd_pgpcardsign.rs +++ b/src/cmd_pgpcardsign.rs @@ -5,6 +5,8 @@ use openpgp_card::Hash; use rust_util::util_clap::{Command, CommandError}; use rust_util::XResult; +use crate::pgpcardutil; + pub struct CommandImpl; impl Command for CommandImpl { @@ -33,12 +35,12 @@ impl Command for CommandImpl { let sha512 = sub_arg_matches.value_of("sha512"); if sha256.is_none() && sha384.is_none() && sha512.is_none() { - return simple_error!("SHA256, SHA384 or SHA512 must assign one"); + return simple_error!("SHA256, SHA384 or SHA512 must assign at least one"); } + let user = opt_result!(pgpcardutil::get_card_user_sw1_81(pin), "Verify user pin failed: {}"); let mut json = BTreeMap::new(); if let Some(sha256) = sha256 { - let user = crate::pgpcardutil::get_card_user_sw1_81(pin)?; let sha256_hex = opt_result!(hex::decode(sha256.trim()), "Decode sha256 failed: {}"); let sha256_hex = copy_sha256(&sha256_hex)?; let sig = user.signature_for_hash(Hash::SHA256(sha256_hex))?; @@ -52,7 +54,6 @@ impl Command for CommandImpl { } } if let Some(sha384) = sha384 { - let user = crate::pgpcardutil::get_card_user_sw1_81(pin)?; let sha384_hex = opt_result!(hex::decode(sha384.trim()), "Decode sha384 failed: {}"); let sha384_hex = copy_sha384(&sha384_hex)?; let sig = user.signature_for_hash(Hash::SHA384(sha384_hex))?; @@ -66,7 +67,6 @@ impl Command for CommandImpl { } } if let Some(sha512) = sha512 { - let user = crate::pgpcardutil::get_card_user_sw1_81(pin)?; let sha512_hex = opt_result!(hex::decode(sha512.trim()), "Decode sha512 failed: {}"); let sha512_hex = copy_sha512(&sha512_hex)?; let sig = user.signature_for_hash(Hash::SHA512(sha512_hex))?; diff --git a/src/pgpcardutil.rs b/src/pgpcardutil.rs index 99e2a1a..833aac7 100644 --- a/src/pgpcardutil.rs +++ b/src/pgpcardutil.rs @@ -35,9 +35,13 @@ fn get_card() -> XResult { if card_list.is_empty() { return simple_error!("Cannot find any card"); } - if card_list.len() > 0 { + if card_list.len() > 1 { warning!("Find {} OpenPGP cards, will use first card", card_list.len()); } - Ok(opt_value_result!(card_list.into_iter().next(), "Get first card failed")) + let card = card_list.into_iter().next(); + card.as_ref().map(|card| + card.get_aid().map(|card| + success!("Found card: {:?}", card))); + Ok(opt_value_result!(card, "Get first card failed")) }