2004-02-12  Werner Koch  <wk@gnupg.org>

	* Makefile.am: Include cmacros.am for common flags.

2004-01-29  Werner Koch  <wk@gnupg.org>

	* command.c (reset_notify): Release the application context and
	close the reader.

2004-01-28  Werner Koch  <wk@gnupg.org>

	* iso7816.c (iso7816_manage_security_env): New.
	(iso7816_decipher): Add PADIND argument.

2004-01-27  Werner Koch  <wk@gnupg.org>

	* command.c (cmd_readcert, cmd_readkey): Work on a copy of LINE.

	* app-common.h (app_ctx_s): Added readcert field.
	* app.c (app_readcert): New.
	* tlv.c (parse_ber_header): Added; taken from libksba.

2004-01-26  Werner Koch  <wk@gnupg.org>

	* card.c (map_sc_err): Use SCD as the error source.

	* command.c (open_card): ADD arg NAME to allow requesting a
	specific application.  Changed all callers.
	(cmd_serialno): Allow optional argument to select the desired
	application.

	* app-nks.c: New. 

	* scdaemon.h (opt): Add READER_PORT.
	* scdaemon.c (main): Set it here.
	* app.c (app_set_default_reader_port): Removed.
	(select_application): Add NAME arg and figure out a
	default serial number from the GDO. Add SLOT arg and remove all
	reader management.
	(release_application): New.
	(app_write_learn_status): Output an APPTYPE status line.
	* command.c (open_card): Adapt for select_application change.
	* app-openpgp.c (app_select_openpgp): Removed SN and SNLEN args
	and set it directly.  Changed all callers.

2004-01-25  Werner Koch  <wk@gnupg.org>

	* iso7816.c (iso7816_select_application): P1 kludge for OpenPGP
	card.
	* app-openpgp.c (find_tlv): Factor out this function to ..
	* tlv.c, tlv.h: .. new.

	* scdaemon.h: Introduced app_t and ctrl_t as the new types for APP
	and CTRL.

2004-01-21  Werner Koch  <wk@gnupg.org>

	* apdu.c (apdu_send_le): Treat SW_EOF_REACHED as a warning.

2004-01-20  Werner Koch  <wk@gnupg.org>

	* iso7816.c (iso7816_read_binary): New.
	(iso7816_select_file): New.
	(iso7816_list_directory): New.

	* sc-investigate.c: Add option -i.
	(select_app, read_line, interactive_shell): New.

2004-01-16  Werner Koch  <wk@gnupg.org>

	* apdu.h: Add SW_FILE_NOT_FOUND.
	* iso7816.c (map_sw): Map it to GPG_ERR_ENOENT.
	* iso7816.c (iso7816_select_file): New.

	* app-dinsig.c: New file w/o any real code yet.
	* Makefile.am (scdaemon_SOURCES,sc_investigate_SOURCES): Add file.

	* sc-investigate.c: Add option --disable-ccid.

2003-12-19  Werner Koch  <wk@gnupg.org>

	* apdu.c (apdu_send_le): Send a get_response with the indicated
	length and not the 64 bytes we used for testing.

	* app-openpgp.c (verify_chv2, verify_chv3, do_sign): Check the
	minimum length of the passphrase, so that we don't need to
	decrement the retry counter.

2003-12-17  Werner Koch  <wk@gnupg.org>

	* card-p15.c (p15_enum_keypairs): Replaced KRC by RC.
	* card-dinsig.c (dinsig_enum_keypairs): Ditto.

2003-12-16  Werner Koch  <wk@gnupg.org>

	* scdaemon.c (main): Set the prefixes for assuan logging.

2003-11-17  Werner Koch  <wk@gnupg.org>

	* scdaemon.c, scdaemon.h: New options --allow-admin and --deny-admin.
	* app-openpgp.c (verify_chv3): Check it here.

2003-11-12  Werner Koch  <wk@gnupg.org>

	Adjusted for API changes in Libksba.

2003-10-30  Werner Koch  <wk@gnupg.org>

	* apdu.c (close_ct_reader, close_pcsc_reader): Implemented.
	(get_ccid_error_string): New.  Not very useful messages, though.

2003-10-25  Werner Koch  <wk@gnupg.org>

	* ccid-driver.c (ccid_open_reader): Return an error if no USB
	devices are found.

	* command.c (cmd_genkey, cmd_passwd): Fixed faulty use of
	!spacep().

	* apdu.c (apdu_open_reader): Hacks for PC/SC under Windows.

2003-10-20  Werner Koch  <wk@gnupg.org>

	* command.c (cmd_checkpin): New.
	(register_commands): Add command CHECKPIN.
	* app.c (app_check_pin): New.
	* app-openpgp.c (check_against_given_fingerprint): New. Factored
	out that code elsewhere.
	(do_check_pin): New.

2003-10-10  Werner Koch  <wk@gnupg.org>

	* ccid-driver.c (ccid_close_reader): New.

	* apdu.c (close_ccid_reader, close_ct_reader, close_csc_reader)
	(close_osc_reader, apdu_close_reader): New.  Not all are properly
	implemented yet.

2003-10-09  Werner Koch  <wk@gnupg.org>

	* ccid-driver.c (ccid_transceive): Add T=1 chaining for sending.

2003-10-08  Werner Koch  <wk@gnupg.org>

	* app-openpgp.c (do_getattr): Support SERIALNO and AID.

2003-10-01  Werner Koch  <wk@gnupg.org>

	* ccid-driver.c: Detect GnuPG 1.3 and include appropriate files.
	* apdu.c: Ditto.
	* app-openpgp.c: Ditto.
	* iso7816.c: Ditto.
	(generate_keypair): Renamed to ..
	(do_generate_keypair): .. this.
	* app-common.h [GNUPG_MAJOR_VERSION]: New.
	* iso7816.h [GNUPG_MAJOR_VERSION]: Include cardglue.h

2003-09-30  Werner Koch  <wk@gnupg.org>

	* command.c (cmd_getattr): New command GETATTR.
	* app.c (app_setattr): New.
	(do_getattr): New.
	(do_learn_status): Reimplemented in terms of do_getattr.

	* app-openpgp.c (do_change_pin): Make sure CVH1 and CHV2 are
	always synced.
	(verify_chv2, verify_chv3): New. Factored out common code.
	(do_setattr, do_sign, do_auth, do_decipher): Change the names of
	the prompts to match that we have only 2 different PINs.
	(app_select_openpgp): Check whether the card enforced CHV1.
	(convert_sig_counter_value): New. Factor out code from
	get_sig_counter.

2003-09-28  Werner Koch  <wk@gnupg.org>

	* app-openpgp.c (dump_all_do): Use gpg_err_code and not gpg_error.

2003-09-19  Werner Koch  <wk@gnupg.org>

	* ccid-driver.c (parse_ccid_descriptor): New.
	(read_device_info): New.
	(ccid_open_reader): Check that the device has all required features.

2003-09-06  Werner Koch  <wk@gnupg.org>

	* scdaemon.c (main): --pcsc-driver again defaults to pcsclite.
	David Corcoran was so kind to remove the GPL incompatible
	advertisng clause from pcsclite.
	* apdu.c (apdu_open_reader): Actually make pcsc-driver option work.

2003-09-05  Werner Koch  <wk@gnupg.org>

	* ccid-driver.c: More work, data can now actually be retrieved.
	* ccid-driver.c, ccid-driver.h: Alternativley allow use under BSD
	conditions.

2003-09-02  Werner Koch  <wk@gnupg.org>

	* scdaemon.c, scdaemon.h: New option --pcsc-ccid.
	* ccid-driver.c, ccid-driver.h: New but far from being useful.
	* Makefile.am: Add above.
	* apdu.c: Add support for that ccid driver.
	
2003-08-26  Timo Schulz  <twoaday@freakmail.de>

	* apdu.c (new_reader_slot): Only set 'is_osc' when OpenSC
	is used.
	
2003-08-25  Werner Koch  <wk@gnupg.org>

	* command.c (cmd_setattr): Use a copy of LINE.
	(cmd_genkey): Use a copy of KEYNO.
	(cmd_passwd): Use a copy of CHVNOSTR.
	(cmd_pksign, cmd_pkauth, cmd_pkdecrypt): s/strdup/xtrystrdup/.

2003-08-19  Werner Koch  <wk@gnupg.org>

	* scdaemon.c, scdaemon.h: New option --pcsc-driver.
	* apdu.c (apdu_open_reader): Use that option here instead of a
	hardcoded one.

2003-08-18  Werner Koch  <wk@gnupg.org>

	* Makefile.am: Add OPENSC_LIBS to all programs. 

	* scdaemon.c, scdaemon.h: New option --disable-opensc.
	* card.c (card_open): Implement it.
	* apdu.c (open_osc_reader, osc_send_apdu): New.
	(apdu_open_reader) [HAVE_OPENSC]: Use the opensc driver if not
	disabled.
	(error_string) [HAVE_OPENSC]: Use sc_strerror.
	(send_apdu) [HAVE_OPENSC]: Call osc_apdu_send.

	* card-p15.c (p15_enum_keypairs, p15_prepare_key): Adjusted for
	libgpg-error.

2003-08-14  Timo Schulz  <twoaday@freakmail.de>

	* apdu.c (ct_activate_card): Change the code a little to avoid
	problems with other readers.
	* Always use 'dynload.h' instead of 'dlfcn.h'.

2003-08-05  Werner Koch  <wk@gnupg.org>

	* app-openpgp.c (dump_all_do): Don't analyze constructed DOs after
	an error.

2003-08-04  Werner Koch  <wk@gnupg.org>

	* app.c (app_set_default_reader_port): New.
	(select_application): Use it here.
	* scdaemon.c (main): and here.
	* sc-copykeys.c: --reader-port does now take a string.
	* sc-investigate.c, scdaemon.c: Ditto.
	* apdu.c (apdu_open_reader): Ditto.  Load pcsclite if no ctapi
	driver is configured.  Always include code for ctapi.
	(new_reader_slot): Don't test for already used ports and remove
	port arg.
	(open_pcsc_reader, pcsc_send_apdu, pcsc_error_string): New.
	(apdu_send_le): Changed RC to long to cope with PC/SC.

	* scdaemon.c, scdaemon.h: New option --ctapi-driver.
	* sc-investigate.c, sc-copykeys.c: Ditto.
	
2003-07-31  Werner Koch  <wk@gnupg.org>

	* Makefile.am (scdaemon_LDADD): Added INTLLIBS.

2003-07-28  Werner Koch  <wk@gnupg.org>

	* app-openpgp.c (do_setattr): Change implementation.  Allow all
	useful DOs.

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>

	* app-openpgp.c (do_learn_status): Print more status information.
	(app_select_openpgp): Store the card version.
	(store_fpr): Add argument card_version and fix DOs for old cards.
	(app_openpgp_storekey): Likewise.

2003-07-23  Werner Koch  <wk@gnupg.org>

	* command.c (cmd_pkauth): New.
	(cmd_setdata): Check whether data was given at all to avoid
	passing 0 to malloc.

	* app.c (app_auth): New.
	* app-openpgp.c (do_auth): New.

2003-07-22  Werner Koch  <wk@gnupg.org>

	* command.c (cmd_passwd): New.
	* app.c (app_change_pin): New.
	* app-openpgp.c (do_change_pin): New.
	* iso7816.c (iso7816_reset_retry_counter): Implemented.

	* sc-investigate.c (main): New option --gen-random.
	* iso7816.c (iso7816_get_challenge): Don't create APDUs with a
	length larger than 255.

2003-07-17  Werner Koch  <wk@gnupg.org>

	* command.c (cmd_random): New command RANDOM.

	* iso7816.c (map_sw): New. Use it in this file to return
	meaningful error messages.  Changed all public fucntions to return
	a gpg_error_t.
	(iso7816_change_reference_data): New.
	* apdu.c (apdu_open_reader): Use faked status words for soem
	system errors.

2003-07-16  Werner Koch  <wk@gnupg.org>

	* apdu.c (apdu_send_simple): Use apdu_send_le so that we can
	specify not to send Le as it should be.

2003-07-15  Werner Koch  <wk@gnupg.org>

	* Makefile.am: Add sc-copykeys program.
	* sc-copykeys.c: New.
	* app-openpgp.c (app_openpgp_storekey): New.
	(app_openpgp_cardinfo): New.
	(count_bits): New.
	(store_fpr): And use it here to get the actual length in bit.

2003-07-03  Werner Koch  <wk@gnupg.org>

	* app-openpgp.c (do_setattr): Add setting of the URL.
	(app_select_openpgp): Dump card data only in very verbose mode.
	(do_decipher): New.

2003-07-02  Werner Koch  <wk@gnupg.org>

	* app-openpgp.c (get_sig_counter): New.
	(do_sign): Print the signature counter and enable the PIN callback.
	(do_genkey): Implement the PIN callback. 

2003-07-01  Werner Koch  <wk@gnupg.org>

	* app-openpgp.c (store_fpr): Fixed fingerprint calculation.

2003-06-26  Werner Koch  <wk@gnupg.org>

	* app-openpgp.c (find_tlv): Fixed length header parsing.

	* app.c (app_genkey): New.
	* command.c (cmd_genkey): New.

2003-06-25  Werner Koch  <wk@gnupg.org>

	* command.c (percent_plus_unescape): New.
	(cmd_setattr): New.

2003-06-24  Werner Koch  <wk@gnupg.org>

	* command.c (send_status_info): New.

	* app-openpgp.c (app_select_openpgp): Replace SLOT arg by APP arg
	and setup the function pointers in APP on success. Changed callers.
	* app.c: New.
	* app-common.h: New.
	* scdaemon.h (APP): New type to handle applications.
	(server_control_s): Add an APP context field.

	* command.c (cmd_serialno): Handle applications.
	(cmd_pksign): Ditto.
	(cmd_pkdecrypt): Ditto.
	(reset_notify): Ditto.
	(cmd_learn): For now return error for application contexts.
	(cmd_readcert): Ditto.
	(cmd_readkey): Ditto.

2003-06-04  Werner Koch  <wk@gnupg.org>

	* card.c (map_sc_err): Renamed gpg_make_err to gpg_err_make.

	Renamed error codes from INVALID to INV and removed _ERROR suffixes.

2003-06-03  Werner Koch  <wk@gnupg.org>

	Changed all error codes in all files to the new libgpg-error scheme.

	* scdaemon.h: Include gpg-error.h and errno.h
	* card.c (map_sc_err): Use unknown for the error source.
	* Makefile.am: Link with libgpg-error

2003-05-14  Werner Koch  <wk@gnupg.org>

	* atr.c, atr.h: New.
	* sc-investigate.c: Dump the ATR in a human readable format.

2003-05-08  Werner Koch  <wk@gnupg.org>

	* scdaemon.h (DBG_CARD_IO_VALUE): New.

	* sc-investigate.c: New.
	* scdaemon.c (main): Removed --print-atr option.

	* iso7816.c, iso7816.h, app-openpgp.c: New.

2003-04-29  Werner Koch  <wk@gnupg.org>

	* scdaemon.c: New options --print-atr and --reader-port
	* apdu.c, apdu.h: New

	* card.c, card-p15.c, card-dinsig.c: Allow build without OpenSC.
	
	* Makefile.am (LDFLAGS): Removed.

	* command.c (register_commands): Adjusted for new Assuan semantics.

2002-08-21  Werner Koch  <wk@gnupg.org>

	* scdaemon.c (main): New option --daemon so that the program is
	not accidently started in the background.

2002-08-16  Werner Koch  <wk@gnupg.org>

	* scdaemon.c: Include i18n.h.

	* card-common.h (struct p15_private_s): Forward declaration.  Add
	it to card_ctx_s.
	* card.c (card_close): Make sure private data is released.
	(card_enum_certs): New.
	* card-p15.c (p15_release_private_data): New.
	(init_private_data): New to work around an OpenSC weirdness.
	(p15_enum_keypairs): Do an OpenSC get_objects only once.
	(p15_enum_certs): New.
	(card_p15_bind): Bind new function.
	* command.c (cmd_learn): Return information about the certificates.

2002-08-09  Werner Koch  <wk@gnupg.org>

	* card.c (card_get_serial_and_stamp): Use the tokeinfo serial
	number as a fallback. Add a special prefix for serial numbers.

2002-07-30  Werner Koch  <wk@gnupg.org>

        Changes to cope with OpenSC 0.7.0:
	
	* card.c: Removed the check for the packed opensc version.
	Changed include file names of opensc.
	(map_sc_err): Adjusted error codes for new opensc version.
	* card-p15.c: Changed include filename of opensc.
	* card-dinsig.c: Ditto.

	* card-p15.c (p15_decipher): Add flags argument to OpenSC call.
	
2002-07-24  Werner Koch  <wk@gnupg.org>

	* card.c (find_simple_tlv, find_iccsn): New.
	(card_get_serial_and_stamp): Improved serial number parser.

2002-06-27  Werner Koch  <wk@gnupg.org>

	* scdaemon.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.

2002-06-15  Werner Koch  <wk@gnupg.org>

	* card-dinsig.c: Documented some stuff from the DIN norm.

2002-04-15  Werner Koch  <wk@gnupg.org>

	* command.c (cmd_pksign, cmd_pkdecrypt): Use a copy of the key ID.

2002-04-12  Werner Koch  <wk@gnupg.org>

	* scdaemon.c: New option --debug-sc N.
	* card.c (card_open): set it here.

	* card-p15.c (p15_prepare_key): Factored out common code from ...
	(p15_sign, p15_decipher): here and made the decryption work the
	regular way.

2002-04-10  Werner Koch  <wk@gnupg.org>

	* card.c (card_open): Return immediately when no reader is available.

2002-03-27  Werner Koch  <wk@gnupg.org>

	* card.c (card_open, card_close): Adjusted for changes in OpenSC.

2002-03-10  Werner Koch  <wk@gnupg.org>

	* card-p15.c, card-dinsig.c, card-common.h: New.
	* card.c: Factored most code out to the new modules, so that we
	can better support different types of card applications.

2002-01-26  Werner Koch  <wk@gnupg.org>

	* scdaemon.c scdaemon.h, command.c: New. Based on the code from
	the gpg-agent.

 Copyright 2002 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.
