mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
gpg: New list-option "show-only-fpr-mbox".
* g10/gpg.c (parse_list_options): Add option "show-only-fpr-mbox". * g10/options.h (LIST_SHOW_ONLY_FPR_MBOX): New. * g10/keylist.c (list_keyblock_simple): New. (list_keyblock): Call it. (list_all): Do not print the keyring name in LIST_SHOW_ONLY_FPR_MBOX mode. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
73e5b0ec9b
commit
0e8bf20479
@ -1328,6 +1328,10 @@ give the opposite meaning. The options are:
|
||||
meaningful when using @option{--with-colons} along with
|
||||
@option{--check-signatures}.
|
||||
|
||||
@item show-only-fpr-mbox
|
||||
@opindex list-options:show-only-fpr-mbox
|
||||
For each valid user-id which also has a valid mail address print
|
||||
only the fingerprint and the mail address.
|
||||
@end table
|
||||
|
||||
@item --verify-options @var{parameters}
|
||||
|
@ -2009,6 +2009,8 @@ parse_list_options(char *str)
|
||||
N_("show expiration dates during signature listings")},
|
||||
{"show-sig-subpackets",LIST_SHOW_SIG_SUBPACKETS,NULL,
|
||||
NULL},
|
||||
{"show-only-fpr-mbox",LIST_SHOW_ONLY_FPR_MBOX, NULL,
|
||||
NULL},
|
||||
{NULL,0,NULL,NULL}
|
||||
};
|
||||
|
||||
|
@ -541,7 +541,7 @@ list_all (ctrl_t ctrl, int secret, int mark_secret)
|
||||
; /* Secret key listing requested but this isn't one. */
|
||||
else
|
||||
{
|
||||
if (!opt.with_colons)
|
||||
if (!opt.with_colons && !(opt.list_options & LIST_SHOW_ONLY_FPR_MBOX))
|
||||
{
|
||||
resname = keydb_get_resource_name (hd);
|
||||
if (lastresname != resname)
|
||||
@ -1254,6 +1254,57 @@ list_keyblock_print (ctrl_t ctrl, kbnode_t keyblock, int secret, int fpr,
|
||||
xfree (hexgrip);
|
||||
}
|
||||
|
||||
|
||||
/* Do a simple key listing printing only the fingerprint and the mail
|
||||
* address of valid keys. */
|
||||
static void
|
||||
list_keyblock_simple (ctrl_t ctrl, kbnode_t keyblock)
|
||||
{
|
||||
gpg_err_code_t ec;
|
||||
kbnode_t kbctx;
|
||||
kbnode_t node;
|
||||
char hexfpr[2*MAX_FINGERPRINT_LEN+1];
|
||||
char *mbox;
|
||||
|
||||
(void)ctrl;
|
||||
|
||||
node = find_kbnode (keyblock, PKT_PUBLIC_KEY);
|
||||
if (!node)
|
||||
{
|
||||
log_error ("Oops; key lost!\n");
|
||||
dump_kbnode (keyblock);
|
||||
return;
|
||||
}
|
||||
hexfingerprint (node->pkt->pkt.public_key, hexfpr, sizeof hexfpr);
|
||||
|
||||
for (kbctx = NULL; (node = walk_kbnode (keyblock, &kbctx, 0));)
|
||||
{
|
||||
if (node->pkt->pkttype == PKT_USER_ID)
|
||||
{
|
||||
PKT_user_id *uid = node->pkt->pkt.user_id;
|
||||
|
||||
if (uid->attrib_data)
|
||||
continue;
|
||||
|
||||
if (uid->flags.expired || uid->flags.revoked)
|
||||
continue;
|
||||
|
||||
mbox = mailbox_from_userid (uid->name, 0);
|
||||
if (!mbox)
|
||||
{
|
||||
ec = gpg_err_code_from_syserror ();
|
||||
if (ec != GPG_ERR_EINVAL)
|
||||
log_error ("error getting mailbox from user-id: %s\n",
|
||||
gpg_strerror (ec));
|
||||
continue;
|
||||
}
|
||||
es_fprintf (es_stdout, "%s %s\n", hexfpr, mbox);
|
||||
xfree (mbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
print_revokers (estream_t fp, PKT_public_key * pk)
|
||||
{
|
||||
@ -1807,6 +1858,12 @@ list_keyblock (ctrl_t ctrl,
|
||||
|
||||
if (opt.with_colons)
|
||||
list_keyblock_colon (ctrl, keyblock, secret, has_secret);
|
||||
else if ((opt.list_options & LIST_SHOW_ONLY_FPR_MBOX))
|
||||
{
|
||||
if (!listctx->no_validity)
|
||||
check_trustdb_stale (ctrl);
|
||||
list_keyblock_simple (ctrl, keyblock);
|
||||
}
|
||||
else
|
||||
list_keyblock_print (ctrl, keyblock, secret, fpr, listctx);
|
||||
|
||||
|
@ -386,6 +386,7 @@ EXTERN_UNLESS_MAIN_MODULE int memory_stat_debug_mode;
|
||||
#define LIST_SHOW_SIG_EXPIRE (1<<9)
|
||||
#define LIST_SHOW_SIG_SUBPACKETS (1<<10)
|
||||
#define LIST_SHOW_USAGE (1<<11)
|
||||
#define LIST_SHOW_ONLY_FPR_MBOX (1<<12)
|
||||
|
||||
#define VERIFY_SHOW_PHOTOS (1<<0)
|
||||
#define VERIFY_SHOW_POLICY_URLS (1<<1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user