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]