diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2020-04-15 10:35:59 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2020-04-16 14:35:53 +0200 |
commit | 47a55184b517ad32bf0897d48c304d5cb270683b (patch) | |
tree | ebd4fb53844907996fc9e6ef45675331a09c52e0 /sqv | |
parent | 55e353936e3f22b5da36be07e13e8ce3649db5cd (diff) |
sqv: Improve error reporting when reading keyrings.
Diffstat (limited to 'sqv')
-rw-r--r-- | sqv/src/sqv.rs | 30 |
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 |