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