aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2020-08-07 03:41:47 +0000
committerNIIBE Yutaka <[email protected]>2020-08-07 04:02:40 +0000
commit20982bbd7539d2032f4d6249a2654c245445521d (patch)
tree8b894c5a4ee7994ecb7385d2c43aa0f8cf96fbda
parentgpgsm: New option --chuid. (diff)
downloadgnupg-20982bbd7539d2032f4d6249a2654c245445521d.tar.gz
gnupg-20982bbd7539d2032f4d6249a2654c245445521d.zip
gpg: Fix short key ID for v5key.
* g10/keyid.c (keyid_from_pk): Return keyid[0] for v5key. * g10/keyring.c (keyring_search): Handle short key ID for v5key. -- GnuPG-bug-id: 5000 Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--g10/keyid.c5
-rw-r--r--g10/keyring.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/g10/keyid.c b/g10/keyid.c
index d3fc29a98..23712e2a4 100644
--- a/g10/keyid.c
+++ b/g10/keyid.c
@@ -567,7 +567,10 @@ keyid_from_pk (PKT_public_key *pk, u32 *keyid)
keyid[0] = pk->keyid[0];
keyid[1] = pk->keyid[1];
- return keyid[1]; /*FIXME:shortkeyid is different for v5*/
+ if (pk->fprlen == 32)
+ return keyid[0];
+ else
+ return keyid[1];
}
diff --git a/g10/keyring.c b/g10/keyring.c
index 992c280d2..9cd66db3a 100644
--- a/g10/keyring.c
+++ b/g10/keyring.c
@@ -1174,8 +1174,10 @@ keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc,
break;
case KEYDB_SEARCH_MODE_SHORT_KID:
- if (pk && desc[n].u.kid[1] == aki[1])
- goto found;
+ if (pk
+ && ((pk->fprlen == 32 && desc[n].u.kid[1] == aki[0])
+ || (pk->fprlen != 32 && desc[n].u.kid[1] == aki[1])))
+ goto found;
break;
case KEYDB_SEARCH_MODE_LONG_KID:
if (pk && desc[n].u.kid[0] == aki[0]