Various changes
[gnupg.git] / scd / ChangeLog
index eba39c7..9f6a0f5 100644 (file)
@@ -1,3 +1,640 @@
+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
+       also for newer firmware versions.  Need to get a list of fixed
+       firmware versions and use that.
+
+2005-01-25  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (apdu_send_le, apdu_send_direct): Fix some compiler
+       warnings.
+
+       * app-openpgp.c (get_cached_data): New arg GET_IMMEDIATE to bypass
+       the cache.  Changed all callers.
+       (get_one_do): Bypass the cache if the value would have been read
+       directly for v1.1 cards.It makes things a bit slower but obnly for
+       1.0 cards and there are not that many cards out in the wild.  This
+       is required to fix a caching bug when generating new keys; as a
+       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 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.
+
+2004-12-28  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (find_endpoint): New.
+       (scan_or_find_devices): Add new args to return endpoint info and
+       interface number.
+       (ccid_open_reader, ccid_shutdown_reader): Take care of these new
+       args.
+       (bulk_in, bulk_out): Use the correct endpoints.
+       (ccid_transceive_apdu_level): New.
+       (ccid_transceive): Divert to above.
+       (parse_ccid_descriptor): Allow APDU level exchange mode.
+       (do_close_reader): Pass the interface number to usb_release_interface.
+
+2004-12-21  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main): Use default_homedir().
+
+2004-12-18  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main) [W32]: Remove special Pth initialize..
+
+       * scdaemon.h (map_assuan_err): Define in terms of
+       map_assuan_err_with_source.
+
+2004-12-15  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c [W32]: Various hacks to make it run under W32.
+
+       * command.c (scd_update_reader_status_file) [W32]: Don't use kill.
+
+       * apdu.c [W32]: Disable use of pcsc_wrapper.
+
+       * Makefile.am (scdaemon_LDADD): Reorder libs.
+       (sc_copykeys_LDADD): Add libassuan because it is needed for W32. 
+
+2004-12-06  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am (pkglib_PROGRAMS): Build only for W32.
+
+2004-10-22  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_chv3): The minium length for CHV3 is
+       8. Changed string to match the other ones.
+
+2004-10-21  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_sign): Replace asprintf by direct allocation.
+       This avoids problems with missing vasprintf implementations in
+       gnupg 1.4.
+
+       * app-common.h (app_openpgp_storekey: Add prototype. 
+
 2004-10-20  Werner Koch  <wk@g10code.com>
 
        * sc-investigate: Removed.
        * 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 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