mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
gpg: New list-options show-pref and show-pref-verbose.
* g10/options.h (LIST_SHOW_PREF): New. (LIST_SHOW_PREF_VERBOSE): New. * g10/gpg.c (parse_list_options): Add new options. * g10/keyedit.c (show_prefs): Factor code out to ... * g10/keylist.c (show_preferences): new. (list_keyblock_print): Call show_preferences. -- Backported-from-master: 811cfa34cb3e7166f0cf1f94565504dee21cd9f5
This commit is contained in:
parent
4f43b6fdae
commit
b6ba7054a0
@ -436,9 +436,9 @@ do_ocb_flush (cipher_filter_context_t *cfx, iobuf_t a, byte *buf, size_t size)
|
|||||||
size_t n1 = cfx->chunksize - (cfx->chunklen + cfx->buflen);
|
size_t n1 = cfx->chunksize - (cfx->chunklen + cfx->buflen);
|
||||||
finalize = 1;
|
finalize = 1;
|
||||||
if (DBG_FILTER)
|
if (DBG_FILTER)
|
||||||
log_debug ("chunksize %"PRIu64" reached;"
|
log_debug ("chunksize %zu reached;"
|
||||||
" cur buflen=%zu using %zu of %zu\n",
|
" cur buflen=%zu using %zu of %zu\n",
|
||||||
cfx->chunksize, cfx->buflen,
|
(size_t)cfx->chunksize, cfx->buflen,
|
||||||
n1, n);
|
n1, n);
|
||||||
n = n1;
|
n = n1;
|
||||||
}
|
}
|
||||||
|
@ -2043,6 +2043,10 @@ parse_list_options(char *str)
|
|||||||
N_("show the keyring name in key listings")},
|
N_("show the keyring name in key listings")},
|
||||||
{"show-sig-expire",LIST_SHOW_SIG_EXPIRE,NULL,
|
{"show-sig-expire",LIST_SHOW_SIG_EXPIRE,NULL,
|
||||||
N_("show expiration dates during signature listings")},
|
N_("show expiration dates during signature listings")},
|
||||||
|
{"show-pref", LIST_SHOW_PREF, NULL,
|
||||||
|
N_("show preferences")},
|
||||||
|
{"show-pref-verbose", LIST_SHOW_PREF_VERBOSE, NULL,
|
||||||
|
N_("show preferences")},
|
||||||
{"show-sig-subpackets",LIST_SHOW_SIG_SUBPACKETS,NULL,
|
{"show-sig-subpackets",LIST_SHOW_SIG_SUBPACKETS,NULL,
|
||||||
NULL},
|
NULL},
|
||||||
{"show-only-fpr-mbox",LIST_SHOW_ONLY_FPR_MBOX, NULL,
|
{"show-only-fpr-mbox",LIST_SHOW_ONLY_FPR_MBOX, NULL,
|
||||||
|
153
g10/keyedit.c
153
g10/keyedit.c
@ -3316,146 +3316,12 @@ tty_print_notations (int indent, PKT_signature * sig)
|
|||||||
static void
|
static void
|
||||||
show_prefs (PKT_user_id * uid, PKT_signature * selfsig, int verbose)
|
show_prefs (PKT_user_id * uid, PKT_signature * selfsig, int verbose)
|
||||||
{
|
{
|
||||||
const prefitem_t fake = { 0, 0 };
|
|
||||||
const prefitem_t *prefs;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (!uid)
|
if (!uid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (uid->prefs)
|
|
||||||
prefs = uid->prefs;
|
|
||||||
else if (verbose)
|
|
||||||
prefs = &fake;
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
int any, des_seen = 0, sha1_seen = 0, uncomp_seen = 0;
|
show_preferences (uid, 4, -1, 1);
|
||||||
|
|
||||||
tty_printf (" ");
|
|
||||||
tty_printf (_("Cipher: "));
|
|
||||||
for (i = any = 0; prefs[i].type; i++)
|
|
||||||
{
|
|
||||||
if (prefs[i].type == PREFTYPE_SYM)
|
|
||||||
{
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
any = 1;
|
|
||||||
/* We don't want to display strings for experimental algos */
|
|
||||||
if (!openpgp_cipher_test_algo (prefs[i].value)
|
|
||||||
&& prefs[i].value < 100)
|
|
||||||
tty_printf ("%s", openpgp_cipher_algo_name (prefs[i].value));
|
|
||||||
else
|
|
||||||
tty_printf ("[%d]", prefs[i].value);
|
|
||||||
if (prefs[i].value == CIPHER_ALGO_3DES)
|
|
||||||
des_seen = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!des_seen)
|
|
||||||
{
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
tty_printf ("%s", openpgp_cipher_algo_name (CIPHER_ALGO_3DES));
|
|
||||||
}
|
|
||||||
tty_printf ("\n ");
|
|
||||||
tty_printf (_("AEAD: "));
|
|
||||||
for (i = any = 0; prefs[i].type; i++)
|
|
||||||
{
|
|
||||||
if (prefs[i].type == PREFTYPE_AEAD)
|
|
||||||
{
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
any = 1;
|
|
||||||
/* We don't want to display strings for experimental algos */
|
|
||||||
if (!openpgp_aead_test_algo (prefs[i].value)
|
|
||||||
&& prefs[i].value < 100)
|
|
||||||
tty_printf ("%s", openpgp_aead_algo_name (prefs[i].value));
|
|
||||||
else
|
|
||||||
tty_printf ("[%d]", prefs[i].value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tty_printf ("\n ");
|
|
||||||
tty_printf (_("Digest: "));
|
|
||||||
for (i = any = 0; prefs[i].type; i++)
|
|
||||||
{
|
|
||||||
if (prefs[i].type == PREFTYPE_HASH)
|
|
||||||
{
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
any = 1;
|
|
||||||
/* We don't want to display strings for experimental algos */
|
|
||||||
if (!gcry_md_test_algo (prefs[i].value) && prefs[i].value < 100)
|
|
||||||
tty_printf ("%s", gcry_md_algo_name (prefs[i].value));
|
|
||||||
else
|
|
||||||
tty_printf ("[%d]", prefs[i].value);
|
|
||||||
if (prefs[i].value == DIGEST_ALGO_SHA1)
|
|
||||||
sha1_seen = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!sha1_seen)
|
|
||||||
{
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
tty_printf ("%s", gcry_md_algo_name (DIGEST_ALGO_SHA1));
|
|
||||||
}
|
|
||||||
tty_printf ("\n ");
|
|
||||||
tty_printf (_("Compression: "));
|
|
||||||
for (i = any = 0; prefs[i].type; i++)
|
|
||||||
{
|
|
||||||
if (prefs[i].type == PREFTYPE_ZIP)
|
|
||||||
{
|
|
||||||
const char *s = compress_algo_to_string (prefs[i].value);
|
|
||||||
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
any = 1;
|
|
||||||
/* We don't want to display strings for experimental algos */
|
|
||||||
if (s && prefs[i].value < 100)
|
|
||||||
tty_printf ("%s", s);
|
|
||||||
else
|
|
||||||
tty_printf ("[%d]", prefs[i].value);
|
|
||||||
if (prefs[i].value == COMPRESS_ALGO_NONE)
|
|
||||||
uncomp_seen = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!uncomp_seen)
|
|
||||||
{
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tty_printf ("%s", compress_algo_to_string (COMPRESS_ALGO_ZIP));
|
|
||||||
tty_printf (", ");
|
|
||||||
}
|
|
||||||
tty_printf ("%s", compress_algo_to_string (COMPRESS_ALGO_NONE));
|
|
||||||
}
|
|
||||||
if (uid->flags.mdc || uid->flags.aead || !uid->flags.ks_modify)
|
|
||||||
{
|
|
||||||
tty_printf ("\n ");
|
|
||||||
tty_printf (_("Features: "));
|
|
||||||
any = 0;
|
|
||||||
if (uid->flags.mdc)
|
|
||||||
{
|
|
||||||
tty_printf ("MDC");
|
|
||||||
any = 1;
|
|
||||||
}
|
|
||||||
if (!uid->flags.aead)
|
|
||||||
{
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
tty_printf ("AEAD");
|
|
||||||
}
|
|
||||||
if (!uid->flags.ks_modify)
|
|
||||||
{
|
|
||||||
if (any)
|
|
||||||
tty_printf (", ");
|
|
||||||
tty_printf (_("Keyserver no-modify"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tty_printf ("\n");
|
|
||||||
|
|
||||||
if (selfsig)
|
if (selfsig)
|
||||||
{
|
{
|
||||||
const byte *pref_ks;
|
const byte *pref_ks;
|
||||||
@ -3481,22 +3347,7 @@ show_prefs (PKT_user_id * uid, PKT_signature * selfsig, int verbose)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tty_printf (" ");
|
show_preferences (uid, 4, -1, 0);
|
||||||
for (i = 0; prefs[i].type; i++)
|
|
||||||
{
|
|
||||||
tty_printf (" %c%d", prefs[i].type == PREFTYPE_SYM ? 'S' :
|
|
||||||
prefs[i].type == PREFTYPE_AEAD ? 'A' :
|
|
||||||
prefs[i].type == PREFTYPE_HASH ? 'H' :
|
|
||||||
prefs[i].type == PREFTYPE_ZIP ? 'Z' : '?',
|
|
||||||
prefs[i].value);
|
|
||||||
}
|
|
||||||
if (uid->flags.mdc)
|
|
||||||
tty_printf (" [mdc]");
|
|
||||||
if (uid->flags.aead)
|
|
||||||
tty_printf (" [aead]");
|
|
||||||
if (!uid->flags.ks_modify)
|
|
||||||
tty_printf (" [no-ks-modify]");
|
|
||||||
tty_printf ("\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
172
g10/keylist.c
172
g10/keylist.c
@ -287,6 +287,173 @@ print_card_key_info (estream_t fp, kbnode_t keyblock)
|
|||||||
#endif /*ENABLE_CARD_SUPPORT*/
|
#endif /*ENABLE_CARD_SUPPORT*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Print the preferences line. Allowed values for MODE are:
|
||||||
|
* -1 - print to the TTY
|
||||||
|
* 0 - print to stdout.
|
||||||
|
* 1 - use log_info
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
show_preferences (PKT_user_id *uid, int indent, int mode, int verbose)
|
||||||
|
{
|
||||||
|
estream_t fp = mode < 0? NULL : mode ? log_get_stream () : es_stdout;
|
||||||
|
const prefitem_t fake = { 0, 0 };
|
||||||
|
const prefitem_t *prefs;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!uid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (uid->prefs)
|
||||||
|
prefs = uid->prefs;
|
||||||
|
else if (verbose)
|
||||||
|
prefs = &fake;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (verbose)
|
||||||
|
{
|
||||||
|
int any, des_seen = 0, sha1_seen = 0, uncomp_seen = 0;
|
||||||
|
|
||||||
|
tty_fprintf (fp, "%*s %s", indent, "", _("Cipher: "));
|
||||||
|
for (i = any = 0; prefs[i].type; i++)
|
||||||
|
{
|
||||||
|
if (prefs[i].type == PREFTYPE_SYM)
|
||||||
|
{
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
any = 1;
|
||||||
|
/* We don't want to display strings for experimental algos */
|
||||||
|
if (!openpgp_cipher_test_algo (prefs[i].value)
|
||||||
|
&& prefs[i].value < 100)
|
||||||
|
tty_fprintf (fp, "%s", openpgp_cipher_algo_name (prefs[i].value));
|
||||||
|
else
|
||||||
|
tty_fprintf (fp, "[%d]", prefs[i].value);
|
||||||
|
if (prefs[i].value == CIPHER_ALGO_3DES)
|
||||||
|
des_seen = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!des_seen)
|
||||||
|
{
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
tty_fprintf (fp, "%s", openpgp_cipher_algo_name (CIPHER_ALGO_3DES));
|
||||||
|
}
|
||||||
|
tty_fprintf (fp, "\n%*s %s", indent, "", _("AEAD: "));
|
||||||
|
for (i = any = 0; prefs[i].type; i++)
|
||||||
|
{
|
||||||
|
if (prefs[i].type == PREFTYPE_AEAD)
|
||||||
|
{
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
any = 1;
|
||||||
|
/* We don't want to display strings for experimental algos */
|
||||||
|
if (!openpgp_aead_test_algo (prefs[i].value)
|
||||||
|
&& prefs[i].value < 100)
|
||||||
|
tty_fprintf (fp, "%s", openpgp_aead_algo_name (prefs[i].value));
|
||||||
|
else
|
||||||
|
tty_fprintf (fp, "[%d]", prefs[i].value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tty_fprintf (fp, "\n%*s %s", indent, "", _("Digest: "));
|
||||||
|
for (i = any = 0; prefs[i].type; i++)
|
||||||
|
{
|
||||||
|
if (prefs[i].type == PREFTYPE_HASH)
|
||||||
|
{
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
any = 1;
|
||||||
|
/* We don't want to display strings for experimental algos */
|
||||||
|
if (!gcry_md_test_algo (prefs[i].value) && prefs[i].value < 100)
|
||||||
|
tty_fprintf (fp, "%s", gcry_md_algo_name (prefs[i].value));
|
||||||
|
else
|
||||||
|
tty_fprintf (fp, "[%d]", prefs[i].value);
|
||||||
|
if (prefs[i].value == DIGEST_ALGO_SHA1)
|
||||||
|
sha1_seen = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!sha1_seen)
|
||||||
|
{
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
tty_fprintf (fp, "%s", gcry_md_algo_name (DIGEST_ALGO_SHA1));
|
||||||
|
}
|
||||||
|
tty_fprintf (fp, "\n%*s %s", indent, "", _("Compression: "));
|
||||||
|
for (i = any = 0; prefs[i].type; i++)
|
||||||
|
{
|
||||||
|
if (prefs[i].type == PREFTYPE_ZIP)
|
||||||
|
{
|
||||||
|
const char *s = compress_algo_to_string (prefs[i].value);
|
||||||
|
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
any = 1;
|
||||||
|
/* We don't want to display strings for experimental algos */
|
||||||
|
if (s && prefs[i].value < 100)
|
||||||
|
tty_fprintf (fp, "%s", s);
|
||||||
|
else
|
||||||
|
tty_fprintf (fp, "[%d]", prefs[i].value);
|
||||||
|
if (prefs[i].value == COMPRESS_ALGO_NONE)
|
||||||
|
uncomp_seen = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!uncomp_seen)
|
||||||
|
{
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tty_fprintf (fp, "%s",
|
||||||
|
compress_algo_to_string (COMPRESS_ALGO_ZIP));
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
}
|
||||||
|
tty_fprintf (fp, "%s", compress_algo_to_string (COMPRESS_ALGO_NONE));
|
||||||
|
}
|
||||||
|
if (uid->flags.mdc || uid->flags.aead || !uid->flags.ks_modify)
|
||||||
|
{
|
||||||
|
tty_fprintf (fp, "\n%*s %s", indent, "", _("Features: "));
|
||||||
|
any = 0;
|
||||||
|
if (uid->flags.mdc)
|
||||||
|
{
|
||||||
|
tty_fprintf (fp, "MDC");
|
||||||
|
any = 1;
|
||||||
|
}
|
||||||
|
if (uid->flags.aead)
|
||||||
|
{
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
tty_fprintf (fp, "AEAD");
|
||||||
|
}
|
||||||
|
if (!uid->flags.ks_modify)
|
||||||
|
{
|
||||||
|
if (any)
|
||||||
|
tty_fprintf (fp, ", ");
|
||||||
|
tty_fprintf (fp, _("Keyserver no-modify"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tty_fprintf (fp, "\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tty_fprintf (fp, "%*s", indent, "");
|
||||||
|
for (i = 0; prefs[i].type; i++)
|
||||||
|
{
|
||||||
|
tty_fprintf (fp, " %c%d", prefs[i].type == PREFTYPE_SYM ? 'S' :
|
||||||
|
prefs[i].type == PREFTYPE_AEAD ? 'A' :
|
||||||
|
prefs[i].type == PREFTYPE_HASH ? 'H' :
|
||||||
|
prefs[i].type == PREFTYPE_ZIP ? 'Z' : '?',
|
||||||
|
prefs[i].value);
|
||||||
|
}
|
||||||
|
if (uid->flags.mdc)
|
||||||
|
tty_fprintf (fp, " [mdc]");
|
||||||
|
if (uid->flags.aead)
|
||||||
|
tty_fprintf (fp, " [aead]");
|
||||||
|
if (!uid->flags.ks_modify)
|
||||||
|
tty_fprintf (fp, " [no-ks-modify]");
|
||||||
|
tty_fprintf (fp, "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Flags = 0x01 hashed 0x02 critical. */
|
/* Flags = 0x01 hashed 0x02 critical. */
|
||||||
static void
|
static void
|
||||||
status_one_subpacket (sigsubpkttype_t type, size_t len, int flags,
|
status_one_subpacket (sigsubpkttype_t type, size_t len, int flags,
|
||||||
@ -1057,6 +1224,11 @@ list_keyblock_print (ctrl_t ctrl, kbnode_t keyblock, int secret, int fpr,
|
|||||||
print_utf8_buffer (es_stdout, uid->name, uid->len);
|
print_utf8_buffer (es_stdout, uid->name, uid->len);
|
||||||
es_putc ('\n', es_stdout);
|
es_putc ('\n', es_stdout);
|
||||||
|
|
||||||
|
if ((opt.list_options & LIST_SHOW_PREF_VERBOSE))
|
||||||
|
show_preferences (uid, indent+2, 0, 1);
|
||||||
|
else if ((opt.list_options & LIST_SHOW_PREF))
|
||||||
|
show_preferences (uid, indent+2, 0, 0);
|
||||||
|
|
||||||
if (opt.with_wkd_hash)
|
if (opt.with_wkd_hash)
|
||||||
{
|
{
|
||||||
char *mbox, *hash, *p;
|
char *mbox, *hash, *p;
|
||||||
|
@ -465,6 +465,7 @@ int cmp_signodes (const void *av, const void *bv);
|
|||||||
void print_fingerprint (ctrl_t ctrl, estream_t fp,
|
void print_fingerprint (ctrl_t ctrl, estream_t fp,
|
||||||
PKT_public_key *pk, int mode);
|
PKT_public_key *pk, int mode);
|
||||||
void print_revokers (estream_t fp, PKT_public_key *pk);
|
void print_revokers (estream_t fp, PKT_public_key *pk);
|
||||||
|
void show_preferences (PKT_user_id *uid, int indent, int mode, int verbose);
|
||||||
void show_policy_url(PKT_signature *sig,int indent,int mode);
|
void show_policy_url(PKT_signature *sig,int indent,int mode);
|
||||||
void show_keyserver_url(PKT_signature *sig,int indent,int mode);
|
void show_keyserver_url(PKT_signature *sig,int indent,int mode);
|
||||||
void show_notation(PKT_signature *sig,int indent,int mode,int which);
|
void show_notation(PKT_signature *sig,int indent,int mode,int which);
|
||||||
|
@ -406,6 +406,8 @@ EXTERN_UNLESS_MAIN_MODULE int memory_stat_debug_mode;
|
|||||||
#define LIST_SHOW_SIG_SUBPACKETS (1<<10)
|
#define LIST_SHOW_SIG_SUBPACKETS (1<<10)
|
||||||
#define LIST_SHOW_USAGE (1<<11)
|
#define LIST_SHOW_USAGE (1<<11)
|
||||||
#define LIST_SHOW_ONLY_FPR_MBOX (1<<12)
|
#define LIST_SHOW_ONLY_FPR_MBOX (1<<12)
|
||||||
|
#define LIST_SHOW_PREF (1<<14)
|
||||||
|
#define LIST_SHOW_PREF_VERBOSE (1<<15)
|
||||||
|
|
||||||
#define VERIFY_SHOW_PHOTOS (1<<0)
|
#define VERIFY_SHOW_PHOTOS (1<<0)
|
||||||
#define VERIFY_SHOW_POLICY_URLS (1<<1)
|
#define VERIFY_SHOW_POLICY_URLS (1<<1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user