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