From 0f26760d9f550fd9aaa7d0c4f18f8571b7818142 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 16 Nov 2001 17:56:23 +0000 Subject: Base code for gpgsm --verify does work --- kbx/keybox-search-desc.h | 1 + kbx/keybox-search.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) (limited to 'kbx') diff --git a/kbx/keybox-search-desc.h b/kbx/keybox-search-desc.h index 22bcba69b..88ffde8d0 100644 --- a/kbx/keybox-search-desc.h +++ b/kbx/keybox-search-desc.h @@ -42,6 +42,7 @@ typedef enum { KEYDB_SEARCH_MODE_FPR, KEYDB_SEARCH_MODE_ISSUER, KEYDB_SEARCH_MODE_ISSUER_SN, + KEYDB_SEARCH_MODE_SUBJECT, KEYDB_SEARCH_MODE_FIRST, KEYDB_SEARCH_MODE_NEXT } KeydbSearchMode; diff --git a/kbx/keybox-search.c b/kbx/keybox-search.c index 3468a8ecf..2a4ceca94 100644 --- a/kbx/keybox-search.c +++ b/kbx/keybox-search.c @@ -205,6 +205,20 @@ has_issuer_sn (KEYBOXBLOB blob, const char *name, const unsigned char *sn) && blob_cmp_name (blob, 0 /* issuer */, name, namelen)); } +static int +has_subject (KEYBOXBLOB blob, const char *name) +{ + size_t namelen; + + return_val_if_fail (name, 0); + + if (blob_get_type (blob) != BLOBTYPE_X509) + return 0; + + namelen = strlen (name); + return blob_cmp_name (blob, 1 /* subject */, name, namelen); +} + /* @@ -316,6 +330,10 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc) if (has_issuer_sn (blob, desc[n].u.name, desc[n].sn)) goto found; break; + case KEYDB_SEARCH_MODE_SUBJECT: + if (has_subject (blob, desc[n].u.name)) + goto found; + break; case KEYDB_SEARCH_MODE_SHORT_KID: /* if (has_short_kid (blob, desc[n].u.kid[1])) */ /* goto found; */ -- cgit v1.2.3