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