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