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