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