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