* gpg-agent.c (main): Use default_homedir().
[gnupg.git] / g10 / ChangeLog
index 6d3aa7c..bd4b548 100644 (file)
-Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>
+2004-12-21  Werner Koch  <wk@g10code.com>
 
-  Replaced everything with the code from the STABLE-BRANCH-1-0 and
-  started to backport the changes from the 1.1 development branch
-  which are dated according to the ChangeLog of the 1.1 from
-  Sat Sep 18 12:16:08 CEST 1999  to  Thu May 25 18:39:11 CEST 2000.
-  Here are those changes, some of them are duplicates because they
-  have been done on both branch simultaneously.
+       * gpgv.c, g10.c (main): Use default_hoemdir ().
 
-  * gpg.c (print_mds): Add arg keys as a kludge to print hmacs
-  (main): New option --print-hmac.
+2004-12-18  Werner Koch  <wk@g10code.com>
 
-  * trustdb.c (verify_own_keys): Do not print warning about unprotected
-  key when in quiet mode.
+       * gpg.h (map_assuan_err): Define in terms of
+       map_assuan_err_with_source.
 
-  * build-paket.c (do_user_id): Save offset where name has been stored.
+2004-12-15  Werner Koch  <wk@g10code.com>
 
-  * ringedit.c : Add new access method KBXF
+       * Makefile.am (LDADD): Remove ZLIBS.
 
-  * kbxfile.c: New.
+2004-10-22  Werner Koch  <wk@g10code.com>
 
-  * kbx.h: New.
-  * kbxblob.c: Started to work on the keybox stuff.
+       * g10.c (main): Display a bit fat warning that this gpg should not
+       be used.
 
-  * keygen.c (gen_dsa): Modified to work with gcry_pk_genkey.
+       * card-util.c (fetch_url): Disable for gnupg 1.9
+       (card_generate_subkey): Ditto.
+       (card_store_subkey): Ditto.
 
-  * Removed dummy-cipher.h from all files.
+2004-09-30  Werner Koch  <wk@g10code.com>
 
-  * keygen.c (gen_elg): Modified to work with gcry_pk_genkey.
-  (key_from_sexp): New.
-  (factors_from_sexp): New.
+       * gpgv.c (i18n_init): Always use LC_ALL.
 
-  * g10.c : Renamed to ...
-  * gpg.c : ... this
-  * Makefile.am: And fixed it here.
+       * Makefile.am (LDADD): Adjusted for gettext 0.14.
 
-  * Changed all "g10_"/"GPG_" prefixes to "gpg_"/"GPG_".
+2004-09-20  Werner Koch  <wk@g10code.com>
 
-  * misc.c (mpi_read_opaque): Fixed double counting.
+       * keyedit.c (show_key_with_all_names): Print the card S/N.
 
-  * seckey-cert.c (do_check): Removed buffer and the unmotivated free
-  on it.
+2004-09-11  Moritz Schulte  <moritz@g10code.com>
 
-  * pubkey-enc.c (pk_decrypt): New wrapper for the gcry_ function.
-  * seckey-cert.c (pk_check_secret_key): Likewise.
-  * encode.c (pk_encrypt): Likewise.
+       * openfile.c (copy_options_file): Fixed last commit (added a `+').
 
-  * parse-packet.c (parse_key): Fixed case of unencrypted secret keys.
+2004-08-31  Werner Koch  <wk@g10code.de>
 
-  * misc.c (mpi_print): Use gcry_mpi_aprint.
-  (pubkey_nbits): Kludge to use the gcry_pk_ API.
+       * openfile.c (copy_options_file): Use gpg-conf.skel. Better take
+       the length of SKELEXT into account, someone might make it larger.
+       * Makefile.am: Install options.skel as gpg-conf.skel.
 
-  * seskey.c (encode_session_key): Replaced mpi_set_buffer by *_scan.
-  (do_encode_md): Ditto.
-  (encode_md_value): Ditto.
-  * seckey-cert.c (protect_secret_key): Ditto.
-  * comment.c (make_mpi_comment_node): Replaced mpi_get_buffer by _print.
-  * pubkey-enc.c (get_it): Ditto.
-  * sig-check.c (do_signature_check): Ditto.
+2004-08-18  Marcus Brinkmann  <marcus@g10code.de>
 
-  * keyid.c (do_fingerprint_md): Replaced mpi_get_buffer by gcry_mpi_print.
-  (v3_keyid): New.
-  (keyid_from_sk): And use it here.
-  (keyid_from_pk): Ditto.
-  (fingerprint_from_sk): Ditto.
-  (fingerprint_from_pk): Ditto.
+       * passphrase.c (agent_get_passphrase): Fix detection of gpg-agent
+       cancellation.
 
-  * misc.c (mpi_print): New.
+2004-07-01  Werner Koch  <wk@gnupg.org>
 
-  * misc.c (checksum_mpi): Now uses gcry_mpi_print to get the data.
+       * card-util.c (change_login): Kludge to allow reading data from a
+       file.
+       (card_edit): Pass ARG_STRING to change_login.
+       (card_status): Print CA fingerprints.
+       (change_cafpr): New.
+       (card_edit): New command CAFPR.
 
-  * seckey-cert.c (do_check): Replaced mpi_read_from_buffer.
+       * call-agent.h: Add members for CA fingerprints.
+       * call-agent.c (agent_release_card_info): Invalid them.
+       (learn_status_cb): Store them.
 
-  * armor.c (armor_filter): Made the "Comment:" header translatable.
+2004-04-30  Werner Koch  <wk@gnupg.org>
 
-  * seckey-cert.c: Removed obsolete mpi_*_protect_flag.
-  * parse-packet.c: Ditto.
+       * g10.c (main) <gpgconf>: Use gpg.conf and not /dev/null as
+       default filename.
 
-  * misc.c (mpi_read): Removed the secure argumet becuase it is
-  never used.  Changed all Callers.
-  (mpi_read_opaque): New.
-  (mpi_write_opaque): New.
-  * parse-packet.c (parse_key): Use the opaque method also for
-  v3 keys.
-  * build-packet.c (do_secret_key): Likewise.
+2004-04-28  Werner Koch  <wk@gnupg.org>
 
-  * g10.c (main): Check libgcrypt version.
+       * card-util.c (card_edit): Remove PIN verification.
+       (generate_card_keys): New arg SERIALNO.  Do PIN verification here
+       after resetting forced_chv1.
 
-  * packet.h: replaced inclusion of mpi.h by a plain typeedef of the
-  gcry_mpi structure and removed all inclusions of "mpi.h" in all
-  sources.
+2004-04-26  Werner Koch  <wk@gnupg.org>
 
-  * g10.c: Add --delete-secret-key to the help page.
+       * card-util.c (change_name): Check that the NAME is not too long.
+       (change_url): Likewise.
+       (change_login): Likewise.
 
-  * g10.c (main): Changed the default homedir to "~/.gnupg-test" so
-  that we don't mess up with the stable version.
+2004-03-23  Werner Koch  <wk@gnupg.org>
 
-  * misc.c (mpi_write): New.
-  (mpi_write): New.
+       * g10.c: New options --gpgconf-list, --debug-level and --log-file
+       (set_debug): Add arg DEBUG_LEVEL.
+       (main): Look at less and less version specific config files.  From
+       gnupg 1.3.
 
-  * misc.c (checksum_u16_nobug): Removed.
-  (checksum_mpi_counted_nbits): Renamed to ...
-  (checksum_mpi): ... this to superseed the old one. Changed all
-  callers. This is because we do not emulate the old gpg bug anymore.
-  * g10.c (oEmuChecksumBug): Removed.
+2004-02-17  Werner Koch  <wk@gnupg.org>
 
-  * g10.c (register_extension): New...
-  (main): Use it here instead of register_cipher_extesnion.
-  (strusage): s/strusage/my_strusage/ . Made static.
-  (main): Use set_strusage().
+       * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
+       * passphrase.c (agent_open): Ditto.
 
-  * tdbdump.c (HEXTOBIN): Changed the name of the argument, so that
-  traditional cpp don't mess up the macros. Suggested by Jos Backus.
+2004-02-12  Werner Koch  <wk@gnupg.org>
 
-  * armor.c (parse_header_line): Stop parsing on a only WS line too.
-  Suggested by Aric Cyr.
+       * gpgv.c: Removed g10defs.h.
 
-  * misc.c (pull_in_libs): Removed.
+       * Makefile.am: Include cmacros.am for common flags.
 
-  * mainproc.c (list_node): Print the PK algo in the --with-colon mode.
-  * keylist.c (list_keyblock): Ditto.
+2004-02-11  Werner Koch  <wk@gnupg.org>
 
-  * misc.c (pull_in_libs): Removed pull in of g10c.
+       * openfile.c (try_make_homedir): Use GNUPG_DEFAULT_HOMEDIR.
+       * gpgv.c (main): Ditto.
+       * g10.c (main): Ditto.
 
-  * misc.c (map_gcry_rc): Removed here and chnaged all users.
+2004-01-19  Moritz Schulte  <mo@g10code.com>
 
-  * getkey.c: Replaced check_pubkey_algo by openpgp_pk_test_algo.
-  * import.c (delete_inv_parts): Ditto.
-  * pkclist.c: Ditto.
-  * skclist.c: Ditto.
-  * pubkey-enc.c: Ditto.
+       * keygen.c (do_generate_keypair): Print member fname, instead of
+       newfname, again.
+       (do_generate_keypair): Don't try to execute certain pieces of code
+       in case an error occured.
+       (gen_card_key): Don't print out a message, which is already
+       printed by do_generate_keypair().
 
-  * g10.c (main): Replaced the function to diable PK algos.
+2004-01-18  Moritz Schulte  <mo@g10code.com>
 
-  * g10.c (main): Replaced get_random_bits by gcry_random_bytes.
-  * seskey.c (encode_session_key): Likewise.
-  (make_session_key): Renamed randomize_buffer to gcry_randomize
-  and use the GCRY_xxx_RANDOM constants.
-  * cipher.c (write_header): Ditto.
-  * passphrase.c (hash_passphrase): Ditto.
-  * seckey-cert.c (protect_secret_key): Ditto.
+       * keygen.c (do_generate_keypair): Print member fname, instead of
+       newfname.
 
-  * getkey.c (find_by_name): Replaced rmd160_hash_buffer
-  by gcry_md_hash_buffer.
-  * keyedit.c (show_prefs): Ditto.
-  * keylist.c (list_keyblock): Ditto.
-  * trustdb.c (print_uid_from_keyblock): Ditto.
-  (make_uid_records): Ditto.
+2003-12-17  Werner Koch  <wk@gnupg.org>
 
-  * skclist.c (build_sk_list): Removed the test on faked RNGs.
-  (is_insecure): Removed.
-  * g10.c (--quick-random): Removed this option.
+       * card-util.c (print_name): Fixed bad format string usage.
+       (print_isoname): Ditto.
 
-  * Replaced all PUBKEY_ALGO_xxx by GCRY_PK_xxxx.
+       * trustdb.c (check_regexp): s/exp/expr/.
 
-  * misc.c (pubkey_algo_npkey): New as a wrapper around the gcry fucntion.
-  (pubkey_algo_nskey): Ditto.
-  (pubkey_algo_nsig): Ditto.
-  (pubkey_algo_nenc): Ditto.
+       * keyedit.c (trustsig_prompt): Removed a "> 255" term; it is
+       always false due to the data type.
+       
+       * passphrase.c (agent_get_passphrase): Use xasprintf and avoid
+       non-literal format strings.
 
-  * Makefile.am (basicdefs.h): Added.
-  (install-data-local): Removed the handling for historic gpgm.
+       * tdbio.c (upd_hashtable, drop_from_hashtable, lookup_hashtable):
+       Fixed log_error format string bugs.  Kudos to the now working
+       gcc-3.3 -Wformat-nonliteral and Florian Weimer's investigations in
+       gnupg 1.2.3.
 
-  * misc.c (openpgp_cipher_test_algo): New.
-  (openpgp_pk_test_algo): New.
-  (openpgp_md_test_algo): New.
+2003-12-15  Werner Koch  <wk@gnupg.org>
 
-  * g10.c (build_list): Changed to use the new functions from libgcrypt.
+       * seckey-cert.c (protect_secret_key): Use gry_create_nonce for the
+       IV; there is not need for real strong random here and it even
+       better protect the random bits used for the key.
 
-  * ringedit.c (enum_keyblocks): Set .rt to 0 on open.
+2003-11-16  Moritz Schulte  <mo@g10code.com>
 
-  * encode.c (encode_simple): Use new CTB when we don't have the
-  length of the file.  This is somewhat strange as the comment above
-  indicates that this part is actually fixed for PGP 5 - maybe I simply
-  lost the source line, tsss.
+       * signal.c: Removed unused file.
 
-  * sign.c (clearsign_file): Avoid duplicated Entries in the "Hash:"
-  line.  Those headers are now only _not_ printed when there are
-  only old-style keys _and_ all hashs are MD5.
+2003-11-10  Moritz Schulte  <mo@g10code.com>
 
-  (clearsign_file): Use gcry_md_test_algo() and gcry_md_algo_name().
+       * Makefile.am (INCLUDES): Added: @LIBGCRYPT_CFLAGS@.
 
-  * openfile.c (make_outfile_name): Use case-insenstive compare for
-  DOS systems. Add ".pgp" to the list of know extensions.
-  (open_outfile): For DOS systems try to replace the suffix instead of
-  appending it.
+2003-10-25  Werner Koch  <wk@gnupg.org>
 
-  * encr-data.c (decrypt_data): Reset error on a weak key.
+       * call-agent.c (learn_status_cb, scd_genkey_cb): Fixed faulty use
+       of !spacep().
 
-  * cipher.c: Replaced the cipher and digest functions by the gcry_ ones.
-  * seckey-cert.c: Ditto.
-  * seskey.c: Ditto.
-  * g10.c (print_mds): Replaced digst functions with the new gcry_ ones.
-  * keyid.c: Ditto.
-  * mainproc.c: Ditto.
-  * passphrase.c: Ditto.
-  * sig-check.c: Ditto.
-  * sign.c: Ditto.
+2003-10-20  Werner Koch  <wk@gnupg.org>
 
-  * pkclist.c (do_edit_ownertrust): Made the answer string const.
+       * card-util.c (card_edit): New command "passwd".  Add logic to
+       check the PIN in advance.
+       (card_status): Add new args to return the serial number.  Changed
+       all callers.
+       * call-agent.c (agent_scd_checkpin): New.
+
+2003-10-08  Werner Koch  <wk@gnupg.org>
+
+       * call-agent.c (agent_scd_getattr): Don't clear the passed info
+       structure, so that it can indeed be updated.
+
+       * card-util.c (fpr_is_zero): New.
+       (generate_card_keys): New.
+       (card_edit): New command "generate".
+       * keygen.c (generate_keypair): New arg CARD_SERIALNO, removed call
+       to check_smartcard.
+       (check_smartcard,show_smartcard): Removed.
+       (show_sha1_fpr,fpr_is_zero): Removed.
+
+2003-10-01  Werner Koch  <wk@gnupg.org>
+
+       * card-util.c: Tweaked to use this source also under 1.3. 
+
+2003-09-30  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (print_card_serialno): New.
+       (list_keyblock_print): Use it here.
+
+       * card-util.c (toggle_forcesig): New.
+       (card_edit): New command "forcesig".
+       
+       * card-util.c (print_name, print_isoname): Use 0 and not LF fro
+       the max_n arg of tty_print_utf8_string2.
+
+       * call-agent.c (agent_scd_getattr): New.
+       (learn_status_cb): Release values before assignment so that it can
+       be used by getattr to update the structure.
+       
+       * card-util.c (change_pin): Simplified.  We now have only a PIN
+       and an Admin PIN.
+
+2003-09-27  Werner Koch  <wk@gnupg.org>
+
+       * sign.c (do_sign): Removed disabled testcode.
+
+2003-09-26  Timo Schulz  <twoaday@freakmail.de>
+
+       * card_status (card_status): Do not use fputs since the fp
+       parameter can be NULL. This fixes a segv.
+       
+2003-09-24  Werner Koch  <wk@gnupg.org>
+
+       * card-util.c (print_isoname,card_status): Handle opt.with_colons.
+       (print_sha1_fpr_colon): New.
+
+2003-09-23  Werner Koch  <wk@gnupg.org>
+
+       Merged most of David Shaw's changes in 1.3 since 2003-06-03.
+       
+       * Makefile.am: Include W32LIBS where appropriate.
+
+       * armor.c (parse_hash_header,armor_filter): Drop TIGER/192 support.
+       * g10.c (print_hex,print_mds): Ditto.
+       * pkclist.c (algo_available): Ditto.
+
+       * armor.c (armor_filter): Allow using --comment multiple times to
+       get multiple Comment header lines.  --no-comments resets list.
+       * options.h, g10.c (main): Ditto. Deprecate --default-comment in
+       favor of --no-comments.
+
+       * g10.c (main): Trim --help to commonly used options.  Remove -f.
+
+       * g10.c (main): Add --multifile as an alias to turn --encrypt into
+       --encrypt-files (plus --verify-files, --decrypt-files).  Error out
+       if --multifile is used with the commands that don't support it yet.
+
+       * encode.c (use_mdc), g10.c (main): Use RFC1991 and RFC2440
+       directly to check for MDC usability.  Do not set the force_mdc or
+       disable_mdc flags since there is no point any longer.
+       
+       * g10.c (main): Use "keyserver-url" instead of
+       "preferred-keyserver" for the sake of short and simple commands.
+       (add_keyserver_url): Clarify a few strings.  It's a
+       "preferred keyserver URL".
+       * keyedit.c (keyedit_menu): Ditto.
+       * sign.c (mk_notation_policy_etc): Ditto. 
+
+       * main.h, keygen.c (keygen_add_keyserver_url): Signature callback
+       for adding a keyserver URL.
+       * keyedit.c (keyedit_menu, menu_set_keyserver_url): New command to
+       set preferred keyserver to specified (or all) user IDs.
+       * build-packet.c (build_sig_subpkt): Set preferred keyserver flag
+       while building a preferred keyserver subpacket.
+
+       * keylist.c (show_policy_url, show_keyserver_url): URLs might be
+       UTF8.
+
+       * keyedit.c (menu_addrevoker): Fix leaking a few bytes.
+
+       * keyedit.c (show_key_with_all_names): Use list-option
+       show-long-keyid in main --edit-key display.
+
+       * keyedit.c (print_and_check_one_sig): Use list-option
+       show-long-keyid in --edit-key "check" function.
+
+       * passphrase.c (agent_send_all_options): Make use of $GPG_TTY.
+
+       * g10.c (main): Disable use-agent if passphrase-fd is given
+       later. Suggested by Kurt Garloff.
+
+       * exec.c, g10.c, gpgv.c, passphrase.c, photoid.c:
+       s/__MINGW32__/_WIN32/ to help building on native Windows
+       compilers.  Requested by Brian Gladman.  From Werner on stable
+       branch.
+
+       * options.h, g10.c (main): Add list-option
+       list-preferred-keyserver.
+
+       * keyedit.c (change_passphrase): When responding 'no' to the blank
+       passphrase question, re-prompt for a new passphrase.  This is bug
+       #202.
+
+       * mainproc.c (check_sig_and_print): Use two different preferred
+       keyserver displays - one if the key is not present (to tell the
+       user where to get the key), the other if it is present (to tell
+       the user where the key can be refreshed).
+
+       * packet.h, parse-packet.c (parse_signature): Set flag if a
+       preferred keyserver is present.
+
+       * keylist.c (list_keyblock_print): Show keyserver url in listings
+       with list-option show-keyserver-url.
+
+       * mainproc.c (check_sig_and_print): Get the uid validity before
+       printing any sig results to avoid munging the output with trustdb
+       warnings.
+
+       * g10.c (main): Don't include --show-keyring in --help as it is
+       deprecated.
+
+       * options.skel: Note that keyserver.pgp.com isn't synchronized,
+       and explain the roundrobin a bit better.
+
+       * sig-check.c (check_key_signature2), import.c (import_one,
+       import_revoke_cert, chk_self_sigs, delete_inv_parts,
+       collapse_uids, merge_blocks): Make much quieter during import of
+       slightly munged, but recoverable, keys. Use log_error for
+       unrecoverable import failures.
+
+       * keyring.c (keyring_rebuild_cache): Comment.
+
+       * sign.c (mk_notation_and_policy): Making a v3 signature with
+       notations or policy urls is an error, not an info (i.e. increment
+       the errorcount). Don't print the notation or policy url to stdout
+       since it can be mixed into the output stream when piping and munge
+       the stream.
+
+       * packet.h, sig-check.c (signature_check2, do_check,
+       do_check_messages): Provide a signing-key-is-revoked flag.  Change
+       all callers.
+
+       * status.h, status.c (get_status_string): New REVKEYSIG status tag
+       for a good signature from a revoked key.
+
+       * mainproc.c (do_check_sig, check_sig_and_print): Use it here.
+
+       * import.c (import_revoke_cert, merge_blocks, merge_sigs): Compare
+       actual signatures on import rather than using keyid or class
+       matching.  This does not change actual behavior with a key, but
+       does mean that all sigs are imported whether they will be used or
+       not.
+
+       * parse-packet.c (parse_signature): Don't give "signature packet
+       without xxxx" warnings for experimental pk algorithms.  An
+       experimental algorithm may not have a notion of (for example) a
+       keyid (i.e. PGP's x.509 stuff).
+
+       * options.h, g10.c (main), keylist.c (list_keyblock_print),
+       keyedit.c (print_and_check_one_sig): New "show-sig-expire"
+       list-option to show signature expiration dates (if any).
+
+       * options.h, g10.c (main, add_keyserver_url): Add
+       --sig-preferred-keyserver to implant a "where to get my key"
+       subpacket into a signature.
+
+       * sign.c (mk_notation_and_policy): Rename to
+       mk_notation_policy_etc and add preferred keyserver support for
+       signatures.
+
+       * keygen.c (do_add_key_flags): Don't set the certify flag for
+       subkeys.
+       (ask_algo): Provide key flags for DSA, Elgamal_e, and Elgamal
+       subkeys.
+       (generate_keypair): Provide key flags for the default DSA/Elgamal
+       keys.
+
+       * sig-check.c (signature_check, signature_check2,
+       check_key_signature, check_key_signature2): Allow passing NULLs
+       for unused parameters in the x2 form of each function to avoid the
+       need for dummy variables. getkey.c, mainproc.c: Change all
+       callers.
+
+       * trustdb.h, trustdb.c (read_trust_options): New.  Returns items
+       from the trustdb version record.
+       * keylist.c (public_key_list): Use it here for the new "tru"
+       record.
+       * gpgv.c (read_trust_options): Stub.
+
+       * keyedit.c (show_key_with_all_names): Use list-option
+       show-validity in --edit-key interface as well.
+
+       * options.h, g10.c (main), mainproc.c (check_sig_and_print): Add
+       verify-options "show-validity" and "show-long-keyid" to show
+       trustdb validity and long keyids during (file) signature
+       verification.
+
+       * packet.h, main.h, sig-check.c (signature_check2)
+       (check_key_signature2, do_check): If ret_pk is set, fill in the pk
+       used to verify the signature.  Change all callers in getkey.c,
+       mainproc.c, and sig-check.c.
+
+       * keylist.c (list_keyblock_colon): Use the ret_pk from above to
+       put the fingerprint of the signing key in "sig" records during a
+       --with-colons --check-sigs.  This requires --no-sig-cache as well
+       since we don't cache fingerprints.
+
+       * parse-packet.c (parse_signature): No need to reserve 8 bytes for
+       the unhashed signature cache any longer.
+
+       * misc.c (pct_expando): Add two new expandos - signer's
+       fingerprint (%g), and signer's primary fingerprint (%p).
+
+       * g10.c (main): Add --rfc2440 alias for --openpgp since in a few
+       months, they won't be the same thing.
+
+       * keyserver.c (parse_keyserver_uri): Accept "http" as an alias for
+       "hkp", since it is occasionally written that way.
+       (keyserver_spawn): Use ascii_isspace to avoid locale issues.
+
+       * keygen.c (ask_user_id): Make --allow-freeform-uid apply to the
+       email field as well as the name field, and allow mixing fields
+       when it is set.
+
+       * trustdb.c (validate_one_keyblock): Certifications on revoked or
+       expired uids do not count in the web of trust.
+
+       * signal.c (init_one_signal, pause_on_sigusr, do_block): Only use
+       sigprocmask() if we have sigset_t, and only use sigaction() if we
+       have struct sigaction.  This is for Forte c89 on Solaris which
+       seems to define only the function call half of the two pairs by
+       default.
+       (pause_on_sigusr): Typo.
+       (do_block): If we can't use sigprocmask() and sigset_t, try to get
+       the number of signals from NSIG as well as MAXSIG, and if we
+       can't, fail with an explanation.
+
+       * signal.c, tdbio.c: Comment out the transaction code.  It was not
+       used in this version, and was causing some build problems on
+       quasi-posix platforms (Solaris and Forte c89).
+
+       * keylist.c (list_keyblock_colon): Don't include validity values
+       when listing secret keys since they can be incorrect and/or
+       misleading.  This is a temporary kludge, and will be handled
+       properly in 1.9/2.0.
+
+       * mainproc.c (check_sig_and_print): Only show the "key available
+       from" preferred keyserver line if the key is not currently
+       present.
+
+       * keyedit.c (sign_uids): Do not sign expired uids without --expert
+       (same behavior as revoked uids).  Do not allow signing a user ID
+       without a self-signature.  --expert overrides.  Add additional
+       prompt to the signature level question.
+       (menu_expire): When changing expiration dates, don't replace
+       selfsigs on revoked uids since this would effectively unrevoke
+       them. There is also no point in replacing expired selfsigs.  This
+       is bug #181
+
+       * g10.c (add_notation_data): Make sure that only ascii is passed
+       to iscntrl.  Noted by Christian Biere.
+       * getkey.c (classify_user_id2): Replaced isspace by spacep
+       * keygen.c (ask_user_id): Ditto.
+       (get_parameter_algo): Ditto.
+       * keyedit.c (keyedit_menu): Ditto.
+       * tdbdump.c (import_ownertrust): Ditto.  s/isxdigit/hexdigitp/.
+       * revoke.c (ask_revocation_reason): 
+       * keyserver.c (keyserver_spawn): Dito.
+
+       * parse-packet.c (parse): Disallow old style partial length for
+       all key material packets to avoid possible corruption of keyrings.
+
+       * import.c (import_keys_internal): Invalidate the cache so that
+       the file descriptor gets closed.  Fixes bug reported by Juan
+       F. Codagnone.
+
+       * options.h, g10.c (main), main.h, keylist.c (show_keyserver_url),
+       mainproc.c (check_sig_and_print), parse-packet.c (dump_sig_subpkt,
+       parse_one_sig_subpkt, can_handle_critical): Add read-only support
+       for preferred keyserver subpackets.  They're basically policy URLs
+       with a different name.  Add a verify-option
+       "show-preferred-keyserver" to turn them on and off (on by default,
+       as per stable branch).
+
+       * g10.c (main): Add "--set-notation" as alias to "--notation-data"
+       this is to make things consistent with --set-policy-url meaning
+       both sigs and certs.
+
+       * options.h, g10.c (main), keylist.c (list_keyblock_print): Add
+       "show-validity" and "show-long-keyid" list-options.
+
+       * gpgv.c (get_validity, trust_value_to_string): Stubs.
+
+       * g10.c (main): Use SAFE_VERSION instead of VERSION in the
+       version-specific gpg.conf file so it can be overridden on RISCOS.
+
+       * keyedit.c (show_key_with_all_names): Fix assertion failure when
+       using toggle to see a secret key.  Reported by Maxim Britov.
+
+
+2003-09-22  Timo Schulz  <twoaday@freakmail.de>
+
+       * card-util.c (card_status): Free pk in case of an error
+       and return if the card is no OpenPGP card.
+       
+2003-09-18  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New command --card-edit.
+       * card-util.c (card_status): Use tty_fprintf for all output.
+       (print_sha1_fpr, print_isoname): Ditto.
+       (get_one_name,change_name, change_url, change_login,change_lang)
+       (change_sex): New; taken from keygen.c.
+       * keygen.c (smartcard_get_one_name, smartcard_change_name) 
+       (smartcard_change_url, smartcard_change_login_data) 
+       (smartcard_change_lang, smartcard_change_sex): Removed.
+       (check_smartcard): Removed most menu items.
+
+2003-09-06  Werner Koch  <wk@gnupg.org>
+
+       * misc.c (openpgp_pk_algo_usage): Allow AUTH where SIGN is allowed.
+
+       * keygen.c (ask_passphrase): No need to allocated S2K in secure
+       memory.
+
+2003-09-04  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (do_add_key_flags, parse_parameter_usage) 
+       (do_generate_keypair): Add support the proposed AUTH key flag.
+       * getkey.c (fixup_uidnode, merge_selfsigs_main) 
+       (merge_selfsigs_subkey, premerge_public_with_secret): Ditto.
+       * keylist.c (print_capabilities): Ditto.
+
+2003-08-25  Timo Schulz  <twoaday@freakmail.de>
+
+       * pkglue.c (mpi_from_sexp): New. Used to factor out
+       some common code.
+       
+2003-08-24  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (do_generate_keypair): Print a reminder to use --gen-revoke.
+
+2003-08-18  Timo Schulz  <twoaday@freakmail.de>
+
+       * encode.c (encode_sesskey): Checked the code and removed
+       the warning since all compatibility checks with PGP succeeded.
+       * mainproc.c (symkey_decrypt_sesskey): Better check for the
+       algorithm and check the return values of some functions.
+       * mdc.c (use_mdc): Simplified.
+       
+2003-08-07  Werner Koch  <wk@gnupg.org>
+
+       * pkglue.c (pk_sign): Fix last change.
+       (pk_verify): Check for valid DATA array so that we don't segv in
+       Libgcrypt.
+       (pk_verify): Ditto.
+
+2003-08-06  Werner Koch  <wk@gnupg.org>
+
+       * pkglue.c (pk_sign): Allow signing using RSA.
+
+2003-08-05  Werner Koch  <wk@gnupg.org>
+
+       * Makefile.am (install-data-local): Dropped check for the ancient
+       gpgm tool.
+       (bin_PROGRAMS): Renamed gpg to gpg2 and gpgv to gpgv2.  This is so
+       that it won't conflict with the current stable version of gpg.
+
+       * pkglue.c (pk_check_secret_key): New.
+       * seckey-cert.c (do_check): Reenable this test here again.
+
+       * g10.c (main): Add command -K as an alias for
+       --list-secret-keys. Command "-k" is now an alias to --list-keys.
+       Remove special treatment of -kv and -kvv.
+       (set_cmd): Ditto.
+       (main): Strip a "-cvs" suffix when testing for a version specific
+       config file.
+
+       * status.h, status.c, g10.c [USE_SHM_COPROCESSING]: Removed.  This
+       is not any longer available.
+
+2003-07-29  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Add secmem features and set the random seed file.
+       (g10_exit): Update the random seed file.
+
+       * parse-packet.c (parse_signature,read_protected_v3_mpi)
+       (parse_key): Fixed use of mpi_set_opaque.
+       * keygen.c (gen_card_key): Ditto.
+
+2003-07-28  Werner Koch  <wk@gnupg.org>
+
+       * status.c (progress_cb): Adjusted for use with Libcgrypt.
+       (set_status_fd): Register that callback.
+
+       * keygen.c (smartcard_change_login_data): New.
+       (smartcard_change_lang): New.
+       (smartcard_change_sex): New.
+       (check_smartcard): Add menu entries to edit the above.
+       (gen_elg,gen_dsa,gen_rsa): Reimplemented in terms of Libgcrypt.
+       (genhelp_protect, genhelp_factors, key_from_sexp): New.
+       * comment.c (make_comment_node_from_buffer): New.
+       (make_comment_node): Reimplemented in terms of above.
+
+2003-07-27  Werner Koch  <wk@gnupg.org>
+
+       Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
+
+2003-07-24  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New command --card-status.
+       * card-util.c (card_status): New.
+       * call-agent.c (learn_status_cb): Parse more information.
+
+       * keylist.c (print_pubkey_info): Add FP arg for optional printing
+       to a stream.  Changed all callers.
+
+2003-07-23  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (generate_keypair): Create an AUTHKEYTYPE entry for cards.
+       (do_generate_keypair): Abd generate the authkey.
+       (check_smartcard): Changed menu accordingly.
+
+2003-07-22  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New command --change-pin.
+       * card-util.c: New.
+       * call-agent.c (agent_scd_change_pin): New.
+       (agent_release_card_info): New.
+       * keygen.c (check_smartcard): Use it here.
+
+2003-07-16  Werner Koch  <wk@gnupg.org>
+
+       * export.c (parse_export_options): New option sexp-format.
+       (export_seckeys,export_secsubkeys): Check sexp-format option.
+       (do_export): Ignore armor for sexp format.
+       (do_export_stream): Handle sexp-format.
+       (write_sexp_line,write_sexp_keyparm, build_sexp_seckey): New.
+       (build_sexp): New.
+
+2003-07-03  Werner Koch  <wk@gnupg.org>
+
+       * options.h (DBG_CIPHER): Reintroduced it. 
+       * seskey.c (encode_session_key): Debug output of the session key.
+
+       * pubkey-enc.c (get_it): Handle card case.
+       * call-agent.c (agent_scd_pkdecrypt): New.
+       * pkglue.c (pk_encrypt): Add RSA support.
+
+       * g10.c (main): Default to --use-agent.
+
+       * keygen.c (show_smartcard): Print info about the public key.
+       (check_smartcard): Check for existing key here.
+       (gen_card_key): And not anymore here.
+       (fpr_is_zero): New.
+       (generate_keypair): Generate both keys for a card.
+       (smartcard_change_url): Nw.
+
+2003-07-02  Werner Koch  <wk@gnupg.org>
+
+       * seckey-cert.c (is_secret_key_protected): Let it handle mode 1002.
+
+2003-07-01  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (gen_card_key): Obviously we should use the creation
+       date received from SCDAEMON, so that the fingerprints will match.
+       * sign.c (do_sign): Pass the serialno to the sign code.
+       * keyid.c (serialno_and_fpr_from_sk): New.
+
+2003-06-30  Werner Koch  <wk@gnupg.org>
+
+       * call-agent.h (agent_card_info_s): Add field serialno.
+       * call-agent.c (store_serialno): New.
+       (learn_status_cb): Store the serial number.
+       * keygen.c (gen_card_key): Store the serial number
+       (check_smartcard): New argument to return the serial number.
+       (generate_keypair): Get the serial number from check_smartcard and
+       store it as a parameter.
+       * parse-packet.c (parse_key): Use the protect.iv field to store the
+       serial number.
+       * build-packet.c (do_secret_key): Write the serial number.
+
+2003-06-27  Werner Koch  <wk@gnupg.org>
+
+       * seckey-cert.c (check_secret_key): Bypass the unprotection for
+       mode 1002.
+       * sign.c (do_sign): Handle card case (i.e. mode 1002).
+
+2003-06-26  Werner Koch  <wk@gnupg.org>
+
+       * build-packet.c (do_secret_key): Implement special protection
+       mode 1002.
+       * parse-packet.c (parse_key): Likewise.
+
+       * keygen.c (smartcard_gen_key): New.
+       * call-agent.c (agent_scd_setattr): New.
+
+2003-06-24  Werner Koch  <wk@gnupg.org>
+
+       * Makefile.am: Removed signal.c
+
+       * g10.c (emergency_cleanup): New.
+       (main): Use gnupg_init_signals and register malloc for assuan.
+
+2003-06-23  Werner Koch  <wk@gnupg.org>
+
+       * keyid.c (do_fingerprint_md): Made it work again.
+
+2003-06-19  Werner Koch  <wk@gnupg.org>
+
+       Fixed all "==" comparisons against error code constants to use
+       gpg_err_code().
+
+       * import.c (import_secret_one): 
+       (import_revoke_cert): 
+       (chk_self_sigs): 
+
+       * misc.c (openpgp_md_map_name): Check also for the Hx format.
+       (openpgp_cipher_map_name): Check also for the Sx format.
+       (pubkey_get_npkey): Adjusted for changed gcrypt API.
+       (pubkey_get_nskey): Ditto.
+       (pubkey_get_nsig): Ditto.
+       (pubkey_get_nenc): Ditto.
+
+2003-06-18  Werner Koch  <wk@gnupg.org>
+
+        Finished the bulk of changes for gnupg 1.9.  This included
+       switching to libgcrypt functions, using shared error codes from
+       libgpg-error, replacing the old functions we used to have in
+       ../util by those in ../jnlib and ../common, renaming the malloc
+       functions and a couple of types.  Note, that not all changes are
+       listed below becuause they are too similar and done at far too
+       many places.  As of today the code builds using the current
+       libgcrypt from CVS but it is very unlikely that it actually works.
+       
+       * sig-check.c (cmp_help): Removed.  Was never used.
+
+       * pkglue.c: New. Most stuff taken from gnupg 1.1.2.
+       * pkglue.h: New.
+
+       * misc.c (pull_in_libs): Removed.
+
+       * keygen.c (count_chr): New.
+       (ask_user_id): Removed faked RNG support.
+
+       * misc.c (openpgp_md_map_name,openpgp_cipher_map_name)
+       (openpgp_pk_map_name): New.
+
+       * skclist.c (build_sk_list): Removed faked RNG support.
+       (is_insecure): Removed.
+
+       * comment.c (make_mpi_comment_node): Use gcry MPI print function.
+
+       * keyid.c (v3_keyid): New.
+
+       * misc.c (mpi_write,mpi_write_opaque,mpi_read,mpi_read_opaque)
+       (mpi_print): New.  Taken from gnupg 1.1.2.
+       (checksum_mpi): Replaced by implementation from 1.1.2.
+
+       * g10.c (my_strusage): Renamed from strusage and return NULL
+       instead calling a default function.
+       (add_to_strlist2): New.  Taken from ../util/strgutil.c of gnupg 1.2.
+
+       * plaintext.c (handle_plaintext): New arg CREATE_FILE to cope with
+       the fact that gpg-error does not have this error code anymore.
+
+       * mainproc.c (symkey_decrypt_sesskey): Ditto.
+
+       * seskey.c (make_session_key): Adjusted for use with libgcrypt.
+       (encode_session_key): Ditto.
+       (do_encode_md): Ditto.
+       (encode_md_value): Ditto.
+
+       * keyring.c: Use libgpg-error instead of READ_ERROR etc.
+
+       * g10.c: Adjusted all algorithm name/id mapping functions.
+       (set_debug): Pass MPI and CRYPTO debug values to libgcrypt.
+
+       * Makefile.am (INCLUDES): Define LOCALEDIR and the default error
+       source.
+
+       * g10.c (i18n_init): s/G10_LOCALEDIR/LOCALEDIR/.
+
+       Renamed m_alloc et al to xmalloc et al.
+       s/g10_errstr/gpg_strerror/
+       s/MPI/gcry_mpi_t/
+       Adjusted all md_open calls to the libgcrypt API.
+       
+       * build-packet.c (do_comment): Return error code from iobuf write
+       function.
+       (do_user_id): Ditto.
+       (do_public_key): Ditto.
+
+       * Makefile.am: Add new files, link gpg with libgpg-error.
+       * g10.c, options.h: New option --agent-program.
+       * call-agent.c: New.
+       * gpg.h, call-agent.h: New.
+
+2003-06-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main), keylist.c (list_keyblock_print): Add
+       "show-validity" and "show-long-keyid" list-options.
+
+       * gpgv.c (get_validity, trust_value_to_string): Stubs.
+
+       * g10.c (main): Use SAFE_VERSION instead of VERSION in the
+       version-specific gpg.conf file so it can be overridden on RISCOS.
+
+2003-06-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main), keylist.c (show_policy_url, show_notation),
+       mainproc.c (check_sig_and_print): Emulate the old policy and
+       notation behavior (display by default).  Send to status-fd whether
+       it is displayed on the screen or not.
+
+       * g10.c (main): Since we now have some options in devel that won't
+       work in a stable branch gpg.conf file, try for a version-specific
+       gpg.conf-VERSION file before falling back to gpg.conf.
+
+       * main.h, options.h: Move various option flags to options.h.
+
+2003-05-31  David Shaw  <dshaw@jabberwocky.com>
+
+       * mainproc.c (check_sig_and_print), main.h, keylist.c
+       (show_policy, show_notation): Collapse the old print_notation_data
+       into show_policy() and show_notation() so there is only one
+       function to print notations and policy URLs.
+
+       * options.h, main.h, g10.c (main), keyedit.c
+       (print_and_check_one_sig), keylist.c (list_one,
+       list_keyblock_print), pkclist.c (do_edit_ownertrust), sign.c
+       (mk_notation_and_policy): New "list-options" and "verify-options"
+       commands.  These replace the existing
+       --show-photos/--no-show-photos,
+       --show-notation/--no-show-notation,
+       --show-policy-url/--no-show-policy-url, and --show-keyring
+       options.  The new method is more flexible since a user can specify
+       (for example) showing photos during sig verification, but not in
+       key listings.  The old options are emulated.
+
+       * main.h, misc.c (parse_options): New general option line
+       parser. Fix the bug in the old version that did not handle report
+       syntax errors after a valid entry.
+
+       * import.c (parse_import_options), export.c
+       (parse_export_options): Call it here instead of duplicating the
+       code.
+
+2003-05-30  David Shaw  <dshaw@jabberwocky.com>
+
+       * keylist.c (list_one): Don't show the keyring filename when in
+       --with-colons mode.  Actually translate "Keyring" string.
+
+       * mainproc.c (proc_tree): We can't currently handle multiple
+       signatures of different classes or digests (we'd pretty much have
+       to run a different hash context for each), but if they are all the
+       same, make an exception.  This is Debian bug #194292.
+
+       * sig-check.c (check_key_signature2): Make string translatable.
+
+       * packet.h, getkey.c (fixup_uidnode): Mark real primary uids
+       differently than assumed primaries.
+
+       * keyedit.c (no_primary_warning): Use the differently marked
+       primaries here in a new function to warn when an --edit-key
+       command might rearrange the self-sig dates enough to change which
+       uid is primary.
+       (menu_expire, menu_set_preferences): Use no_primary_warning()
+       here.
+
+       * Makefile.am: Use @DLLIBS@ for -ldl.
+
+2003-05-26  David Shaw  <dshaw@jabberwocky.com>
+
+       * getkey.c (premerge_public_with_secret): Made "no secret subkey
+       for" warning a verbose item and translatable. (From wk on stable
+       branch)
+
+       * sig-check.c (check_key_signature2): Made "no subkey for subkey
+       binding packet" a verbose item instead of a !quiet one.  There are
+       too many garbled keys out in the wild. (From wk on stable branch)
+
+       * filter.h: Remove const from WHAT. (From wk on stable branch)
+
+       * progress.c (handle_progress): Store a copy of
+       NAME. (progress_filter): Release WHAT, make sure not to print a
+       NULL WHAT. (From wk on stable branch)
+
+       * openfile.c (open_sigfile): Adjust free for new progress
+       semantics. (From wk on stable branch)
+
+       * plaintext.c (ask_for_detached_datafile): Don't dealloc
+       pfx->WHAT. (From wk on stable branch)
+
+       * seckey-cert.c (do_check): Issue the RSA_OR_IDEA status when the
+       cipher algo is IDEA to make it easier to track down the
+       problem. (From twoaday on stable branch)
+       
+2003-05-24  David Shaw  <dshaw@jabberwocky.com>
+
+       * armor.c, g10.c, kbnode.c, misc.c, pkclist.c, sign.c,
+       build-packet.c, getkey.c, keydb.c, openfile.c, plaintext.c,
+       status.c, gpgv.c, keygen.c, options.h, sig-check.c, tdbio.h,
+       encode.c, mainproc.c, parse-packet.c, signal.c, textfilter.c: Edit
+       all preprocessor instructions to remove whitespace before the '#'.
+       This is not required by C89, but there are some compilers out
+       there that don't like it.
+
+2003-05-21  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.h, trustdb.c (is_disabled), gpgv.c (is_disabled): Rename
+       is_disabled to cache_disabled_value, which now takes a pk and not
+       just the keyid. This is for speed since there is no need to
+       re-fetch a key when we already have that key handy.  Cache the
+       result of the check so we don't need to hit the trustdb more than
+       once.
+       
+       * getkey.c (skip_disabled): New function to get a pk and call
+       is_disabled on it. (key_byname): Use it here.
+       
+       * packet.h, getkey.c (skip_disabled), keylist.c
+       (print_capabilities): New "pk_is_disabled" macro to retrieve the
+       cached disabled value if available, and fill it in via
+       cache_disabled_value if not available.
+
+       * trustdb.c (get_validity): Cache the disabled value since we have
+       it handy and it might be useful later.
+
+       * parse-packet.c (parse_key): Clear disabled flag when parsing a
+       new key.  Just in case someone forgets to clear the whole key.
+
+       * getkey.c (merge_selfsigs_main): Add an "if all else fails" path
+       for setting a single user ID primary when there are multiple set
+       primaries all at the same second, or no primaries set and the most
+       recent user IDs are at the same second, or no signed user IDs at
+       all. This is arbitrary, but deterministic.
+
+       * exec.h, photoid.h: Add copyright message.
+
+       * keylist.c (list_keyblock_print): Don't dump attribs for
+       revoked/expired/etc uids for non-colon key listings.  This is for
+       consistency with --show-photos.
+
+       * main.h, keylist.c (dump_attribs), mainproc.c
+       (check_sig_and_print): Dump attribs if --attrib-fd is set when
+       verifying signatures.
+       
+       * g10.c (main): New --gnupg option to disable the various
+       --openpgp, --pgpX, etc. options.  This is the same as --no-XXXX
+       for those options.
+
+       * revoke.c (ask_revocation_reason): Clear old reason if user
+       elects to repeat question.  This is bug 153.
+
+       * keyedit.c (sign_uids): Show keyid of the key making the
+       signature.
+
+2003-05-21  Werner Koch  <wk@gnupg.org>
+
+       * progress.c (handle_progress)
+       * sign.c (write_plaintext_packet)
+       * encode.c (encode_simple,encode_crypt): Make sure that a filename
+       of "-" is considered to be stdin so that iobuf_get_filelength
+       won't get called.  This fixes bug 156 reported by Gregery Barton.
+
+2003-05-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * packet.h, build-packet.c (build_sig_subpkt), export.c
+       (do_export_stream), import.c (remove_bad_stuff, import),
+       parse-packet.c (dump_sig_subpkt, parse_one_sig_subpkt): Remove
+       vestigal code for the old sig cache subpacket.  This wasn't
+       completely harmless as it caused subpacket 101 to disappear on
+       import and export.
+
+       * options.h, armor.c, cipher.c, g10.c, keyedit.c, pkclist.c,
+       sign.c, encode.c, getkey.c, revoke.c: The current flags for
+       different levels of PGP-ness are massively complex.  This is step
+       one in simplifying them. No functional change yet, just use a
+       macro to check for compliance level.
+
+       * sign.c (sign_file): Fix bug that causes spurious compression
+       preference warning.
+
+       * sign.c (clearsign_file): Fix bug that prevents proper warning
+       message from appearing when clearsigning in --pgp2 mode with a
+       non-v3 RSA key.
+
+       * main.h, misc.c (compliance_option_string, compliance_string,
+       compliance_failure), pkclist.c (build_pk_list), sign.c (sign_file,
+       clearsign_file), encode.c (encode_crypt,
+       write_pubkey_enc_from_list): New functions to put the "this
+       message may not be usable...." warning in one place.
+
+       * options.h, g10.c (main): Part two of the simplification.  Use a
+       single enum to indicate what we are compliant to (1991, 2440,
+       PGPx, etc.)
+
+       * g10.c (main): Show errors for failure in export, send-keys,
+       recv-keys, and refresh-keys.
+
+       * options.h, g10.c (main): Give algorithm warnings for algorithms
+       chosen against the --pgpX and --openpgp rules.
+
+       * keydb.h, pkclist.c (algo_available): Make TIGER192 invalid in
+       --openpgp mode.
+
+       * sign.c (sign_file), pkclist.c (algo_available): Allow passing a
+       hint of 0.
+
+2003-05-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * tdbio.c (create_version_record): Only create new trustdbs with
+       TM_CLASSIC or TM_PGP.
+
+       * trustdb.h, trustdb.c (trust_string, get_ownertrust_string,
+       get_validity_string, ask_ownertrust, validate_keys), pkclist.c
+       (do_edit_ownertrust): Rename trust_string to trust_value_to_string
+       for naming consistency.
+
+       * trustdb.h, trustdb.c (string_to_trust_value): New function to
+       translate a string to a trust value.
+
+       * g10.c (main): Use string_to_trust_value here for
+       --force-ownertrust.
+       
+       * options.h, g10.c (main), trustdb.c (trust_model_string,
+       init_trustdb, check_trustdb, update_trustdb, get_validity,
+       validate_one_keyblock): An "OpenPGP" trust model is misleading
+       since there is no official OpenPGP trust model.  Use "PGP"
+       instead.
+
+2003-04-30  David Shaw  <dshaw@jabberwocky.com>
+
+       * build-packet.c (build_sig_subpkt): Comments.
+
+       * exec.c (exec_write): Cast NULL to void* to properly terminate
+       varargs list.
+
+       * keyedit.c (show_key_with_all_names): Just for safety, catch an
+       invalid pk algorithm.
+
+       * sign.c (make_keysig_packet): Crucial that the call to mksubpkt
+       comes LAST before the calls to finalize the sig as that makes it
+       possible for the mksubpkt function to get a reliable pointer to
+       the subpacket area.
+
+       * pkclist.c (do_we_trust_pre): If an untrusted key was chosen by a
+       particular user ID, use that ID as the one to ask about when
+       prompting whether to use the key anyway.
+       (build_pk_list): Similar change here when adding keys to the
+       recipient list.
+
+       * trustdb.c (update_validity): Fix bug that prevented more than
+       one validity record per trust record.
+       (get_validity): When retrieving validity for a (user) supplied
+       user ID, return the validity for that user ID only, and do not
+       fall back to the general key validity.
+       (validate_one_keyblock): Some commentary on whether
+       non-self-signed user IDs belong in the web of trust (arguably,
+       they do).
+
+2003-04-27  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): Add --no-textmode.
+
+       * export.c (do_export_stream), keyedit.c (show_key_with_all_names,
+       menu_addrevoker), mainproc.c (check_sig_and_print), photoid.c
+       (show_photos), sign.c (mk_notation_and_policy), trustdb.c
+       (get_validity, reset_trust_records, validate_keys): Make some
+       strings translatable.
+
+       * mainproc.c (check_sig_and_print): Show digest algorithm and sig
+       class when verifying a sig with --verbose on, and add version, pk
+       and hash algorithms and sig class to VALIDSIG.
+       
+       * parse-packet.c (enum_sig_subpkt): Make a warning message a
+       --verbose warning message since we don't need to warn every time
+       we see an unknown critical (we only need to invalidate the
+       signature).
+
+       * trustdb.c (init_trustdb): Check the trustdb options even with
+       TM_AUTO since the auto may become TM_CLASSIC or TM_OPENPGP.
+
+2003-04-26  David Shaw  <dshaw@jabberwocky.com>
+
+       * sign.c (do_sign): Show the hash used when making a signature in
+       verbose mode.
+
+       * tdbio.h, tdbio.c (tdbio_read_model): New function to return the
+       trust model used in a given trustdb.
+
+       * options.h, g10.c (main), trustdb.c (init_trustdb, check_trustdb,
+       update_trustdb): Use tdbio_read_model to implement an "auto" trust
+       model which is set via the trustdb.
+
+2003-04-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (import_revoke_cert): Remove ultimate trust when
+       revoking an ultimately trusted key.
+
+       * keyedit.c (sign_uids): Allow replacing expired signatures.
+       Allow duplicate signatures with --expert.
+
+       * pkclist.c (check_signatures_trust): Don't display a null
+       fingerprint when checking a signature with --always-trust enabled.
+
+       * filter.h (progress_filter_context_t), progress.c
+       (handle_progress), plaintext.c (ask_for_detached_datafile,
+       hash_datafiles): Fix compiler warnings.  Make "what" constant.
+
+       * build-packet.c (do_plaintext): Do not create invalid literal
+       packets with >255-byte names.
+
+2003-04-15  Werner Koch  <wk@gnupg.org>
+
+       * Makefile.am (AM_CFLAGS): Make use of AM_CFLAGS and AM_LDFLAGS.
+
+       * g10.c, options.h: New option --enable-progress-filter.
+       * progress.c (handle_progress): Make use of it.
+
+2003-04-15  Marcus Brinkmann  <marcus@g10code.de>
+
+       * progress.c: New file.
+       * Makefile.am (common_source): Add progress.c.
+       * filter.h (progress_filter_context_t): New type.
+       (progress_filter, handle_progress): New prototypes.
+       * main.h (open_sigfile): New argument for prototype.
+       * openfile.c (open_sigfile): New argument to install progress
+       filter.
+       * encode.c (encode_simple): New variable PFX.  Register
+       progress filter.  Install text_filter after that.
+       (encode_crypt): Likewise.
+       * sign.c (sign_file): Likewise.
+       (clearsign_file): Likewise.
+       * decrypt.c (decrypt_message): Likewise.
+       (decrypt_messages): Likewise.
+       * verify.c (verify_signatures): Likewise.
+       (verify_one_file): Likewise.
+       * plaintext.c (hash_datafiles): Likewise.
+       (ask_for_detached_datafile): Likewise.
+
+2003-04-10  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c (read_passphrase_from_fd): Do a dummy read if the
+       agent is to be used.  Noted by Ingo Klöcker.
+       (agent_get_passphrase): Inhibit caching when we have no
+       fingerprint.  This is required for key generation as well as for
+       symmetric only encryption.
+
+       * passphrase .c (agent_get_passphrase): New arg CANCELED.
+       (passphrase_to_dek): Ditto.  Passed to above.  Changed all
+       callers to pass NULL.
+       * seckey-cert.c (do_check): New arg CANCELED.
+       (check_secret_key): Terminate loop when canceled.
+
+       * keyedit.c (change_passphrase): Pass ERRTEXT untranslated to
+       passphrase_to_dek and translate where appropriate.
+       * seckey-cert.c (check_secret_key): Ditto.
+       * keygen.c (ask_passphrase): Ditto.
+       * passphrase.c (agent_get_passphrase): Translate the TRYAGAIN_TEXT.
+       Switch the codeset to utf-8.
+
+2003-04-09  Werner Koch  <wk@gnupg.org>
+
+       * decrypt.c (decrypt_messages): Fixed error handling; the function
+       used to re-loop with same file after an error.  Reported by Joseph
+       Walton.
+
+2003-04-08  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, g10.c (main), import.c (parse_import_options,
+       fix_pks_corruption): It's really PKS corruption, not HKP
+       corruption.  Keep the old repair-hkp-subkey-bug command as an
+       alias.
+
+       * g10.c (main): Rename --no-version to --no-emit-version for
+       consistency.  Keep --no-version as an alias.
+
+2003-04-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * pkclist.c (algo_available): PGP 8 can use the SHA-256 hash.
+
+       * sign.c (sign_file, clearsign_file, sign_symencrypt_file): Remove
+       unused code.
+
+2003-04-01  Werner Koch  <wk@gnupg.org>
+
+       * mainproc.c (check_sig_and_print): Add primary key fpr to VALIDSIG
+       status.
+
+2003-03-24  David Shaw  <dshaw@jabberwocky.com>
+
+       * keydb.h: Err on the side of making an unknown signature a SIG
+       rather than a CERT.
+
+       * import.c (delete_inv_parts): Discard any key signatures that
+       aren't key types (i.e. 0x00, 0x01, etc.)
+
+       * g10.c (main): Add deprecated option warning for
+       --list-ownertrust.  Add --compression-algo alias for
+       --compress-algo.  Change --version output strings to match
+       "showpref" strings, and make translatable.
+
+       * status.c (do_get_from_fd): Accept 'y' as well as 'Y' for
+       --command-fd boolean input.
+
+       * trustdb.c: Fix typo (DISABLE_REGEXP -> DISABLE_REGEX)
+
+       * keyedit.c (show_key_with_all_names_colon): Show no-ks-modify
+       flag.
+
+2003-03-11  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main), keyserver.c (kopts): Add "try-dns-srv"
+       keyserver option.  Defaults to on.
+
+       * passphrase.c (agent_get_passphrase): Fix memory leak with
+       symmetric messages.  Fix segfault with symmetric messages.  Fix
+       incorrect prompt with symmetric messages.
+
+2003-03-10  Werner Koch  <wk@gnupg.org>
+
+       * compress.c (init_uncompress): Use a 15 bit window size so that
+       the output of implementations which don't run for PGP 2
+       compatibility won't get garbled.
+
+2003-03-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.c (validate_keys): Mask the ownertrust when building the
+       list of fully valid keys so that disabled keys are still counted
+       in the web of trust.
+       (get_ownertrust_with_min): Do the same for the minimum ownertrust
+       calculation.
+
+       * parse-packet.c (dump_sig_subpkt): Show the notation names for
+       not-human-readable notations.  Fix cosmetic off-by-one length
+       counter.
+
+       * options.skel: Add explantion and commented-out
+       "no-mangle-dos-filenames".
+
+       * mainproc.c (proc_encrypted): Make string translatable.
+
+       * keyserver.c (keyserver_spawn): Quote ':', '%', and any 8-bit
+       characters in the uid strings sent to the keyserver helper.
+
+       * keyring.c (keyring_rebuild_cache): Lock the keyring while
+       rebuilding the signature caches to prevent another gpg from
+       tampering with the temporary copy.
+
+       * keygen.c (keygen_set_std_prefs): Include AES192 and AES256 in
+       default prefs.
+
+       * keyedit.c (show_prefs): Make strings translatable.
+
+       * keydb.c: Double the maximum number of keyrings to 40.
+
+       * gpgv.c (main): Fix bug #113 - gpgv should accept the
+       --ignore-time-conflict option.
+
+       * g10.c (main): --openpgp disables --pgpX.  Double the amount of
+       secure memory to 32k (keys are getting bigger these days).
+
+       * Makefile.am: Makefile.am: Use @CAPLIBS@ to link in -lcap if we
+       are using capabilities.
+
+2003-02-26  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_spawn): Include various pieces of
+       information about the key in the data sent to the keyserver
+       helper.  This allows the helper to use it in instructing a remote
+       server which may not have any actual OpenPGP smarts in parsing
+       keys.
+
+       * main.h, export.c (export_pubkeys_stream, do_export_stream): Add
+       ability to return only the first match in an exported keyblock for
+       keyserver usage.  This should be replaced at some point with a
+       more flexible solution where each key can be armored seperately.
+
+2003-02-22  David Shaw  <dshaw@jabberwocky.com>
+
+       * sign.c (sign_file): Do not push textmode filter onto an unopened
+       IOBUF (segfault).  Noted by Marcus Brinkmann.  Push and
+       reinitialize textmode filter for each file in a multiple file
+       list.
+
+       * packet.h, getkey.c (fixup_uidnode), keyedit.c (show_prefs): Set
+       and show the keyserver no-modify flag.
+
+       * keygen.c (add_keyserver_modify): New.
+       (keygen_upd_std_prefs): Call it here.
+       (keygen_set_std_prefs): Accept "ks-modify" and "no-ks-modify" as
+       prefs to set and unset keyserver modify flag.
+
+       * g10.c (main): Accept "s1" in addition to "idea" to match the
+       other ciphers.
+
+       * main.h, misc.c (idea_cipher_warn): We don't need this if IDEA
+       has been disabled.
+
+2003-02-21  David Shaw  <dshaw@jabberwocky.com>
+
+       * keygen.c (keygen_set_std_prefs): Don't put AES or CAST5 in
+       default prefs if they are disabled.
+
+       * g10.c (main): Use 3DES instead of CAST5 if we don't have CAST5
+       support.  Use 3DES for the s2k cipher in --openpgp mode.
+       (print_mds): #ifdef all of the optional digest algorithms.
+
+2003-02-12  David Shaw  <dshaw@jabberwocky.com>
+
+       * keydb.h, getkey.c (classify_user_id, classify_user_id2): Make
+       'exact' a per-desc item.  Merge into one function since
+       'force_exact' is no longer needed.
+       (key_byname): Use new classify_user_id function, and new exact
+       flag in KEYDB_SEARCH_DESC.
+
+       * keyring.h, keyring.c (keyring_search): Return an optional index
+       to show which KEYDB_SEARCH_DESC was the matching one.
+
+       * keydb.h, keydb.c (keydb_search): Rename to keydb_search2, and
+       pass the optional index to keyring_search.  Add a macro version of
+       keydb_search that calls this new function.
+
+       * export.c (do_export_stream): If the keyid! syntax is used,
+       export only that specified key.  If the key in question is a
+       subkey, export the primary plus that subkey only.
+
+2003-02-11  David Shaw  <dshaw@jabberwocky.com>
+
+       * exec.c (set_exec_path): Add debugging line.
+
+       * g10.c (print_hex, print_mds): Print long hash strings a lot
+       neater.  This assumes at least an 80-character display, as there
+       are a few other similar assumptions here and there.  Users who
+       need unformatted hashes can still use with-colons.  Check that
+       SHA384 and 512 are available before using them as they are no
+       longer always available.
+
+       * Makefile.am: Use a local copy of libexecdir along with @PACKAGE@
+       as GNUPG_LIBEXECDIR so it can be easily overridden at make time.
+
+2003-02-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * armor.c (parse_hash_header, armor_filter): Accept the new SHAs
+       in the armor Hash: header.
+
+       * g10.c (print_hex): Print long hash strings a little neater.
+       (print_mds): Add the new SHAs to the hash list.
+
+2003-02-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (menu_revuid): Properly handle a nonselfsigned uid on
+       a v4 key (treat as a v4 revocation).
+
+       * import.c (print_import_check): Do not re-utf8 convert user IDs.
+
+2003-01-27  David Shaw  <dshaw@jabberwocky.com>
+
+       * mainproc.c (list_node): Show signature expiration date in
+       with-colons sig records.
+
+       * keylist.c (list_keyblock_colon), mainproc.c (list_node): Show
+       trust sig information in with-colons sig records.
+
+2003-01-16  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (add_group): Trim whitespace after a group name so it does
+       not matter where the user puts the = sign.
+
+       * options.skel: Comment out the first three lines in case someone
+       manually copies the skel file to their homedir.
+
+       * sign.c (clearsign_file): Only use pgp2mode with v3 keys and
+       MD5. This matches what we do when decoding such messages and
+       prevents creating a message (v3+RIPEMD/160) that we can't verify.
+
+       * sig-check.c (signature_check2): Use G10ERR_GENERAL as the error
+       for signature digest conflict.  BAD_SIGN implies that a signature
+       was checked and we may try and print out a user ID for a key that
+       doesn't exist.
+
+2003-01-15  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.c (init_trustdb, get_validity): Don't use a changed
+       trust model to indicate a dirty trustdb, and never auto-rebuild a
+       dirty trustdb with the "always" trust model.
+
+       * g10.c (add_group): Last commit missed the \t ;)
+
+2003-01-14  David Shaw  <dshaw@jabberwocky.com>
+
+       * packet.h, parse-packet.c (setup_user_id), free-packet.c
+       (free_user_id), keydb.h, keyid.c (namehash_from_uid): New function
+       to rmd160-hash the contents of a user ID packet and cache it in
+       the uid object.
+
+       * keylist.c (list_keyblock_colon): Use namehash in field 8 of
+       uids.  Show dates for creation (selfsig date), and expiration in
+       fields 6 and 7.
+
+       * trustdb.c (get_validity, get_validity_counts, update_validity):
+       Use new namehash function rather than hashing it locally.
+
+2003-01-14  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (add_group): Fixed group parsing to allow more than one
+       delimiter in a row and also allow tab as delimiter.
+
+2003-01-12  David Shaw  <dshaw@jabberwocky.com>
+
+       * tdbio.c (tdbio_set_dbname): Fix assertion failure with
+       non-fully-qualified trustdb names.
+
+2003-01-11  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.c (get_validity_info, get_ownertrust_info,
+       trust_letter): Simplify by returning a ? for error directly.
+
+       * keyedit.c (show_key_with_all_names): Use get_validity_string and
+       get_ownertrust_string to show full word versions of trust
+       (i.e. "full" instead of 'f').
+
+       * trustdb.h, trustdb.c (get_ownertrust_string,
+       get_validity_string): Same as get_ownertrust_info, and
+       get_validity_info, except returns a full string.
+
+       * trustdb.c (get_ownertrust_with_min): New.  Same as
+       'get_ownertrust' but takes the min_ownertrust value into account.
+
+2003-01-10  David Shaw  <dshaw@jabberwocky.com>
+
+       * armor.c (armor_filter): Comment about PGP's end of line tab
+       problem.
+
+       * trustdb.h, trustdb.c (trust_letter): Make
+       static. (get_ownertrust_info, get_validity_info): Don't mask the
+       trust level twice.
+
+       * trustdb.h, gpgv.c, trustdb.c (get_validity, get_validity_info),
+       keylist.c (list_keyblock_colon), keyedit.c
+       (show_key_with_all_names_colon, menu_revuid): Pass a user ID in
+       rather than a namehash, so we only have to do the hashing in one
+       place.
+
+       * packet.h, pkclist.c (build_pk_list), free-packet.c
+       (release_public_key_parts): Remove unused namehash element for
+       public keys.
+
+2003-01-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * keygen.c (keygen_set_std_prefs): Warn when setting an IDEA
+       preference when IDEA is not available.
+
+2003-01-06  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.c (get_validity_info): 'd' for disabled is not a
+       validity value any more.
+
+       * packet.h, tdbio.h, tdbio.c (tdbio_read_record,
+       tdbio_write_record), trustdb.c (update_validity): Store temporary
+       full & marginal counts in the trustdb.
+       (clear_validity, get_validity_counts): Return and clear temp
+       counts.
+       (store_validation_status): Keep track of which keyids have been
+       stored.
+       (validate_one_keyblock, validate_key_list): Use per-uid copies of
+       the full & marginal counts so they can be recalled for multiple
+       levels.
+       (validate_keys): Only use unused keys for each new round.
+       (reset_unconnected_keys): Rename to reset_trust_records, and only
+       skip specifically excluded records.
+
+       * keylist.c (print_capabilities): Show 'D' for disabled keys in
+       capabilities section.
+
+       * trustdb.c (is_disabled): Remove incorrect comment.
+
+2003-01-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (import_one): Only do the work to create the status
+       display for interactive import if status is enabled.
+
+       * keyring.c (keyring_search): skipfnc didn't work properly with
+       non-keyid searches.  Noted by Stefan Bellon.
+
+       * getkey.c (merge_selfsigs_main): Remove some unused code and make
+       sure that the pk selfsigversion member accounts for 1F direct
+       sigs.
+
+2003-01-02  Werner Koch  <wk@gnupg.org>
+
+       * keydb.c (keydb_add_resource): Don't assume that try_make_homedir
+       terminates but check again for the existence of the directory and
+       continue then.
+       * openfile.c (copy_options_file): Print a warning if the skeleton
+       file has active options.
+
+2002-12-29  David Shaw  <dshaw@jabberwocky.com>
+
+       * getkey.c (merge_selfsigs_main), main.h, sig-check.c
+       (check_key_signature2): Pass the ultimately trusted pk directly to
+       check_key_signature2 to avoid going through the key selection
+       mechanism.  This prevents a deadly embrace when two keys without
+       selfsigs each sign the other.
+
+2002-12-27  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_refresh): Don't print the "refreshing..."
+       line if there are no keys to refresh or if there is no keyserver
+       set.
+
+       * getkey.c (merge_selfsigs_main): Any valid user ID should make a
+       key valid, not just the last one.  This also fixes Debian bug
+       #174276.
+
+2002-12-27  Stefan Bellon  <sbellon@sbellon.de>
+
+       * import.c (print_import_check): Changed int to size_t.
+
+2002-12-27  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (keyedit_menu, menu_revuid): Add "revuid" feature to
+       revoke a user ID.  This is the same as issuing a revocation for
+       the self-signature, but a much simpler interface to do it.
+
+2002-12-26  David Shaw  <dshaw@jabberwocky.com>
+
+       * keydb.h, getkey.c (key_byname): Flag to enable or disable
+       including disabled keys.  Keys specified via keyid (i.e. 0x...)
+       are always included.
+
+       * getkey.c (get_pubkey_byname, get_seckey_byname2,
+       get_seckey_bynames), keyedit.c (keyedit_menu, menu_addrevoker):
+       Include disabled keys in these functions.
+
+       * pkclist.c (build_pk_list): Do not include disabled keys for -r
+       or the key prompt.  Do include disabled keys for the default key
+       and --encrypt-to.
+
+       * trustdb.h, trustdb.c (is_disabled): New skipfnc for skipping
+       disabled keys.
+
+       * gpgv.c (is_disabled): Stub.
+
+       * keygen.c (keygen_add_key_expire): Properly handle updating a key
+       expiration to a no-expiration value.
+
+       * keyedit.c (enable_disable_key): Comment.
+
+       * import.c (import_one): When in interactive mode and --verbose,
+       don't repeat some key information twice.
+
+2002-12-22  Timo Schulz  <ts@winpt.org>
+       
+       * import.c (print_import_check): New.
+       (import_one): Use it here.
+        Use merge_keys_and_selfsig in the interactive mode to avoid
+        wrong key information.
+        * status.h: Add new status code.
+        * status.c: Ditto.
+       
+2002-12-13  David Shaw  <dshaw@jabberwocky.com>
+
+       * pkclist.c (do_we_trust): Tweak language to refer to the "named
+       user" rather than "owner".  Noted by Stefan Bellon.
+
+       * trustdb.h, trustdb.c (trustdb_pending_check): New function to
+       check if the trustdb needs a check.
+
+       * import.c (import_keys_internal): Used here so we don't rebuild
+       the trustdb if it is still clean.
+       (import_one, chk_self_sigs): Only mark trustdb dirty if the key
+       that is being imported has any sigs other than self-sigs.
+       Suggested by Adrian von Bidder.
+
+       * options.skel: Include the required '=' sign in the sample
+       'group' option.  Noted by Stefan Bellon.
+
+       * import.c (chk_self_sigs): Don't try and check a subkey as if it
+       was a signature.
+
+2002-12-11  David Shaw  <dshaw@jabberwocky.com>
+
+       * tdbio.c (tdbio_read_record, tdbio_write_record): Compact the
+       RECTYPE_TRUST records a bit.
+
+       * g10.c (main): Comment out --list-trust-path until it can be
+       implemented.
+
+       * import.c (import_one): Warn when importing an Elgamal primary
+       that this may take some time (to verify self-sigs).
+       (chk_self_sigs): Try and cache all self-sigs so the keyblock is
+       written to the keyring with a good rich cache.
+
+       * keygen.c (ask_algo): Make the Elgamal sign+encrypt warning
+       stronger, and remove the RSA sign+encrypt warning.
+
+2002-12-06  Stefan Bellon  <sbellon@sbellon.de>
+
+       * options.h: Fixed typo (mangle_dos_names instead of
+       mangle_dos_filenames).
+
+2002-12-05  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New options --[no-]mangle-dos-filenames.
+       * options.h (opt): Added mangle-dos-filenames.
+       * openfile.c (open_outfile) [USE_ONLY_8DOT3]: Truncate the
+       filename only when this option is set; this is the default.
+
+2002-12-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, keyedit.c, keygen.c: Back out previous (2002-12-01)
+       change.  Minimal isn't always best.
+
+       * sign.c (update_keysig_packet): Use the current time rather then
+       a modification of the original signature time.  Make sure that
+       this doesn't cause a time warp.
+
+       * keygen.c (keygen_add_key_expire): Properly handle a key
+       expiration date in the past (use a duration of 0).
+
+       * keyedit.c (menu_expire): Use update_keysig_packet so any sig
+       subpackets are maintained during the update.
+
+       * build-packet.c (build_sig_subpkt): Mark sig expired or unexpired
+       when the sig expiration subpacket is added.
+       (build_sig_subpkt_from_sig): Handle making an expiration subpacket
+       from a sig that has already expired (use a duration of 0).
+
+       * packet.h, sign.c (update_keysig_packet), keyedit.c
+       (menu_set_primary_uid, menu_set_preferences): Add ability to issue
+       0x18 subkey binding sigs to update_keysig_packet and change all
+       callers.
+
+       * trustdb.c (validate_keys): Show trust parameters when building
+       the trustdb, and make sure that the version record update was
+       successful.
+       (init_trustdb): If the current parameters aren't what was used for
+       building the trustdb, the trustdb is invalid.
+
+       * tbio.c (tdbio_db_matches_options): Update to work with new
+       trustdbs.
+
+2002-12-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * tdbio.h, tdbio.c (tdbio_read_record, tdbio_write_record): Store
+       trust model in the trustdb version record.
+       (tdbio_update_version_record): New function to update version
+       record values during a trustdb check or update.
+       (tdbio_dump_record): Show trust model in dump.
+
+       * trustdb.c (validate_keys): Call tdbio_update_version_record on
+       success so that the correct options are stored in the trustdb.
+
+       * options.h: rearrange trust models so that CLASSIC is 0 and
+       OPENPGP is 1.
+
+       * options.h, g10.c (main), encode.c (write_pubkey_enc_from_list),
+       pkclist.c (algo_available), revoke.c (gen_revoke): Add --pgp8
+       mode.  This is basically identical to --pgp7 in all ways except
+       that signing subkeys, v4 data sigs (including expiration), and SK
+       comments are allowed.
+
+       * getkey.c (finish_lookup): Comment.
+
+       * main.h, keylist.c (reorder_keyblock), keyedit.c (keyedit_menu):
+       Reorder user ID display in the --edit-key menu to match that of
+       the --list-keys display.
+
+       * g10.c (add_notation_data): Fix initialization.
+
+2002-12-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (menu_expire): Don't lose key flags when changing the
+       expiration date of a subkey.  This is not the most optimal
+       solution, but it is minimal change on the stable branch.
+
+       * main.h, keygen.c (do_copy_key_flags): New function to copy key
+       flags, if any, from one sig to another.
+       (do_add_key_expire): New function to add key expiration to a sig.
+       (keygen_copy_flags_add_expire): New version of
+       keygen_add_key_expire that also copies key flags.
+       (keygen_add_key_flags_and_expire): Use do_add_key_expire.
+
+       * import.c (fix_hkp_corruption): Comment.
+
+2002-11-25  Stefan Bellon  <sbellon@sbellon.de>
+
+       * plaintext.c (handle_plaintext) [__riscos__]: If nooutput is set,
+       no filetype is needed obviously.
+
+2002-11-24  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, misc.c (default_cipher_algo, default_compress_algo):
+       New.  Return the default algorithm by trying
+       --cipher-algo/--compress-algo, then the first item in the pref
+       list, then s2k-cipher-algo or ZIP.
+
+       * sign.c (sign_file, sign_symencrypt_file), encode.c
+       (encode_simple, encode_crypt): Call default_cipher_algo and
+       default_compress_algo to get algorithms.
+
+       * g10.c (main): Allow pref selection for compress algo with
+       --openpgp.
+
+       * mainproc.c (proc_encrypted): Use --s2k-digest-algo for
+       passphrase mangling rather than --digest-algo.
+
+       * sign.c (hash_for): If --digest-algo is not set, but
+       --personal-digest-preferences is, then use the first hash
+       algorithm in the personal list.  If the signing algorithm is DSA,
+       then use the first 160-bit hash algorithm in the personal list.
+       If --pgp2 is set and it's a v3 RSA key, use MD5.
+
+       * g10.c (main), keydb.c (keydb_add_resource,
+       keydb_locate_writable): Rename --default-keyring as
+       --primary-keyring.  Stefan wins the naming contest.
+
+2002-11-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (add_notation_data): Disallow notation names that do not
+       contain a '@', unless --expert is set.  This is to help prevent
+       people from polluting the (as yet unused) IETF namespace.
+
+       * main.h: Comments about default algorithms.
+
+       * photoid.c (image_type_to_string): Comments about 3-letter file
+       extensions.
+
+       * encode.c (encode_simple), passphrase.c (passphrase_to_dek),
+       sign.c (sign_symencrypt_file): Use --s2k-digest-algo for
+       passphrase mangling rather than --digest-algo.
+
+2002-11-21  David Shaw  <dshaw@jabberwocky.com>
+
+       * keygen.c (keygen_set_std_prefs): Properly handle an empty
+       preference string.
+
+       * misc.c (string_to_compress_algo): "none" is a bad choice since
+       it conflicts with the "none" in setpref.
+
+2002-11-14  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): Allow compression algorithm names as the argument
+       to --compress-algo.  The old algorithm names still work for
+       backwards compatibility.
+
+       * misc.c (string_to_compress_algo): Allow "none" as an alias for
+       "uncompressed".
+
+2002-11-13  Stefan Bellon  <sbellon@sbellon.de>
+
+       * getkey.c (get_pubkey_byfprint_fast): Fixed type incompatibility,
+       was unsigned char instead of byte.
+
+2002-11-13  David Shaw  <dshaw@jabberwocky.com>
+
+       * encode.c (encode_simple): Make sure that files larger than about
+       4G use partial length encoding.  This is required because OpenPGP
+       allows only for 32 bit length fields.  From Werner on stable
+       branch.
+
+       * getkey.c (get_pubkey_direct): Renamed to...
+       (get_pubkey_fast): this and made extern.
+       (get_pubkey_byfprint_fast): New.  From Werner on stable branch.
+
+       * keydb.h, import.c (import_one): Use get_pubkey_fast instead of
+       get_pubkey.  We don't need a merged key and actually this might
+       lead to recursions.
+       (revocation_present): Likewise for search by fingerprint.  From
+       Werner on stable branch.
+
+       * g10.c (main): Try to create the trustdb even for non-colon-mode
+       list-key operations.  This is required because getkey needs to
+       know whether a a key is ultimately trusted.  From Werner on stable
+       branch.
+       
+       * exec.c [__CYGWIN32__]: Keep cygwin separate from Mingw32;
+       we don't need it here as it behaves more like a Posix system.
+       From Werner on stable branch.
+
+       * passphrase.c (agent_get_passphrase): Ditto.  From Werner on
+       stable branch.
+
+       * tdbio.c (MY_O_BINARY): Need binary mode with Cygwin.  From
+       Werner on stable branch.
+
+               * g10.c, gpgv.c (main) [__CYGWIN32__]: Don't get the homedir from
+       the registry.  From Werner on stable branch.
+       
+       * keyedit.c (show_key_with_all_names_colon): Make --with-colons
+       --edit display match the validity and trust of --with-colons
+       --list-keys.
+
+       * passphrase.c (agent_send_all_options): Fix compile warning.
+
+       * keylist.c (list_keyblock_colon): Validity for subkeys should
+       match that of the primary key, and not that of the last user ID.
+
+       * getkey.c (merge_selfsigs): Revoked/expired/invalid primary keys
+       carry these facts onto all their subkeys, but only after the
+       subkey has a chance to be marked valid.  This is to fix an
+       incorrect "invalid public key" error verifying a signature made by
+       a revoked signing subkey, with a valid unrevoked primary key.
+
+2002-11-09  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c (agent_send_all_options): Use tty_get_ttyname to
+       get the default ttyname.
+
+2002-11-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyring.h, keyring.c (keyring_register_filename): Return the
+       pointer if a given keyring is registered twice.
+
+       * keydb.h, keydb.c (keydb_add_resource): Use flags to indicate a
+       default keyring.
+       (keydb_locate_writable): Prefer the default keyring if possible.
+
+       * g10.c (main): Add --default-keyring option.
+
+2002-11-06  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main), trustdb.c (ask_ownertrust): Add
+       --force-ownertrust option for debugging purposes.  This allows
+       setting a whole keyring to a given trust during an
+       --update-trustdb.  Not for normal use - it's just easier than
+       hitting "4" all the time to test a large trustdb.
+
+       * pubkey-enc.c (get_session_key): With hidden recipients or try a
+       given passphrase against all secret keys rather than trying all
+       secret keys in turn.  Don't if --try-all-secrets or --status-fd is
+       enabled.
+
+       * passphrase.c (passphrase_to_dek): Mode 1 means do a regular
+       passphrase query, but don't prompt with the key info.
+
+       * seckey-cert.c (do_check, check_secret_key): A negative ask count
+       means to enable passphrase mode 1.
+
+       * keydb.h, getkey.c (enum_secret_keys): Add flag to include
+       secret-parts-missing keys (or not) in the list.
+
+2002-11-05  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_search_prompt): When --with-colons is
+       enabled, don't try and fit the search output to the screen size -
+       just dump the whole list.
+
+2002-11-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_search_prompt): When --with-colons is
+       enabled, just dump the raw keyserver protocol to stdout and don't
+       print the menu.
+
+       * keyserver.c (show_prompt): Don't show a prompt when command-fd
+       is being used.
+
+       * trustdb.c (trust_model_string, check_trustdb, update_trustdb,
+       validate_one_keyblock): It's not clear what a trustdb rebuild or
+       check means with a trust model other than "classic" or "openpgp",
+       so disallow this.
+
+2002-11-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main): Add --trust-model option.  Current
+       models are "openpgp" which is classic+trustsigs, "classic" which
+       is classic only, and "always" which is the same as the current
+       option --always-trust (which still works).  Default is "openpgp".
+
+       * trustdb.c (validate_one_keyblock): Use "openpgp" trust model to
+       enable trust sigs.
+
+       * gpgv.c (main), mainproc.c (check_sig_and_print), pkclist.c
+       (do_we_trust, do_we_trust_pre, check_signatures_trust): Use new
+       --trust-model option in place of --always-trust.
+
+       * keyedit.c (sign_mk_attrib, trustsig_prompt, sign_uids,
+       keyedit_menu): Prompt for and create a trust signature with
+       "tsign".  This is functional, but needs better UI text.
+
+       * build-packet.c (build_sig_subpkt): Able to build trust and
+       regexp subpackets.
+
+       * pkclist.c (do_edit_ownertrust): Comment.
+
+2002-11-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * keygen.c (set_one_pref, keygen_set_std_prefs): Allow using the
+       full algorithm name (CAST5, SHA1) rather than the short form (S3,
+       H2).
+
+       * main.h, keygen.c (keygen_get_std_prefs), keyedit.c
+       (keyedit_menu): Return and use a fake uid packet rather than a
+       string since we already have a nice parser/printer in
+       keyedit.c:show_prefs.
+
+       * main.h, misc.c (string_to_compress_algo): New.
+
+2002-11-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): Add --no-throw-keyid.
+
+       * keydb.h, encode.c (write_pubkey_enc_from_list), g10.c (main),
+       pkclist.c (build_pk_list): Add --hidden-recipient (-R) and
+       --hidden-encrypt-to, which do a single-user variation on
+       --throw-keyid.  The "hide this key" flag is carried in bit 0 of
+       the pk_list flags field.
+
+       * keyserver.c (parse_keyrec): Fix shadowing warning.
+
+2002-10-31  Stefan Bellon  <sbellon@sbellon.de>
+
+       * compress.c (init_compress) [__riscos__]: Use
+       riscos_load_module() to load ZLib module.
+
+       * g10.c (main) [__riscos__]: Renames due to changes in riscos.c
+       (e.g. prefixes all RISC OS specific functions with riscos_*).
+       * photoid.c (show_photos) [__riscos__]: Likewise.
+       * signal.c (got_fatal_signal) [__riscos__]: Likewise.
+
+       * trustdb.c (check_regexp) [__riscos__]: Branch to RISC OS RegEx
+       handling.
+
+2002-10-31  David Shaw  <dshaw@jabberwocky.com>
+
+       * build-packet.c (do_plaintext), encode.c (encode_sesskey,
+       encode_simple, encode_crypt), sign.c (write_plaintext_packet): Use
+       wipememory() instead of memset() to wipe sensitive memory as the
+       memset() might be optimized away.
+
+2002-10-30  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.c (check_regexp): Modern regexps require REG_EXTENDED.
+
+2002-10-29  David Shaw  <dshaw@jabberwocky.com>
+
+       * packet.h, trustdb.h, trustdb.c (trust_string): New.  Return a
+       string like "fully trusted", "marginally trusted", etc.
+       (get_min_ownertrust): New.  Return minimum ownertrust.
+       (update_min_ownertrust): New.  Set minimum ownertrust.
+       (check_regexp): New.  Check a regular epression against a user ID.
+       (ask_ownertrust): Allow specifying a minimum value.
+       (get_ownertrust_info): Follow the minimum ownertrust when
+       returning a letter.
+       (clear_validity): Remove minimum ownertrust when a key becomes
+       invalid.
+       (release_key_items): Release regexp along with the rest of the
+       info.
+       (validate_one_keyblock, validate_keys): Build a trust sig chain
+       while validating.  Call check_regexp for regexps.  Use the minimum
+       ownertrust if the user does not specify a genuine ownertrust.
+
+       * pkclist.c (do_edit_ownertrust): Only allow user to select a
+       trust level greater than the minimum value.
+
+       * parse-packet.c (can_handle_critical): Can handle critical trust
+       and regexp subpackets.
+
+       * trustdb.h, trustdb.c (clear_ownertrusts), delkey.c
+       (do_delete_key), import.c (import_one): Rename clear_ownertrust to
+       clear_ownertrusts and have it clear the min_ownertrust value as
+       well.
+
+       * keylist.c (list_keyblock_print): Indent uid to match pub and
+       sig.
+
+       * keyedit.c (print_and_check_one_sig, show_key_and_fingerprint,
+       menu_addrevoker), keylist.c (list_keyblock_print,
+       print_fingerprint): Show "T" or the trust depth for trust
+       signatures, and add spaces to some strings to make room for it.
+
+       * packet.h, parse-packet.c (dump_sig_subpkt, parse_one_sig_subpkt,
+       parse_signature): Parse trust signature values.
+
+       * tdbio.h, tdbio.c (tdbio_read_record, tdbio_write_record):
+       Reserve a byte for the minimum ownertrust value (for use with
+       trust signatures).
+
+2002-10-29  Stefan Bellon  <sbellon@sbellon.de>
+
+       * build-packet.c (calc_plaintext, do_plaintext): Removed RISC OS
+       specific filetype parts (it's now done in make_basename()).
+
+       * plaintext.c (handle_plaintext): Tidied up RISC OS specific
+       filetype parts.
+
+       * encode.c (encode_simple, encode_crypt): Added argument to
+       make_basename() call.
+
+       * sign.c (write_plaintext_packet): Added argument to
+       make_basename() call.
+
+2002-10-28  Stefan Bellon  <sbellon@sbellon.de>
+
+       * build-packet.c (calc_plaintext, do_plaintext): Added filetype
+       handling for RISC OS' file types.
+
+       * plaintext.c (handle_plaintext) [__riscos__]: Added filetype
+       handling for RISC OS' file types.
+
+2002-10-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, import.c (sec_to_pub_keyblock, import_secret_one,
+       parse_import_options), g10.c (main): New import-option
+       "convert-sk-to-pk" to convert a secret key into a public key
+       during import.  It is on by default.
+
+2002-10-23  Werner Koch  <wk@gnupg.org>
+
+       * pubkey-enc.c (get_it): Fix segv, test for revoked only when PK
+       has been assigned.
+
+2002-10-18  Timo Schulz  <ts@winpt.org>
+
+       * keylist.c: (print_pubkey_info): New.
+       (print_seckey_info): New.
+       * main.h: Prototypes for the new functions.       
+       * delkey.c (do_delete_key): Use it here.
+       * revoke.c (gen_desig_revoke): Ditto.
+       
+2002-10-17  Werner Koch  <wk@gnupg.org>
+
+       * pkclist.c (do_edit_ownertrust): Show all user IDs.  This should
+       be enhanced to also show the current trust level.  Suggested by
+       Florian Weimer.
+
+2002-10-17  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): Handle --strict and --no-strict from the command
+       line before the options file is loaded.
+
+2002-10-15  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): Disable --textmode when encrypting (symmetric or
+       pk) in --pgp2 mode as PGP 2 can't handle the unknown length
+       literal packet.  Reported by Michael Richardson.
+
+2002-10-14  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver-internal.h, keyserver.c (print_keyrec, parse_keyrec,
+       show_prompt, keyserver_search_prompt, keyserver_spawn): Go to
+       version 1 of the keyserver protocol.  This is a better design,
+       similar to --with-colons, that allows for keys with multiple user
+       IDs rather than using multiple keys.  It also matches the machine
+       readable pksd format.  Also use a prettier --search-keys listing
+       format that can fill different size windows (currently set at 24
+       lines).
+
+2002-10-12  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (print_status_key_created): New.
+       (do_generate_keypair): Use it to print the fingerprint.
+       (generate_subkeypair): Likewise.
+
+2002-10-11  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (menu_addrevoker): Properly back out if the signature
+       fails.  Also, do not allow appointing the same revoker twice, and
+       report ALREADY_SIGNED if the user tries it.
+
+2002-10-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (import_keys_internal): Missed one s/inp/inp2/.
+
+       * keylist.c (print_capabilities): Properly indicate per-key
+       capabilities of sign&encrypt primary keys that have
+       secret-parts-missing (i.e. no capabilities at all)
+
+       * mainproc.c (symkey_decrypt_sesskey): Fix compiler warning.
+
+2002-10-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * getkey.c (get_pubkey_direct): Don't cache keys retrieved via
+       this function as they may not have all their fields filled in.
+
+       * sig-check.c (signature_check2): Use new is_primary flag to check
+       rather than comparing main_keyid with keyid as this still works in
+       the case of a not fully filled in pk.
+
+2002-10-04  Werner Koch  <wk@gnupg.org>
+
+       * import.c (import_keys_internal): s/inp/inp2/ to avoid shadowing
+       warning.
+
+       * passphrase.c (agent_get_passphrase): Fixed signed/unsigned char
+       problem in %-escaping.  Noted by Ingo Klöcker.
+
+2002-10-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main): Add --strict and --no-strict to switch
+       the log_warning severity level from info to error.
+
+       * keylist.c (print_capabilities): Secret-parts-missing keys should
+       show that fact in the capabilities, and only primary signing keys
+       can certify other keys.
+
+       * packet.h, parse_packet.c (parse_key): Add is_primary flag for
+       public keys (it already exists for secret keys).
+
+2002-10-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (import_secret_one): Check for an illegal (>110)
+       protection cipher when importing a secret key.
+
+       * keylist.c (list_keyblock_print): Show a '#' for a
+       secret-parts-missing key.
+
+       * parse_packet.c (parse_key): Some comments.
+
+       * revoke.c (gen_revoke): Remove some debugging code.
+
+       * trustdb.c (verify_own_keys): Make trusted-key a non-deprecated
+       option again.
+
+       * seckey-cert.c (do_check): Don't give the IDEA warning unless the
+       cipher in question is in fact IDEA.
+
+2002-10-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (import_one): Make sure that a newly imported key
+       starts with a clean ownertrust.
+
+2002-10-01  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (get_pubkey_direct): New.
+       (merge_selfsigs_main): Use it here to look for an ultimately
+       trusted key.  Using the full get_pubkey might lead to an
+       infinitive recursion.
+
+2002-09-29  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (parse_keyserver_uri): Force the keyserver URI
+       scheme to lowercase to be case-insensitive.
+
+2002-09-28  David Shaw  <dshaw@jabberwocky.com>
+
+       * export.c (do_export_stream): Comment.
+
+       * sig-check.c (check_key_signature2): Properly handle a
+       non-designated revocation import.
+
+2002-09-26  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (set_homedir): New. Changed all direct assignments to use
+       this.
+       * gpgv.c (set_homedir): Ditto.
+
+2002-09-25  David Shaw  <dshaw@jabberwocky.com>
+
+       * Makefile.am: Link gpg with EGDLIBS (i.e. NETLIBS) as EGD uses
+       sockets.  Remove the old NETLIBS variable since the keyserver
+       stuff is no longer internal.
+
+2002-09-24  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (import_keys_stream): Fix compiler type warning.
+
+       * keyring.c (keyring_rebuild_cache), sig-check.c
+       (check_key_signature2), import.c (import, chk_self_sigs): Minor
+       language cleanups.
+
+2002-09-23  Stefan Bellon  <sbellon@sbellon.de>
+
+       * main.h: Introduced fast-import as import option. Removed
+       fast as separate option from prototypes.
+       * import.c (parse_import_options): Added fast-import option.
+       (import_*): Removed fast as separate option.
+       * g10.c (main): Added option fast-import, removed old fast
+       as separate argument.
+       * keyserver.c (keyserver_spawn): Removed old fast as separate
+       argument.
+
+2002-09-22  Stefan Bellon  <sbellon@sbellon.de>
+
+       * import.c (import_keys, import_keys_stream,
+       import_keys_internal): Added trustdb update/check to key import if
+       not fast-import and interactive set/no-auto-check-trustdb unset.
+       Avoided function clone by introducing import_keys_internal.
+
+2002-09-19  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_spawn): Properly handle line truncation.
+       Don't leak memory (~10-20 bytes) on searches.
+       (keyserver_search_prompt): Cleanup.
+
+       * keylist.c (list_keyblock_colon): Show 1F direct key signatures
+       in --with-colons listing.
+
+2002-09-16  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (menu_addrevoker): The direct key signature for
+       revocation keys must be at least v4 to carry the revocation key
+       subpacket.  Add a PGP 2.x warning for revocation keys.
+
+2002-09-14  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (check_permissions): Rearrange strings to make translating
+       easier (don't incorporate string parts).
+
+       * keyedit.c (sign_uids): Make strings translatable.
+
+       * sig-check.c (check_key_signature2): Make string translatable.
+
+2002-09-13  David Shaw  <dshaw@jabberwocky.com>
+
+       * getkey.c (check_revocation_keys): Move....
+       * main.h, sig-check.c (check_revocation_keys): to here.  Also
+       return the signature_check error code rather than 0/1 and cache
+       the sig result.
+
+       * sig-check.c (check_key_signature2): Divert to
+       check_revocation_keys if a revocation sig is made by someone other
+       than the pk owner.
+
+       * getkey.c (merge_selfsigs_main): Tidy.
+
+2002-09-13  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main) [__MINGW32__]: Activate oLoadExtension.
+
+2002-09-12  David Shaw  <dshaw@jabberwocky.com>
+
+       * Makefile.am, hkp.c, hkp.h, keyserver.c (keyserver_work): Remove
+       internal HKP support.
+
+       * keyserver.c (keyserver_spawn): Remove whitespace after keyserver
+       commands.
+
+2002-09-10  David Shaw  <dshaw@jabberwocky.com>
+
+       * exec.c (expand_args): Remove loop left over from earlier
+       implementation.
+       (exec_write): Missed one tick.
+
+2002-09-10  Werner Koch  <wk@gnupg.org>
+
+       * g10.c, options.h: Removed option --emulate-checksum-bug.
+       * misc.c (checksum_u16_nobug): Removed.
+       (checksum_u16): Removed the bug emulation.
+       (checksum_mpi): Ditto.
+       (checksum_mpi_counted_nbits): Removed and replaced all calls
+       with checksum_mpi.
+
+       * parse-packet.c (read_protected_v3_mpi): New.
+       (parse_key): Use it here to store it as an opaque MPI.
+       * seckey-cert.c (do_check): Changed the v3 unprotection to the new
+       why to store these keys.
+       (protect_secret_key): Likewise.
+       * build-packet.c (do_secret_key): And changed the writing.
+
+       * tdbio.c (tdbio_set_dbname, open_db): Use new macro MY_O_BINARY
+       to avoid silly ifdefs.
+       (open_db): Fallback to RDONLY so that gpg may be used from a
+       RO-medium.
+
+       * encode.c (encode_simple): Make sure we don't use an ESK packet
+       when we don't have a salt in the S2K.
+
+       * misc.c (pct_expando) <case f>: Make sure that LEN is initialized.
+
+       * exec.c (exec_finish): Use ticks to denote filenames in messages.
+       (make_tempdir, exec_write): Changed format of messages.
+
+       * keyserver.c (print_keyinfo): Release USERID in on error.
+       (keyserver_work) [!DISABLE_KEYSERVER_HELPERS]: Exclude the unused
+       code.
+
+2002-09-09  Werner Koch  <wk@gnupg.org>
+
+       * parse-packet.c (make_attribute_uidname): Add new ar MAX_NAMELEN
+       for sanity checks.  Changed both callers. Limit the size of an %s.
+
+       * options.skel: Comment lock-once out, so that this file does not
+       change anything when copied to a new home directory.
+       * openfile.c (try_make_homedir): Don't exit after copying the
+       option skeleton.
+
+       * options.h: Don't use a comma when declaring variables over more
+       than one line.
+
+       * mainproc.c (symkey_decrypt_sesskey): Check length of the session
+       key.
+
+       * hkp.c (dehtmlize): Use ascii_tolower to protect against weird
+       locales.  Cast the argument for isspace for the sake of broken
+       HP/UXes.
+       (parse_hkp_index): s/ascii_memcasecmp/ascii_strncasecmp/.
+
+       * g10.c: Removed option --emulate-3des-s2k-bug.
+
+       * passphrase.c (hash_passphrase): Was used here.
+
+       * export.c (parse_export_options)
+       * keyserver.c (parse_keyserver_options)
+       * import.c (parse_import_options)
+       * g10.c (check_permissions): s/ascii_memcasecmp/ascii_strncasecmp/.
+
+2002-09-09  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (add_group): Use '=' to separate group name from group
+       members.  Use a better error message for when no = is found.
+
+       * hkp.c (hkp_export): Use CRLF in headers.
+
+2002-09-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * mainproc.c (print_pkenc_list): Don't increment the error counter
+       when printing the list of keys a message was encrypted to.  This
+       would make gpg give a non-zero exit code even for completely valid
+       messages if the message was encrypted to more than one key that
+       the user owned.
+
+2002-09-02  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Try to set a default character set.  Print the
+       used one in verbosity level 3.
+       * gpgv.c (main): Try to set a default character set.
+
+       * status.c, status.h (STATUS_IMPORT_OK): New.
+       * import.c (import_one,import_secret_one): Print new status.
+
+2002-08-30  David Shaw  <dshaw@jabberwocky.com>
+
+       * pkclist.c (build_pk_list): Add new status code to indicate an
+       untrusted user.  This (or a disabled key) fail with "unavailable
+       pubkey" (G10ERR_UNU_PUBKEY).
+
+       * pkclist.c (build_pk_list): Fail if any recipient keys are
+       unusable.
+
+       * options.skel: The PGP LDAP keyserver is back.  Use MIT keyserver
+       as a sample rather than cryptnet as cryptnet does not support
+       searching yet.
+
+       * keyedit.c (show_key_with_all_names): Fix error message
+       (preferences are userid/selfsig and not key specific).
+
+2002-08-30  Werner Koch  <wk@gnupg.org>
+
+       * pkclist.c (do_we_trust_pre): Changed the wording of a warning.
+
+       * encode.c (encode_simple,encode_crypt): Use new style CTB for
+       compressssed packets when using MDC.  We need to do this so that
+       concatenated messages are properly decrypted.  Old style
+       compression assumes that it is the last packet; given that we
+       can't determine the length in advance, the uncompressor does not
+       know where to start.  Actually we should use the new CTB always
+       but this would break PGP 2 compatibility.
+
+       * parse-packet.c (parse): Special treatment for new style CTB
+       compressed packets.
+
+       * build-packet.c (do_mdc): Removed. Was not used.
+       (do_encrypted_mdc): Count in the version number and the MDC packet.
+
+2002-08-28  David Shaw  <dshaw@jabberwocky.com>
+
+       * sig-check.c (do_check_messages, do_check): Show keyid in error
+       messages.
+
+       * keyserver.c (print_keyinfo): More readable key listings for
+       --search-keys responses.
+
+2002-08-26  David Shaw  <dshaw@jabberwocky.com>
+
+       * hkp.c (parse_hkp_index, dehtmlize): Move HTML functionality into
+       new "dehtmlize" function.  Remove HTML before trying to parse each
+       line from the keyserver.  If the keyserver provides key type
+       information in the listing, use it.
+
+2002-08-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * sig-check.c (do_check, do_check_messages): Emit the usual sig
+       warnings even for cached sigs.  This also serves to protect
+       against missing a sig expiring while cached.
+
+       * getkey.c (merge_selfsigs_main): Don't check UID self-sigs twice.
+
+2002-08-22  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (clean_subkeys, chk_self_sigs): Merge clean_subkeys
+       into chk_self_sigs.  This improves efficiency as the same
+       signatures are not checked multiple times.  Clarify when a subkey
+       is revoked (any revocation signature, even if it is dated before
+       the binding signature).
+
+       * getkey.c (merge_selfsigs_subkey): Subkey revocation comments.
+
+       * keylist.c (list_one): Stats are only for public key listings.
+
+       * g10.c (main), options.skel: Default should be include-revoked
+       for keyserver operations.
+
+2002-08-21  Werner Koch  <wk@gnupg.org>
+
+       * import.c (import_print_stats): Print new non_imported counter
+       which is currently not used because we terminate on errors.
+
+2002-08-20  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.skel: Document no-include-attributes for
+       keyserver-options.
+
+       * keylist.c, keyedit.c, keyserver.c, sign.c: Some TODOs and
+       comments.
+
+       * export.c (do_export_stream): Fix noop bug in exporting sensitive
+       revocation keys.
+
+       * pkclist.c (do_edit_ownertrust): Comment out the option for
+       showing trust paths until it can be implemented.
+
+2002-08-19  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (get_user_id_native): Renamed to ..
+       (get_user_id_printable): this.  Filter out all dangerous
+       characters.  Checked all usages.
+       (get_user_id_string_native): Renamed to..
+       (get_user_id_string_printable): this.  Filter out all dangerous
+       characters.  Checked all usages.
+       * keyedit.c (show_basic_key_info): New.
+       * keylist.c (print_fingerprint): New mode 3.
+       * import.c (import_one): Use new function to display the user ID.
+
+2002-08-16  Timo Schulz  <ts@winpt.org>
+
+       * g10.c (main): Enable opt.interactive.
+
+       * import.c (import_one): Ask the user if the key shall be
+       imported when the interactive mode is used. Useful to extract
+       selected keys from a file.
+       
+2002-08-16  Werner Koch  <wk@gnupg.org>
+
+       * seckey-cert.c: Workaround to allow decryption of v3 keys created
+       with a bug in the mpi_get_secure_buffer.
+
+2002-08-14  David Shaw  <dshaw@jabberwocky.com>
+
+       * hkp.c (parse_hkp_index): Properly handle really large keys
+       (5 digit key length) in HKP searches.
+
+2002-08-13  David Shaw  <dshaw@jabberwocky.com>
+
+       * encode.c (encode_simple): Fix problem with using compression
+       algo 2 and symmetric compressed files.
+
+       * encode.c (encode_simple, encode_crypt): If we are not using a
+       MDC, compress even if a file is already compressed.  This is to
+       help against the chosen ciphertext attack.
+
+       * pkclist.c (select_algo_from_prefs): Fix requested algorithm bug
+       so the request succeeds even if the requested algorithm is not the
+       first found.
+
+       * cipher.c (write_header), encode.c (use_mdc, encode_simple,
+       encode_crypt, encrypt_filter), g10.c (main): Be more eager to use
+       a MDC.  We use a MDC if the keys directly support it, if the keys
+       list AES (any) or TWOFISH anywhere in the prefs, or if the cipher
+       chosen does not have a 64 bit blocksize.
+
+2002-08-08  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.skel: Some language tweaks, and remove the
+       load-extension section for random gatherers.
+
+       * keyring.c (create_tmp_file, rename_tmp_file): Create tmp files
+       with user-only permissions, but restore the original permissions
+       if the user has something special set.
+
+       * openfile.c (copy_options_file): Create new options file
+       (gpg.conf) with user-only permissions.
+
+       * keydb.c (keydb_add_resource): Create new keyrings with user-only
+       permissions.
+
+       * tdbio.c (tdbio_set_dbname): Create new trustdbs with user-only
+       permissions.
+
+2002-08-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * sig-check.c (signature_check2): Sanity check that the md has a
+       context for the hash that the sig is expecting.  This can happen
+       if a onepass sig header does not match the actual sig, and also if
+       the clearsign "Hash:" header is missing or does not match the
+       actual sig.
+
+       * keyedit.c (menu_revsig): Properly show a uid is revoked without
+       restarting gpg.  This is Debian bug 124219, though their supplied
+       patch will not do the right thing.
+
+       * main.h, tdbio.c (tdbio_set_dbname), misc.c (removed
+       check_permissions), keydb.c (keydb_add_resource), g10.c (main,
+       check_permissions): Significant reworking of the permission check
+       mechanism.  The new behavior is to check everything in the homedir
+       by checking the homedir itself.  If the user wants to put
+       (possibly shared) keyrings outside the homedir, they are not
+       checked.  The options file and any extension files are checked
+       wherever they are, as well as their enclosing directories.  This
+       is Debian bug 147760.
+       
+2002-08-06  Stefan Bellon  <sbellon@sbellon.de>
+
+       * g10.c (main): Use of EXTSEP_S in new gpg.conf string.
+       * openfile.c (copy_options_file): Ditto.
+
+2002-08-06  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main), mainproc.c (proc_encrypted):
+       --ignore-mdc-error option to turn a MDC check error into a
+       warning.
+
+       * encode.c (encode_crypt), g10.c (main), sign.c (sign_file,
+       clearsign_file): Use the same --pgpX warning string everywhere to
+       ease translations.
+
+       * encode.c (write_pubkey_enc_from_list): Warn when using
+       --throw-keyid with --pgpX.  Noted by Vedaal Nistar.
+
+       * revoke.c (export_minimal_pk, gen_desig_revoke, gen_revoke):
+       Export a minimal pk along with the revocation cert when in --pgpX
+       mode so that PGP can import it.
+
+2002-08-06  Werner Koch  <wk@gnupg.org>
+
+       * options.skel: Changed comments.
+
+       * g10.c (main): Try to use "gpg.conf" as default option file.
+       * openfile.c (copy_options_file): Changed name of created file.
+
+2002-08-02  Werner Koch  <wk@gnupg.org>
+
+       * Makefile.am (LDFLAGS): Removed DYNLINK_LDFLAGS.
+
+2002-07-30  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main), mainproc.c (proc_encrypted): Return a
+       decryption failed error if a MDC does not verify.  Warn if a MDC
+       is not present (can disable via --no-mdc-warning).
+
+       * exec.c (exec_write), g10.c (main), keyserver.c
+       (keyserver_spawn): Use new DISABLE_KEYSERVER_PATH rather than
+       FIXED_EXEC_PATH.
+
+2002-07-28  David Shaw  <dshaw@jabberwocky.com>
+
+       * sig-check.c (do_check): Properly validate v4 sigs with no hashed
+       section at all.
+
+2002-07-25  Werner Koch  <wk@gnupg.org>
+
+       * delkey.c (do_delete_key): Always allow to delete a key in batch mode
+       when specified by fingerprint.  Suggested by Enzo Michelangeli.
+
+2002-07-25  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (menu_revsig): Change "revsig" to honor selected uids
+       so the user can revoke sigs from particular uids only.
+
+       * keylist.c (list_keyblock_print): Don't display expired uids in
+       --list-keys unless -v and not --list-sigs (just like revoked
+       uids).
+
+       * exec.c, export.c, import.c, keyedit.c, keyserver.c, misc.c:
+       "Warning" -> "WARNING"
+
+2002-07-24  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, import.c (parse_import_options, fix_hkp_corruption,
+       import_one, delete_inv_parts), g10.c (main): New import-option
+       "repair-hkp-subkey-bug", which repairs as much as possible the HKP
+       mangling multiple subkeys bug.  It is on by default for keyserver
+       receives, and off by default for regular --import.
+
+       * main.h, import.c (import, import_one, delete_inv_parts), hkp.c
+       (hkp_ask_import), keyserver.c (keyserver_spawn): Use keyserver
+       import options when doing keyserver receives.
+
+       * options.h, exec.h, exec.c (set_exec_path, exec_write), g10.c
+       (main), keyserver.c (keyserver_spawn): If the user does not use
+       "exec-path", completely replace $PATH with GNUPG_LIBEXECDIR before
+       calling the keyserver helper.  If the user does use "exec-path",
+       append GNUPG_LIBEXECDIR after the specified path.
+
+2002-07-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (parse_import_options), export.c
+       (parse_export_options): Fix offset problem with reversed ("no-")
+       meanings.
+
+       * import.c (delete_inv_parts): Discard subkey signatures (0x18 and
+       0x28) if found in the userid section of the key.
+
+       * sig-check.c (signature_check2): Signatures made by invalid
+       subkeys (bad/missing binding sig) are also invalid.
+
+       * keylist.c (print_fingerprint): Show the primary as well as the
+       secondary key fingerprint in modes 1 & 2.
+
+2002-07-22  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, main.h, g10.c (main), import.c
+       (parse_import_options, delete_inv_parts), keyserver.c
+       (parse_keyserver_options): add new --import-options option.  The
+       only current flag is "allow-local-sigs".
+
+       * g10.c (main): Don't disable MDC in pgp7 mode.
+
+       * options.h, g10.c (main), keyserver.c (parse_keyserver_options):
+       Remove old keyserver-option include-attributes now that there is
+       an export-option for the same thing.
+
+       * options.h, main.h, export.c (parse_export_options,
+       do_export_stream), g10.c (main): add new --export-options option.
+       Current flags are "include-non-rfc", "include-local-sigs",
+       "include-attributes", and "include-sensitive-revkeys".
+
+       * options.h, hkp.c (hkp_export), keyserver.c
+       (parse_keyserver_options, keyserver_spawn): try passing unknown
+       keyserver options to export options, and if successful, use them
+       when doing a keyserver --send-key.
+
+       * build-packet.c (build_sig_subpkt): We do not generate
+       SIGSUBPKT_PRIV_VERIFY_CACHE anymore.
+
+       * revoke.c (gen_desig_revoke): Lots more comments about including
+       sensitive revkeys along with the revocation sig itself.
+
+       * keyserver.c (parse_keyserver_options): Simpler implementation
+       that can skip one pass over the options.
+
+2002-07-18  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (keyedit_menu, menu_addrevoker): Allow specifying
+       "sensitive" as an argument to an addrevoker command.  This sets
+       the 0x40 sensitive revoker flag.
+
+       * revoke.c (gen_desig_revoke): When generating a designated
+       revocation, include the direct key sig that contains the
+       designated revoker subpacket.  This allows sensitive designated
+       revocation subpackets to be exported.  Also indicate which
+       revokers are sensitive in the first place.
+
+2002-07-17  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (show_key_with_all_names_colon): The 0x40 class bit in
+       a designated revoker means "sensitive", not "local".  It's
+       exportable under the right circumstances.
+
+       * main.h, options.h, export.c (do_export_stream), g10.c (main),
+       hkp.c (hkp_export), keyserver.c (keyserver_spawn: Add a flag to
+       skip attribute packets and their signatures while exporting.  This
+       is to accomodate keyservers (pksd again) that choke on attributes.
+       Use keyserver-option "include-attributes" to control it.  This
+       defaults to ON (i.e. don't skip).
+
+2002-07-09  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, keyserver.c (parse_keyserver_uri, keyserver_spawn,
+       keyserver_work), hkp.c (hkp_ask_import, hkp_export, hkp_search):
+       Use a much more strict reading of RFC-2396 for the keyserver URIs.
+       Specifically, don't try and be smart about checking the value of
+       ":port" so long as it is all digits, and properly handle opaque
+       data (those scheme specific parts that do not start with "//").
+
+2002-07-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * photoid.c (get_default_photo_command, show_photos): Honor
+       FIXED_PHOTO_VIEWER and DISABLE_PHOTO_VIEWER.
+
+       * mainproc.c (check_sig_and_print): Use --show-photos to show
+       photos when verifying a sig made by a key with a photo.
+
+       * keyserver.c (parse_keyserver_uri): Properly parse a URI with no
+       :port section and an empty file path, but with a terminating '/'.
+       (keyserver_work): Honor DISABLE_KEYSERVER_HELPERS.
+
+       * hkp.c (hkp_ask_import): Display keyserver URI as a URI, but only
+       if verbose.
+
+       * exec.c, g10.c: USE_EXEC_PATH -> FIXED_EXEC_PATH
+
+2002-07-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * exec.h, exec.c (set_exec_path, exec_write), g10.c (main): If
+       USE_EXEC_PATH is defined at compile time, use it to lock the
+       exec-path and not allow the user to change it.
+
+2002-07-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main), keyserver.c (keyserver_refresh):
+       Maintain and use the original keyserver URI for cosmetics rather
+       than trying to recreate it when needed.
+
+       * mainproc.c (check_sig_and_print): Properly disregard expired
+       uids.  Make sure that the first uid listed is a real uid and not
+       an attribute (attributes should only be listed in the "aka"
+       section).  When there are no valid textual userids, try for an
+       invalid textual userid before using any attribute uid.
+
+2002-07-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.skel: Fix a few typos, clarify "group", and remove
+       sample photo viewers for Win32 since they are the defaults now.
+
+       * parse-packet.c (make_attribute_uidname), keylist.c
+       (dump_attribs): Fix two typecast warnings.
+
+       * packet.h, build-packet.c (build_attribute_subpkt), exec.c
+       (expand_args), mkdtemp.c (mkdtemp), photoid.c
+       (parse_image_header): Fix some signedness compiler warnings.
+
+2002-07-01  Werner Koch  <wk@gnupg.org>
+
+       * photoid.c (get_default_photo_command): Also use __MINGW32__
+       instead of HAVE_DOSISH_SYSTEM.
+
+       * encode.c (encode_symmetric): Do not use the new encryption code.
+
+2002-06-30  Werner Koch  <wk@gnupg.org>
+
+       * photoid.c: Use __MINGW32__ to include windows because
+       HAVE_DOSISH_SYSTEM is also set for OS/2 and plain DOS.  Provide
+       constant missing in older mingw installations. 
+
+2002-06-21  Stefan Bellon  <sbellon@sbellon.de>
+
+       * g10.c [__riscos__]: Moved RISC OS specific stuff to util/riscos.c
+       and include/util.h.
+
+       * gpgv.c [__riscos__]: Likewise.
+
+2002-06-20  David Shaw  <dshaw@jabberwocky.com>
+
+       * keydb.h, pkclist.c (select_algo_from_prefs): Allow passing a
+       suggested algorithm which will be used if available.
+
+       * encode.c (encode_crypt, encrypt_filter), sign.c (sign_file): Use
+       new select_algo_from_prefs feature to check if forcing an
+       algorithm would violate the recipient preferences.
+
+       * photoid.c (get_default_photo_command, show_photos): Use
+       different default viewers on different platforms.  Currently we
+       have Win 9x, Win NT (2k, xp), Mac OSX, RISC OS, and "everybody
+       else".  These are #ifdefs as much as possible to avoid clutter.
+
+       * g10.c (strusage, build_list), keyedit.c (show_prefs), main.h,
+       misc.c (compress_algo_to_string, check_compress_algo), pkclist.c
+       (algo_available), keygen.c (keygen_set_std_prefs): New
+       algo_to_string and check functions for compress algorithms.
+
+2002-06-20  Werner Koch  <wk@gnupg.org>
+
+       * misc.c (setsysinfo): Removed a #warning for Alpha's uniligedn
+       trap disabling - it is quite possible that this is a debug relict.
+
+2002-06-20  Stefan Bellon  <sbellon@sbellon.de>
+
+       * g10.c [__riscos__]: Added image file system feature.
+
+       * gpgv.c [__riscos__]: Added image file system feature.
+
+       * photoid.c (show_photos) [__riscos__]: Set RISC OS filetype of
+       photo id according to MIME type.
+
+2002-06-19  David Shaw  <dshaw@jabberwocky.com>
+
+       * hkp.c (parse_hkp_index): Don't leak memory when failing out of a
+       bad HKP keyserver.
+
+       * g10.c (add_notation_data): Relax slightly the rules as to what
+       can go into a notation name - 2440 allows "@", for example.
+
+2002-06-17  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (clean_subkeys, import_one): Only allow at most 1
+       binding sig and at most 1 revocation sig on a subkey, as per
+       2440:11.1.
+
+       * hkp.c (parse_hkp_index, hkp_search): Error if the keyserver
+       returns an unparseable HKP response.
+
+2002-06-15  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (show_key_with_all_names), keylist.c
+       (list_keyblock_print): Show "[expired]" before expired uids.
+
+       * keyedit.c (show_key_with_all_names_colon), mainproc.c
+       (list_node), keylist.c (list_keyblock_colon): Show flag 'e' for
+       expired user ids.  Use "uat" for user attribute packets instead of
+       "uid".  Also use '<count> <length>' rather than the fake user id
+       string on attributes.
+
+       * keygen.c (keygen_add_revkey): Remove unused code.
+
+       * misc.c (check_permissions): Check directory permissions
+       properly - they are not special files.
+
+       * pkclist.c (expand_id, expand_group, build_pk_list): When
+       expanding groups before building a pk list, inherit flags from the
+       original pre-expanded string.
+
+       * pubkey-enc.c (is_algo_in_prefs): Don't use prefs from expired
+       uids.
+
+2002-06-14  David Shaw  <dshaw@jabberwocky.com>
+
+       * free-packet.c (copy_signature): Properly copy a signature that
+       carries a revocation key on it.
+
+       * pkclist.c (expand_id, expand_group, build_pk_list): Groups now
+       work properly when used in the "Enter the user ID" prompt.
+
+2002-06-14  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (show_key_with_all_names): Display warning if a user
+       tries to show prefs on a v3 key with a v3 selfsig.
+
+       * kbnode.c (dump_kbnode): Show if a uid is expired.
+
+       * import.c (merge_blocks, import_revoke_cert): Show user ID
+       receiving a revocation certificate.
+
+       * free-packet.c (cmp_user_ids): Properly compare attribute ids.
+
+       * pkclist.c (expand_groups): Maintain the strlist flags while
+       expanding.  Members of an expansion inherit their flags from the
+       expansion key.
+
+       * options.h, cipher.c (write_header), g10.c (main), keygen.c
+       (keygen_set_std_prefs): remove the personal_mdc flag.  It no
+       longer serves a purpose now that the personal preference lists are
+       split into cipher/digest/zip.
+
+2002-06-14  Timo Schulz  <ts@winpt.org>
+
+       * skclist.c (is_insecure): Implemented.
+       
+2002-06-12  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_spawn): Properly handle PROGRAM responses
+       when they have a CRLF ending.  Noted by Keith Ray.
+
+       * keyserver.c (keyserver_spawn): Handle CRLF endings from
+       keyserver helpers.  Also don't leak the last line worth of memory
+       from the keyserver response.
+
+       * main.h, misc.c (deprecated_warning): New function to warn about
+       deprecated options and commands.
+
+       * g10.c (main), keyserver-internal.h, keyserver.c
+       (parse_keyserver_uri): Use new deprecated function to warn about
+       honor-http-proxy, auto-key-retrieve, and x-broken-hkp.
+
+2002-06-11  David Shaw  <dshaw@jabberwocky.com>
+
+       * Makefile.am: link gpg with NETLIBS for the built-in HKP access.
+
+2002-06-10  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, keyserver.c (keyserver_opts), g10.c (main): New
+       keyserver option "include-subkeys".  This feature already existed,
+       but now can be turned off.  It defaults to on.
+
+       * options.h, keyserver.c (parse_keyserver_options,
+       keyserver_spawn): There are now enough options to justify making a
+       structure for the keyserver options rather than a page of
+       if-then-else-if-then-etc.
+
+       * getkey.c (merge_keys_and_selfsig, merge_selfsigs_main): Fix bug
+       in calculating key expiration dates.
+
+2002-06-09  David Shaw  <dshaw@jabberwocky.com>
+
+       * keydb.h, getkey.c (get_user_id_native), import.c (import_one):
+       Display user ID while importing a key.  Note this applies to both
+       --import and keyserver --recv-keys.
+
+       * exec.c (exec_finish): Log unnatural exit (core dump, killed
+       manually, etc) for fork/exec/pipe child processes.
+
+2002-06-08  Timo Schulz  <ts@winpt.org>
+
+       * encode.c (encode_symmetric): Disable the compat flag
+       when the expert mode is enabled.
+       
+2002-06-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.skel, options.h, main.h, keydb.h, pkclist.c
+       (build_pk_list, expand_groups), g10.c (main, add_group): Add new
+       "group" command to allow one name to expand into multiple keys.
+       For simplicity, and to avoid potential loops, we only expand once
+       - you can't make an alias that points to an alias.
+
+       * main.h, g10.c (main), keygen.c (build_personal_digest_list):
+       Simplify the default digest list - there is really no need for the
+       other hashes since they will never be used after SHA-1 in the
+       list.
+
+       * options.skel, options.h, g10.c (main), hkp.c (hkp_ask_import,
+       hkp_export, hkp_search), keyserver.c (parse_keyserver_options,
+       parse_keyserver_uri, keyserver_work, keyserver_refresh): Make the
+       "x-broken-hkp" keyserver scheme into keyserver-option
+       "broken-http-proxy".  Move honor_http_proxy into
+       keyserver_options.  Canonicalize the three variations of "hkp",
+       "x-hkp", and "x-broken-hkp" into "hkp".
+
+2002-06-07  Stefan Bellon  <sbellon@sbellon.de>
+
+       * g10.c [__riscos__]: Added --attribute-file to do the same as
+       --attribute-fd, but with a filename not a fd as argument.
+       Added magic symbol for RISC OS to use different memory management.
+
+       * gpgv.c [__riscos__]: Added magic symbol for RISC OS to use
+       different memory management.
+
+2002-06-06  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, g10.c (main), keygen.c (build_personal_digest_list): Put
+       in a default digest preference list consisting of SHA-1, followed
+       by every other installed digest except MD5.  Note this is the same
+       as having no digest preference at all except for SHA-1 being
+       favored.
+
+       * options.h, g10.c (main), keygen.c (keygen_set_std_prefs),
+       pkclist.c (select_algo_from_prefs): Split
+       --personal-preference-list into three:
+       --personal-{cipher|digest|compress}-preferences.  This allows a
+       user to set one without affecting another (i.e. setting only a
+       digest pref doesn't imply an empty cipher pref).
+
+       * exec.c (exec_read): This is a safer way of guessing the return
+       value of system().  Noted by Stefan Bellon.
+
+2002-06-05  David Shaw  <dshaw@jabberwocky.com>
+
+       * hkp.c (parse_hkp_index): Be more robust with keyservers
+       returning very unparseable responses.
+
+       * exec.c (exec_read): Catch and display an error when the remote
+       process exits unnaturally (i.e. segfault) so the user knows what
+       happened.  Also fix exec_write stub which has a different number
+       of arguments now.
+
+2002-06-05  Timo Schulz  <ts@winpt.org>
+
+       * encode.c (encode_simple): Ignore the new mode for RFC1991.
+       * mainproc.c (symkey_decrypt_sesskey): Better check for weird
+       keysizes.
+       
+2002-06-05  Timo Schulz  <ts@winpt.org>
+
+       * encode.c (encode_sesskey): New.
+       (encode_simple): Use it here. But by default we use the compat
+       mode which supress to generate encrypted session keys.
+       
+2002-06-05  Timo Schulz  <ts@winpt.org>
+
+       * mainproc.c (symkey_decrypt_sesskey): New.
+       (proc_symkey_enc): Support for encrypted session keys.
+       
+2002-06-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * sign.c (hash_for, sign_file): When encrypting and signing at the
+       same time, consult the various hash prefs to pick a hash algorithm
+       to use.  Pass in a 160-bit hint if any of the signing keys are
+       DSA.
+
+       * keydb.h, pkclist.c (select_algo_from_prefs, algo_available):
+       Pass a "hints" opaque pointer in to let the caller give hints as
+       to what algorithms would be acceptable.  The only current hint is
+       for PREFTYPE_HASH to require a 160-bit hash for DSA.  Change all
+       callers in encode.c (encode_crypt, encrypt_filter) and sign.c
+       (sign_file).  If we settle on MD5 as the best algorithm based
+       solely on recepient keys and SHA1 is also a possibility, use SHA1
+       unless the user intentionally chose MD5.  This is as per 2440:13.
+
+       * exec.c (make_tempdir): Fix duplicated filename problem.
+
+2002-06-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * packet.h, parse-packet.c (enum_sig_subpkt): Report back from
+       enum_sig_subpkt when a subpacket is critical and change all
+       callers in keylist.c (show_policy_url, show_notation), mainproc.c
+       (print_notation_data), and pkclist.c (do_show_revocation_reason).
+
+       * keylist.c (show_policy_url, show_notation): Display if the
+       policy or notation is critical.
+       
+2002-06-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, g10.c (main), keylist.c (dump_attribs, set_attrib_fd,
+       list_keyblock_print, list_keyblock_colon), status.h, status.c
+       (get_status_string): New --attribute-fd feature to dump the
+       contents of attribute subpackets for frontends.  If --status-fd is
+       also used, then a new status tag ATTRIBUTE is provided for each
+       subpacket.
+
+       * packet.h, getkey.c (fixup_uidnode, merge_selfsigs_main,
+       merge_selfsigs_subkey), parse-packet.c (setup_user_id): Keep track
+       of the expiration time of a user ID, and while we're at it, use
+       the expired flag from the selfsig rather than reparsing the
+       SIG_EXPIRE subpacket.
+
+       * photoid.c (generate_photo_id): When adding a new photo ID,
+       showing the photo for confirmation is not safe when noninteractive
+       since the "user" may not be able to dismiss a viewer window.
+       Noted by Timo Schulz.
+       
+2002-06-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.skel: Sample photo viewers for Win32.
+
+       * misc.c (pct_expando): Use the seckey for %k/%K if the pubkey is
+       not available.
+
+       * photoid.h, photoid.c (show_photos): Include the seckey in case a
+       user tries to view a photo on a secret key, and change all callers
+       in keyedit.c (menu_showphoto), keylist.c (list_keyblock_print),
+       and photoid.c (generate_photo_id).
+
+2002-06-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * photoid.c (show_photos): Work properly when not called with a
+       public key.
+
+2002-05-31  David Shaw  <dshaw@jabberwocky.com>
+
+       * sign.c (mk_notation_and_policy): Free unneeded buffer.
+
+       * hkp.c (parse_hkp_index): Properly handle the '&' character
+       (i.e. "&amp;") in HKP responses.
+
+       * getkey.c (merge_selfsigs_main): Fix reversed expiration time
+       check with self-sigs.
+
+       * keyedit.c (sign_uids): When making a new self-sig on a v3 key,
+       make a v3 self-sig unless it is currently a v3 self-sig being
+       promoted to v4.
+
+2002-05-31  Timo Schulz  <ts@winpt.org>
+
+       * pkclist.c (do_show_revocation_reason): Don't use capital
+       letters for non-interactive output.
+       (show_revocation_reason): Now it is global.
+       * pubkey-enc.c (get_it): Show if the key has been revoked.
+       
+2002-05-30  David Shaw  <dshaw@jabberwocky.com>
+
+       * sign.c (write_signature_packets, sign_file, clearsign_file,
+       sign_symencrypt_file): Make a v4 signature if a policy URL or
+       notation is set, unless v3 sigs are forced via rfc1991 or
+       force-v3-sigs.  Also remove some doubled code and clarify an error
+       message (we don't sign in PGP2 mode - just detach-sign).
+
+       * parse-packet.c (parse_one_sig_subpkt): Add KS_FLAGS to the "any
+       size" section.
+
+2002-05-29  David Shaw  <dshaw@jabberwocky.com>
+
+       * keygen.c (keygen_set_std_prefs, add_feature_mdc): Use "mdc" and
+       "no-mdc" in the prefs string to allow switching on and off the MDC
+       feature.  This is needed to properly export a key from GnuPG for
+       use on PGP which does not support MDC - without this, MDC-capable
+       implementations will still try and generate MDCs which will break
+       PGP.
+
+       * keygen.c (keygen_get_std_prefs): Show "[mdc]" in prefs string if
+       it is enabled.
+
+       * options.h, g10.c (main), cipher.c (write_header), keygen.c
+       (keygen_set_std_prefs): For consistency, allow the user to specify
+       mdc/no-mdc in the --personal-preference-list.  If disabled, it
+       acts just like --disable-mdc.
+
+2002-05-29  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, exec.c: Add some debugging info, using the 1024 debug
+       flag.
+
+       * exec.c (win_system): New system()-like function for win32 that
+       does not return until the child process terminates.  Of course,
+       this doesn't help if the process itself exits before it is
+       finished.
+
+2002-05-29  Werner Koch  <wk@gnupg.org>
+
+       * encode.c (encode_simple): Intialize PKT when --no-literal is used.
+
+       * keyedit.c (show_key_with_all_names_colon): Renamed the record
+       for revocation keys to "rvk".
+
+2002-05-27  Werner Koch  <wk@gnupg.org>
+
+       * keyedit.c (show_key_with_all_names_colon): New.
+       (show_key_with_all_names): Divert to new function when required.
+       Sanitize printing of revoker name.
+
+2002-05-27  David Shaw  <dshaw@jabberwocky.com>
+
+       * build-packet.c (build_sig_subpkt): Handle setting sig flags for
+       certain subpacket types (notation, policy url, exportable,
+       revocable).  keyedit.c (sign_mk_attrib): Flags no longer need to
+       be set here.
+
+       * packet.h, parse-packet.c (parse_one_sig_subpkt), build-packet.c
+       (build_sig_subpkt): Call parse_one_sig_subpkt to sanity check
+       buffer lengths before building a sig subpacket.
+
+2002-05-26  David Shaw  <dshaw@jabberwocky.com>
+
+       * sign.c (mk_notation_and_policy): Include secret key to enable %s
+       expandos, and pass notations through pct_expando as well.
+
+       * main.h, misc.c (pct_expando): Add %s and %S expandos for
+       signer's keyid.
+
+2002-05-25  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (strusage, build_list): Add compress algorithms to
+       --version list.  Show algorithm numbers when --verbose --version
+       is done.
+
+2002-05-22  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, main.h, keygen.c (keygen_set_set_prefs,
+       keygen_get_std_prefs, keygen_upd_std_prefs), keyedit.c
+       (keyedit_menu), g10.c (main), pkclist.c (select_algo_from_prefs):
+       Add --personal-preference-list which allows the user to factor in
+       their own preferred algorithms when the preference lists are
+       consulted.  Obviously, this does not let the user violate a
+       recepient's preferences (and the RFC) - this only influences the
+       ranking of the agreed-on (and available) algorithms from the
+       recepients.  Suggested by David Hollenberg.
+
+       * options.h, keygen.c (keygen_set_std_prefs), g10.c (main): Rename
+       --preference-list to --default-preference-list (as that is what it
+       really is), and make it a true default in that if the user selects
+       "default" they get this list and not the compiled-in list.
+
+2002-05-22  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Add missing LF in a info printout and made it
+       translatable.  Noted by Michael Tokarev.
+
+2002-05-21  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Removed the undef of USE_SHM_COPROCESSING which
+       was erroneously introduced on 2002-01-09.
+
+       * signal.c (got_fatal_signal): Don't write the Nul to stderr.
+       Reported by David Hollenberg.
+
+2002-05-18  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, g10.c (main), revoke.c (gen_desig_revoke): Generate a
+       designated revocation via --desig-revoke
+
+       * keyedit.c (keyedit_menu, menu_addrevoker): New "addrevoker"
+       command to add a designated revoker to a key.
+
+2002-05-17  David Shaw  <dshaw@jabberwocky.com>
+
+       * gpgv.c: Add stub for get_ownertrust().
+
+       * g10.c (main): --allow-freeform-uid should be implied by
+       OpenPGP.  Add --no-allow-freeform-uid.
+
+       * keyedit.c (sign_uids): Issue a warning when signing a
+       non-selfsigned uid.
+
+       * getkey.c (merge_selfsigs_main): If a key has no selfsigs, and
+       allow-non-selfsigned-uid is not set, still try and make the key
+       valid by checking all uids for a signature from an ultimately
+       trusted key.
+
+2002-05-16  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, keygen.c (keygen_add_revkey): Add revocation key
+       subpackets to a signature (callable by
+       make_keysig_packet). (write_direct_sig): Write a 1F direct key
+       signature. (parse_revocation_key): Parse a string in
+       algo:fpr:sensitive format into a revocation
+       key. (get_parameter_revkey, do_generate_keypair): Call above
+       functions when prompted from a batch key generation file.
+
+       * build-packet.c (build_sig_subpkt): Allow multiple revocation key
+       subpackets in a single sig.
+
+       * keydb.h, getkey.c (get_seckey_byfprint): Same as
+       get_pubkey_byfprint, except for secret keys.  We only know the
+       fingerprint of a revocation key, so this is needed to retrieve the
+       secret key needed to issue a revokation.
+
+       * packet.h, parse-packet.c (parse_signature, parse_revkeys): Split
+       revkey parsing off into a new function that can be used to reparse
+       after manipulating the revkey list.
+
+       * sign.c (make_keysig_packet): Ability to make 1F direct key
+       signatures.
+
+2002-05-15  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.skel: keyserver.pgp.com is gone, so list pgp.surfnet.nl
+       as a sample LDAP server instead.
+
+       * getkey.c (merge_selfsigs_main): Properly handle multiple
+       revocation keys in a single packet.  Properly handle revocation
+       keys that are in out-of-order packets.  Remove duplicates in
+       revocation key list.
+
+2002-05-14  Timo Schulz   <ts@winpt.org>
+
+       * exec.c (make_tempdir) [MINGW32]: Added missing '\'.
+       
+2002-05-14  Stefan Bellon  <sbellon@sbellon.de>
+
+       * exec.c (make_tempdir): Make use of EXTSEP_S instead of hardcoded
+       dot as extension separator.
+
+2002-05-13  David Shaw  <dshaw@jabberwocky.com>
+
+       * photoid.c (show_photos): Use the long keyid as the filename for
+       the photo.  Use the short keyid as the filename on 8.3 systems.
+
+       * exec.h, exec.c (make_tempdir, exec_write, exec_finish): Allow
+       caller to specify filename.  This should make things easier on
+       windows and macs where the file extension is required, but a whole
+       filename is even better.
+
+       * keyedit.c (show_key_with_all_names, show_prefs): Show proper
+       prefs for a v4 key uid with no selfsig at all.
+
+       * misc.c (check_permissions): Don't check permissions on
+       non-normal files (pipes, character devices, etc.)
+
+2002-05-11  Werner Koch  <wk@gnupg.org>
+
+       * mainproc.c (proc_symkey_enc): Avoid segv in case the parser
+       encountered an invalid packet.
+
+       * keyserver.c (keyserver_export): Get confirmation before sending
+       all keys.
+
+2002-05-10  Stefan Bellon  <sbellon@sbellon.de>
+
+       * g10.c, hkp.c, keyedit.c, keyserver.c: Replaced all occurrances
+       of strcasecmp with ascii_strcasecmp and all occurrances of
+       strncasecmp with ascii_memcasecmp.
+
+2002-05-10  David Shaw  <dshaw@jabberwocky.com>
+
+       * packet.h, getkey.c (fixup_uidnode), keyedit.c (show_prefs): Show
+       assumed prefs for hash and compression as well as the cipher pref.
+       Show assumed prefs if there are no prefs at all on a v4
+       self-signed key.
+
+       * options.h, g10.c (main), sign.c (make_keysig_packet): New
+       --cert-digest-algo function to override the default key signing
+       hash algorithm.
+
+2002-05-09  David Shaw  <dshaw@jabberwocky.com>
+
+       * getkey.c (merge_selfsigs_main): Make sure the revocation key
+       list starts clean as this function may be called more than once
+       (e.g. from functions in --edit).
+
+       * g10.c, encode.c (encode_crypt), sign.c (sign_file,
+       sign_symencrypt_file): Make --compress-algo work like the
+       documentation says.  It should be like --cipher-algo and
+       --digest-algo in that it can override the preferences calculation
+       and impose the setting the user wants.  No --compress-algo setting
+       allows the usual preferences calculation to take place.
+
+       * main.h, compress.c (compress_filter): use new
+       DEFAULT_COMPRESS_ALGO define, and add a sanity check for compress
+       algo value.
+
+2002-05-08  David Shaw  <dshaw@jabberwocky.com>
+
+       * pkclist.c (select_algo_from_prefs): There is an assumed
+       compression preference for uncompressed data.
+
+2002-05-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main), getkey.c (finish_lookup), pkclist.c
+       (algo_available): --pgp7, identical to --pgp6 except that it
+       permits a few algorithms that PGP 7 added: AES128, AES192, AES256,
+       and TWOFISH.  Any more of these --pgpX flags, and it'll be time to
+       start looking at a generic --emulate-pgp X option.
+
+       * export.c (do_export_stream): Warn the user when exporting a
+       secret key if it or any of its secret subkeys are protected with
+       SHA1 while simple_sk_checksum is set.
+
+       * parse-packet.c (parse_key): Show when the SHA1 protection is
+       used in --list-packets.
+
+       * options.h, build-packet.c (do_comment), g10.c (main): Rename
+       --no-comment as --sk-comments/--no-sk-comments (--no-comment still
+       works) and make the default be --no-sk-comments.
+
+2002-05-07  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (get_parameter_algo): Never allow generation of the
+       deprecated RSA-E or RSA-S flavors of PGP RSA.
+       (ask_algo): Allow generation of RSA sign and encrypt in expert
+       mode.  Don't allow ElGamal S+E unless in expert mode.
+       * helptext.c: Added entry keygen.algo.rsa_se.
+
+2002-05-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (sign_uids): If --expert is set, allow re-signing a
+       uid to promote a v3 self-sig to a v4 one.  This essentially
+       deletes the old v3 self-sig and replaces it with a v4 one.
+
+       * packet.h, parse-packet.c (parse_key), getkey.c
+       (merge_keys_and_selfsig, merge_selfsigs_main): a v3 key with a v4
+       self-sig must never let the v4 self-sig express a key expiration
+       time that extends beyond the original v3 expiration time.
+
+2002-05-06  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (sign_uids): When making a self-signature via "sign"
+       don't ask about sig level or expiration, and include the usual
+       preferences and such for v4 self-sigs.  (menu_set_preferences):
+       Convert uids from UTF8 to native before printing.
+
+       * keyedit.c (sign_uids): Convert uids from UTF8 to native before
+       printing.  (menu_set_primary_uid): Show error if the user tries to
+       make a uid with a v3 self-sig primary.
+
+2002-05-05  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (import_one): When merging with a key we already have,
+       don't let a key conflict (same keyid but different key) stop the
+       import: just skip the bad key and continue.
+
+       * exec.c (make_tempdir): Under Win32, don't try environment
+       variables for temp directories - GetTempDir tries environment
+       variables internally, and it's better not to second-guess it in
+       case MS adds some sort of temp dir handling to Windows at some
+       point.
+
+2002-05-05  Timo Schulz  <ts@winpt.org>
+
+       * mainproc.c (proc_symkey_enc): Don't ask for a passphrase
+        in the list only mode.
+       
+2002-05-05  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_refresh): --refresh-keys implies
+       --merge-only so as not to import keys with keyids that match the
+       ones being refreshed.  Noted by Florian Weimer.
+
+2002-05-04  Stefan Bellon  <sbellon@sbellon.de>
+
+       * free-packet.c (copy_public_key): Don't call m_alloc(0), therefore
+       added consistency check for revkey and numrefkeys.
+
+       * getkey.c (check_revocation_keys): Added consistency check for
+       revkey and numrefkeys.
+
+       * keyedit.c (show_key_with_all_names): Likewise.
+
+2002-05-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * photoid.c: Provide default image viewer for Win32.
+
+       * misc.c (pct_expando): %t means extension, not name ("jpg", not
+       "jpeg").
+
+       * keyserver.c (keyserver_spawn), photoid.c (show_photos), exec.h,
+       exec.c: Allow the caller to determine the temp file extension when
+       starting an exec_write and change all callers.
+
+       * keyedit.c (sign_uids): Nonrevocable key signatures cause an
+       automatic promotion to v4.
+
+       * exec.c: Provide stubs for exec_ functions when NO_EXEC is
+       defined.
+
+2002-05-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * photoid.h, photoid.c (parse_image_header, image_type_to_string):
+       Useful functions to return data about an image.
+
+       * packet.h, parse-packet.c (make_attribute_uidname,
+       parse_attribute_subpkts, parse_attribute), photoid.h, photoid.c
+       (show_photos): Handle multiple images in a single attribute
+       packet.
+
+       * main.h, misc.c (pct_expando), sign.c (mk_notation_and_policy),
+       photoid.c (show_photos): Simpler expando code that does not
+       require using compile-time string sizes.  Call
+       image_type_to_string to get image strings (i.e. "jpg",
+       "image/jpeg").  Change all callers.
+
+       * keyedit.c (menu_showphoto), keylist.c (list_keyblock_print):
+       Allow viewing multiple images within a single attribute packet.
+
+       * gpgv.c: Various stubs for link happiness.
+
+2002-05-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * build-packet.c (build_sig_subpkt), keyedit.c (sign_uids),
+       options.h, sign.c (mk_notation_and_policy), g10.c (main,
+       add_notation_data, add_policy_url (new), check_policy_url
+       (removed)): Allow multiple policy URLs on a given signature.
+       Split "--notation-data" into "--cert-notation" and
+       "--sig-notation" so the user can set different policies for key
+       and data signing.  For backwards compatibility, "--notation-data"
+       sets both, as before.
+
+2002-05-02  Werner Koch  <wk@gnupg.org>
+
+       * options.skel: Removed the comment on trusted-keys because this
+       option is now deprecated.
+
+2002-05-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (menu_adduid): 2440bis04 says that multiple attribute
+       packets on a given key are legal.
+
+       * keyserver.c (keyserver_refresh): the fake v3 keyid hack applies
+       to "mailto" URLs as well since they are also served by pksd.
+
+2002-04-29  Werner Koch  <wk@gnupg.org>
+
+       Added a copyright year for files changed this year.
+
+2002-04-25  Werner Koch  <wk@gnupg.org>
+
+       * g10.c, options.h: New options --display, --ttyname, --ttytype,
+       --lc-ctype, --lc-messages to be used with future versions of the
+       gpg-agent. 
+       * passphrase.c (agent_send_option,agent_send_all_options): New.
+       (agent_open): Send options to the agent.
+
+       * trustdb.c (update_ownertrust, clear_ownertrust): Do an explicit
+       do_sync because revalidation_mark does it only if when the
+       timestamp actually changes.
+
+2002-04-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, keygen.c (do_generate_keypair), keylist.c
+       (print_signature_stats, list_all, list_one, list_keyblock,
+       list_keyblock_print, list_keyblock_colon): After generating a new
+       key, show the key information (name, keyid, fingerprint, etc.)
+       Also do not print uncheckable signatures (missing key..) in
+       --check-sigs.  Print statistics (N missing keys, etc.) after
+       --check-sigs.
+
+       * keyedit.c (sign_uids): When signing a key with an expiration
+       date on it, the "Do you want your signature to expire at the same
+       time?" question should default to YES.
+
+2002-04-22  David Shaw  <dshaw@jabberwocky.com>
+
+       * parse-packet.c (parse_plaintext), packet.h, plaintext.c
+       (handle_plaintext): Fix bug in handling literal packets with
+       zero-length data (no data was being confused with partial body
+       length).
+
+       * misc.c (pct_expando), options.skel: %t means extension ("jpg").
+       %T means MIME type ("image/jpeg").
+
+       * import.c (import_one): Only trigger trust update if the keyring
+       is actually changed.
+
+       * export.c (do_export_stream): Missing a m_free.
+
+2002-04-22  Stefan Bellon  <sbellon@sbellon.de>
+
+       * keyid.c (expirestr_from_sk, expirestr_from_sig): Added _() to
+       string constant.
+
+       * exec.c (make_tempdir) [__riscos__]: Better placement of
+       temporary file.
+
+2002-04-20  David Shaw  <dshaw@jabberwocky.com>
+
+       * keygen.c (generate_subkeypair): 2440bis04 adds that creating
+       subkeys on v3 keys is a MUST NOT.
+
+       * getkey.c (finish_lookup): The --pgp6 "use the primary key"
+       behavior should only apply while data signing and not encryption.
+       Noted by Roger Sondermann.
+
+2002-04-19  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (keygen_set_std_prefs): Put back 3DES because the RFC
+       says it is good form to do so.
+
+2002-04-19  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (menu_deluid): Only cause a trust update if we delete
+       a non-revoked user id.
+
+       * hkp.c (hkp_ask_import), keyserver.c (parse_keyserver_options,
+       keyserver_spawn), options.h: Remove fast-import keyserver option
+       (no longer meaningful).
+
+       * g10.c (main), keyedit.c (sign_uids), options.h: Change
+       --default-check-level to --default-cert-check-level as it makes
+       clear what it operates on.
+
+       * g10.c (main): --pgp6 also implies --no-ask-sig-expire.
+
+       * delkey.c (do_delete_key): Comment.
+
+       * keyedit.c (sign_uids, keyedit_menu, menu_deluid, menu_delsig,
+       menu_expire, menu_revsig, menu_revkey): Only force a trustdb check
+       if we did something that changes it.
+
+       * g10.c: add "--auto-check-trustdb" to override a
+       "--no-auto-check-trustdb"
+
+2002-04-19  Werner Koch  <wk@gnupg.org>
+
+       * tdbio.c (tdbio_write_nextcheck): Return a status whether the
+       stamp was actually changed.
+       * trustdb.c (revalidation_mark): Sync the changes.  Removed the
+       sync operation done by its callers.
+       (get_validity): Add logic for maintaining a pending_check flag.
+       (clear_ownertrust): New.
+       
+       * keyedit.c (sign_uids): Don't call revalidation_mark depending on
+       primary_pk.
+       (keyedit_menu): Call revalidation_mark after "trust".
+       (show_key_with_all_names): Print a warning on the wrong listed key
+       validity.
+
+       * delkey.c (do_delete_key): Clear the owenertrust information when
+       deleting a public key.
+       
+2002-04-18  Werner Koch  <wk@gnupg.org>
+
+       * seskey.c (encode_md_value): Print an error message if a wrong
+       digest algorithm is used with DSA.  Changed all callers to cope
+       with a NULL return.  Problem noted by Imad R. Faiad.
+
+2002-04-18  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.c (mark_usable_uid_certs): Properly handle nonrevocable
+       signatures that can expire.  In short, the only thing that can
+       override an unexpired nonrevocable signature is another unexpired
+       nonrevocable signature.
+
+       * getkey.c (finish_lookup): Always use primary signing key for
+       signatures when --pgp6 is on since pgp6 and 7 do not understand
+       signatures made by signing subkeys.
+
+2002-04-18  Werner Koch  <wk@gnupg.org>
+
+       * trustdb.c (validate_keys): Never schedule a nextcheck into the
+       past.
+       (validate_key_list): New arg curtime use it to set next_expire.
+       (validate_one_keyblock): Take the current time from the caller.
+       (clear_validity, reset_unconnected_keys): New.
+       (validate_keys): Reset all unconnected keys.
+
+       * getkey.c (premerge_public_with_secret): Fixed 0x12345678! syntax
+       for use with secret keys.
+       (lookup): Advance the searchmode after a search FIRST.
+
+       * seckey-cert.c (do_check): Always calculate the old checksum for
+       use after unprotection.
+
+       * g10.c, options.skel: New option --no-escape-from.  Made
+       --escape-from and --force-v3-sigs the default and removed them
+       from the options skeleton.
+
+2002-04-16  Werner Koch  <wk@gnupg.org>
+
+       * parse-packet.c (parse_key): Support a SHA1 checksum as per
+       draft-rfc2440-bis04.
+       * packet.h (PKT_secret_key): Add field sha1chk.
+       * seckey-cert.c (do_check): Check the SHA1 checksum
+       (protect_secret_key): And create it.
+       * build-packet.c (do_secret_key): Mark it as sha-1 protected.
+       * g10.c, options.h: New option --simple-sk-checksum.
+
+2002-04-13  David Shaw  <dshaw@jabberwocky.com>
+
+       * parse-packet.c (parse_signature): Minor fix - signatures should
+       expire at their expiration time and not one second later.
+
+       * keygen.c (proc_parameter_file): Allow specifying preferences
+       string (i.e. "s5 s2 z1 z2", etc) in a batchmode key generation
+       file.
+
+       * keyedit.c (keyedit_menu): Print standard error message when
+       signing a revoked key (no new translation).
+
+       * getkey.c (merge_selfsigs): Get the default set of key prefs from
+       the real (not attribute) primary uid.
+
+2002-04-12  David Shaw  <dshaw@jabberwocky.com>
+
+       * pkclist.c (build_pk_list): Fix bug that allowed a key to be
+       selected twice in batch mode if one instance was the default
+       recipient and the other was an encrypt-to.  Noted by Stefan
+       Bellon.
+
+       * parse-packet.c (dump_sig_subpkt): Show data in trust and regexp
+       sig subpackets.
+
+       * keyedit.c (keyedit_menu): Use new function real_uids_left to
+       prevent deleting the last real (i.e. non-attribute) uid.  Again,
+       according to the attribute draft. (menu_showphoto): Make another
+       string translatable.
+
+2002-04-11  David Shaw  <dshaw@jabberwocky.com>
+
+       * build-packet.c (build_sig_subpkt): Delete subpackets from both
+       hashed and unhashed area on update.  (find_subpkt): No longer
+       needed.
+
+       * keyedit.c (sign_uids): With --pgp2 on, refuse to sign a v3 key
+       with a v4 signature.  As usual, --expert overrides.  Try to tweak
+       some strings to a closer match so they can all be translated in
+       one place.  Use different helptext keys to allow different help
+       text for different questions.
+
+       * keygen.c (keygen_upd_std_prefs): Remove preferences from both
+       hashed and unhashed areas if they are not going to be used.
+
+2002-04-10  David Shaw  <dshaw@jabberwocky.com>
+
+       * misc.c (pct_expando), options.skel: Use %t to indicate type of a
+       photo ID (in this version, it's always "jpeg").  Also tweak string
+       expansion loop to minimize reallocs.
+
+       * mainproc.c (do_check_sig): Variable type fix.
+
+       * keyedit.c (menu_set_primary_uid): Differentiate between true
+       user IDs and attribute user IDs when making one of them primary.
+       That is, if we are making a user ID primary, we alter user IDs.
+       If we are making an attribute packet primary, we alter attribute
+       packets.  This matches the language in the latest attribute packet
+       draft.
+
+       * keyedit.c (sign_uids): No need for the empty string hack.
+
+       * getkey.c (fixup_uidnode): Only accept preferences from the
+       hashed segment of the self-sig.
+
+2002-04-10  Werner Koch  <wk@gnupg.org>
+
+       * tdbio.c (migrate_from_v2): Fixed the offset to read the old
+       ownertrust value and only add entries to the table if we really
+       have a value.
+
+2002-04-08  David Shaw  <dshaw@jabberwocky.com>
+
+       * status.h, status.c (get_status_string): Add KEYEXPIRED, EXPSIG,
+       and EXPKEYSIG.  Add "deprecated-use-keyexpired-instead" to
+       SIGEXPIRED.
+
+       * sig-check.c (do_check): Start transition from SIGEXPIRED to
+       KEYEXPIRED, since the actual event is signature verification by an
+       expired key and not an expired signature. (do_signature_check,
+       packet.h): Rename as signature_check2, make public, and change all
+       callers.
+
+       * mainproc.c (check_sig_and_print, do_check_sig): Use status
+       EXPSIG for an expired, but good, signature.  Add the expiration
+       time (or 0) to the VALIDSIG status line.  Use status KEYEXPSIG for
+       a good signature from an expired key.
+
+       * g10.c (main): remove checks for no arguments now that argparse
+       does it.
+
+2002-04-06  Werner Koch  <wk@gnupg.org>
+
+       * keyring.c (keyring_get_keyblock): Disable the keylist mode here.
+
+       * encode.c (encode_simple, encode_crypt): Only test on compressed
+       files if a compress level was not explicity set.
+
+       * keygen.c (keygen_set_std_prefs): Removed Blowfish and Twofish
+       from the list of default preferences, swapped the preferences of
+       RMD160 and SHA1.  Don't include a preference to 3DES unless the
+       IDEA kludge gets used.
+
+       * free-packet.c (free_packet): call free_encrypted also for
+       PKT_ENCRYPTED_MDC.
+
+       * compress.c (release_context): New.
+       (handle_compressed): Allocate the context and setup a closure to
+       release the context.  This is required because there is no
+       guarabntee that the filter gets popped from the chain at the end
+       of the function.  Problem noted by Timo and probably also the
+       cause for a couple of other reports.
+       (compress_filter): Use the release function if set.
+
+       * tdbio.c [__CYGWIN32__]: Don't rename ftruncate.  Noted by
+       Disastry.
+
+       * parse-packet.c (parse_signature): Put parens around a bit test.
+
+       * exec.c (make_tempdir): Double backslash for TMP directory
+       creation under Windows.  Better strlen the DIRSEP_S constants for
+       allocation measurements.
+
+       * decrypt.c (decrypt_messages): Release the passphrase aquired
+       by get_last_passphrase.
+
+2002-04-02  Werner Koch  <wk@gnupg.org>
+
+       * Makefile.am (EXTRA_DIST): Removed OPTIONS an pubring.asc - they
+       are no longer of any use. 
+
+2002-04-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (parse_keyserver_options): fix auto-key-retrieve to
+       actually work as a keyserver-option (noted by Roger Sondermann).
+
+       * keylist.c (reorder_keyblock): do not reorder the primary
+       attribute packet - the first user ID must be a genuine one.
+
+2002-03-31  David Shaw  <dshaw@jabberwocky.com>
+
+       * keylist.c (list_keyblock_colon): Fix ownertrust display with
+       --with-colons.
+
+       * keygen.c (generate_user_id), photoid.c (generate_photo_id):
+       Properly initialize the user ID refcount.  A few more "y/n" ->
+       "y/N" in photoid.c.
+
+       * keyedit.c (ask_revoke_sig): Warn the user if they are about to
+       revoke an expired sig (not a problem, but they should know).  Also
+       tweak a few prompts to change "y/n" to "y/N", which is how most
+       other prompts are written.
+
+       * keyserver.c (keyserver_search_prompt): Control-d escapes the
+       keyserver search prompt.
+
+       * pkclist.c (show_revocation_reason & callers): If a subkey is
+       considered revoked solely because the parent key is revoked, print
+       the revocation reason from the parent key.
+
+       * trustdb.c (get_validity): Allow revocation/expiration to apply
+       to a uid/key with no entry in the trustdb.
+
+2002-03-29  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (printunquoted): unquote backslashes from keyserver
+       searches
+
+       * hkp.c (write_quoted): quote backslashes from keyserver searches
+
+2002-03-26  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (ask_keysize): Removed the warning for key sizes > 1536.
+
+2002-03-25  Werner Koch  <wk@gnupg.org>
+
+       * keyedit.c (sign_uids): Use 2 strings and not a %s so that
+       translations can be done the right way.
+       * helptext.c: Fixed small typo.
+
+2002-03-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (append_uid, merge_sigs): it is okay to import
+       completely non-signed uids now (with --allow-non-selfsigned-uid).
+
+       * getkey.c (get_primary_uid, merge_selfsigs_main): do not choose
+       an attribute packet (i.e. photo) as primary uid.  This prevents
+       oddities like "Good signature from [image of size 2671]".  This is
+       still not perfect (one can still select an attribute packet as
+       primary in --edit), but is closer to the way the draft is going.
+
+       * g10.c (build_list): algorithms should include 110.
+
+       * g10.c (main): --pgp2 implies --no-ask-sig-expire and
+       --no-ask-cert-expire as those would cause a v4 sig/cert.
+
+       * armor.c (is_armor_header): be more lenient in what constitutes a
+       valid armor header (i.e. -----BEGIN blah blah-----) as some
+       Windows programs seem to add spaces at the end.  --openpgp makes
+       it strict again.
+
+2002-03-18  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_search_prompt): Properly handle a "no
+       keys found" case from the internal HKP code (external HKP is ok).
+       Also, make a COUNT -1 (i.e. streamed) keyserver response a little
+       more efficient.
+
+       * g10.c (main): Add --no-allow-non-selfsigned-uid
+
+2002-03-17  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): --openpgp implies --allow-non-selfsigned-uid.
+
+       * getkey.c (merge_selfsigs_main): If none of the uids are primary
+       (because none are valid) then pick the first to be primary (but
+       still invalid).  This is for cosmetics in case some display needs
+       to print a user ID from a non-selfsigned key.  Also use
+       --allow-non-selfsigned-uid to make such a key valid and not
+       --always-trust.  The key is *not* automatically trusted via
+       --allow-non-selfsigned-uid.
+
+       * mainproc.c (check_sig_and_print): Make sure non-selfsigned uids
+       print [uncertain] on verification even though one is primary now.
+
+       * getkey.c (merge_selfsigs): If the main key is not valid, then
+       neither are the subkeys.
+
+       * import.c (import_one): Allow --allow-non-selfsigned-uid to work
+       on completely unsigned keys.  Print the uids in UTF8.  Remove
+       mark_non_selfsigned_uids_valid().
+
+       * keyedit.c (show_key_with_all_names): Show revocation key as
+       UTF8.
+
+       * sign.c (clearsign_file): Allow --not-dash-escaped to work with
+       v3 keys.
+
+2002-03-14  Werner Koch  <wk@gnupg.org>
+
+       * main.h: Changed the default algorithms to CAST5 and SHA1.
+
+2002-03-13  David Shaw  <dshaw@jabberwocky.com>
+
+       * import.c (chk_self_sigs): Show which user ID a bad self-sig
+       (invald sig or unsupported public key algorithm) resides on.
+
+       * import.c (chk_self_sigs): any valid self-sig should mark a user
+       ID or subkey as valid - otherwise, an attacker could DoS the user
+       by inventing a bogus invalid self-signature.
+
+2002-03-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): make a few more strings translatable.
+
+       * options.h, options.skel, g10.c (main), gpgv.c, mainproc.c
+       (check_sig_and_print), keyserver.c (parse_keyserver_options):
+       --auto-key-retrieve should really be a keyserver-option variable.
+
+       * import.c (revocation_present): new function to print a warning
+       if a key is imported that has been revoked by designated revoker,
+       but the designated revoker is not present to verify the
+       revocation.  If keyserver-options auto-key-retrieve is set, try
+       and fetch the designated revoker from the keyserver.
+
+       * import.c (import_one): call revocation_present after importing a
+       new key.  Note that this applies to --import, --recv-keys, and
+       --search-keys.
+       
+       * keyserver-internal.h, keyserver.c (keyserver_import_fprint):
+       import via fingerprint (for revocation keys).
+
+       * keyserver.c (keyserver_import_keyid): much simpler
+       implementation now that we're using KEYDB_SEARCH_DESC internally.
+
+2002-03-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * revoke.c (gen_revoke): do not prompt for revocation reason for
+       v3 revocations (unless force-v4-certs is on) since they wouldn't
+       be used anyway.
+
+       * keyedit.c (menu_revsig): show the status of the sigs
+       (exportable? revocable?) to the user before prompting for which
+       sig to revoke.  Also, make sure that local signatures get local
+       revocations.
+
+       * keyedit.c (ask_revoke_sig): remind the user which sigs are
+       local.
+
+       * g10.c (main): Add "exec-path" variable to override PATH for
+       execing programs.
+
+       * export.c (do_export_stream): properly check return code from
+       classify_user_id to catch unclassifiable keys.
+
+2002-03-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * parse-packet.c (parse_signature): variable type tweak for RISC
+       OS (from Stefan)
+
+2002-02-28  David Shaw  <dshaw@jabberwocky.com>
+
+       * getkey.c (check_revocation_keys): New function to check a
+       revocation against a list of potential revocation keys.  Note the
+       loop-breaking code here.  This is to prevent blowing up if A is
+       B's revocation key, while B is also A's.  Note also that this is
+       written so that a revoked revoker can still issue revocations:
+       i.e. If A revokes B, but A is revoked, B is still revoked.  I'm
+       not completely convinced this is the proper behavior, but it
+       matches how PGP does it.  It does at least have the advantage of
+       much simpler code - my first version of this had lots of loop
+       maintaining code so you could chain revokers many levels deep and
+       if D was revoked, C was not, which meant that B was, and so on.
+       It was sort of scary, actually.
+
+       * getkey.c (merge_selfsigs_main): Add any revocation keys onto the
+       pk.  This is particularly interesting since we normally only get
+       data from the most recent 1F signature, but you need multiple 1F
+       sigs to properly handle revocation keys (PGP does it this way, and
+       a revocation key could be marked "sensitive" and hence in a
+       different signature).  Also, if a pk has a revocation key set,
+       check for revocation sigs that were not made by us - if made by a
+       valid revocation key, mark the pk revoked.
+
+       * packet.h, getkey.c (cache_public_key): do not cache key if
+       "dont_cache" is set.  This allows the revocation key code to look
+       up a key and return information that may be inaccurate to prevent
+       loops without caching the fake data.
+
+       * packet.h, sig-check.c (do_signature_check): Record if a
+       signature was made by a revoked pk.
+
+       * packet.h, parse-packet.c (parse_one_sig_subpkt,
+       can_handle_critical, parse_signature): Get revocation key
+       information out of direct sigs.
+       
+       * keylist.c (list_keyblock_print): don't assume that the presence
+       of a 0x20 signature means the key is revoked.  With revocation
+       keys, this may not be true if the revocation key is not around to
+       verify it or if verification failed.  Also, 0x1F should get listed
+       as "sig", and not "unexpected signature class".
+
+       * keyedit.c (show_key_with_all_names): Add a flag for printing
+       revoker information and change all callers.
+
+       * import.c (merge_blocks): merge in any new direct key (0x1F)
+       sigs.
+
+       * import.c (import_revoke_cert): don't keep processing after a
+       revocation is rejected.
+       
+       * import.c (delete_inv_parts): Allow importing a revocation
+       signature even if it was not issued by the key.  This allows a
+       revocation key to issue it.  Of course, the sig still needs to be
+       checked before we trust it.
+
+       * free-packet.c (copy_public_key): Include a new copy of the
+       revocation keys when duping a pk.
+
+       * free-packet.c (free_seckey_enc, release_public_key_parts): Free
+       any revocation keys that are attached to a sig or pk.
+
+       * export.c (do_export_stream): Do not export signatures with
+       "sensitive" revocation keys in them.
+
+2002-02-27  David Shaw  <dshaw@jabberwocky.com>
+
+       * export.c (do_export_stream): Do not include v3 keys in a
+       --export-secret-subkeys export.
+
+       * getkey.c (merge_selfsigs_main): If a key isn't valid (say,
+       because of no self-signature), allow --always-trust to force it
+       valid so it can be trusted.
+
+2002-02-25  David Shaw  <dshaw@jabberwocky.com>
+
+       * hkp.c (hkp_ask_import), hkp.h, keyserver.c (all): treat key
+       lists internally as fingerprints when possible.  All this is via
+       KEYDB_SEARCH_DESC - no point in reinventing the wheel. This allows
+       the helper program to search the keyserver by fingerprint if
+       desired (and the keyserver supports it).  Note that automatic
+       fingerprint promotion during refresh only applies to v4 keys as a
+       v4 fingerprint can be easily changed into a long or short key id,
+       and a v3 cannot.
+
+       * pubkey-enc.c, getkey.c, misc.c, main.h: Take two copies of
+       hextobyte() from pubkey-enc.c and getkey.c and make them into one
+       copy in misc.c.
+
+2002-02-22  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_search_prompt): Detect a "no keys found"
+       case even if the helper program does not explicitly say how many
+       keys were found.
+
+       * hkp.c (parse_hkp_index): Bug fix - don't report non-revoked keys
+       as revoked in HKP key searches.
+
+2002-02-19  Werner Koch  <wk@gnupg.org>
+
+       * parse-packet.c (parse_trust): Made parsing more robust.
+
+2002-02-19  David Shaw  <dshaw@jabberwocky.com>
+
+       * hkp.c (parse_hkp_index): Catch corruption in HKP index lines
+       (can be caused by broken or malicious keyservers).
+
+       * keyserver.c (keyserver_work): Add KEYSERVER_NOT_SUPPORTED for
+       unsupported actions (say, a keyserver that has no way to search,
+       or a readonly keyserver that has no way to add).  Also add a
+       USE_EXTERNAL_HKP define to disable the internal HKP keyserver
+       code.
+
+2002-02-14  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New option --no-use-agent. 
+
+       * pkclist.c (check_signatures_trust): Always print the warning for
+       unknown and undefined trust.  Removed the did_add cruft.  Reported
+       by Janusz A. Urbanowicz.
+
+2002-02-11  David Shaw  <dshaw@jabberwocky.com>
+
+       * hkp.c (parse_hkp_index): Bug fix - properly handle user IDs with
+       colons (":") in them while HKP searching.
+
+2002-02-09  David Shaw  <dshaw@jabberwocky.com>
+
+       * misc.c (pct_expando): More comments.
+
+       * keydb.h, sign.c (mk_notation_and_policy): Clarify what is a sig
+       and what is a cert.  A sig has sigclass 0x00, 0x01, 0x02, or 0x40,
+       and everything else is a cert.
+
+       * g10.c (main), keyedit.c (keyedit_menu): Add a "nrlsign" for
+       nonrevocable and local key signatures.
+
+       * g10.c (main): Add a --no-force-mdc to undo --force-mdc.
+
+       * options.h, g10.c (main), cipher.c (write_header): Add a knob to
+       --disable-mdc/--no-disable-mdc.  Off by default, of course, but is
+       used in --pgp2 and --pgp6 modes.
+       
+       * pkclist.c (build_pk_list): Allow specifying multiple users in
+       the "Enter the user ID" loop.  Enter a blank line to stop.  Show
+       each key+id as it is added.
+
+       * keylist.c (show_policy_url), mainproc.c (print_notation_data):
+       It is not illegal (though possibly silly) to have multiple policy
+       URLs in a given signature, so print all that are present.
+       
+       * hkp.c (hkp_search): More efficient implementation of URL-ifying
+       code.
+
+2002-02-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * main.h, misc.c (pct_expando): New function to generalize
+       %-expando processing in any arbitrary string.
+
+       * photoid.c (show_photo): Call the new pct_expando function rather
+       than expand strings internally.
+       
+       * sign.c (mk_notation_and_policy): Show policy URLs and notations
+       when making a signature if show-policy/show-notation is on.
+       %-expand policy URLs during generation.  This lets the user have
+       policy URLs of the form "http://notary.jabberwocky.com/keysign/%K"
+       which will generate a per-signature policy URL.
+
+       * main.h, keylist.c (show_policy_url, show_notation): Add amount
+       to indent so the same function can be used in key listings as well
+       as during sig generation.  Change all callers.
+
+2002-02-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c, options.h (parse_keyserver_options, keyidlist):
+       Workaround for the pksd and OKS keyserver bug that calculates v4
+       RSA keyids as if they were v3.  The workaround/hack is to fetch
+       both the v4 (e.g. 99242560) and v3 (e.g. 68FDDBC7) keyids.  This
+       only happens for key refresh while using the HKP scheme and the
+       refresh-add-fake-v3-keyids keyserver option must be set.  This
+       should stay off by default.
+
+2002-02-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_spawn): Bug fix - do not append keys to
+       each other when --sending more than one.
+
+2002-02-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c (main), keyedit.c (sign_uids), sign.c
+       (mk_notation_and_policy): Split "--set-policy-url" into
+       "--cert-policy-url" and "--sig-policy-url" so the user can set
+       different policies for key and data signing.  For backwards
+       compatibility, "--set-policy-url" sets both, as before.
+
+2002-01-30  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): --gen-random --armor does now output a base64
+       encoded string.
+
+2002-01-28  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main), options.h, pkclist.c (algo_available): --pgp6
+       flag.  This is not nearly as involved as --pgp2.  In short, it
+       turns off force_mdc, turns on no_comment, escape_from, and
+       force_v3_sigs, and sets compression to 1.  It also restricts the
+       user to IDEA (if present), 3DES, CAST5, MD5, SHA1, and RIPEMD160.
+       See the comments above algo_available() for lots of discussion on
+       why you would want to do this.
+
+2002-01-27  David Shaw  <dshaw@jabberwocky.com>
+
+       * keygen.c (keygen_set_std_prefs): Comment
+
+       * keyedit.c (sign_uids): Bug fix - when signing with multiple
+       secret keys at the same time, make sure each key gets the sigclass
+       prompt.
+
+       * exec.c (exec_finish): Close the iobuf and FILE before trying to
+       waitpid, so the remote process will get a SIGPIPE and exit.  This
+       is only a factor when using a pipe to communicate.
+
+       * exec.c (exec_write): Disable cache-on-close of the fd iobuf (is
+       this right?  Why is a fd iobuf cached at all?)
+
+2002-01-26  Werner Koch  <wk@gnupg.org>
+
+       * g10.c, options.h: New option --gpg-agent-info
+       * passphrase.c (agent_open): Let it override the environment info.
+       * seckey-cert.c (check_secret_key): Always try 3 times when the
+       agent is enabled.
+       * options.skel: Describe --use-agent.
+
+2002-01-24  David Shaw  <dshaw@jabberwocky.com>
+
+       * pubkey-enc.c (is_algo_in_prefs, get_it): Only check preferences
+       against keys with v4 self sigs - there is really little point in
+       warning for every single non-IDEA message encrypted to an old key.
+
+       * pkclist.c (select_algo_from_prefs): Only put in the fake IDEA
+       preference if --pgp2 is on.
+
+       * mainproc.c (check_sig_and_print): Print "Expired" for expired
+       but good signatures (this still prints "BAD" for expired but bad
+       signatures).
+
+2002-01-23  David Shaw  <dshaw@jabberwocky.com>
+
+       * keygen.c (ask_keysize): Cosmetic: don't present a RSA signing
+       key as a "keypair" which can be 768 bits long (as RSA minimum is
+       1024).
+
+       * pubkey-enc.c (is_algo_in_prefs): Allow IDEA as a fake preference
+       for v3 keys with v3 selfsigs.
+
+2002-01-22  David Shaw  <dshaw@jabberwocky.com>
+
+       * packet.h, getkey.c (merge_selfsigs_main), pkclist.c
+       (select_algo_from_prefs): Implement the fake IDEA preference as
+       per RFC2440:12.1.  This doesn't mean that IDEA will be used (the
+       plugin may not be present), but it does mean that a v3 key with a
+       v3 selfsig has an implicit IDEA preference instead of 3DES.  v3
+       keys with v4 selfsigs use preferences as normal.
+
+       * encode.c (encode_crypt): if select_algo_from_prefs fails, this
+       means that we could not find a cipher that both keys like.  Since
+       all v4 keys have an implicit 3DES preference, this means there is
+       a v3 key with a v3 selfsig in the list.  Use 3DES in this case as
+       it is the safest option (we know the v4 key can handle it, and
+       we'll just hope the v3 key is being used in an implementation that
+       can handle it).  If --pgp2 is on, warn the user what we're doing
+       since it'll probably break PGP2 compatibility.
+
+       * g10.c (main): Do not force using IDEA for encrypted files in
+       --pgp2 mode - let the fake IDEA preference choose this for us for
+       better compatibility when encrypting to multiple keys, only some
+       of which are v3.
+
+       * keygen.c (keygen_set_std_prefs): Put 3DES on the end of the
+       default cipher pref list (RFC2440: "...it is good form to place it
+       there explicitly.").  If the user has the IDEA plugin installed,
+       put a preference for IDEA *after* 3DES to effectively disable its
+       use for everything except encrypting along with v3 keys.
+
+       * encode.c, g10.c, sign.c: Change the PGP2 warning line from
+       "... will not be usable ..." to "... may not be usable ..." as the
+       user could be using one of the enhanced PGP2 variations.
+
+       * helptext.c: Revise the sign_uid.class help text as suggested by
+       Stefan.
+       
+2002-01-20  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c (passphrase_to_dek): Add tryagain_text arg to be
+       used with the agent.  Changed all callers.
+       (agent_get_passphrase): Likewise and send it to the agent
+       * seckey-cert.c (do_check): New arg tryagain_text.
+       (check_secret_key): Pass the string to do_check.
+       * keygen.c (ask_passphrase): Set the error text is required.
+       * keyedit.c (change_passphrase): Ditto.
+
+       * passphrase.c (agent_open): Disable opt.use_agent in case of a
+       problem with the agent. 
+       (agent_get_passphrase): Ditto.
+       (passphrase_clear_cache): Ditto.
+
+2002-01-19  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c (agent_open): Add support for the new Assuan based
+       gpg-agent.  New arg to return the used protocol version.
+       (agent_get_passphrase): Implemented new protocol here.
+       (passphrase_clear_cache): Ditto.
+       (readline): New.
+       
+2002-01-15  Timo Schulz  <ts@winpt.org>
+
+       * encode.c (encode_crypt_files): Fail if --output is used.
+       
+       * g10.c: New command --decrypt-files.
+
+       * decrypt.c (decrypt_messages): New.
+       
+2002-01-09  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c, misc.c, gpgv.c: move idea_cipher_warn to misc.c so gpgv.c
+       doesn't need a stub for it any longer.
+
+       * g10.c (get_temp_dir), main.h: no longer used (it's in exec.c now)
+
+       * g10.c (main), delkey.c (delete_keys), main.h : Allow
+       --delete-key (now --delete-keys, though --delete-key still works,
+       of course) to delete multiple keys in one go.  This applies to
+       --delete-secret-key(s) and --delete-secret-and-public-key(s) as
+       well.
+
+2002-01-09  Timo Schulz  <ts@winpt.org>
+
+       * encode.c (encode_crypt_files): Now it behaves like verify_files.
+       
+       * g10.c (main): We don't need to check argc for encode_crypt_files
+       any longer.
+
+2002-01-09  Timo Schulz  <ts@winpt.org>
+
+       * exec.c: Include windows.h for dosish systems.
+
+2002-01-08  Timo Schulz  <ts@winpt.org>
+
+       * g10.c (main): New description for --encrypt-files.
+
+2002-01-08  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Must register the secring for encryption because
+       it is needed to figure out the default recipient.  Reported by
+       Roger Sondermann.
+
+2002-01-05  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (menu_adduid): Require --expert before adding a photo
+       ID to a v3 key, and before adding a second photo ID to any key.
+
+       * keyedit.c (keyedit_menu): Don't allow adding photo IDs in
+       rfc1991 or pgp2 mode.
+
+       * getkey.c (merge_selfsigs_subkey): Permit v3 subkeys.  Believe it
+       or not, this is allowed by rfc 2440, and both PGP 6 and PGP 7 work
+       fine with them.
+
+       * g10.c, options.h, keyedit.c, sign.c: Move the "ask for
+       expiration" switch off of --expert, which was getting quite
+       overloaded, and onto ask-sig-expire and ask-cert-expire.  Both
+       default to off.
+
+       * g10.c (main): Change the default compression algo to 1, to be
+       more OpenPGP compliant (PGP also uses this, so it'll help with
+       interoperability problems as well).
+
+       * encode.c (encode_crypt): Handle compression algo 2, since the
+       default is now 1.
+
+       * build-packet.c (build_attribute_subpkt): Fix off-by-one error.
+
+2002-01-05  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Do not register the secret keyrings for certain
+       commands.
+
+       * keydb.c (keydb_add_resource): Use access to test for keyring
+       existence.  This avoids cached opened files which are bad under
+       RISC OS.
+
+2002-01-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * sign.c (sign_file, sign_symencrypt_file): always use one-pass
+       packets unless rfc1991 is enabled.  This allows a signature made
+       with a v3 key to work in PGP 6 and 7.  Signatures made with v4
+       keys are unchanged.
+
+       * g10.c (main): Disallow non-detached signatures in PGP2 mode.
+       Move the "you must use files and not pipes" PGP2 warning up so all
+       the PGP2 stuff is together.
+
+       * encode.c (encode_simple): Use the actual filesize instead of
+       partial length packets in the internal literal packet from a
+       symmetric message.  This breaks PGP5(?), but fixes PGP2, 6, and 7.
+       It's a decent tradeoff.  Note there was only an issue with
+       old-style RFC1991 symmetric messages.  2440-style messages in 6
+       and 7 work with or without partial length packets.
+
+2002-01-03  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): Removed --no-default-check-level option, as it is
+       not consistent with other "default" options.  Plus, it is the same
+       as saying --default-check-level 0.
+
+       * exec.c (exec_read): Disallow caching tempfile from child
+       process, as this keeps the file handle open and can cause unlink
+       problems on some platforms.
+
+       * keyserver.c (keyserver_search_prompt): Minor tweak - don't
+       bother to transform keyids into textual form if they're just going
+       to be transformed back to numbers.
+
+2002-01-03  Timo Schulz <ts@winpt.org>
+
+       * g10.c: New command --encrypt-files.
+    
+       * verify.c (print_file_status): Removed the static because
+       encode_crypt_files also uses this function.
+
+       * main.h (print_files_status): New.
+       (encode_crypt_files): New.
+
+       * encode.c (encode_crypt_files): New.
+
+2002-01-02  Stefan Bellon  <sbellon@sbellon.de>
+
+       * keyserver.c: Moved util.h include down in order to avoid
+       redefinition problems on RISC OS.
+
+       * keyring.c (keyring_lock): Only lock keyrings that are writable.
+
+       * keyring.c (keyring_update_keyblock): Close unused iobuf.
+
+       * hkp.c (parse_hkp_index, hkp_search) [__riscos__]: Changed
+       unsigned char* to char* because of compiler issues.
+
+       * exec.c (exec_finish) [__riscos__]: Invalidate close cache so
+       that file can be unlinked.
+
+2001-12-28  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): Use a different strlist to check extensions since
+       they need to be handled seperately now.
+
+       * misc.c,main.h (check_permissions): Properly handle permission
+       and ownership checks on files in the lib directory
+       (e.g. /usr/local/lib/gnupg), which are owned by root and are
+       world-readable, and change all callers to specify extension or
+       per-user file.
+
+       * photoid.c (show_photo), keyserver.c (keyserver_spawn): Bug fix -
+       don't call exec_finish if exec_write fails.
+
+       * keyserver.c (keyserver_spawn): Look for OPTIONS from the
+       keyserver helper - specifically, a "OUTOFBAND" option for the
+       email keyserver.
+
+       * mainproc.c (list_node), keylist.c (list_keyblock_colon),
+       import.c (delete_inv_parts), export.c (do_export_stream): Use
+       signature flags for exportability check rather than re-parsing the
+       subpacket.
+
+       * keyid.c, keydb.h (get_lsign_letter): No longer needed.
+
+2001-12-27  David Shaw  <dshaw@jabberwocky.com>
+
+       * exec.c (exec_finish): Show errors when temp files cannot be
+       deleted for whatever reason.
+
+       * exec.c (exec_read): Don't rely on WEXITSTATUS being present.
+
+       * exec.c (make_tempdir): Add temp file creator for win32.  Don't
+       create an incoming temp file if the exec is write-only.
+
+       * keyserver.c (keyserver_spawn): Clean up error handling, for when
+       the spawn fails.
+
+       * photoid.c (show_photo): Clean up error handling.
+
+       * misc.c (check_permissions): Neaten.
+
+2001-12-25  David Shaw  <dshaw@jabberwocky.com>
+
+       * mkdtemp.c (mkdtemp): Add copyleft info and tweak the 'X' counter
+       to be a bit simpler.
+
+       * keyserver.c, photoid.c: Remove unused headers left over from
+       when the exec functions lived there.
+
+2001-12-23  Timo Schulz <ts@winpt.org>
+
+       * misc.c (check_permissions): Do not use it for W32 systems.
+
+       * tdbio.c (migrate_from_v2): Define ftruncate as chsize() for W32.
+
+       * mkdtemp.c: W32 support.
+
+       * photoid.c: Ditto.
+
+       * exec.c: Ditto.
+
+2001-12-22  David Shaw  <dshaw@jabberwocky.com>
+
+       * exec.c (make_tempdir): avoid compiler warning with const
+
+       * mkdtemp.c (mkdtemp): catch the empty ("") string case in case
+       someone repurposes mkdtemp at some point.
+
+       * photoid.c (generate_photo_id, show_photo): some type changes
+       from Stefan Bellon.
+
+       * exec.c (make_tempdir): handle Win32 systems, suggested by Timo
+       Schulz.
+
+2001-12-22  Werner Koch  <wk@gnupg.org>
+
+       * encode.c (encode_simple, encode_crypt): i18n 2 strings.
+
+2001-12-22  Timo Schulz <ts@winpt.org>
+       
+       * encode.c (encode_simple, encode_crypt): Use is_file_compressed
+       to avoid to compress compressed files.
+
+2001-12-22  Werner Koch  <wk@gnupg.org>
+
+       * keyserver.c (keyserver_spawn): Removed some variables
+       declaration due to shadowing warnings.
+
+       * build-packet.c (build_attribute_subpkt): s/index/idx/ to avoid
+       compiler warnig due to index(3).
+
+       * getkey.c (get_ctx_handle): Use KEYDB_HANDLE as return value.
+       * keylist.c (list_one): Made resname const.
+
+       * keyedit.c (keyedit_menu): Allow "addphoto" only when --openpgp is
+       not used.
+
+       * options.skel: Changed one example photo viewer to qiv.
+
+2001-12-21  David Shaw  <dshaw@jabberwocky.com>
+
+       * Makefile.am: add exec.c, exec.h, photoid.c, and photoid.h
+
+       * build-packet.c (build_attribute_subpkt): new function to build
+       the raw attribute subpacket.  Note that attribute subpackets have
+       the same format as signature subpackets.
+
+       * exec.c: new file with generic exec-a-program functionality.
+       Used by both photo IDs and keyserver helpers.  This is pretty much
+       the same code that used to be keyserver specific, with some
+       changes to be usable generically.
+
+       * free-packet.c (free_attributes (new)): function to free an
+       attribute packet.
+       
+       * gpgv.c: added stub show_photo
+       
+       * keyedit.c (keyedit_menu, menu_adduid, menu_showphoto): can add a
+       photo (calls generate_photo_id), or display a photo (calls
+       show_photo) from the --edit menu.  New commands are "addphoto",
+       and "delphoto" (same as "deluid").
+
+       * keylist.c (list_keyblock_print): show photos during key list if
+       --show-photos enabled.
+       
+       * keyserver.c (keyserver_spawn): use the generic exec_xxx
+       functions to call keyserver helper.
+
+       * g10.c, options.h: three new options - --{no-}show-photos, and
+       --photo-viewer to give the command line to display a picture.
+
+       * options.skel: instructions for the photo viewer
+       
+       * parse-packet.c (parse_user_id, setup_user_id (new)): common code
+       for both user IDs and attribute IDs moved to setup_user_id.
+
+       * parse-packet.c (make_attribute_uidname (new)): constructs a fake
+       "name" for attribute packets (e.g. "[image of size ...]")
+
+       * parse-packet.c (parse_attribute (replaces parse_photo_id),
+       parse_attribute_subpkts): Builds an array of individual
+       attributes.  Currently only handles attribute image / type jpeg
+       subpackets.
+
+       * sign.c (hash_uid): Fix bug in signing attribute (formerly
+       photo_id) packets.
+
+       * packet.h, and callers: globally change "photo_id" to "attribute"
+       and add structures for attributes.  The packet format is generic
+       attributes, even though the only attribute type thus far defined
+       is jpeg.
+
+2001-12-21  David Shaw  <dshaw@jabberwocky.com>
+
+       * parse-packet.c (can_handle_critical): Can handle critical
+       revocation subpackets now.
+
+       * trustdb.c (mark_usable_uid_certs): Disregard revocations for
+       nonrevocable sigs.  Note that this allows a newer revocable
+       signature to override an older nonrevocable signature.
+
+       * sign.c (make_keysig_packet): add a duration field and change all
+       callers.  This makes make_keysig_packet closer to
+       write_signature_packets and removes some duplicated expiration
+       code.
+
+       * keyedit.c (keyedit_menu, menu_revsig, sign_uids,
+       sign_mk_attrib): Add nrsign command, don't allow revoking a
+       nonrevocable signature,
+
+       * g10.c (main): Add --nrsign option to nonrevocably sign a key
+       from the command line.
+
+       * build-packet.c (build_sig_subpkt_from_sig): Comment to explain
+       the use of CRITICAL.
+
+2001-12-21  Werner Koch  <wk@gnupg.org>
+
+       * g10.c. options.h : New option --show-keyring
+       * getkey.c (get_ctx_handle): New.
+       * keylist.c (list_one): Implement option here.  By David Champion. 
+
+2001-12-20  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (keyserver_spawn): Use mkdtemp() to make temp
+       directory.
+
+       * mkdtemp.c: replacement function for those platforms that don't
+       have mkdtemp (make a temp directory securely).
+
+2001-12-19  David Shaw  <dshaw@jabberwocky.com>
+
+       * misc.c (check_permissions): New function to stat() and ensure
+       the permissions of GNUPGHOME and the files have safe permissions.
+
+       * keydb.c (keydb_add_resource): Check keyring permissions.
+
+       * tdbio.c (tdbio_set_dbname): Check permissions of trustdb.gpg
+
+       * keyserver.c (keyserver_spawn): Disable keyserver schemes that
+       involve running external programs if the options file has unsafe
+       permissions or ownership.
+
+       * g10.c, options.h: New option --no-permission-warning to disable
+       the permission warning message(s).  This also permits use of the
+       keyserver if it had been disabled (see above).  Also check the
+       permissions/ownership of random_seed.
+       
+       * keyserver.c (keyserver_spawn): The new glibc prints a warning
+       when using mktemp() (the code was already secure, but the warning
+       was bound to cause confusion).  Use a different implementation
+       based on get_random_bits() instead.  Also try a few times to get
+       the temp dir before giving up.
+
+2001-12-19  Werner Koch  <wk@gnupg.org>
+
+       * g10.c, passphrase.c [CYGWIN32]: Allow this as an alias for MINGW32.
+
+2001-12-18  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (idea_cipher_warn): Add a flag to show the warning always
+       or once per session and change all callers (show always except for
+       the secret key protection and unknown cipher from an encrypted
+       message errors).  Also make the strings translatable.
+
+       * pubkey-enc.c (get_it): Add the IDEA cipher warning if the user
+       tries to decrypt an IDEA encrypted message without the IDEA
+       plugin.
+
+       * keyserver.c (parse_keyserver_uri): More strict checking of the
+       keyserver URI.  Specifically, fail if the ":port" section is
+       anything except a number between 1 and 65535.
+
+2001-12-17  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyserver.c (print_keyinfo): No need to check for
+       control/illegal characters, as utf8_to_native does this for us.
+
+       * mainproc.c (proc_encrypted): Use generic IDEA warning.
+
+       * gpgv.c: add stub for idea_cipher_warn
+
+       * g10.c, hkp.c, keyserver.c: Fix capitalization and plural issues.
+
+       * encode.c (encode_crypt), sign.c (sign_file, clearsign_file):
+       disable pgp2 mode after the message is no longer pgp2 compatible.
+
+       * g10.c (main): Tweak the PGP2.x IDEA warning to use the generic
+       warning, and not merely fail if the IDEA plugin isn't there.
+
+       * g10.c (main, idea_cipher_warn), keygen.c (set_one_pref),
+       seckey-cert.c (do_check): Add a generic IDEA warning for when the
+       IDEA plugin is not present.  This pops up when the user uses
+       "--cipher-algo idea", when setpref is used to set a "S1"
+       preference, and when a secret key protected with IDEA is used.
+
+2001-12-15  Werner Koch  <wk@gnupg.org>
+
+       * keyserver.c (keyserver_spawn): Assert that we have dropped privs.
+
+2001-12-13  Werner Koch  <wk@gnupg.org>
+
+       * pubkey-enc.c (get_session_key): Check that the public key
+       algorithm is indeed usable for en/decryption.  This avoid a
+       strange error message from pubkey_decrypt if for some reasons a
+       bad algorithm indentifier is passed.
+
+2001-12-12  David Shaw  <dshaw@jabberwocky.com>
+
+       * Fixed some types for portability.  Noted by Stefan Bellon.
+
+2001-12-11  Werner Koch  <wk@gnupg.org>
+
+       * hkp.c (hkp_export): Do not print possible control characters
+       from a keyserver response.
+       (parse_hkp_index): Made uid an unsigned char* because it is passed to
+       isspace().
+       (hkp_search): Ditto for the char* vars.
+
+       * g10.c (main): Print the IDEA warning also for -c and -se.
+       
+       * g10.c (get_temp_dir): Assert that we have dropped privs
+
+       * encode.c (encode_crypt): Include the first key into the --pgp2
+       check.
+
+2001-12-07  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c, options.h: New option --pgp2.  This is identical to
+       "--rfc1991 --cipher-algo idea --compress-algo 1 --digest-algo md5
+       --force_v3_sigs" with the addition of an warning to advise the
+       user not to use a pipe (which would break pgp2 compatibility).
+
+       * encode.c (encode_crypt): warn if the user tries to encrypt to
+       any key that is not RSA and <= 2048 bits when the --pgp2 option is
+       used.
+
+       * sign.c (sign_file, clearsign_file): When using --pgp2, make a v3
+       sig, and warn if the signature is made with a non-v3 key.
+
+2001-12-05  David Shaw  <dshaw@jabberwocky.com>
+
+       * sign.c (sign_file, clearsign_file, sign_symencrypt_file): Prompt
+       for sig expiration if --expert is set and --force-v3-sigs is not
+       set (v3 sigs cannot expire).
+
+       * mainproc.c (check_sig_and_print): After checking a sig, print
+       expiration status.  This causes a error return if the sig is
+       expired.
+
+       * build-packet.c (build_sig_subpkt_from_sig): Include a critical
+       sig expiration subpacket if the sig is to expire.
+
+       * keyedit.c (sign_uids): Do not sign an expired key unless
+       --expert is set, in which case prompt.  Also, offer to expire a
+       signature when the key the user is signing expires.
+
+       * keygen.c (ask_expire_interval): Add a value to determine whether
+       to prompt for a key or sig expiration and change all callers.
+
+       * keyid.c: New functions: expirestr_from_sig and
+       colon_expirestr_from_sig.
+
+       * keylist.c (list_keyblock_colon): Show sig expiration date in the
+       --with-colons listing.
+
+       * sign.c (make_keysig_packet, write_signature_packets): Pass in an
+       optional timestamp for the signature packet, and change all
+       callers.
+
+       * keyedit.c (sign_mk_attrib): Include a critical expiration
+       subpacket in the signature if an expiration date is given.
+
+2001-12-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (sign_uids): If the user tries to sign a
+       locally-signed key, allow the cert to be promoted to a full
+       exportable signature.  This essentially deletes the old
+       non-exportable sig, and replaces it with a new exportable one.
+
+2001-12-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * keyedit.c (keyedit_menu): Do not allow signing a revoked key
+       unless --expert is set, and ask even then.
+
+       * keyedit.c (sign_uids): Do not allow signing a revoked UID unless
+       --expert is set, and ask even then.
+
+       * g10.c, options.h : New option --expert
+
+2001-11-16  David Shaw  <dshaw@jabberwocky.com>
+
+       * Allow the user to select no compression via "--compress-algo 0"
+       on the command line.
+
+       * keyedit.c (show_prefs): Show compression preferences in the
+       long-form "showpref" style.
+
+       * keygen.c (set_one_pref): Permit setting a no-compression ("Z0")
+       preference.
+
+       * getkey.c (fixup_uidnode): Fix compression preference corruption
+       bug.
+
+2001-12-02  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c: Add advisory --for-your-eyes-only option as per section
+       5.9 of 2440.
+
+2001-12-05  David Shaw  <dshaw@jabberwocky.com>
+
+       * Force a V4 sig if the user has a notation or policy URL set.
+
+2001-12-04  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c: Add options --keyserver-options, --temp-directory, and
+       auto-key-retrieve (the opposite of no-auto-key-retrieve).
+
+       * hkp.c (hkp_search): New function to handle searching a HKP
+       keyserver for a key
+
+       * hkp.c (hkp_ask_import, hkp_export): Pretty large changes to make
+       them communicate via the generic functions in keyserver.c
+
+       * keyserver.c: new file with generic keyserver routines for
+       getting keys from a keyserver, sending keys to a keyserver, and
+       searching for keys on a keyserver.  Calls the internal HKP stuff
+       in hkp.c for HKP keyserver functions.  Other calls are handled by
+       an external program which is spawned and written to and read from
+       via pipes.  Platforms that don't have pipes use temp files.
+
+2001-11-20  David Shaw  <dshaw@jabberwocky.com>
+
+       * options.h, g10.c: New options show-notation, no-show-notation,
+       default-check-level, no-default-check-level, show-policy-url,
+       no-show-policy-url.
+
+       * packet.h, sign.c (make_keysig_packet), parse-packet.c
+       (parse_signature), free-packet.c (free_seckey_enc): Fill in
+       structures for notation, policy, sig class, exportability, etc.
+
+       * keyedit.c, keylist.c (print_and_check_one_sig,
+       list_keyblock_print): Show flags in signature display for cert
+       details (class, local, notation, policy, revocable).  If selected,
+       show the notation and policy url.
+
+       * keyedit.c (sign_uids): Prompt for and use different key sig
+       classes.
+
+       * helptext.c (helptexts): Add help text to explain different
+       key signature classes
+
+2001-11-26  David Shaw  <dshaw@jabberwocky.com>
+
+       * trustdb.c (mark_usable_uid_certs): Fix segfault from bad
+       initialization and fix reversed key signature expiration check.
+
+2001-11-09  Werner Koch  <wk@gnupg.org>
+
+       * export.c (do_export_stream): Put all given names into a search
+       description and change the loop so that all matching names are
+       returned.
+
+2001-11-08  Werner Koch  <wk@gnupg.org>
+
+       * pubkey-enc.c (get_it): To reduce the number of questions on the
+       MLs print the the name of cipher algorithm 1 with the error message.
+
+       * mainproc.c: Changed the way old rfc1991 encryption cipher is
+       selected. Based on a patch by W Lewis.
+
+       * pkclist.c (do_edit_ownertrust): Allow to skip over keys, the non
+       working "show info" is now assigned to "i" 
+       * trustdb.c (ask_ownertrust, validate_keys): Implement a real quit
+       here.  Both are by David Shaw.
+       
+       * trustdb.c (validate_keys): Make sure next_exipire is initialized.
+
+       * sign.c (make_keysig_packet): Use SHA-1 with v4 RSA keys.
+
+       * g10.c, options.h : New option --[no-]froce-v4-certs.
+       * sign.c (make_keysig_packet): Create v4 sigs on v4 keys even with
+       a v3 key.  Use that new option.  By David Shaw
+
+       * revoke.c (ask_revocation_reason): Allow to select "no reason".
+       By David Shaw.
+
+       * keyid.c (fingerprint_from_sk): Calculation of an v3 fpr was
+       plain wrong - nearly the same code in fingerprint_from_pk is correct.
+
+       * build-packet.c (do_secret_key): Added a few comments to the code.
+
+2001-11-07  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Print a warning when -r is used w/o encryption.
+       Suggested by Pascal Scheffers.
+
+2001-10-23  Werner Koch  <wk@gnupg.org>
+
+       * keyedit.c (keyedit_menu): Changed helptext for showpref
+       command.  Suggested by Reinhard Wobst.
+
+       * keyring.c (keyring_search): When marking the offtbl ready, take
+       into account that we may have more than one keyring.
+
+2001-10-22  Werner Koch  <wk@gnupg.org>
+
+       * Makefile.am: Do not use OMIT_DEPENDENCIES
+
+       * build-packet.c (build_sig_subpkt): Default is now to put all
+       types of subpackets into the hashed area and only list those which
+       should go into the unhashed area.
+
+2001-10-18  Werner Koch  <wk@gnupg.org>
+
+       * keydb.c (keydb_add_resource): Rearranged the way we keep track
+       of the resource. There will now be an entry for each keyring here
+       and not in keyring.c itself.  Store a token to allow creation of a
+       keyring handle.  Changed all functions to utilize this new design.
+       (keydb_locate_writable): Make a real implementation.
+       * keyring.c (next_kr): Removed and changed all callers to set the
+       resource directly from the one given with the handle.
+       (keyring_is_writable): New. 
+       (keyring_rebuild_cache): Add an arg to pass the token from keydb.
+
+2001-10-17  Werner Koch  <wk@gnupg.org>
+
+       * keyring.c (keyring_search): Enabled word search mode but print a
+       warning that it is buggy.
+       
+2001-10-11  Werner Koch  <wk@gnupg.org>
+
+       * hkp.c (hkp_ask_import): No more need to set the port number for
+       the x-hkp scheme. 
+       (hkp_export): Ditto.
+
+2001-10-06  Stefan Bellon  <sbellon@sbellon.de>
+
+       * passphrase.c [__riscos__]: Disabled agent specific stuff.
+       * g10.c: New option --no-force-v3-sigs.
+
+2001-10-04  Werner Koch  <wk@gnupg.org>
+
+       * export.c (do_export_stream): Do not push the compress filter
+       here because the context would run out of scope due to the
+       iobuf_close done by the caller.
+       (do_export): Do it here instead. 
+
+2001-09-28  Werner Koch  <wk@gnupg.org>
+
+       * keyedit.c (sign_uids): Always use the primary key to sign keys.
+       * getkey.c (finish_lookup): Hack to return only the primary key if
+       a certification key has been requested.
+
+       * trustdb.c (cmp_kid_for_make_key_array): Renamed to
+       (validate_one_keyblock): this and changed arg for direct calling.
+       (make_key_array): Renamed to
+       (validate_one_keyblock): this and changed args for direct calling.
+       (mark_usable_uid_certs, validate_one_keyblock)
+       (validate_key_list): Add next_expire arg to keep track of
+       expiration times.  
+       (validate_keys): Ditto for UTKs and write the stamp.
+
+       * tdbio.c (migrate_from_v2): Check return code of tbdio_sync.
+
+       * tdbdump.c (import_ownertrust): Do a tdbio_sync().
+
+       * keyring.c: Made the offtbl an global object.
+
+2001-09-27  Werner Koch  <wk@gnupg.org>
+
+       * pkclist.c (do_edit_ownertrust): Allow settin of ultimate trust.
+
+       * trustdb.c (mark_keyblock_seen): New.
+       (make_key_array): Use it to mark the subkeys too.
+       (validate_keys): Store validity for ultimatly trusted keys.
+
+2001-09-26  Werner Koch  <wk@gnupg.org>
+
+       * pkclist.c (check_signatures_trust, do_we_trust): Removed the
+       invocation of add_ownertrust. Minor changes to the wording.
+       (add_ownertrust, add_ownertrust_cb): Removed.
+
+       * trustdb.c (get_validity): Allow to lookup the validity using a
+       subkey.
+
+       * trustdb.c (new_key_hash_table): Increased the table size to 1024
+       and changed the masks accordingly.
+       (validate): Changed stats printing.
+       (mark_usable_uid_certs): New.
+       (cmp_kid_for_make_key_array): Does now check the signatures and
+       figures out a usable one.
+
+2001-09-25  Werner Koch  <wk@gnupg.org>
+
+       * keyring.c (new_offset_item,release_offset_items)
+       (new_offset_hash_table, lookup_offset_hash_table)
+       (update_offset_hash_table, update_offset_hash_table_from_kb): New.
+       (keyring_search): Use a offset table to optimize search for
+       unknown keys.
+       (keyring_update_keyblock, keyring_insert_keyblock): Insert new
+       offsets.
+       * getkey.c (MAX_UNK_CACHE_ENTRIES): Removed the unknown keys
+       caching code.
+
+       * g10.c, options.h, import.c: Removed the entire
+       allow-secret-key-import stuff because the validity is now
+       controlled by other means.
+
+       * g10.c: New command --rebuild-keydb-caches.
+       * keydb.c (keydb_rebuild_caches): New.
+       * keyring.c (do_copy): Moved some code to
+       (create_tmp_file, rename_tmp_file, write_keyblock): new functions.
+       (keyring_rebuild_cache): New.
+
+       * packet.h (PKT_ring_trust): Add sigcache field.
+       * parse-packet.c (parse_trust): Parse sigcache.
+       * keyring.c (do_copy): Always insert a sigcache packet.
+       (keyring_get_keyblock): Copy the sigcache packet to the signature.
+       * sig-check.c (cache_sig_result): Renamed from
+       cache_selfsig_result. Changed implementation to use the flag bits
+       and changed all callers.
+       (mdc_kludge_check): Removed this unused code.
+       (do_check): Do not set the sig flags here.
+
+       * import.c (read_block): Make sure that ring_trust packets are
+       never imported.
+       * export.c (do_export_stream): and never export them.
+
+       * trustdb.c (make_key_array): Skip revoked and expired keys.
+
+2001-09-24  Werner Koch  <wk@gnupg.org>
+
+       * g10.c, options.h: New option --no-auto-check-trustdb.
+
+       * keygen.c (do_generate_keypair): Set newly created keys to
+       ultimately trusted.
+
+       * tdbio.h, tdbio.c: Removed all support for records DIR, KEY, UID,
+       PREF, SIG, SDIR and CACH. Changed migration function to work
+       direct on the file.
+       (tdbio_read_nextcheck): New.
+       (tdbio_write_nextcheck): New. 
+
+2001-09-21  Werner Koch  <wk@gnupg.org>
+
+       Revamped the entire key validation system.
+       * trustdb.c: Complete rewrite. No more validation on demand,
+       removed some functions, adjusted to all callers to use the new 
+       and much simpler interface. Does not use the LID anymore.
+       * tdbio.c, tdbio.h: Add new record types trust and valid. Wrote a
+       migration function to convert to the new trustdb layout.
+       * getkey.c (classify_user_id2): Do not allow the use of the "#"
+       prefix. 
+       * keydb.h: Removed the TDBIDX mode add a skipfnc to the
+       descriptor.
+       * keyring.c (keyring_search): Implemented skipfnc.
+
+       * passphrase.c (agent_open): Add missing bracket.  Include windows.h.
+
+2001-09-19  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (print_fingerprint): Renamed from fingerprint, made
+       global available. Added new arg to control the print style.
+       * mainproc.c (print_fingerprint): Removed. 
+       * pkclist.c (print_fpr, fpr_info): Removed and changed callers to
+       use print_fingerprint.
+       * keyedit.c (show_fingerprint): Ditto.
+
+       * passphrase.c (writen, readn)
+       (agent_open, agent_close)
+       (agent_get_passphrase)
+       (passphrase_clear_cache): Support for W32.  Contributed by Timo.
+
+       * import.c (import_one): Release keydb handles at 2 more places.
+
+       * keyring.c (keyring_release): Close the iobuf.
+       (keyring_get_keyblock): Init ret_kb to NULL and store error contidion.
+
+       * import.c (import_new_stats_handle): New. 
+       (import_release_stats_handle): New.
+       (import_print_stats): Renamed from static fnc print_stats.
+       (import_keys, import_keys_stream): Add an optional status handle
+       arg and changed all callers.
+       * hkp.c (hkp_ask_import): Add an stats_handle arg and changed all
+       callers.
+
+       * mainproc.c (print_pkenc_list): Use print_utf8_string2().
+
+2001-09-18  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New command --refresh-keys.
+       * hkp.c (hkp_refresh_keys): New. Contributed by Timo Schulz.
+
+       * parse-packet.c (parse): Stop on impossible packet lengths.
+
+2001-09-17  Werner Koch  <wk@gnupg.org>
+
+       * mainproc.c (print_notation_data): Wrap notation data status lines
+       after 50 chars.
+       
+       * mainproc.c (proc_pubkey_enc): Make option try-all-secrets work.
+       By disastry@saiknes.lv.
+
+2001-09-14  Werner Koch  <wk@gnupg.org>
+
+       * parse-packet.c (dump_sig_subpkt): List key server preferences
+       and show the revocable flag correctly. Contributed by David Shaw.
+
+2001-09-09  Werner Koch  <wk@gnupg.org>
+
+       * keyedit.c (keyedit_menu): No need to define another p.
+
+       * keylist.c (print_capabilities): s/used/use/ so that it
+       does not shadow a global.
+       * sign.c (sign_file): Renamed arg encrypt to encryptflag
+       * keygen.c: Replaced all "usage" by "use".
+       * misc.c (openpgp_pk_algo_usage): Ditto.
+
+       * pubkey-enc.c (get_it): Renamed arg k to enc so that the later
+       defined k does not shadow it.
+
+       * parse-packet.c (parse_gpg_control): No need to define another i.
+
+       * getkey.c (get_pubkey_byfprint): Must use the enum values and not
+       the fprint_len.
+       * keyring.c (keyring_search): Removed a non-sense break.  Both
+       bugs pointed out by Stefan.
+
+2001-09-07  Werner Koch  <wk@gnupg.org>
 
-  * basicdefs.h: New.  Move some defs and decl to this header.
+       * status.c, status.h: Added NO_RECP and ALREADY_SIGNED.
+       * pkclist.c (build_pk_list): Issue NO_RECP.
+       * keyedit.c (sign_uids): Added experimental ALREADY_SIGNED
 
-  * openfile.c (open_outfile): Fixed the 8dot3 handling.
+       * hkp.c (hkp_import): Use log_error. Bug reported by Neal H
+       Walfield. 
 
-  * passphrase.c (passphrase_to_dek): Print uid using utf8 func.
-  * delkey.c (delete_key): Ditto.
-  * pkclist.c (show_paths,do_edit_ownertrust,do_we_trust): Ditto
-  (do_we_trust_pre): Ditto.
-  * trustdb.c (print_user_id,check_uidsigs): Ditto.
-  * revoke.c (gen_revoke,ask_revoke_sig): Ditto.
+       * getkey.c (classify_user_id2): Change args to take the desc union
+       direct.  It was a stupid idea to pass the individual fields of an
+       union to this function. Changed all callers.
+       (classify_user_id): Ditto and allow to pass NULL as the description.
 
-  * filter.h: Changed cipher handle types to the the GCRY_xxx ones.
-  replaces include cipher by system header include gcrypt.h.
-  * cipher.c: replaced the cipher functions by the gcry_ ones.
-  Ditto for the md functions.
+2001-09-06  Werner Koch  <wk@gnupg.org>
 
-  * misc.c (map_gcry_rc): New.
+       * getkey.c (fixup_uidnode): Features flag is now a bit vector.
+       * keygen.c (add_feature_mdc): Ditto.
 
-Wed Jun 28 11:54:44 CEST 2000  Werner Koch  <wk@>
+       Revamped the entire key I/O code to be prepared for other ways of
+       key storages and to get rid of the existing shit.  GDBM support has
+       gone.
+       * keydb.c: New
+       * keyring.c, keyring.h: New.
+       * ringedit.c: Removed.  Moved some stuff to keyring.c
+       * getkey.c: Changed everything related to the key retrieving
+       functions which are now using the keydb_ functions.  
+       (prepare_search, word_match_chars, word_match)
+       (prepare_word_match, compare_name): Moved to keyring.c
+       (get_pubkey_byname): Removed ctx arg and add ret_kdbhd
+       arg.  Changed all callers.
+       (key_byname): Use get_pubkey_end to release the context and take
+       new ret_kbdhd arg.  Changed all callers.
+       (classify_user_id2): Fill the 16 byte fingerprint up with 4 null
+       bytes not with zero bytes of value 4, tsss.
+       * import.c (import_one): Updated to use the new keydb interface.
+       (import_secret_one): Ditto.
+       (import_revoke_cert): Ditto.
+       * delkey.c (do_delete_key): Ditto. 
+       * keyedit.c (keyedit_menu): Ditto.
+       (get_keyblock_byname): Removed.
+       * revoke.c (gen_revoke): Ditto. 
+       * export.c (do_export_stream): Ditto.
+       * trustdb.c (update_trustdb): Ditto.
+       * g10.c, gpgv.c (main): Renamed add_keyblock_resource to
+       keydb_add_resource. 
+       * Makefile.am:  Added and removed files.
+
+       * keydb.h: Moved KBNODE typedef and MAX_FINGERPRINT_LEN to
+       * global.h: this new header.
+       
+2001-09-03  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c (agent_get_passphrase): Changed nread to size_t.
+       (passphrase_clear_cache): Ditto.
+
+       * keyid.c (mk_datestr): Avoid trigraphs.
+       (fingerprint_from_pk): Cache the keyid in the pk.
+
+       * options.h: Add opt.with_fingerprint so that we know whether the
+       corresponding options was used.
+       * g10.c (main): Set it here.
+       * pkclist.c (check_signatures_trust): Always print fingerprint
+       when this option is used.  Mixed a minor memory leak.
+
+       * status.c, status.h: New status INV_RECP.
+       * pkclist.c (build_pk_list): Issue this status.
+
+2001-08-31  Werner Koch  <wk@gnupg.org>
+
+       * parse-packet.c (parse_key,parse_pubkeyenc)
+       (parse_signature): Return error on reading bad MPIs.
+       
+       * mainproc.c (check_sig_and_print): Always print the user ID even
+       if it is not bound by a signature.  Use the primary UID in the
+       status messages and encode them in UTF-8
+       * status.c (write_status_text_and_buffer): New.
+
+2001-08-30  Werner Koch  <wk@gnupg.org>
+
+       * packet.h (sigsubpkttype_t): Add SIGSUBPKT_FEATURES.
+       (PKT_public_key, PKT_user_id): Add a flag for it.
+       * parse-packet.c, build-packet.c: Add support for them.
+       * getkey.c (fixup_uidnode, merge_selfsigs): Set the MDC flags.
+       * keygen.c (add_feature_mdc): New.
+       (keygen_upd_std_prefs): Always set the MDC feature.
+       * keyedit.c (show_prefs): List the MDC flag
+       * pkclist.c (select_mdc_from_pklist): New.
+       * encode.c (encode_crypt, encrypt_filter): Test whether MDC
+       should be used.
+       * cipher.c (write_header): Set MDC use depending on the above test.
+       Print more status info.
+
+       * delkey.c (do_delete_key): Kludge to delete a secret key with no
+       public key available.
+
+       * ringedit.c (find_secret_keyblock_direct): New.
+       * getkey.c (seckey_available): Simplified.
+
+       * ringedit.c (cmp_seckey): Now compares the secret key against the
+       public key while ignoring all secret parts.
+       (keyring_search): Use a public key packet as arg.  Allow to search
+       for subnkeys
+       (search): Likewise. Changed all callers.
+       (find_secret_keyblock_bypk): New.
+       (find_secret_keyblock_byname): First locate the pubkey and then
+       find the correponding secret key.
+       * parse-packet.c (parse): Renamed pkttype arg to onlykeypkts and
+       changed code accordingly.  Changed all callers.
+       (search_packet): Removed pkttype arg.
+       * keyedit.c (keyedit_menu): First locate the public key and then
+       try to locate a secret key.
+
+       * ringedit.c (locate_keyblock_by_fpr): Removed.
+       (locate_keyblock_by_keyid): Removed.
+       (find_keyblock_bysk): Removed.
+
+       * sig-check.c (check_key_signature2): Print the keyid along with
+       the wrong sig class errors.
+
+2001-08-24  Werner Koch  <wk@gnupg.org>
+
+       * sign.c (sign_file): Stripped the disabled comment packet code.
+       (sign_file, sign_symencrypt_file): Moved common code to ..
+       (write_onepass_sig_packets): .. this new function.
+       (sign_file, clearsign_file, sign_symencrypt_file): Moved common
+       code to 
+       (write_signature_packets): this new function.
+       (write_signature_packets, make_keysig_packet)
+       (update_keysig_packet): Moved common code to 
+       (hash_uid, hash_sigclass_to_magic): these new functions
+       (sign_file, sign_symencrypt_file): Moved common code to 
+       (write_plaintext_packet):  this new function.
+
+2001-08-21  Stefan Bellon  <sbellon@sbellon.de>
+
+       * trustdb.c (query_trust_info): Changed trustlevel to signed int.
+       * g10.c [__riscos__]: Fixed handling of --use-agent --lock-multiple.
+
+2001-08-20  Werner Koch  <wk@gnupg.org>
+
+       * encr-data.c (decrypt_data): Keep track on whether we already
+       printed information about the used algorithm.
+       * mainproc.c (proc_encrypted): Removed the non-working IDEA hack
+       and print a message about the assumed algorithm.
+       * passphrase.c (passphrase_to_dek): Use the same algorithm as above.
+       (proc_symkey_enc): Print the algorithm, so that the user knows it
+       before entering the passphrase.
+       (proc_pubkey_enc, proc_pubkey_enc): Zero the DEK out.
+       * encode.c (encode_crypt, encrypt_filter): Ditto.
+
+       * g10.c: Allow for --sign --symmetric.
+       * sign.c (sign_and_symencrypt): New.
+
+       Applied patches from Stefan Bellon <sbellon@sbellon.de> to support
+       RISC OS.  Nearly all of these patches are identified by the
+       __riscos__ macro.
+       * compress.c: Added a couple of casts.
+       * g10.c [__riscos__]: Some patches and new options foo-file similar
+       to all foo-fd options.
+       * gpgv.c, openfile.c, ringedit.c, tdbio.c: Minor fixes.  Mainly
+       replaced hardcoded path separators with EXTSEP_S like macros.  
+       * passprase.c [__riscos__]: Disabled agent stuff
+       * trustdb.c (check_trust): Changed r_trustlevel to signed int to
+       avoid mismatch problems in pkclist.c
+       * pkclist.c (add_ownertrust): Ditto.
+       * plaintext.c (handle_plaintext) [__riscos__]: Print a note when
+       file can't be created.
+       * options.h [__riscos__]: Use an extern unless included from the
+       main module.
+       * signal.c (got_fatal_signal) [__riscos__]: Close all files.
+       
+2001-08-14  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (ask_algo): New arg r_usage.  Allow for RSA keys.
+       (gen_rsa): Enabled the code.
+       (do_create): Enabled RSA branch.
+       (parse_parameter_usage): New.
+       (proc_parameter_file): Handle usage parameter.
+       (read_parameter_file): Ditto.
+       (generate_keypair): Ditto.
+       (generate_subkeypair): Ditto.
+       (do_generate_keypair): Ditto.
+       (do_add_key_flags): New.
+       (keygen_add_std_prefs): Use the new function.
+       (keygen_add_key_flags_and_expire): New.
+       (write_selfsig, write_keybinding): Handle new usage arg.
+       * build-packet.c (build_sig_subpkt): Make sure that key flags go
+       into the hashed area.
+       
+       * keygen.c (write_uid): Initialize the reference cunter.
+
+       * keyedit.c (keyedit_menu): No more need to update the trustdb for
+       preferences.  Added calls to merge keblock.
+
+       * kbnode.c (dump_kbnode): Print some more flags.
+
+2001-08-10  Werner Koch  <wk@gnupg.org>
+
+        Revamped the preference handling.
+
+       * packet.h (prefitem_t, preftype_t): New.
+       (PKT_public_key): Added a uid field.
+       (PKT_user_id): Added field to store preferences and a reference
+       counter.
+       * parse-packet.c (parse_user_id,parse_photo_id): Initialize them
+       * free-packet.c (free_user_id): Free them.
+       (copy_user_id): Removed.
+       (scopy_user_id): New. 
+       (cmp_user_ids): Optimized for identical pointers.
+       (release_public_key_parts): Release the uid.
+       (copy_public_key_with_new_namehash): Removed.
+       (copy_prefs): New.
+       * keyedit.c (menu_adduid): Use the new shallow copy user id.
+       (show_prefs): Adjusted implementation.
+       (keyedit_menu): No more need to update the trustdb after changing
+       preferences.
+       * getkey.c (fixup_uidnode): Store preferences.
+       (find_by_name): Return a user id packet and remove namehash stuff.
+       (lookup): Removed the unused namehash stuff.
+       (finish_lookup): Added foundu arg.
+       (pk_from_block): Removed the namehash arg and changed all callers.
+       (merge_selfsigs): Copy prefs to all keys.
+       * trustdb.c (get_pref_data): Removed.
+       (is_algo_in_prefs): Removed.
+       (make_pref_record): Deleted and removed all class.
+       * pkclist.c (select_algo_from_prefs): Adjusted for the new
+       preference implementation.
+       * pubkey-enc.c (is_algo_in_prefs): New.
+       (get_it): Use that new function. 
+
+2001-08-09  Werner Koch  <wk@gnupg.org>
+
+       * build-packet.c (build_sig_subpkt): Fixed calculation of
+       newarea->size.
+
+       * g10.c (main): New option "--preference-list"
+       * keyedit.c (keyedit_menu): New commands "setpref" and "updpref".
+       (menu_set_preferences): New.
+       * keygen.c (keygen_set_std_prefs): New.
+       (set_one_pref): New.
+       (check_zip_algo): New.
+       (keygen_get_std_prefs): New.
+       (keygen_upd_std_prefs): New
+       (keygen_add_std_prefs): Move the pref setting code into the above fnc.
+       * build-packet.c (build_sig_subpkt): Updated the list of allowed
+       to update subpackets.
+
+2001-08-08  Werner Koch  <wk@gnupg.org>
+
+       * packet.h (subpktarea_t): New.
+       (PKT_signature): Use that type for hashed_data and unhashed_data and
+       removed the _data prefix from those fields.  Changed all users.
+       * parse-packet.c (parse_signature): Changed allocation for that.
+       (parse_sig_subpkt): Changed declaration
+       (enum_sig_subpkt): Ditto and changed implementation accordingly.
+       * free-packet.c (cp_subpktarea): Renamed from cp_data_block and
+       adjusted implementation. Changed caller.
+       * sig-check.c (mdc_kludge_check): Adjusted the hashing.
+       (do_check): Ditto.
+       * sign.c (sign_file, clearsign_file, make_keysig_packet,
+       update_keysig_packet): Ditto.
+       * build-packet.c (build_sig_subpkt): Partial rewrite.
+       (find_subpkt): Adjusted and made static.
+       (delete_sig_subpkt): Adjusted.
+       (do_signature): Ditto.
+
+       * keygen.c (ask_keysize): Do not print the notes about suggested
+       key sizes if just a DSA key is generated.
+
+       * trustdb.c (add_ultimate_key): s/log_error/log_info/ for
+       duplicated inserted trusted keys.
+
+2001-08-07  Werner Koch  <wk@gnupg.org>
+
+       * sign.c (sleep): Redefine for W32.
+
+       * g10.c, options.h: Set new flag opt.no_homedir_creation when
+       --no-options is given.
+       * openfile.c (try_make_homedir): Don't create the homedir in that case.
+
+2001-08-03  Werner Koch  <wk@gnupg.org>
+
+       * armor.c (armor_filter): Removed the default comment string
+       because it could get us in trouble due to translations using non
+       ascii characters.
+
+2001-08-01  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (list_keyblock_print): Do not list revoked UIDs unless
+       in verbose mode and we do no signature listing.
+
+       * getkey.c (finish_lookup): Skip subkeys which are not yet valid.
+       * g10.c, options.h: New option --ignore-valid-from.
+
+       * sign.c (make_keysig_packet): Added new sigversion argument to
+       allow the caller to force generation of required signature
+       version. Changed all callers. Suggested by Thomas Roessler.
+
+       * keyedit.c (sign_uids): Force v4 signature generation for local
+       sigs.  Removed the check for local signature and pre-v4 keys.
+
+2001-07-27  Werner Koch  <wk@gnupg.org>
+
+       * keyedit.c (sign_uids): Check that we are not trying to to a
+       lsign with a pre-v4 key.  Bug noticed by Thomas Roessler.
+
+2001-07-26  Werner Koch  <wk@gnupg.org>
+
+       * parse-packet.c (parse_photo_id): Reset all variables.
+       * getkey.c (merge_selfsigs_main): Removed checks on PHOTO_ID
+       because this is handled identically to a user ID.
+
+2001-07-06  Werner Koch  <wk@gnupg.org>
+
+       * cipher.c (write_header): Don't use MDC with --rfc1991.  Suggested
+       by disastry@saiknes.lv.
+
+2001-07-05  Werner Koch  <wk@gnupg.org>
+
+       * g10.c, options.h: New option --preserve-permissions.
+       * ringedit.c (add_keyblock_resource): Use it here
+       (keyring_copy): and here.
+
+       * trustdb.c (verify_own_keys): Be more silent on --quiet.
+       Suggested by Thomas Roessler.
+       * sig-check.c (check_key_signature2): Ditto.
+       * mainproc.c (proc_encrypted, proc_tree): Ditto
+       * getkey.c (lookup): Ditto.
+
+2001-07-04  Werner Koch  <wk@gnupg.org>
+
+       * ringedit.c (add_keyblock_resource): Restore filename in case of error.
+
+2001-06-25  Werner Koch  <wk@gnupg.org>
+
+       * kbnode.c (dump_kbnode): Print the signature timestamp.
+
+       * keyedit.c (keyedit_menu): New menu point "primary".
+       (change_primary_uid_cb): New.
+       (menu_set_primary_uid): New.
+       * sign.c (update_keysig_packet): New.
+       * build-packet.c (build_sig_subpkt): Put the primary UID flag into
+       the hashed area. Allow update of some more packets.
+
+2001-06-15  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (merge_selfsigs): Exit gracefully when a secret key is
+       encountered.  May happen if a secret key is in public keyring.
+       Reported by Francesco Potorti.
+       
+2001-06-12  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (compare_name): Use ascii_memistr(), ascii_memcasecmp()
+       * keyedit.c (keyedit_menu): Use ascii_strcasecmp().
+       * armor.c (radix64_read): Use ascii_toupper().  
+       * ringedit.c (do_bm_search): Ditto.
+       * keygen.c (read_parameter_file): Ditto.
+       * openfile.c (CMP_FILENAME): Ditto.
+       * g10.c (i18n_init): We can now use just LC_ALL.
+
+2001-05-29  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (generate_subkeypair): Print a warning if a subkey is
+       created on a v3 key. Suggested by Brian M. Carlson.
+
+2001-05-27  Werner Koch  <wk@gnupg.org>
+
+       * keyid.c (get_lsign_letter): New.
+       * keylist.c (list_keyblock_colon): Use it here.
+       * mainproc.c (list_node): and here.
+
+       * getkey.c, packet.h, free-packet.c: Removed that useless key
+       created field; I dunno why I introducded this at all - the
+       creation time is always bound to the key packet and subject to
+       fingerprint calculation etc.
+
+       * getkey.c (fixup_uidnode): Add keycreated arg and use this
+       instead of the signature timestamp to calculate the
+       help_key_expire.  Bug reported by David R. Bergstein.
+       (merge_selfsigs_main): Correct key expiration time calculation.
+       (merge_selfsigs_subkey): Ditto.
+
+2001-05-25  Werner Koch  <wk@gnupg.org>
+
+       * revoke.c (gen_revoke): Add a cast to a tty_printf arg.
+       * delkey.c (do_delete_key): Ditto.
+       * keyedit.c (print_and_check_one_sig): Ditto.
+       (ask_revoke_sig): Ditto.
+       (menu_revsig): Ditto.
+       (check_all_keysigs): Removed unused arg.
+
+2001-05-23  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (opts): Typo fix by Robert C. Ames.
+
+2001-05-06  Werner Koch  <wk@gnupg.org>
+
+       * revoke.c: Small typo fix
+
+2001-05-04  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c (passphrase_clear_cache): Shortcut if agent usage
+       is not enabled.
+
+2001-05-01  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c (writen): Replaced ssize_t by int.  Thanks to 
+       to Robert Joop for reporting that SunOS 4.1.4 does not have it.
+
+2001-04-28  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (merge_public_with_secret): pkttype was not set to subkey.
+
+2001-04-27  Werner Koch  <wk@gnupg.org>
+
+       * skclist.c (build_sk_list): Changed one log_debug to log_info.
+
+2001-04-25  Werner Koch  <wk@gnupg.org>
+
+       * keyedit.c (show_prefs): Add a verbose mode.
+       (show_key_with_all_names): Pass verbose flag for special value of
+       with_pref.
+       (keyedit_menu): New command "showpref"
+       (show_key_with_all_names): Mark revoked uids and the primary key.
+
+2001-04-24  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (get_primary_uid): Return a different string in case of
+       error and made it translatable.
+
+       * build-packet.c (do_secret_key): Ugly, we wrote a zero
+       instead of the computed ndays.  Thanks to M Taylor for complaining
+       about a secret key import problem.
+
+2001-04-23  Werner Koch  <wk@gnupg.org>
+
+       * hkp.c (hkp_ask_import): Allow to specify a port number for the 
+       keyserver.  Add a kudge to set the no_shutdown flag.
+       (hkp_export): Ditto.
+       * options.skel: Document the changes 
+
+2001-04-20  Werner Koch  <wk@gnupg.org>
+
+       * options.skel: Add some more comments.
+
+2001-04-19  Werner Koch  <wk@gnupg.org>
+
+       * keyid.c (mk_datestr): New.  Handles negative times.  We must do
+       this because Windoze segvs on negative times passed to gmtime().
+       Changed all datestr_from function to use this one.
+
+       * keyid.c, keyid.h (colon_strtime): New. To implement the
+       fixed-list-mode.
+       (colon_datestr_from_pk): New.
+       (colon_datestr_from_sk): New.
+       (colon_datestr_from_sig): New.
+       * keylist.c (list_keyblock_colon): Use these functions here.
+       * mainproc.c (list_node): Ditto.
+
+2001-04-18  Werner Koch  <wk@gnupg.org>
+
+       * openfile.c (open_sigfile): Fixed the handling of ".sign".
+       * mainproc.c (proc_tree): Use iobuf_get_real_fname.
+       Both are by Vincent Broman.
+
+2001-04-14  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (fixup_uidnode): Removed check for !sig which is
+       pointless here.  Thanks to Jan Niehusmann.
+
+2001-04-10  Werner Koch  <wk@gnupg.org>
+
+       * sig-check.c (check_key_signature2): Use log_info instead of
+       log_error so that messed up keys do not let gpg return an error.
+       Suggested by Christian Kurz.
+
+       * getkey.c (merge_selfsigs_main): Do a fixup_uidnode only if we
+       have both, uid and sig.  Thanks to M Taylor.
+
+2001-04-05  Werner Koch  <wk@gnupg.org>
+
+       * armor.c (unarmor_pump_new,unarmor_pump_release): New.
+       (unarmor_pump): New. 
+       * pipemode.c (pipemode_filter): Use the unarmor_pump to handle
+       armored or non-armored detached signatures.  We can't use the
+       regular armor_filter becuase this does only chack for armored
+       signatures the very first time.  In pipemode we may have a mix of
+       armored and binary detached signatures.
+       * mainproc.c (proc_tree): Do not print the "old style" notice when
+       this is a pipemode processes detached signature.
+       (proc_plaintext): Special handling of pipemode detached sigs.
+
+       * packet.h (CTRLPKT_PLAINTEXT_MARK): New.
+       * parse-packet.c (create_gpg_control): New.
+       * kbnode.c (dump_kbnode): Support it here.
+       * mainproc.c (check_sig_and_print): Fixed the check for bad
+       sequences of multiple signatures.
+       (proc_plaintext): Add the marker packet.
+       (proc_tree): We can now check multiple detached signatures.
+
+2001-04-02  Werner Koch  <wk@gnupg.org>
+
+       The length of encrypted packets for blocksizes != 8 was not
+       correct encoded.  I think this is a minor problem, because we
+       usually use partial length packets.  Kudos to Kahil D. Jallad for
+       pointing this out.
+       * packet.h: Add extralen to PKT_encrypted.
+       * cipher.c (write_header): Set extralen.
+       * build-packet.c (do_encrypted): Use extralen instead of const 10.
+       (do_encrypted_mdc): Ditto.
+       * parse-packet.c (parse_encrypted): Set extralen to 0 because we
+       don't know it here.
+
+2001-03-30  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (premerge_public_with_secret): Changed wording an add
+       the keyID to the info message.
+
+2001-03-29  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (premerge_public_with_secret): Use log_info instead of
+       log_error when no secret key was found for a public one.
+       Fix the usage if the secret parts of a key are not available.
+
+       * openfile.c (ask_outfile_name): Trim spaces.
+       (open_outfile): Allow to enter an alternate filename.  Thanks to
+       Stefan Bellon.
+       * plaintext.c (handle_plaintext): Ditto.
+
+2001-03-28  Werner Koch  <wk@gnupg.org>
+
+       * mainproc.c (do_check_sig): Allow direct key and subkey
+       revocation signature.
+       * sig-check.c (check_key_signature2): Check direct key signatures.
+       Print the signature class along with an error.
+
+2001-03-27  Werner Koch  <wk@gnupg.org>
+
+       * packet.h: Add a missing typedef to an enum.  Thanks to Stefan Bellon.
+
+       * g10.c: New option --no-sig-create-check.
+       * sign.c (do_sign): Implement it here.
+       * g10.c: New option --no-sig-cache.
+       * sig-check.c (check_key_signature2): Implement it here.
+       (cache_selfsig_result): and here.
+
+       * keylist.c (list_keyblock): Removed debugging stuff.
+
+       * getkey.c (cache_public_key): Made global.
+       * keygen.c (write_selfsig, write_keybinding): Cache the new key.
+
+       * getkey.c (key_byname): Add new arg secmode and changed all
+       callers to request explicitly the mode.  Deriving this information
+       from the other supplied parameters does not work if neither pk nor
+       sk are supplied.
+
+2001-03-25  Werner Koch  <wk@gnupg.org>
+
+       * packet.h (ctrlpkttype_t): New.
+       * mainproc.c (add_gpg_control,proc_plaintext,proc_tree): Use the
+       new enum values.
+       * pipemode.c (make_control): Ditto.
+       * armor.c (armor_filter): Ditto.
+
+2001-03-24  Werner Koch  <wk@gnupg.org>
+
+       * sign.c (do_sign): Verify the signature right after creation.
+
+2001-03-23  Werner Koch  <wk@gnupg.org>
+
+       * status.c, status.h (STATUS_UNEXPECTED): New.
+       * mainproc.c (do_proc_packets): And emit it here.
+
+2001-03-21  Werner Koch  <wk@gnupg.org>
+
+       * status.c: Add sys/types.h so that it runs on Ultrix.  Reported
+       by Georg Schwarz.x
+
+       * build-packet.c (build_sig_subpkt): Fixed generaton of packet
+       length header in case where 2 bytes headers are needed.  Thanks to
+       Piotr Krukowiecki.
+
+2001-03-19  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): the default keyring is no always used unless
+       --no-default-keyring is given.  
+
+       * ringedit.c (add_keyblock_resource): invalidate cache after file
+       creation.
+
+2001-03-15  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (ask_algo): Changed the warning of the ElGamal S+E Algo.
+
+       * keylist.c (print_capabilities): New.
+       (list_keyblock_colon): and use it here.
+
+2001-03-13  Werner Koch  <wk@gnupg.org>
+
+       * main.c, options.h: New option --fixed_list_mode.
+       * keylist.c (list_keyblock_colon): use it here.
+
+       * getkey.c (merge_keys_and_selfsig): Divert merging of public keys
+       to the function used in key selection..
+       * keylist.c (is_uid_valid): Removed.
+       (list_keyblock): Splitted into ..
+       (list_keyblock_print, list_keyblock_colon): .. these.
+       functions.  Changed them to use the flags set in the key lookup code.
+       (reorder_keyblock): New, so that primary user IDs are listed first.
+
+       * ringedit.c (keyring_copy): flush the new iobuf chaces before
+       rename or remove operations.  This is mainly needed for W32.
+
+       * hkp.c [HAVE_DOSISH_SYSTEM]: Removed the disabled code because we
+       have now W32 socket support in ../util/http.c
+
+       * skclist.c (key_present_in_sk_list): New.
+       (is_duplicated_entry): New.
+       (build_sk_list): Check for duplicates and do that before unlocking.
+
+2001-03-12  Werner Koch  <wk@gnupg.org>
+
+       * armor.c (parse_header_line): Removed double empty line check.
+       (parse_header_line): Replaced trim_trailing_ws with a counting
+       function so that we can adjust for the next read.
+
+       * options.skel: Fixed 3 typos. By Thomas Klausner. Replaced the
+       keyserver example by a better working server. 
+
+       * parse-packet.c (parse_symkeyenc): Return Invalid_Packet on error.
+       (parse_pubkeyenc): Ditto.
+       (parse_onepass_sig): Ditto.
+       (parse_plaintext): Ditto.
+       (parse_encrypted): Ditto.
+       (parse_signature): Return error at other places too.
+       (parse_key): Ditto.
+       * g10.c (main): Set opt.list_packets to another value when invoked
+       with the --list-packets command.
+       * mainproc.c (do_proc_packets): Don's stop processing when running
+       under --list-packets command.
+
+       * signal.c (do_sigaction): Removed.
+       (init_one_signal): New to replace the above.  Needed to support
+       systems without sigactions. Suggested by Dave Dykstra.
+       (got_fatal_signal,init_signals): Use the above here. 
+       (do_block): Use sigset() if sigprocmask() is not available.
+
+       * armor.c (parse_hash_header): Test on TIGER192, which is the
+       correct value as per rfc2440.  By Edwin Woudt.
+
+2001-03-08  Werner Koch  <wk@gnupg.org>
+
+       * misc.c: Include time.h. By James Troup.
+
+       * getkey.c: Re-enabled the unknown user Id and PK caches and
+       increased their sizes.
+
+       * getkey.c (merge_selfsigs_main): Set expire date and continue
+       processing even if we found a revoked key.
+       (merge_selfsigs_subkeys): Ditto.
+       
+       * packet.h: Add an is_revoked flag to the user_id packet.
+       * getkey.c (fixup_uidnode): Set that flag here.
+       (merge_selfsigs_main): Fix so that the latest signature is used to
+       find the self-signature for an UID.
+       * parse-packet.c (parse_user_id): Zero out all fields.
+       * mainproc.c (check_sig_and_print): Print the primary user ID
+       according the the node flag and then all other non-revoked user IDs.
+       (is_uid_revoked): Removed; it is now handled by the key selection code.
+       
+       Changed the year list of all copyright notices.
+       
+2001-03-07  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (finish_lookup): Print an info message only in verbose mode.
+
+2001-03-05  Werner Koch  <wk@gnupg.org>
+
+       * packet.h: Replaced sigsubpkt_t value 101 by PRIV_VERIFY_CACHE.
+       We have never used the old value, so we can do this without any harm.
+       * parse-packet.c (dump_sig_subpkt): Ditto.
+       (parse_one_sig_subpkt): Parse that new sub packet.
+       * build-packet.c (build_sig_subpkt): Removed the old one from the
+       hashed area.
+       (delete_sig_subpkt): New.
+       (build_sig_subpkt): Allow an update of that new subpkt.
+       * sig-check.c (check_key_signature2): Add verification caching
+       (cache_selfsig_result): New.
+       * export.c (do_export_stream): Delete that sig subpkt before exporting.
+       * import.c (remove_bad_stuff): New.
+       (import): Apply that function to all imported data 
+
+2001-03-03  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c: Introduced a new lookup context flag "exact" and used 
+       it in all place where we once used primary.
+       (classify_user_id2): Replaced the old function and add an extra
+       argument to return whether an exact keyID has been requested.
+       (key_byname): Removed the unused ctx.primary flag
+       (get_seckey_byname2): Ditto.
+       (finish_lookup): Changed debugging output.
+
+2001-03-02  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (list_one): Remove the merge key calls. 
+
+2001-03-01  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (finish_lookup): Don't use it if we no specific usage
+       has been requested.
+       (merge_selfsigs_main): fix UID only if we have an signature.
+       (lookup): Return UNU_PUBKEY etc. instead of NO_PUBKEY if we found
+       a key but the requested usage does not allow this key.
+       * import.c (import_one): Take UNU_PUBKEY into account.
+       * mainproc.c (list_node): Ditto.
+       * keylist.c (list_keyblock): Ditto.
+       * keyedit.c (print_and_check_one_sig): Ditto. 
+
+2001-02-09  Werner Koch  <wk@gnupg.org>
+
+       * delkey.c (delete_key): Removed that silly assert which rendered
+       the whole new stuff meaningless.
+
+2001-02-08  Werner Koch  <wk@gnupg.org>
+
+       * getkey.c (key_byname): It can happen that we have both, sk and pk
+       NULL, fix for that.
+
+       * parse-packet.c (parse_one_sig_subpkt): Add support for
+       primary_uid and key_flags.
+       (can_handle_critical): Ditto
+
+       * parse-packet.c (parse_encrypted): Fixed listing of pktlen for
+       MDC packets.
+
+       * getkey.c: Backported the version of this file from gpg 1.1. this
+       involved some changes in other files too.
+       * parse-packet.c (parse_key): Clear req_usage.
+       * skclist.c (build_sk_list): Use req_usage to pass the usage
+       information to the lookup function.
+       * pkclist.c (build_pk_list): Ditto.
+       * free-packet.c (copy_public_parts_to_secret_key): New.
+       * keydb.h: Add IS_* macros to check the sig_class.
+       * misc.c (openpgp_cipher_test_algo): New.
+       (openpgp_pk_test_algo): New.
+       (openpgp_pk_algo_usage): New.
+       (openpgp_md_test_algo): New.
+       * packet.h: Add a few fields to PKT_{public,secret}_key and
+       PKT_user_id.
+       * seckey-cert.c (do_check): Use the new main_keyid field.
+
+2001-02-04  Werner Koch  <wk@gnupg.org>
+
+       * encr-data.c (decrypt_data): Catch error when we had problems to
+       parse the encrypted packet. By Timo.
+
+2001-01-29  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): --batch does now set nogreeting.
+
+       * delkey.c (do_delete_key): Fixed delete-both functionality.
+
+2001-01-22  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New command --delete-secret-and-public-key.
+       * delkey.c (delete_key): Add new arg allow_both.
+       (do_delete_key): Move most stuff from above to this new function.
+
+2001-01-12  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c (passphrase_to_dek): Use MD5 when IDEA is installed
+       and we have no S2K.
+       * mainproc.c (proc_encrypted): Likewise
+
+2001-01-11  Werner Koch  <wk@gnupg.org>
+
+       * sig-check.c (do_check): Print the signature key expire message
+       only in verbose mode and added the keyID.
+
+2001-01-09  Werner Koch  <wk@gnupg.org>
+
+       * status.c, status.h: New status USERID_HINT. 
+       (write_status_text): Replace LF and CR int text by C-escape sequence.
+
+       * passphrase.c (passphrase_to_dek): Fixed the NEED_PASSPHRASE
+       output.  It does now always print 2 keyIDs.  Emit the new
+       USERID_HINT.
+
+2001-01-08  Werner Koch  <wk@gnupg.org>
+
+       * g10.c, options.h: New option --no-expensive-trust-checks.
+       * keylist.c (list_keyblock): Act on this option.
+
+2001-01-04  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Set homedir only in the pre-parsing phase and
+       replace backslashes in the W32 version.
+
+2001-01-03  Werner Koch  <wk@gnupg.org>
+
+       * status.c, status.h : New status KEY_CREATED
+       * keygen.c (do_generate_keypair,generate_subkeypair): Emit it.
+
+2000-12-28  Werner Koch  <wk@gnupg.org>
+
+       * signal.c (got_fatal_signal): Remove lockfiles here because the
+       atexit stuff does not work due to the use of raise. Suggested by
+       Peter Fales.
+       * gpgv.c (remove_lockfiles): New stub.
+       
+2000-12-19  Werner Koch  <wk@gnupg.org>
+
+       * status.c, status.h (cpr_get_no_help): New.
+       * keyedit.c (keyedit_menu): Use it here because we have our own
+       help list here.
+
+2000-12-18  Werner Koch  <wk@gnupg.org>
+
+       * mainproc.c (print_failed_pkenc): Don't print the sometimes
+       confusing message about unavailabe secret key.  Renamed ...
+       (print_pkenc_list): ... to this and introduced failed arg.
+       (proc_encrypted): Print the failed encryption keys and then
+       the one to be used.
+       (proc_pubkey_enc): Store also the key we are going to use.
+
+       * mainproc.c (check_sig_and_print): Don't list revoked user IDs.
+       (is_uid_revoked): New.
+
+2000-12-08  Werner Koch  <wk@gnupg.org>
+
+       * pipemode.c: Made the command work.  Currently only for
+       non-armored detached signatures.
+       * mainproc.c (release_list): Reset the new pipemode vars.
+       (add_gpg_control): Handle the control packets for pipemode
+       * status.c, status.h: New stati {BEGIN,END}_STREAM.
+
+2000-12-07  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New option --allow-secret-key-import.
+       * import.c (import_keys,import_keys_stream): Honor this option.
+       (import): New arg allow_secret and pass that arg down to ...
+       (import_secret_one): to this and print a warning if secret key
+       importing is not allowed.
+
+2000-12-05  Werner Koch  <wk@gnupg.org>
+
+       * cipher.c (cipher_filter): Moved the end_encryption status ...
+       * encode.c (encode_simple,encode_crypt): to here
+       * sign.c (sign_file): and here.
+
+       * status.c (mywrite): Removed.
+       (get_status_string): Removed the LFs from the strings.
+       (set_status_fd,is_status_enabed,write_status_text,
+       write_status_buffer): Replaced all mywrite by stdio calls and use
+       fdopen to create a strem.  This is needed to make things smoother
+       in the W32 version.
+
+2000-12-04  Werner Koch  <wk@gnupg.org>
+
+       * import.c (merge_blocks): Increment n_sigs for revocations.
+
+2000-11-30  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): Use iobuf_translate_file_handle for all options
+       with filehandles as arguments.  This is function does some magic
+       for the W32 API.
+
+       * verify.c (verify_signatures): Add a comment rant about the
+       detached signature problem.
+       * mainproc.c (proc_tree): Issue an error if a detached signature
+       is assumed but a standard one was found.
+       * plaintext.c (hash_datafiles): Don't fall back to read signature
+       from stdin.
+       * openfile.c (open_sigfile): Print verbose message only if the
+       file could be accessed.
+
+2000-11-24  Werner Koch  <wk@gnupg.org>
+
+       * passphrase.c [HAVE_DOSISH_SYSTEM]: Disabled all the agent stuff.
+
+2000-11-16  Werner Koch  <wk@gnupg.org>
+
+        * g10.c: New option --use-agent
+        * passphrase.c (agent_open,agent_close): New.
+        (agent_get_passphrase,agent_clear_passphrase): New.
+       (passphrase_clear_cache): New.
+        (passphrase_to_dek): Use the agent here.
+       * seckey-cert.c (do_check): Clear cached passphrases.
+
+2000-11-15  Werner Koch  <wk@gnupg.org>
+
+       * status.c (write_status_text): Moved the big switch to ...
+       (get_status_string): ... new function.
+       (write_status_buffer): New.
+
+       * status.c (mywrite): New and replaced all write() by this.
+
+       * status.c, status.h: Add 3 status lcodes for notaions and policy.
+       * mainproc.c (print_notation_data): Do status output of notations.
+       
+2000-11-13  Werner Koch  <wk@gnupg.org>
+
+       * sign.c (clearsign_file): Use LF macro to print linefeed.
+       
+2000-11-11  Paul Eggert  <eggert@twinsun.com>
+
+       Clean up the places in the code that incorrectly use "long" or
+        "unsigned long" for file offsets.  The correct type to use is
+        "off_t".  The difference is important on large-file hosts,
+        where "off_t" is longer than "long".
+
+        * keydb.h (struct keyblock_pos_struct.offset):
+        Use off_t, not ulong, for file offsets.
+        * packet.h (dbg_search_packet, dbg_copy_some_packets,
+        search_packet, copy_some_packets): Likewise.
+        * parse-packet.c (parse, dbg_search_packet, search_packet,
+        dbg_copy_some_packets, copy_some_packets): Likewise.
+        * ringedit.c (keyring_search): Likewise.
+
+        * parse-packet.c (parse): Do not use %lu to report file
+        offsets in error diagnostics; it's not portable.
+        * ringedit.c (keyring_search): Likewise.
+
+2000-11-09  Werner Koch  <wk@gnupg.org>
+
+       * g10.c (main): New option --enable-special-filenames.
+
+2000-11-07  Werner Koch  <wk@gnupg.org>
+       * g10.c (main): New command --pipemode.
+       * pipemode.c: New.
+
+2000-10-23  Werner Koch  <wk@gnupg.org>
+
+       * armor.c (armor_filter): Changed output of hdrlines, so that a CR
+       is emitted for DOS systems.
+
+       * keygen.c (read_parameter_file): Add a cast for isspace().
+
+       * status.c (myread): Use SIGINT instead of SIGHUP for DOS. 
+
+2000-10-19  Werner Koch  <wk@gnupg.org>
+
+       * g10.c: New option --ignore-crc-error
+       * armor.c (invalid_crc): New.
+       (radix64_read): Act on new option.
+
+       * openfile.c (try_make_homedir): Klaus Singvogel fixed a stupid
+       error introduced on Sep 6th. 
+
+2000-10-18  Werner Koch  <wk@gnupg.org>
+
+       * misc.c (print_cipher_algo_note): Don't print the note for AES.
+       Changed wording.
+
+2000-10-16  Werner Koch  <wk@gnupg.org>
+
+       * mainproc.c (do_proc_packets): Hack to fix the problem that
+       signatures are not detected when there is a MDC packet but no
+       compression packet.
+       
+       * g10.c (print_hashline): New.
+       (print_mds): Use above func with --with-colons.
+
+       * mainproc.c (check_sig_and_print): Detect multiple signatures
+       and don't verify them.
+
+2000-10-14  Werner Koch  <wk@gnupg.org>
+
+       * mainproc.c (add_onepass_sig): There is an easier solution to the
+       error fixed yesterday; just check that we only have onepass
+       packets.  However, the other solution provides an cleaner
+       interface and opens the path to get access to other information
+       from the armore headers.
+       (release_list): Reset some more variables.
+
+2000-10-13  Werner Koch  <wk@gnupg.org>
+
+       * mainproc.c (add_gpg_control): New.
+       (do_proc_packets): use it.
+       (proc_plaintext): Changed logic to detect clearsigns.
+       (proc_tree): Check the cleartext sig with some new code.
+
+       * packet.h: New packet PKT_GPG_CONTROL.
+       * parse-packet.c (parse_gpg_control): New.
+       * misc.c (get_session_marker): New.
+       * armor.c (armor_filter): Replaced the faked 1-pass packet by the
+       new control packet.
+
+       * keyedit.c (keyedit_menu): Allow batchmode with a command_fd. 
+       * status.c (my_read): New.
+       (do_get_from_fd): use it.
+
+2000-10-12  Werner Koch  <wk@gnupg.org>
+
+       * keygen.c (keygen_add_std_prefs): Add Rijndael to the prefs.
+
+2000-10-07  Werner Koch  <wk@gnupg.org>
+
+       * gpgv.c: Add more stubs for ununsed code to make the binary smaller.
+
+Wed Oct  4 15:50:18 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * sign.c (hash_for): New arg to take packet version in account, changed
+        call callers.
+
+        * gpgv.c: New.
+        * Makefile.am: Rearranged source files so that gpgv can be build with
+        at least files as possible.
+
+Mon Sep 18 12:13:52 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * hkp.c (not_implemented): Print a notice for W32
+
+Fri Sep 15 18:40:36 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * keygen.c (keygen_add_std_prefs): Changed order of preferences to
+        twofish, cast5, blowfish.
+
+        * pkclist.c (algo_available): Removed hack to disable Twofish.
+
+Thu Sep 14 17:45:11 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * parse-packet.c (dump_sig_subpkt): Dump key flags. Print special
+        warning in case of faked ARRs.
+
+        * getkey.c (finsih_lookup): Hack so that for v4 RSA keys the subkey
+        is used for encryption.
+
+Thu Sep 14 14:20:38 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * g10.c (main): Default S2K algorithms are now SHA1 and CAST5 - this
+        should solve a lot of compatibility problems with other OpenPGP
+        apps because those algorithms are SHOULD and not optional.  The old
+        way to force it was by using the --openpgp option whith the drawback 
+        that this would disable a couple of workarounds for PGP.
+
+        * g10.c (main): Don't set --quite along with --no-tty.  By Frank Tobin.
+
+        * misc.c (disable_core_dump): Don't display a warning here but a return
+        a status value and ...
+        * g10.c (main): ...print warnining here. Suggested by Sam Roberts.
+
+Wed Sep 13 18:12:34 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * keyedit.c (keyedit_menu): Allow to use "debug" on the secret key.
+
+        * ringedit.c (cmp_seckey): Fix for v4 RSA keys.
+        * seckey-cert.c (do_check): Workaround for PGP 7 bug.
+
+Wed Sep  6 17:55:47 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * misc.c (print_pubkey_algo_note): Do not print the RSA notice.
+        * sig-check.c (do_signature_check): Do not emit the RSA status message.
+        * pubkey-enc.c (get_session_key): Ditto.
+
+        * encode.c (encode_simple, encode_crypt): Fix for large files.
+        * sign.c (sign_file): Ditto.
+
+Wed Sep  6 14:59:09 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * passphrase.c (hash_passphrase): Removed funny assert.  Reported by
+        David Mathog.
+
+        * openfile.c (try_make_homedir): Changes for non-Posix systems.
+        * g10.c (main): Take the default homedir from macro.
+
+        * g10.c: The --trusted-key option is back.
+        * trustdb.c (verify_own_key): Handle this option.
+        (add_ultimate_key): Moved stuff from verify_own_key to this new func.
+        (register_trusted_key): New.
+
+Fri Aug 25 16:05:38 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * parse-packet.c (dump_sig_subpkt): Print info about the ARR.
+
+        * openfile.c (overwrite_filep): Always return okay if the file is
+        called /dev/null. 
+        (make_outfile_name): Add ".sign" to the list of know extensions.
+        (open_sigfile): Ditto.
+
+Wed Aug 23 19:52:51 CEST 2000  Werner Koch  <wk@openit.de>
+
+        * g10.c: New option --allow-freeform-uid. By Jeroen C. van Gelderen.
+        * keygen.c (ask_user_id): Implemented here.
+
+Fri Aug  4 14:23:05 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * status.c (do_get_from_fd): Ooops, we used fd instead of opt.command_fd.
+  Thanks to Michael Tokarev.
+
+Tue Aug  1 20:06:23 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * g10.c: New opttion --try-all-secrets on suggestion from Matthias Urlichs.
+  * pubkey-enc.c (get_session_key): Quite easy to implement here.
+
+Thu Jul 27 17:33:04 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * g10.c: New option --merge-only.  Suggested by Brendan O'Dea.
+  * import.c (import_one): Implemented it here
+  (import_secret_one): Ditto.
+  (print_stats): and give some stats.
+
+Thu Jul 27 12:01:00 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * g10.c: New options --show-session-key and --override-session-key
+  * pubkey-enc.c (hextobyte): New.
+  (get_override_session_key): New.
+  * mainproc.c (proc_pubkey_enc): Add session-key stuff.
+  * status.h, status.c (STATUS_SESSION_KEY): New.
+
+Thu Jul 27 10:02:38 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * g10.c (main): Use setmode(O_BINARY) for MSDOS while generating random bytes
+  (print_mds): Likewise for stdin.
+  * plaintext.c (handle_plaintext): Likewise for stdout.
+
+Mon Jul 24 10:30:17 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * keyedit.c (menu_expire): expire date for primary key can be set again.
+
+Wed Jul 19 11:26:43 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * keylist.c (is_uid_valid): New.
+  (list_keyblock): Print validity information for all user IDs.  Note, this
+  has to be done at other places too; for now we have only minimal support.
+
+Wed Jul 12 13:32:06 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * helptext.c, pkclist.c: s/superseeded/superseded/
+
+Mon Jul 10 16:08:57 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * parse-packet.c (enum_sig_subpkt): Fixed testing on crtitical bit in case
+  of a NULL buffer.  Reported by Peter Marschall.
+
+Wed Jul  5 13:28:45 CEST 2000  Werner Koch  <wk@openit.de>
+
+  * keyedit.c, keyid.c: Add some _()
+
+  * argparse.c:  Changed the flag to suppress --version handling to also
+  suppress --help.
+
+Wed Jun 28 11:54:44 CEST 2000  Werner Koch  <wk@openit.de>
 
   * armor.c (armor_filter): Set sigclass to 0 in case of non-dash-escaped
   clearsig.  This makes this mode work again.
@@ -255,7 +6177,7 @@ Fri Jun  9 10:09:52 CEST 2000  Werner Koch  <wk@openit.de>
 
 Wed Jun  7 19:19:09 CEST 2000  Werner Koch  <wk@openit.de>
 
-  * sig-check.c (do_check): Use EMULATE_MDENCODE also on v4 paclets.
+  * sig-check.c (do_check): Use EMULATE_MDENCODE also on v4 packets.
 
 Wed Jun  7 17:25:38 CEST 2000  Werner Koch  <wk@openit.de>
 
@@ -3074,3 +8996,13 @@ Thu Feb 12 22:24:42 1998  Werner Koch  (wk@frodo)
 
        * pubkey-enc.c (get_session_key): rewritten
 
+
+ Copyright 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+
+ This file is free software; as a special exception the author gives
+ unlimited permission to copy and/or distribute it, with or without
+ modifications, as long as this notice is preserved.
+
+ This file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.