diff options
author | Werner Koch <[email protected]> | 2021-12-20 16:08:17 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2021-12-20 18:34:34 +0000 |
commit | ace15e1b09dc9fc83d71faeeb7805802ed5bcc82 (patch) | |
tree | fdc3d9b2a0e5246a36012ec7cc7fc97cff3a9bd2 | |
parent | common: Add set_membuf_err. (diff) | |
download | gnupg-ace15e1b09dc9fc83d71faeeb7805802ed5bcc82.tar.gz gnupg-ace15e1b09dc9fc83d71faeeb7805802ed5bcc82.zip |
gpg: Allow passing a keygrip as description to pinentry.
* g10/keydb.h (FORMAT_KEYDESC_KEYGRIP): New.
* g10/passphrase.c (gpg_format_keydesc): Add new mode.
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | g10/keydb.h | 1 | ||||
-rw-r--r-- | g10/passphrase.c | 51 |
2 files changed, 37 insertions, 15 deletions
diff --git a/g10/keydb.h b/g10/keydb.h index 806b9303b..a91309a5b 100644 --- a/g10/keydb.h +++ b/g10/keydb.h @@ -316,6 +316,7 @@ void emit_status_need_passphrase (ctrl_t ctrl, u32 *keyid, #define FORMAT_KEYDESC_IMPORT 1 #define FORMAT_KEYDESC_EXPORT 2 #define FORMAT_KEYDESC_DELKEY 3 +#define FORMAT_KEYDESC_KEYGRIP 4 char *gpg_format_keydesc (ctrl_t ctrl, PKT_public_key *pk, int mode, int escaped); diff --git a/g10/passphrase.c b/g10/passphrase.c index 1793efc9d..604452d46 100644 --- a/g10/passphrase.c +++ b/g10/passphrase.c @@ -459,12 +459,23 @@ gpg_format_keydesc (ctrl_t ctrl, PKT_public_key *pk, int mode, int escaped) const char *trailer = ""; int is_subkey; - is_subkey = (pk->main_keyid[0] && pk->main_keyid[1] - && pk->keyid[0] != pk->main_keyid[0] - && pk->keyid[1] != pk->main_keyid[1]); - algo_name = openpgp_pk_algo_name (pk->pubkey_algo); - timestr = strtimestamp (pk->timestamp); - uid = get_user_id (ctrl, is_subkey? pk->main_keyid:pk->keyid, &uidlen, NULL); + if (mode == FORMAT_KEYDESC_KEYGRIP) + { + is_subkey = 0; + algo_name = NULL; + timestr = NULL; + uid = NULL; + } + else + { + is_subkey = (pk->main_keyid[0] && pk->main_keyid[1] + && pk->keyid[0] != pk->main_keyid[0] + && pk->keyid[1] != pk->main_keyid[1]); + algo_name = openpgp_pk_algo_name (pk->pubkey_algo); + timestr = strtimestamp (pk->timestamp); + uid = get_user_id (ctrl, is_subkey? pk->main_keyid:pk->keyid, + &uidlen, NULL); + } orig_codeset = i18n_switchto_utf8 (); @@ -500,20 +511,30 @@ gpg_format_keydesc (ctrl_t ctrl, PKT_public_key *pk, int mode, int escaped) " OpenPGP secret key:"); trailer = "?"; break; + case FORMAT_KEYDESC_KEYGRIP: + prompt = _("Please enter the passphrase to export the" + " secret key with keygrip:"); + break; default: prompt = "?"; break; } - desc = xtryasprintf (_("%s\n" - "\"%.*s\"\n" - "%u-bit %s key, ID %s,\n" - "created %s%s.\n%s"), - prompt, - (int)uidlen, uid, - nbits_from_pk (pk), algo_name, - keystr (pk->keyid), timestr, - maink?maink:"", trailer); + if (mode == FORMAT_KEYDESC_KEYGRIP) + desc = xtryasprintf ("%s\n\n" + " %s\n", + prompt, + "<keygrip>"); + else + desc = xtryasprintf (_("%s\n" + "\"%.*s\"\n" + "%u-bit %s key, ID %s,\n" + "created %s%s.\n%s"), + prompt, + (int)uidlen, uid, + nbits_from_pk (pk), algo_name, + keystr (pk->keyid), timestr, + maink?maink:"", trailer); xfree (maink); xfree (uid); |