Finished the bulk of changes for gnupg 1.9. This included switching
[gnupg.git] / g10 / ChangeLog
1 2003-06-18  Werner Koch  <wk@gnupg.org>
2
3         Finished the bulk of changes for gnupg 1.9.  This included
4         switching to libgcrypt functions, using shared error codes from
5         libgpg-error, replacing the old functions we used to have in
6         ../util by those in ../jnlib and ../common, renaming the malloc
7         functions and a couple of types.  Note, that not all changes are
8         listed below becuause they are too similar and done at far too
9         many places.  As of today the code builds using the current
10         libgcrypt from CVS but it is very unlikely that it actually works.
11         
12         * sig-check.c (cmp_help): Removed.  Was never used.
13
14         * pkglue.c: New. Most stuff taken from gnupg 1.1.2.
15         * pkglue.h: New.
16
17         * misc.c (pull_in_libs): Removed.
18
19         * keygen.c (count_chr): New.
20         (ask_user_id): Removed faked RNG support.
21
22         * misc.c (openpgp_md_map_name,openpgp_cipher_map_name)
23         (openpgp_pk_map_name): New.
24
25         * skclist.c (build_sk_list): Removed faked RNG support.
26         (is_insecure): Removed.
27
28         * comment.c (make_mpi_comment_node): Use gcry MPI print function.
29
30         * keyid.c (v3_keyid): New.
31
32         * misc.c (mpi_write,mpi_write_opaque,mpi_read,mpi_read_opaque)
33         (mpi_print): New.  Taken from gnupg 1.1.2.
34         (checksum_mpi): Replaced by implementation from 1.1.2.
35
36         * g10.c (my_strusage): Renamed from strusage and return NULL
37         instead calling a default function.
38         (add_to_strlist2): New.  Taken from ../util/strgutil.c of gnupg 1.2.
39
40         * plaintext.c (handle_plaintext): New arg CREATE_FILE to cope with
41         the fact that gpg-error does not have this error code anymore.
42
43         * mainproc.c (symkey_decrypt_sesskey): Ditto.
44
45         * seskey.c (make_session_key): Adjusted for use with libgcrypt.
46         (encode_session_key): Ditto.
47         (do_encode_md): Ditto.
48         (encode_md_value): Ditto.
49
50         * keyring.c: Use libgpg-error instead of READ_ERROR etc.
51
52         * g10.c: Adjusted all algorithm name/id mapping functions.
53         (set_debug): Pass MPI and CRYPTO debug values to libgcrypt.
54
55         * Makefile.am (INCLUDES): Define LOCALEDIR and the default error
56         source.
57
58         * g10.c (i18n_init): s/G10_LOCALEDIR/LOCALEDIR/.
59
60         Renamed m_alloc et al to xmalloc et al.
61         s/g10_errstr/gpg_strerror/
62         s/MPI/gcry_mpi_t/
63         Adjusted all md_open calls to the libgcrypt API.
64         
65         * build-packet.c (do_comment): Return error code from iobuf write
66         function.
67         (do_user_id): Ditto.
68         (do_public_key): Ditto.
69
70         * Makefile.am: Add new files, link gpg with libgpg-error.
71         * g10.c, options.h: New option --agent-program.
72         * call-agent.c: New.
73         * gpg.h, call-agent.h: New.
74
75 2003-06-03  David Shaw  <dshaw@jabberwocky.com>
76
77         * options.h, g10.c (main), keylist.c (list_keyblock_print): Add
78         "show-validity" and "show-long-keyid" list-options.
79
80         * gpgv.c (get_validity, trust_value_to_string): Stubs.
81
82         * g10.c (main): Use SAFE_VERSION instead of VERSION in the
83         version-specific gpg.conf file so it can be overridden on RISCOS.
84
85 2003-06-01  David Shaw  <dshaw@jabberwocky.com>
86
87         * g10.c (main), keylist.c (show_policy_url, show_notation),
88         mainproc.c (check_sig_and_print): Emulate the old policy and
89         notation behavior (display by default).  Send to status-fd whether
90         it is displayed on the screen or not.
91
92         * g10.c (main): Since we now have some options in devel that won't
93         work in a stable branch gpg.conf file, try for a version-specific
94         gpg.conf-VERSION file before falling back to gpg.conf.
95
96         * main.h, options.h: Move various option flags to options.h.
97
98 2003-05-31  David Shaw  <dshaw@jabberwocky.com>
99
100         * mainproc.c (check_sig_and_print), main.h, keylist.c
101         (show_policy, show_notation): Collapse the old print_notation_data
102         into show_policy() and show_notation() so there is only one
103         function to print notations and policy URLs.
104
105         * options.h, main.h, g10.c (main), keyedit.c
106         (print_and_check_one_sig), keylist.c (list_one,
107         list_keyblock_print), pkclist.c (do_edit_ownertrust), sign.c
108         (mk_notation_and_policy): New "list-options" and "verify-options"
109         commands.  These replace the existing
110         --show-photos/--no-show-photos,
111         --show-notation/--no-show-notation,
112         --show-policy-url/--no-show-policy-url, and --show-keyring
113         options.  The new method is more flexible since a user can specify
114         (for example) showing photos during sig verification, but not in
115         key listings.  The old options are emulated.
116
117         * main.h, misc.c (parse_options): New general option line
118         parser. Fix the bug in the old version that did not handle report
119         syntax errors after a valid entry.
120
121         * import.c (parse_import_options), export.c
122         (parse_export_options): Call it here instead of duplicating the
123         code.
124
125 2003-05-30  David Shaw  <dshaw@jabberwocky.com>
126
127         * keylist.c (list_one): Don't show the keyring filename when in
128         --with-colons mode.  Actually translate "Keyring" string.
129
130         * mainproc.c (proc_tree): We can't currently handle multiple
131         signatures of different classes or digests (we'd pretty much have
132         to run a different hash context for each), but if they are all the
133         same, make an exception.  This is Debian bug #194292.
134
135         * sig-check.c (check_key_signature2): Make string translatable.
136
137         * packet.h, getkey.c (fixup_uidnode): Mark real primary uids
138         differently than assumed primaries.
139
140         * keyedit.c (no_primary_warning): Use the differently marked
141         primaries here in a new function to warn when an --edit-key
142         command might rearrange the self-sig dates enough to change which
143         uid is primary.
144         (menu_expire, menu_set_preferences): Use no_primary_warning()
145         here.
146
147         * Makefile.am: Use @DLLIBS@ for -ldl.
148
149 2003-05-26  David Shaw  <dshaw@jabberwocky.com>
150
151         * getkey.c (premerge_public_with_secret): Made "no secret subkey
152         for" warning a verbose item and translatable. (From wk on stable
153         branch)
154
155         * sig-check.c (check_key_signature2): Made "no subkey for subkey
156         binding packet" a verbose item instead of a !quiet one.  There are
157         too many garbled keys out in the wild. (From wk on stable branch)
158
159         * filter.h: Remove const from WHAT. (From wk on stable branch)
160
161         * progress.c (handle_progress): Store a copy of
162         NAME. (progress_filter): Release WHAT, make sure not to print a
163         NULL WHAT. (From wk on stable branch)
164
165         * openfile.c (open_sigfile): Adjust free for new progress
166         semantics. (From wk on stable branch)
167
168         * plaintext.c (ask_for_detached_datafile): Don't dealloc
169         pfx->WHAT. (From wk on stable branch)
170
171         * seckey-cert.c (do_check): Issue the RSA_OR_IDEA status when the
172         cipher algo is IDEA to make it easier to track down the
173         problem. (From twoaday on stable branch)
174         
175 2003-05-24  David Shaw  <dshaw@jabberwocky.com>
176
177         * armor.c, g10.c, kbnode.c, misc.c, pkclist.c, sign.c,
178         build-packet.c, getkey.c, keydb.c, openfile.c, plaintext.c,
179         status.c, gpgv.c, keygen.c, options.h, sig-check.c, tdbio.h,
180         encode.c, mainproc.c, parse-packet.c, signal.c, textfilter.c: Edit
181         all preprocessor instructions to remove whitespace before the '#'.
182         This is not required by C89, but there are some compilers out
183         there that don't like it.
184
185 2003-05-21  David Shaw  <dshaw@jabberwocky.com>
186
187         * trustdb.h, trustdb.c (is_disabled), gpgv.c (is_disabled): Rename
188         is_disabled to cache_disabled_value, which now takes a pk and not
189         just the keyid. This is for speed since there is no need to
190         re-fetch a key when we already have that key handy.  Cache the
191         result of the check so we don't need to hit the trustdb more than
192         once.
193         
194         * getkey.c (skip_disabled): New function to get a pk and call
195         is_disabled on it. (key_byname): Use it here.
196         
197         * packet.h, getkey.c (skip_disabled), keylist.c
198         (print_capabilities): New "pk_is_disabled" macro to retrieve the
199         cached disabled value if available, and fill it in via
200         cache_disabled_value if not available.
201
202         * trustdb.c (get_validity): Cache the disabled value since we have
203         it handy and it might be useful later.
204
205         * parse-packet.c (parse_key): Clear disabled flag when parsing a
206         new key.  Just in case someone forgets to clear the whole key.
207
208         * getkey.c (merge_selfsigs_main): Add an "if all else fails" path
209         for setting a single user ID primary when there are multiple set
210         primaries all at the same second, or no primaries set and the most
211         recent user IDs are at the same second, or no signed user IDs at
212         all. This is arbitrary, but deterministic.
213
214         * exec.h, photoid.h: Add copyright message.
215
216         * keylist.c (list_keyblock_print): Don't dump attribs for
217         revoked/expired/etc uids for non-colon key listings.  This is for
218         consistency with --show-photos.
219
220         * main.h, keylist.c (dump_attribs), mainproc.c
221         (check_sig_and_print): Dump attribs if --attrib-fd is set when
222         verifying signatures.
223         
224         * g10.c (main): New --gnupg option to disable the various
225         --openpgp, --pgpX, etc. options.  This is the same as --no-XXXX
226         for those options.
227
228         * revoke.c (ask_revocation_reason): Clear old reason if user
229         elects to repeat question.  This is bug 153.
230
231         * keyedit.c (sign_uids): Show keyid of the key making the
232         signature.
233
234 2003-05-21  Werner Koch  <wk@gnupg.org>
235
236         * progress.c (handle_progress)
237         * sign.c (write_plaintext_packet)
238         * encode.c (encode_simple,encode_crypt): Make sure that a filename
239         of "-" is considered to be stdin so that iobuf_get_filelength
240         won't get called.  This fixes bug 156 reported by Gregery Barton.
241
242 2003-05-02  David Shaw  <dshaw@jabberwocky.com>
243
244         * packet.h, build-packet.c (build_sig_subpkt), export.c
245         (do_export_stream), import.c (remove_bad_stuff, import),
246         parse-packet.c (dump_sig_subpkt, parse_one_sig_subpkt): Remove
247         vestigal code for the old sig cache subpacket.  This wasn't
248         completely harmless as it caused subpacket 101 to disappear on
249         import and export.
250
251         * options.h, armor.c, cipher.c, g10.c, keyedit.c, pkclist.c,
252         sign.c, encode.c, getkey.c, revoke.c: The current flags for
253         different levels of PGP-ness are massively complex.  This is step
254         one in simplifying them. No functional change yet, just use a
255         macro to check for compliance level.
256
257         * sign.c (sign_file): Fix bug that causes spurious compression
258         preference warning.
259
260         * sign.c (clearsign_file): Fix bug that prevents proper warning
261         message from appearing when clearsigning in --pgp2 mode with a
262         non-v3 RSA key.
263
264         * main.h, misc.c (compliance_option_string, compliance_string,
265         compliance_failure), pkclist.c (build_pk_list), sign.c (sign_file,
266         clearsign_file), encode.c (encode_crypt,
267         write_pubkey_enc_from_list): New functions to put the "this
268         message may not be usable...." warning in one place.
269
270         * options.h, g10.c (main): Part two of the simplification.  Use a
271         single enum to indicate what we are compliant to (1991, 2440,
272         PGPx, etc.)
273
274         * g10.c (main): Show errors for failure in export, send-keys,
275         recv-keys, and refresh-keys.
276
277         * options.h, g10.c (main): Give algorithm warnings for algorithms
278         chosen against the --pgpX and --openpgp rules.
279
280         * keydb.h, pkclist.c (algo_available): Make TIGER192 invalid in
281         --openpgp mode.
282
283         * sign.c (sign_file), pkclist.c (algo_available): Allow passing a
284         hint of 0.
285
286 2003-05-01  David Shaw  <dshaw@jabberwocky.com>
287
288         * tdbio.c (create_version_record): Only create new trustdbs with
289         TM_CLASSIC or TM_PGP.
290
291         * trustdb.h, trustdb.c (trust_string, get_ownertrust_string,
292         get_validity_string, ask_ownertrust, validate_keys), pkclist.c
293         (do_edit_ownertrust): Rename trust_string to trust_value_to_string
294         for naming consistency.
295
296         * trustdb.h, trustdb.c (string_to_trust_value): New function to
297         translate a string to a trust value.
298
299         * g10.c (main): Use string_to_trust_value here for
300         --force-ownertrust.
301         
302         * options.h, g10.c (main), trustdb.c (trust_model_string,
303         init_trustdb, check_trustdb, update_trustdb, get_validity,
304         validate_one_keyblock): An "OpenPGP" trust model is misleading
305         since there is no official OpenPGP trust model.  Use "PGP"
306         instead.
307
308 2003-04-30  David Shaw  <dshaw@jabberwocky.com>
309
310         * build-packet.c (build_sig_subpkt): Comments.
311
312         * exec.c (exec_write): Cast NULL to void* to properly terminate
313         varargs list.
314
315         * keyedit.c (show_key_with_all_names): Just for safety, catch an
316         invalid pk algorithm.
317
318         * sign.c (make_keysig_packet): Crucial that the call to mksubpkt
319         comes LAST before the calls to finalize the sig as that makes it
320         possible for the mksubpkt function to get a reliable pointer to
321         the subpacket area.
322
323         * pkclist.c (do_we_trust_pre): If an untrusted key was chosen by a
324         particular user ID, use that ID as the one to ask about when
325         prompting whether to use the key anyway.
326         (build_pk_list): Similar change here when adding keys to the
327         recipient list.
328
329         * trustdb.c (update_validity): Fix bug that prevented more than
330         one validity record per trust record.
331         (get_validity): When retrieving validity for a (user) supplied
332         user ID, return the validity for that user ID only, and do not
333         fall back to the general key validity.
334         (validate_one_keyblock): Some commentary on whether
335         non-self-signed user IDs belong in the web of trust (arguably,
336         they do).
337
338 2003-04-27  David Shaw  <dshaw@jabberwocky.com>
339
340         * g10.c (main): Add --no-textmode.
341
342         * export.c (do_export_stream), keyedit.c (show_key_with_all_names,
343         menu_addrevoker), mainproc.c (check_sig_and_print), photoid.c
344         (show_photos), sign.c (mk_notation_and_policy), trustdb.c
345         (get_validity, reset_trust_records, validate_keys): Make some
346         strings translatable.
347
348         * mainproc.c (check_sig_and_print): Show digest algorithm and sig
349         class when verifying a sig with --verbose on, and add version, pk
350         and hash algorithms and sig class to VALIDSIG.
351         
352         * parse-packet.c (enum_sig_subpkt): Make a warning message a
353         --verbose warning message since we don't need to warn every time
354         we see an unknown critical (we only need to invalidate the
355         signature).
356
357         * trustdb.c (init_trustdb): Check the trustdb options even with
358         TM_AUTO since the auto may become TM_CLASSIC or TM_OPENPGP.
359
360 2003-04-26  David Shaw  <dshaw@jabberwocky.com>
361
362         * sign.c (do_sign): Show the hash used when making a signature in
363         verbose mode.
364
365         * tdbio.h, tdbio.c (tdbio_read_model): New function to return the
366         trust model used in a given trustdb.
367
368         * options.h, g10.c (main), trustdb.c (init_trustdb, check_trustdb,
369         update_trustdb): Use tdbio_read_model to implement an "auto" trust
370         model which is set via the trustdb.
371
372 2003-04-23  David Shaw  <dshaw@jabberwocky.com>
373
374         * import.c (import_revoke_cert): Remove ultimate trust when
375         revoking an ultimately trusted key.
376
377         * keyedit.c (sign_uids): Allow replacing expired signatures.
378         Allow duplicate signatures with --expert.
379
380         * pkclist.c (check_signatures_trust): Don't display a null
381         fingerprint when checking a signature with --always-trust enabled.
382
383         * filter.h (progress_filter_context_t), progress.c
384         (handle_progress), plaintext.c (ask_for_detached_datafile,
385         hash_datafiles): Fix compiler warnings.  Make "what" constant.
386
387         * build-packet.c (do_plaintext): Do not create invalid literal
388         packets with >255-byte names.
389
390 2003-04-15  Werner Koch  <wk@gnupg.org>
391
392         * Makefile.am (AM_CFLAGS): Make use of AM_CFLAGS and AM_LDFLAGS.
393
394         * g10.c, options.h: New option --enable-progress-filter.
395         * progress.c (handle_progress): Make use of it.
396
397 2003-04-15  Marcus Brinkmann  <marcus@g10code.de>
398
399         * progress.c: New file.
400         * Makefile.am (common_source): Add progress.c.
401         * filter.h (progress_filter_context_t): New type.
402         (progress_filter, handle_progress): New prototypes.
403         * main.h (open_sigfile): New argument for prototype.
404         * openfile.c (open_sigfile): New argument to install progress
405         filter.
406         * encode.c (encode_simple): New variable PFX.  Register
407         progress filter.  Install text_filter after that.
408         (encode_crypt): Likewise.
409         * sign.c (sign_file): Likewise.
410         (clearsign_file): Likewise.
411         * decrypt.c (decrypt_message): Likewise.
412         (decrypt_messages): Likewise.
413         * verify.c (verify_signatures): Likewise.
414         (verify_one_file): Likewise.
415         * plaintext.c (hash_datafiles): Likewise.
416         (ask_for_detached_datafile): Likewise.
417
418 2003-04-10  Werner Koch  <wk@gnupg.org>
419
420         * passphrase.c (read_passphrase_from_fd): Do a dummy read if the
421         agent is to be used.  Noted by Ingo Klöcker.
422         (agent_get_passphrase): Inhibit caching when we have no
423         fingerprint.  This is required for key generation as well as for
424         symmetric only encryption.
425
426         * passphrase .c (agent_get_passphrase): New arg CANCELED.
427         (passphrase_to_dek): Ditto.  Passed to above.  Changed all
428         callers to pass NULL.
429         * seckey-cert.c (do_check): New arg CANCELED.
430         (check_secret_key): Terminate loop when canceled.
431
432         * keyedit.c (change_passphrase): Pass ERRTEXT untranslated to
433         passphrase_to_dek and translate where appropriate.
434         * seckey-cert.c (check_secret_key): Ditto.
435         * keygen.c (ask_passphrase): Ditto.
436         * passphrase.c (agent_get_passphrase): Translate the TRYAGAIN_TEXT.
437         Switch the codeset to utf-8.
438
439 2003-04-09  Werner Koch  <wk@gnupg.org>
440
441         * decrypt.c (decrypt_messages): Fixed error handling; the function
442         used to re-loop with same file after an error.  Reported by Joseph
443         Walton.
444
445 2003-04-08  David Shaw  <dshaw@jabberwocky.com>
446
447         * main.h, g10.c (main), import.c (parse_import_options,
448         fix_pks_corruption): It's really PKS corruption, not HKP
449         corruption.  Keep the old repair-hkp-subkey-bug command as an
450         alias.
451
452         * g10.c (main): Rename --no-version to --no-emit-version for
453         consistency.  Keep --no-version as an alias.
454
455 2003-04-04  David Shaw  <dshaw@jabberwocky.com>
456
457         * pkclist.c (algo_available): PGP 8 can use the SHA-256 hash.
458
459         * sign.c (sign_file, clearsign_file, sign_symencrypt_file): Remove
460         unused code.
461
462 2003-04-01  Werner Koch  <wk@gnupg.org>
463
464         * mainproc.c (check_sig_and_print): Add primary key fpr to VALIDSIG
465         status.
466
467 2003-03-24  David Shaw  <dshaw@jabberwocky.com>
468
469         * keydb.h: Err on the side of making an unknown signature a SIG
470         rather than a CERT.
471
472         * import.c (delete_inv_parts): Discard any key signatures that
473         aren't key types (i.e. 0x00, 0x01, etc.)
474
475         * g10.c (main): Add deprecated option warning for
476         --list-ownertrust.  Add --compression-algo alias for
477         --compress-algo.  Change --version output strings to match
478         "showpref" strings, and make translatable.
479
480         * status.c (do_get_from_fd): Accept 'y' as well as 'Y' for
481         --command-fd boolean input.
482
483         * trustdb.c: Fix typo (DISABLE_REGEXP -> DISABLE_REGEX)
484
485         * keyedit.c (show_key_with_all_names_colon): Show no-ks-modify
486         flag.
487
488 2003-03-11  David Shaw  <dshaw@jabberwocky.com>
489
490         * options.h, g10.c (main), keyserver.c (kopts): Add "try-dns-srv"
491         keyserver option.  Defaults to on.
492
493         * passphrase.c (agent_get_passphrase): Fix memory leak with
494         symmetric messages.  Fix segfault with symmetric messages.  Fix
495         incorrect prompt with symmetric messages.
496
497 2003-03-10  Werner Koch  <wk@gnupg.org>
498
499         * compress.c (init_uncompress): Use a 15 bit window size so that
500         the output of implementations which don't run for PGP 2
501         compatibility won't get garbled.
502
503 2003-03-04  David Shaw  <dshaw@jabberwocky.com>
504
505         * trustdb.c (validate_keys): Mask the ownertrust when building the
506         list of fully valid keys so that disabled keys are still counted
507         in the web of trust.
508         (get_ownertrust_with_min): Do the same for the minimum ownertrust
509         calculation.
510
511         * parse-packet.c (dump_sig_subpkt): Show the notation names for
512         not-human-readable notations.  Fix cosmetic off-by-one length
513         counter.
514
515         * options.skel: Add explantion and commented-out
516         "no-mangle-dos-filenames".
517
518         * mainproc.c (proc_encrypted): Make string translatable.
519
520         * keyserver.c (keyserver_spawn): Quote ':', '%', and any 8-bit
521         characters in the uid strings sent to the keyserver helper.
522
523         * keyring.c (keyring_rebuild_cache): Lock the keyring while
524         rebuilding the signature caches to prevent another gpg from
525         tampering with the temporary copy.
526
527         * keygen.c (keygen_set_std_prefs): Include AES192 and AES256 in
528         default prefs.
529
530         * keyedit.c (show_prefs): Make strings translatable.
531
532         * keydb.c: Double the maximum number of keyrings to 40.
533
534         * gpgv.c (main): Fix bug #113 - gpgv should accept the
535         --ignore-time-conflict option.
536
537         * g10.c (main): --openpgp disables --pgpX.  Double the amount of
538         secure memory to 32k (keys are getting bigger these days).
539
540         * Makefile.am: Makefile.am: Use @CAPLIBS@ to link in -lcap if we
541         are using capabilities.
542
543 2003-02-26  David Shaw  <dshaw@jabberwocky.com>
544
545         * keyserver.c (keyserver_spawn): Include various pieces of
546         information about the key in the data sent to the keyserver
547         helper.  This allows the helper to use it in instructing a remote
548         server which may not have any actual OpenPGP smarts in parsing
549         keys.
550
551         * main.h, export.c (export_pubkeys_stream, do_export_stream): Add
552         ability to return only the first match in an exported keyblock for
553         keyserver usage.  This should be replaced at some point with a
554         more flexible solution where each key can be armored seperately.
555
556 2003-02-22  David Shaw  <dshaw@jabberwocky.com>
557
558         * sign.c (sign_file): Do not push textmode filter onto an unopened
559         IOBUF (segfault).  Noted by Marcus Brinkmann.  Push and
560         reinitialize textmode filter for each file in a multiple file
561         list.
562
563         * packet.h, getkey.c (fixup_uidnode), keyedit.c (show_prefs): Set
564         and show the keyserver no-modify flag.
565
566         * keygen.c (add_keyserver_modify): New.
567         (keygen_upd_std_prefs): Call it here.
568         (keygen_set_std_prefs): Accept "ks-modify" and "no-ks-modify" as
569         prefs to set and unset keyserver modify flag.
570
571         * g10.c (main): Accept "s1" in addition to "idea" to match the
572         other ciphers.
573
574         * main.h, misc.c (idea_cipher_warn): We don't need this if IDEA
575         has been disabled.
576
577 2003-02-21  David Shaw  <dshaw@jabberwocky.com>
578
579         * keygen.c (keygen_set_std_prefs): Don't put AES or CAST5 in
580         default prefs if they are disabled.
581
582         * g10.c (main): Use 3DES instead of CAST5 if we don't have CAST5
583         support.  Use 3DES for the s2k cipher in --openpgp mode.
584         (print_mds): #ifdef all of the optional digest algorithms.
585
586 2003-02-12  David Shaw  <dshaw@jabberwocky.com>
587
588         * keydb.h, getkey.c (classify_user_id, classify_user_id2): Make
589         'exact' a per-desc item.  Merge into one function since
590         'force_exact' is no longer needed.
591         (key_byname): Use new classify_user_id function, and new exact
592         flag in KEYDB_SEARCH_DESC.
593
594         * keyring.h, keyring.c (keyring_search): Return an optional index
595         to show which KEYDB_SEARCH_DESC was the matching one.
596
597         * keydb.h, keydb.c (keydb_search): Rename to keydb_search2, and
598         pass the optional index to keyring_search.  Add a macro version of
599         keydb_search that calls this new function.
600
601         * export.c (do_export_stream): If the keyid! syntax is used,
602         export only that specified key.  If the key in question is a
603         subkey, export the primary plus that subkey only.
604
605 2003-02-11  David Shaw  <dshaw@jabberwocky.com>
606
607         * exec.c (set_exec_path): Add debugging line.
608
609         * g10.c (print_hex, print_mds): Print long hash strings a lot
610         neater.  This assumes at least an 80-character display, as there
611         are a few other similar assumptions here and there.  Users who
612         need unformatted hashes can still use with-colons.  Check that
613         SHA384 and 512 are available before using them as they are no
614         longer always available.
615
616         * Makefile.am: Use a local copy of libexecdir along with @PACKAGE@
617         as GNUPG_LIBEXECDIR so it can be easily overridden at make time.
618
619 2003-02-04  David Shaw  <dshaw@jabberwocky.com>
620
621         * armor.c (parse_hash_header, armor_filter): Accept the new SHAs
622         in the armor Hash: header.
623
624         * g10.c (print_hex): Print long hash strings a little neater.
625         (print_mds): Add the new SHAs to the hash list.
626
627 2003-02-02  David Shaw  <dshaw@jabberwocky.com>
628
629         * keyedit.c (menu_revuid): Properly handle a nonselfsigned uid on
630         a v4 key (treat as a v4 revocation).
631
632         * import.c (print_import_check): Do not re-utf8 convert user IDs.
633
634 2003-01-27  David Shaw  <dshaw@jabberwocky.com>
635
636         * mainproc.c (list_node): Show signature expiration date in
637         with-colons sig records.
638
639         * keylist.c (list_keyblock_colon), mainproc.c (list_node): Show
640         trust sig information in with-colons sig records.
641
642 2003-01-16  David Shaw  <dshaw@jabberwocky.com>
643
644         * g10.c (add_group): Trim whitespace after a group name so it does
645         not matter where the user puts the = sign.
646
647         * options.skel: Comment out the first three lines in case someone
648         manually copies the skel file to their homedir.
649
650         * sign.c (clearsign_file): Only use pgp2mode with v3 keys and
651         MD5. This matches what we do when decoding such messages and
652         prevents creating a message (v3+RIPEMD/160) that we can't verify.
653
654         * sig-check.c (signature_check2): Use G10ERR_GENERAL as the error
655         for signature digest conflict.  BAD_SIGN implies that a signature
656         was checked and we may try and print out a user ID for a key that
657         doesn't exist.
658
659 2003-01-15  David Shaw  <dshaw@jabberwocky.com>
660
661         * trustdb.c (init_trustdb, get_validity): Don't use a changed
662         trust model to indicate a dirty trustdb, and never auto-rebuild a
663         dirty trustdb with the "always" trust model.
664
665         * g10.c (add_group): Last commit missed the \t ;)
666
667 2003-01-14  David Shaw  <dshaw@jabberwocky.com>
668
669         * packet.h, parse-packet.c (setup_user_id), free-packet.c
670         (free_user_id), keydb.h, keyid.c (namehash_from_uid): New function
671         to rmd160-hash the contents of a user ID packet and cache it in
672         the uid object.
673
674         * keylist.c (list_keyblock_colon): Use namehash in field 8 of
675         uids.  Show dates for creation (selfsig date), and expiration in
676         fields 6 and 7.
677
678         * trustdb.c (get_validity, get_validity_counts, update_validity):
679         Use new namehash function rather than hashing it locally.
680
681 2003-01-14  Werner Koch  <wk@gnupg.org>
682
683         * g10.c (add_group): Fixed group parsing to allow more than one
684         delimiter in a row and also allow tab as delimiter.
685
686 2003-01-12  David Shaw  <dshaw@jabberwocky.com>
687
688         * tdbio.c (tdbio_set_dbname): Fix assertion failure with
689         non-fully-qualified trustdb names.
690
691 2003-01-11  David Shaw  <dshaw@jabberwocky.com>
692
693         * trustdb.c (get_validity_info, get_ownertrust_info,
694         trust_letter): Simplify by returning a ? for error directly.
695
696         * keyedit.c (show_key_with_all_names): Use get_validity_string and
697         get_ownertrust_string to show full word versions of trust
698         (i.e. "full" instead of 'f').
699
700         * trustdb.h, trustdb.c (get_ownertrust_string,
701         get_validity_string): Same as get_ownertrust_info, and
702         get_validity_info, except returns a full string.
703
704         * trustdb.c (get_ownertrust_with_min): New.  Same as
705         'get_ownertrust' but takes the min_ownertrust value into account.
706
707 2003-01-10  David Shaw  <dshaw@jabberwocky.com>
708
709         * armor.c (armor_filter): Comment about PGP's end of line tab
710         problem.
711
712         * trustdb.h, trustdb.c (trust_letter): Make
713         static. (get_ownertrust_info, get_validity_info): Don't mask the
714         trust level twice.
715
716         * trustdb.h, gpgv.c, trustdb.c (get_validity, get_validity_info),
717         keylist.c (list_keyblock_colon), keyedit.c
718         (show_key_with_all_names_colon, menu_revuid): Pass a user ID in
719         rather than a namehash, so we only have to do the hashing in one
720         place.
721
722         * packet.h, pkclist.c (build_pk_list), free-packet.c
723         (release_public_key_parts): Remove unused namehash element for
724         public keys.
725
726 2003-01-07  David Shaw  <dshaw@jabberwocky.com>
727
728         * keygen.c (keygen_set_std_prefs): Warn when setting an IDEA
729         preference when IDEA is not available.
730
731 2003-01-06  David Shaw  <dshaw@jabberwocky.com>
732
733         * trustdb.c (get_validity_info): 'd' for disabled is not a
734         validity value any more.
735
736         * packet.h, tdbio.h, tdbio.c (tdbio_read_record,
737         tdbio_write_record), trustdb.c (update_validity): Store temporary
738         full & marginal counts in the trustdb.
739         (clear_validity, get_validity_counts): Return and clear temp
740         counts.
741         (store_validation_status): Keep track of which keyids have been
742         stored.
743         (validate_one_keyblock, validate_key_list): Use per-uid copies of
744         the full & marginal counts so they can be recalled for multiple
745         levels.
746         (validate_keys): Only use unused keys for each new round.
747         (reset_unconnected_keys): Rename to reset_trust_records, and only
748         skip specifically excluded records.
749
750         * keylist.c (print_capabilities): Show 'D' for disabled keys in
751         capabilities section.
752
753         * trustdb.c (is_disabled): Remove incorrect comment.
754
755 2003-01-03  David Shaw  <dshaw@jabberwocky.com>
756
757         * import.c (import_one): Only do the work to create the status
758         display for interactive import if status is enabled.
759
760         * keyring.c (keyring_search): skipfnc didn't work properly with
761         non-keyid searches.  Noted by Stefan Bellon.
762
763         * getkey.c (merge_selfsigs_main): Remove some unused code and make
764         sure that the pk selfsigversion member accounts for 1F direct
765         sigs.
766
767 2003-01-02  Werner Koch  <wk@gnupg.org>
768
769         * keydb.c (keydb_add_resource): Don't assume that try_make_homedir
770         terminates but check again for the existence of the directory and
771         continue then.
772         * openfile.c (copy_options_file): Print a warning if the skeleton
773         file has active options.
774
775 2002-12-29  David Shaw  <dshaw@jabberwocky.com>
776
777         * getkey.c (merge_selfsigs_main), main.h, sig-check.c
778         (check_key_signature2): Pass the ultimately trusted pk directly to
779         check_key_signature2 to avoid going through the key selection
780         mechanism.  This prevents a deadly embrace when two keys without
781         selfsigs each sign the other.
782
783 2002-12-27  David Shaw  <dshaw@jabberwocky.com>
784
785         * keyserver.c (keyserver_refresh): Don't print the "refreshing..."
786         line if there are no keys to refresh or if there is no keyserver
787         set.
788
789         * getkey.c (merge_selfsigs_main): Any valid user ID should make a
790         key valid, not just the last one.  This also fixes Debian bug
791         #174276.
792
793 2002-12-27  Stefan Bellon  <sbellon@sbellon.de>
794
795         * import.c (print_import_check): Changed int to size_t.
796
797 2002-12-27  David Shaw  <dshaw@jabberwocky.com>
798
799         * keyedit.c (keyedit_menu, menu_revuid): Add "revuid" feature to
800         revoke a user ID.  This is the same as issuing a revocation for
801         the self-signature, but a much simpler interface to do it.
802
803 2002-12-26  David Shaw  <dshaw@jabberwocky.com>
804
805         * keydb.h, getkey.c (key_byname): Flag to enable or disable
806         including disabled keys.  Keys specified via keyid (i.e. 0x...)
807         are always included.
808
809         * getkey.c (get_pubkey_byname, get_seckey_byname2,
810         get_seckey_bynames), keyedit.c (keyedit_menu, menu_addrevoker):
811         Include disabled keys in these functions.
812
813         * pkclist.c (build_pk_list): Do not include disabled keys for -r
814         or the key prompt.  Do include disabled keys for the default key
815         and --encrypt-to.
816
817         * trustdb.h, trustdb.c (is_disabled): New skipfnc for skipping
818         disabled keys.
819
820         * gpgv.c (is_disabled): Stub.
821
822         * keygen.c (keygen_add_key_expire): Properly handle updating a key
823         expiration to a no-expiration value.
824
825         * keyedit.c (enable_disable_key): Comment.
826
827         * import.c (import_one): When in interactive mode and --verbose,
828         don't repeat some key information twice.
829
830 2002-12-22  Timo Schulz  <ts@winpt.org>
831         
832         * import.c (print_import_check): New.
833         (import_one): Use it here.
834         Use merge_keys_and_selfsig in the interactive mode to avoid
835         wrong key information.
836         * status.h: Add new status code.
837         * status.c: Ditto.
838         
839 2002-12-13  David Shaw  <dshaw@jabberwocky.com>
840
841         * pkclist.c (do_we_trust): Tweak language to refer to the "named
842         user" rather than "owner".  Noted by Stefan Bellon.
843
844         * trustdb.h, trustdb.c (trustdb_pending_check): New function to
845         check if the trustdb needs a check.
846
847         * import.c (import_keys_internal): Used here so we don't rebuild
848         the trustdb if it is still clean.
849         (import_one, chk_self_sigs): Only mark trustdb dirty if the key
850         that is being imported has any sigs other than self-sigs.
851         Suggested by Adrian von Bidder.
852
853         * options.skel: Include the required '=' sign in the sample
854         'group' option.  Noted by Stefan Bellon.
855
856         * import.c (chk_self_sigs): Don't try and check a subkey as if it
857         was a signature.
858
859 2002-12-11  David Shaw  <dshaw@jabberwocky.com>
860
861         * tdbio.c (tdbio_read_record, tdbio_write_record): Compact the
862         RECTYPE_TRUST records a bit.
863
864         * g10.c (main): Comment out --list-trust-path until it can be
865         implemented.
866
867         * import.c (import_one): Warn when importing an Elgamal primary
868         that this may take some time (to verify self-sigs).
869         (chk_self_sigs): Try and cache all self-sigs so the keyblock is
870         written to the keyring with a good rich cache.
871
872         * keygen.c (ask_algo): Make the Elgamal sign+encrypt warning
873         stronger, and remove the RSA sign+encrypt warning.
874
875 2002-12-06  Stefan Bellon  <sbellon@sbellon.de>
876
877         * options.h: Fixed typo (mangle_dos_names instead of
878         mangle_dos_filenames).
879
880 2002-12-05  Werner Koch  <wk@gnupg.org>
881
882         * g10.c: New options --[no-]mangle-dos-filenames.
883         * options.h (opt): Added mangle-dos-filenames.
884         * openfile.c (open_outfile) [USE_ONLY_8DOT3]: Truncate the
885         filename only when this option is set; this is the default.
886
887 2002-12-04  David Shaw  <dshaw@jabberwocky.com>
888
889         * main.h, keyedit.c, keygen.c: Back out previous (2002-12-01)
890         change.  Minimal isn't always best.
891
892         * sign.c (update_keysig_packet): Use the current time rather then
893         a modification of the original signature time.  Make sure that
894         this doesn't cause a time warp.
895
896         * keygen.c (keygen_add_key_expire): Properly handle a key
897         expiration date in the past (use a duration of 0).
898
899         * keyedit.c (menu_expire): Use update_keysig_packet so any sig
900         subpackets are maintained during the update.
901
902         * build-packet.c (build_sig_subpkt): Mark sig expired or unexpired
903         when the sig expiration subpacket is added.
904         (build_sig_subpkt_from_sig): Handle making an expiration subpacket
905         from a sig that has already expired (use a duration of 0).
906
907         * packet.h, sign.c (update_keysig_packet), keyedit.c
908         (menu_set_primary_uid, menu_set_preferences): Add ability to issue
909         0x18 subkey binding sigs to update_keysig_packet and change all
910         callers.
911
912         * trustdb.c (validate_keys): Show trust parameters when building
913         the trustdb, and make sure that the version record update was
914         successful.
915         (init_trustdb): If the current parameters aren't what was used for
916         building the trustdb, the trustdb is invalid.
917
918         * tbio.c (tdbio_db_matches_options): Update to work with new
919         trustdbs.
920
921 2002-12-03  David Shaw  <dshaw@jabberwocky.com>
922
923         * tdbio.h, tdbio.c (tdbio_read_record, tdbio_write_record): Store
924         trust model in the trustdb version record.
925         (tdbio_update_version_record): New function to update version
926         record values during a trustdb check or update.
927         (tdbio_dump_record): Show trust model in dump.
928
929         * trustdb.c (validate_keys): Call tdbio_update_version_record on
930         success so that the correct options are stored in the trustdb.
931
932         * options.h: rearrange trust models so that CLASSIC is 0 and
933         OPENPGP is 1.
934
935         * options.h, g10.c (main), encode.c (write_pubkey_enc_from_list),
936         pkclist.c (algo_available), revoke.c (gen_revoke): Add --pgp8
937         mode.  This is basically identical to --pgp7 in all ways except
938         that signing subkeys, v4 data sigs (including expiration), and SK
939         comments are allowed.
940
941         * getkey.c (finish_lookup): Comment.
942
943         * main.h, keylist.c (reorder_keyblock), keyedit.c (keyedit_menu):
944         Reorder user ID display in the --edit-key menu to match that of
945         the --list-keys display.
946
947         * g10.c (add_notation_data): Fix initialization.
948
949 2002-12-01  David Shaw  <dshaw@jabberwocky.com>
950
951         * keyedit.c (menu_expire): Don't lose key flags when changing the
952         expiration date of a subkey.  This is not the most optimal
953         solution, but it is minimal change on the stable branch.
954
955         * main.h, keygen.c (do_copy_key_flags): New function to copy key
956         flags, if any, from one sig to another.
957         (do_add_key_expire): New function to add key expiration to a sig.
958         (keygen_copy_flags_add_expire): New version of
959         keygen_add_key_expire that also copies key flags.
960         (keygen_add_key_flags_and_expire): Use do_add_key_expire.
961
962         * import.c (fix_hkp_corruption): Comment.
963
964 2002-11-25  Stefan Bellon  <sbellon@sbellon.de>
965
966         * plaintext.c (handle_plaintext) [__riscos__]: If nooutput is set,
967         no filetype is needed obviously.
968
969 2002-11-24  David Shaw  <dshaw@jabberwocky.com>
970
971         * main.h, misc.c (default_cipher_algo, default_compress_algo):
972         New.  Return the default algorithm by trying
973         --cipher-algo/--compress-algo, then the first item in the pref
974         list, then s2k-cipher-algo or ZIP.
975
976         * sign.c (sign_file, sign_symencrypt_file), encode.c
977         (encode_simple, encode_crypt): Call default_cipher_algo and
978         default_compress_algo to get algorithms.
979
980         * g10.c (main): Allow pref selection for compress algo with
981         --openpgp.
982
983         * mainproc.c (proc_encrypted): Use --s2k-digest-algo for
984         passphrase mangling rather than --digest-algo.
985
986         * sign.c (hash_for): If --digest-algo is not set, but
987         --personal-digest-preferences is, then use the first hash
988         algorithm in the personal list.  If the signing algorithm is DSA,
989         then use the first 160-bit hash algorithm in the personal list.
990         If --pgp2 is set and it's a v3 RSA key, use MD5.
991
992         * g10.c (main), keydb.c (keydb_add_resource,
993         keydb_locate_writable): Rename --default-keyring as
994         --primary-keyring.  Stefan wins the naming contest.
995
996 2002-11-23  David Shaw  <dshaw@jabberwocky.com>
997
998         * g10.c (add_notation_data): Disallow notation names that do not
999         contain a '@', unless --expert is set.  This is to help prevent
1000         people from polluting the (as yet unused) IETF namespace.
1001
1002         * main.h: Comments about default algorithms.
1003
1004         * photoid.c (image_type_to_string): Comments about 3-letter file
1005         extensions.
1006
1007         * encode.c (encode_simple), passphrase.c (passphrase_to_dek),
1008         sign.c (sign_symencrypt_file): Use --s2k-digest-algo for
1009         passphrase mangling rather than --digest-algo.
1010
1011 2002-11-21  David Shaw  <dshaw@jabberwocky.com>
1012
1013         * keygen.c (keygen_set_std_prefs): Properly handle an empty
1014         preference string.
1015
1016         * misc.c (string_to_compress_algo): "none" is a bad choice since
1017         it conflicts with the "none" in setpref.
1018
1019 2002-11-14  David Shaw  <dshaw@jabberwocky.com>
1020
1021         * g10.c (main): Allow compression algorithm names as the argument
1022         to --compress-algo.  The old algorithm names still work for
1023         backwards compatibility.
1024
1025         * misc.c (string_to_compress_algo): Allow "none" as an alias for
1026         "uncompressed".
1027
1028 2002-11-13  Stefan Bellon  <sbellon@sbellon.de>
1029
1030         * getkey.c (get_pubkey_byfprint_fast): Fixed type incompatibility,
1031         was unsigned char instead of byte.
1032
1033 2002-11-13  David Shaw  <dshaw@jabberwocky.com>
1034
1035         * encode.c (encode_simple): Make sure that files larger than about
1036         4G use partial length encoding.  This is required because OpenPGP
1037         allows only for 32 bit length fields.  From Werner on stable
1038         branch.
1039
1040         * getkey.c (get_pubkey_direct): Renamed to...
1041         (get_pubkey_fast): this and made extern.
1042         (get_pubkey_byfprint_fast): New.  From Werner on stable branch.
1043
1044         * keydb.h, import.c (import_one): Use get_pubkey_fast instead of
1045         get_pubkey.  We don't need a merged key and actually this might
1046         lead to recursions.
1047         (revocation_present): Likewise for search by fingerprint.  From
1048         Werner on stable branch.
1049
1050         * g10.c (main): Try to create the trustdb even for non-colon-mode
1051         list-key operations.  This is required because getkey needs to
1052         know whether a a key is ultimately trusted.  From Werner on stable
1053         branch.
1054         
1055         * exec.c [__CYGWIN32__]: Keep cygwin separate from Mingw32;
1056         we don't need it here as it behaves more like a Posix system.
1057         From Werner on stable branch.
1058
1059         * passphrase.c (agent_get_passphrase): Ditto.  From Werner on
1060         stable branch.
1061
1062         * tdbio.c (MY_O_BINARY): Need binary mode with Cygwin.  From
1063         Werner on stable branch.
1064
1065         * g10.c, gpgv.c (main) [__CYGWIN32__]: Don't get the homedir from
1066         the registry.  From Werner on stable branch.
1067         
1068         * keyedit.c (show_key_with_all_names_colon): Make --with-colons
1069         --edit display match the validity and trust of --with-colons
1070         --list-keys.
1071
1072         * passphrase.c (agent_send_all_options): Fix compile warning.
1073
1074         * keylist.c (list_keyblock_colon): Validity for subkeys should
1075         match that of the primary key, and not that of the last user ID.
1076
1077         * getkey.c (merge_selfsigs): Revoked/expired/invalid primary keys
1078         carry these facts onto all their subkeys, but only after the
1079         subkey has a chance to be marked valid.  This is to fix an
1080         incorrect "invalid public key" error verifying a signature made by
1081         a revoked signing subkey, with a valid unrevoked primary key.
1082
1083 2002-11-09  Werner Koch  <wk@gnupg.org>
1084
1085         * passphrase.c (agent_send_all_options): Use tty_get_ttyname to
1086         get the default ttyname.
1087
1088 2002-11-07  David Shaw  <dshaw@jabberwocky.com>
1089
1090         * keyring.h, keyring.c (keyring_register_filename): Return the
1091         pointer if a given keyring is registered twice.
1092
1093         * keydb.h, keydb.c (keydb_add_resource): Use flags to indicate a
1094         default keyring.
1095         (keydb_locate_writable): Prefer the default keyring if possible.
1096
1097         * g10.c (main): Add --default-keyring option.
1098
1099 2002-11-06  David Shaw  <dshaw@jabberwocky.com>
1100
1101         * options.h, g10.c (main), trustdb.c (ask_ownertrust): Add
1102         --force-ownertrust option for debugging purposes.  This allows
1103         setting a whole keyring to a given trust during an
1104         --update-trustdb.  Not for normal use - it's just easier than
1105         hitting "4" all the time to test a large trustdb.
1106
1107         * pubkey-enc.c (get_session_key): With hidden recipients or try a
1108         given passphrase against all secret keys rather than trying all
1109         secret keys in turn.  Don't if --try-all-secrets or --status-fd is
1110         enabled.
1111
1112         * passphrase.c (passphrase_to_dek): Mode 1 means do a regular
1113         passphrase query, but don't prompt with the key info.
1114
1115         * seckey-cert.c (do_check, check_secret_key): A negative ask count
1116         means to enable passphrase mode 1.
1117
1118         * keydb.h, getkey.c (enum_secret_keys): Add flag to include
1119         secret-parts-missing keys (or not) in the list.
1120
1121 2002-11-05  David Shaw  <dshaw@jabberwocky.com>
1122
1123         * keyserver.c (keyserver_search_prompt): When --with-colons is
1124         enabled, don't try and fit the search output to the screen size -
1125         just dump the whole list.
1126
1127 2002-11-04  David Shaw  <dshaw@jabberwocky.com>
1128
1129         * keyserver.c (keyserver_search_prompt): When --with-colons is
1130         enabled, just dump the raw keyserver protocol to stdout and don't
1131         print the menu.
1132
1133         * keyserver.c (show_prompt): Don't show a prompt when command-fd
1134         is being used.
1135
1136         * trustdb.c (trust_model_string, check_trustdb, update_trustdb,
1137         validate_one_keyblock): It's not clear what a trustdb rebuild or
1138         check means with a trust model other than "classic" or "openpgp",
1139         so disallow this.
1140
1141 2002-11-03  David Shaw  <dshaw@jabberwocky.com>
1142
1143         * options.h, g10.c (main): Add --trust-model option.  Current
1144         models are "openpgp" which is classic+trustsigs, "classic" which
1145         is classic only, and "always" which is the same as the current
1146         option --always-trust (which still works).  Default is "openpgp".
1147
1148         * trustdb.c (validate_one_keyblock): Use "openpgp" trust model to
1149         enable trust sigs.
1150
1151         * gpgv.c (main), mainproc.c (check_sig_and_print), pkclist.c
1152         (do_we_trust, do_we_trust_pre, check_signatures_trust): Use new
1153         --trust-model option in place of --always-trust.
1154
1155         * keyedit.c (sign_mk_attrib, trustsig_prompt, sign_uids,
1156         keyedit_menu): Prompt for and create a trust signature with
1157         "tsign".  This is functional, but needs better UI text.
1158
1159         * build-packet.c (build_sig_subpkt): Able to build trust and
1160         regexp subpackets.
1161
1162         * pkclist.c (do_edit_ownertrust): Comment.
1163
1164 2002-11-02  David Shaw  <dshaw@jabberwocky.com>
1165
1166         * keygen.c (set_one_pref, keygen_set_std_prefs): Allow using the
1167         full algorithm name (CAST5, SHA1) rather than the short form (S3,
1168         H2).
1169
1170         * main.h, keygen.c (keygen_get_std_prefs), keyedit.c
1171         (keyedit_menu): Return and use a fake uid packet rather than a
1172         string since we already have a nice parser/printer in
1173         keyedit.c:show_prefs.
1174
1175         * main.h, misc.c (string_to_compress_algo): New.
1176
1177 2002-11-01  David Shaw  <dshaw@jabberwocky.com>
1178
1179         * g10.c (main): Add --no-throw-keyid.
1180
1181         * keydb.h, encode.c (write_pubkey_enc_from_list), g10.c (main),
1182         pkclist.c (build_pk_list): Add --hidden-recipient (-R) and
1183         --hidden-encrypt-to, which do a single-user variation on
1184         --throw-keyid.  The "hide this key" flag is carried in bit 0 of
1185         the pk_list flags field.
1186
1187         * keyserver.c (parse_keyrec): Fix shadowing warning.
1188
1189 2002-10-31  Stefan Bellon  <sbellon@sbellon.de>
1190
1191         * compress.c (init_compress) [__riscos__]: Use
1192         riscos_load_module() to load ZLib module.
1193
1194         * g10.c (main) [__riscos__]: Renames due to changes in riscos.c
1195         (e.g. prefixes all RISC OS specific functions with riscos_*).
1196         * photoid.c (show_photos) [__riscos__]: Likewise.
1197         * signal.c (got_fatal_signal) [__riscos__]: Likewise.
1198
1199         * trustdb.c (check_regexp) [__riscos__]: Branch to RISC OS RegEx
1200         handling.
1201
1202 2002-10-31  David Shaw  <dshaw@jabberwocky.com>
1203
1204         * build-packet.c (do_plaintext), encode.c (encode_sesskey,
1205         encode_simple, encode_crypt), sign.c (write_plaintext_packet): Use
1206         wipememory() instead of memset() to wipe sensitive memory as the
1207         memset() might be optimized away.
1208
1209 2002-10-30  David Shaw  <dshaw@jabberwocky.com>
1210
1211         * trustdb.c (check_regexp): Modern regexps require REG_EXTENDED.
1212
1213 2002-10-29  David Shaw  <dshaw@jabberwocky.com>
1214
1215         * packet.h, trustdb.h, trustdb.c (trust_string): New.  Return a
1216         string like "fully trusted", "marginally trusted", etc.
1217         (get_min_ownertrust): New.  Return minimum ownertrust.
1218         (update_min_ownertrust): New.  Set minimum ownertrust.
1219         (check_regexp): New.  Check a regular epression against a user ID.
1220         (ask_ownertrust): Allow specifying a minimum value.
1221         (get_ownertrust_info): Follow the minimum ownertrust when
1222         returning a letter.
1223         (clear_validity): Remove minimum ownertrust when a key becomes
1224         invalid.
1225         (release_key_items): Release regexp along with the rest of the
1226         info.
1227         (validate_one_keyblock, validate_keys): Build a trust sig chain
1228         while validating.  Call check_regexp for regexps.  Use the minimum
1229         ownertrust if the user does not specify a genuine ownertrust.
1230
1231         * pkclist.c (do_edit_ownertrust): Only allow user to select a
1232         trust level greater than the minimum value.
1233
1234         * parse-packet.c (can_handle_critical): Can handle critical trust
1235         and regexp subpackets.
1236
1237         * trustdb.h, trustdb.c (clear_ownertrusts), delkey.c
1238         (do_delete_key), import.c (import_one): Rename clear_ownertrust to
1239         clear_ownertrusts and have it clear the min_ownertrust value as
1240         well.
1241
1242         * keylist.c (list_keyblock_print): Indent uid to match pub and
1243         sig.
1244
1245         * keyedit.c (print_and_check_one_sig, show_key_and_fingerprint,
1246         menu_addrevoker), keylist.c (list_keyblock_print,
1247         print_fingerprint): Show "T" or the trust depth for trust
1248         signatures, and add spaces to some strings to make room for it.
1249
1250         * packet.h, parse-packet.c (dump_sig_subpkt, parse_one_sig_subpkt,
1251         parse_signature): Parse trust signature values.
1252
1253         * tdbio.h, tdbio.c (tdbio_read_record, tdbio_write_record):
1254         Reserve a byte for the minimum ownertrust value (for use with
1255         trust signatures).
1256
1257 2002-10-29  Stefan Bellon  <sbellon@sbellon.de>
1258
1259         * build-packet.c (calc_plaintext, do_plaintext): Removed RISC OS
1260         specific filetype parts (it's now done in make_basename()).
1261
1262         * plaintext.c (handle_plaintext): Tidied up RISC OS specific
1263         filetype parts.
1264
1265         * encode.c (encode_simple, encode_crypt): Added argument to
1266         make_basename() call.
1267
1268         * sign.c (write_plaintext_packet): Added argument to
1269         make_basename() call.
1270
1271 2002-10-28  Stefan Bellon  <sbellon@sbellon.de>
1272
1273         * build-packet.c (calc_plaintext, do_plaintext): Added filetype
1274         handling for RISC OS' file types.
1275
1276         * plaintext.c (handle_plaintext) [__riscos__]: Added filetype
1277         handling for RISC OS' file types.
1278
1279 2002-10-23  David Shaw  <dshaw@jabberwocky.com>
1280
1281         * main.h, import.c (sec_to_pub_keyblock, import_secret_one,
1282         parse_import_options), g10.c (main): New import-option
1283         "convert-sk-to-pk" to convert a secret key into a public key
1284         during import.  It is on by default.
1285
1286 2002-10-23  Werner Koch  <wk@gnupg.org>
1287
1288         * pubkey-enc.c (get_it): Fix segv, test for revoked only when PK
1289         has been assigned.
1290
1291 2002-10-18  Timo Schulz  <ts@winpt.org>
1292
1293         * keylist.c: (print_pubkey_info): New.
1294         (print_seckey_info): New.
1295         * main.h: Prototypes for the new functions.       
1296         * delkey.c (do_delete_key): Use it here.
1297         * revoke.c (gen_desig_revoke): Ditto.
1298         
1299 2002-10-17  Werner Koch  <wk@gnupg.org>
1300
1301         * pkclist.c (do_edit_ownertrust): Show all user IDs.  This should
1302         be enhanced to also show the current trust level.  Suggested by
1303         Florian Weimer.
1304
1305 2002-10-17  David Shaw  <dshaw@jabberwocky.com>
1306
1307         * g10.c (main): Handle --strict and --no-strict from the command
1308         line before the options file is loaded.
1309
1310 2002-10-15  David Shaw  <dshaw@jabberwocky.com>
1311
1312         * g10.c (main): Disable --textmode when encrypting (symmetric or
1313         pk) in --pgp2 mode as PGP 2 can't handle the unknown length
1314         literal packet.  Reported by Michael Richardson.
1315
1316 2002-10-14  David Shaw  <dshaw@jabberwocky.com>
1317
1318         * keyserver-internal.h, keyserver.c (print_keyrec, parse_keyrec,
1319         show_prompt, keyserver_search_prompt, keyserver_spawn): Go to
1320         version 1 of the keyserver protocol.  This is a better design,
1321         similar to --with-colons, that allows for keys with multiple user
1322         IDs rather than using multiple keys.  It also matches the machine
1323         readable pksd format.  Also use a prettier --search-keys listing
1324         format that can fill different size windows (currently set at 24
1325         lines).
1326
1327 2002-10-12  Werner Koch  <wk@gnupg.org>
1328
1329         * keygen.c (print_status_key_created): New.
1330         (do_generate_keypair): Use it to print the fingerprint.
1331         (generate_subkeypair): Likewise.
1332
1333 2002-10-11  David Shaw  <dshaw@jabberwocky.com>
1334
1335         * keyedit.c (menu_addrevoker): Properly back out if the signature
1336         fails.  Also, do not allow appointing the same revoker twice, and
1337         report ALREADY_SIGNED if the user tries it.
1338
1339 2002-10-07  David Shaw  <dshaw@jabberwocky.com>
1340
1341         * import.c (import_keys_internal): Missed one s/inp/inp2/.
1342
1343         * keylist.c (print_capabilities): Properly indicate per-key
1344         capabilities of sign&encrypt primary keys that have
1345         secret-parts-missing (i.e. no capabilities at all)
1346
1347         * mainproc.c (symkey_decrypt_sesskey): Fix compiler warning.
1348
1349 2002-10-04  David Shaw  <dshaw@jabberwocky.com>
1350
1351         * getkey.c (get_pubkey_direct): Don't cache keys retrieved via
1352         this function as they may not have all their fields filled in.
1353
1354         * sig-check.c (signature_check2): Use new is_primary flag to check
1355         rather than comparing main_keyid with keyid as this still works in
1356         the case of a not fully filled in pk.
1357
1358 2002-10-04  Werner Koch  <wk@gnupg.org>
1359
1360         * import.c (import_keys_internal): s/inp/inp2/ to avoid shadowing
1361         warning.
1362
1363         * passphrase.c (agent_get_passphrase): Fixed signed/unsigned char
1364         problem in %-escaping.  Noted by Ingo Klöcker.
1365
1366 2002-10-03  David Shaw  <dshaw@jabberwocky.com>
1367
1368         * options.h, g10.c (main): Add --strict and --no-strict to switch
1369         the log_warning severity level from info to error.
1370
1371         * keylist.c (print_capabilities): Secret-parts-missing keys should
1372         show that fact in the capabilities, and only primary signing keys
1373         can certify other keys.
1374
1375         * packet.h, parse_packet.c (parse_key): Add is_primary flag for
1376         public keys (it already exists for secret keys).
1377
1378 2002-10-02  David Shaw  <dshaw@jabberwocky.com>
1379
1380         * import.c (import_secret_one): Check for an illegal (>110)
1381         protection cipher when importing a secret key.
1382
1383         * keylist.c (list_keyblock_print): Show a '#' for a
1384         secret-parts-missing key.
1385
1386         * parse_packet.c (parse_key): Some comments.
1387
1388         * revoke.c (gen_revoke): Remove some debugging code.
1389
1390         * trustdb.c (verify_own_keys): Make trusted-key a non-deprecated
1391         option again.
1392
1393         * seckey-cert.c (do_check): Don't give the IDEA warning unless the
1394         cipher in question is in fact IDEA.
1395
1396 2002-10-01  David Shaw  <dshaw@jabberwocky.com>
1397
1398         * import.c (import_one): Make sure that a newly imported key
1399         starts with a clean ownertrust.
1400
1401 2002-10-01  Werner Koch  <wk@gnupg.org>
1402
1403         * getkey.c (get_pubkey_direct): New.
1404         (merge_selfsigs_main): Use it here to look for an ultimately
1405         trusted key.  Using the full get_pubkey might lead to an
1406         infinitive recursion.
1407
1408 2002-09-29  David Shaw  <dshaw@jabberwocky.com>
1409
1410         * keyserver.c (parse_keyserver_uri): Force the keyserver URI
1411         scheme to lowercase to be case-insensitive.
1412
1413 2002-09-28  David Shaw  <dshaw@jabberwocky.com>
1414
1415         * export.c (do_export_stream): Comment.
1416
1417         * sig-check.c (check_key_signature2): Properly handle a
1418         non-designated revocation import.
1419
1420 2002-09-26  Werner Koch  <wk@gnupg.org>
1421
1422         * g10.c (set_homedir): New. Changed all direct assignments to use
1423         this.
1424         * gpgv.c (set_homedir): Ditto.
1425
1426 2002-09-25  David Shaw  <dshaw@jabberwocky.com>
1427
1428         * Makefile.am: Link gpg with EGDLIBS (i.e. NETLIBS) as EGD uses
1429         sockets.  Remove the old NETLIBS variable since the keyserver
1430         stuff is no longer internal.
1431
1432 2002-09-24  David Shaw  <dshaw@jabberwocky.com>
1433
1434         * import.c (import_keys_stream): Fix compiler type warning.
1435
1436         * keyring.c (keyring_rebuild_cache), sig-check.c
1437         (check_key_signature2), import.c (import, chk_self_sigs): Minor
1438         language cleanups.
1439
1440 2002-09-23  Stefan Bellon  <sbellon@sbellon.de>
1441
1442         * main.h: Introduced fast-import as import option. Removed
1443         fast as separate option from prototypes.
1444         * import.c (parse_import_options): Added fast-import option.
1445         (import_*): Removed fast as separate option.
1446         * g10.c (main): Added option fast-import, removed old fast
1447         as separate argument.
1448         * keyserver.c (keyserver_spawn): Removed old fast as separate
1449         argument.
1450
1451 2002-09-22  Stefan Bellon  <sbellon@sbellon.de>
1452
1453         * import.c (import_keys, import_keys_stream,
1454         import_keys_internal): Added trustdb update/check to key import if
1455         not fast-import and interactive set/no-auto-check-trustdb unset.
1456         Avoided function clone by introducing import_keys_internal.
1457
1458 2002-09-19  David Shaw  <dshaw@jabberwocky.com>
1459
1460         * keyserver.c (keyserver_spawn): Properly handle line truncation.
1461         Don't leak memory (~10-20 bytes) on searches.
1462         (keyserver_search_prompt): Cleanup.
1463
1464         * keylist.c (list_keyblock_colon): Show 1F direct key signatures
1465         in --with-colons listing.
1466
1467 2002-09-16  David Shaw  <dshaw@jabberwocky.com>
1468
1469         * keyedit.c (menu_addrevoker): The direct key signature for
1470         revocation keys must be at least v4 to carry the revocation key
1471         subpacket.  Add a PGP 2.x warning for revocation keys.
1472
1473 2002-09-14  David Shaw  <dshaw@jabberwocky.com>
1474
1475         * g10.c (check_permissions): Rearrange strings to make translating
1476         easier (don't incorporate string parts).
1477
1478         * keyedit.c (sign_uids): Make strings translatable.
1479
1480         * sig-check.c (check_key_signature2): Make string translatable.
1481
1482 2002-09-13  David Shaw  <dshaw@jabberwocky.com>
1483
1484         * getkey.c (check_revocation_keys): Move....
1485         * main.h, sig-check.c (check_revocation_keys): to here.  Also
1486         return the signature_check error code rather than 0/1 and cache
1487         the sig result.
1488
1489         * sig-check.c (check_key_signature2): Divert to
1490         check_revocation_keys if a revocation sig is made by someone other
1491         than the pk owner.
1492
1493         * getkey.c (merge_selfsigs_main): Tidy.
1494
1495 2002-09-13  Werner Koch  <wk@gnupg.org>
1496
1497         * g10.c (main) [__MINGW32__]: Activate oLoadExtension.
1498
1499 2002-09-12  David Shaw  <dshaw@jabberwocky.com>
1500
1501         * Makefile.am, hkp.c, hkp.h, keyserver.c (keyserver_work): Remove
1502         internal HKP support.
1503
1504         * keyserver.c (keyserver_spawn): Remove whitespace after keyserver
1505         commands.
1506
1507 2002-09-10  David Shaw  <dshaw@jabberwocky.com>
1508
1509         * exec.c (expand_args): Remove loop left over from earlier
1510         implementation.
1511         (exec_write): Missed one tick.
1512
1513 2002-09-10  Werner Koch  <wk@gnupg.org>
1514
1515         * g10.c, options.h: Removed option --emulate-checksum-bug.
1516         * misc.c (checksum_u16_nobug): Removed.
1517         (checksum_u16): Removed the bug emulation.
1518         (checksum_mpi): Ditto.
1519         (checksum_mpi_counted_nbits): Removed and replaced all calls
1520         with checksum_mpi.
1521
1522         * parse-packet.c (read_protected_v3_mpi): New.
1523         (parse_key): Use it here to store it as an opaque MPI.
1524         * seckey-cert.c (do_check): Changed the v3 unprotection to the new
1525         why to store these keys.
1526         (protect_secret_key): Likewise.
1527         * build-packet.c (do_secret_key): And changed the writing.
1528
1529         * tdbio.c (tdbio_set_dbname, open_db): Use new macro MY_O_BINARY
1530         to avoid silly ifdefs.
1531         (open_db): Fallback to RDONLY so that gpg may be used from a
1532         RO-medium.
1533
1534         * encode.c (encode_simple): Make sure we don't use an ESK packet
1535         when we don't have a salt in the S2K.
1536
1537         * misc.c (pct_expando) <case f>: Make sure that LEN is initialized.
1538
1539         * exec.c (exec_finish): Use ticks to denote filenames in messages.
1540         (make_tempdir, exec_write): Changed format of messages.
1541
1542         * keyserver.c (print_keyinfo): Release USERID in on error.
1543         (keyserver_work) [!DISABLE_KEYSERVER_HELPERS]: Exclude the unused
1544         code.
1545
1546 2002-09-09  Werner Koch  <wk@gnupg.org>
1547
1548         * parse-packet.c (make_attribute_uidname): Add new ar MAX_NAMELEN
1549         for sanity checks.  Changed both callers. Limit the size of an %s.
1550
1551         * options.skel: Comment lock-once out, so that this file does not
1552         change anything when copied to a new home directory.
1553         * openfile.c (try_make_homedir): Don't exit after copying the
1554         option skeleton.
1555
1556         * options.h: Don't use a comma when declaring variables over more
1557         than one line.
1558
1559         * mainproc.c (symkey_decrypt_sesskey): Check length of the session
1560         key.
1561
1562         * hkp.c (dehtmlize): Use ascii_tolower to protect against weird
1563         locales.  Cast the argument for isspace for the sake of broken
1564         HP/UXes.
1565         (parse_hkp_index): s/ascii_memcasecmp/ascii_strncasecmp/.
1566
1567         * g10.c: Removed option --emulate-3des-s2k-bug.
1568
1569         * passphrase.c (hash_passphrase): Was used here.
1570
1571         * export.c (parse_export_options)
1572         * keyserver.c (parse_keyserver_options)
1573         * import.c (parse_import_options)
1574         * g10.c (check_permissions): s/ascii_memcasecmp/ascii_strncasecmp/.
1575
1576 2002-09-09  David Shaw  <dshaw@jabberwocky.com>
1577
1578         * g10.c (add_group): Use '=' to separate group name from group
1579         members.  Use a better error message for when no = is found.
1580
1581         * hkp.c (hkp_export): Use CRLF in headers.
1582
1583 2002-09-03  David Shaw  <dshaw@jabberwocky.com>
1584
1585         * mainproc.c (print_pkenc_list): Don't increment the error counter
1586         when printing the list of keys a message was encrypted to.  This
1587         would make gpg give a non-zero exit code even for completely valid
1588         messages if the message was encrypted to more than one key that
1589         the user owned.
1590
1591 2002-09-02  Werner Koch  <wk@gnupg.org>
1592
1593         * g10.c (main): Try to set a default character set.  Print the
1594         used one in verbosity level 3.
1595         * gpgv.c (main): Try to set a default character set.
1596
1597         * status.c, status.h (STATUS_IMPORT_OK): New.
1598         * import.c (import_one,import_secret_one): Print new status.
1599
1600 2002-08-30  David Shaw  <dshaw@jabberwocky.com>
1601
1602         * pkclist.c (build_pk_list): Add new status code to indicate an
1603         untrusted user.  This (or a disabled key) fail with "unavailable
1604         pubkey" (G10ERR_UNU_PUBKEY).
1605
1606         * pkclist.c (build_pk_list): Fail if any recipient keys are
1607         unusable.
1608
1609         * options.skel: The PGP LDAP keyserver is back.  Use MIT keyserver
1610         as a sample rather than cryptnet as cryptnet does not support
1611         searching yet.
1612
1613         * keyedit.c (show_key_with_all_names): Fix error message
1614         (preferences are userid/selfsig and not key specific).
1615
1616 2002-08-30  Werner Koch  <wk@gnupg.org>
1617
1618         * pkclist.c (do_we_trust_pre): Changed the wording of a warning.
1619
1620         * encode.c (encode_simple,encode_crypt): Use new style CTB for
1621         compressssed packets when using MDC.  We need to do this so that
1622         concatenated messages are properly decrypted.  Old style
1623         compression assumes that it is the last packet; given that we
1624         can't determine the length in advance, the uncompressor does not
1625         know where to start.  Actually we should use the new CTB always
1626         but this would break PGP 2 compatibility.
1627
1628         * parse-packet.c (parse): Special treatment for new style CTB
1629         compressed packets.
1630
1631         * build-packet.c (do_mdc): Removed. Was not used.
1632         (do_encrypted_mdc): Count in the version number and the MDC packet.
1633
1634 2002-08-28  David Shaw  <dshaw@jabberwocky.com>
1635
1636         * sig-check.c (do_check_messages, do_check): Show keyid in error
1637         messages.
1638
1639         * keyserver.c (print_keyinfo): More readable key listings for
1640         --search-keys responses.
1641
1642 2002-08-26  David Shaw  <dshaw@jabberwocky.com>
1643
1644         * hkp.c (parse_hkp_index, dehtmlize): Move HTML functionality into
1645         new "dehtmlize" function.  Remove HTML before trying to parse each
1646         line from the keyserver.  If the keyserver provides key type
1647         information in the listing, use it.
1648
1649 2002-08-23  David Shaw  <dshaw@jabberwocky.com>
1650
1651         * sig-check.c (do_check, do_check_messages): Emit the usual sig
1652         warnings even for cached sigs.  This also serves to protect
1653         against missing a sig expiring while cached.
1654
1655         * getkey.c (merge_selfsigs_main): Don't check UID self-sigs twice.
1656
1657 2002-08-22  David Shaw  <dshaw@jabberwocky.com>
1658
1659         * import.c (clean_subkeys, chk_self_sigs): Merge clean_subkeys
1660         into chk_self_sigs.  This improves efficiency as the same
1661         signatures are not checked multiple times.  Clarify when a subkey
1662         is revoked (any revocation signature, even if it is dated before
1663         the binding signature).
1664
1665         * getkey.c (merge_selfsigs_subkey): Subkey revocation comments.
1666
1667         * keylist.c (list_one): Stats are only for public key listings.
1668
1669         * g10.c (main), options.skel: Default should be include-revoked
1670         for keyserver operations.
1671
1672 2002-08-21  Werner Koch  <wk@gnupg.org>
1673
1674         * import.c (import_print_stats): Print new non_imported counter
1675         which is currently not used because we terminate on errors.
1676
1677 2002-08-20  David Shaw  <dshaw@jabberwocky.com>
1678
1679         * options.skel: Document no-include-attributes for
1680         keyserver-options.
1681
1682         * keylist.c, keyedit.c, keyserver.c, sign.c: Some TODOs and
1683         comments.
1684
1685         * export.c (do_export_stream): Fix noop bug in exporting sensitive
1686         revocation keys.
1687
1688         * pkclist.c (do_edit_ownertrust): Comment out the option for
1689         showing trust paths until it can be implemented.
1690
1691 2002-08-19  Werner Koch  <wk@gnupg.org>
1692
1693         * getkey.c (get_user_id_native): Renamed to ..
1694         (get_user_id_printable): this.  Filter out all dangerous
1695         characters.  Checked all usages.
1696         (get_user_id_string_native): Renamed to..
1697         (get_user_id_string_printable): this.  Filter out all dangerous
1698         characters.  Checked all usages.
1699         * keyedit.c (show_basic_key_info): New.
1700         * keylist.c (print_fingerprint): New mode 3.
1701         * import.c (import_one): Use new function to display the user ID.
1702
1703 2002-08-16  Timo Schulz  <ts@winpt.org>
1704
1705         * g10.c (main): Enable opt.interactive.
1706
1707         * import.c (import_one): Ask the user if the key shall be
1708         imported when the interactive mode is used. Useful to extract
1709         selected keys from a file.
1710         
1711 2002-08-16  Werner Koch  <wk@gnupg.org>
1712
1713         * seckey-cert.c: Workaround to allow decryption of v3 keys created
1714         with a bug in the mpi_get_secure_buffer.
1715
1716 2002-08-14  David Shaw  <dshaw@jabberwocky.com>
1717
1718         * hkp.c (parse_hkp_index): Properly handle really large keys
1719         (5 digit key length) in HKP searches.
1720
1721 2002-08-13  David Shaw  <dshaw@jabberwocky.com>
1722
1723         * encode.c (encode_simple): Fix problem with using compression
1724         algo 2 and symmetric compressed files.
1725
1726         * encode.c (encode_simple, encode_crypt): If we are not using a
1727         MDC, compress even if a file is already compressed.  This is to
1728         help against the chosen ciphertext attack.
1729
1730         * pkclist.c (select_algo_from_prefs): Fix requested algorithm bug
1731         so the request succeeds even if the requested algorithm is not the
1732         first found.
1733
1734         * cipher.c (write_header), encode.c (use_mdc, encode_simple,
1735         encode_crypt, encrypt_filter), g10.c (main): Be more eager to use
1736         a MDC.  We use a MDC if the keys directly support it, if the keys
1737         list AES (any) or TWOFISH anywhere in the prefs, or if the cipher
1738         chosen does not have a 64 bit blocksize.
1739
1740 2002-08-08  David Shaw  <dshaw@jabberwocky.com>
1741
1742         * options.skel: Some language tweaks, and remove the
1743         load-extension section for random gatherers.
1744
1745         * keyring.c (create_tmp_file, rename_tmp_file): Create tmp files
1746         with user-only permissions, but restore the original permissions
1747         if the user has something special set.
1748
1749         * openfile.c (copy_options_file): Create new options file
1750         (gpg.conf) with user-only permissions.
1751
1752         * keydb.c (keydb_add_resource): Create new keyrings with user-only
1753         permissions.
1754
1755         * tdbio.c (tdbio_set_dbname): Create new trustdbs with user-only
1756         permissions.
1757
1758 2002-08-07  David Shaw  <dshaw@jabberwocky.com>
1759
1760         * sig-check.c (signature_check2): Sanity check that the md has a
1761         context for the hash that the sig is expecting.  This can happen
1762         if a onepass sig header does not match the actual sig, and also if
1763         the clearsign "Hash:" header is missing or does not match the
1764         actual sig.
1765
1766         * keyedit.c (menu_revsig): Properly show a uid is revoked without
1767         restarting gpg.  This is Debian bug 124219, though their supplied
1768         patch will not do the right thing.
1769
1770         * main.h, tdbio.c (tdbio_set_dbname), misc.c (removed
1771         check_permissions), keydb.c (keydb_add_resource), g10.c (main,
1772         check_permissions): Significant reworking of the permission check
1773         mechanism.  The new behavior is to check everything in the homedir
1774         by checking the homedir itself.  If the user wants to put
1775         (possibly shared) keyrings outside the homedir, they are not
1776         checked.  The options file and any extension files are checked
1777         wherever they are, as well as their enclosing directories.  This
1778         is Debian bug 147760.
1779         
1780 2002-08-06  Stefan Bellon  <sbellon@sbellon.de>
1781
1782         * g10.c (main): Use of EXTSEP_S in new gpg.conf string.
1783         * openfile.c (copy_options_file): Ditto.
1784
1785 2002-08-06  David Shaw  <dshaw@jabberwocky.com>
1786
1787         * options.h, g10.c (main), mainproc.c (proc_encrypted):
1788         --ignore-mdc-error option to turn a MDC check error into a
1789         warning.
1790
1791         * encode.c (encode_crypt), g10.c (main), sign.c (sign_file,
1792         clearsign_file): Use the same --pgpX warning string everywhere to
1793         ease translations.
1794
1795         * encode.c (write_pubkey_enc_from_list): Warn when using
1796         --throw-keyid with --pgpX.  Noted by Vedaal Nistar.
1797
1798         * revoke.c (export_minimal_pk, gen_desig_revoke, gen_revoke):
1799         Export a minimal pk along with the revocation cert when in --pgpX
1800         mode so that PGP can import it.
1801
1802 2002-08-06  Werner Koch  <wk@gnupg.org>
1803
1804         * options.skel: Changed comments.
1805
1806         * g10.c (main): Try to use "gpg.conf" as default option file.
1807         * openfile.c (copy_options_file): Changed name of created file.
1808
1809 2002-08-02  Werner Koch  <wk@gnupg.org>
1810
1811         * Makefile.am (LDFLAGS): Removed DYNLINK_LDFLAGS.
1812
1813 2002-07-30  David Shaw  <dshaw@jabberwocky.com>
1814
1815         * options.h, g10.c (main), mainproc.c (proc_encrypted): Return a
1816         decryption failed error if a MDC does not verify.  Warn if a MDC
1817         is not present (can disable via --no-mdc-warning).
1818
1819         * exec.c (exec_write), g10.c (main), keyserver.c
1820         (keyserver_spawn): Use new DISABLE_KEYSERVER_PATH rather than
1821         FIXED_EXEC_PATH.
1822
1823 2002-07-28  David Shaw  <dshaw@jabberwocky.com>
1824
1825         * sig-check.c (do_check): Properly validate v4 sigs with no hashed
1826         section at all.
1827
1828 2002-07-25  Werner Koch  <wk@gnupg.org>
1829
1830         * delkey.c (do_delete_key): Always allow to delete a key in batch mode
1831         when specified by fingerprint.  Suggested by Enzo Michelangeli.
1832
1833 2002-07-25  David Shaw  <dshaw@jabberwocky.com>
1834
1835         * keyedit.c (menu_revsig): Change "revsig" to honor selected uids
1836         so the user can revoke sigs from particular uids only.
1837
1838         * keylist.c (list_keyblock_print): Don't display expired uids in
1839         --list-keys unless -v and not --list-sigs (just like revoked
1840         uids).
1841
1842         * exec.c, export.c, import.c, keyedit.c, keyserver.c, misc.c:
1843         "Warning" -> "WARNING"
1844
1845 2002-07-24  David Shaw  <dshaw@jabberwocky.com>
1846
1847         * main.h, import.c (parse_import_options, fix_hkp_corruption,
1848         import_one, delete_inv_parts), g10.c (main): New import-option
1849         "repair-hkp-subkey-bug", which repairs as much as possible the HKP
1850         mangling multiple subkeys bug.  It is on by default for keyserver
1851         receives, and off by default for regular --import.
1852
1853         * main.h, import.c (import, import_one, delete_inv_parts), hkp.c
1854         (hkp_ask_import), keyserver.c (keyserver_spawn): Use keyserver
1855         import options when doing keyserver receives.
1856
1857         * options.h, exec.h, exec.c (set_exec_path, exec_write), g10.c
1858         (main), keyserver.c (keyserver_spawn): If the user does not use
1859         "exec-path", completely replace $PATH with GNUPG_LIBEXECDIR before
1860         calling the keyserver helper.  If the user does use "exec-path",
1861         append GNUPG_LIBEXECDIR after the specified path.
1862
1863 2002-07-23  David Shaw  <dshaw@jabberwocky.com>
1864
1865         * import.c (parse_import_options), export.c
1866         (parse_export_options): Fix offset problem with reversed ("no-")
1867         meanings.
1868
1869         * import.c (delete_inv_parts): Discard subkey signatures (0x18 and
1870         0x28) if found in the userid section of the key.
1871
1872         * sig-check.c (signature_check2): Signatures made by invalid
1873         subkeys (bad/missing binding sig) are also invalid.
1874
1875         * keylist.c (print_fingerprint): Show the primary as well as the
1876         secondary key fingerprint in modes 1 & 2.
1877
1878 2002-07-22  David Shaw  <dshaw@jabberwocky.com>
1879
1880         * options.h, main.h, g10.c (main), import.c
1881         (parse_import_options, delete_inv_parts), keyserver.c
1882         (parse_keyserver_options): add new --import-options option.  The
1883         only current flag is "allow-local-sigs".
1884
1885         * g10.c (main): Don't disable MDC in pgp7 mode.
1886
1887         * options.h, g10.c (main), keyserver.c (parse_keyserver_options):
1888         Remove old keyserver-option include-attributes now that there is
1889         an export-option for the same thing.
1890
1891         * options.h, main.h, export.c (parse_export_options,
1892         do_export_stream), g10.c (main): add new --export-options option.
1893         Current flags are "include-non-rfc", "include-local-sigs",
1894         "include-attributes", and "include-sensitive-revkeys".
1895
1896         * options.h, hkp.c (hkp_export), keyserver.c
1897         (parse_keyserver_options, keyserver_spawn): try passing unknown
1898         keyserver options to export options, and if successful, use them
1899         when doing a keyserver --send-key.
1900
1901         * build-packet.c (build_sig_subpkt): We do not generate
1902         SIGSUBPKT_PRIV_VERIFY_CACHE anymore.
1903
1904         * revoke.c (gen_desig_revoke): Lots more comments about including
1905         sensitive revkeys along with the revocation sig itself.
1906
1907         * keyserver.c (parse_keyserver_options): Simpler implementation
1908         that can skip one pass over the options.
1909
1910 2002-07-18  David Shaw  <dshaw@jabberwocky.com>
1911
1912         * keyedit.c (keyedit_menu, menu_addrevoker): Allow specifying
1913         "sensitive" as an argument to an addrevoker command.  This sets
1914         the 0x40 sensitive revoker flag.
1915
1916         * revoke.c (gen_desig_revoke): When generating a designated
1917         revocation, include the direct key sig that contains the
1918         designated revoker subpacket.  This allows sensitive designated
1919         revocation subpackets to be exported.  Also indicate which
1920         revokers are sensitive in the first place.
1921
1922 2002-07-17  David Shaw  <dshaw@jabberwocky.com>
1923
1924         * keyedit.c (show_key_with_all_names_colon): The 0x40 class bit in
1925         a designated revoker means "sensitive", not "local".  It's
1926         exportable under the right circumstances.
1927
1928         * main.h, options.h, export.c (do_export_stream), g10.c (main),
1929         hkp.c (hkp_export), keyserver.c (keyserver_spawn: Add a flag to
1930         skip attribute packets and their signatures while exporting.  This
1931         is to accomodate keyservers (pksd again) that choke on attributes.
1932         Use keyserver-option "include-attributes" to control it.  This
1933         defaults to ON (i.e. don't skip).
1934
1935 2002-07-09  David Shaw  <dshaw@jabberwocky.com>
1936
1937         * options.h, keyserver.c (parse_keyserver_uri, keyserver_spawn,
1938         keyserver_work), hkp.c (hkp_ask_import, hkp_export, hkp_search):
1939         Use a much more strict reading of RFC-2396 for the keyserver URIs.
1940         Specifically, don't try and be smart about checking the value of
1941         ":port" so long as it is all digits, and properly handle opaque
1942         data (those scheme specific parts that do not start with "//").
1943
1944 2002-07-04  David Shaw  <dshaw@jabberwocky.com>
1945
1946         * photoid.c (get_default_photo_command, show_photos): Honor
1947         FIXED_PHOTO_VIEWER and DISABLE_PHOTO_VIEWER.
1948
1949         * mainproc.c (check_sig_and_print): Use --show-photos to show
1950         photos when verifying a sig made by a key with a photo.
1951
1952         * keyserver.c (parse_keyserver_uri): Properly parse a URI with no
1953         :port section and an empty file path, but with a terminating '/'.
1954         (keyserver_work): Honor DISABLE_KEYSERVER_HELPERS.
1955
1956         * hkp.c (hkp_ask_import): Display keyserver URI as a URI, but only
1957         if verbose.
1958
1959         * exec.c, g10.c: USE_EXEC_PATH -> FIXED_EXEC_PATH
1960
1961 2002-07-03  David Shaw  <dshaw@jabberwocky.com>
1962
1963         * exec.h, exec.c (set_exec_path, exec_write), g10.c (main): If
1964         USE_EXEC_PATH is defined at compile time, use it to lock the
1965         exec-path and not allow the user to change it.
1966
1967 2002-07-02  David Shaw  <dshaw@jabberwocky.com>
1968
1969         * options.h, g10.c (main), keyserver.c (keyserver_refresh):
1970         Maintain and use the original keyserver URI for cosmetics rather
1971         than trying to recreate it when needed.
1972
1973         * mainproc.c (check_sig_and_print): Properly disregard expired
1974         uids.  Make sure that the first uid listed is a real uid and not
1975         an attribute (attributes should only be listed in the "aka"
1976         section).  When there are no valid textual userids, try for an
1977         invalid textual userid before using any attribute uid.
1978
1979 2002-07-01  David Shaw  <dshaw@jabberwocky.com>
1980
1981         * options.skel: Fix a few typos, clarify "group", and remove
1982         sample photo viewers for Win32 since they are the defaults now.
1983
1984         * parse-packet.c (make_attribute_uidname), keylist.c
1985         (dump_attribs): Fix two typecast warnings.
1986
1987         * packet.h, build-packet.c (build_attribute_subpkt), exec.c
1988         (expand_args), mkdtemp.c (mkdtemp), photoid.c
1989         (parse_image_header): Fix some signedness compiler warnings.
1990
1991 2002-07-01  Werner Koch  <wk@gnupg.org>
1992
1993         * photoid.c (get_default_photo_command): Also use __MINGW32__
1994         instead of HAVE_DOSISH_SYSTEM.
1995
1996         * encode.c (encode_symmetric): Do not use the new encryption code.
1997
1998 2002-06-30  Werner Koch  <wk@gnupg.org>
1999
2000         * photoid.c: Use __MINGW32__ to include windows because
2001         HAVE_DOSISH_SYSTEM is also set for OS/2 and plain DOS.  Provide
2002         constant missing in older mingw installations. 
2003
2004 2002-06-21  Stefan Bellon  <sbellon@sbellon.de>
2005
2006         * g10.c [__riscos__]: Moved RISC OS specific stuff to util/riscos.c
2007         and include/util.h.
2008
2009         * gpgv.c [__riscos__]: Likewise.
2010
2011 2002-06-20  David Shaw  <dshaw@jabberwocky.com>
2012
2013         * keydb.h, pkclist.c (select_algo_from_prefs): Allow passing a
2014         suggested algorithm which will be used if available.
2015
2016         * encode.c (encode_crypt, encrypt_filter), sign.c (sign_file): Use
2017         new select_algo_from_prefs feature to check if forcing an
2018         algorithm would violate the recipient preferences.
2019
2020         * photoid.c (get_default_photo_command, show_photos): Use
2021         different default viewers on different platforms.  Currently we
2022         have Win 9x, Win NT (2k, xp), Mac OSX, RISC OS, and "everybody
2023         else".  These are #ifdefs as much as possible to avoid clutter.
2024
2025         * g10.c (strusage, build_list), keyedit.c (show_prefs), main.h,
2026         misc.c (compress_algo_to_string, check_compress_algo), pkclist.c
2027         (algo_available), keygen.c (keygen_set_std_prefs): New
2028         algo_to_string and check functions for compress algorithms.
2029
2030 2002-06-20  Werner Koch  <wk@gnupg.org>
2031
2032         * misc.c (setsysinfo): Removed a #warning for Alpha's uniligedn
2033         trap disabling - it is quite possible that this is a debug relict.
2034
2035 2002-06-20  Stefan Bellon  <sbellon@sbellon.de>
2036
2037         * g10.c [__riscos__]: Added image file system feature.
2038
2039         * gpgv.c [__riscos__]: Added image file system feature.
2040
2041         * photoid.c (show_photos) [__riscos__]: Set RISC OS filetype of
2042         photo id according to MIME type.
2043
2044 2002-06-19  David Shaw  <dshaw@jabberwocky.com>
2045
2046         * hkp.c (parse_hkp_index): Don't leak memory when failing out of a
2047         bad HKP keyserver.
2048
2049         * g10.c (add_notation_data): Relax slightly the rules as to what
2050         can go into a notation name - 2440 allows "@", for example.
2051
2052 2002-06-17  David Shaw  <dshaw@jabberwocky.com>
2053
2054         * import.c (clean_subkeys, import_one): Only allow at most 1
2055         binding sig and at most 1 revocation sig on a subkey, as per
2056         2440:11.1.
2057
2058         * hkp.c (parse_hkp_index, hkp_search): Error if the keyserver
2059         returns an unparseable HKP response.
2060
2061 2002-06-15  David Shaw  <dshaw@jabberwocky.com>
2062
2063         * keyedit.c (show_key_with_all_names), keylist.c
2064         (list_keyblock_print): Show "[expired]" before expired uids.
2065
2066         * keyedit.c (show_key_with_all_names_colon), mainproc.c
2067         (list_node), keylist.c (list_keyblock_colon): Show flag 'e' for
2068         expired user ids.  Use "uat" for user attribute packets instead of
2069         "uid".  Also use '<count> <length>' rather than the fake user id
2070         string on attributes.
2071
2072         * keygen.c (keygen_add_revkey): Remove unused code.
2073
2074         * misc.c (check_permissions): Check directory permissions
2075         properly - they are not special files.
2076
2077         * pkclist.c (expand_id, expand_group, build_pk_list): When
2078         expanding groups before building a pk list, inherit flags from the
2079         original pre-expanded string.
2080
2081         * pubkey-enc.c (is_algo_in_prefs): Don't use prefs from expired
2082         uids.
2083
2084 2002-06-14  David Shaw  <dshaw@jabberwocky.com>
2085
2086         * free-packet.c (copy_signature): Properly copy a signature that
2087         carries a revocation key on it.
2088
2089         * pkclist.c (expand_id, expand_group, build_pk_list): Groups now
2090         work properly when used in the "Enter the user ID" prompt.
2091
2092 2002-06-14  David Shaw  <dshaw@jabberwocky.com>
2093
2094         * keyedit.c (show_key_with_all_names): Display warning if a user
2095         tries to show prefs on a v3 key with a v3 selfsig.
2096
2097         * kbnode.c (dump_kbnode): Show if a uid is expired.
2098
2099         * import.c (merge_blocks, import_revoke_cert): Show user ID
2100         receiving a revocation certificate.
2101
2102         * free-packet.c (cmp_user_ids): Properly compare attribute ids.
2103
2104         * pkclist.c (expand_groups): Maintain the strlist flags while
2105         expanding.  Members of an expansion inherit their flags from the
2106         expansion key.
2107
2108         * options.h, cipher.c (write_header), g10.c (main), keygen.c
2109         (keygen_set_std_prefs): remove the personal_mdc flag.  It no
2110         longer serves a purpose now that the personal preference lists are
2111         split into cipher/digest/zip.
2112
2113 2002-06-14  Timo Schulz  <ts@winpt.org>
2114
2115         * skclist.c (is_insecure): Implemented.
2116         
2117 2002-06-12  David Shaw  <dshaw@jabberwocky.com>
2118
2119         * keyserver.c (keyserver_spawn): Properly handle PROGRAM responses
2120         when they have a CRLF ending.  Noted by Keith Ray.
2121
2122         * keyserver.c (keyserver_spawn): Handle CRLF endings from
2123         keyserver helpers.  Also don't leak the last line worth of memory
2124         from the keyserver response.
2125
2126         * main.h, misc.c (deprecated_warning): New function to warn about
2127         deprecated options and commands.
2128
2129         * g10.c (main), keyserver-internal.h, keyserver.c
2130         (parse_keyserver_uri): Use new deprecated function to warn about
2131         honor-http-proxy, auto-key-retrieve, and x-broken-hkp.
2132
2133 2002-06-11  David Shaw  <dshaw@jabberwocky.com>
2134
2135         * Makefile.am: link gpg with NETLIBS for the built-in HKP access.
2136
2137 2002-06-10  David Shaw  <dshaw@jabberwocky.com>
2138
2139         * options.h, keyserver.c (keyserver_opts), g10.c (main): New
2140         keyserver option "include-subkeys".  This feature already existed,
2141         but now can be turned off.  It defaults to on.
2142
2143         * options.h, keyserver.c (parse_keyserver_options,
2144         keyserver_spawn): There are now enough options to justify making a
2145         structure for the keyserver options rather than a page of
2146         if-then-else-if-then-etc.
2147
2148         * getkey.c (merge_keys_and_selfsig, merge_selfsigs_main): Fix bug
2149         in calculating key expiration dates.
2150
2151 2002-06-09  David Shaw  <dshaw@jabberwocky.com>
2152
2153         * keydb.h, getkey.c (get_user_id_native), import.c (import_one):
2154         Display user ID while importing a key.  Note this applies to both
2155         --import and keyserver --recv-keys.
2156
2157         * exec.c (exec_finish): Log unnatural exit (core dump, killed
2158         manually, etc) for fork/exec/pipe child processes.
2159
2160 2002-06-08  Timo Schulz  <ts@winpt.org>
2161
2162         * encode.c (encode_symmetric): Disable the compat flag
2163         when the expert mode is enabled.
2164         
2165 2002-06-07  David Shaw  <dshaw@jabberwocky.com>
2166
2167         * options.skel, options.h, main.h, keydb.h, pkclist.c
2168         (build_pk_list, expand_groups), g10.c (main, add_group): Add new
2169         "group" command to allow one name to expand into multiple keys.
2170         For simplicity, and to avoid potential loops, we only expand once
2171         - you can't make an alias that points to an alias.
2172
2173         * main.h, g10.c (main), keygen.c (build_personal_digest_list):
2174         Simplify the default digest list - there is really no need for the
2175         other hashes since they will never be used after SHA-1 in the
2176         list.
2177
2178         * options.skel, options.h, g10.c (main), hkp.c (hkp_ask_import,
2179         hkp_export, hkp_search), keyserver.c (parse_keyserver_options,
2180         parse_keyserver_uri, keyserver_work, keyserver_refresh): Make the
2181         "x-broken-hkp" keyserver scheme into keyserver-option
2182         "broken-http-proxy".  Move honor_http_proxy into
2183         keyserver_options.  Canonicalize the three variations of "hkp",
2184         "x-hkp", and "x-broken-hkp" into "hkp".
2185
2186 2002-06-07  Stefan Bellon  <sbellon@sbellon.de>
2187
2188         * g10.c [__riscos__]: Added --attribute-file to do the same as
2189         --attribute-fd, but with a filename not a fd as argument.
2190         Added magic symbol for RISC OS to use different memory management.
2191
2192         * gpgv.c [__riscos__]: Added magic symbol for RISC OS to use
2193         different memory management.
2194
2195 2002-06-06  David Shaw  <dshaw@jabberwocky.com>
2196
2197         * main.h, g10.c (main), keygen.c (build_personal_digest_list): Put
2198         in a default digest preference list consisting of SHA-1, followed
2199         by every other installed digest except MD5.  Note this is the same
2200         as having no digest preference at all except for SHA-1 being
2201         favored.
2202
2203         * options.h, g10.c (main), keygen.c (keygen_set_std_prefs),
2204         pkclist.c (select_algo_from_prefs): Split
2205         --personal-preference-list into three:
2206         --personal-{cipher|digest|compress}-preferences.  This allows a
2207         user to set one without affecting another (i.e. setting only a
2208         digest pref doesn't imply an empty cipher pref).
2209
2210         * exec.c (exec_read): This is a safer way of guessing the return
2211         value of system().  Noted by Stefan Bellon.
2212
2213 2002-06-05  David Shaw  <dshaw@jabberwocky.com>
2214
2215         * hkp.c (parse_hkp_index): Be more robust with keyservers
2216         returning very unparseable responses.
2217
2218         * exec.c (exec_read): Catch and display an error when the remote
2219         process exits unnaturally (i.e. segfault) so the user knows what
2220         happened.  Also fix exec_write stub which has a different number
2221         of arguments now.
2222
2223 2002-06-05  Timo Schulz  <ts@winpt.org>
2224
2225         * encode.c (encode_simple): Ignore the new mode for RFC1991.
2226         * mainproc.c (symkey_decrypt_sesskey): Better check for weird
2227         keysizes.
2228         
2229 2002-06-05  Timo Schulz  <ts@winpt.org>
2230
2231         * encode.c (encode_sesskey): New.
2232         (encode_simple): Use it here. But by default we use the compat
2233         mode which supress to generate encrypted session keys.
2234         
2235 2002-06-05  Timo Schulz  <ts@winpt.org>
2236
2237         * mainproc.c (symkey_decrypt_sesskey): New.
2238         (proc_symkey_enc): Support for encrypted session keys.
2239         
2240 2002-06-04  David Shaw  <dshaw@jabberwocky.com>
2241
2242         * sign.c (hash_for, sign_file): When encrypting and signing at the
2243         same time, consult the various hash prefs to pick a hash algorithm
2244         to use.  Pass in a 160-bit hint if any of the signing keys are
2245         DSA.
2246
2247         * keydb.h, pkclist.c (select_algo_from_prefs, algo_available):
2248         Pass a "hints" opaque pointer in to let the caller give hints as
2249         to what algorithms would be acceptable.  The only current hint is
2250         for PREFTYPE_HASH to require a 160-bit hash for DSA.  Change all
2251         callers in encode.c (encode_crypt, encrypt_filter) and sign.c
2252         (sign_file).  If we settle on MD5 as the best algorithm based
2253         solely on recepient keys and SHA1 is also a possibility, use SHA1
2254         unless the user intentionally chose MD5.  This is as per 2440:13.
2255
2256         * exec.c (make_tempdir): Fix duplicated filename problem.
2257
2258 2002-06-03  David Shaw  <dshaw@jabberwocky.com>
2259
2260         * packet.h, parse-packet.c (enum_sig_subpkt): Report back from
2261         enum_sig_subpkt when a subpacket is critical and change all
2262         callers in keylist.c (show_policy_url, show_notation), mainproc.c
2263         (print_notation_data), and pkclist.c (do_show_revocation_reason).
2264
2265         * keylist.c (show_policy_url, show_notation): Display if the
2266         policy or notation is critical.
2267         
2268 2002-06-03  David Shaw  <dshaw@jabberwocky.com>
2269
2270         * main.h, g10.c (main), keylist.c (dump_attribs, set_attrib_fd,
2271         list_keyblock_print, list_keyblock_colon), status.h, status.c
2272         (get_status_string): New --attribute-fd feature to dump the
2273         contents of attribute subpackets for frontends.  If --status-fd is
2274         also used, then a new status tag ATTRIBUTE is provided for each
2275         subpacket.
2276
2277         * packet.h, getkey.c (fixup_uidnode, merge_selfsigs_main,
2278         merge_selfsigs_subkey), parse-packet.c (setup_user_id): Keep track
2279         of the expiration time of a user ID, and while we're at it, use
2280         the expired flag from the selfsig rather than reparsing the
2281         SIG_EXPIRE subpacket.
2282
2283         * photoid.c (generate_photo_id): When adding a new photo ID,
2284         showing the photo for confirmation is not safe when noninteractive
2285         since the "user" may not be able to dismiss a viewer window.
2286         Noted by Timo Schulz.
2287         
2288 2002-06-03  David Shaw  <dshaw@jabberwocky.com>
2289
2290         * options.skel: Sample photo viewers for Win32.
2291
2292         * misc.c (pct_expando): Use the seckey for %k/%K if the pubkey is
2293         not available.
2294
2295         * photoid.h, photoid.c (show_photos): Include the seckey in case a
2296         user tries to view a photo on a secret key, and change all callers
2297         in keyedit.c (menu_showphoto), keylist.c (list_keyblock_print),
2298         and photoid.c (generate_photo_id).
2299
2300 2002-06-02  David Shaw  <dshaw@jabberwocky.com>
2301
2302         * photoid.c (show_photos): Work properly when not called with a
2303         public key.
2304
2305 2002-05-31  David Shaw  <dshaw@jabberwocky.com>
2306
2307         * sign.c (mk_notation_and_policy): Free unneeded buffer.
2308
2309         * hkp.c (parse_hkp_index): Properly handle the '&' character
2310         (i.e. "&amp;") in HKP responses.
2311
2312         * getkey.c (merge_selfsigs_main): Fix reversed expiration time
2313         check with self-sigs.
2314
2315         * keyedit.c (sign_uids): When making a new self-sig on a v3 key,
2316         make a v3 self-sig unless it is currently a v3 self-sig being
2317         promoted to v4.
2318
2319 2002-05-31  Timo Schulz  <ts@winpt.org>
2320
2321         * pkclist.c (do_show_revocation_reason): Don't use capital
2322         letters for non-interactive output.
2323         (show_revocation_reason): Now it is global.
2324         * pubkey-enc.c (get_it): Show if the key has been revoked.
2325         
2326 2002-05-30  David Shaw  <dshaw@jabberwocky.com>
2327
2328         * sign.c (write_signature_packets, sign_file, clearsign_file,
2329         sign_symencrypt_file): Make a v4 signature if a policy URL or
2330         notation is set, unless v3 sigs are forced via rfc1991 or
2331         force-v3-sigs.  Also remove some doubled code and clarify an error
2332         message (we don't sign in PGP2 mode - just detach-sign).
2333
2334         * parse-packet.c (parse_one_sig_subpkt): Add KS_FLAGS to the "any
2335         size" section.
2336
2337 2002-05-29  David Shaw  <dshaw@jabberwocky.com>
2338
2339         * keygen.c (keygen_set_std_prefs, add_feature_mdc): Use "mdc" and
2340         "no-mdc" in the prefs string to allow switching on and off the MDC
2341         feature.  This is needed to properly export a key from GnuPG for
2342         use on PGP which does not support MDC - without this, MDC-capable
2343         implementations will still try and generate MDCs which will break
2344         PGP.
2345
2346         * keygen.c (keygen_get_std_prefs): Show "[mdc]" in prefs string if
2347         it is enabled.
2348
2349         * options.h, g10.c (main), cipher.c (write_header), keygen.c
2350         (keygen_set_std_prefs): For consistency, allow the user to specify
2351         mdc/no-mdc in the --personal-preference-list.  If disabled, it
2352         acts just like --disable-mdc.
2353
2354 2002-05-29  David Shaw  <dshaw@jabberwocky.com>
2355
2356         * options.h, exec.c: Add some debugging info, using the 1024 debug
2357         flag.
2358
2359         * exec.c (win_system): New system()-like function for win32 that
2360         does not return until the child process terminates.  Of course,
2361         this doesn't help if the process itself exits before it is
2362         finished.
2363
2364 2002-05-29  Werner Koch  <wk@gnupg.org>
2365
2366         * encode.c (encode_simple): Intialize PKT when --no-literal is used.
2367
2368         * keyedit.c (show_key_with_all_names_colon): Renamed the record
2369         for revocation keys to "rvk".
2370
2371 2002-05-27  Werner Koch  <wk@gnupg.org>
2372
2373         * keyedit.c (show_key_with_all_names_colon): New.
2374         (show_key_with_all_names): Divert to new function when required.
2375         Sanitize printing of revoker name.
2376
2377 2002-05-27  David Shaw  <dshaw@jabberwocky.com>
2378
2379         * build-packet.c (build_sig_subpkt): Handle setting sig flags for
2380         certain subpacket types (notation, policy url, exportable,
2381         revocable).  keyedit.c (sign_mk_attrib): Flags no longer need to
2382         be set here.
2383
2384         * packet.h, parse-packet.c (parse_one_sig_subpkt), build-packet.c
2385         (build_sig_subpkt): Call parse_one_sig_subpkt to sanity check
2386         buffer lengths before building a sig subpacket.
2387
2388 2002-05-26  David Shaw  <dshaw@jabberwocky.com>
2389
2390         * sign.c (mk_notation_and_policy): Include secret key to enable %s
2391         expandos, and pass notations through pct_expando as well.
2392
2393         * main.h, misc.c (pct_expando): Add %s and %S expandos for
2394         signer's keyid.
2395
2396 2002-05-25  David Shaw  <dshaw@jabberwocky.com>
2397
2398         * g10.c (strusage, build_list): Add compress algorithms to
2399         --version list.  Show algorithm numbers when --verbose --version
2400         is done.
2401
2402 2002-05-22  David Shaw  <dshaw@jabberwocky.com>
2403
2404         * options.h, main.h, keygen.c (keygen_set_set_prefs,
2405         keygen_get_std_prefs, keygen_upd_std_prefs), keyedit.c
2406         (keyedit_menu), g10.c (main), pkclist.c (select_algo_from_prefs):
2407         Add --personal-preference-list which allows the user to factor in
2408         their own preferred algorithms when the preference lists are
2409         consulted.  Obviously, this does not let the user violate a
2410         recepient's preferences (and the RFC) - this only influences the
2411         ranking of the agreed-on (and available) algorithms from the
2412         recepients.  Suggested by David Hollenberg.
2413
2414         * options.h, keygen.c (keygen_set_std_prefs), g10.c (main): Rename
2415         --preference-list to --default-preference-list (as that is what it
2416         really is), and make it a true default in that if the user selects
2417         "default" they get this list and not the compiled-in list.
2418
2419 2002-05-22  Werner Koch  <wk@gnupg.org>
2420
2421         * g10.c (main): Add missing LF in a info printout and made it
2422         translatable.  Noted by Michael Tokarev.
2423
2424 2002-05-21  Werner Koch  <wk@gnupg.org>
2425
2426         * g10.c (main): Removed the undef of USE_SHM_COPROCESSING which
2427         was erroneously introduced on 2002-01-09.
2428
2429         * signal.c (got_fatal_signal): Don't write the Nul to stderr.
2430         Reported by David Hollenberg.
2431
2432 2002-05-18  David Shaw  <dshaw@jabberwocky.com>
2433
2434         * main.h, g10.c (main), revoke.c (gen_desig_revoke): Generate a
2435         designated revocation via --desig-revoke
2436
2437         * keyedit.c (keyedit_menu, menu_addrevoker): New "addrevoker"
2438         command to add a designated revoker to a key.
2439
2440 2002-05-17  David Shaw  <dshaw@jabberwocky.com>
2441
2442         * gpgv.c: Add stub for get_ownertrust().
2443
2444         * g10.c (main): --allow-freeform-uid should be implied by
2445         OpenPGP.  Add --no-allow-freeform-uid.
2446
2447         * keyedit.c (sign_uids): Issue a warning when signing a
2448         non-selfsigned uid.
2449
2450         * getkey.c (merge_selfsigs_main): If a key has no selfsigs, and
2451         allow-non-selfsigned-uid is not set, still try and make the key
2452         valid by checking all uids for a signature from an ultimately
2453         trusted key.
2454
2455 2002-05-16  David Shaw  <dshaw@jabberwocky.com>
2456
2457         * main.h, keygen.c (keygen_add_revkey): Add revocation key
2458         subpackets to a signature (callable by
2459         make_keysig_packet). (write_direct_sig): Write a 1F direct key
2460         signature. (parse_revocation_key): Parse a string in
2461         algo:fpr:sensitive format into a revocation
2462         key. (get_parameter_revkey, do_generate_keypair): Call above
2463         functions when prompted from a batch key generation file.
2464
2465         * build-packet.c (build_sig_subpkt): Allow multiple revocation key
2466         subpackets in a single sig.
2467
2468         * keydb.h, getkey.c (get_seckey_byfprint): Same as
2469         get_pubkey_byfprint, except for secret keys.  We only know the
2470         fingerprint of a revocation key, so this is needed to retrieve the
2471         secret key needed to issue a revokation.
2472
2473         * packet.h, parse-packet.c (parse_signature, parse_revkeys): Split
2474         revkey parsing off into a new function that can be used to reparse
2475         after manipulating the revkey list.
2476
2477         * sign.c (make_keysig_packet): Ability to make 1F direct key
2478         signatures.
2479
2480 2002-05-15  David Shaw  <dshaw@jabberwocky.com>
2481
2482         * options.skel: keyserver.pgp.com is gone, so list pgp.surfnet.nl
2483         as a sample LDAP server instead.
2484
2485         * getkey.c (merge_selfsigs_main): Properly handle multiple
2486         revocation keys in a single packet.  Properly handle revocation
2487         keys that are in out-of-order packets.  Remove duplicates in
2488         revocation key list.
2489
2490 2002-05-14  Timo Schulz   <ts@winpt.org>
2491
2492         * exec.c (make_tempdir) [MINGW32]: Added missing '\'.
2493         
2494 2002-05-14  Stefan Bellon  <sbellon@sbellon.de>
2495
2496         * exec.c (make_tempdir): Make use of EXTSEP_S instead of hardcoded
2497         dot as extension separator.
2498
2499 2002-05-13  David Shaw  <dshaw@jabberwocky.com>
2500
2501         * photoid.c (show_photos): Use the long keyid as the filename for
2502         the photo.  Use the short keyid as the filename on 8.3 systems.
2503
2504         * exec.h, exec.c (make_tempdir, exec_write, exec_finish): Allow
2505         caller to specify filename.  This should make things easier on
2506         windows and macs where the file extension is required, but a whole
2507         filename is even better.
2508
2509         * keyedit.c (show_key_with_all_names, show_prefs): Show proper
2510         prefs for a v4 key uid with no selfsig at all.
2511
2512         * misc.c (check_permissions): Don't check permissions on
2513         non-normal files (pipes, character devices, etc.)
2514
2515 2002-05-11  Werner Koch  <wk@gnupg.org>
2516
2517         * mainproc.c (proc_symkey_enc): Avoid segv in case the parser
2518         encountered an invalid packet.
2519
2520         * keyserver.c (keyserver_export): Get confirmation before sending
2521         all keys.
2522
2523 2002-05-10  Stefan Bellon  <sbellon@sbellon.de>
2524
2525         * g10.c, hkp.c, keyedit.c, keyserver.c: Replaced all occurrances
2526         of strcasecmp with ascii_strcasecmp and all occurrances of
2527         strncasecmp with ascii_memcasecmp.
2528
2529 2002-05-10  David Shaw  <dshaw@jabberwocky.com>
2530
2531         * packet.h, getkey.c (fixup_uidnode), keyedit.c (show_prefs): Show
2532         assumed prefs for hash and compression as well as the cipher pref.
2533         Show assumed prefs if there are no prefs at all on a v4
2534         self-signed key.
2535
2536         * options.h, g10.c (main), sign.c (make_keysig_packet): New
2537         --cert-digest-algo function to override the default key signing
2538         hash algorithm.
2539
2540 2002-05-09  David Shaw  <dshaw@jabberwocky.com>
2541
2542         * getkey.c (merge_selfsigs_main): Make sure the revocation key
2543         list starts clean as this function may be called more than once
2544         (e.g. from functions in --edit).
2545
2546         * g10.c, encode.c (encode_crypt), sign.c (sign_file,
2547         sign_symencrypt_file): Make --compress-algo work like the
2548         documentation says.  It should be like --cipher-algo and
2549         --digest-algo in that it can override the preferences calculation
2550         and impose the setting the user wants.  No --compress-algo setting
2551         allows the usual preferences calculation to take place.
2552
2553         * main.h, compress.c (compress_filter): use new
2554         DEFAULT_COMPRESS_ALGO define, and add a sanity check for compress
2555         algo value.
2556
2557 2002-05-08  David Shaw  <dshaw@jabberwocky.com>
2558
2559         * pkclist.c (select_algo_from_prefs): There is an assumed
2560         compression preference for uncompressed data.
2561
2562 2002-05-07  David Shaw  <dshaw@jabberwocky.com>
2563
2564         * options.h, g10.c (main), getkey.c (finish_lookup), pkclist.c
2565         (algo_available): --pgp7, identical to --pgp6 except that it
2566         permits a few algorithms that PGP 7 added: AES128, AES192, AES256,
2567         and TWOFISH.  Any more of these --pgpX flags, and it'll be time to
2568         start looking at a generic --emulate-pgp X option.
2569
2570         * export.c (do_export_stream): Warn the user when exporting a
2571         secret key if it or any of its secret subkeys are protected with
2572         SHA1 while simple_sk_checksum is set.
2573
2574         * parse-packet.c (parse_key): Show when the SHA1 protection is
2575         used in --list-packets.
2576
2577         * options.h, build-packet.c (do_comment), g10.c (main): Rename
2578         --no-comment as --sk-comments/--no-sk-comments (--no-comment still
2579         works) and make the default be --no-sk-comments.
2580
2581 2002-05-07  Werner Koch  <wk@gnupg.org>
2582
2583         * keygen.c (get_parameter_algo): Never allow generation of the
2584         deprecated RSA-E or RSA-S flavors of PGP RSA.
2585         (ask_algo): Allow generation of RSA sign and encrypt in expert
2586         mode.  Don't allow ElGamal S+E unless in expert mode.
2587         * helptext.c: Added entry keygen.algo.rsa_se.
2588
2589 2002-05-07  David Shaw  <dshaw@jabberwocky.com>
2590
2591         * keyedit.c (sign_uids): If --expert is set, allow re-signing a
2592         uid to promote a v3 self-sig to a v4 one.  This essentially
2593         deletes the old v3 self-sig and replaces it with a v4 one.
2594
2595         * packet.h, parse-packet.c (parse_key), getkey.c
2596         (merge_keys_and_selfsig, merge_selfsigs_main): a v3 key with a v4
2597         self-sig must never let the v4 self-sig express a key expiration
2598         time that extends beyond the original v3 expiration time.
2599
2600 2002-05-06  David Shaw  <dshaw@jabberwocky.com>
2601
2602         * keyedit.c (sign_uids): When making a self-signature via "sign"
2603         don't ask about sig level or expiration, and include the usual
2604         preferences and such for v4 self-sigs.  (menu_set_preferences):
2605         Convert uids from UTF8 to native before printing.
2606
2607         * keyedit.c (sign_uids): Convert uids from UTF8 to native before
2608         printing.  (menu_set_primary_uid): Show error if the user tries to
2609         make a uid with a v3 self-sig primary.
2610
2611 2002-05-05  David Shaw  <dshaw@jabberwocky.com>
2612
2613         * import.c (import_one): When merging with a key we already have,
2614         don't let a key conflict (same keyid but different key) stop the
2615         import: just skip the bad key and continue.
2616
2617         * exec.c (make_tempdir): Under Win32, don't try environment
2618         variables for temp directories - GetTempDir tries environment
2619         variables internally, and it's better not to second-guess it in
2620         case MS adds some sort of temp dir handling to Windows at some
2621         point.
2622
2623 2002-05-05  Timo Schulz  <ts@winpt.org>
2624
2625         * mainproc.c (proc_symkey_enc): Don't ask for a passphrase
2626         in the list only mode.
2627         
2628 2002-05-05  David Shaw  <dshaw@jabberwocky.com>
2629
2630         * keyserver.c (keyserver_refresh): --refresh-keys implies
2631         --merge-only so as not to import keys with keyids that match the
2632         ones being refreshed.  Noted by Florian Weimer.
2633
2634 2002-05-04  Stefan Bellon  <sbellon@sbellon.de>
2635
2636         * free-packet.c (copy_public_key): Don't call m_alloc(0), therefore
2637         added consistency check for revkey and numrefkeys.
2638
2639         * getkey.c (check_revocation_keys): Added consistency check for
2640         revkey and numrefkeys.
2641
2642         * keyedit.c (show_key_with_all_names): Likewise.
2643
2644 2002-05-03  David Shaw  <dshaw@jabberwocky.com>
2645
2646         * photoid.c: Provide default image viewer for Win32.
2647
2648         * misc.c (pct_expando): %t means extension, not name ("jpg", not
2649         "jpeg").
2650
2651         * keyserver.c (keyserver_spawn), photoid.c (show_photos), exec.h,
2652         exec.c: Allow the caller to determine the temp file extension when
2653         starting an exec_write and change all callers.
2654
2655         * keyedit.c (sign_uids): Nonrevocable key signatures cause an
2656         automatic promotion to v4.
2657
2658         * exec.c: Provide stubs for exec_ functions when NO_EXEC is
2659         defined.
2660
2661 2002-05-02  David Shaw  <dshaw@jabberwocky.com>
2662
2663         * photoid.h, photoid.c (parse_image_header, image_type_to_string):
2664         Useful functions to return data about an image.
2665
2666         * packet.h, parse-packet.c (make_attribute_uidname,
2667         parse_attribute_subpkts, parse_attribute), photoid.h, photoid.c
2668         (show_photos): Handle multiple images in a single attribute
2669         packet.
2670
2671         * main.h, misc.c (pct_expando), sign.c (mk_notation_and_policy),
2672         photoid.c (show_photos): Simpler expando code that does not
2673         require using compile-time string sizes.  Call
2674         image_type_to_string to get image strings (i.e. "jpg",
2675         "image/jpeg").  Change all callers.
2676
2677         * keyedit.c (menu_showphoto), keylist.c (list_keyblock_print):
2678         Allow viewing multiple images within a single attribute packet.
2679
2680         * gpgv.c: Various stubs for link happiness.
2681
2682 2002-05-02  David Shaw  <dshaw@jabberwocky.com>
2683
2684         * build-packet.c (build_sig_subpkt), keyedit.c (sign_uids),
2685         options.h, sign.c (mk_notation_and_policy), g10.c (main,
2686         add_notation_data, add_policy_url (new), check_policy_url
2687         (removed)): Allow multiple policy URLs on a given signature.
2688         Split "--notation-data" into "--cert-notation" and
2689         "--sig-notation" so the user can set different policies for key
2690         and data signing.  For backwards compatibility, "--notation-data"
2691         sets both, as before.
2692
2693 2002-05-02  Werner Koch  <wk@gnupg.org>
2694
2695         * options.skel: Removed the comment on trusted-keys because this
2696         option is now deprecated.
2697
2698 2002-05-01  David Shaw  <dshaw@jabberwocky.com>
2699
2700         * keyedit.c (menu_adduid): 2440bis04 says that multiple attribute
2701         packets on a given key are legal.
2702
2703         * keyserver.c (keyserver_refresh): the fake v3 keyid hack applies
2704         to "mailto" URLs as well since they are also served by pksd.
2705
2706 2002-04-29  Werner Koch  <wk@gnupg.org>
2707
2708         Added a copyright year for files changed this year.
2709
2710 2002-04-25  Werner Koch  <wk@gnupg.org>
2711
2712         * g10.c, options.h: New options --display, --ttyname, --ttytype,
2713         --lc-ctype, --lc-messages to be used with future versions of the
2714         gpg-agent. 
2715         * passphrase.c (agent_send_option,agent_send_all_options): New.
2716         (agent_open): Send options to the agent.
2717
2718         * trustdb.c (update_ownertrust, clear_ownertrust): Do an explicit
2719         do_sync because revalidation_mark does it only if when the
2720         timestamp actually changes.
2721
2722 2002-04-23  David Shaw  <dshaw@jabberwocky.com>
2723
2724         * main.h, keygen.c (do_generate_keypair), keylist.c
2725         (print_signature_stats, list_all, list_one, list_keyblock,
2726         list_keyblock_print, list_keyblock_colon): After generating a new
2727         key, show the key information (name, keyid, fingerprint, etc.)
2728         Also do not print uncheckable signatures (missing key..) in
2729         --check-sigs.  Print statistics (N missing keys, etc.) after
2730         --check-sigs.
2731
2732         * keyedit.c (sign_uids): When signing a key with an expiration
2733         date on it, the "Do you want your signature to expire at the same
2734         time?" question should default to YES.
2735
2736 2002-04-22  David Shaw  <dshaw@jabberwocky.com>
2737
2738         * parse-packet.c (parse_plaintext), packet.h, plaintext.c
2739         (handle_plaintext): Fix bug in handling literal packets with
2740         zero-length data (no data was being confused with partial body
2741         length).
2742
2743         * misc.c (pct_expando), options.skel: %t means extension ("jpg").
2744         %T means MIME type ("image/jpeg").
2745
2746         * import.c (import_one): Only trigger trust update if the keyring
2747         is actually changed.
2748
2749         * export.c (do_export_stream): Missing a m_free.
2750
2751 2002-04-22  Stefan Bellon  <sbellon@sbellon.de>
2752
2753         * keyid.c (expirestr_from_sk, expirestr_from_sig): Added _() to
2754         string constant.
2755
2756         * exec.c (make_tempdir) [__riscos__]: Better placement of
2757         temporary file.
2758
2759 2002-04-20  David Shaw  <dshaw@jabberwocky.com>
2760
2761         * keygen.c (generate_subkeypair): 2440bis04 adds that creating
2762         subkeys on v3 keys is a MUST NOT.
2763
2764         * getkey.c (finish_lookup): The --pgp6 "use the primary key"
2765         behavior should only apply while data signing and not encryption.
2766         Noted by Roger Sondermann.
2767
2768 2002-04-19  Werner Koch  <wk@gnupg.org>
2769
2770         * keygen.c (keygen_set_std_prefs): Put back 3DES because the RFC
2771         says it is good form to do so.
2772
2773 2002-04-19  David Shaw  <dshaw@jabberwocky.com>
2774
2775         * keyedit.c (menu_deluid): Only cause a trust update if we delete
2776         a non-revoked user id.
2777
2778         * hkp.c (hkp_ask_import), keyserver.c (parse_keyserver_options,
2779         keyserver_spawn), options.h: Remove fast-import keyserver option
2780         (no longer meaningful).
2781
2782         * g10.c (main), keyedit.c (sign_uids), options.h: Change
2783         --default-check-level to --default-cert-check-level as it makes
2784         clear what it operates on.
2785
2786         * g10.c (main): --pgp6 also implies --no-ask-sig-expire.
2787
2788         * delkey.c (do_delete_key): Comment.
2789
2790         * keyedit.c (sign_uids, keyedit_menu, menu_deluid, menu_delsig,
2791         menu_expire, menu_revsig, menu_revkey): Only force a trustdb check
2792         if we did something that changes it.
2793
2794         * g10.c: add "--auto-check-trustdb" to override a
2795         "--no-auto-check-trustdb"
2796
2797 2002-04-19  Werner Koch  <wk@gnupg.org>
2798
2799         * tdbio.c (tdbio_write_nextcheck): Return a status whether the
2800         stamp was actually changed.
2801         * trustdb.c (revalidation_mark): Sync the changes.  Removed the
2802         sync operation done by its callers.
2803         (get_validity): Add logic for maintaining a pending_check flag.
2804         (clear_ownertrust): New.
2805         
2806         * keyedit.c (sign_uids): Don't call revalidation_mark depending on
2807         primary_pk.
2808         (keyedit_menu): Call revalidation_mark after "trust".
2809         (show_key_with_all_names): Print a warning on the wrong listed key
2810         validity.
2811
2812         * delkey.c (do_delete_key): Clear the owenertrust information when
2813         deleting a public key.
2814         
2815 2002-04-18  Werner Koch  <wk@gnupg.org>
2816
2817         * seskey.c (encode_md_value): Print an error message if a wrong
2818         digest algorithm is used with DSA.  Changed all callers to cope
2819         with a NULL return.  Problem noted by Imad R. Faiad.
2820
2821 2002-04-18  David Shaw  <dshaw@jabberwocky.com>
2822
2823         * trustdb.c (mark_usable_uid_certs): Properly handle nonrevocable
2824         signatures that can expire.  In short, the only thing that can
2825         override an unexpired nonrevocable signature is another unexpired
2826         nonrevocable signature.
2827
2828         * getkey.c (finish_lookup): Always use primary signing key for
2829         signatures when --pgp6 is on since pgp6 and 7 do not understand
2830         signatures made by signing subkeys.
2831
2832 2002-04-18  Werner Koch  <wk@gnupg.org>
2833
2834         * trustdb.c (validate_keys): Never schedule a nextcheck into the
2835         past.
2836         (validate_key_list): New arg curtime use it to set next_expire.
2837         (validate_one_keyblock): Take the current time from the caller.
2838         (clear_validity, reset_unconnected_keys): New.
2839         (validate_keys): Reset all unconnected keys.
2840
2841         * getkey.c (premerge_public_with_secret): Fixed 0x12345678! syntax
2842         for use with secret keys.
2843         (lookup): Advance the searchmode after a search FIRST.
2844
2845         * seckey-cert.c (do_check): Always calculate the old checksum for
2846         use after unprotection.
2847
2848         * g10.c, options.skel: New option --no-escape-from.  Made
2849         --escape-from and --force-v3-sigs the default and removed them
2850         from the options skeleton.
2851
2852 2002-04-16  Werner Koch  <wk@gnupg.org>
2853
2854         * parse-packet.c (parse_key): Support a SHA1 checksum as per
2855         draft-rfc2440-bis04.
2856         * packet.h (PKT_secret_key): Add field sha1chk.
2857         * seckey-cert.c (do_check): Check the SHA1 checksum
2858         (protect_secret_key): And create it.
2859         * build-packet.c (do_secret_key): Mark it as sha-1 protected.
2860         * g10.c, options.h: New option --simple-sk-checksum.
2861
2862 2002-04-13  David Shaw  <dshaw@jabberwocky.com>
2863
2864         * parse-packet.c (parse_signature): Minor fix - signatures should
2865         expire at their expiration time and not one second later.
2866
2867         * keygen.c (proc_parameter_file): Allow specifying preferences
2868         string (i.e. "s5 s2 z1 z2", etc) in a batchmode key generation
2869         file.
2870
2871         * keyedit.c (keyedit_menu): Print standard error message when
2872         signing a revoked key (no new translation).
2873
2874         * getkey.c (merge_selfsigs): Get the default set of key prefs from
2875         the real (not attribute) primary uid.
2876
2877 2002-04-12  David Shaw  <dshaw@jabberwocky.com>
2878
2879         * pkclist.c (build_pk_list): Fix bug that allowed a key to be
2880         selected twice in batch mode if one instance was the default
2881         recipient and the other was an encrypt-to.  Noted by Stefan
2882         Bellon.
2883
2884         * parse-packet.c (dump_sig_subpkt): Show data in trust and regexp
2885         sig subpackets.
2886
2887         * keyedit.c (keyedit_menu): Use new function real_uids_left to
2888         prevent deleting the last real (i.e. non-attribute) uid.  Again,
2889         according to the attribute draft. (menu_showphoto): Make another
2890         string translatable.
2891
2892 2002-04-11  David Shaw  <dshaw@jabberwocky.com>
2893
2894         * build-packet.c (build_sig_subpkt): Delete subpackets from both
2895         hashed and unhashed area on update.  (find_subpkt): No longer
2896         needed.
2897
2898         * keyedit.c (sign_uids): With --pgp2 on, refuse to sign a v3 key
2899         with a v4 signature.  As usual, --expert overrides.  Try to tweak
2900         some strings to a closer match so they can all be translated in
2901         one place.  Use different helptext keys to allow different help
2902         text for different questions.
2903
2904         * keygen.c (keygen_upd_std_prefs): Remove preferences from both
2905         hashed and unhashed areas if they are not going to be used.
2906
2907 2002-04-10  David Shaw  <dshaw@jabberwocky.com>
2908
2909         * misc.c (pct_expando), options.skel: Use %t to indicate type of a
2910         photo ID (in this version, it's always "jpeg").  Also tweak string
2911         expansion loop to minimize reallocs.
2912
2913         * mainproc.c (do_check_sig): Variable type fix.
2914
2915         * keyedit.c (menu_set_primary_uid): Differentiate between true
2916         user IDs and attribute user IDs when making one of them primary.
2917         That is, if we are making a user ID primary, we alter user IDs.
2918         If we are making an attribute packet primary, we alter attribute
2919         packets.  This matches the language in the latest attribute packet
2920         draft.
2921
2922         * keyedit.c (sign_uids): No need for the empty string hack.
2923
2924         * getkey.c (fixup_uidnode): Only accept preferences from the
2925         hashed segment of the self-sig.
2926
2927 2002-04-10  Werner Koch  <wk@gnupg.org>
2928
2929         * tdbio.c (migrate_from_v2): Fixed the offset to read the old
2930         ownertrust value and only add entries to the table if we really
2931         have a value.
2932
2933 2002-04-08  David Shaw  <dshaw@jabberwocky.com>
2934
2935         * status.h, status.c (get_status_string): Add KEYEXPIRED, EXPSIG,
2936         and EXPKEYSIG.  Add "deprecated-use-keyexpired-instead" to
2937         SIGEXPIRED.
2938
2939         * sig-check.c (do_check): Start transition from SIGEXPIRED to
2940         KEYEXPIRED, since the actual event is signature verification by an
2941         expired key and not an expired signature. (do_signature_check,
2942         packet.h): Rename as signature_check2, make public, and change all
2943         callers.
2944
2945         * mainproc.c (check_sig_and_print, do_check_sig): Use status
2946         EXPSIG for an expired, but good, signature.  Add the expiration
2947         time (or 0) to the VALIDSIG status line.  Use status KEYEXPSIG for
2948         a good signature from an expired key.
2949
2950         * g10.c (main): remove checks for no arguments now that argparse
2951         does it.
2952
2953 2002-04-06  Werner Koch  <wk@gnupg.org>
2954
2955         * keyring.c (keyring_get_keyblock): Disable the keylist mode here.
2956
2957         * encode.c (encode_simple, encode_crypt): Only test on compressed
2958         files if a compress level was not explicity set.
2959
2960         * keygen.c (keygen_set_std_prefs): Removed Blowfish and Twofish
2961         from the list of default preferences, swapped the preferences of
2962         RMD160 and SHA1.  Don't include a preference to 3DES unless the
2963         IDEA kludge gets used.
2964
2965         * free-packet.c (free_packet): call free_encrypted also for
2966         PKT_ENCRYPTED_MDC.
2967
2968         * compress.c (release_context): New.
2969         (handle_compressed): Allocate the context and setup a closure to
2970         release the context.  This is required because there is no
2971         guarabntee that the filter gets popped from the chain at the end
2972         of the function.  Problem noted by Timo and probably also the
2973         cause for a couple of other reports.
2974         (compress_filter): Use the release function if set.
2975
2976         * tdbio.c [__CYGWIN32__]: Don't rename ftruncate.  Noted by
2977         Disastry.
2978
2979         * parse-packet.c (parse_signature): Put parens around a bit test.
2980
2981         * exec.c (make_tempdir): Double backslash for TMP directory
2982         creation under Windows.  Better strlen the DIRSEP_S constants for
2983         allocation measurements.
2984
2985         * decrypt.c (decrypt_messages): Release the passphrase aquired
2986         by get_last_passphrase.
2987
2988 2002-04-02  Werner Koch  <wk@gnupg.org>
2989
2990         * Makefile.am (EXTRA_DIST): Removed OPTIONS an pubring.asc - they
2991         are no longer of any use. 
2992
2993 2002-04-03  David Shaw  <dshaw@jabberwocky.com>
2994
2995         * keyserver.c (parse_keyserver_options): fix auto-key-retrieve to
2996         actually work as a keyserver-option (noted by Roger Sondermann).
2997
2998         * keylist.c (reorder_keyblock): do not reorder the primary
2999         attribute packet - the first user ID must be a genuine one.
3000
3001 2002-03-31  David Shaw  <dshaw@jabberwocky.com>
3002
3003         * keylist.c (list_keyblock_colon): Fix ownertrust display with
3004         --with-colons.
3005
3006         * keygen.c (generate_user_id), photoid.c (generate_photo_id):
3007         Properly initialize the user ID refcount.  A few more "y/n" ->
3008         "y/N" in photoid.c.
3009
3010         * keyedit.c (ask_revoke_sig): Warn the user if they are about to
3011         revoke an expired sig (not a problem, but they should know).  Also
3012         tweak a few prompts to change "y/n" to "y/N", which is how most
3013         other prompts are written.
3014
3015         * keyserver.c (keyserver_search_prompt): Control-d escapes the
3016         keyserver search prompt.
3017
3018         * pkclist.c (show_revocation_reason & callers): If a subkey is
3019         considered revoked solely because the parent key is revoked, print
3020         the revocation reason from the parent key.
3021
3022         * trustdb.c (get_validity): Allow revocation/expiration to apply
3023         to a uid/key with no entry in the trustdb.
3024
3025 2002-03-29  David Shaw  <dshaw@jabberwocky.com>
3026
3027         * keyserver.c (printunquoted): unquote backslashes from keyserver
3028         searches
3029
3030         * hkp.c (write_quoted): quote backslashes from keyserver searches
3031
3032 2002-03-26  Werner Koch  <wk@gnupg.org>
3033
3034         * keygen.c (ask_keysize): Removed the warning for key sizes > 1536.
3035
3036 2002-03-25  Werner Koch  <wk@gnupg.org>
3037
3038         * keyedit.c (sign_uids): Use 2 strings and not a %s so that
3039         translations can be done the right way.
3040         * helptext.c: Fixed small typo.
3041
3042 2002-03-23  David Shaw  <dshaw@jabberwocky.com>
3043
3044         * import.c (append_uid, merge_sigs): it is okay to import
3045         completely non-signed uids now (with --allow-non-selfsigned-uid).
3046
3047         * getkey.c (get_primary_uid, merge_selfsigs_main): do not choose
3048         an attribute packet (i.e. photo) as primary uid.  This prevents
3049         oddities like "Good signature from [image of size 2671]".  This is
3050         still not perfect (one can still select an attribute packet as
3051         primary in --edit), but is closer to the way the draft is going.
3052
3053         * g10.c (build_list): algorithms should include 110.
3054
3055         * g10.c (main): --pgp2 implies --no-ask-sig-expire and
3056         --no-ask-cert-expire as those would cause a v4 sig/cert.
3057
3058         * armor.c (is_armor_header): be more lenient in what constitutes a
3059         valid armor header (i.e. -----BEGIN blah blah-----) as some
3060         Windows programs seem to add spaces at the end.  --openpgp makes
3061         it strict again.
3062
3063 2002-03-18  David Shaw  <dshaw@jabberwocky.com>
3064
3065         * keyserver.c (keyserver_search_prompt): Properly handle a "no
3066         keys found" case from the internal HKP code (external HKP is ok).
3067         Also, make a COUNT -1 (i.e. streamed) keyserver response a little
3068         more efficient.
3069
3070         * g10.c (main): Add --no-allow-non-selfsigned-uid
3071
3072 2002-03-17  David Shaw  <dshaw@jabberwocky.com>
3073
3074         * g10.c (main): --openpgp implies --allow-non-selfsigned-uid.
3075
3076         * getkey.c (merge_selfsigs_main): If none of the uids are primary
3077         (because none are valid) then pick the first to be primary (but
3078         still invalid).  This is for cosmetics in case some display needs
3079         to print a user ID from a non-selfsigned key.  Also use
3080         --allow-non-selfsigned-uid to make such a key valid and not
3081         --always-trust.  The key is *not* automatically trusted via
3082         --allow-non-selfsigned-uid.
3083
3084         * mainproc.c (check_sig_and_print): Make sure non-selfsigned uids
3085         print [uncertain] on verification even though one is primary now.
3086
3087         * getkey.c (merge_selfsigs): If the main key is not valid, then
3088         neither are the subkeys.
3089
3090         * import.c (import_one): Allow --allow-non-selfsigned-uid to work
3091         on completely unsigned keys.  Print the uids in UTF8.  Remove
3092         mark_non_selfsigned_uids_valid().
3093
3094         * keyedit.c (show_key_with_all_names): Show revocation key as
3095         UTF8.
3096
3097         * sign.c (clearsign_file): Allow --not-dash-escaped to work with
3098         v3 keys.
3099
3100 2002-03-14  Werner Koch  <wk@gnupg.org>
3101
3102         * main.h: Changed the default algorithms to CAST5 and SHA1.
3103
3104 2002-03-13  David Shaw  <dshaw@jabberwocky.com>
3105
3106         * import.c (chk_self_sigs): Show which user ID a bad self-sig
3107         (invald sig or unsupported public key algorithm) resides on.
3108
3109         * import.c (chk_self_sigs): any valid self-sig should mark a user
3110         ID or subkey as valid - otherwise, an attacker could DoS the user
3111         by inventing a bogus invalid self-signature.
3112
3113 2002-03-07  David Shaw  <dshaw@jabberwocky.com>
3114
3115         * g10.c (main): make a few more strings translatable.
3116
3117         * options.h, options.skel, g10.c (main), gpgv.c, mainproc.c
3118         (check_sig_and_print), keyserver.c (parse_keyserver_options):
3119         --auto-key-retrieve should really be a keyserver-option variable.
3120
3121         * import.c (revocation_present): new function to print a warning
3122         if a key is imported that has been revoked by designated revoker,
3123         but the designated revoker is not present to verify the
3124         revocation.  If keyserver-options auto-key-retrieve is set, try
3125         and fetch the designated revoker from the keyserver.
3126
3127         * import.c (import_one): call revocation_present after importing a
3128         new key.  Note that this applies to --import, --recv-keys, and
3129         --search-keys.
3130         
3131         * keyserver-internal.h, keyserver.c (keyserver_import_fprint):
3132         import via fingerprint (for revocation keys).
3133
3134         * keyserver.c (keyserver_import_keyid): much simpler
3135         implementation now that we're using KEYDB_SEARCH_DESC internally.
3136
3137 2002-03-04  David Shaw  <dshaw@jabberwocky.com>
3138
3139         * revoke.c (gen_revoke): do not prompt for revocation reason for
3140         v3 revocations (unless force-v4-certs is on) since they wouldn't
3141         be used anyway.
3142
3143         * keyedit.c (menu_revsig): show the status of the sigs
3144         (exportable? revocable?) to the user before prompting for which
3145         sig to revoke.  Also, make sure that local signatures get local
3146         revocations.
3147
3148         * keyedit.c (ask_revoke_sig): remind the user which sigs are
3149         local.
3150
3151         * g10.c (main): Add "exec-path" variable to override PATH for
3152         execing programs.
3153
3154         * export.c (do_export_stream): properly check return code from
3155         classify_user_id to catch unclassifiable keys.
3156
3157 2002-03-03  David Shaw  <dshaw@jabberwocky.com>
3158
3159         * parse-packet.c (parse_signature): variable type tweak for RISC
3160         OS (from Stefan)
3161
3162 2002-02-28  David Shaw  <dshaw@jabberwocky.com>
3163
3164         * getkey.c (check_revocation_keys): New function to check a
3165         revocation against a list of potential revocation keys.  Note the
3166         loop-breaking code here.  This is to prevent blowing up if A is
3167         B's revocation key, while B is also A's.  Note also that this is
3168         written so that a revoked revoker can still issue revocations:
3169         i.e. If A revokes B, but A is revoked, B is still revoked.  I'm
3170         not completely convinced this is the proper behavior, but it
3171         matches how PGP does it.  It does at least have the advantage of
3172         much simpler code - my first version of this had lots of loop
3173         maintaining code so you could chain revokers many levels deep and
3174         if D was revoked, C was not, which meant that B was, and so on.
3175         It was sort of scary, actually.
3176
3177         * getkey.c (merge_selfsigs_main): Add any revocation keys onto the
3178         pk.  This is particularly interesting since we normally only get
3179         data from the most recent 1F signature, but you need multiple 1F
3180         sigs to properly handle revocation keys (PGP does it this way, and
3181         a revocation key could be marked "sensitive" and hence in a
3182         different signature).  Also, if a pk has a revocation key set,
3183         check for revocation sigs that were not made by us - if made by a
3184         valid revocation key, mark the pk revoked.
3185
3186         * packet.h, getkey.c (cache_public_key): do not cache key if
3187         "dont_cache" is set.  This allows the revocation key code to look
3188         up a key and return information that may be inaccurate to prevent
3189         loops without caching the fake data.
3190
3191         * packet.h, sig-check.c (do_signature_check): Record if a
3192         signature was made by a revoked pk.
3193
3194         * packet.h, parse-packet.c (parse_one_sig_subpkt,
3195         can_handle_critical, parse_signature): Get revocation key
3196         information out of direct sigs.
3197         
3198         * keylist.c (list_keyblock_print): don't assume that the presence
3199         of a 0x20 signature means the key is revoked.  With revocation
3200         keys, this may not be true if the revocation key is not around to
3201         verify it or if verification failed.  Also, 0x1F should get listed
3202         as "sig", and not "unexpected signature class".
3203
3204         * keyedit.c (show_key_with_all_names): Add a flag for printing
3205         revoker information and change all callers.
3206
3207         * import.c (merge_blocks): merge in any new direct key (0x1F)
3208         sigs.
3209
3210         * import.c (import_revoke_cert): don't keep processing after a
3211         revocation is rejected.
3212         
3213         * import.c (delete_inv_parts): Allow importing a revocation
3214         signature even if it was not issued by the key.  This allows a
3215         revocation key to issue it.  Of course, the sig still needs to be
3216         checked before we trust it.
3217
3218         * free-packet.c (copy_public_key): Include a new copy of the
3219         revocation keys when duping a pk.
3220
3221         * free-packet.c (free_seckey_enc, release_public_key_parts): Free
3222         any revocation keys that are attached to a sig or pk.
3223
3224         * export.c (do_export_stream): Do not export signatures with
3225         "sensitive" revocation keys in them.
3226
3227 2002-02-27  David Shaw  <dshaw@jabberwocky.com>
3228
3229         * export.c (do_export_stream): Do not include v3 keys in a
3230         --export-secret-subkeys export.
3231
3232         * getkey.c (merge_selfsigs_main): If a key isn't valid (say,
3233         because of no self-signature), allow --always-trust to force it
3234         valid so it can be trusted.
3235
3236 2002-02-25  David Shaw  <dshaw@jabberwocky.com>
3237
3238         * hkp.c (hkp_ask_import), hkp.h, keyserver.c (all): treat key
3239         lists internally as fingerprints when possible.  All this is via
3240         KEYDB_SEARCH_DESC - no point in reinventing the wheel. This allows
3241         the helper program to search the keyserver by fingerprint if
3242         desired (and the keyserver supports it).  Note that automatic
3243         fingerprint promotion during refresh only applies to v4 keys as a
3244         v4 fingerprint can be easily changed into a long or short key id,
3245         and a v3 cannot.
3246
3247         * pubkey-enc.c, getkey.c, misc.c, main.h: Take two copies of
3248         hextobyte() from pubkey-enc.c and getkey.c and make them into one
3249         copy in misc.c.
3250
3251 2002-02-22  David Shaw  <dshaw@jabberwocky.com>
3252
3253         * keyserver.c (keyserver_search_prompt): Detect a "no keys found"
3254         case even if the helper program does not explicitly say how many
3255         keys were found.
3256
3257         * hkp.c (parse_hkp_index): Bug fix - don't report non-revoked keys
3258         as revoked in HKP key searches.
3259
3260 2002-02-19  Werner Koch  <wk@gnupg.org>
3261
3262         * parse-packet.c (parse_trust): Made parsing more robust.
3263
3264 2002-02-19  David Shaw  <dshaw@jabberwocky.com>
3265
3266         * hkp.c (parse_hkp_index): Catch corruption in HKP index lines
3267         (can be caused by broken or malicious keyservers).
3268
3269         * keyserver.c (keyserver_work): Add KEYSERVER_NOT_SUPPORTED for
3270         unsupported actions (say, a keyserver that has no way to search,
3271         or a readonly keyserver that has no way to add).  Also add a
3272         USE_EXTERNAL_HKP define to disable the internal HKP keyserver
3273         code.
3274
3275 2002-02-14  Werner Koch  <wk@gnupg.org>
3276
3277         * g10.c: New option --no-use-agent. 
3278
3279         * pkclist.c (check_signatures_trust): Always print the warning for
3280         unknown and undefined trust.  Removed the did_add cruft.  Reported
3281         by Janusz A. Urbanowicz.
3282
3283 2002-02-11  David Shaw  <dshaw@jabberwocky.com>
3284
3285         * hkp.c (parse_hkp_index): Bug fix - properly handle user IDs with
3286         colons (":") in them while HKP searching.
3287
3288 2002-02-09  David Shaw  <dshaw@jabberwocky.com>
3289
3290         * misc.c (pct_expando): More comments.
3291
3292         * keydb.h, sign.c (mk_notation_and_policy): Clarify what is a sig
3293         and what is a cert.  A sig has sigclass 0x00, 0x01, 0x02, or 0x40,
3294         and everything else is a cert.
3295
3296         * g10.c (main), keyedit.c (keyedit_menu): Add a "nrlsign" for
3297         nonrevocable and local key signatures.
3298
3299         * g10.c (main): Add a --no-force-mdc to undo --force-mdc.
3300
3301         * options.h, g10.c (main), cipher.c (write_header): Add a knob to
3302         --disable-mdc/--no-disable-mdc.  Off by default, of course, but is
3303         used in --pgp2 and --pgp6 modes.
3304         
3305         * pkclist.c (build_pk_list): Allow specifying multiple users in
3306         the "Enter the user ID" loop.  Enter a blank line to stop.  Show
3307         each key+id as it is added.
3308
3309         * keylist.c (show_policy_url), mainproc.c (print_notation_data):
3310         It is not illegal (though possibly silly) to have multiple policy
3311         URLs in a given signature, so print all that are present.
3312         
3313         * hkp.c (hkp_search): More efficient implementation of URL-ifying
3314         code.
3315
3316 2002-02-04  David Shaw  <dshaw@jabberwocky.com>
3317
3318         * main.h, misc.c (pct_expando): New function to generalize
3319         %-expando processing in any arbitrary string.
3320
3321         * photoid.c (show_photo): Call the new pct_expando function rather
3322         than expand strings internally.
3323         
3324         * sign.c (mk_notation_and_policy): Show policy URLs and notations
3325         when making a signature if show-policy/show-notation is on.
3326         %-expand policy URLs during generation.  This lets the user have
3327         policy URLs of the form "http://notary.jabberwocky.com/keysign/%K"
3328         which will generate a per-signature policy URL.
3329
3330         * main.h, keylist.c (show_policy_url, show_notation): Add amount
3331         to indent so the same function can be used in key listings as well
3332         as during sig generation.  Change all callers.
3333
3334 2002-02-04  David Shaw  <dshaw@jabberwocky.com>
3335
3336         * keyserver.c, options.h (parse_keyserver_options, keyidlist):
3337         Workaround for the pksd and OKS keyserver bug that calculates v4
3338         RSA keyids as if they were v3.  The workaround/hack is to fetch
3339         both the v4 (e.g. 99242560) and v3 (e.g. 68FDDBC7) keyids.  This
3340         only happens for key refresh while using the HKP scheme and the
3341         refresh-add-fake-v3-keyids keyserver option must be set.  This
3342         should stay off by default.
3343
3344 2002-02-03  David Shaw  <dshaw@jabberwocky.com>
3345
3346         * keyserver.c (keyserver_spawn): Bug fix - do not append keys to
3347         each other when --sending more than one.
3348
3349 2002-02-02  David Shaw  <dshaw@jabberwocky.com>
3350
3351         * options.h, g10.c (main), keyedit.c (sign_uids), sign.c
3352         (mk_notation_and_policy): Split "--set-policy-url" into
3353         "--cert-policy-url" and "--sig-policy-url" so the user can set
3354         different policies for key and data signing.  For backwards
3355         compatibility, "--set-policy-url" sets both, as before.
3356
3357 2002-01-30  Werner Koch  <wk@gnupg.org>
3358
3359         * g10.c (main): --gen-random --armor does now output a base64
3360         encoded string.
3361
3362 2002-01-28  David Shaw  <dshaw@jabberwocky.com>
3363
3364         * g10.c (main), options.h, pkclist.c (algo_available): --pgp6
3365         flag.  This is not nearly as involved as --pgp2.  In short, it
3366         turns off force_mdc, turns on no_comment, escape_from, and
3367         force_v3_sigs, and sets compression to 1.  It also restricts the
3368         user to IDEA (if present), 3DES, CAST5, MD5, SHA1, and RIPEMD160.
3369         See the comments above algo_available() for lots of discussion on
3370         why you would want to do this.
3371
3372 2002-01-27  David Shaw  <dshaw@jabberwocky.com>
3373
3374         * keygen.c (keygen_set_std_prefs): Comment
3375
3376         * keyedit.c (sign_uids): Bug fix - when signing with multiple
3377         secret keys at the same time, make sure each key gets the sigclass
3378         prompt.
3379
3380         * exec.c (exec_finish): Close the iobuf and FILE before trying to
3381         waitpid, so the remote process will get a SIGPIPE and exit.  This
3382         is only a factor when using a pipe to communicate.
3383
3384         * exec.c (exec_write): Disable cache-on-close of the fd iobuf (is
3385         this right?  Why is a fd iobuf cached at all?)
3386
3387 2002-01-26  Werner Koch  <wk@gnupg.org>
3388
3389         * g10.c, options.h: New option --gpg-agent-info
3390         * passphrase.c (agent_open): Let it override the environment info.
3391         * seckey-cert.c (check_secret_key): Always try 3 times when the
3392         agent is enabled.
3393         * options.skel: Describe --use-agent.
3394
3395 2002-01-24  David Shaw  <dshaw@jabberwocky.com>
3396
3397         * pubkey-enc.c (is_algo_in_prefs, get_it): Only check preferences
3398         against keys with v4 self sigs - there is really little point in
3399         warning for every single non-IDEA message encrypted to an old key.
3400
3401         * pkclist.c (select_algo_from_prefs): Only put in the fake IDEA
3402         preference if --pgp2 is on.
3403
3404         * mainproc.c (check_sig_and_print): Print "Expired" for expired
3405         but good signatures (this still prints "BAD" for expired but bad
3406         signatures).
3407
3408 2002-01-23  David Shaw  <dshaw@jabberwocky.com>
3409
3410         * keygen.c (ask_keysize): Cosmetic: don't present a RSA signing
3411         key as a "keypair" which can be 768 bits long (as RSA minimum is
3412         1024).
3413
3414         * pubkey-enc.c (is_algo_in_prefs): Allow IDEA as a fake preference
3415         for v3 keys with v3 selfsigs.
3416
3417 2002-01-22  David Shaw  <dshaw@jabberwocky.com>
3418
3419         * packet.h, getkey.c (merge_selfsigs_main), pkclist.c
3420         (select_algo_from_prefs): Implement the fake IDEA preference as
3421         per RFC2440:12.1.  This doesn't mean that IDEA will be used (the
3422         plugin may not be present), but it does mean that a v3 key with a
3423         v3 selfsig has an implicit IDEA preference instead of 3DES.  v3
3424         keys with v4 selfsigs use preferences as normal.
3425
3426         * encode.c (encode_crypt): if select_algo_from_prefs fails, this
3427         means that we could not find a cipher that both keys like.  Since
3428         all v4 keys have an implicit 3DES preference, this means there is
3429         a v3 key with a v3 selfsig in the list.  Use 3DES in this case as
3430         it is the safest option (we know the v4 key can handle it, and
3431         we'll just hope the v3 key is being used in an implementation that
3432         can handle it).  If --pgp2 is on, warn the user what we're doing
3433         since it'll probably break PGP2 compatibility.
3434
3435         * g10.c (main): Do not force using IDEA for encrypted files in
3436         --pgp2 mode - let the fake IDEA preference choose this for us for
3437         better compatibility when encrypting to multiple keys, only some
3438         of which are v3.
3439
3440         * keygen.c (keygen_set_std_prefs): Put 3DES on the end of the
3441         default cipher pref list (RFC2440: "...it is good form to place it
3442         there explicitly.").  If the user has the IDEA plugin installed,
3443         put a preference for IDEA *after* 3DES to effectively disable its
3444         use for everything except encrypting along with v3 keys.
3445
3446         * encode.c, g10.c, sign.c: Change the PGP2 warning line from
3447         "... will not be usable ..." to "... may not be usable ..." as the
3448         user could be using one of the enhanced PGP2 variations.
3449
3450         * helptext.c: Revise the sign_uid.class help text as suggested by
3451         Stefan.
3452         
3453 2002-01-20  Werner Koch  <wk@gnupg.org>
3454
3455         * passphrase.c (passphrase_to_dek): Add tryagain_text arg to be
3456         used with the agent.  Changed all callers.
3457         (agent_get_passphrase): Likewise and send it to the agent
3458         * seckey-cert.c (do_check): New arg tryagain_text.
3459         (check_secret_key): Pass the string to do_check.
3460         * keygen.c (ask_passphrase): Set the error text is required.
3461         * keyedit.c (change_passphrase): Ditto.
3462
3463         * passphrase.c (agent_open): Disable opt.use_agent in case of a
3464         problem with the agent. 
3465         (agent_get_passphrase): Ditto.
3466         (passphrase_clear_cache): Ditto.
3467
3468 2002-01-19  Werner Koch  <wk@gnupg.org>
3469
3470         * passphrase.c (agent_open): Add support for the new Assuan based
3471         gpg-agent.  New arg to return the used protocol version.
3472         (agent_get_passphrase): Implemented new protocol here.
3473         (passphrase_clear_cache): Ditto.
3474         (readline): New.
3475         
3476 2002-01-15  Timo Schulz  <ts@winpt.org>
3477
3478         * encode.c (encode_crypt_files): Fail if --output is used.
3479         
3480         * g10.c: New command --decrypt-files.
3481
3482         * decrypt.c (decrypt_messages): New.
3483         
3484 2002-01-09  David Shaw  <dshaw@jabberwocky.com>
3485
3486         * g10.c, misc.c, gpgv.c: move idea_cipher_warn to misc.c so gpgv.c
3487         doesn't need a stub for it any longer.
3488
3489         * g10.c (get_temp_dir), main.h: no longer used (it's in exec.c now)
3490
3491         * g10.c (main), delkey.c (delete_keys), main.h : Allow
3492         --delete-key (now --delete-keys, though --delete-key still works,
3493         of course) to delete multiple keys in one go.  This applies to
3494         --delete-secret-key(s) and --delete-secret-and-public-key(s) as
3495         well.
3496
3497 2002-01-09  Timo Schulz  <ts@winpt.org>
3498
3499         * encode.c (encode_crypt_files): Now it behaves like verify_files.
3500         
3501         * g10.c (main): We don't need to check argc for encode_crypt_files
3502         any longer.
3503
3504 2002-01-09  Timo Schulz  <ts@winpt.org>
3505
3506         * exec.c: Include windows.h for dosish systems.
3507
3508 2002-01-08  Timo Schulz  <ts@winpt.org>
3509
3510         * g10.c (main): New description for --encrypt-files.
3511
3512 2002-01-08  Werner Koch  <wk@gnupg.org>
3513
3514         * g10.c (main): Must register the secring for encryption because
3515         it is needed to figure out the default recipient.  Reported by
3516         Roger Sondermann.
3517
3518 2002-01-05  David Shaw  <dshaw@jabberwocky.com>
3519
3520         * keyedit.c (menu_adduid): Require --expert before adding a photo
3521         ID to a v3 key, and before adding a second photo ID to any key.
3522
3523         * keyedit.c (keyedit_menu): Don't allow adding photo IDs in
3524         rfc1991 or pgp2 mode.
3525
3526         * getkey.c (merge_selfsigs_subkey): Permit v3 subkeys.  Believe it
3527         or not, this is allowed by rfc 2440, and both PGP 6 and PGP 7 work
3528         fine with them.
3529
3530         * g10.c, options.h, keyedit.c, sign.c: Move the "ask for
3531         expiration" switch off of --expert, which was getting quite
3532         overloaded, and onto ask-sig-expire and ask-cert-expire.  Both
3533         default to off.
3534
3535         * g10.c (main): Change the default compression algo to 1, to be
3536         more OpenPGP compliant (PGP also uses this, so it'll help with
3537         interoperability problems as well).
3538
3539         * encode.c (encode_crypt): Handle compression algo 2, since the
3540         default is now 1.
3541
3542         * build-packet.c (build_attribute_subpkt): Fix off-by-one error.
3543
3544 2002-01-05  Werner Koch  <wk@gnupg.org>
3545
3546         * g10.c (main): Do not register the secret keyrings for certain
3547         commands.
3548
3549         * keydb.c (keydb_add_resource): Use access to test for keyring
3550         existence.  This avoids cached opened files which are bad under
3551         RISC OS.
3552
3553 2002-01-04  David Shaw  <dshaw@jabberwocky.com>
3554
3555         * sign.c (sign_file, sign_symencrypt_file): always use one-pass
3556         packets unless rfc1991 is enabled.  This allows a signature made
3557         with a v3 key to work in PGP 6 and 7.  Signatures made with v4
3558         keys are unchanged.
3559
3560         * g10.c (main): Disallow non-detached signatures in PGP2 mode.
3561         Move the "you must use files and not pipes" PGP2 warning up so all
3562         the PGP2 stuff is together.
3563
3564         * encode.c (encode_simple): Use the actual filesize instead of
3565         partial length packets in the internal literal packet from a
3566         symmetric message.  This breaks PGP5(?), but fixes PGP2, 6, and 7.
3567         It's a decent tradeoff.  Note there was only an issue with
3568         old-style RFC1991 symmetric messages.  2440-style messages in 6
3569         and 7 work with or without partial length packets.
3570
3571 2002-01-03  David Shaw  <dshaw@jabberwocky.com>
3572
3573         * g10.c (main): Removed --no-default-check-level option, as it is
3574         not consistent with other "default" options.  Plus, it is the same
3575         as saying --default-check-level 0.
3576
3577         * exec.c (exec_read): Disallow caching tempfile from child
3578         process, as this keeps the file handle open and can cause unlink
3579         problems on some platforms.
3580
3581         * keyserver.c (keyserver_search_prompt): Minor tweak - don't
3582         bother to transform keyids into textual form if they're just going
3583         to be transformed back to numbers.
3584
3585 2002-01-03  Timo Schulz <ts@winpt.org>
3586
3587         * g10.c: New command --encrypt-files.
3588     
3589         * verify.c (print_file_status): Removed the static because
3590         encode_crypt_files also uses this function.
3591
3592         * main.h (print_files_status): New.
3593         (encode_crypt_files): New.
3594
3595         * encode.c (encode_crypt_files): New.
3596
3597 2002-01-02  Stefan Bellon  <sbellon@sbellon.de>
3598
3599         * keyserver.c: Moved util.h include down in order to avoid
3600         redefinition problems on RISC OS.
3601
3602         * keyring.c (keyring_lock): Only lock keyrings that are writable.
3603
3604         * keyring.c (keyring_update_keyblock): Close unused iobuf.
3605
3606         * hkp.c (parse_hkp_index, hkp_search) [__riscos__]: Changed
3607         unsigned char* to char* because of compiler issues.
3608
3609         * exec.c (exec_finish) [__riscos__]: Invalidate close cache so
3610         that file can be unlinked.
3611
3612 2001-12-28  David Shaw  <dshaw@jabberwocky.com>
3613
3614         * g10.c (main): Use a different strlist to check extensions since
3615         they need to be handled seperately now.
3616
3617         * misc.c,main.h (check_permissions): Properly handle permission
3618         and ownership checks on files in the lib directory
3619         (e.g. /usr/local/lib/gnupg), which are owned by root and are
3620         world-readable, and change all callers to specify extension or
3621         per-user file.
3622
3623         * photoid.c (show_photo), keyserver.c (keyserver_spawn): Bug fix -
3624         don't call exec_finish if exec_write fails.
3625
3626         * keyserver.c (keyserver_spawn): Look for OPTIONS from the
3627         keyserver helper - specifically, a "OUTOFBAND" option for the
3628         email keyserver.
3629
3630         * mainproc.c (list_node), keylist.c (list_keyblock_colon),
3631         import.c (delete_inv_parts), export.c (do_export_stream): Use
3632         signature flags for exportability check rather than re-parsing the
3633         subpacket.
3634
3635         * keyid.c, keydb.h (get_lsign_letter): No longer needed.
3636
3637 2001-12-27  David Shaw  <dshaw@jabberwocky.com>
3638
3639         * exec.c (exec_finish): Show errors when temp files cannot be
3640         deleted for whatever reason.
3641
3642         * exec.c (exec_read): Don't rely on WEXITSTATUS being present.
3643
3644         * exec.c (make_tempdir): Add temp file creator for win32.  Don't
3645         create an incoming temp file if the exec is write-only.
3646
3647         * keyserver.c (keyserver_spawn): Clean up error handling, for when
3648         the spawn fails.
3649
3650         * photoid.c (show_photo): Clean up error handling.
3651
3652         * misc.c (check_permissions): Neaten.
3653
3654 2001-12-25  David Shaw  <dshaw@jabberwocky.com>
3655
3656         * mkdtemp.c (mkdtemp): Add copyleft info and tweak the 'X' counter
3657         to be a bit simpler.
3658
3659         * keyserver.c, photoid.c: Remove unused headers left over from
3660         when the exec functions lived there.
3661
3662 2001-12-23  Timo Schulz <ts@winpt.org>
3663
3664         * misc.c (check_permissions): Do not use it for W32 systems.
3665
3666         * tdbio.c (migrate_from_v2): Define ftruncate as chsize() for W32.
3667
3668         * mkdtemp.c: W32 support.
3669
3670         * photoid.c: Ditto.
3671
3672         * exec.c: Ditto.
3673
3674 2001-12-22  David Shaw  <dshaw@jabberwocky.com>
3675
3676         * exec.c (make_tempdir): avoid compiler warning with const
3677
3678         * mkdtemp.c (mkdtemp): catch the empty ("") string case in case
3679         someone repurposes mkdtemp at some point.
3680
3681         * photoid.c (generate_photo_id, show_photo): some type changes
3682         from Stefan Bellon.
3683
3684         * exec.c (make_tempdir): handle Win32 systems, suggested by Timo
3685         Schulz.
3686
3687 2001-12-22  Werner Koch  <wk@gnupg.org>
3688
3689         * encode.c (encode_simple, encode_crypt): i18n 2 strings.
3690
3691 2001-12-22  Timo Schulz <ts@winpt.org>
3692         
3693         * encode.c (encode_simple, encode_crypt): Use is_file_compressed
3694         to avoid to compress compressed files.
3695
3696 2001-12-22  Werner Koch  <wk@gnupg.org>
3697
3698         * keyserver.c (keyserver_spawn): Removed some variables
3699         declaration due to shadowing warnings.
3700
3701         * build-packet.c (build_attribute_subpkt): s/index/idx/ to avoid
3702         compiler warnig due to index(3).
3703
3704         * getkey.c (get_ctx_handle): Use KEYDB_HANDLE as return value.
3705         * keylist.c (list_one): Made resname const.
3706
3707         * keyedit.c (keyedit_menu): Allow "addphoto" only when --openpgp is
3708         not used.
3709
3710         * options.skel: Changed one example photo viewer to qiv.
3711
3712 2001-12-21  David Shaw  <dshaw@jabberwocky.com>
3713
3714         * Makefile.am: add exec.c, exec.h, photoid.c, and photoid.h
3715
3716         * build-packet.c (build_attribute_subpkt): new function to build
3717         the raw attribute subpacket.  Note that attribute subpackets have
3718         the same format as signature subpackets.
3719
3720         * exec.c: new file with generic exec-a-program functionality.
3721         Used by both photo IDs and keyserver helpers.  This is pretty much
3722         the same code that used to be keyserver specific, with some
3723         changes to be usable generically.
3724
3725         * free-packet.c (free_attributes (new)): function to free an
3726         attribute packet.
3727         
3728         * gpgv.c: added stub show_photo
3729         
3730         * keyedit.c (keyedit_menu, menu_adduid, menu_showphoto): can add a
3731         photo (calls generate_photo_id), or display a photo (calls
3732         show_photo) from the --edit menu.  New commands are "addphoto",
3733         and "delphoto" (same as "deluid").
3734
3735         * keylist.c (list_keyblock_print): show photos during key list if
3736         --show-photos enabled.
3737         
3738         * keyserver.c (keyserver_spawn): use the generic exec_xxx
3739         functions to call keyserver helper.
3740
3741         * g10.c, options.h: three new options - --{no-}show-photos, and
3742         --photo-viewer to give the command line to display a picture.
3743
3744         * options.skel: instructions for the photo viewer
3745         
3746         * parse-packet.c (parse_user_id, setup_user_id (new)): common code
3747         for both user IDs and attribute IDs moved to setup_user_id.
3748
3749         * parse-packet.c (make_attribute_uidname (new)): constructs a fake
3750         "name" for attribute packets (e.g. "[image of size ...]")
3751
3752         * parse-packet.c (parse_attribute (replaces parse_photo_id),
3753         parse_attribute_subpkts): Builds an array of individual
3754         attributes.  Currently only handles attribute image / type jpeg
3755         subpackets.
3756
3757         * sign.c (hash_uid): Fix bug in signing attribute (formerly
3758         photo_id) packets.
3759
3760         * packet.h, and callers: globally change "photo_id" to "attribute"
3761         and add structures for attributes.  The packet format is generic
3762         attributes, even though the only attribute type thus far defined
3763         is jpeg.
3764
3765 2001-12-21  David Shaw  <dshaw@jabberwocky.com>
3766
3767         * parse-packet.c (can_handle_critical): Can handle critical
3768         revocation subpackets now.
3769
3770         * trustdb.c (mark_usable_uid_certs): Disregard revocations for
3771         nonrevocable sigs.  Note that this allows a newer revocable
3772         signature to override an older nonrevocable signature.
3773
3774         * sign.c (make_keysig_packet): add a duration field and change all
3775         callers.  This makes make_keysig_packet closer to
3776         write_signature_packets and removes some duplicated expiration
3777         code.
3778
3779         * keyedit.c (keyedit_menu, menu_revsig, sign_uids,
3780         sign_mk_attrib): Add nrsign command, don't allow revoking a
3781         nonrevocable signature,
3782
3783         * g10.c (main): Add --nrsign option to nonrevocably sign a key
3784         from the command line.
3785
3786         * build-packet.c (build_sig_subpkt_from_sig): Comment to explain
3787         the use of CRITICAL.
3788
3789 2001-12-21  Werner Koch  <wk@gnupg.org>
3790
3791         * g10.c. options.h : New option --show-keyring
3792         * getkey.c (get_ctx_handle): New.
3793         * keylist.c (list_one): Implement option here.  By David Champion. 
3794
3795 2001-12-20  David Shaw  <dshaw@jabberwocky.com>
3796
3797         * keyserver.c (keyserver_spawn): Use mkdtemp() to make temp
3798         directory.
3799
3800         * mkdtemp.c: replacement function for those platforms that don't
3801         have mkdtemp (make a temp directory securely).
3802
3803 2001-12-19  David Shaw  <dshaw@jabberwocky.com>
3804
3805         * misc.c (check_permissions): New function to stat() and ensure
3806         the permissions of GNUPGHOME and the files have safe permissions.
3807
3808         * keydb.c (keydb_add_resource): Check keyring permissions.
3809
3810         * tdbio.c (tdbio_set_dbname): Check permissions of trustdb.gpg
3811
3812         * keyserver.c (keyserver_spawn): Disable keyserver schemes that
3813         involve running external programs if the options file has unsafe
3814         permissions or ownership.
3815
3816         * g10.c, options.h: New option --no-permission-warning to disable
3817         the permission warning message(s).  This also permits use of the
3818         keyserver if it had been disabled (see above).  Also check the
3819         permissions/ownership of random_seed.
3820         
3821         * keyserver.c (keyserver_spawn): The new glibc prints a warning
3822         when using mktemp() (the code was already secure, but the warning
3823         was bound to cause confusion).  Use a different implementation
3824         based on get_random_bits() instead.  Also try a few times to get
3825         the temp dir before giving up.
3826
3827 2001-12-19  Werner Koch  <wk@gnupg.org>
3828
3829         * g10.c, passphrase.c [CYGWIN32]: Allow this as an alias for MINGW32.
3830
3831 2001-12-18  David Shaw  <dshaw@jabberwocky.com>
3832
3833         * g10.c (idea_cipher_warn): Add a flag to show the warning always
3834         or once per session and change all callers (show always except for
3835         the secret key protection and unknown cipher from an encrypted
3836         message errors).  Also make the strings translatable.
3837
3838         * pubkey-enc.c (get_it): Add the IDEA cipher warning if the user
3839         tries to decrypt an IDEA encrypted message without the IDEA
3840         plugin.
3841
3842         * keyserver.c (parse_keyserver_uri): More strict checking of the
3843         keyserver URI.  Specifically, fail if the ":port" section is
3844         anything except a number between 1 and 65535.
3845
3846 2001-12-17  David Shaw  <dshaw@jabberwocky.com>
3847
3848         * keyserver.c (print_keyinfo): No need to check for
3849         control/illegal characters, as utf8_to_native does this for us.
3850
3851         * mainproc.c (proc_encrypted): Use generic IDEA warning.
3852
3853         * gpgv.c: add stub for idea_cipher_warn
3854
3855         * g10.c, hkp.c, keyserver.c: Fix capitalization and plural issues.
3856
3857         * encode.c (encode_crypt), sign.c (sign_file, clearsign_file):
3858         disable pgp2 mode after the message is no longer pgp2 compatible.
3859
3860         * g10.c (main): Tweak the PGP2.x IDEA warning to use the generic
3861         warning, and not merely fail if the IDEA plugin isn't there.
3862
3863         * g10.c (main, idea_cipher_warn), keygen.c (set_one_pref),
3864         seckey-cert.c (do_check): Add a generic IDEA warning for when the
3865         IDEA plugin is not present.  This pops up when the user uses
3866         "--cipher-algo idea", when setpref is used to set a "S1"
3867         preference, and when a secret key protected with IDEA is used.
3868
3869 2001-12-15  Werner Koch  <wk@gnupg.org>
3870
3871         * keyserver.c (keyserver_spawn): Assert that we have dropped privs.
3872
3873 2001-12-13  Werner Koch  <wk@gnupg.org>
3874
3875         * pubkey-enc.c (get_session_key): Check that the public key
3876         algorithm is indeed usable for en/decryption.  This avoid a
3877         strange error message from pubkey_decrypt if for some reasons a
3878         bad algorithm indentifier is passed.
3879
3880 2001-12-12  David Shaw  <dshaw@jabberwocky.com>
3881
3882         * Fixed some types for portability.  Noted by Stefan Bellon.
3883
3884 2001-12-11  Werner Koch  <wk@gnupg.org>
3885
3886         * hkp.c (hkp_export): Do not print possible control characters
3887         from a keyserver response.
3888         (parse_hkp_index): Made uid an unsigned char* because it is passed to
3889         isspace().
3890         (hkp_search): Ditto for the char* vars.
3891
3892         * g10.c (main): Print the IDEA warning also for -c and -se.
3893         
3894         * g10.c (get_temp_dir): Assert that we have dropped privs
3895
3896         * encode.c (encode_crypt): Include the first key into the --pgp2
3897         check.
3898
3899 2001-12-07  David Shaw  <dshaw@jabberwocky.com>
3900
3901         * g10.c, options.h: New option --pgp2.  This is identical to
3902         "--rfc1991 --cipher-algo idea --compress-algo 1 --digest-algo md5
3903         --force_v3_sigs" with the addition of an warning to advise the
3904         user not to use a pipe (which would break pgp2 compatibility).
3905
3906         * encode.c (encode_crypt): warn if the user tries to encrypt to
3907         any key that is not RSA and <= 2048 bits when the --pgp2 option is
3908         used.
3909
3910         * sign.c (sign_file, clearsign_file): When using --pgp2, make a v3
3911         sig, and warn if the signature is made with a non-v3 key.
3912
3913 2001-12-05  David Shaw  <dshaw@jabberwocky.com>
3914
3915         * sign.c (sign_file, clearsign_file, sign_symencrypt_file): Prompt
3916         for sig expiration if --expert is set and --force-v3-sigs is not
3917         set (v3 sigs cannot expire).
3918
3919         * mainproc.c (check_sig_and_print): After checking a sig, print
3920         expiration status.  This causes a error return if the sig is
3921         expired.
3922
3923         * build-packet.c (build_sig_subpkt_from_sig): Include a critical
3924         sig expiration subpacket if the sig is to expire.
3925
3926         * keyedit.c (sign_uids): Do not sign an expired key unless
3927         --expert is set, in which case prompt.  Also, offer to expire a
3928         signature when the key the user is signing expires.
3929
3930         * keygen.c (ask_expire_interval): Add a value to determine whether
3931         to prompt for a key or sig expiration and change all callers.
3932
3933         * keyid.c: New functions: expirestr_from_sig and
3934         colon_expirestr_from_sig.
3935
3936         * keylist.c (list_keyblock_colon): Show sig expiration date in the
3937         --with-colons listing.
3938
3939         * sign.c (make_keysig_packet, write_signature_packets): Pass in an
3940         optional timestamp for the signature packet, and change all
3941         callers.
3942
3943         * keyedit.c (sign_mk_attrib): Include a critical expiration
3944         subpacket in the signature if an expiration date is given.
3945
3946 2001-12-04  David Shaw  <dshaw@jabberwocky.com>
3947
3948         * keyedit.c (sign_uids): If the user tries to sign a
3949         locally-signed key, allow the cert to be promoted to a full
3950         exportable signature.  This essentially deletes the old
3951         non-exportable sig, and replaces it with a new exportable one.
3952
3953 2001-12-04  David Shaw  <dshaw@jabberwocky.com>
3954
3955         * keyedit.c (keyedit_menu): Do not allow signing a revoked key
3956         unless --expert is set, and ask even then.
3957
3958         * keyedit.c (sign_uids): Do not allow signing a revoked UID unless
3959         --expert is set, and ask even then.
3960
3961         * g10.c, options.h : New option --expert
3962
3963 2001-11-16  David Shaw  <dshaw@jabberwocky.com>
3964
3965         * Allow the user to select no compression via "--compress-algo 0"
3966         on the command line.
3967
3968         * keyedit.c (show_prefs): Show compression preferences in the
3969         long-form "showpref" style.
3970
3971         * keygen.c (set_one_pref): Permit setting a no-compression ("Z0")
3972         preference.
3973
3974         * getkey.c (fixup_uidnode): Fix compression preference corruption
3975         bug.
3976
3977 2001-12-02  David Shaw  <dshaw@jabberwocky.com>
3978
3979         * g10.c: Add advisory --for-your-eyes-only option as per section
3980         5.9 of 2440.
3981
3982 2001-12-05  David Shaw  <dshaw@jabberwocky.com>
3983
3984         * Force a V4 sig if the user has a notation or policy URL set.
3985
3986 2001-12-04  David Shaw  <dshaw@jabberwocky.com>
3987
3988         * g10.c: Add options --keyserver-options, --temp-directory, and
3989         auto-key-retrieve (the opposite of no-auto-key-retrieve).
3990
3991         * hkp.c (hkp_search): New function to handle searching a HKP
3992         keyserver for a key
3993
3994         * hkp.c (hkp_ask_import, hkp_export): Pretty large changes to make
3995         them communicate via the generic functions in keyserver.c
3996
3997         * keyserver.c: new file with generic keyserver routines for
3998         getting keys