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