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