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