opgpcard: Read pinpad_modify only when needed
This commit is contained in:
parent
56d70e3218
commit
25ae73711d
1 changed files with 7 additions and 10 deletions
|
@ -73,34 +73,29 @@ pub enum PinSubCommand {
|
||||||
pub fn pin(ident: &str, cmd: PinSubCommand) -> Result<()> {
|
pub fn pin(ident: &str, cmd: PinSubCommand) -> Result<()> {
|
||||||
let backend = util::open_card(ident)?;
|
let backend = util::open_card(ident)?;
|
||||||
let mut card = Card::new(backend);
|
let mut card = Card::new(backend);
|
||||||
let mut open = card.transaction()?;
|
let open = card.transaction()?;
|
||||||
|
|
||||||
let pinpad_modify = open.feature_pinpad_modify();
|
|
||||||
|
|
||||||
match cmd {
|
match cmd {
|
||||||
PinSubCommand::SetUser {
|
PinSubCommand::SetUser {
|
||||||
user_pin_old,
|
user_pin_old,
|
||||||
user_pin_new,
|
user_pin_new,
|
||||||
} => set_user(user_pin_old, user_pin_new, pinpad_modify, open),
|
} => set_user(user_pin_old, user_pin_new, open),
|
||||||
|
|
||||||
PinSubCommand::SetAdmin {
|
PinSubCommand::SetAdmin {
|
||||||
admin_pin_old,
|
admin_pin_old,
|
||||||
admin_pin_new,
|
admin_pin_new,
|
||||||
} => set_admin(admin_pin_old, admin_pin_new, pinpad_modify, open),
|
} => set_admin(admin_pin_old, admin_pin_new, open),
|
||||||
|
|
||||||
// TODO: this doesn't use pinpad_modify, maybe don't compute it before this?
|
|
||||||
PinSubCommand::ResetUser {
|
PinSubCommand::ResetUser {
|
||||||
admin_pin,
|
admin_pin,
|
||||||
user_pin_new,
|
user_pin_new,
|
||||||
} => reset_user(admin_pin, user_pin_new, open),
|
} => reset_user(admin_pin, user_pin_new, open),
|
||||||
|
|
||||||
// TODO: this doesn't use pinpad_modify, maybe don't compute it before this?
|
|
||||||
PinSubCommand::SetReset {
|
PinSubCommand::SetReset {
|
||||||
admin_pin,
|
admin_pin,
|
||||||
reset_code,
|
reset_code,
|
||||||
} => set_reset(admin_pin, reset_code, open),
|
} => set_reset(admin_pin, reset_code, open),
|
||||||
|
|
||||||
// TODO: this doesn't use pinpad_modify, maybe don't compute it before this?
|
|
||||||
PinSubCommand::ResetUserRc {
|
PinSubCommand::ResetUserRc {
|
||||||
reset_code,
|
reset_code,
|
||||||
user_pin_new,
|
user_pin_new,
|
||||||
|
@ -111,9 +106,10 @@ pub fn pin(ident: &str, cmd: PinSubCommand) -> Result<()> {
|
||||||
fn set_user(
|
fn set_user(
|
||||||
user_pin_old: Option<PathBuf>,
|
user_pin_old: Option<PathBuf>,
|
||||||
user_pin_new: Option<PathBuf>,
|
user_pin_new: Option<PathBuf>,
|
||||||
pinpad_modify: bool,
|
|
||||||
mut open: Open,
|
mut open: Open,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
|
let pinpad_modify = open.feature_pinpad_modify();
|
||||||
|
|
||||||
let res = if !pinpad_modify {
|
let res = if !pinpad_modify {
|
||||||
// get current user pin
|
// get current user pin
|
||||||
let user_pin1 = util::get_pin(&mut open, user_pin_old, ENTER_USER_PIN)
|
let user_pin1 = util::get_pin(&mut open, user_pin_old, ENTER_USER_PIN)
|
||||||
|
@ -154,9 +150,10 @@ fn set_user(
|
||||||
fn set_admin(
|
fn set_admin(
|
||||||
admin_pin_old: Option<PathBuf>,
|
admin_pin_old: Option<PathBuf>,
|
||||||
admin_pin_new: Option<PathBuf>,
|
admin_pin_new: Option<PathBuf>,
|
||||||
pinpad_modify: bool,
|
|
||||||
mut open: Open,
|
mut open: Open,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
|
let pinpad_modify = open.feature_pinpad_modify();
|
||||||
|
|
||||||
if !pinpad_modify {
|
if !pinpad_modify {
|
||||||
// get current admin pin
|
// get current admin pin
|
||||||
let admin_pin1 = util::get_pin(&mut open, admin_pin_old, ENTER_ADMIN_PIN)
|
let admin_pin1 = util::get_pin(&mut open, admin_pin_old, ENTER_ADMIN_PIN)
|
||||||
|
|
Loading…
Reference in a new issue