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