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