aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyring.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/keyring.c')
-rw-r--r--g10/keyring.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/g10/keyring.c b/g10/keyring.c
index 25ef50747..21791a6ac 100644
--- a/g10/keyring.c
+++ b/g10/keyring.c
@@ -995,8 +995,6 @@ keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc,
case KEYDB_SEARCH_MODE_LONG_KID:
need_keyid = 1;
break;
- case KEYDB_SEARCH_MODE_FPR16:
- case KEYDB_SEARCH_MODE_FPR20:
case KEYDB_SEARCH_MODE_FPR:
need_fpr = 1;
break;
@@ -1134,11 +1132,12 @@ keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc,
pk = pkt.pkt.public_key;
++pk_no;
- if (need_fpr) {
- fingerprint_from_pk (pk, afp, &an);
- while (an < 20) /* fill up to 20 bytes */
- afp[an++] = 0;
- }
+ if (need_fpr)
+ {
+ fingerprint_from_pk (pk, afp, &an);
+ while (an < 32) /* fill up to 32 bytes */
+ afp[an++] = 0;
+ }
if (need_keyid)
keyid_from_pk (pk, aki);
@@ -1180,13 +1179,9 @@ keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc,
&& desc[n].u.kid[1] == aki[1])
goto found;
break;
- case KEYDB_SEARCH_MODE_FPR16:
- if (pk && !memcmp (desc[n].u.fpr, afp, 16))
- goto found;
- break;
- case KEYDB_SEARCH_MODE_FPR20:
case KEYDB_SEARCH_MODE_FPR:
- if (pk && !memcmp (desc[n].u.fpr, afp, 20))
+ if (pk && desc[n].fprlen >= 16 && desc[n].fprlen <= 32
+ && !memcmp (desc[n].u.fpr, afp, desc[n].fprlen))
goto found;
break;
case KEYDB_SEARCH_MODE_FIRST: