gpg: New command --show-keys.
authorWerner Koch <wk@gnupg.org>
Wed, 6 Jun 2018 09:50:58 +0000 (11:50 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 6 Jun 2018 09:57:34 +0000 (11:57 +0200)
* g10/gpg.c (aShowKeys): New const.
(opts): New command --show-keys.
(main): Implement command.
* g10/import.c (import_keys_internal): Don't print stats in show-only
mode.
(import_one): Be silent in show-only mode.
--

Using

  --import --import-options show-only

to look at a key is too cumbersome.  Provide this shortcut and also
remove some diagnostic cruft in this case.

Signed-off-by: Werner Koch <wk@gnupg.org>
doc/gpg.texi
g10/gpg.c
g10/import.c

index a12b5af..642805f 100644 (file)
@@ -353,6 +353,14 @@ may thus be used to see what keys @command{@gpgname} might use.  In
 particular external methods as defined by @option{--auto-key-locate} may
 be used to locate a key.  Only public keys are listed.
 
+@item --show-keys
+@opindex show-keys
+This commands takes OpenPGP keys as input and prints information about
+them in the same way the command @option{--list-keys} does for
+imported key.  No internal state is changed.  For automated processing
+this command should be combined with the option
+@option{--with-colons}.
+
 @item --fingerprint
 @opindex fingerprint
 List all keys (or the specified ones) along with their
@@ -2305,7 +2313,8 @@ opposite meaning. The options are:
   Show a listing of the key as imported right before it is stored.
   This can be combined with the option @option{--dry-run} to only look
   at keys; the option @option{show-only} is a shortcut for this
-  combination.  Note that suffixes like '#' for "sec" and "sbb" lines
+  combination.  The command @option{--show-keys} is another shortcut
+  for this.  Note that suffixes like '#' for "sec" and "sbb" lines
   may or may not be printed.
 
   @item import-export
index 70bdddf..499c005 100644 (file)
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -150,6 +150,7 @@ enum cmd_and_opt_values
     aSearchKeys,
     aRefreshKeys,
     aFetchKeys,
+    aShowKeys,
     aExport,
     aExportSecret,
     aExportSecretSub,
@@ -500,6 +501,7 @@ static ARGPARSE_OPTS opts[] = {
               N_("update all keys from a keyserver")),
   ARGPARSE_c (aLocateKeys, "locate-keys", "@"),
   ARGPARSE_c (aFetchKeys, "fetch-keys" , "@" ),
+  ARGPARSE_c (aShowKeys, "show-keys" , "@" ),
   ARGPARSE_c (aExportSecret, "export-secret-keys" , "@" ),
   ARGPARSE_c (aExportSecretSub, "export-secret-subkeys" , "@" ),
   ARGPARSE_c (aExportSshKey, "export-ssh-key", "@" ),
@@ -740,6 +742,7 @@ static ARGPARSE_OPTS opts[] = {
   ARGPARSE_c (aListKeys, "list-key", "@"),   /* alias */
   ARGPARSE_c (aListSigs, "list-sig", "@"),   /* alias */
   ARGPARSE_c (aCheckKeys, "check-sig", "@"), /* alias */
+  ARGPARSE_c (aShowKeys,  "show-key", "@"), /* alias */
   ARGPARSE_s_n (oSkipVerify, "skip-verify", "@"),
   ARGPARSE_s_n (oSkipHiddenRecipients, "skip-hidden-recipients", "@"),
   ARGPARSE_s_n (oNoSkipHiddenRecipients, "no-skip-hidden-recipients", "@"),
@@ -2642,6 +2645,13 @@ main (int argc, char **argv)
             greeting=1;
             break;
 
+         case aShowKeys:
+            set_cmd (&cmd, pargs.r_opt);
+            opt.import_options |= IMPORT_SHOW;
+            opt.import_options |= IMPORT_DRY_RUN;
+            opt.import_options &= ~IMPORT_REPAIR_KEYS;
+            break;
+
          case aDetachedSign: detached_sig = 1; set_cmd( &cmd, aSign ); break;
 
          case aDecryptFiles: multifile=1; /* fall through */
@@ -4638,6 +4648,7 @@ main (int argc, char **argv)
       case aFastImport:
         opt.import_options |= IMPORT_FAST; /* fall through */
       case aImport:
+      case aShowKeys:
        import_keys (ctrl, argc? argv:NULL, argc, NULL,
                      opt.import_options, opt.key_origin, opt.key_origin_url);
        break;
index 9fc769d..d35c720 100644 (file)
@@ -494,7 +494,9 @@ import_keys_internal (ctrl_t ctrl, iobuf_t inp, char **fnames, int nnames,
 
   if (!stats_handle)
     {
-      import_print_stats (stats);
+      if ((options & (IMPORT_SHOW | IMPORT_DRY_RUN))
+          != (IMPORT_SHOW | IMPORT_DRY_RUN))
+        import_print_stats (stats);
       import_release_stats_handle (stats);
     }
 
@@ -1653,6 +1655,10 @@ import_one (ctrl_t ctrl,
   int any_filter = 0;
   KEYDB_HANDLE hd = NULL;
 
+  /* If show-only is active we don't won't any extra output.  */
+  if ((options & (IMPORT_SHOW | IMPORT_DRY_RUN)))
+    silent = 1;
+
   /* Get the key and print some info about it. */
   node = find_kbnode( keyblock, PKT_PUBLIC_KEY );
   if (!node )