Fix for bug 851.
[gnupg.git] / scd / ChangeLog
index aba75ad..166f308 100644 (file)
@@ -1,3 +1,781 @@
+2007-12-10  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_decipher): Take care of cryptograms shiorther
+       that 128 bytes.  Fixes bug#851.
+
+2007-11-14  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main): Pass STANDARD_SOCKET flag to
+       create_server_socket.
+       
+2007-11-13  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (start_connection_thread): Do not call
+       assuan_sock_check_nonce if we are running in --server mode.
+
+2007-11-07  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.h: Remove errors.h.
+
+2007-10-02  Werner Koch  <wk@g10code.com>
+
+       * command.c (cmd_getinfo): Add "pid" subcommand.
+
+2007-10-01  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (create_server_socket): Use Assuan socket wrappers
+       and remove Windows specific code.
+       (socket_nonce): New.
+       (start_connection_thread): Check nonce.
+
+2007-09-14  Marcus Brinkmann  <marcus@g10code.de>
+
+       * scdaemon.c (main): New variable STANDARD_SOCKET, which is 1 for
+       W32 targets.  Use it for create_socket_name.
+
+2007-08-07  Werner Koch  <wk@g10code.com>
+
+       * tlv.c, tlv.h:  Move to ../common/.
+
+2007-08-02  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c: Include gc-opt-flags.h and remove their definition
+       here.
+
+2007-08-01  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (send_le): Implement exact length hack.  Suggested by
+       Sten Lindgren.
+
+2007-07-05  Werner Koch  <wk@g10code.com>
+
+       * command.c (has_option_name, skip_options): New.
+       (cmd_genkey): Add option --timestamp.
+       (cmd_writekey): Enter confidential mode while inquiring the key data.
+
+       * app.c (app_genkey): Add arg CREATETIME.
+       * app-common.h (app_ctx_s): Likewise
+       * app-openpgp.c (do_genkey): Ditto.  Use it.
+
+
+2007-07-04  Werner Koch  <wk@g10code.com>
+
+       * command.c (cmd_getinfo): New subcommand "version".
+
+       * scdaemon.c (TIMERTICK_INTERVAL): New.
+       (handle_connections) [W32]: Enable a dummy sigs event.
+       (handle_connections): Use a proper count for select and not
+       FD_SETSIZE.
+       (fixed_gcry_pth_init, main): Kludge to fix pth initialization.
+
+2007-06-21  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.h (ctrl_t): Remove.  It is now declared in ../common/util.h.
+
+2007-06-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * scdaemon.c (main): Percent escape output of --gpgconf-list.
+
+2007-06-12  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main): Replace some calls by init_common_subsystems.
+
+2007-06-11  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am (scdaemon_LDADD): Use libcommonpth macro.
+
+       * command.c (initialize_module_command): New.
+       * scdaemon.c (main) [W32]: Do not use sigpipe code.
+       (main): Call initialize_module_command.
+
+2007-06-06  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_sign): Fix arithmetic on void*.
+
+       * app.c (dump_mutex_state) [W32]: Handle the W32Pth case.
+
+       * apdu.c: Remove dynload.h.
+
+       * scdaemon.c (i18n_init): Remove.
+
+2007-04-20  Werner Koch  <wk@g10code.com>
+
+       * sc-copykeys.c (my_gcry_logger): Removed.
+       (main): Call setup_libgcrypt_logging helper.
+       * scdaemon.c (my_gcry_logger): Removed.
+       (main): Call setup_libgcrypt_logging helper.
+
+2007-04-03  Werner Koch  <wk@g10code.com>
+
+       * command.c (cmd_getinfo): New subcommand "reader_list".
+       * ccid-driver.c (scan_or_find_devices): Ignore EBUSY in scan mode
+       for special transports.
+
+2007-03-07  Werner Koch  <wk@g10code.com>
+
+       * app-dinsig.c: Include i18n.h.
+       (verify_pin): Support PIN pads.
+       * app-nks.c (verify_pin): Ditto.
+
+       * ccid-driver.c (bulk_in): Handle time extension before checking
+       the message type.
+       (ccid_transceive_secure): Support the Cherry XX44 keyboard.
+       Kudos to the nice folks at Cherry for helping with that.
+
+2007-02-18  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (DEFAULT_PCSC_DRIVER): Add a default for OS X.
+
+2007-01-25  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am (scdaemon_LDADD): Added LIBICONV.  Noted by Billy
+       Halsey.
+
+2006-12-21  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_chv2): Factored most code out into...
+       (verify_a_chv): ... new.
+       (do_sign): Factored verification code out to new function and
+       take care of a keypad entered PIN.
+       (compare_fingerprint): Print an additional diagnostic.
+
+2006-11-28  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (send_le, apdu_send_direct): Increase RESULTLEN to 258 to
+       allow for full 256 byte and the status word.  This might break
+       some old PC/SC drivers or cards, but we will see.  Suggested by
+       Kenneth Wang.
+
+2006-11-23  Werner Koch  <wk@g10code.com>
+
+       * command.c (scd_command_handler): Fixed use of CTRL.
+
+2006-11-21  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am (libexec_PROGRAMS): Put pscs-wrapper into libexec.
+       Renamed to gnupg-pcsc-wrapper.
+       * apdu.c (open_pcsc_reader): Use GNUPG_LIBEXECDIR to accces the
+       wrapper.  Suggested by Eric Dorland.
+
+2006-11-20  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_chv2): Support for keypads (only CHV2).
+
+       * ccid-driver.c (ccid_transceive_secure): Made it work for Kaan
+       and SCM.
+
+2006-11-17  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (scan_or_find_devices): Use DEBUGOUT_2 instead of
+       log_debug.  Removed few other log_debug.
+
+       * iso7816.c (iso7816_check_keypad): Allow for a SW of 0.
+
+       * command.c (pin_cb): New mode to prompt for a keypad entry.
+
+       * scdaemon.c (main) <gpgconf-list>: Add disable-keypad.
+
+2006-11-15  Werner Koch  <wk@g10code.com>
+
+       * app-p15.c (read_ef_odf): Cast one printf arg.
+
+       * scdaemon.h (struct server_control_s): Add field THREAD_STARTUP.
+       * command.c (scd_command_handler): Add new arg CTRL.
+       * scdaemon.c (scd_init_default_ctrl): Made static.
+       (scd_deinit_default_ctrl): New.
+       (start_connection_thread): Call init/deinit of ctrl.
+       (handle_connections): Allocate CTRL.
+
+       * apdu.c (PCSC_ERR_MASK): New.
+       (reset_pcsc_reader, pcsc_get_status, pcsc_send_apdu)
+       (close_pcsc_reader, open_pcsc_reader): Use it after shifting error
+       values.  Reported by Henrik Nordstrom.  Fixes bug #724.
+
+2006-10-24  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.h (GCRY_MD_USER_TLS_MD5SHA1): New.
+       (MAX_DIGEST_LEN): Increased to 36.
+       * app-p15.c (do_sign): Support for TLS_MD5SHA1.
+       (do_auth): Detect TLS_MD5SHA1.
+       (do_sign): Tweaks for that digest.
+
+2006-10-23  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main): New command --gpgconf-test.
+
+2006-10-17  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am (scdaemon_LDADD): Link against libcommonpth.
+
+2006-10-12  Werner Koch  <wk@g10code.com>
+
+       * apdu.c: Include pth.h after unistd.h for the sake of newer Pth
+       versions.
+
+2006-10-11  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_sign): Redirect to do_auth for OpenPGP.3.
+
+2006-10-06  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
+       (scdaemon_LDADD): Ditto.
+
+       * scdaemon.h (send_status_info): Mark with sentinel attribute.
+
+2006-10-02  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c (update_reader_status_file): Increase buffer of
+       NUMBUF2 (fixing typo).
+
+2006-09-24  Marcus Brinkmann  <marcus@g10code.de>
+
+       * app-openpgp.c (do_sign): Advance INDATA by the SHA1 resp. RMD160
+       prefix length.
+
+2006-09-14  Werner Koch  <wk@g10code.com>
+
+       Replaced all call gpg_error_from_errno(errno) by
+       gpg_error_from_syserror().
+
+       * command.c (scd_command_handler): Replaced
+       init_connected_socket_server by init_socket_server_ext.
+
+2006-09-07  Werner Koch  <wk@g10code.com>
+
+       * command.c (update_reader_status_file): Execute an event handler
+       if available.
+
+2006-09-06  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (pcsc_end_transaction): 
+       * pcsc-wrapper.c (pcsc_end_transaction: Fixed dclaration.
+       Reported by Bob Dunlop.
+
+       * scdaemon.h (CTRL,APP): Removed and changed everywhere to
+       ctrl_t/app_t.
+
+       Replaced all Assuan error codes by libgpg-error codes.  Removed
+       all map_to_assuan_status and map_assuan_err.
+       
+       * scdaemon.c (main): Call assuan_set_assuan_err_source to have Assuan
+       switch to gpg-error codes.
+       * command.c (set_error): Adjusted.
+
+2006-09-02  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c (get_reader_slot): Return the slot_table index, not
+       the APDU slot number.
+       (update_reader_status_file): Use the slot_table index in the
+       update_card_removed invocation.
+
+2006-09-01  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c (cmd_getinfo): Handle status command.
+
+2006-08-30  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c (do_reset): Delay resetting CTRL->reader_slot until
+       after update_card_removed invocation.
+
+2006-08-28  Marcus Brinkmann  <marcus@g10code.de>
+
+       * app-openpgp.c (do_decipher, do_sign): Allow "OPENPGP.2"
+       resp. "OPENPGP.1" for KEYIDSTR.
+
+2006-08-21  Werner Koch  <wk@g10code.com>
+
+       * pcsc-wrapper.c (handle_open, handle_close): Reset card and
+       protocol on error/close.
+       (handle_status): Don't set the state if the state is unknown.
+       (handle_reset): Ignore an error if already disconnected.  May
+       happen due to system wake-up after hibernation.  Suggested by Bob
+       Dunlop.
+
+2006-06-28  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_writekey): Fixed computation of memmove
+       length.  This led to garbled keys if E was larger than one byte.
+       Thanks to Achim Pietig for hinting at the garbled E.
+
+2006-06-09  Marcus Brinkmann  <marcus@g10code.de>
+
+       * Makefile.am (scdaemon_LDADD): Add $(NETLIBS).
+
+2006-04-14  Marcus Brinkmann  <marcus@g10code.de>
+
+       * app.c (select_application): Cover up a slot mismatch error in
+       case it happens (it shouldn't happen).
+       (release_application): Use APP->slot.  Lock the reader.
+       (application_notify_card_removed): Lock the reader.
+
+2006-04-11  Werner Koch  <wk@g10code.com>
+
+       * command.c (hex_to_buffer): New.
+       (cmd_apdu): New.
+
+2006-04-03  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c [__GLIBC__]: Default to libpcsclite.so.1.
+
+2006-03-21  Werner Koch  <wk@g10code.com>
+
+       * command.c (cmd_pksign): Add --hash option.
+
+2006-03-01  Werner Koch  <wk@g10code.com>
+
+       * command.c (status_file_update_lock): New.
+       (scd_update_reader_status_file): Use lock and factor existing code
+       out to ..
+       (update_reader_status_file): .. this.
+       (do_reset): Use the lock and call update_reader_status_file.
+
+2006-02-20  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (open_pcsc_reader): Fixed double free.  Thanks to Moritz.
+
+2006-02-09  Werner Koch  <wk@g10code.com>
+
+       * command.c (get_reader_slot, do_reset) 
+       (scd_update_reader_status_file): Rewrote.
+
+       * app.c (release_application): Factored code out to ..
+       (deallocate_app): new function.
+       (select_application): Introduce new saved application stuff.
+       (application_notify_card_removed): New.
+       * command.c (update_card_removed): Call it here.
+       (do_reset): And here.
+
+       * app.c (check_application_conflict): New.
+       * command.c (open_card): Use it here.
+       (cmd_restart): New command.
+
+       * command.c (cmd_lock): Fixed --wait option to actually terminate.
+
+2006-02-08  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (ccid_get_atr): Read Parameter and select T=1
+       using these parameters.
+       (scan_or_find_devices): Check for NULL r_fd.
+
+2006-02-02  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (special_transport): New
+       (ccid_open_reader, do_close_reader, ccid_shutdown_reader)
+       (bulk_out, bulk_in): Add support for CardMan 4040 reader.
+
+       * ccid-driver.c (scan_or_find_devices): Factored most code out to
+       (scan_or_find_usb_device): .. new.
+       (make_reader_id): Fixed vendor mask.
+
+2006-01-01  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_sign): Give user error if hash algorithm is
+       not supported by the card.
+
+2005-12-06  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (open_pcsc_reader): Check that pcsc-wrapper is actually
+       installed.
+
+2005-11-23  Werner Koch  <wk@g10code.com>
+
+       * app-nks.c (verify_pin): Give a special error message for a Nullpin.
+
+2005-10-29  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (send_escape_cmd): New args RESULT, RESULTLEN and
+       RESULTMAX.  Changed all callers.
+       (ccid_transceive_escape): New.
+
+2005-10-27  Werner Koch  <wk@g10code.com>
+
+       * apdu.c [__CYGWIN__]: Make cygwin environment similar to _WIN32.
+       Suggested by John P. Clizbe.
+       * scdaemon.c [__CYGWIN__]: Set default PC/SC driver to winscard.dll.
+
+2005-10-19  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.h (CCID_DRIVER_ERR_NO_KEYPAD): New.
+       * apdu.h (SW_HOST_NO_KEYPAD): New.
+       * iso7816.h (struct iso7816_pininfo_s): New.
+       * iso7816.c (map_sw): Support new code.
+       (iso7816_check_keypad): New.
+       (iso7816_verify_kp, iso7816_change_reference_data_kp) 
+       (iso7816_reset_retry_counter_kp): New.  Extended versions of the
+       original functions.
+       * apdu.c (host_sw_string): Support new code. 
+       (reader_table_s): New field CHECK_KEYPAD.
+       (new_reader_slot, open_ct_reader, open_pcsc_reader) 
+       (open_ccid_reader, open_rapdu_reader): Initialize it.
+       (check_ccid_keypad): New.
+       (apdu_check_keypad): New.
+       (apdu_send_le): Factored all code out to ...
+       (send_le): .. new.  Takes an additional arg; changed all callers
+       of the orginal function to use this one with a NULL for the new
+       arg.
+       (apdu_send_simple_kp): New.
+       (ct_send_apdu, pcsc_send_apdu, my_rapdu_send_apdu) 
+       (send_apdu_ccid): New arg PININFO.
+       (send_apdu_ccid): Use the new arg.
+
+       * scdaemon.c: New option --disable-keypad.
+
+2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
+
+       * Makefile.am (scdaemon_LDADD): Add ../gl/libgnu.a after
+       ../common/libcommon.a.
+
+2005-09-20  Werner Koch  <wk@g10code.com>
+
+       * app-dinsig.c (verify_pin): Try ISO 9564 BCD encoding.
+
+       * iso7816.c (iso7816_select_application): Add arg FLAGS.  Changed
+       all callers to pass 0.
+       * app-openpgp.c (app_select_openpgp): But this one requires a
+       special flag.
+
+       * app-p15.c (app_select_p15): Don't use select application for the
+       BELPIC.
+
+2005-09-09  Werner Koch  <wk@g10code.com>
+
+       * pcsc-wrapper.c (main): Removed bogus free.
+
+       * app-p15.c (do_auth): New.
+       (do_getattr): New attribs $AUTHKEYID and $DISPSERIALNO.
+       * app-openpgp.c (do_getattr): Ditto.
+
+2005-09-08  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_getattr): New key $AUTHKEYID.
+
+2005-09-06  Werner Koch  <wk@g10code.com>
+
+       * app-p15.c (do_sign): Tweaked for BELPIC cards.
+       (read_home_df): New arg R_BELPIC.
+       (app_select_p15): Set card type for BELPIC.
+
+2005-09-05  Werner Koch  <wk@g10code.com>
+
+       * iso7816.c (iso7816_select_path): New.
+       * app-p15.c (select_ef_by_path): Allow for direct path selection.
+       (app_select_p15): Try using the Belgian variant of pkcs#15.
+       (read_home_df): New.
+       (read_ef_odf): Generalized.
+       (read_ef_tokeninfo): New.
+       (read_p15_info): Set serialnumber from TokenInfo.
+       (app_select_p15): Don't munge serialNumber - that must be done
+       only once.
+
+       * iso7816.c (iso7816_read_binary): Use Le=0 when reading all
+       data.  Handle 6C00 error and take 6B00 as indication for EOF.
+       * apdu.h (SW_EXACT_LENGTH_P): New.
+       * apdu.c (new_reader_slot, reset_pcsc_reader, pcsc_get_status) 
+       (open_pcsc_reader): Set new reader state IS_T0.
+       (apdu_send_le): When doing T=0 make sure not to send Lc and Le.
+       Problem reported by Carl Meijer.
+       (apdu_send_direct): Initialize RESULTLEN.
+       * pcsc-wrapper.c (handle_status): Return the current protocol as
+       a new third word.
+
+2005-08-05  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (open_rapdu_reader): Set the reader number.
+
+2005-07-05  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_readkey): Return a mallcoed copy of the key as
+       required by the description.  Thanks to Moritz for tracking this
+       problem down.
+
+2005-06-21  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main): ifdef call to ccid_set_debug_level.
+
+       * apdu.c (reset_pcsc_reader, open_pcsc_reader): Cast size_t to
+       ulong for printf.
+
+2005-06-06  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main): New option --debug-allow-core-dump. 
+
+2005-06-03  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (handle_connections): Make sure that the signals we
+       are handling are not blocked.Block signals while creating new
+       threads.
+       (handle_connections): Include the file descriptor into the name of
+       the thread.
+
+2005-06-02  Werner Koch  <wk@g10code.com>
+
+       * app.c (app_dump_state, dump_mutex_state): New.
+       * scdaemon.c (handle_signal): Print it on SIGUSR1.
+
+       * app-openpgp.c (do_writekey): Typo fix.
+
+       * command.c (open_card): Check for locked state even if an
+       application context is available.
+
+       * app-common.h: Add REF_COUNT field.
+       * app.c (release_application, select_application): Implement
+       reference counting to share the context beween connections.
+
+       * app.c (lock_reader, unlock_reader): Take SLOT instead of APP as
+       argument.  Changed all callers.
+       (select_application): Unlock the reader on error.  This should fix
+       the hangs I noticed last week.
+
+       * scdaemon.h: Removed card_ctx_t cruft.
+
+2005-06-01  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c: Include mkdtemp.h.
+
+2005-05-31  Werner Koch  <wk@g10code.com>
+
+       * tlv.c [GNUPG_MAJOR_VERSION==1]: Define constants instead of
+       including a gnupg 1.4 header.
+
+2005-05-30  Werner Koch  <wk@g10code.com>
+
+       * tlv.c: Add hack to compile without gpg-error.h when used with
+       GnuPG 1.4.
+
+2005-05-23  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am: Do not build sc-copykeys anymore.
+
+       * app-openpgp.c (app_openpgp_storekey, app_openpgp_readkey)
+       (app_openpgp_cardinfo): Removed.
+
+       * ccid-driver.c (parse_ccid_descriptor): SCR335 FW version 5.14 is
+       good.
+       (do_close_reader): Never do a reset. The caller should instead
+       make sure that the reader has been closed properly.  The new retry
+       code in ccid_slot_status will make sure that the readersatrts up
+       fine even if the last process didn't closed the USB connection
+       properly.
+       (ccid_get_atr): For certain readers try switching to ISO mode.
+       Thanks to Ludovic Rousseau for this hint and the magic numbers.
+       (print_command_failed): New.
+       (bulk_in): Use it here. Add new arg NO_DEBUG.
+       (ccid_slot_status): Disabled debugging.
+
+2005-05-21  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (handle_signal): Print thread info on SIGUSR1.
+
+2005-05-20  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c: Replaced macro DEBUG_T1 by a new debug level.
+       (parse_ccid_descriptor): Mark SCR335 firmware version 5.18 good.
+       (ccid_transceive): Arghhh.  The seqno is another bit in the
+       R-block than in the I block, this was wrong at one place.
+
+       * scdaemon.c: New options --debug-ccid-driver and
+       --debug-disable-ticker.
+
+       * app-openpgp.c (do_genkey, do_writekey): Factored code to check
+       for existing key out into ..
+       (does_key_exist): .. New function.
+
+2005-05-19  Werner Koch  <wk@g10code.com>
+
+       * tlv.c (parse_sexp): New.
+
+       * command.c (cmd_writekey): New.
+       * app.c (app_writekey): New.
+       * app-common.c (app_t): Add function ptr WRITEKEY.
+       * app-openpgp.c (do_writekey): New.
+
+       * app-openpgp.c (do_readkey) [GNUPG_MAJOR_VERSION==1]: Return error.
+       * app-common.h (app_t) [GNUPG_MAJOR_VERSION==1]: Add a field to
+       store the Assuan context.
+
+2005-05-17  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c: Removed non-pth code paths.
+       (create_socket_name, create_server_socket): New.  Taken from
+       ../agent/gpg-agent.
+       (cleanup): Changed to adjust for SOCKET_NAME now being malloced.
+       (ticker_thread): Always use pth_event_occurred; it is again
+       defined for all decent PTH versions.
+       (handle_connections): New. Based on the gpg-agent code.
+       (start_connection_thread): Ditto.
+       (ticker_thread): Removed.
+       (cleanup_sh): Removed.
+       (main): Run the handler for the pipe server in a separate
+       thread.  This replaces the old ticker thread.
+       (scd_get_socket_name): New.
+       * command.c (cmd_getinfo): New command GETINFO.
+       (scd_command_handler): Renamed argument and changed code to use an
+       already connected FD.
+
+2005-05-15  Werner Koch  <wk@g10code.com>
+
+       * app.c, app-common.h, app-nks.c, app-p15.c, app-dinsig.c
+       * app-openpgp.c: Change most function return types from int to
+       gpg_error_t.
+       * command.c (pin_cb): Ditto.
+       * sc-copykeys.c (pincb): Ditto.
+
+       * app.c (lock_reader, unlock_reader): New.  Changed call handler
+       wrappers to make use of these functions.
+
+2005-05-07  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (do_close_reader): Don't do a reset before close.
+       Some folks reported that it makes the SCR335 hang less often.
+       Look at the source on how to re-enable it.
+
+2005-04-27  Werner Koch  <wk@g10code.com>
+
+       * app-p15.c (micardo_mse): New.
+       (do_sign): Call it.
+       * iso7816.c (iso7816_manage_security_env): Allow passing DATA as
+       NULL to indicate an empty Lc.
+       * tlv.c (find_tlv): Check that a found object fits into the
+       buffer.
+       (find_tlv_unchecked): New as replacement for the old non-checking
+       variant.
+       * app.c (select_application): Keep on using the non-checking
+       variant.
+       * app-openpgp.c (get_one_do, dump_all_do): Ditto.
+
+       
+       Removal of the old OpenSC based code.
+       
+       * app-p15.c: New.  Basic support for pkcs15 cards without OpenSC.
+       There are quite a couple of things missing but at least I can use
+       my old TCOS cards from the Aegypten-1 development for signing.
+       * app.c (select_application): Detect pkcs15 applications.
+       * Makefile.am (scdaemon_SOURCES): Removed card.c, card-common.h
+       and card-p15.c because they are now obsolete. Added app-p15.c.
+       Removed all OpenSC stuff.
+       * command.c (do_reset, open_card, cmd_serialno, cmd_learn) 
+       (cmd_readcert, cmd_readkey, cmd_pksign, cmd_pkdecrypt): Removed
+       all special cases for the old card.c based mechanisms.
+       * scdaemon.c, apdu.c: Removed all special cases for OpenSC.
+
+2005-04-20  Werner Koch  <wk@g10code.com>
+
+       * command.c: Use GPG_ERR_LOCKED instead of EBUSY.
+
+2005-04-14  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (retrieve_key_material): Rewritten.  Return a
+       proper error code.
+       (retrieve_next_token): Removed.
+       (retrieve_fpr_from_card): Rewritten to make use of DO caching and
+       to take the KEYNO as arg.
+       (get_public_key): Renamed variable for clarity.
+
+2005-04-12  Werner Koch  <wk@g10code.com>
+
+       Basic support for several sessions.
+       
+       * command.c (scd_command_handler): Replace the primary_connection
+       stuff by a real connection list.  Release the local context on
+       exit.
+       (scd_update_reader_status_file): Update accordingly.  Send signal
+       to all connections who registered an event signal.
+       (cmd_lock, cmd_unlock, register_commands): New commands LOCK and
+       UNLOCK.
+       (cmd_setdata, cmd_pksign, cmd_pkauth, cmd_pkdecrypt, cmd_setattr) 
+       (cmd_genkey, cmd_passwd, cmd_checkpin): Return an error if reader
+       is locked.
+       (do_reset): Handle locking.
+       (open_card): Ditto.  Share the reader slot with other sessions.
+       (get_reader_slot): New.
+       (update_card_removed): New.  Use it in the TEST_CARD_REMOVAL macro.
+
+2005-04-07  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_check_pin): Add hack to allow verification of
+       CHV3.
+       (get_public_key): Don't use gcry functions to create S-expressions.
+       (do_deinit, do_readkey, do_genkey, send_keypair_info): Adjust for
+       above change.
+
+2005-03-29  Moritz Schulte  <moritz@g10code.com>
+
+       * app-openpgp.c (retrieve_fpr_from_card): New function.
+       (retrieve_next_token): New function.
+       (retrieve_key_material): New function.
+       (get_public_key): Implement retrival of key through expernal
+       helper (gpg) in case the openpgp card is not cooperative enough.
+
+2005-03-16  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
+       reader type specific.
+       (scan_or_find_devices): Do not check the interface subclass in the
+       SPR532 kludge, as this depends on the firmware version.
+       (ccid_get_atr): Get the Slot status first.  This solves the
+       problem with readers hanging on recent Linux 2.6.x.
+       (bulk_in): Add argument TIMEOUT and changed all callers to pass an
+       appropriate one.  Change the standard timeout from 10 to 5 seconds.
+       (ccid_slot_status): Add a retry code with an initial short timeout.
+       (do_close_reader): Do an usb_reset before closing the reader.
+
+2005-02-25  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (get_public_key): Make sure not to return negative
+       numbers.
+       (do_sign): Allow passing of indata with algorithm prefix.
+       (do_auth): Allow OPENPGP.3 as an alternative ID.
+
+       * app.c (app_getattr): Return just the S/N but not the timestamp.
+
+2005-02-24  Werner Koch  <wk@g10code.com>
+
+       * app.c (app_getattr): Return APPTYPE or SERIALNO type even if the
+       application does dot support the getattr call.
+
+       * app-openpgp.c (get_one_do): Never try to get a non cacheable
+       object from the cache.
+       (get_one_do): Add new arg to return an error code.  Changed all
+       callers.
+       (do_getattr): Let it return a proper error code.
+
+       * app.c (select_application): Return an error code and the
+       application context in an new arg.
+       * command.c (open_card): Adjusted for that.  Don't use the
+       fallback if no card is present.  Return an error if the card has
+       been removed without a reset.
+       (do_reset, cmd_serialno): Clear that error flag.
+       (TEST_CARD_REMOVAL): New. Use it with all command handlers.
+       (scd_update_reader_status_file): Set the error flag on all changes.
+
+       * scdaemon.c (ticker_thread): Termintate if a shutdown is pending.
+
+       * apdu.c: Added some PCSC error codes.
+       (pcsc_error_to_sw): New.
+       (reset_pcsc_reader, pcsc_get_status, pcsc_send_apdu) 
+       (open_pcsc_reader): Do proper error code mapping.
+
+2005-03-16  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
+       reader type specific.
+       (scan_or_find_devices): Do not check the interface subclass in the
+       SPR532 kludge, as this depends on the firmware version.
+       (ccid_get_atr): Get the Slot status first.  This solves the
+       problem with readers hanging on recent Linux 2.6.x.
+
+2005-02-22  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (app_local_s): New field PK.
+       (do_deinit, do_genkey, app_openpgp_storekey): Clear it.
+       (get_public_key, send_keypair_info): New.
+       (do_learn_status): Send KEYPAIR info
+
+       * app-common.h (app_ctx_t): Add function pointer READKEY.
+       * app.c (app_readkey): New.
+       * command.c (cmd_readkey): Use READKEY function if possible.
+
 2005-01-26  Werner Koch  <wk@g10code.com>
 
        * ccid-driver.c (parse_ccid_descriptor): Need the CSM workaround
        side effect of the retrieval of the the C4 DO from the 6E DO the
        cached fingerprint will get updated to the old value and later
        when signing the generated key the checking of the fingerprint
-       fails becuase it won't match the new one.  Thanks to Moritz for
+       fails because it won't match the new one.  Thanks to Moritz for
        analyzing this problem.
        (verify_chv3): Removed the CHV status reread logic because we
        won't cache the C4 DO anymore.
        * scdaemon.c scdaemon.h, command.c: New. Based on the code from
        the gpg-agent.
 
- Copyright 2002 Free Software Foundation, Inc.
+       
+ Copyright 2002, 2003, 2004, 2005, 2007 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