opgpcard: adjust handling of card_service_data

This commit is contained in:
Heiko Schaefer 2022-10-25 09:54:03 +02:00
parent 44c73a154b
commit fff5b18310
No known key found for this signature in database
GPG key ID: 4A849A1904CCBD7D
3 changed files with 12 additions and 6 deletions

View file

@ -852,7 +852,10 @@ fn print_info(
} }
} }
if let Some(csd) = open.historical_bytes()?.card_service_data() { if let Some(csd) = open.historical_bytes()?.card_service_data() {
output.card_service_data(csd.to_string()); for line in csd.to_string().lines() {
let line = line.strip_prefix("- ").unwrap_or(line);
output.card_service_data(line.to_string());
}
} }
if let Some(eli) = open.extended_length_information()? { if let Some(eli) = open.extended_length_information()? {

View file

@ -14,7 +14,7 @@ pub struct Info {
manufacturer_id: String, manufacturer_id: String,
manufacturer_name: String, manufacturer_name: String,
card_capabilities: Vec<String>, card_capabilities: Vec<String>,
card_service_data: String, card_service_data: Vec<String>,
extended_length_info: Vec<String>, extended_length_info: Vec<String>,
extended_capabilities: Vec<String>, extended_capabilities: Vec<String>,
algorithms: Option<Vec<String>>, algorithms: Option<Vec<String>>,
@ -47,7 +47,7 @@ impl Info {
} }
pub fn card_service_data(&mut self, data: String) { pub fn card_service_data(&mut self, data: String) {
self.card_service_data = data; self.card_service_data.push(data);
} }
pub fn extended_length_info(&mut self, info: String) { pub fn extended_length_info(&mut self, info: String) {
@ -91,7 +91,10 @@ impl Info {
} }
if !self.card_service_data.is_empty() { if !self.card_service_data.is_empty() {
s.push_str(&format!("Card service data: {}\n", self.card_service_data)); s.push_str("Card service data:\n");
for c in self.card_service_data.iter() {
s.push_str(&format!("- {}\n", c));
}
s.push('\n'); s.push('\n');
} }
@ -177,7 +180,7 @@ struct InfoV0 {
manufacturer_id: String, manufacturer_id: String,
manufacturer_name: String, manufacturer_name: String,
card_capabilities: Vec<String>, card_capabilities: Vec<String>,
card_service_data: String, card_service_data: Vec<String>,
extended_length_info: Vec<String>, extended_length_info: Vec<String>,
extended_capabilities: Vec<String>, extended_capabilities: Vec<String>,
algorithms: Option<Vec<String>>, algorithms: Option<Vec<String>>,

View file

@ -108,7 +108,7 @@ then stdout, as JSON, matches embedded file info.json
"application_id": "D276000124 01 01 0200 AFAF 00001234 0000", "application_id": "D276000124 01 01 0200 AFAF 00001234 0000",
"manufacturer_id": "AFAF", "manufacturer_id": "AFAF",
"manufacturer_name": "Unknown", "manufacturer_name": "Unknown",
"card_service_data": "", "card_service_data": [],
"ident": "AFAF:00001234" "ident": "AFAF:00001234"
} }
~~~ ~~~