A whole bunch of changes to allow building for W32.
[gnupg.git] / sm / ChangeLog
index 59a6b32..096c4ca 100644 (file)
@@ -1,3 +1,555 @@
+2004-12-15  Werner Koch  <wk@g10code.com>
+
+       * misc.c (setup_pinentry_env) [W32]: Don't use it.
+
+       * gpgsm.c (main) [W32]: Init Pth because we need it for the socket
+       operations and to resolve libassuan symbols.
+       (run_protect_tool) [W32]: Disable it.
+
+       * Makefile.am (gpgsm_LDADD): Move LIBASSUAN_LIBS more to the end.
+
+2004-12-07  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am (gpgsm_LDADD): Put libassuan before jnlib because
+       under W32 we need the w32 pth code from jnlib.
+
+       * misc.c (setup_pinentry_env) [W32]: Disabled.
+
+2004-12-06  Werner Koch  <wk@g10code.com>
+
+       * gpgsm.c (run_protect_tool) [_WIN32]: Disabled.
+
+       * import.c (popen_protect_tool): Simplified by making use of
+       gnupg_spawn_process.
+       (parse_p12): Likewise, using gnupg_wait_process.
+       * export.c (popen_protect_tool): Ditto.
+       (export_p12): Ditto.
+
+       * keydb.c: Don't define DIRSEP_S here.
+
+2004-12-02  Werner Koch  <wk@g10code.com>
+
+       * certchain.c (gpgsm_basic_cert_check): Dump certs with bad
+       signature for debugging.
+       (gpgsm_validate_chain): Ditto.
+
+2004-11-29  Werner Koch  <wk@g10code.com>
+
+       * gpgsm.c (set_debug): Changed to use a globals DEBUG_LEVEL and
+       DEBUG_VALUE.
+       (main): Made DEBUG_LEVEL global and introduced DEBUG_VALUE.  This
+       now allows to add debug flags on top of a debug-level setting.
+
+2004-11-23  Werner Koch  <wk@g10code.com>
+
+       * gpgsm.c: New option --prefer-system-dirmngr.
+       * call-dirmngr.c (start_dirmngr): Implement this option.
+
+2004-10-22  Werner Koch  <wk@g10code.com>
+
+       * certreqgen.c (gpgsm_genkey): Remove the NEW from the certificate
+       request PEM header.  This is according to the Sphinx standard.
+
+2004-10-08  Moritz Schulte  <moritz@g10code.com>
+
+       * certchain.c (gpgsm_validate_chain): Do not use keydb_new() in
+       case the no_chain_validation-return-short-cut is used (fixes
+       memory leak).
+
+2004-10-04  Werner Koch  <wk@g10code.com>
+
+       * misc.c (setup_pinentry_env): Try hard to set a default for GPG_TTY.
+
+2004-09-30  Werner Koch  <wk@g10code.com>
+
+       * gpgsm.c (i18n_init): Always use LC_ALL.
+
+       * certdump.c (gpgsm_format_name): Factored code out to ..
+       (gpgsm_format_name2): .. new.
+       (gpgsm_print_name): Factored code out to ..
+       (gpgsm_print_name2): .. new.
+       (print_dn_part): New arg TRANSLATE.  Changed all callers.
+       (print_dn_parts): Ditto.
+       (gpgsm_format_keydesc): Do not translate the SUBJECT; we require
+       it to stay UTF-8 but we still want to filter out bad control
+       characters.
+
+       * Makefile.am: Adjusted for gettext 0.14.
+
+       * keylist.c (list_cert_colon): Make sure that the expired flag has
+       a higher precedence than the invalid flag. 
+
+2004-09-29  Werner Koch  <wk@g10code.com>
+
+       * import.c (parse_p12): Write an error status line for bad
+       passphrases. Add new arg CTRL and changed caller.
+       * export.c (export_p12): Likewise.
+
+2004-09-14  Werner Koch  <wk@g10code.com>
+
+       * certchain.c (gpgsm_validate_chain): Give expired certificates a
+       higher error precedence and don't bother to check any CRL in that
+       case.
+
+2004-08-24  Werner Koch  <wk@g10code.de>
+
+       * certlist.c: Fixed typo in ocsp OID.
+
+2004-08-18  Werner Koch  <wk@g10code.de>
+
+       * certlist.c (gpgsm_cert_use_ocsp_p): New.
+       (cert_usage_p): Support it here.
+       * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use it here.
+
+2004-08-17  Marcus Brinkmann  <marcus@g10code.de>
+
+       * import.c: Fix typo in last change.
+
+2004-08-17  Werner Koch  <wk@g10code.de>
+
+       * import.c (check_and_store): Do a full validation if
+       --with-validation is set.
+
+       * certchain.c (gpgsm_basic_cert_check): Print more detailed error
+       messages.
+       
+       * certcheck.c (do_encode_md): Partly support DSA.  Add new arg
+       PKALGO. Changed all callers to pass it.
+       (pk_algo_from_sexp): New.
+
+2004-08-16  Werner Koch  <wk@g10code.de>
+
+       * gpgsm.c: New option --fixed-passphrase.
+       * import.c (popen_protect_tool): Pass it to the protect-tool.
+
+       * server.c (cmd_encrypt): Use DEFAULT_RECPLIST and not recplist
+       for encrypt-to keys.
+
+2004-08-06  Werner Koch  <wk@g10code.com>
+
+       * gpgsm.c: New option --with-ephemeral-keys.
+       * keylist.c (list_internal_keys): Set it here.
+       (list_cert_raw): And indicate those keys.  Changed all our callers
+       to pass the new arg HD through.
+
+2004-07-23  Werner Koch  <wk@g10code.de>
+
+       * certreqgen.c (proc_parameters): Do not allow key length below
+       1024.
+
+2004-07-22  Werner Koch  <wk@g10code.de>
+
+       * keylist.c (list_cert_raw): Print the keygrip.
+
+2004-07-20  Werner Koch  <wk@gnupg.org>
+
+       * certchain.c (gpgsm_validate_chain): The trust check didn't
+       worked anymore, probably due to the changes at 2003-03-04.  Fixed.
+
+2004-06-06  Werner Koch  <wk@gnupg.org>
+
+       * certreqgen.c (get_parameter_uint, create_request): Create
+       an extension for key usage when requested. 
+
+2004-05-12  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (main): Install emergency_cleanup also as an atexit
+       handler.
+
+       * verify.c (gpgsm_verify): Removed the separate error code
+       handling for KSBA.  We use shared error codes anyway.
+
+       * export.c (export_p12): Removed debugging code.
+
+       * encrypt.c (gpgsm_encrypt): Put the session key in to secure memory.
+
+2004-05-11  Werner Koch  <wk@gnupg.org>
+
+       * sign.c (gpgsm_sign): Include the error source in the final error
+       message.
+       * decrypt.c (gpgsm_decrypt): Ditto.
+
+       * fingerprint.c (gpgsm_get_key_algo_info): New.
+       * sign.c (gpgsm_sign): Don't assume RSA in the status line.
+       * keylist.c (list_cert_colon): Really print the algorithm and key
+       length.
+       (list_cert_raw, list_cert_std): Ditto.
+       (list_cert_colon): Reorganized to be able to tell whether a root
+       certificate is trusted.
+
+       * gpgsm.c: New option --debug-allow-core-dump.
+
+       * gpgsm.h (opt): Add member CONFIG_FILENAME.
+       * gpgsm.c (main): Use it here instead of the local var.
+
+       * server.c (gpgsm_server): Print some additional information with
+       the hello in verbose mode.
+
+2004-04-30  Werner Koch  <wk@gnupg.org>
+
+       * import.c (check_and_store): Do not update the stats for hidden
+       imports of issuer certs.
+       (popen_protect_tool): Request statusmessages from the protect-tool.
+       (parse_p12): Detect status messages. Add new arg STATS and update them.
+       (print_imported_summary): Include secret key stats.
+
+2004-04-28  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c: New command --keydb-clear-some-cert-flags.
+       * keydb.c (keydb_clear_some_cert_flags): New.
+       (keydb_update_keyblock, keydb_set_flags): Change error code
+       CONFLICT to NOT_LOCKED.
+
+2004-04-26  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (main) <gpgconf>: Do not use /dev/null as default config
+       filename.
+
+       * call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt) 
+       (gpgsm_agent_genkey, gpgsm_agent_istrusted) 
+       (gpgsm_agent_marktrusted, gpgsm_agent_havekey) 
+       (gpgsm_agent_passwd): Add new arg CTRL and changed all callers.
+       (start_agent): New arg CTRL.  Send progress item when starting a
+       new agent.
+       * sign.c (gpgsm_get_default_cert, get_default_signer): New arg
+       CTRL to be passed down to the agent function.
+       * decrypt.c (prepare_decryption): Ditto.
+       * certreqgen.c (proc_parameters, read_parameters): Ditto.
+       * certcheck.c (gpgsm_create_cms_signature): Ditto.
+
+2004-04-23  Werner Koch  <wk@gnupg.org>
+
+       * keydb.c (keydb_add_resource): Try to compress the file on init.
+
+       * keylist.c (oidtranstbl): New.  OIDs collected from several sources.
+       (print_name_raw, print_names_raw, list_cert_raw): New.
+       (gpgsm_list_keys): Check the dump mode and pass it down as
+       necessary.
+
+2004-04-22  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (main): New commands --dump-keys, --dump-external-keys,
+       --dump-secret-keys.
+
+2004-04-13  Werner Koch  <wk@gnupg.org>
+
+       * misc.c (setup_pinentry_env): New.
+       * import.c (popen_protect_tool): Call it.
+       * export.c (popen_protect_tool): Call it.
+
+2004-04-08  Werner Koch  <wk@gnupg.org>
+
+       * decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a 
+       encrypted message.
+
+2004-04-07  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c: New option --force-crl-refresh.
+       * call-dirmngr.c (gpgsm_dirmngr_isvalid): Pass option to dirmngr.
+
+2004-04-05  Werner Koch  <wk@gnupg.org>
+
+       * server.c (get_status_string): Add STATUS_NEWSIG.
+       * verify.c (gpgsm_verify): Print STATUS_NEWSIG for each signature.
+
+       * certchain.c (gpgsm_validate_chain) <gpgsm_cert_use_cer_p>: Do
+       not just warn if a cert is not suitable; bail out immediately.
+
+2004-04-01  Werner Koch  <wk@gnupg.org>
+
+       * call-dirmngr.c (isvalid_status_cb): New.
+       (unhexify_fpr): New. Taken from ../g10/call-agent.c
+       (gpgsm_dirmngr_isvalid): Add new arg CTRL, changed caller to pass
+       it thru.  Detect need to check the respondert cert and do that.
+       * certchain.c (gpgsm_validate_chain): Add new arg FLAGS.  Changed
+       all callers.
+
+2004-03-24  Werner Koch  <wk@gnupg.org>
+
+       * sign.c (gpgsm_sign): Include a short list of capabilities.
+
+2004-03-17  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (main) <gpgconf>: Fixed default value quoting.
+
+2004-03-16  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (main): Implemented --gpgconf-list.
+
+2004-03-15  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (list_cert_colon): Hack to set the expired flag.
+
+2004-03-09  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (main): Correctly intitialze USE_OCSP flag.
+
+       * keydb.c (keydb_delete): s/GPG_ERR_CONFLICT/GPG_ERR_NOT_LOCKED/
+
+2004-03-04  Werner Koch  <wk@gnupg.org>
+
+       * call-dirmngr.c (gpgsm_dirmngr_isvalid): New arg ISSUER_CERT.
+
+       * certchain.c (is_cert_still_valid): New.  Code moved from ...
+       (gpgsm_validate_chain): ... here because we now need to check at
+       two places and at a later stage, so that we can pass the issuer
+       cert down to the dirmngr.
+
+2004-03-03  Werner Koch  <wk@gnupg.org>
+
+       * call-agent.c (start_agent): Replaced pinentry setup code by a
+       call to a new common function.
+
+       * certdump.c (gpgsm_format_keydesc): Make sure the string is
+       returned as utf-8.
+
+       * export.c (gpgsm_export): Make sure that we don't export more
+       than one certificate.
+
+2004-03-02  Werner Koch  <wk@gnupg.org>
+
+       * export.c (create_duptable, destroy_duptable)
+       (insert_duptable): New.
+       (gpgsm_export): Avoid duplicates.
+
+2004-02-26  Werner Koch  <wk@gnupg.org>
+
+       * certchain.c (compare_certs): New.
+       (gpgsm_validate_chain): Fixed infinite certificate checks after
+       bad signatures.
+
+2004-02-24  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (list_cert_colon): Print the fingerprint as the
+       cert-id for root certificates.
+
+2004-02-21  Werner Koch  <wk@gnupg.org>
+
+       * keylist.c (list_internal_keys): Return error codes.
+       (list_external_keys, gpgsm_list_keys): Ditto.
+       * server.c (do_listkeys): Ditto.
+
+       * gpgsm.c (main): Display a key description for --passwd.
+       * call-agent.c (gpgsm_agent_passwd): New arg DESC.
+
+2004-02-20  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (main): New option --debug-ignore-expiration.
+       * certchain.c (gpgsm_validate_chain): Use it here.
+
+       * certlist.c (cert_usage_p): Apply extKeyUsage.
+
+2004-02-19  Werner Koch  <wk@gnupg.org>
+
+       * export.c (export_p12, popen_protect_tool)
+       (gpgsm_p12_export): New.
+       * gpgsm.c (main): New command --export-secret-key-p12. 
+
+2004-02-18  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (set_debug): Set the new --debug-level flags.
+       (main): New option --gpgconf-list.  
+       (main): Do not setup -u and -r keys when not required.
+       (main): Setup the used character set.
+
+       * keydb.c (keydb_add_resource): Print a hint to start the
+       gpg-agent.
+
+2004-02-17  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c: Fixed value parsing for --with-validation.
+       * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
+       * call-dirmngr.c (start_dirmngr): Likewise for DIRMNGR_INFO.
+
+       * gpgsm.c: New option --with-md5-fingerprint.
+       * keylist.c (list_cert_std): Print MD5 fpr.
+
+       * gpgsm.c: New options --with-validation.
+       * server.c (option_handler): New option "with-validation".
+       * keylist.c (list_cert_std, list_internal_keys): New args CTRL and
+       WITH_VALIDATION. Changed callers to set it.
+       (list_external_cb, list_external_keys): Pass CTRL to the callback.
+       (list_cert_colon): Add arg CTRL.  Check validation if requested.
+       * certchain.c (unknown_criticals, allowed_ca, check_cert_policy) 
+       (gpgsm_validate_chain): New args LISTMODE and FP.
+       (do_list): New helper for info output.
+       (find_up): New arg FIND_NEXT.
+       (gpgsm_validate_chain): After a bad signature try again with other
+       CA certificates.
+
+       * import.c (print_imported_status): New arg NEW_CERT. Print
+       additional STATUS_IMPORT_OK becuase that is what gpgme expects.
+       (check_and_store): Always call above function after import.
+       * server.c (get_status_string): Added STATUS_IMPORT_OK.
+
+2004-02-13  Werner Koch  <wk@gnupg.org>
+
+       * certcheck.c (gpgsm_create_cms_signature): Format a description
+       for use by the pinentry.
+       * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
+       * certdump.c (format_name_cookie, format_name_writer) 
+       (gpgsm_format_name): New.
+       (gpgsm_format_serial): New.
+       (gpgsm_format_keydesc): New.
+       * call-agent.c (gpgsm_agent_pksign): New arg DESC.
+       (gpgsm_agent_pkdecrypt): Ditto.
+
+       * encrypt.c (init_dek): Check for too weak algorithms.
+
+       * import.c (parse_p12, popen_protect_tool): New.
+
+       * base64.c (gpgsm_create_reader): New arg ALLOW_MULTI_PEM.
+       Changed all callers.
+       (base64_reader_cb): Handle it here.
+       (gpgsm_reader_eof_seen): New.
+       (base64_reader_cb): Set a flag for EOF.
+       (simple_reader_cb): Ditto.
+
+2004-02-12  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.h, gpgsm.c: New option --protect-tool-program.
+       * gpgsm.c (run_protect_tool): Use it.
+
+2004-02-11  Werner Koch  <wk@gnupg.org>
+
+       * Makefile.am (AM_CPPFLAGS): Pass directory constants via -D; this
+       will allow to override directory names at make time.
+
+2004-02-02  Werner Koch  <wk@gnupg.org>
+
+       * import.c (check_and_store): Import certificates even with
+       missing issuer's cert.  Fixed an "depending on the verbose
+       setting" bug.
+
+       * certchain.c (gpgsm_validate_chain): Mark revoked certs in the
+       keybox.
+
+       * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a
+       revoked flag.
+       (list_internal_keys): Retrieve validity flag.
+       (list_external_cb): Pass 0 as validity flag.
+       * keydb.c (keydb_get_flags, keydb_set_flags): New.
+       (keydb_set_cert_flags): New.
+       (lock_all): Return a proper error code.
+       (keydb_lock): New.
+       (keydb_delete): Don't lock but check that it has been locked.
+       (keydb_update_keyblock): Ditto.
+       * delete.c (delete_one): Take a lock.
+
+2004-01-30  Werner Koch  <wk@gnupg.org>
+
+       * certchain.c (check_cert_policy): Fixed read error checking.
+       (check_cert_policy): With no critical policies issue only a
+       warning if the policy file does not exists.
+
+       * sign.c (add_certificate_list): Decrement N for the first cert.
+
+2004-01-29  Werner Koch  <wk@gnupg.org>
+
+       * certdump.c (parse_dn_part): Map common OIDs to human readable
+       labels.  Make sure that a value won't get truncated if it includes
+       a Nul.
+
+2004-01-28  Werner Koch  <wk@gnupg.org>
+
+       * certchain.c (gpgsm_validate_chain): Changed the message printed
+       for an untrusted root certificate.
+
+2004-01-27  Werner Koch  <wk@gnupg.org>
+
+       * certdump.c (parse_dn_part): Pretty print the nameDistinguisher OID.
+       (print_dn_part): Do not delimit multiple RDN by " + ".  Handle
+       multi-valued RDNs in a special way, i.e. in the order specified by
+       the certificate.
+       (print_dn_parts): Simplified. 
+
+2004-01-16  Werner Koch  <wk@gnupg.org>
+
+       * sign.c (gpgsm_sign): Print an error message on all failures.
+       * decrypt.c (gpgsm_decrypt): Ditto.
+
+2003-12-17  Werner Koch  <wk@gnupg.org>
+
+       * server.c (gpgsm_server): Add arg DEFAULT_RECPLIST.
+       (cmd_encrypt): Add all enrypt-to marked certs to the list.
+       * encrypt.c (gpgsm_encrypt): Check that real recipients are
+       available.
+       * gpgsm.c (main): Make the --encrypt-to and --no-encrypt-to
+       options work.  Pass the list of recients to gpgsm_server.
+       * gpgsm.h (certlist_s): Add field IS_ENCRYPT_TO.
+       (opt): Add NO_ENCRYPT_TO.
+       * certlist.c (gpgsm_add_to_certlist): New arg IS_ENCRYPT_TO.
+       Changed all callers and ignore duplicate entries.
+       (is_cert_in_certlist): New.
+       (gpgsm_add_cert_to_certlist): New.
+
+       * certdump.c (gpgsm_print_serial): Cleaned up cast use in strtoul.
+       (gpgsm_dump_serial): Ditto.
+
+       * decrypt.c (gpgsm_decrypt): Replaced ERR by RC.
+
+2003-12-16  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c (main): Set the prefixes for assuan logging.
+
+       * sign.c (gpgsm_sign): Add validation checks for the default
+       certificate.
+
+       * gpgsm.c: Add -k as alias for --list-keys and -K for
+       --list-secret-keys.
+
+2003-12-15  Werner Koch  <wk@gnupg.org>
+
+       * encrypt.c (init_dek): 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.
+
+2003-12-01  Werner Koch  <wk@gnupg.org>
+
+       * gpgsm.c, gpgsm.h: New options --{enable,disable}-ocsp.
+       (gpgsm_init_default_ctrl): Set USE_OCSP to the default value.
+       * certchain.c (gpgsm_validate_chain): Handle USE_OCSP.
+       * call-dirmngr.c (gpgsm_dirmngr_isvalid): Add arg USE_OCSP and
+       proceed accordingly.
+
+2003-11-19  Werner Koch  <wk@gnupg.org>
+
+       * verify.c (gpgsm_verify): Use "0" instead of an empty string for
+       the VALIDSIG status.
+
+2003-11-18  Werner Koch  <wk@gnupg.org>
+
+       * verify.c (gpgsm_verify): Fixed for changes API of gcry_md_info.
+
+       * certchain.c (unknown_criticals): Fixed an error code test.
+
+2003-11-12  Werner Koch  <wk@gnupg.org>
+
+       Adjusted for API changes in Libksba.
+
+2003-10-31  Werner Koch  <wk@gnupg.org>
+
+       * certchain.c (gpgsm_validate_chain): Changed to use ksba_isotime_t.
+       * verify.c (strtimestamp_r, gpgsm_verify): Ditto.
+       * sign.c (gpgsm_sign): Ditto.
+       * keylist.c (print_time, list_cert_std, list_cert_colon): Ditto.
+       * certdump.c (gpgsm_print_time, gpgsm_dump_time, gpgsm_dump_cert):
+       Ditto.
+
+2003-10-25  Werner Koch  <wk@gnupg.org>
+
+       * certreqgen.c (read_parameters): Fixed faulty of !spacep().
+
+2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
+
+       * encrypt.c (encode_session_key): Allocate enough space.  Cast key
+       byte to unsigned char to prevent sign extension.
+       (encrypt_dek): Check return value before error.
+
+2003-08-14  Timo Schulz  <twoaday@freakmail.de>
+
+       * encrypt.c (encode_session_key): Use new Libgcrypt interface.
+       
 2003-07-31  Werner Koch  <wk@gnupg.org>
 
        * Makefile.am (gpgsm_LDADD): Added INTLLIBS.