From b96038387bb86a6608f74027fed43bd85cfe2941 Mon Sep 17 00:00:00 2001 From: David Shaw Date: Wed, 22 Dec 2004 17:49:44 +0000 Subject: [PATCH] * keyserver.c (keyserver_typemap): New. Map certain keyserver types to a common type (e.g. ldaps -> ldap). If we are building with curl, map both http and ftp to curl. * build-packet.c (build_sig_subpkt): Only allow one preferred keyserver subpacket at a time. --- g10/ChangeLog | 9 +++++++++ g10/build-packet.c | 1 - g10/keyserver.c | 34 ++++++++++++++++++++++++---------- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/g10/ChangeLog b/g10/ChangeLog index 2f821abd7..beb9dec02 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,12 @@ +2004-12-22 David Shaw + + * keyserver.c (keyserver_typemap): New. Map certain keyserver + types to a common type (e.g. ldaps -> ldap). If we are building + with curl, map both http and ftp to curl. + + * build-packet.c (build_sig_subpkt): Only allow one preferred + keyserver subpacket at a time. + 2004-12-21 David Shaw * keyedit.c (menu_set_keyserver_url): Make sure we only operate on diff --git a/g10/build-packet.c b/g10/build-packet.c index 64c4ffefe..a7e03ae0b 100644 --- a/g10/build-packet.c +++ b/g10/build-packet.c @@ -658,7 +658,6 @@ build_sig_subpkt (PKT_signature *sig, sigsubpkttype_t type, case SIGSUBPKT_POLICY: case SIGSUBPKT_REV_KEY: case SIGSUBPKT_SIGNATURE: - case SIGSUBPKT_PREF_KS: /* we do allow multiple subpackets */ break; diff --git a/g10/keyserver.c b/g10/keyserver.c index 5084a7c15..854187f74 100644 --- a/g10/keyserver.c +++ b/g10/keyserver.c @@ -759,6 +759,24 @@ keyserver_search_prompt(IOBUF buffer,const char *searchstr) m_free(line); } +/* We sometimes want to use a different gpgkeys_xxx for a given + protocol (for example, ldaps is handled by gpgkeys_ldap). Map + these here. */ +static const char * +keyserver_typemap(const char *type) +{ + if(strcmp(type,"ldaps")==0) + return "ldap"; +#ifdef HAVE_LIBCURL + else if(strcmp(type,"ftp")==0) + return "curl"; + else if(strcmp(type,"http")==0) + return "curl"; +#endif /* HAVE_LIBCURL */ + else + return type; +} + #define KEYSERVER_ARGS_KEEP " -o \"%O\" \"%I\"" #define KEYSERVER_ARGS_NOKEEP " -o \"%o\" \"%i\"" @@ -773,6 +791,7 @@ keyserver_spawn(int action,STRLIST list,KEYDB_SEARCH_DESC *desc, byte *line=NULL; struct parse_options *kopts; struct exec_info *spawn; + const char *scheme; assert(keyserver); @@ -789,14 +808,10 @@ keyserver_spawn(int action,STRLIST list,KEYDB_SEARCH_DESC *desc, #endif /* Build the filename for the helper to execute */ - /* Note that we don't use a symlink for "ldaps" anymore because this - won't work under MS Windows. */ - command=m_alloc(strlen("gpgkeys_")+strlen(keyserver->scheme)+1); + scheme=keyserver_typemap(keyserver->scheme); + command=m_alloc(strlen("gpgkeys_")+strlen(scheme)+1); strcpy(command,"gpgkeys_"); - if (!strcmp (keyserver->scheme, "ldaps")) - strcat(command, "ldap"); - else - strcat(command,keyserver->scheme); + strcat(command,scheme); if(opt.keyserver_options.options&KEYSERVER_USE_TEMP_FILES) { @@ -1252,9 +1267,8 @@ keyserver_work(int action,STRLIST list,KEYDB_SEARCH_DESC *desc, case KEYSERVER_VERSION_ERROR: log_error(_("gpgkeys_%s does not support handler version %d\n"), - !strcmp (keyserver->scheme,"ldaps")? - "ldap": keyserver->scheme, - KEYSERVER_PROTO_VERSION); + keyserver_typemap(keyserver->scheme), + KEYSERVER_PROTO_VERSION); break; case KEYSERVER_TIMEOUT: