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