dirmngr: Let --gpgconf-list return the default keyserver.
authorWerner Koch <wk@gnupg.org>
Thu, 2 Mar 2017 16:58:00 +0000 (17:58 +0100)
committerWerner Koch <wk@gnupg.org>
Thu, 2 Mar 2017 16:58:58 +0000 (17:58 +0100)
* dirmngr/misc.c (get_default_keyserver): New.
* dirmngr/http.c: Include misc.h
(http_session_new): Use get_default_keyserver instead of hardwired
"hkps.pool.sks-keyservers.net".
* dirmngr/http-ntbtls.c (gnupg_http_tls_verify_cb): Ditto.
* dirmngr/dirmngr.c (main) <aGPGCongList>: Return default keyserver.

Signed-off-by: Werner Koch <wk@gnupg.org>
dirmngr/dirmngr.c
dirmngr/http-ntbtls.c
dirmngr/http.c
dirmngr/misc.c
dirmngr/misc.h

index c877a9b..75e8523 100644 (file)
@@ -1454,7 +1454,13 @@ main (int argc, char **argv)
       es_printf ("ignore-ocsp-servic-url:%lu:\n", flags | GC_OPT_FLAG_NONE);
 
       es_printf ("use-tor:%lu:\n", flags | GC_OPT_FLAG_NONE);
-      es_printf ("keyserver:%lu:\n", flags | GC_OPT_FLAG_NONE);
+
+      filename_esc = percent_escape (get_default_keyserver (0), NULL);
+      es_printf ("keyserver:%lu:\"%s:\n", flags | GC_OPT_FLAG_DEFAULT,
+                 filename_esc);
+      xfree (filename_esc);
+
+
       es_printf ("nameserver:%lu:\n", flags | GC_OPT_FLAG_NONE);
       es_printf ("resolver-timeout:%lu:%u\n",
                  flags | GC_OPT_FLAG_DEFAULT, 0);
index 00d6a58..d44b779 100644 (file)
 #include "dirmngr.h"
 #include "certcache.h"
 #include "validate.h"
+#include "misc.h"
 
 #ifdef HTTP_USE_NTBTLS
 # include <ntbtls.h>
 
 
-
 /* The callback used to verify the peer's certificate.  */
 gpg_error_t
 gnupg_http_tls_verify_cb (void *opaque,
@@ -77,11 +77,11 @@ gnupg_http_tls_verify_cb (void *opaque,
 
   validate_flags = VALIDATE_FLAG_TLS;
 
-  /* Are we using the standard hkps:// pool use the dedicated
+  /* If we are using the standard hkps:// pool use the dedicated
    * root certificate.  */
   hostname = ntbtls_get_hostname (tls);
   if (hostname
-      && !ascii_strcasecmp (hostname, "hkps.pool.sks-keyservers.net"))
+      && !ascii_strcasecmp (hostname, get_default_keyserver (1)))
     {
       validate_flags |= VALIDATE_FLAG_TRUST_HKPSPOOL;
     }
index 890f5f6..fc82924 100644 (file)
 #include "i18n.h"
 #include "dns-stuff.h"
 #include "http.h"
+#include "misc.h"
 
 
 #ifdef USE_NPTH
@@ -726,7 +727,7 @@ http_session_new (http_session_t *r_session,
 
     is_hkps_pool = (intended_hostname
                     && !ascii_strcasecmp (intended_hostname,
-                                          "hkps.pool.sks-keyservers.net"));
+                                          get_default_keyserver (1)));
 
     /* If the user has not specified a CA list, and they are looking
      * for the hkps pool from sks-keyservers.net, then default to
index 6d7c963..d2f1c69 100644 (file)
 #include "util.h"
 #include "misc.h"
 
+/* Return a static string with the default keyserver.  If NAME_ONLY is
+ * given only the name part is returned.  */
+const char *
+get_default_keyserver (int name_only)
+{
+  static const char *result;
+
+  if (!name_only)
+    return DIRMNGR_DEFAULT_KEYSERVER;
+
+  if (!result)
+    {
+      /* Strip the scheme from the constant. */
+      result = strstr (DIRMNGR_DEFAULT_KEYSERVER, "://");
+      log_assert (result && strlen (result) > 3);
+      result += 3;
+      /* Assert that there is no port given.  */
+      log_assert (strchr (result, ':'));
+    }
+  return result;
+}
+
+
 
 /* Convert the hex encoded STRING back into binary and store the
    result into the provided buffer RESULT.  The actual size of that
index be4049e..f25574f 100644 (file)
@@ -21,6 +21,8 @@
 #ifndef MISC_H
 #define MISC_H
 
+const char *get_default_keyserver (int name_only);
+
 /* Convert hex encoded string back to binary. */
 size_t unhexify (unsigned char *result, const char *string);