aboutsummaryrefslogtreecommitdiffstats
path: root/g10/skclist.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2018-06-12 07:20:21 +0000
committerNIIBE Yutaka <[email protected]>2018-08-27 07:25:05 +0000
commitb823788d200902f34c632026934cf0e43152b73e (patch)
treeebcd910b151bda4fc2c77e37b44919b535a2a923 /g10/skclist.c
parentg10: Prefer to available card keys for decryption. (diff)
downloadgnupg-b823788d200902f34c632026934cf0e43152b73e.tar.gz
gnupg-b823788d200902f34c632026934cf0e43152b73e.zip
g10: Fix enum_secret_keys for card keys.
* g10/skclist.c (enum_secret_keys): Since "KEY-FPR" returns fingerprint in binary, change it to hex string. Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'g10/skclist.c')
-rw-r--r--g10/skclist.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/g10/skclist.c b/g10/skclist.c
index d40fe6df0..fe24b4a6d 100644
--- a/g10/skclist.c
+++ b/g10/skclist.c
@@ -331,6 +331,7 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
strlist_t sl;
strlist_t card_list;
char *serialno;
+ char fpr2[43];
struct agent_card_info_s info;
kbnode_t keyblock;
kbnode_t node;
@@ -350,7 +351,6 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
if (!sk)
{
/* Free the context. */
- agent_release_card_info (&c->info);
xfree (c->serialno);
free_strlist (c->card_list);
pubkeys_free (c->results);
@@ -419,14 +419,19 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
}
xfree (serialno);
- agent_release_card_info (&c->info);
+ c->info.fpr2valid = 0;
err = agent_scd_getattr ("KEY-FPR", &c->info);
if (err)
log_error ("error retrieving key fingerprint from card: %s\n",
gpg_strerror (err));
if (c->info.fpr2valid)
- name = c->info.fpr2;
+ {
+ c->fpr2[0] = '0';
+ c->fpr2[1] = 'x';
+ bin2hex (c->info.fpr2, 20, c->fpr2+2);
+ name = c->fpr2;
+ }
c->sl = c->sl->next;
}
else