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