aboutsummaryrefslogtreecommitdiffstats
path: root/g10/tdbio.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2020-08-07 03:46:09 +0000
committerNIIBE Yutaka <[email protected]>2020-08-07 04:02:47 +0000
commit373c975859a55f942276d6078f27ee33570bf2d5 (patch)
treec0f94f54047f2f3ae55ed89c010b3ea35f320246 /g10/tdbio.c
parentgpg: Fix short key ID for v5key. (diff)
downloadgnupg-373c975859a55f942276d6078f27ee33570bf2d5.tar.gz
gnupg-373c975859a55f942276d6078f27ee33570bf2d5.zip
gpg: Fix trustdb for v5key.
* g10/keydb.h (fpr20_from_pk): New. * g10/keyid.c (fpr20_from_pk): New. * g10/tdbio.c (tdbio_search_trust_byfpr): Use fpr20_from_pk. * g10/trustdb.c (keyid_from_fpr20): New. (verify_own_keys): Use keyid_from_fpr20. (tdb_update_ownertrust): Use fpr20_from_pk. (update_min_ownertrust): Likewise. (update_validity): Likewise. -- For the compatibility of existing implementation, we keep the format of trustdb untouched. The format of trustdb uses 20-byte fingerprint for the trust record entry. To handle both of v4key (with 20-byte fingerprint) and v5 key (with 32-byte fingerprint), we introduce FPR20 fingerprint, internally. For v4key, FPR20 is as same as v4 fingerprint. For v5key, FPR20 is constructed from v5key fingerprint. GnuPG-bug-id: 5000 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'g10/tdbio.c')
-rw-r--r--g10/tdbio.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/g10/tdbio.c b/g10/tdbio.c
index bfeede991..9f01667b4 100644
--- a/g10/tdbio.c
+++ b/g10/tdbio.c
@@ -1909,12 +1909,9 @@ tdbio_search_trust_byfpr (ctrl_t ctrl, const byte *fingerprint, TRUSTREC *rec)
gpg_error_t
tdbio_search_trust_bypk (ctrl_t ctrl, PKT_public_key *pk, TRUSTREC *rec)
{
- byte fingerprint[MAX_FINGERPRINT_LEN];
- size_t fingerlen;
+ byte fingerprint[20];
- fingerprint_from_pk( pk, fingerprint, &fingerlen );
- for (; fingerlen < 20; fingerlen++)
- fingerprint[fingerlen] = 0;
+ fpr20_from_pk (pk, fingerprint);
return tdbio_search_trust_byfpr (ctrl, fingerprint, rec);
}