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