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