aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2004-12-22 17:49:44 +0000
committerDavid Shaw <[email protected]>2004-12-22 17:49:44 +0000
commitb96038387bb86a6608f74027fed43bd85cfe2941 (patch)
tree670def0b8e692befe8f9b92ed729812093bd38d1
parent* Makefile.am: Build gpgkeys_http or gpgkeys_curl as needed. (diff)
downloadgnupg-b96038387bb86a6608f74027fed43bd85cfe2941.tar.gz
gnupg-b96038387bb86a6608f74027fed43bd85cfe2941.zip
* 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.
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog9
-rw-r--r--g10/build-packet.c1
-rw-r--r--g10/keyserver.c34
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 <[email protected]>
+
+ * 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 <[email protected]>
* 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: