aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2018-06-06 09:50:58 +0000
committerWerner Koch <[email protected]>2018-06-06 09:59:06 +0000
commitdc87a3341f28ddac1113e90a3861d062be2610e2 (patch)
treef82f4239fe8cf452ad8a0823da9fa76739183213
parentpo: Fix Swedish and Turkish translations. (diff)
downloadgnupg-dc87a3341f28ddac1113e90a3861d062be2610e2.tar.gz
gnupg-dc87a3341f28ddac1113e90a3861d062be2610e2.zip
gpg: New command --show-keys.
* 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 <[email protected]> (cherry picked from commit 257661d6ae0ca376df758c38fabab2316d10e3a9)
-rw-r--r--doc/gpg.texi11
-rw-r--r--g10/gpg.c11
-rw-r--r--g10/import.c8
3 files changed, 28 insertions, 2 deletions
diff --git a/doc/gpg.texi b/doc/gpg.texi
index 260b9f33e..4dab23816 100644
--- a/doc/gpg.texi
+++ b/doc/gpg.texi
@@ -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
@@ -2295,7 +2303,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
diff --git a/g10/gpg.c b/g10/gpg.c
index 2c181c2cf..b76a039cc 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -149,6 +149,7 @@ enum cmd_and_opt_values
aSearchKeys,
aRefreshKeys,
aFetchKeys,
+ aShowKeys,
aExport,
aExportSecret,
aExportSecretSub,
@@ -498,6 +499,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", "@" ),
@@ -733,6 +735,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", "@"),
@@ -2602,6 +2605,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 */
@@ -4556,6 +4566,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;
diff --git a/g10/import.c b/g10/import.c
index c07f67fe2..10fbd4281 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -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);
}
@@ -1635,6 +1637,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 )