summaryrefslogtreecommitdiffstats
path: root/tool/src/commands/inspect.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tool/src/commands/inspect.rs')
-rw-r--r--tool/src/commands/inspect.rs38
1 files changed, 29 insertions, 9 deletions
diff --git a/tool/src/commands/inspect.rs b/tool/src/commands/inspect.rs
index 6f5d080c..c1f12120 100644
--- a/tool/src/commands/inspect.rs
+++ b/tool/src/commands/inspect.rs
@@ -4,7 +4,7 @@ use std::io::{self, Read};
use clap;
extern crate sequoia_openpgp as openpgp;
-use crate::openpgp::{Packet, Result};
+use crate::openpgp::{KeyHandle, Packet, Result};
use crate::openpgp::cert::prelude::*;
use openpgp::packet::{
Signature,
@@ -351,10 +351,20 @@ fn inspect_signatures(output: &mut dyn io::Write,
writeln!(output, " Kind: {}", signature_type)?,
}
- if let Some(fp) = sig.issuer_fingerprint() {
- writeln!(output, " Signed by: {}", fp)?;
- } else if let Some(kid) = sig.issuer() {
- writeln!(output, " Signed by: {}", kid)?;
+ let mut fps: Vec<_> = sig.issuer_fingerprints().collect();
+ fps.sort();
+ fps.dedup();
+ let fps: Vec<KeyHandle> = fps.into_iter().map(|fp| fp.into()).collect();
+ for fp in fps.iter() {
+ writeln!(output, " Alleged signer: {}", fp)?;
+ }
+ let mut keyids: Vec<_> = sig.issuers().collect();
+ keyids.sort();
+ keyids.dedup();
+ for keyid in keyids {
+ if ! fps.iter().any(|fp| fp.aliases(&keyid.into())) {
+ writeln!(output, " Alleged signer: {}", keyid)?;
+ }
}
}
if ! sigs.is_empty() {
@@ -370,10 +380,20 @@ fn inspect_certifications(output: &mut dyn io::Write,
print_certifications: bool) -> Result<()> {
if print_certifications {
for sig in certs {
- if let Some(fp) = sig.issuer_fingerprint() {
- writeln!(output, " Certified by: {}", fp)?;
- } else if let Some(kid) = sig.issuer() {
- writeln!(output, " Certified by: {}", kid)?;
+ let mut fps: Vec<_> = sig.issuer_fingerprints().collect();
+ fps.sort();
+ fps.dedup();
+ let fps: Vec<KeyHandle> = fps.into_iter().map(|fp| fp.into()).collect();
+ for fp in fps.iter() {
+ writeln!(output, "Alleged certifier: {}", fp)?;
+ }
+ let mut keyids: Vec<_> = sig.issuers().collect();
+ keyids.sort();
+ keyids.dedup();
+ for keyid in keyids {
+ if ! fps.iter().any(|fp| fp.aliases(&keyid.into())) {
+ writeln!(output, "Alleged certifier: {}", keyid)?;
+ }
}
}
if ! certs.is_empty() {