summaryrefslogtreecommitdiffstats
path: root/sqv
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-04-15 10:35:59 +0200
committerJustus Winter <justus@sequoia-pgp.org>2020-04-16 14:35:53 +0200
commit47a55184b517ad32bf0897d48c304d5cb270683b (patch)
treeebd4fb53844907996fc9e6ef45675331a09c52e0 /sqv
parent55e353936e3f22b5da36be07e13e8ce3649db5cd (diff)
sqv: Improve error reporting when reading keyrings.
Diffstat (limited to 'sqv')
-rw-r--r--sqv/src/sqv.rs30
1 files changed, 13 insertions, 17 deletions
diff --git a/sqv/src/sqv.rs b/sqv/src/sqv.rs
index ce2fbdaa..32d39e8a 100644
--- a/sqv/src/sqv.rs
+++ b/sqv/src/sqv.rs
@@ -76,23 +76,19 @@ impl<'a> VerificationHelper for VHelper<'a> {
// Load relevant keys from the keyring.
for filename in self.keyrings.clone() {
- certs.extend(
- CertParser::from_file(filename)?
- .unvalidated_cert_filter(|cert, _| {
- // We don't skip keys that are valid (not revoked,
- // alive, etc.) so that
- cert.keys().key_handles(ids.iter()).next().is_some()
- })
- .map(|certr| {
- match certr {
- Ok(cert) => cert,
- Err(err) => {
- eprintln!("Error reading keyring {:?}: {}",
- filename, err);
- exit(2);
- }
- }
- }))
+ for cert in CertParser::from_file(filename)
+ .with_context(|| format!("Failed to parse keyring {:?}",
+ filename))?
+ .unvalidated_cert_filter(|cert, _| {
+ // We don't skip keys that are valid (not revoked,
+ // alive, etc.) so that
+ cert.keys().key_handles(ids.iter()).next().is_some()
+ })
+ {
+ certs.push(cert.with_context(|| {
+ format!("Malformed certificate in keyring {:?}", filename)
+ })?);
+ }
}
// Dedup. To avoid cloning the certificates, we don't use