feat: update pgp
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||||
use openpgp_card::card_do::{Lang, Sex};
|
use openpgp_card::card_do::{Lang, Sex};
|
||||||
use openpgp_card::OpenPgp;
|
|
||||||
use rust_util::util_clap::{Command, CommandError};
|
use rust_util::util_clap::{Command, CommandError};
|
||||||
|
|
||||||
|
use crate::pgpcardutil;
|
||||||
|
|
||||||
pub struct CommandImpl;
|
pub struct CommandImpl;
|
||||||
|
|
||||||
impl Command for CommandImpl {
|
impl Command for CommandImpl {
|
||||||
@@ -24,8 +25,7 @@ impl Command for CommandImpl {
|
|||||||
let pin = opt_value_result!(pin_opt, "Pin must be assigned");
|
let pin = opt_value_result!(pin_opt, "Pin must be assigned");
|
||||||
if pin.len() < 8 { return simple_error!("Admin pin length:{}, must >= 8!", pin.len()); }
|
if pin.len() < 8 { return simple_error!("Admin pin length:{}, must >= 8!", pin.len()); }
|
||||||
|
|
||||||
let card = crate::pgpcardutil::get_card()?;
|
let mut pgp = pgpcardutil::get_openpgp_card()?;
|
||||||
let mut pgp = OpenPgp::new(card);
|
|
||||||
let mut trans = opt_result!(pgp.transaction(), "Open card failed: {}");
|
let mut trans = opt_result!(pgp.transaction(), "Open card failed: {}");
|
||||||
|
|
||||||
if sub_arg_matches.is_present("reset") {
|
if sub_arg_matches.is_present("reset") {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ use std::collections::BTreeMap;
|
|||||||
|
|
||||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||||
use openpgp_card::crypto_data::Cryptogram;
|
use openpgp_card::crypto_data::Cryptogram;
|
||||||
use openpgp_card::OpenPgp;
|
|
||||||
use rust_util::{util_msg, XResult};
|
use rust_util::{util_msg, XResult};
|
||||||
use rust_util::util_clap::{Command, CommandError};
|
use rust_util::util_clap::{Command, CommandError};
|
||||||
|
|
||||||
|
use crate::pgpcardutil;
|
||||||
use crate::util::{base64_decode, base64_encode};
|
use crate::util::{base64_decode, base64_encode};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
@@ -61,8 +61,7 @@ impl Command for CommandImpl {
|
|||||||
return simple_error!("cipher or cipher-base64 must assign one");
|
return simple_error!("cipher or cipher-base64 must assign one");
|
||||||
};
|
};
|
||||||
|
|
||||||
let card = crate::pgpcardutil::get_card()?;
|
let mut pgp = pgpcardutil::get_openpgp_card()?;
|
||||||
let mut pgp = OpenPgp::new(card);
|
|
||||||
let mut trans = opt_result!(pgp.transaction(), "Open card failed: {}");
|
let mut trans = opt_result!(pgp.transaction(), "Open card failed: {}");
|
||||||
|
|
||||||
opt_result!(trans.verify_pw1_user(pin.as_ref()), "User pin verify failed: {}");
|
opt_result!(trans.verify_pw1_user(pin.as_ref()), "User pin verify failed: {}");
|
||||||
|
|||||||
@@ -5,10 +5,11 @@ use std::io::{ErrorKind, Read};
|
|||||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||||
use digest::Digest;
|
use digest::Digest;
|
||||||
use openpgp_card::crypto_data::Hash;
|
use openpgp_card::crypto_data::Hash;
|
||||||
use openpgp_card::OpenPgp;
|
|
||||||
use rust_util::util_clap::{Command, CommandError};
|
use rust_util::util_clap::{Command, CommandError};
|
||||||
use rust_util::{util_msg, XResult};
|
use rust_util::{util_msg, XResult};
|
||||||
use sha2::{Sha256, Sha384, Sha512};
|
use sha2::{Sha256, Sha384, Sha512};
|
||||||
|
|
||||||
|
use crate::pgpcardutil;
|
||||||
use crate::util::base64_encode;
|
use crate::util::base64_encode;
|
||||||
|
|
||||||
const BUFF_SIZE: usize = 512 * 1024;
|
const BUFF_SIZE: usize = 512 * 1024;
|
||||||
@@ -101,8 +102,7 @@ impl Command for CommandImpl {
|
|||||||
return simple_error!("SHA256, SHA384 or SHA512 must assign at least one");
|
return simple_error!("SHA256, SHA384 or SHA512 must assign at least one");
|
||||||
}
|
}
|
||||||
|
|
||||||
let card = crate::pgpcardutil::get_card()?;
|
let mut pgp = pgpcardutil::get_openpgp_card()?;
|
||||||
let mut pgp = OpenPgp::new(card);
|
|
||||||
let mut trans = opt_result!(pgp.transaction(), "Open card failed: {}");
|
let mut trans = opt_result!(pgp.transaction(), "Open card failed: {}");
|
||||||
|
|
||||||
if let Some(sha256) = sha256 {
|
if let Some(sha256) = sha256 {
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
|
use openpgp_card::OpenPgp;
|
||||||
use openpgp_card_pcsc::PcscBackend;
|
use openpgp_card_pcsc::PcscBackend;
|
||||||
use rust_util::XResult;
|
use rust_util::XResult;
|
||||||
|
|
||||||
|
pub fn get_openpgp_card() -> XResult<OpenPgp> {
|
||||||
|
let card = get_card()?;
|
||||||
|
Ok(OpenPgp::new(card))
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_card() -> XResult<PcscBackend> {
|
pub fn get_card() -> XResult<PcscBackend> {
|
||||||
let card_list = opt_result!(PcscBackend::cards(None), "Read OpenPGP card list failed: {}");
|
let card_list = opt_result!(PcscBackend::cards(None), "Read OpenPGP card list failed: {}");
|
||||||
if card_list.is_empty() {
|
if card_list.is_empty() {
|
||||||
|
|||||||
Reference in New Issue
Block a user