aboutsummaryrefslogtreecommitdiffstats
path: root/g10/passphrase.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2021-12-20 16:08:17 +0000
committerWerner Koch <[email protected]>2021-12-20 18:34:34 +0000
commitace15e1b09dc9fc83d71faeeb7805802ed5bcc82 (patch)
treefdc3d9b2a0e5246a36012ec7cc7fc97cff3a9bd2 /g10/passphrase.c
parentcommon: Add set_membuf_err. (diff)
downloadgnupg-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]>
Diffstat (limited to 'g10/passphrase.c')
-rw-r--r--g10/passphrase.c51
1 files changed, 36 insertions, 15 deletions
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);