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