diff options
Diffstat (limited to 'g10/keyedit.c')
-rw-r--r-- | g10/keyedit.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/g10/keyedit.c b/g10/keyedit.c index 63a54fa21..ed1fd8a23 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -2566,7 +2566,8 @@ find_by_primary_fpr (ctrl_t ctrl, const char *fpr, if (classify_user_id (fpr, &desc, 1) || !(desc.mode == KEYDB_SEARCH_MODE_FPR || desc.mode == KEYDB_SEARCH_MODE_FPR16 - || desc.mode == KEYDB_SEARCH_MODE_FPR20)) + || desc.mode == KEYDB_SEARCH_MODE_FPR20 + || desc.mode == KEYDB_SEARCH_MODE_FPR32)) { log_error (_("\"%s\" is not a fingerprint\n"), fpr); err = gpg_error (GPG_ERR_INV_NAME); @@ -2591,10 +2592,16 @@ find_by_primary_fpr (ctrl_t ctrl, const char *fpr, && !desc.u.fpr[18] && !desc.u.fpr[19]) ; - else if (fprlen == 20 && (desc.mode == KEYDB_SEARCH_MODE_FPR20 - || desc.mode == KEYDB_SEARCH_MODE_FPR) + else if (fprlen == 20 && desc.mode == KEYDB_SEARCH_MODE_FPR20 && !memcmp (fprbin, desc.u.fpr, 20)) ; + else if (fprlen == 32 && desc.mode == KEYDB_SEARCH_MODE_FPR32 + && !memcmp (fprbin, desc.u.fpr, 32)) + ; + else if (desc.mode == KEYDB_SEARCH_MODE_FPR + && fprlen == desc.fprlen + && !memcmp (fprbin, desc.u.fpr, fprlen)) + ; else { log_error (_("\"%s\" is not the primary fingerprint\n"), fpr); @@ -2918,7 +2925,8 @@ keyedit_quick_set_expire (ctrl_t ctrl, const char *fpr, const char *expirestr, /* Parse the fingerprint. */ if (classify_user_id (subkeyfprs[idx], &desc, 1) || !(desc.mode == KEYDB_SEARCH_MODE_FPR - || desc.mode == KEYDB_SEARCH_MODE_FPR20)) + || desc.mode == KEYDB_SEARCH_MODE_FPR20 + || desc.mode == KEYDB_SEARCH_MODE_FPR32)) { log_error (_("\"%s\" is not a proper fingerprint\n"), subkeyfprs[idx] ); |