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