summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@pep.foundation>2020-06-16 14:54:30 +0200
committerNeal H. Walfield <neal@pep.foundation>2020-06-16 14:58:51 +0200
commit385dc1a000d1cc4fee1dbe1592d3b18e3e9072bc (patch)
tree5417ea4290166457577c3e16cba142b5dd225c22
parentf71608de6eee12f34352bc2a4e1d27a33cad74b2 (diff)
tool: Make 'sq packet dump' always summarize the secret key material
- `sq packet dump` only shows information about the secret key material (whether it is encrypted, and how it is encrypted) when `--mpis` is specified. - `--mpis` should only control whether the mpis are printed, not the summary information. - Change `sq packet dump` always print the summary information.
-rw-r--r--tool/src/commands/dump.rs70
1 files changed, 40 insertions, 30 deletions
diff --git a/tool/src/commands/dump.rs b/tool/src/commands/dump.rs
index 53c84fd6..c6327f1c 100644
--- a/tool/src/commands/dump.rs
+++ b/tool/src/commands/dump.rs
@@ -352,41 +352,45 @@ impl PacketDumper {
},
mpi::PublicKey::__Nonexhaustive => unreachable!(),
}
+ }
- if let Some(secrets) = k.optional_secret() {
- use self::openpgp::packet::key::SecretKeyMaterial;
- writeln!(output, "{}", i)?;
- writeln!(output, "{} Secret Key:", i)?;
+ if let Some(secrets) = k.optional_secret() {
+ use self::openpgp::packet::key::SecretKeyMaterial;
+ writeln!(output, "{}", i)?;
+ writeln!(output, "{} Secret Key:", i)?;
- let ii = format!("{} ", i);
- match secrets {
- SecretKeyMaterial::Unencrypted(ref u) => u.map(
- |mpis| -> Result<()> {
+ let ii = format!("{} ", i);
+ match secrets {
+ SecretKeyMaterial::Unencrypted(ref u) => {
+ writeln!(output, "{}", i)?;
+ writeln!(output, "{} Unencrypted", ii)?;
+ if pd.mpis {
+ u.map(|mpis| -> Result<()> {
match mpis
{
mpi::SecretKeyMaterial::RSA { d, p, q, u } =>
pd.dump_mpis(output, &ii,
- &[d.value(), p.value(),
- q.value(), u.value()],
- &["d", "p", "q", "u"])?,
+ &[d.value(), p.value(),
+ q.value(), u.value()],
+ &["d", "p", "q", "u"])?,
mpi::SecretKeyMaterial::DSA { x } =>
pd.dump_mpis(output, &ii, &[x.value()],
- &["x"])?,
+ &["x"])?,
mpi::SecretKeyMaterial::ElGamal { x } =>
pd.dump_mpis(output, &ii, &[x.value()],
- &["x"])?,
+ &["x"])?,
mpi::SecretKeyMaterial::EdDSA { scalar } =>
pd.dump_mpis(output, &ii,
- &[scalar.value()],
- &["scalar"])?,
+ &[scalar.value()],
+ &["scalar"])?,
mpi::SecretKeyMaterial::ECDSA { scalar } =>
pd.dump_mpis(output, &ii,
- &[scalar.value()],
- &["scalar"])?,
+ &[scalar.value()],
+ &["scalar"])?,
mpi::SecretKeyMaterial::ECDH { scalar } =>
pd.dump_mpis(output, &ii,
- &[scalar.value()],
- &["scalar"])?,
+ &[scalar.value()],
+ &["scalar"])?,
mpi::SecretKeyMaterial::Unknown { mpis, rest } => {
let keys: Vec<String> =
(0..mpis.len()).map(
@@ -401,21 +405,27 @@ impl PacketDumper {
)?;
pd.dump_mpis(output, &ii, &[rest],
- &["rest"])?;
+ &["rest"])?;
},
mpi::SecretKeyMaterial::__Nonexhaustive =>
unreachable!(),
- } Ok(()) })?,
- SecretKeyMaterial::Encrypted(ref e) => {
- writeln!(output, "{}", i)?;
- write!(output, "{} S2K: ", ii)?;
- pd.dump_s2k(output, &ii, e.s2k())?;
- writeln!(output, "{} Sym. algo: {}", ii,
- e.algo())?;
- pd.dump_mpis(output, &ii, &[e.ciphertext()],
- &["ciphertext"])?;
- },
+ }
+ Ok(())
+ })?;
+ }
}
+ SecretKeyMaterial::Encrypted(ref e) => {
+ writeln!(output, "{}", i)?;
+ writeln!(output, "{} Encrypted", ii)?;
+ write!(output, "{} S2K: ", ii)?;
+ pd.dump_s2k(output, &ii, e.s2k())?;
+ writeln!(output, "{} Sym. algo: {}", ii,
+ e.algo())?;
+ if pd.mpis {
+ pd.dump_mpis(output, &ii, &[e.ciphertext()],
+ &["ciphertext"])?;
+ }
+ },
}
}