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