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