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

This commit is contained in:
Heiko Schaefer 2022-10-25 18:43:57 +02:00
parent 65caf07cc0
commit 4674b95557
No known key found for this signature in database
GPG key ID: 4A849A1904CCBD7D

View file

@ -979,6 +979,10 @@ fn decrypt(
let mut card = Card::new(backend);
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 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 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 mut sign = util::verify_to_sign(&mut open, user_pin.as_deref())?;