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