* gpgkeys_hkp.c (curl_mrindex_writer): Revert previous change.
[gnupg.git] / keyserver / ChangeLog
1 2006-11-05  David Shaw  <dshaw@jabberwocky.com>
2
3         * gpgkeys_hkp.c (curl_mrindex_writer): Revert previous change.
4         Key-not-found still has a HTML response.
5
6 2006-10-24  Marcus Brinkmann  <marcus@g10code.de>
7
8         * Makefile.am (gpg2keys_ldap_CPPFLAGS): Rename second instance to ...
9         (gpg2keys_finger_CPPFLAGS): ... this.
10
11 2006-10-20  Werner Koch  <wk@g10code.com>
12
13         * Makefile.am: Reporder macros for better readability.
14         (gpg2keys_finger_LDADD): Add GPG_ERROR_LIBS.
15
16 2006-10-19  David Shaw  <dshaw@jabberwocky.com>
17
18         * gpgkeys_hkp.c (curl_mrindex_writer): Print a warning if we see
19         HTML coming back from a MR hkp query.
20
21 2006-10-17  Werner Koch  <wk@g10code.com>
22
23         * Makefile.am: Removed W32LIBS as they are included in NETLIBS.
24         Removed PTH_LIBS.
25
26 2006-09-26  Werner Koch  <wk@g10code.com>
27
28         * curl-shim.c: Adjusted for changes in http.c.
29         (curl_easy_perform): Changed LINE from unsigned char* to char*.
30
31         * Makefile.am (gpg2keys_curl_LDADD, gpg2keys_hkp_LDADD)
32         [FAKE_CURL]: Need to link against common_libs and pth.
33
34         * curl-shim.h, curl-shim.c: Removed license exception as not
35         needed here.
36
37 2006-09-22  Werner Koch  <wk@g10code.com>
38
39         * gpgkeys_curl.c, gpgkeys_hkp.c, gpgkeys_ldap.c, curl-shim.c:
40         * curl-shim.h, ksutil.c, ksutil.h: Add special license exception
41         for OpenSSL.  This helps to avoid license conflicts if OpenLDAP or
42         cURL is linked against OpenSSL and we would thus indirectly link
43         to OpenSSL.  This is considered a bug fix and forgives all
44         possible violations, pertaining to this issue, possibly occured in
45         the past.
46         
47         * no-libgcrypt.c: Changed license to a simple all permissive one.
48
49         * Makefile.am (gpg2keys_ldap_LDADD): For license reasons do not
50         link against common_libs.
51         (gpg2keys_curl_LDADD, gpg2keys_hkp_LDADD): Ditto.
52         * ksutil.c (ks_hextobyte, ks_toupper, ks_strcasecmp): New.
53         Identical to the ascii_foo versions from jnlib.
54         * gpgkeys_ldap.c: Include assert.h.
55         (main): Replace BUG by assert.
56         (build_attrs): Use ks_hextobyte and ks_strcasecmp.
57
58         * gpgkeys_finger.c (get_key): Resolved signed/unisgned char
59         mismatch.
60
61 2006-09-19  Werner Koch  <wk@g10code.com>
62         
63         * no-libgcrypt.c: New. Taken from ../tools.
64         * Makefile.am: Add no-libgcrypt to all sources.
65
66 2006-09-06  Marcus Brinkmann  <marcus@g10code.de>
67
68         * Makefile.am (AM_CFLAGS): Add $(GPG_ERROR_CFLAGS).
69
70 2006-08-16  Werner Koch  <wk@g10code.com>
71
72         * Makefile.am: Renamed all binaries to gpg2keys_*.
73         (gpg2keys_ldap_CPPFLAGS): Add AM_CPPFLAGS.
74
75 2006-08-15  Werner Koch  <wk@g10code.com>
76
77         * Makefile.am: Adjusted to the gnupg2 framework.
78
79 2006-08-14  Werner Koch  <wk@g10code.com>
80
81         * curl-shil.c, curl-shim.h: Changed to make use of the new http.c
82         API.
83
84         * curl-shim.c (curl_easy_perform): Add missing http_close to the
85         POST case.
86
87 2006-07-24  David Shaw  <dshaw@jabberwocky.com>  (wk)
88
89         * curl-shim.c (curl_easy_perform): Minor cleanup of proxy code.
90
91         * gpgkeys_hkp.c (send_key)
92         * gpgkeys_ldap.c (send_key, send_key_keyserver): Fix string
93         matching problem when the ascii armored form of the key happens to
94         match "KEY" at the beginning of the line.
95
96 2006-04-26  David Shaw  <dshaw@jabberwocky.com>
97
98         * gpgkeys_http.c, gpgkeys_oldhkp.c: Removed.
99
100         * Makefile.am: Don't build gpgkeys_http or gpgkeys_(old)hkp any
101         longer as this is done via curl or fake-curl.
102
103         * ksutil.h, ksutil.c, gpgkeys_hkp.c, gpgkeys_curl.c: Minor
104         #include tweaks as FAKE_CURL is no longer meaningful.
105
106 2006-04-10  David Shaw  <dshaw@jabberwocky.com>
107
108         * gpgkeys_ldap.c (ldap_quote, get_name, search_key): LDAP-quote
109         directly into place rather than mallocing temporary buffers.
110
111         * gpgkeys_ldap.c (get_name): Build strings with strcat rather than
112         using sprintf which is harder to read and modify.
113
114         * ksutil.h, ksutil.c (classify_ks_search): Add
115         KS_SEARCH_KEYID_SHORT and KS_SEARCH_KEYID_LONG to search for a key
116         ID.
117
118         * gpgkeys_ldap.c (search_key): Use it here to flip from pgpUserID
119         searches to pgpKeyID or pgpCertID.
120
121 2006-03-27  David Shaw  <dshaw@jabberwocky.com>
122
123         * gpgkeys_ldap.c: #define LDAP_DEPRECATED for newer OpenLDAPs so
124         they use the regular old API that is compatible with other LDAP
125         libraries.
126
127 2006-03-03  David Shaw  <dshaw@jabberwocky.com>
128
129         * gpgkeys_ldap.c (main): Fix build problem with non-OpenLDAP LDAP
130         libraries that have TLS.
131
132 2006-02-23  David Shaw  <dshaw@jabberwocky.com>
133
134         * ksutil.c (init_ks_options): Default include-revoked and
135         include-subkeys to on, as gpg isn't doing this any longer.
136
137 2006-02-22  David Shaw  <dshaw@jabberwocky.com>
138
139         * gpgkeys_hkp.c (get_name): A GETNAME query turns exact=on to cut
140         down on odd matches.
141
142 2006-02-21  David Shaw  <dshaw@jabberwocky.com>
143
144         * gpgkeys_ldap.c (make_one_attr, build_attrs, send_key): Don't
145         allow duplicate attributes as OpenLDAP is now enforcing this.
146
147         * gpgkeys_ldap.c (main): Add binddn and bindpw so users can pass
148         credentials to a remote LDAP server.
149
150         * curl-shim.h, curl-shim.c (curl_easy_init, curl_easy_setopt,
151         curl_easy_perform): Mingw has 'stderr' as a macro?
152
153         * curl-shim.h, curl-shim.c (curl_easy_init, curl_easy_setopt,
154         curl_easy_perform): Add CURLOPT_VERBOSE and CURLOPT_STDERR for
155         easier debugging.
156
157 2006-01-16  David Shaw  <dshaw@jabberwocky.com>
158
159         * gpgkeys_hkp.c (send_key): Do not escape the '=' in the HTTP POST
160         when uploading a key.
161
162 2005-12-23  David Shaw  <dshaw@jabberwocky.com>
163
164         * ksutil.h, ksutil.c (parse_ks_options): New keyserver command
165         "getname".
166
167         * gpgkeys_hkp.c (main, get_name), gpgkeys_ldap.c (main, get_name):
168         Use it here to do direct name (rather than key ID) fetches.
169
170 2005-12-19  David Shaw  <dshaw@jabberwocky.com>
171
172         * ksutil.h, ksutil.c (curl_armor_writer, curl_writer,
173         curl_writer_finalize): New functionality to handle binary format
174         keys by armoring them for input to GPG.
175
176         * gpgkeys_curl.c (get_key), gpgkeys_hkp.c (get_key): Call it here.
177
178 2005-12-07  David Shaw  <dshaw@jabberwocky.com>
179
180         * gpgkeys_finger.c (get_key), gpgkeys_curl.c (get_key): Better
181         language for the key-not-found error.
182
183         * ksutil.c (curl_err_to_gpg_err): Add CURLE_OK and
184         CURLE_COULDNT_CONNECT.
185
186         * gpgkeys_curl.c (get_key): Give key-not-found error if no data is
187         found (or file itself is not found) during a fetch.
188
189 2005-12-06  David Shaw  <dshaw@jabberwocky.com>
190
191         * curl-shim.c (curl_easy_perform): Fix build warning (code before
192         declaration).
193
194 2005-11-02  David Shaw  <dshaw@jabberwocky.com>
195
196         * gpgkeys_hkp.c (search_key): Fix warning with typecast (though
197         curl should really have defined that char * as const).
198
199 2005-08-25  David Shaw  <dshaw@jabberwocky.com>
200
201         * ksutil.h, ksutil.c (parse_ks_options): Remove exact-name and
202         exact-email.
203         (classify_ks_search): Mimic the gpg search modes instead with *,
204         =, <, and @.
205
206         * gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Call
207         them here.  Suggested by Jason Harris.
208
209 2005-08-18  David Shaw  <dshaw@jabberwocky.com>
210
211         * ksutil.h, ksutil.c (parse_ks_options): New keyserver-option
212         exact-name.  The last of exact-name and exact-email overrides the
213         earlier.
214
215         * gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Use it
216         here to do a name-only search.
217
218         * gpgkeys_ldap.c (ldap_quote): \-quote a string for LDAP.
219
220         * gpgkeys_ldap.c (search_key): Use it here to escape reserved
221         characters in searches.
222
223 2005-08-17  David Shaw  <dshaw@jabberwocky.com>
224
225         * ksutil.h, ksutil.c (parse_ks_options): New keyserver-option
226         exact-email.
227
228         * gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Use it
229         here to do an email-only search.
230
231 2005-08-08  David Shaw  <dshaw@jabberwocky.com>
232
233         * Makefile.am: Include LDAP_CPPFLAGS when building LDAP.
234
235 2005-08-03  David Shaw  <dshaw@jabberwocky.com>
236
237         * gpgkeys_hkp.c (main), gpgkeys_curl.c (main), curl-shim.h: Show
238         version of curl (or curl-shim) when debug is set.
239
240 2005-07-20  David Shaw  <dshaw@jabberwocky.com>
241
242         * gpgkeys_curl.c (get_key, main): Don't try and be smart about
243         what protocols we handle.  Directly pass them to curl or fake-curl
244         and see if an error comes back.
245
246         * curl-shim.h, curl-shim.c (handle_error), ksutil.c
247         (curl_err_to_gpg_err): Add support for CURLE_UNSUPPORTED_PROTOCOL
248         in fake curl.
249
250         * Makefile.am: Don't need -DFAKE_CURL any longer since it's in
251         config.h.
252
253 2005-06-23  David Shaw  <dshaw@jabberwocky.com>
254
255         * gpgkeys_mailto.in, gpgkeys_test.in: Use @VERSION@ so version
256         string stays up to date.
257
258         * gpgkeys_http.c: Don't need to define HTTP_PROXY_ENV here since
259         it's in ksutil.h.
260
261         * gpgkeys_curl.c (get_key, main), gpgkeys_hkp.c (main): Pass AUTH
262         values to curl or curl-shim.
263
264         * curl-shim.c (curl_easy_perform), gpgkeys_curl.c (main),
265         gpgkeys_hkp.c (main): Use curl-style proxy semantics.
266
267         * curl-shim.h, curl-shim.c (curl_easy_setopt, curl_easy_perform):
268         Add CURLOPT_USERPWD option for HTTP auth.
269
270         * gpgkeys_http.c (get_key), gpgkeys_oldhkp (send_key, get_key,
271         search_key): No longer need to pass a proxyauth.
272
273         * gpgkeys_http.c (get_key): Pass auth outside of the URL.
274
275 2005-06-21  David Shaw  <dshaw@jabberwocky.com>
276
277         * gpgkeys_http.c (get_key), gpgkeys_oldhkp.c (send_key, get_key,
278         search_key): Fix http_open/http_open_document calls to pass NULL
279         for auth and proxyauth since these programs pass them in the URL.
280
281 2005-06-20  David Shaw  <dshaw@jabberwocky.com>
282
283         * gpgkeys_hkp.c (append_path, send_key, get_key, search_key,
284         main), gpgkeys_oldhkp.c (main): Properly handle double slashes in
285         paths.
286
287 2005-06-05  David Shaw  <dshaw@jabberwocky.com>
288
289         * ksutil.c (init_ks_options, parse_ks_options): Provide a default
290         "/" path unless overridden by the config.  Allow config to specify
291         items multiple times and take the last specified item.
292
293 2005-06-04  David Shaw  <dshaw@jabberwocky.com>
294
295         * gpgkeys_hkp.c, gpgkeys_oldhkp.c: Add support for HKP servers
296         that aren't at the root path.  Suggested by Jack Bates.
297
298 2005-06-01  David Shaw  <dshaw@jabberwocky.com>
299
300         * ksutil.c [HAVE_DOSISH_SYSTEM]: Fix warnings on mingw32.  Noted
301         by Joe Vender.
302
303 2005-05-04  David Shaw  <dshaw@jabberwocky.com>
304
305         * ksutil.h, ksutil.c: #ifdef so we can build without libcurl or
306         fake-curl.
307
308 2005-05-03  David Shaw  <dshaw@jabberwocky.com>
309
310         * gpgkeys_http.c: Need GET defined.
311
312 2005-05-01  David Shaw  <dshaw@jabberwocky.com>
313
314         * gpgkeys_hkp.c, gpgkeys_oldhkp.c, ksutil.h: Some minor cleanup
315         and comments as to the size of MAX_LINE and MAX_URL.
316
317 2005-04-16  David Shaw  <dshaw@jabberwocky.com>
318
319         * gpgkeys_hkp.c: New hkp handler that uses curl or curl-shim.
320
321         * Makefile.am: Build new gpgkeys_hkp.
322
323         * curl-shim.c (curl_easy_perform): Cleanup.
324
325         * ksutil.h, ksutil.c (curl_writer), gpgkeys_curl.c (get_key): Pass
326         a context to curl_writer so we can support multiple fetches in a
327         single session.
328
329         * curl-shim.h, curl-shim.c (handle_error, curl_easy_setopt,
330         curl_easy_perform): Add POST functionality to the curl shim.
331
332         * curl-shim.h, curl-shim.c (curl_escape, curl_free): Emulate
333         curl_escape and curl_free.
334
335         * gpgkeys_curl.c (main): If the http-proxy option is given without
336         any arguments, try to get the proxy from the environment.
337
338         * ksutil.h, ksutil.c (curl_err_to_gpg_err, curl_writer): Copy from
339         gpgkeys_curl.c.
340
341         * gpgkeys_oldhkp.c: Copy from gpgkeys_hkp.c.
342
343 2005-03-22  David Shaw  <dshaw@jabberwocky.com>
344
345         * gpgkeys_ldap.c, ksutil.h, ksutil.c (print_nocr): Moved from
346         gpgkeys_ldap.c.  Print a string, but strip out any CRs.
347
348         * gpgkeys_finger.c (get_key), gpgkeys_hkp.c (get_key),
349         gpgkeys_http.c (get_key): Use it here when outputting key material
350         to canonicalize line endings.
351
352 2005-03-19  David Shaw  <dshaw@jabberwocky.com>
353
354         * gpgkeys_ldap.c (main): Fix three wrong calls to fail_all().
355         Noted by Stefan Bellon.
356
357 2005-03-17  David Shaw  <dshaw@jabberwocky.com>
358
359         * ksutil.c (parse_ks_options): Handle verbose=nnn.
360
361         * Makefile.am: Calculate GNUPG_LIBEXECDIR directly.  Do not
362         redefine $libexecdir.
363
364         * gpgkeys_curl.c, gpgkeys_finger.c, gpgkeys_ldap.c: Start using
365         parse_ks_options and remove a lot of common code.
366
367         * ksutil.h, ksutil.c (parse_ks_options): Parse OPAQUE, and default
368         debug with no arguments to 1.
369
370 2005-03-16  David Shaw  <dshaw@jabberwocky.com>
371
372         * gpgkeys_ldap.c: Include lber.h if configure determines we need
373         it.
374
375         * ksutil.h, ksutil.c (ks_action_to_string): New.
376         (free_ks_options): Only free if options exist.
377
378         * ksutil.h, ksutil.c (init_ks_options, free_ks_options,
379         parse_ks_options): Pull a lot of duplicated code into a single
380         options parser for all keyserver helpers.
381
382 2005-02-11  David Shaw  <dshaw@jabberwocky.com>
383
384         * curl-shim.c (curl_easy_perform): Fix compile warning.
385
386         * curl-shim.h, gpgkeys_curl.c (main), gpgkeys_ldap.c (main): Add
387         ca-cert-file option, to pass in the SSL cert.
388
389         * curl-shim.h, curl-shim.c: New.  This is code to fake the curl
390         API in terms of the current HTTP iobuf API.
391
392         * gpgkeys_curl.c [FAKE_CURL], Makefile.am: If FAKE_CURL is set,
393         link with the iobuf code rather than libcurl.
394
395 2005-02-05  David Shaw  <dshaw@jabberwocky.com>
396
397         * gpgkeys_finger.c (main), gpgkeys_hkp.c (main): Fix --version
398         output.
399
400         * gpgkeys_curl.c (main): Make sure the curl handle is cleaned up
401         on failure.
402
403 2005-02-01  David Shaw  <dshaw@jabberwocky.com>
404
405         * gpgkeys_hkp.c (get_key), gpgkeys_http.c (get_key): Fix missing
406         http_close() calls.  Noted by Phil Pennock.
407
408         * ksutil.h: Up the default timeout to two minutes.
409
410 2005-01-24  David Shaw  <dshaw@jabberwocky.com>
411
412         * gpgkeys_ldap.c (print_nocr): New.
413         (get_key): Call it here to canonicalize line endings.
414
415         * gpgkeys_curl.c (writer): Discard everything outside the BEGIN
416         and END lines when retrieving keys.  Canonicalize line endings.
417         (main): Accept FTPS.
418
419 2005-01-21  David Shaw  <dshaw@jabberwocky.com>
420
421         * gpgkeys_ldap.c (main): Add "check-cert" option to disable SSL
422         certificate checking (which is on by default).
423
424         * gpgkeys_curl.c (main): Add "debug" option to match the LDAP
425         helper.  Add "check-cert" option to disable SSL certificate
426         checking (which is on by default).
427
428 2005-01-18  David Shaw  <dshaw@jabberwocky.com>
429
430         * gpgkeys_curl.c: Fix typo.
431
432 2005-01-18  Werner Koch  <wk@g10code.com>
433
434         * gpgkeys_curl.c: s/MAX_PATH/URLMAX_PATH/g to avoid a clash with
435         the W32 defined macro.  Removed unneeded initialization of static
436         variables.
437         * gpgkeys_http.c: Ditto.
438         * ksutil.h: s/MAX_PATH/URLMAX_PATH/.
439
440 2005-01-17  David Shaw  <dshaw@jabberwocky.com>
441
442         * gpgkeys_curl.c (main): Only allow specified protocols to use the
443         curl handler.
444
445         * Makefile.am: Use LIBCURL_CPPFLAGS instead of LIBCURL_INCLUDES.
446
447 2005-01-13  David Shaw  <dshaw@jabberwocky.com>
448
449         * ksutil.h, gpgkeys_curl.c, gpgkeys_hkp.c, gpgkeys_ldap.c,
450         gpgkeys_finger.c, gpgkeys_http.c: Part 2 of the cleanup.  Move all
451         the various defines to ksutil.h.
452
453         * gpgkeys_finger.c, gpgkeys_hkp.c, gpgkeys_http.c, gpgkeys_ldap.c:
454         Part 1 of a minor cleanup to use #defines instead of hard-coded
455         sizes.
456
457         * gpgkeys_finger.c (connect_server): Use INADDR_NONE instead of
458         SOCKET_ERROR.  Noted by Timo.
459
460 2005-01-09  David Shaw  <dshaw@jabberwocky.com>
461
462         * gpgkeys_curl.c (get_key): Newer versions of libcurl don't define
463         TRUE.
464
465 2004-12-24  David Shaw  <dshaw@jabberwocky.com>
466
467         * gpgkeys_curl.c (main): Use new defines for opting out of certain
468         transfer protocols.  Allow setting HTTP proxy via "http-proxy=foo"
469         option (there is natural support in libcurl for the http_proxy
470         environment variable).
471
472         * Makefile.am: Remove the conditional since this is all handled in
473         autoconf now.
474
475 2004-12-22  David Shaw  <dshaw@jabberwocky.com>
476
477         * gpgkeys_curl.c (main): New "follow-redirects" option.  Takes an
478         optional numeric value for the maximum number of redirects to
479         allow.  Defaults to 5.
480
481         * gpgkeys_curl.c (main), gpgkeys_finger.c (main), gpgkeys_hkp.c
482         (main), gpgkeys_http.c (main), gpgkeys_ldap.c (main): Make sure
483         that a "timeout" option passed with no arguments is properly
484         handled.
485
486         * gpgkeys_curl.c (get_key, writer): New function to wrap around
487         fwrite to avoid DLL access problem on win32.
488
489         * gpgkeys_http.c (main, get_key): Properly pass authentication
490         info through to the http library.
491
492         * Makefile.am: Build gpgkeys_http or gpgkeys_curl as needed.
493
494         * gpgkeys_curl.c (main, get_key): Minor tweaks to work with either
495         FTP or HTTP.
496
497         * gpgkeys_ftp.c: renamed to gpgkeys_curl.c.
498
499         * gpgkeys_ftp.c (main, get_key): Use auth data as passed by gpg.
500         Use CURLOPT_FILE instead of CURLOPT_WRITEDATA (same option, but
501         backwards compatible).
502
503 2004-12-21  David Shaw  <dshaw@jabberwocky.com>
504
505         * gpgkeys_ftp.c: New.
506
507         * Makefile.am: Build it if requested.
508
509 2004-12-14  Werner Koch  <wk@g10code.com>
510
511         * Makefile.am (install-exec-hook, uninstall-hook): Removed.  For
512         Windows reasons we can't use the symlink trick.
513
514 2004-12-03  David Shaw  <dshaw@jabberwocky.com>
515
516         * Makefile.am: The harmless "ignored error" on gpgkeys_ldap
517         install on top of an existing install is bound to confuse people.
518         Use ln -s -f to force the overwrite.
519
520 2004-10-28  David Shaw  <dshaw@jabberwocky.com>
521
522         * gpgkeys_finger.c [_WIN32] (connect_server): Fix typo.
523
524 2004-10-28  Werner Koch  <wk@g10code.com>
525
526         * Makefile.am (other_libs): New.  Also include LIBICONV.  Noted by
527         Tim Mooney.
528
529 2004-10-28  Werner Koch  <wk@g10code.com>
530
531         * Makefile.am (other_libs): 
532
533 2004-10-18  David Shaw  <dshaw@jabberwocky.com>
534
535         * gpgkeys_hkp.c (send_key, get_key, search_key): Use "hkp" instead
536         of "x-hkp" so it can be used as a SRV tag.
537
538 2004-10-16  David Shaw  <dshaw@jabberwocky.com>
539
540         * gpgkeys_finger.c [_WIN32] (connect_server): Fix typo.
541
542 2004-10-15  Werner Koch  <wk@g10code.com>
543
544         * gpgkeys_ldap.c (main, show_help): Kludge to implement standard
545         GNU options. Factored help printing out.
546         * gpgkeys_finger.c (main, show_help): Ditto.
547         * gpgkeys_hkp.c (main, show_help): Ditto.
548         * gpgkeys_http.c (main, show_help): Ditto.
549         * gpgkeys_test.in, gpgkeys_mailto.in: Implement --version and --help.
550
551         * Makefile.am: Add ksutil.h.
552
553 2004-10-14  David Shaw  <dshaw@jabberwocky.com>
554
555         * gpgkeys_finger.c (main): We do not support relay fingering
556         (i.e. "finger://relayhost/user@example.com"), but finger URLs are
557         occasionally miswritten that way.  Give an error in this case.
558
559 2004-10-14  Werner Koch  <wk@g10code.com>
560
561         * gpgkeys_finger.c (get_key): s/unsigned char/byte/ due
562         to a strange typedef for RISC OS.  Noted by Stefan.
563
564 2004-10-13  David Shaw  <dshaw@jabberwocky.com>
565
566         * gpgkeys_ldap.c (main), gpgkeys_hkp.c (main), gpgkeys_http.c
567         (main), gpgkeys_finger.c (main): Call timeout functions before
568         performing an action that could block for a long time.
569
570         * ksutil.h, ksutil.c: New.  Right now just contains timeout
571         functions.
572
573 2004-10-11  David Shaw  <dshaw@jabberwocky.com>
574
575         * gpgkeys_finger.c, gpgkeys_hkp.c, gpgkeys_http.c, gpgkeys_ldap.c:
576         Fix a few occurances of "filename" to `filename'.
577
578 2004-10-11  Werner Koch  <wk@g10code.com>
579
580         * gpgkeys_finger.c: New.
581
582 2004-08-27  Stefan Bellon  <sbellon@sbellon.de>
583
584         * gpgkeys_hkp.c (search_key): Fix the prior faulty fix by
585         introducing a cast but leaving skey unsigned.
586
587         * gpgkeys_hkp.c (search_key): Change type of variable skey from
588         unsigned char* to char* to fix type incompatibility.
589
590 2004-08-23  David Shaw  <dshaw@jabberwocky.com>
591
592         * gpgkeys_ldap.c (get_key, search_key), gpgkeys_hkp.c (get_key,
593         search_key), gpgkeys_http.c (get_key): Do not give informational
594         logs since this is now done inside gpg.
595
596         * gpgkeys_hkp.c (dehtmlize): Understand the quote character
597         (i.e. "&quot;") in HTML responses.
598         (search_key): Search key must be unsigned for url encoder to work
599         properly for 8-bit values.
600
601         * gpgkeys_ldap.c (get_key): Factor out informational display into
602         new function build_info().
603
604         * gpgkeys_ldap.c (build_attrs): Properly terminate user ID strings
605         that got shrunk due to encoding.
606
607 2004-08-22  David Shaw  <dshaw@jabberwocky.com>
608
609         * gpgkeys_ldap.c (find_basekeyspacedn): Use LDAP_SCOPE_BASE along
610         with a full DN rather than LDAP_SCOPE_ONELEVEL plus a filter to
611         find the pgpServerInfo object.  Some LDAP setups don't like the
612         search.
613         (main): Stop binding to the server since it seems no server really
614         requires it, and some require it not be there.
615
616 2004-07-29  David Shaw  <dshaw@jabberwocky.com>
617
618         * gpgkeys_ldap.c (main): Add "debug" option.  This is only really
619         useful with OpenLDAP, but it's practically vital to debug SSL and
620         TLS setups.  Add "basedn" option.  This allows users to override
621         the autodetection for base DN.  SSL overrides TLS, so TLS will not
622         be started on SSL connections (starting an already started car).
623
624 2004-07-28  David Shaw  <dshaw@jabberwocky.com>
625
626         * gpgkeys_ldap.c (build_attrs): Add "pgpKeySize" and "pgpSubKeyID"
627         attributes so we can do subkey searches.
628
629         * gpgkeys_ldap.c (main): Under certain error conditions, we might
630         try and unbind twice.  Don't.
631
632         * gpgkeys_ldap.c (join_two_modlists): New.
633         (send_key): Use new function so we can try a modify operation
634         first, and fail over to an add if that fails.  Add cannot cope
635         with the NULLs at the head of the modify request, so we jump into
636         the list in the middle.
637
638 2004-07-27  David Shaw  <dshaw@jabberwocky.com>
639
640         * gpgkeys_ldap.c (main): Don't try and error out before making a
641         ldaps connection to the NAI keyserver since we cannot tell if it
642         is a NAI keyserver until we connect.  Fail if we cannot find a
643         base keyspace DN.  Fix a false success message for TLS being
644         enabled.
645
646 2004-07-20  Werner Koch  <wk@gnupg.org>
647
648         * gpgkeys_ldap.c [_WIN32]: Include Windows specific header files.
649         Suggested by Brian Gladman.
650
651 2004-05-26  David Shaw  <dshaw@jabberwocky.com>
652
653         * gpgkeys_http.c: General polish and removal of leftover stuff
654         from gpgkeys_hkp.c.
655
656 2004-05-21  David Shaw  <dshaw@jabberwocky.com>
657
658         * gpgkeys_http.c (get_key): Cosmetic fix - make sure that URLs
659         with no path use a path of "/".
660
661         * gpgkeys_ldap.c (ldap2epochtime): We can always rely on timegm()
662         being available now, since it's a replacement function.
663
664 2004-05-20  David Shaw  <dshaw@jabberwocky.com>
665
666         * gpgkeys_http.c: New program to do a simple HTTP file fetch using
667         the keyserver interface.
668
669         * Makefile.am: Build it.
670
671 2004-02-28  David Shaw  <dshaw@jabberwocky.com>
672
673         * Makefile.am: Don't split LDADD across two lines since some make
674         programs can't handle blank lines after a \ continuation.  Noted
675         by Christoph Moench-Tegeder.
676
677 2004-02-25  David Shaw  <dshaw@jabberwocky.com>
678
679         * gpgkeys_ldap.c (send_key): List pgpCertID as one of the deleted
680         attributes.  This guarantees that if something goes wrong, we
681         won't be able to complete the transaction, thus leaving any key
682         already existing on the server intact.
683
684 2004-02-23  David Shaw  <dshaw@jabberwocky.com>
685
686         * gpgkeys_ldap.c (delete_one_attr): Removed.
687         (make_one_attr): Delete functionality added.  Optional deduping
688         functionality added (currently only used for pgpSignerID).
689         (build_attrs): Translate sig entries into pgpSignerID.  Properly
690         build the timestamp for pgpKeyCreateTime and pgpKeyExpireTime.
691
692 2004-02-22  David Shaw  <dshaw@jabberwocky.com>
693
694         * gpgkeys_ldap.c (delete_one_attr): New function to replace
695         attributes with NULL (a "delete" that works even for nonexistant
696         attributes).
697         (send_key): Use it here to remove attributes so a modify operation
698         starts with a clean playing field.  Bias sends to modify before
699         add, since (I suspect) people update their existing keys more
700         often than they make and send new keys to the server.
701
702 2004-02-21  David Shaw  <dshaw@jabberwocky.com>
703
704         * gpgkeys_ldap.c (epoch2ldaptime): New.  Converse of
705         ldap2epochtime.
706         (make_one_attr): New. Build a modification list in memory to send
707         to the LDAP server.
708         (build_attrs): New. Parse INFO lines sent over by gpg.
709         (free_mod_values): New.  Unwinds a modification list.
710         (send_key_keyserver): Renamed from old send_key().
711         (send_key): New function to send a key to a LDAP server.
712         (main): Use send_key() for real LDAP servers, send_key_keyserver()
713         otherwise.
714
715 2004-02-20  David Shaw  <dshaw@jabberwocky.com>
716
717         * gpgkeys_ldap.c: Replacement prototypes for setenv and unsetenv.
718         (search_key): Catch a SIZELIMIT_EXCEEDED error and show the user
719         whatever the server did give us.
720         (find_basekeyspacedn): There is no guarantee that namingContexts
721         will be readable.
722
723         * Makefile.am: Link gpgkeys_ldap with libutil.a to get the
724         replacement functions (and eventually translations, etc).
725
726 2004-02-19  David Shaw  <dshaw@jabberwocky.com>
727
728         * gpgkeys_ldap.c (ldap2epochtime): LDAP timestamps are UTC, so do
729         not correct for timezones.
730         (main): Find the basekeyspacedn before we try to start TLS, so we
731         can give a better error message when a user tries to use TLS with
732         a LDAP keyserver.
733
734         * Makefile.am: Add automake conditionals to symlink gpgkeys_ldaps
735         to gpgkeys_ldap when needed.
736
737         * gpgkeys_ldap.c (main): Add support for LDAPS and TLS
738         connections.  These are only useful and usable when talking to
739         real LDAP keyservers.  Add new "tls" option to tune TLS use from
740         off, to try quietly, to try loudly, or to require TLS.
741
742         * gpgkeys_ldap.c (find_basekeyspacedn): New function to figure out
743         what kind of LDAP server we're talking to (either real LDAP or the
744         LDAP keyserver), and return the baseKeySpaceDN to find keys under.
745         (main): Call it from here, and remove the old code that only
746         handled the LDAP keyserver.
747
748 2004-02-18  David Shaw  <dshaw@jabberwocky.com>
749
750         * gpgkeys_ldap.c (ldap_to_gpg_err): Make sure that
751         LDAP_OPT_ERROR_NUMBER is defined before we use it.
752
753         * gpgkeys_mailto.in: Fix VERSION number.
754
755 2004-01-13  Werner Koch  <wk@gnupg.org>
756
757         * gpgkeys_hkp.c (send_key): Add a content type.
758
759 2004-01-11  David Shaw  <dshaw@jabberwocky.com>
760
761         * gpgkeys_hkp.c (search_key): Catch a mangled input file (useful
762         if something other than GnuPG is calling the program).
763         (main): Avoid possible pre-string write.  Noted by Christian
764         Biere.
765
766         * gpgkeys_ldap.c (main): Avoid possible pre-string write.
767
768 2003-12-28  David Shaw  <dshaw@jabberwocky.com>
769
770         * gpgkeys_hkp.c (send_key, get_key, main): Work with new HTTP code
771         that passes the proxy in from the outside.  If the command file
772         sends a proxy, use it.  If it sends "http-proxy" with no
773         arguments, use $http_proxy from the environment.  Suggested by
774         Christian Biere.
775
776 2003-12-28  Stefan Bellon  <sbellon@sbellon.de>
777
778         * gpgkeys_hkp.c, gpgkeys_ldap.c [__riscos__]: Removal of
779         unnecessary #ifdef __riscos__ sections.
780
781 2003-11-27  Werner Koch  <wk@gnupg.org>
782
783         * gpgkeys_hkp.c (get_key): Fixed invalid use of fprintf without
784         format string.
785
786 2003-10-25  Werner Koch  <wk@gnupg.org>
787
788         * Makefile.am (gpgkeys_hkp_LDADD): Replaced INTLLIBS by LIBINTL.
789
790 2003-07-10  David Shaw  <dshaw@jabberwocky.com>
791
792         * Makefile.am: Use W32LIBS where appropriate.
793
794 2003-05-30  David Shaw  <dshaw@jabberwocky.com>
795
796         * gpgkeys_hkp.c, gpgkeys_ldap.c: #include <getopt.h> if it is
797         available.  Also include extern references for optarg and optind
798         since there is no guarantee that any header file will include
799         them.  Standards?  We don't need no stinkin' standards.
800
801         * Makefile.am: Use @GETOPT@ to pull in libiberty on those
802         platforms that need it.
803
804 2003-04-08  David Shaw  <dshaw@jabberwocky.com>
805
806         * gpgkeys_hkp.c (dehtmlize, parse_hkp_index): Fix memory
807         corruption bug on some platforms.
808
809 2003-03-11  David Shaw  <dshaw@jabberwocky.com>
810
811         * gpgkeys_hkp.c (get_key): Properly handle CRLF line endings in
812         the armored key.
813         (main): Accept "try-dns-srv" option.
814
815         * Makefile.am: Use @CAPLIBS@ to link in -lcap if we are using
816         capabilities.  Use @SRVLIBS@ to link in the resolver if we are
817         using DNS SRV.
818
819 2003-02-11  David Shaw  <dshaw@jabberwocky.com>
820
821         * Makefile.am: Use a local copy of libexecdir along with @PACKAGE@
822         so it can be easily overridden at make time.
823
824 2003-01-29  David Shaw  <dshaw@jabberwocky.com>
825
826         * gpgkeys_mailto.in: Fix regexp to work properly if the "keyid" is
827         not a keyid, but rather a text string from the user ID.
828
829 2003-01-06  David Shaw  <dshaw@jabberwocky.com>
830
831         * gpgkeys_hkp.c (get_key): Use options=mr when getting a key so
832         keyserver doesn't attach the HTML header which we will just have
833         to discard.
834
835 2002-11-17  David Shaw  <dshaw@jabberwocky.com>
836
837         * gpgkeys_ldap.c (main), gpgkeys_hkp.c (main): Use new keyserver
838         protocol version.
839
840 2002-11-14  David Shaw  <dshaw@jabberwocky.com>
841
842         * gpgkeys_ldap.c (get_key): The deduping code requires
843         "pgpcertid", but that was not available when running without
844         verbose on.  Noted by Stefan.
845
846 2002-11-10  David Shaw  <dshaw@jabberwocky.com>
847
848         * gpgkeys_ldap.c (get_key): Fix typo in deduping code.
849
850 2002-11-05  David Shaw  <dshaw@jabberwocky.com>
851
852         * gpgkeys_ldap.c (key_in_keylist, add_key_to_keylist,
853         free_keylist, get_key, search_key): The LDAP keyserver doesn't
854         remove duplicates, so remove them locally.  Do not include the key
855         modification time in the search response.
856
857 2002-11-04  David Shaw  <dshaw@jabberwocky.com>
858
859         * gpgkeys_hkp.c (send_key), gpgkeys_ldap.c (send_key): Properly
860         handle an input file that does not include any key data at all.
861
862 2002-10-24  David Shaw  <dshaw@jabberwocky.com>
863
864         * gpgkeys_hkp.c (main), gpgkeys_ldap.c (main): Add -V flag to
865         output protocol and program version.
866
867 2002-10-21  David Shaw  <dshaw@jabberwocky.com>
868
869         * Makefile.am: Anything linking with libutil.a needs INTLLIBS as
870         well on platforms where INTLLIBS is set.
871
872 2002-10-14  David Shaw  <dshaw@jabberwocky.com>
873
874         * gpgkeys_hkp.c (write_quoted): Use %-encoding instead of
875         \-encoding.
876         (parse_hkp_index): Use new keyserver key listing format, and add
877         support for disabled keys via include-disabled.
878
879         * gpgkeys_ldap.c (get_key): Don't print keysize unless it's >0.
880         (printquoted): Use %-encoding instead of \-encoding.
881         (search_key): Use new keyserver key listing format.
882
883 2002-10-08  David Shaw  <dshaw@jabberwocky.com>
884
885         * gpgkeys_ldap.c (search_key, main): Make sure LDAP values are
886         freed in case of error.
887
888         * gpgkeys_ldap.c (fail_all): New function to unwind a keylist and
889         error each item.
890         (main): Call fail_all from here, as needed.  Also add a NO_MEMORY
891         error in an appropriate place and fix error return code.
892         (ldap_err_to_gpg_err): Add KEYSERVER_UNREACHABLE.
893
894         * gpgkeys_hkp.c (fail_all): New function to unwind a keylist and
895         error each item.
896         (main): Call fail_all from here.  Also add a NO_MEMORY error in an
897         appropriate place.
898         (get_key): Use new UNREACHABLE error for network errors.
899
900 2002-09-26  Werner Koch  <wk@gnupg.org>
901
902         * gpgkeys_ldap.c (send_key): Removed non-constant initializers.
903
904 2002-09-24  David Shaw  <dshaw@jabberwocky.com>
905
906         * gpgkeys_ldap.c (ldap_err_to_gpg_err, ldap_to_gpg_err, send_key,
907         get_key, search_key, main): Some minor error reporting
908         enhancements for use with GPA (show reasons for KEY FAILED).
909
910         * gpgkeys_hkp.c (send_key, get_key, search_key, main): Some minor
911         error reporting enhancements for use with GPA (show reasons for
912         KEY FAILED).
913
914 2002-09-20  Werner Koch  <wk@gnupg.org>
915
916         * gpgkeys_hkp.c (handle_old_hkp_index): s/input/inp/ to avoid
917         shadowing warning.
918
919 2002-09-19  David Shaw  <dshaw@jabberwocky.com>
920
921         * gpgkeys_hkp.c (get_key, handle_old_hkp_index, search_key):
922         Properly handle line truncation.
923
924 2002-09-16  David Shaw  <dshaw@jabberwocky.com>
925
926         * gpgkeys_mailto.in: Add quasi-RFC-2368 mailto:email@addr?from=
927         syntax so people can set their own email address to respond to.
928
929         * gpgkeys_hkp.c (get_key): Properly respond with KEY FAILED (to
930         gpg) and "key not found" (to user) on failure.
931
932 2002-09-13  David Shaw  <dshaw@jabberwocky.com>
933
934         * gpgkeys_hkp.c: (search_key, handle_old_hkp_index): Try and
935         request a machine-readable key index.  If the server supports
936         this, pass it through.  If the server does not support it, parse
937         the "index" page.
938
939 2002-09-12  Stefan Bellon  <sbellon@sbellon.de>
940
941         * gpgkeys_hkp.c: Tidied up RISC OS initializations.
942
943 2002-09-12  David Shaw  <dshaw@jabberwocky.com>
944
945         * gpgkeys_hkp.c (main): Remove warning - this is no longer
946         experimental code.
947
948 2002-09-09  Werner Koch  <wk@gnupg.org>
949
950         * gpgkeys_hkp.c (send_key, get_key, search_key): Check return
951         value of malloc.
952         (dehtmlize): Use ascii_tolower to protect against weird locales.
953         Cast the argument for isspace for the sake of broken HP/UXes.
954         (search_key): Check return value of realloc.
955
956 2002-09-09  David Shaw  <dshaw@jabberwocky.com>
957
958         * gpgkeys_ldap.c (get_key): Some compilers (RISC OS, HPUX c89)
959         don't like using variables as array initializers.
960
961         * gpgkeys_hkp.c (send_key): Use CRLF in headers.
962
963 2002-08-28  David Shaw  <dshaw@jabberwocky.com>
964
965         * gpgkeys_hkp.c (parse_hkp_index): Use same types on all
966         platforms.  This was probably leftover from earlier code where the
967         typing mattered.
968
969         * gpgkeys_hkp.c: Overall cleanup from iobuf conversion.  Be
970         consistent in m_alloc and malloc usage.  Remove include-disabled
971         (meaningless on HKP).  RISC OS tweak.
972
973 2002-08-27  David Shaw  <dshaw@jabberwocky.com>
974
975         * gpgkeys_hkp.c, Makefile.am: Convert over to using iobufs.
976
977         * gpgkeys_hkp.c (http_get, http_post): Use CRLF for line endings.
978
979         * gpgkeys_hkp.c: Include util.h on RISC OS as per Stefan.  Include
980         a replacement for hstrerror() for those platforms (such as RISC
981         OS) that don't have it.
982
983 2002-08-26  David Shaw  <dshaw@jabberwocky.com>
984
985         * Makefile.am: May as well include gpgkeys_hkp.c in the
986         distribution now.  It works well enough without proxies, and isn't
987         built by default.  It would be good to get some test experience
988         with it.
989
990         * gpgkeys_hkp.c (main): Don't warn about include-subkeys - it
991         isn't unsupported, it's actually non-meaningful in the context of
992         HKP (yet).
993
994         * gpgkeys_hkp.c (parse_hkp_index, dehtmlize): Move HTML
995         functionality into new "dehtmlize" function.  Remove HTML before
996         trying to parse each line from the keyserver.  If the keyserver
997         provides key type information in the listing, use it.  (Copy over
998         from g10/hkp.c).
999
1000 2002-08-19  David Shaw  <dshaw@jabberwocky.com>
1001
1002         * gpgkeys_hkp.c (get_key, parse_hkp_index): Bring over latest code
1003         from g10/hkp.c.
1004
1005         * gpgkeys_ldap.c (get_key): Fix cosmetic URL display problem
1006         (extra ":" at the end).
1007
1008 2002-08-03  Stefan Bellon  <sbellon@sbellon.de>
1009
1010         * gpgkeys_ldap.c: Tidied up RISC OS initializations.
1011
1012 2002-07-25  David Shaw  <dshaw@jabberwocky.com>
1013
1014         * gpgkeys_hkp.c: "Warning" -> "WARNING"
1015
1016 2002-07-24  David Shaw  <dshaw@jabberwocky.com>
1017
1018         * Makefile.am: Install keyserver helpers in @GNUPG_LIBEXECDIR@
1019
1020 2002-07-15  David Shaw  <dshaw@jabberwocky.com>
1021
1022         * gpgkeys_ldap.c (send_key, get_key, main): Consult the server
1023         version string to determine whether to use pgpKey or pgpKeyV2.
1024
1025 2002-07-09  David Shaw  <dshaw@jabberwocky.com>
1026
1027         * gpgkeys_mailto.in: Use new OPAQUE tag for non net-path URIs.
1028         Fail more elegantly if there is no email address to send to.  Show
1029         the GnuPG version in the message body.
1030
1031 2002-07-04  David Shaw  <dshaw@jabberwocky.com>
1032
1033         * gpgkeys_ldap.c (get_key), gpgkeys_hkp.c (get_key): Display
1034         keyserver URI as a URI, but only if verbose.
1035
1036 2002-07-01  David Shaw  <dshaw@jabberwocky.com>
1037
1038         * gpgkeys_hkp.c (parse_hkp_index): Error if the keyserver returns
1039         an unparseable HKP response.
1040
1041         * gpgkeys_hkp.c (main): Warn on honor-http-proxy,
1042         broken-http-proxy, and include-subkeys (not supported yet).
1043
1044         * gpgkeys_ldap.c (main), gpgkeys_hkp.c (http_connect, main): Fix
1045         some shadowing warnings.
1046
1047 2002-06-11  David Shaw  <dshaw@jabberwocky.com>
1048
1049         * Makefile.am: Don't hard-code the LDAP libraries - get them from
1050         LDAPLIBS via configure.  Also, gpgkeys_hkp is a program, not a
1051         script.
1052
1053 2002-06-10  David Shaw  <dshaw@jabberwocky.com>
1054
1055         * gpgkeys_ldap.c (include_subkeys): Default "include-subkeys" to
1056         off, since GnuPG now defaults it to on.
1057
1058 2002-06-06  David Shaw  <dshaw@jabberwocky.com>
1059
1060         * gpgkeys_hkp.c (parse_hkp_index): Type tweaks.
1061
1062         * gpgkeys_hkp.c (main): Add experimental code warning.
1063
1064 2002-06-05  David Shaw  <dshaw@jabberwocky.com>
1065
1066         * Makefile.am, gpgkeys_hkp.c (new): Experimental HKP keyserver
1067         interface.
1068
1069 2002-05-08  David Shaw  <dshaw@jabberwocky.com>
1070
1071         * gpgkeys_ldap.c: Include <lber.h> if we absolutely must.  This
1072         helps when compiling against a very old OpenLDAP.
1073
1074 2002-04-29  David Shaw  <dshaw@jabberwocky.com>
1075
1076         * gpgkeys_mailto.in: Properly handle key requests in full
1077         fingerprint form.
1078
1079 2002-03-29  David Shaw  <dshaw@jabberwocky.com>
1080
1081         * gpgkeys_ldap.c (printquoted): Quote backslashes within keyserver
1082         search responses.
1083
1084 2002-02-25  David Shaw  <dshaw@jabberwocky.com>
1085
1086         * gpgkeys_ldap (get_key): LDAP keyservers do not support v3
1087         fingerprints, so error out if someone tries.  Actually, they don't
1088         support any fingerprints, but at least we can calculate a keyid
1089         from a v4 fingerprint.
1090
1091 2002-02-23  David Shaw  <dshaw@jabberwocky.com>
1092
1093         * gpgkeys_ldap: Clarify the notion of a partial failure.  This is
1094         possible if more than one key is being handled in a batch, and one
1095         fails while the other succeeds.  Note that a search that comes up
1096         with no results is not a failure - that is a valid response of "no
1097         answer".
1098
1099         * gpgkeys_ldap.c (get_key): Allow GnuPG to send us full v4
1100         fingerprints, long key ids, or short key ids while fetching.
1101         Since the LDAP server doesn't actually handle fingerprints, chop
1102         them down to long key ids for actual use.
1103
1104         * gpgkeys_ldap.c (main, get_key): When searching for a keyid,
1105         search for subkeys as well as primary keys.  This is mostly
1106         significant when automatically fetching the key based on the id in
1107         a header (i.e. "signature made by....").  "no-include-subkeys"
1108         disables.
1109
1110 2002-02-14  David Shaw  <dshaw@jabberwocky.com>
1111
1112         * gpgkeys_ldap.c: Fix compiler warning.
1113
1114         * gpgkeys_ldap.c: Be much more robust with mangled input files.
1115
1116 2001-12-28  David Shaw  <dshaw@jabberwocky.com>
1117
1118         * gpgkeys_mailto.in: Use the new OUTOFBAND indicator so gpg knows
1119         not to try and import anything.  Also turn on perl -w for
1120         warnings.
1121
1122         * gpgkeys_ldap.c (main): If we're using temp files (rather than
1123         stdin/stdout), make sure the file is closed when we're done.
1124
1125 2001-12-20  David Shaw  <dshaw@jabberwocky.com>
1126
1127         * Properly free the LDAP response when we're done with it.
1128
1129         * Now that we handle multiple keys, we must remove duplicates as
1130         the LDAP keyserver returns keys with multiple user IDs multiple
1131         times.
1132
1133         * Properly handle multiple keys with the same key ID (it's really
1134         rare, so fetch "0xDEADBEEF" to test this).
1135
1136 2001-12-17  David Shaw  <dshaw@jabberwocky.com>
1137
1138         * gpgkeys_ldap.c, gpgkeys_mailto.in: Fix GNU capitalization
1139         issues.  Prefix log messages with "gpgkeys" to clarify which
1140         program is generating them.
1141
1142 2001-12-14  David Shaw  <dshaw@jabberwocky.com>
1143
1144         * gpgkeys_ldap.c (search_key): Use unsigned int rather than uint
1145         for portability.
1146
1147 2001-12-04  David Shaw  <dshaw@jabberwocky.com>
1148
1149         * Initial version of gpgkeys_ldap (LDAP keyserver helper) and
1150         gpgkeys_mailto (email keyserver helper)
1151
1152
1153  Copyright 1998, 1999, 2000, 2001, 2002, 2003,
1154            2004 Free Software Foundation, Inc.
1155
1156  This file is free software; as a special exception the author gives
1157  unlimited permission to copy and/or distribute it, with or without
1158  modifications, as long as this notice is preserved.
1159
1160  This file is distributed in the hope that it will be useful, but
1161  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1162  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.