diff options
author | NIIBE Yutaka <[email protected]> | 2018-06-12 07:20:21 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2018-08-27 07:25:05 +0000 |
commit | b823788d200902f34c632026934cf0e43152b73e (patch) | |
tree | ebcd910b151bda4fc2c77e37b44919b535a2a923 /g10/skclist.c | |
parent | g10: Prefer to available card keys for decryption. (diff) | |
download | gnupg-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.c | 11 |
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 |