aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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