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