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