diff options
author | Werner Koch <wk@gnupg.org> | 2019-08-21 15:26:34 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2019-08-21 15:26:34 +0200 |
commit | ce403c74dbc9c027b823910f22338269e625f76f (patch) | |
tree | 91da3e514381ddb2b8d0a24783a0c6da1cac194c /g10/keygen.c | |
parent | scd:nks: Extend keypairinfo with usage flags. (diff) | |
download | gnupg2-ce403c74dbc9c027b823910f22338269e625f76f.tar.xz gnupg2-ce403c74dbc9c027b823910f22338269e625f76f.zip |
gpg: In a list of card keys show the standard keys.
* g10/keygen.c (ask_algo): Identify the standard keys.
--
The asterisks mark the usages of a key as retruned by scd via the
$AUTHKEYID et al. attributes.
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'g10/keygen.c')
-rw-r--r-- | g10/keygen.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/g10/keygen.c b/g10/keygen.c index d9037d29d..bd02b631f 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -2268,6 +2268,12 @@ ask_algo (ctrl_t ctrl, int addmode, int *r_subkey_algo, unsigned int *r_usage, do { + char *authkeyref, *encrkeyref, *signkeyref; + + agent_scd_getattr_one ("$AUTHKEYID", &authkeyref); + agent_scd_getattr_one ("$ENCRKEYID", &encrkeyref); + agent_scd_getattr_one ("$SIGNKEYID", &signkeyref); + tty_printf (_("Available keys:\n")); for (count=1,sl=keypairlist; sl; sl = sl->next, count++) { @@ -2308,17 +2314,23 @@ ask_algo (ctrl_t ctrl, int addmode, int *r_subkey_algo, unsigned int *r_usage, } if ((sl->flags & GCRY_PK_USAGE_SIGN)) { - tty_printf ("%ssign", any?",":" ("); + tty_printf ("%ssign%s", any?",":" (", + (signkeyref && keyref + && !strcmp (signkeyref, keyref))? "*":""); any = 1; } if ((sl->flags & GCRY_PK_USAGE_AUTH)) { - tty_printf ("%sauth", any?",":" ("); + tty_printf ("%sauth%s", any?",":" (", + (authkeyref && keyref + && !strcmp (authkeyref, keyref))? "*":""); any = 1; } if ((sl->flags & GCRY_PK_USAGE_ENCR)) { - tty_printf ("%sencr", any?",":" ("); + tty_printf ("%sencr%s", any?",":" (", + (encrkeyref && keyref + && !strcmp (encrkeyref, keyref))? "*":""); any = 1; } tty_printf ("%s\n", any?")":""); @@ -2330,6 +2342,10 @@ ask_algo (ctrl_t ctrl, int addmode, int *r_subkey_algo, unsigned int *r_usage, cpr_kill_prompt (); trim_spaces (answer); selection = atoi (answer); + xfree (authkeyref); + xfree (encrkeyref); + xfree (signkeyref); + } while (!(selection > 0 && selection < count)); |