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