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