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