diff --git a/card-functionality/src/list-cards.rs b/card-functionality/src/list-cards.rs index 0908c83..7d8116c 100644 --- a/card-functionality/src/list-cards.rs +++ b/card-functionality/src/list-cards.rs @@ -10,7 +10,7 @@ fn main() -> Result<()> { println!("The following OpenPGP cards are connected to your system:"); for mut card in PcscCard::cards()? { - let mut txc: TxClient = openpgp_card_pcsc::get_txc!(card, true)?; + let mut txc: TxClient = openpgp_card_pcsc::get_txc!(card)?; let open = Open::new(&mut txc)?; println!(" {}", open.application_identifier()?.ident()); diff --git a/card-functionality/src/tests.rs b/card-functionality/src/tests.rs index 8eb77b4..29ea7cd 100644 --- a/card-functionality/src/tests.rs +++ b/card-functionality/src/tests.rs @@ -682,8 +682,8 @@ pub fn run_test( use anyhow::anyhow; - let mut txc = openpgp_card_pcsc::get_txc!(card_client, true) - .map_err(|e| anyhow!(e))?; + let mut txc = + openpgp_card_pcsc::get_txc!(card_client).map_err(|e| anyhow!(e))?; // let mut txc = TxClient::new(&mut tx, card_caps, reader_caps); t(&mut txc, param) diff --git a/openpgp-card-sequoia/src/main.rs b/openpgp-card-sequoia/src/main.rs index f82fdd3..2408ec2 100644 --- a/openpgp-card-sequoia/src/main.rs +++ b/openpgp-card-sequoia/src/main.rs @@ -36,7 +36,7 @@ fn main() -> Result<(), Box> { if let Ok(test_card_ident) = test_card_ident { let mut card = PcscCard::open_by_ident(&test_card_ident)?; - let mut txc = openpgp_card_pcsc::get_txc!(card, true)?; + let mut txc = openpgp_card_pcsc::get_txc!(card)?; let mut open = Open::new(&mut txc)?; @@ -147,7 +147,7 @@ fn main() -> Result<(), Box> { // Open fresh Card for decrypt // ----------------------------- let mut card = PcscCard::open_by_ident(&test_card_ident)?; - let mut txc = openpgp_card_pcsc::get_txc!(card, true)?; + let mut txc = openpgp_card_pcsc::get_txc!(card)?; let mut open = Open::new(&mut txc)?; @@ -188,7 +188,7 @@ fn main() -> Result<(), Box> { // Open fresh Card for signing // ----------------------------- let mut card = PcscCard::open_by_ident(&test_card_ident)?; - let mut txc = openpgp_card_pcsc::get_txc!(card, true)?; + let mut txc = openpgp_card_pcsc::get_txc!(card)?; let mut open = Open::new(&mut txc)?; @@ -220,7 +220,7 @@ fn main() -> Result<(), Box> { println!("The following OpenPGP cards are connected to your system:"); for mut card in PcscCard::cards()? { - let mut txc = openpgp_card_pcsc::get_txc!(card, true)?; + let mut txc = openpgp_card_pcsc::get_txc!(card)?; let open = Open::new(&mut txc)?; println!(" {}", open.application_identifier()?.ident()); diff --git a/pcsc/src/lib.rs b/pcsc/src/lib.rs index 52caa8e..760e29a 100644 --- a/pcsc/src/lib.rs +++ b/pcsc/src/lib.rs @@ -20,10 +20,15 @@ const FEATURE_MODIFY_PIN_DIRECT: u8 = 0x07; /// in PcscCard) #[macro_export] macro_rules! get_txc { - ($card:expr, $reselect:expr) => {{ + ($card:expr $(, $reselect:expr)? ) => {{ use openpgp_card::{Error, SmartcardError}; use pcsc::{Disposition, Protocols, ShareMode}; - // use std::collections::HashMap; + + #[allow(unused_assignments)] + let mut reselect = true; + $( + reselect = $reselect; + )? let mut was_reset = false; @@ -52,7 +57,7 @@ macro_rules! get_txc { // For initial card-opening, we don't do this, then // the caller always expects a card that has not // been "select"ed yet. - if $reselect { + if reselect { TxClient::select(&mut txc)?; } diff --git a/tools/src/bin/opgpcard-pin/main.rs b/tools/src/bin/opgpcard-pin/main.rs index a1177c4..1c50f96 100644 --- a/tools/src/bin/opgpcard-pin/main.rs +++ b/tools/src/bin/opgpcard-pin/main.rs @@ -16,7 +16,7 @@ fn main() -> Result<(), Box> { let cli = cli::Cli::from_args(); let mut card = PcscCard::open_by_ident(&cli.ident)?; - let mut txc = get_txc!(card, true)?; + let mut txc = get_txc!(card)?; let pinpad_verify = txc.feature_pinpad_verify(); let pinpad_modify = txc.feature_pinpad_modify(); diff --git a/tools/src/bin/opgpcard/main.rs b/tools/src/bin/opgpcard/main.rs index 58d4751..12d2a45 100644 --- a/tools/src/bin/opgpcard/main.rs +++ b/tools/src/bin/opgpcard/main.rs @@ -72,7 +72,7 @@ fn main() -> Result<(), Box> { cmd, } => { let mut card = util::open_card(&ident)?; - let mut txc = get_txc!(card, true)?; + let mut txc = get_txc!(card)?; let mut open = Open::new(&mut txc)?; @@ -139,7 +139,7 @@ fn list_cards() -> Result<()> { println!("Available OpenPGP cards:"); for mut card in cards { - let mut txc = get_txc!(card, true)?; + let mut txc = get_txc!(card)?; let open = Open::new(&mut txc)?; println!(" {}", open.application_identifier()?.ident()); @@ -155,7 +155,7 @@ fn set_identity( id: u8, ) -> Result<(), Box> { let mut card = util::open_card(ident)?; - let mut txc = get_txc!(card, true)?; + let mut txc = get_txc!(card)?; ::set_identity(&mut txc, id)?; @@ -174,7 +174,7 @@ fn print_status(ident: Option, verbose: bool) -> Result<()> { } }; - let mut txc = get_txc!(card, true)?; + let mut txc = get_txc!(card)?; let mut open = Open::new(&mut txc)?; @@ -328,7 +328,7 @@ fn decrypt( let input = util::open_or_stdin(input.as_deref())?; let mut card = util::open_card(ident)?; - let mut txc = get_txc!(card, true)?; + let mut txc = get_txc!(card)?; let mut open = Open::new(&mut txc)?; @@ -354,7 +354,7 @@ fn sign_detached( let mut input = util::open_or_stdin(input.as_deref())?; let mut card = util::open_card(ident)?; - let mut txc = get_txc!(card, true)?; + let mut txc = get_txc!(card)?; let mut open = Open::new(&mut txc)?; @@ -373,7 +373,7 @@ fn sign_detached( fn factory_reset(ident: &str) -> Result<()> { println!("Resetting Card {}", ident); let mut card = util::open_card(ident)?; - let mut txc = get_txc!(card, true)?; + let mut txc = get_txc!(card)?; Open::new(&mut txc)?.factory_reset() }