diff options
author | NIIBE Yutaka <[email protected]> | 2020-11-26 00:35:35 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2020-11-26 00:35:35 +0000 |
commit | 920154370834ad8d947aed19c9d914a27dde6baa (patch) | |
tree | 3c6930ef59d792edebb926497ed92d60b315b207 /scd/app-nks.c | |
parent | scd:p15: Print the internal card type. (diff) | |
download | gnupg-920154370834ad8d947aed19c9d914a27dde6baa.tar.gz gnupg-920154370834ad8d947aed19c9d914a27dde6baa.zip |
scd,nks: Fix caching keygrip.
* scd/app-nks.c (keygripstr_from_pk_file): Identify by cfid if
available.
--
GnuPG-bug-id: 5150
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'scd/app-nks.c')
-rw-r--r-- | scd/app-nks.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/scd/app-nks.c b/scd/app-nks.c index caf686316..7ed3be75f 100644 --- a/scd/app-nks.c +++ b/scd/app-nks.c @@ -292,7 +292,7 @@ keygripstr_from_pk_file (app_t app, int pkfid, int cfid, char *r_gripstr, struct fid_cache_s *ci; for (ci = app->app_local->fid_cache; ci; ci = ci->next) - if (ci->fid && ci->fid == pkfid) + if (ci->fid && ((cfid && ci->fid == cfid) || (!cfid && ci->fid == pkfid))) { if (!ci->got_keygrip) return gpg_error (GPG_ERR_NOT_FOUND); @@ -455,7 +455,8 @@ keygripstr_from_pk_file (app_t app, int pkfid, int cfid, char *r_gripstr, /* FIXME: We need to implement not_found caching. */ for (ci = app->app_local->fid_cache; ci; ci = ci->next) - if (ci->fid && ci->fid == pkfid) + if (ci->fid + && ((cfid && ci->fid == cfid) || (!cfid && ci->fid == pkfid))) { /* Update the keygrip. */ memcpy (ci->keygripstr, r_gripstr, 2*KEYGRIP_LEN+1); @@ -476,7 +477,7 @@ keygripstr_from_pk_file (app_t app, int pkfid, int cfid, char *r_gripstr, ; /* Out of memory - it is a cache, so we ignore it. */ else { - ci->fid = pkfid; + ci->fid = cfid? cfid : pkfid; memcpy (ci->keygripstr, r_gripstr, 2*KEYGRIP_LEN+1); ci->algo = algo; ci->got_keygrip = 1; |