* gpgkeys_hkp.c (dehtmlize): Understand the quote character (i.e.
[gnupg.git] / keyserver / ChangeLog
1 2004-08-23  David Shaw  <dshaw@jabberwocky.com>
2
3         * gpgkeys_hkp.c (dehtmlize): Understand the quote character
4         (i.e. "&quot;") in HTML responses.
5         (search_key): Search key must be unsigned for url encoder to work
6         properly for 8-bit values.
7
8         * gpgkeys_ldap.c (get_key): Factor out informational display into
9         new function build_info().
10
11         * gpgkeys_ldap.c (build_attrs): Properly terminate user ID strings
12         that got shrunk due to encoding.
13
14 2004-08-22  David Shaw  <dshaw@jabberwocky.com>
15
16         * gpgkeys_ldap.c (find_basekeyspacedn): Use LDAP_SCOPE_BASE along
17         with a full DN rather than LDAP_SCOPE_ONELEVEL plus a filter to
18         find the pgpServerInfo object.  Some LDAP setups don't like the
19         search.
20         (main): Stop binding to the server since it seems no server really
21         requires it, and some require it not be there.
22
23 2004-07-29  David Shaw  <dshaw@jabberwocky.com>
24
25         * gpgkeys_ldap.c (main): Add "debug" option.  This is only really
26         useful with OpenLDAP, but it's practically vital to debug SSL and
27         TLS setups.  Add "basedn" option.  This allows users to override
28         the autodetection for base DN.  SSL overrides TLS, so TLS will not
29         be started on SSL connections (starting an already started car).
30
31 2004-07-28  David Shaw  <dshaw@jabberwocky.com>
32
33         * gpgkeys_ldap.c (build_attrs): Add "pgpKeySize" and "pgpSubKeyID"
34         attributes so we can do subkey searches.
35
36         * gpgkeys_ldap.c (main): Under certain error conditions, we might
37         try and unbind twice.  Don't.
38
39         * gpgkeys_ldap.c (join_two_modlists): New.
40         (send_key): Use new function so we can try a modify operation
41         first, and fail over to an add if that fails.  Add cannot cope
42         with the NULLs at the head of the modify request, so we jump into
43         the list in the middle.
44
45 2004-07-27  David Shaw  <dshaw@jabberwocky.com>
46
47         * gpgkeys_ldap.c (main): Don't try and error out before making a
48         ldaps connection to the NAI keyserver since we cannot tell if it
49         is a NAI keyserver until we connect.  Fail if we cannot find a
50         base keyspace DN.  Fix a false success message for TLS being
51         enabled.
52
53 2004-07-20  Werner Koch  <wk@gnupg.org>
54
55         * gpgkeys_ldap.c [_WIN32]: Include Windows specific header files.
56         Suggested by Brian Gladman.
57
58 2004-05-26  David Shaw  <dshaw@jabberwocky.com>
59
60         * gpgkeys_http.c: General polish and removal of leftover stuff
61         from gpgkeys_hkp.c.
62
63 2004-05-21  David Shaw  <dshaw@jabberwocky.com>
64
65         * gpgkeys_http.c (get_key): Cosmetic fix - make sure that URLs
66         with no path use a path of "/".
67
68         * gpgkeys_ldap.c (ldap2epochtime): We can always rely on timegm()
69         being available now, since it's a replacement function.
70
71 2004-05-20  David Shaw  <dshaw@jabberwocky.com>
72
73         * gpgkeys_http.c: New program to do a simple HTTP file fetch using
74         the keyserver interface.
75
76         * Makefile.am: Build it.
77
78 2004-02-28  David Shaw  <dshaw@jabberwocky.com>
79
80         * Makefile.am: Don't split LDADD across two lines since some make
81         programs can't handle blank lines after a \ continuation.  Noted
82         by Christoph Moench-Tegeder.
83
84 2004-02-25  David Shaw  <dshaw@jabberwocky.com>
85
86         * gpgkeys_ldap.c (send_key): List pgpCertID as one of the deleted
87         attributes.  This guarantees that if something goes wrong, we
88         won't be able to complete the transaction, thus leaving any key
89         already existing on the server intact.
90
91 2004-02-23  David Shaw  <dshaw@jabberwocky.com>
92
93         * gpgkeys_ldap.c (delete_one_attr): Removed.
94         (make_one_attr): Delete functionality added.  Optional deduping
95         functionality added (currently only used for pgpSignerID).
96         (build_attrs): Translate sig entries into pgpSignerID.  Properly
97         build the timestamp for pgpKeyCreateTime and pgpKeyExpireTime.
98
99 2004-02-22  David Shaw  <dshaw@jabberwocky.com>
100
101         * gpgkeys_ldap.c (delete_one_attr): New function to replace
102         attributes with NULL (a "delete" that works even for nonexistant
103         attributes).
104         (send_key): Use it here to remove attributes so a modify operation
105         starts with a clean playing field.  Bias sends to modify before
106         add, since (I suspect) people update their existing keys more
107         often than they make and send new keys to the server.
108
109 2004-02-21  David Shaw  <dshaw@jabberwocky.com>
110
111         * gpgkeys_ldap.c (epoch2ldaptime): New.  Converse of
112         ldap2epochtime.
113         (make_one_attr): New. Build a modification list in memory to send
114         to the LDAP server.
115         (build_attrs): New. Parse INFO lines sent over by gpg.
116         (free_mod_values): New.  Unwinds a modification list.
117         (send_key_keyserver): Renamed from old send_key().
118         (send_key): New function to send a key to a LDAP server.
119         (main): Use send_key() for real LDAP servers, send_key_keyserver()
120         otherwise.
121
122 2004-02-20  David Shaw  <dshaw@jabberwocky.com>
123
124         * gpgkeys_ldap.c: Replacement prototypes for setenv and unsetenv.
125         (search_key): Catch a SIZELIMIT_EXCEEDED error and show the user
126         whatever the server did give us.
127         (find_basekeyspacedn): There is no guarantee that namingContexts
128         will be readable.
129
130         * Makefile.am: Link gpgkeys_ldap with libutil.a to get the
131         replacement functions (and eventually translations, etc).
132
133 2004-02-19  David Shaw  <dshaw@jabberwocky.com>
134
135         * gpgkeys_ldap.c (ldap2epochtime): LDAP timestamps are UTC, so do
136         not correct for timezones.
137         (main): Find the basekeyspacedn before we try to start TLS, so we
138         can give a better error message when a user tries to use TLS with
139         a LDAP keyserver.
140
141         * Makefile.am: Add automake conditionals to symlink gpgkeys_ldaps
142         to gpgkeys_ldap when needed.
143
144         * gpgkeys_ldap.c (main): Add support for LDAPS and TLS
145         connections.  These are only useful and usable when talking to
146         real LDAP keyservers.  Add new "tls" option to tune TLS use from
147         off, to try quietly, to try loudly, or to require TLS.
148
149         * gpgkeys_ldap.c (find_basekeyspacedn): New function to figure out
150         what kind of LDAP server we're talking to (either real LDAP or the
151         LDAP keyserver), and return the baseKeySpaceDN to find keys under.
152         (main): Call it from here, and remove the old code that only
153         handled the LDAP keyserver.
154
155 2004-02-18  David Shaw  <dshaw@jabberwocky.com>
156
157         * gpgkeys_ldap.c (ldap_to_gpg_err): Make sure that
158         LDAP_OPT_ERROR_NUMBER is defined before we use it.
159
160         * gpgkeys_mailto.in: Fix VERSION number.
161
162 2004-01-13  Werner Koch  <wk@gnupg.org>
163
164         * gpgkeys_hkp.c (send_key): Add a content type.
165
166 2004-01-11  David Shaw  <dshaw@jabberwocky.com>
167
168         * gpgkeys_hkp.c (search_key): Catch a mangled input file (useful
169         if something other than GnuPG is calling the program).
170         (main): Avoid possible pre-string write.  Noted by Christian
171         Biere.
172
173         * gpgkeys_ldap.c (main): Avoid possible pre-string write.
174
175 2003-12-28  David Shaw  <dshaw@jabberwocky.com>
176
177         * gpgkeys_hkp.c (send_key, get_key, main): Work with new HTTP code
178         that passes the proxy in from the outside.  If the command file
179         sends a proxy, use it.  If it sends "http-proxy" with no
180         arguments, use $http_proxy from the environment.  Suggested by
181         Christian Biere.
182
183 2003-12-28  Stefan Bellon  <sbellon@sbellon.de>
184
185         * gpgkeys_hkp.c, gpgkeys_ldap.c [__riscos__]: Removal of
186         unnecessary #ifdef __riscos__ sections.
187
188 2003-11-27  Werner Koch  <wk@gnupg.org>
189
190         * gpgkeys_hkp.c (get_key): Fixed invalid use of fprintf without
191         format string.
192
193 2003-10-25  Werner Koch  <wk@gnupg.org>
194
195         * Makefile.am (gpgkeys_hkp_LDADD): Replaced INTLLIBS by LIBINTL.
196
197 2003-07-10  David Shaw  <dshaw@jabberwocky.com>
198
199         * Makefile.am: Use W32LIBS where appropriate.
200
201 2003-05-30  David Shaw  <dshaw@jabberwocky.com>
202
203         * gpgkeys_hkp.c, gpgkeys_ldap.c: #include <getopt.h> if it is
204         available.  Also include extern references for optarg and optind
205         since there is no guarantee that any header file will include
206         them.  Standards?  We don't need no stinkin' standards.
207
208         * Makefile.am: Use @GETOPT@ to pull in libiberty on those
209         platforms that need it.
210
211 2003-04-08  David Shaw  <dshaw@jabberwocky.com>
212
213         * gpgkeys_hkp.c (dehtmlize, parse_hkp_index): Fix memory
214         corruption bug on some platforms.
215
216 2003-03-11  David Shaw  <dshaw@jabberwocky.com>
217
218         * gpgkeys_hkp.c (get_key): Properly handle CRLF line endings in
219         the armored key.
220         (main): Accept "try-dns-srv" option.
221
222         * Makefile.am: Use @CAPLIBS@ to link in -lcap if we are using
223         capabilities.  Use @SRVLIBS@ to link in the resolver if we are
224         using DNS SRV.
225
226 2003-02-11  David Shaw  <dshaw@jabberwocky.com>
227
228         * Makefile.am: Use a local copy of libexecdir along with @PACKAGE@
229         so it can be easily overridden at make time.
230
231 2003-01-29  David Shaw  <dshaw@jabberwocky.com>
232
233         * gpgkeys_mailto.in: Fix regexp to work properly if the "keyid" is
234         not a keyid, but rather a text string from the user ID.
235
236 2003-01-06  David Shaw  <dshaw@jabberwocky.com>
237
238         * gpgkeys_hkp.c (get_key): Use options=mr when getting a key so
239         keyserver doesn't attach the HTML header which we will just have
240         to discard.
241
242 2002-11-17  David Shaw  <dshaw@jabberwocky.com>
243
244         * gpgkeys_ldap.c (main), gpgkeys_hkp.c (main): Use new keyserver
245         protocol version.
246
247 2002-11-14  David Shaw  <dshaw@jabberwocky.com>
248
249         * gpgkeys_ldap.c (get_key): The deduping code requires
250         "pgpcertid", but that was not available when running without
251         verbose on.  Noted by Stefan.
252
253 2002-11-10  David Shaw  <dshaw@jabberwocky.com>
254
255         * gpgkeys_ldap.c (get_key): Fix typo in deduping code.
256
257 2002-11-05  David Shaw  <dshaw@jabberwocky.com>
258
259         * gpgkeys_ldap.c (key_in_keylist, add_key_to_keylist,
260         free_keylist, get_key, search_key): The LDAP keyserver doesn't
261         remove duplicates, so remove them locally.  Do not include the key
262         modification time in the search response.
263
264 2002-11-04  David Shaw  <dshaw@jabberwocky.com>
265
266         * gpgkeys_hkp.c (send_key), gpgkeys_ldap.c (send_key): Properly
267         handle an input file that does not include any key data at all.
268
269 2002-10-24  David Shaw  <dshaw@jabberwocky.com>
270
271         * gpgkeys_hkp.c (main), gpgkeys_ldap.c (main): Add -V flag to
272         output protocol and program version.
273
274 2002-10-21  David Shaw  <dshaw@jabberwocky.com>
275
276         * Makefile.am: Anything linking with libutil.a needs INTLLIBS as
277         well on platforms where INTLLIBS is set.
278
279 2002-10-14  David Shaw  <dshaw@jabberwocky.com>
280
281         * gpgkeys_hkp.c (write_quoted): Use %-encoding instead of
282         \-encoding.
283         (parse_hkp_index): Use new keyserver key listing format, and add
284         support for disabled keys via include-disabled.
285
286         * gpgkeys_ldap.c (get_key): Don't print keysize unless it's >0.
287         (printquoted): Use %-encoding instead of \-encoding.
288         (search_key): Use new keyserver key listing format.
289
290 2002-10-08  David Shaw  <dshaw@jabberwocky.com>
291
292         * gpgkeys_ldap.c (search_key, main): Make sure LDAP values are
293         freed in case of error.
294
295         * gpgkeys_ldap.c (fail_all): New function to unwind a keylist and
296         error each item.
297         (main): Call fail_all from here, as needed.  Also add a NO_MEMORY
298         error in an appropriate place and fix error return code.
299         (ldap_err_to_gpg_err): Add KEYSERVER_UNREACHABLE.
300
301         * gpgkeys_hkp.c (fail_all): New function to unwind a keylist and
302         error each item.
303         (main): Call fail_all from here.  Also add a NO_MEMORY error in an
304         appropriate place.
305         (get_key): Use new UNREACHABLE error for network errors.
306
307 2002-09-26  Werner Koch  <wk@gnupg.org>
308
309         * gpgkeys_ldap.c (send_key): Removed non-constant initializers.
310
311 2002-09-24  David Shaw  <dshaw@jabberwocky.com>
312
313         * gpgkeys_ldap.c (ldap_err_to_gpg_err, ldap_to_gpg_err, send_key,
314         get_key, search_key, main): Some minor error reporting
315         enhancements for use with GPA (show reasons for KEY FAILED).
316
317         * gpgkeys_hkp.c (send_key, get_key, search_key, main): Some minor
318         error reporting enhancements for use with GPA (show reasons for
319         KEY FAILED).
320
321 2002-09-20  Werner Koch  <wk@gnupg.org>
322
323         * gpgkeys_hkp.c (handle_old_hkp_index): s/input/inp/ to avoid
324         shadowing warning.
325
326 2002-09-19  David Shaw  <dshaw@jabberwocky.com>
327
328         * gpgkeys_hkp.c (get_key, handle_old_hkp_index, search_key):
329         Properly handle line truncation.
330
331 2002-09-16  David Shaw  <dshaw@jabberwocky.com>
332
333         * gpgkeys_mailto.in: Add quasi-RFC-2368 mailto:email@addr?from=
334         syntax so people can set their own email address to respond to.
335
336         * gpgkeys_hkp.c (get_key): Properly respond with KEY FAILED (to
337         gpg) and "key not found" (to user) on failure.
338         
339 2002-09-13  David Shaw  <dshaw@jabberwocky.com>
340
341         * gpgkeys_hkp.c: (search_key, handle_old_hkp_index): Try and
342         request a machine-readable key index.  If the server supports
343         this, pass it through.  If the server does not support it, parse
344         the "index" page.
345
346 2002-09-12  Stefan Bellon  <sbellon@sbellon.de>
347
348         * gpgkeys_hkp.c: Tidied up RISC OS initializations.
349
350 2002-09-12  David Shaw  <dshaw@jabberwocky.com>
351
352         * gpgkeys_hkp.c (main): Remove warning - this is no longer
353         experimental code.
354
355 2002-09-09  Werner Koch  <wk@gnupg.org>
356
357         * gpgkeys_hkp.c (send_key, get_key, search_key): Check return
358         value of malloc.
359         (dehtmlize): Use ascii_tolower to protect against weird locales.
360         Cast the argument for isspace for the sake of broken HP/UXes.
361         (search_key): Check return value of realloc.
362
363 2002-09-09  David Shaw  <dshaw@jabberwocky.com>
364
365         * gpgkeys_ldap.c (get_key): Some compilers (RISC OS, HPUX c89)
366         don't like using variables as array initializers.
367
368         * gpgkeys_hkp.c (send_key): Use CRLF in headers.
369
370 2002-08-28  David Shaw  <dshaw@jabberwocky.com>
371
372         * gpgkeys_hkp.c (parse_hkp_index): Use same types on all
373         platforms.  This was probably leftover from earlier code where the
374         typing mattered.
375
376         * gpgkeys_hkp.c: Overall cleanup from iobuf conversion.  Be
377         consistent in m_alloc and malloc usage.  Remove include-disabled
378         (meaningless on HKP).  RISC OS tweak.
379
380 2002-08-27  David Shaw  <dshaw@jabberwocky.com>
381
382         * gpgkeys_hkp.c, Makefile.am: Convert over to using iobufs.
383
384         * gpgkeys_hkp.c (http_get, http_post): Use CRLF for line endings.
385
386         * gpgkeys_hkp.c: Include util.h on RISC OS as per Stefan.  Include
387         a replacement for hstrerror() for those platforms (such as RISC
388         OS) that don't have it.
389
390 2002-08-26  David Shaw  <dshaw@jabberwocky.com>
391
392         * Makefile.am: May as well include gpgkeys_hkp.c in the
393         distribution now.  It works well enough without proxies, and isn't
394         built by default.  It would be good to get some test experience
395         with it.
396
397         * gpgkeys_hkp.c (main): Don't warn about include-subkeys - it
398         isn't unsupported, it's actually non-meaningful in the context of
399         HKP (yet).
400         
401         * gpgkeys_hkp.c (parse_hkp_index, dehtmlize): Move HTML
402         functionality into new "dehtmlize" function.  Remove HTML before
403         trying to parse each line from the keyserver.  If the keyserver
404         provides key type information in the listing, use it.  (Copy over
405         from g10/hkp.c).
406
407 2002-08-19  David Shaw  <dshaw@jabberwocky.com>
408
409         * gpgkeys_hkp.c (get_key, parse_hkp_index): Bring over latest code
410         from g10/hkp.c.
411
412         * gpgkeys_ldap.c (get_key): Fix cosmetic URL display problem
413         (extra ":" at the end).
414
415 2002-08-03  Stefan Bellon  <sbellon@sbellon.de>
416
417         * gpgkeys_ldap.c: Tidied up RISC OS initializations.
418
419 2002-07-25  David Shaw  <dshaw@jabberwocky.com>
420
421         * gpgkeys_hkp.c: "Warning" -> "WARNING"
422
423 2002-07-24  David Shaw  <dshaw@jabberwocky.com>
424
425         * Makefile.am: Install keyserver helpers in @GNUPG_LIBEXECDIR@
426
427 2002-07-15  David Shaw  <dshaw@jabberwocky.com>
428
429         * gpgkeys_ldap.c (send_key, get_key, main): Consult the server
430         version string to determine whether to use pgpKey or pgpKeyV2.
431
432 2002-07-09  David Shaw  <dshaw@jabberwocky.com>
433
434         * gpgkeys_mailto.in: Use new OPAQUE tag for non net-path URIs.
435         Fail more elegantly if there is no email address to send to.  Show
436         the GnuPG version in the message body.
437
438 2002-07-04  David Shaw  <dshaw@jabberwocky.com>
439
440         * gpgkeys_ldap.c (get_key), gpgkeys_hkp.c (get_key): Display
441         keyserver URI as a URI, but only if verbose.
442
443 2002-07-01  David Shaw  <dshaw@jabberwocky.com>
444
445         * gpgkeys_hkp.c (parse_hkp_index): Error if the keyserver returns
446         an unparseable HKP response.
447
448         * gpgkeys_hkp.c (main): Warn on honor-http-proxy,
449         broken-http-proxy, and include-subkeys (not supported yet).
450
451         * gpgkeys_ldap.c (main), gpgkeys_hkp.c (http_connect, main): Fix
452         some shadowing warnings.
453
454 2002-06-11  David Shaw  <dshaw@jabberwocky.com>
455
456         * Makefile.am: Don't hard-code the LDAP libraries - get them from
457         LDAPLIBS via configure.  Also, gpgkeys_hkp is a program, not a
458         script.
459
460 2002-06-10  David Shaw  <dshaw@jabberwocky.com>
461
462         * gpgkeys_ldap.c (include_subkeys): Default "include-subkeys" to
463         off, since GnuPG now defaults it to on.
464
465 2002-06-06  David Shaw  <dshaw@jabberwocky.com>
466
467         * gpgkeys_hkp.c (parse_hkp_index): Type tweaks.
468
469         * gpgkeys_hkp.c (main): Add experimental code warning.
470
471 2002-06-05  David Shaw  <dshaw@jabberwocky.com>
472
473         * Makefile.am, gpgkeys_hkp.c (new): Experimental HKP keyserver
474         interface.
475
476 2002-05-08  David Shaw  <dshaw@jabberwocky.com>
477
478         * gpgkeys_ldap.c: Include <lber.h> if we absolutely must.  This
479         helps when compiling against a very old OpenLDAP.
480
481 2002-04-29  David Shaw  <dshaw@jabberwocky.com>
482
483         * gpgkeys_mailto.in: Properly handle key requests in full
484         fingerprint form.
485
486 2002-03-29  David Shaw  <dshaw@jabberwocky.com>
487
488         * gpgkeys_ldap.c (printquoted): Quote backslashes within keyserver
489         search responses.
490
491 2002-02-25  David Shaw  <dshaw@jabberwocky.com>
492
493         * gpgkeys_ldap (get_key): LDAP keyservers do not support v3
494         fingerprints, so error out if someone tries.  Actually, they don't
495         support any fingerprints, but at least we can calculate a keyid
496         from a v4 fingerprint.
497
498 2002-02-23  David Shaw  <dshaw@jabberwocky.com>
499
500         * gpgkeys_ldap: Clarify the notion of a partial failure.  This is
501         possible if more than one key is being handled in a batch, and one
502         fails while the other succeeds.  Note that a search that comes up
503         with no results is not a failure - that is a valid response of "no
504         answer".
505
506         * gpgkeys_ldap.c (get_key): Allow GnuPG to send us full v4
507         fingerprints, long key ids, or short key ids while fetching.
508         Since the LDAP server doesn't actually handle fingerprints, chop
509         them down to long key ids for actual use.
510
511         * gpgkeys_ldap.c (main, get_key): When searching for a keyid,
512         search for subkeys as well as primary keys.  This is mostly
513         significant when automatically fetching the key based on the id in
514         a header (i.e. "signature made by....").  "no-include-subkeys"
515         disables.
516
517 2002-02-14  David Shaw  <dshaw@jabberwocky.com>
518
519         * gpgkeys_ldap.c: Fix compiler warning.
520
521         * gpgkeys_ldap.c: Be much more robust with mangled input files.
522
523 2001-12-28  David Shaw  <dshaw@jabberwocky.com>
524
525         * gpgkeys_mailto.in: Use the new OUTOFBAND indicator so gpg knows
526         not to try and import anything.  Also turn on perl -w for
527         warnings.
528
529         * gpgkeys_ldap.c (main): If we're using temp files (rather than
530         stdin/stdout), make sure the file is closed when we're done.
531
532 2001-12-20  David Shaw  <dshaw@jabberwocky.com>
533
534         * Properly free the LDAP response when we're done with it.
535
536         * Now that we handle multiple keys, we must remove duplicates as
537         the LDAP keyserver returns keys with multiple user IDs multiple
538         times.
539
540         * Properly handle multiple keys with the same key ID (it's really
541         rare, so fetch "0xDEADBEEF" to test this).
542
543 2001-12-17  David Shaw  <dshaw@jabberwocky.com>
544
545         * gpgkeys_ldap.c, gpgkeys_mailto.in: Fix GNU capitalization
546         issues.  Prefix log messages with "gpgkeys" to clarify which
547         program is generating them.
548
549 2001-12-14  David Shaw  <dshaw@jabberwocky.com>
550
551         * gpgkeys_ldap.c (search_key): Use unsigned int rather than uint
552         for portability.
553
554 2001-12-04  David Shaw  <dshaw@jabberwocky.com>
555
556         * Initial version of gpgkeys_ldap (LDAP keyserver helper) and
557         gpgkeys_mailto (email keyserver helper)
558
559         
560  Copyright 1998, 1999, 2000, 2001, 2002, 2003,
561            2004 Free Software Foundation, Inc.
562
563  This file is free software; as a special exception the author gives
564  unlimited permission to copy and/or distribute it, with or without
565  modifications, as long as this notice is preserved.
566
567  This file is distributed in the hope that it will be useful, but
568  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
569  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.