diff options
Diffstat (limited to 'keyserver/ksutil.c')
-rw-r--r-- | keyserver/ksutil.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/keyserver/ksutil.c b/keyserver/ksutil.c index 53fa294c2..9bd697fff 100644 --- a/keyserver/ksutil.c +++ b/keyserver/ksutil.c @@ -346,8 +346,6 @@ classify_ks_search(const char **search) { switch(**search) { - default: - return KS_SEARCH_SUBSTR; case '*': (*search)++; return KS_SEARCH_SUBSTR; @@ -355,10 +353,30 @@ classify_ks_search(const char **search) (*search)++; return KS_SEARCH_EXACT; case '<': + (*search)++; return KS_SEARCH_MAIL; case '@': (*search)++; return KS_SEARCH_MAILSUB; + case '0': + if((*search)[1]=='x') + { + if(strlen(*search)==10 + && strspn(*search,"abcdefABCDEF1234567890x")==10) + { + (*search)+=2; + return KS_SEARCH_KEYID_SHORT; + } + else if(strlen(*search)==18 + && strspn(*search,"abcdefABCDEF1234567890x")==18) + { + (*search)+=2; + return KS_SEARCH_KEYID_LONG; + } + } + /* fall through */ + default: + return KS_SEARCH_SUBSTR; } } |