gpg: Print revocation certificate details when showing with-colons.
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Tue, 12 Jun 2018 06:41:30 +0000 (02:41 -0400)
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Mon, 8 Oct 2018 15:36:01 +0000 (16:36 +0100)
* g10/import.c (import_revoke_cert): add options argument, and print
colon-delimited output for revocation certificate as requested.
--

I looked into trying to make this work with one of the functions in
g10/keylist.c, but i saw nothing that will accept a revocation
certificate on its own, so i'm replicating the functionality directly
in g10/import.c.  This is a bit unfortunate because the code for
describing a revocation cert now exists in two separate places, but
refactoring both list_keyblock_print() and list_keyblock_colon() in
g10/keylist.c seems like a much heavier lift.

GnuPG-Bug-id: 4018
Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Gbp-Pq: Topic show-revocation-cert
Gbp-Pq: Name gpg-Print-revocation-certificate-details-when-showing-wit.patch

g10/import.c

index 11de592a0d4a535e2a9ac34a6ad458f9f5bf5c64..d7d79742c72abdd1d4f32c421706b0facac0e706 100644 (file)
@@ -2893,6 +2893,24 @@ import_revoke_cert (ctrl_t ctrl, kbnode_t node, unsigned int options,
   keyid[0] = node->pkt->pkt.signature->keyid[0];
   keyid[1] = node->pkt->pkt.signature->keyid[1];
 
+  if ((options & IMPORT_SHOW) &&
+      (opt.with_colons))
+    {
+      PKT_signature *sig = node->pkt->pkt.signature;
+      char *issuer_fpr = issuer_fpr = issuer_fpr_string (sig);
+
+      es_fprintf (es_stdout, "rvs::%d:%08lX%08lX:%s:%s:::::::%s:::%d:\n",
+                  sig->pubkey_algo,
+                 (ulong) sig->keyid[0], (ulong) sig->keyid[1],
+                 colon_datestr_from_sig (sig),
+                 colon_expirestr_from_sig (sig),
+                  issuer_fpr ? issuer_fpr : "",
+                  sig->digest_algo);
+
+      xfree (issuer_fpr);
+      es_fflush (es_stdout);
+    }
+
   pk = xmalloc_clear( sizeof *pk );
   rc = get_pubkey (ctrl, pk, keyid );
   if (gpg_err_code (rc) == GPG_ERR_NO_PUBKEY )