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