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