mirror of
git://git.gnupg.org/gnupg.git
synced 2025-02-01 16:33:02 +01:00
scd,nks: Fix caching keygrip.
* scd/app-nks.c (keygripstr_from_pk_file): Identify by cfid if available. -- GnuPG-bug-id: 5150, 6252 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org> Backported-from-master: 920154370834ad8d947aed19c9d914a27dde6baa:
This commit is contained in:
parent
c1c3331cf9
commit
f1bd7369a7
@ -292,7 +292,7 @@ keygripstr_from_pk_file (app_t app, int pkfid, int cfid, char *r_gripstr,
|
|||||||
struct fid_cache_s *ci;
|
struct fid_cache_s *ci;
|
||||||
|
|
||||||
for (ci = app->app_local->fid_cache; ci; ci = ci->next)
|
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)
|
if (!ci->got_keygrip)
|
||||||
return gpg_error (GPG_ERR_NOT_FOUND);
|
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. */
|
/* FIXME: We need to implement not_found caching. */
|
||||||
for (ci = app->app_local->fid_cache; ci; ci = ci->next)
|
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. */
|
/* Update the keygrip. */
|
||||||
memcpy (ci->keygripstr, r_gripstr, 2*KEYGRIP_LEN+1);
|
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. */
|
; /* Out of memory - it is a cache, so we ignore it. */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ci->fid = pkfid;
|
ci->fid = cfid? cfid : pkfid;
|
||||||
memcpy (ci->keygripstr, r_gripstr, 2*KEYGRIP_LEN+1);
|
memcpy (ci->keygripstr, r_gripstr, 2*KEYGRIP_LEN+1);
|
||||||
ci->algo = algo;
|
ci->algo = algo;
|
||||||
ci->got_keygrip = 1;
|
ci->got_keygrip = 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user