Merge branch 'missingkeys' into 'main'

opgpcard: properly error out of sign/decrypt, if the relevant key slot is empty

See merge request openpgp-card/openpgp-card!16
This commit is contained in:
Nora Widdecke 2022-10-25 22:19:55 +00:00
commit 1f556c068d

View file

@ -979,6 +979,10 @@ fn decrypt(
let mut card = Card::new(backend); let mut card = Card::new(backend);
let mut open = card.transaction()?; let mut open = card.transaction()?;
if open.fingerprints()?.decryption().is_none() {
return Err(anyhow!("Can't decrypt: this card has no key in the decryption slot.").into());
}
let user_pin = util::get_pin(&mut open, pin_file, ENTER_USER_PIN); let user_pin = util::get_pin(&mut open, pin_file, ENTER_USER_PIN);
let mut user = util::verify_to_user(&mut open, user_pin.as_deref())?; let mut user = util::verify_to_user(&mut open, user_pin.as_deref())?;
@ -1003,6 +1007,10 @@ fn sign_detached(
let mut card = Card::new(backend); let mut card = Card::new(backend);
let mut open = card.transaction()?; let mut open = card.transaction()?;
if open.fingerprints()?.signature().is_none() {
return Err(anyhow!("Can't sign: this card has no key in the signing slot.").into());
}
let user_pin = util::get_pin(&mut open, pin_file, ENTER_USER_PIN); let user_pin = util::get_pin(&mut open, pin_file, ENTER_USER_PIN);
let mut sign = util::verify_to_sign(&mut open, user_pin.as_deref())?; let mut sign = util::verify_to_sign(&mut open, user_pin.as_deref())?;