openpgp-card: in private_use_do accessors, don't panic, but return error for illegal num.

Fix: set_private_use_do() doesn't return data.
This commit is contained in:
Heiko Schaefer 2023-09-05 10:47:04 +02:00
parent 8ee389ca7a
commit 724be38e4f
No known key found for this signature in database
GPG key ID: 4A849A1904CCBD7D

View file

@ -634,7 +634,12 @@ impl<'a> Transaction<'a> {
pub fn private_use_do(&mut self, num: u8) -> Result<Vec<u8>, Error> { pub fn private_use_do(&mut self, num: u8) -> Result<Vec<u8>, Error> {
log::info!("OpenPgpTransaction: private_use_do"); log::info!("OpenPgpTransaction: private_use_do");
assert!((1..=4).contains(&num)); if !(1..=4).contains(&num) {
return Err(Error::UnsupportedFeature(format!(
"Illegal Private Use DO num '{}'",
num,
)));
}
let cmd = commands::private_use_do(num); let cmd = commands::private_use_do(num);
self.send_command(cmd, true)?.try_into() self.send_command(cmd, true)?.try_into()
@ -1049,15 +1054,18 @@ impl<'a> Transaction<'a> {
/// Access condition: /// Access condition:
/// - 1/3 need PW1 (82) /// - 1/3 need PW1 (82)
/// - 2/4 need PW3 /// - 2/4 need PW3
pub fn set_private_use_do(&mut self, num: u8, data: Vec<u8>) -> Result<Vec<u8>, Error> { pub fn set_private_use_do(&mut self, num: u8, data: Vec<u8>) -> Result<(), Error> {
log::info!("OpenPgpTransaction: set_private_use_do"); log::info!("OpenPgpTransaction: set_private_use_do");
assert!((1..=4).contains(&num)); if !(1..=4).contains(&num) {
return Err(Error::UnsupportedFeature(format!(
"Illegal Private Use DO num '{}'",
num,
)));
}
let cmd = commands::put_private_use_do(num, data); let cmd = commands::put_private_use_do(num, data);
let resp = self.send_command(cmd, true)?; self.send_command(cmd, true)?.try_into()
Ok(resp.data()?.to_vec())
} }
pub fn set_login(&mut self, login: &[u8]) -> Result<(), Error> { pub fn set_login(&mut self, login: &[u8]) -> Result<(), Error> {