Replace use stdio by estream functions.
[gnupg.git] / scd / ChangeLog
index 19bba2b..91694a0 100644 (file)
+2009-12-15  Werner Koch  <wk@g10code.com>
+
+       * iso7816.c (do_generate_keypair): s/readonly/read_only/ because
+       the first is a keyword in VMS C.
+
+2009-12-03  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (set_debug): Allow for numerical debug leveles.  Print
+       active debug flags.
+
+2009-11-25  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c (scd_command_handler): Use assuan_fd_t and
+       assuan_fdopen on fds.
+
+2009-11-05  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c (scd_command_handler): Call assuan_init_socket_server,
+       not assuan_init_socket_server_ext.
+
+2009-11-04  Werner Koch  <wk@g10code.com>
+
+       * command.c (register_commands): Add help arg to
+       assuan_register_command.  Add help strings to all commands.
+
+2009-11-02  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c (reset_notify): Take LINE arg and return error.
+       (register_commands): Use assuan_handler_t type.
+
+2009-10-25  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (scd_deinit_default_ctrl): Release IN_DATA.
+       * command.c (cmd_setdata): Release IN_DATA.  Reported by Klaus
+       Flittner.
+
+2009-10-16  Marcus Brinkmann  <marcus@g10code.com>
+
+       * AM_CFLAGS, scdaemon_LDADD: Use libassuan instead of libassuan-pth.
+       * scdaemon.c: Invoke ASSUAN_SYSTEM_PTH_IMPL.
+       (main): Call assuan_set_system_hooks and assuan_sock_init.
+
+2009-09-23  Marcus Brinkmann  <marcus@g10code.de>
+
+       * command.c: Include "scdaemon.h" before <assuan.h> because of
+       GPG_ERR_SOURCE_DEFAULT check.
+       (option_handler, open_card, cmd_serialno, cmd_lean, cmd_readcert)
+       (cmd_readkey, cmd_setdata, cmd_pksign, cmd_pkauth, cmd_pkdecrypt)
+       (cmd_getattr, cmd_setattr, cmd_writecert, cmd_writekey)
+       (cmd_genkey, cmd_random, cmd_passwd, cmd_checkpin, cmd_lock)
+       (cmd_unlock, cmd_getinfo, cmd_restart, cmd_disconnect, cmd_apdu)
+       (cmd_killscd): Return gpg_error_t instead of int.
+       (scd_command_handler): Allocate assuan context before starting server.
+       * scdaemon.c (main): Update to new Assuan API.
+
+2009-09-03  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_decipher): Compute required Le.
+       * iso7816.c (iso7816_decipher): Add new arg LE.
+       * app-nks.c (do_decipher): Adjust for change.
+
+       * iso7816.c (iso7816_put_data, iso7816_put_data_odd): Turn DATA
+       into a void ptr.
+
+2009-08-05  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (change_keyattr_from_string): New.
+       (do_setattr): Support KEY-ATTR.
+
+2009-07-29  Marcus Brinkmann  <marcus@g10code.com>
+
+       * ccid-driver.c (print_pr_data): Fix 64 bit compat problem.
+
+2009-07-24  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (parse_ccid_descriptor): Enable hack for SCR 3320.
+
+2009-07-21  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c [HAVE_PTH]: Include pth.h.
+       (my_sleep): New.
+       (bulk_in): s/gnupg_sleep/my_sleep/.
+
+2009-07-20  Werner Koch  <wk@g10code.com>
+
+       * apdu.c [GNUPG_MAJOR_VERSION==1]: Include dynload.h.
+
+2009-07-16  Werner Koch  <wk@g10code.com>
+
+       * command.c (update_reader_status_file): Test for unplugged reader.
+       (TEST_CARD_REMOVAL): Ditto.
+       * app.c (select_application): Ditto.
+       * ccid-driver.c (bulk_out): Return CCID_DRIVER_ERR_NO_READER if a
+       reader was unplugged.
+       (struct ccid_driver_s): Turn nonnull_nad into an unsigned char.
+       Turn apdu_level, auto_ifsd, powered_off, has_pinpad into
+       bitfields. Add enodev_seen.
+       * apdu.c (apdu_prepare_exit): New.
+       (get_status_ccid): Return the status word and nut just -1.
+       * scdaemon.c (scd_exit): Call it.
+
+2009-07-13  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (struct ccid_driver_s): Add fields last_progress,
+       progress_cb and progress_cb_arg.
+       (ccid_set_progress_cb): New.
+       (print_progress): New.
+       (ccid_transceive): Call print_progress for wait time extensions.
+       * apdu.c (struct reader_table_s): Add field set_progress_cb.
+       (new_reader_slot): Clear that field.
+       (open_ccid_reader): Set it to ..
+       (set_progress_cb_ccid_reader): ... new fucntion.
+       * app.c (print_progress_line): New.
+       (lock_reader): Add arg CTRL to set a progress callback and
+       change all callers to provide it.
+       (unlock_reader): Remove the progress callback.
+
+2009-07-10  Werner Koch  <wk@g10code.com>
+
+       * iso7816.c (iso7816_compute_ds): Add args EXTENDED_MODE and LE.
+       Change all callers to use 0.
+       (iso7816_internal_authenticate): Add args EXTENDED_MODE and LE.
+       * app-openpgp.c (do_sign): Take exmode and Le from card
+       capabilities and pass them to iso7816_compute_ds.
+       (do_auth): Ditto for iso7816_internal_authenticate.
+       (change_keyattr): Reset CHV verification status.
+
+2009-07-09  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (change_keyattr): New.
+       (do_writekey): Call it.
+       
+       * app-openpgp.c (does_key_exist): Add arg GENERATING.  Change
+       callers.
+
+2009-06-30  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (ccid_transceive): Set RESYNCING flag.
+
+2009-06-29  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (ccid_transceive): Add a hack to support extended
+       length for Omnikey readers.
+       (is_exlen_apdu): New.
+       (parse_ccid_descriptor): Track short+extended apdu exchange level.
+
+2009-06-18  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_chv2): Remove special case for v2 cards.
+       (get_public_key): Use extended mode.
+
+2009-06-17  Werner Koch  <wk@g10code.com>
+
+       * iso7816.c (iso7816_get_data): Add arg EXTENDED_MODE.  Change all
+       callers.
+       * app-openpgp.c (data_objects): Use bit flags.  Add flag
+       TRY_EXTLENGTH.
+       (get_cached_data): Add arg TRY_EXTLEN and use it for iso7816_get_data.
+       (get_one_do): Use extended length APDU if necessary.
+
+2009-06-10  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (store_fpr): Change first arg to app_t; adjust
+       callers.  Flush the cache.
+
+2009-06-09  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_readcert): Return NOT_FOUND if the retrieved
+       data has a length of zero.
+       (do_getattr): Add EXTCAP subkey "sm".
+
+2009-05-20  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_chv2): Add case for v2 cards.
+       (verify_chv3): Factor some code out to ..
+       (build_enter_admin_pin_prompt): .. new.
+       (do_change_pin): Properly handle v2 cards.
+
+2009-05-19  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (create_server_socket): Use SUN_LEN.
+       (JNLIB_NEED_AFLOCAL): Define.
+
+2009-05-13  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (abort_cmd): Add arg SEQNO and change callers.
+       (bulk_in): Retry on seqno mismatch.
+
+       * apdu.c (send_le): Release result_buffer.
+       (apdu_send_direct): Implemend extended length.
+       * command.c (cmd_apdu): Add option "--exlen".
+
+2009-05-11  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (send_le): Replace log_error by log_info.
+
+2009-05-08  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_genkey): Allow larger key sizes.
+       (do_decipher): Ditto.
+       * iso7816.c (do_generate_keypair): Add arg EXTENDED_MODE an LE.
+       (iso7816_generate_keypair, iso7816_read_public_key): Ditto.
+       Changed all callers.
+       * apdu.c (send_le): Implement extended length return values.
+
+       * ccid-driver.c (bulk_in): Retry on EAGAIN.
+       (abort_cmd): Change seqno handling.
+
+2009-04-28  Werner Koch  <wk@g10code.com>
+
+       * app-help.c (app_help_count_bits): New.
+
+       * app-nks.c (switch_application): Detect mass signature cards.
+       Take care of new NEED_APP_SELECT flag.
+       (do_sign): Don't allow mass signature cards.
+       (all_zero_p): New.
+       (do_readkey): New.
+       (app_select_nks): Register do_readkey.
+
+2009-04-01  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_setattr, do_writekey): Prepare for extended
+       length cards.
+
+2009-03-31  Werner Koch  <wk@g10code.com>
+
+       * command.c (percent_plus_unescape): Remove.
+       (cmd_setattr): Use percent_plus_unescape_inplace.
+
+2009-03-30  Werner Koch  <wk@g10code.com>
+
+       * app-nks.c (do_decipher): Make it work for TCOS 3.
+       * iso7816.c (iso7816_decipher): Add arg EXTENDED_MODE.
+       * apdu.c (apdu_send): Add arg EXTENDED_MODE and change all callers.
+       (apdu_send_le):  Ditto. 
+       (apdu_send_direct): Ditto, but not yet functional.
+       (send_le): Fix command chaining.  Implement extended length option.
+       * ccid-driver.c (ccid_transceive): Remove restriction on apdu length.
+       (struct ccid_driver_s): Add field IFSC.
+       (ccid_get_atr): Set IFSC.
+       (ccid_transceive): Use negotiated IFSC and support S(IFS) command.
+
+2009-03-26  Werner Koch  <wk@g10code.com>
+
+       * command.c (cmd_pksign): Allow more hash algorithms.
+
+       * scdaemon.h (MAX_DIGEST_LEN): Change to 64.
+
+       * apdu.c (open_ccid_reader): Clear the is_to flag.
+
+       * app-nks.c (filelist): Add field KID.
+       (do_getattr): Change standard authentication key.
+       (do_sign): Setup a security environment for TCOS 3 cards and support
+       all SHA-2 algorithms.
+
+2009-03-24  Werner Koch  <wk@g10code.com>
+
+       * command.c (struct server_local_s): Add flag
+       APP_CTX_MARKED_FOR_RELEASE.
+       (do_reset): Set the flag.
+       (open_card): Act on this flag.
+       * app-common.h (struct app_ctx_s): Add flag NO_REUSE.
+       (application_notify_card_reset): Set the flag.
+       * app.c (select_application, release_application): Take care of
+       that flag.
+
+2009-03-20  Werner Koch  <wk@g10code.com>
+
+       * app-nks.c (keygripstr_from_pk_file): Fix for TCOS 3 cards.
+
+2009-03-18  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (open_pcsc_reader_wrapped): Use close_all_fds.
+
+       * command.c (cmd_learn): Add option --keypairinfo.
+       * app.c (app_write_learn_status): Add arg FLAGS.
+       * app-common.h (struct app_ctx_s): Add arg FLAGS to LEARN_STATUS.
+       Change all implementors.
+       * app-p15.c (do_learn_status): Take care of flag bit 0.
+       * app-nks.c (do_learn_status, do_learn_status_core): Ditto.
+
+2009-03-10  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (send_key_attr): New.
+       (do_getattr): New attribute KEY_ATTR.
+       * command.c (send_status_direct): New.
+
+2009-03-06  Werner Koch  <wk@g10code.com>
+
+       * app-nks.c (do_learn_status): Factor code out to..
+       (do_learn_status_core): .. new.
+       (do_readcert, do_sign, do_decipher): Switch to SigG if needed.
+       (verify_pin): Use DESC also for keypad based verify.
+
+2009-03-05  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_a_chv): Remove special case for keypads.
+       (verify_chv3): Ditto.
+
+       * app-nks.c (get_chv_status): New.
+       (parse_pwidstr): New.
+       (verify_pin): Add args PWID and DESC and use them.  Remove the
+       CHV1 caching.
+       (do_change_pin): Allow PIN selection and add reset mode.
+       (do_learn_status): Use NKS-NKS3 tag for TCOS 3 cards.
+       (do_readcert, do_sign): Allow NKS-NKS3 tag.
+
+2009-03-04  Werner Koch  <wk@g10code.com>
+
+       * app-nks.c (do_getattr): New.
+       (app_select_nks): Register it.
+       (verify_pin): Factor some code out to...
+       (basic_pin_checks): New.
+       (do_change_pin): Call the basic check.
+       (app_select_nks): Move AID to ..
+       (aid_nks): .. new.
+       (aid_sigg): New.
+       (switch_application): New.
+       (do_getattr, do_learn_status, do_readcert, do_sign, do_decipher) 
+       (do_change_pin, do_check_pin): Make sure we are in NKS mode.
+
+2009-03-03  Werner Koch  <wk@g10code.com>
+
+       * command.c (scd_command_handler): Remove dereference of STOPME
+       after free.
+
+2009-02-27  Werner Koch  <wk@g10code.com>
+
+       * app.c (get_supported_applications): New.
+       * command.c (cmd_getinfo): New subcommand "app_list"
+       (cmd_killscd): New.
+       (register_commands): Register command KILLSCD.
+       (struct server_local_s): Add field STOPME.
+       (scd_command_handler): Act upon this.
+
+2009-02-25  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (apdu_get_status): Factor all code out to ...
+       (apdu_private_get_status): .. new.  Add arg NO_ATR_RESET.
+       (apdu_connect): Call new function.
+
+       * scdaemon.c: New option --debug-log-tid.
+       (tid_log_callback): New.
+       (main): Move debug-wait code after debug stream init.
+
+2009-02-24  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (ccid_get_atr): Move debug output to ..
+       (print_r2p_parameters): .. new.
+       (print_r2p_header, print_pr_data, print_r2p_unknown)
+       (print_r2p_datablock, print_r2p_slotstatus, print_r2p_escape) 
+       (print_r2p_datarate): New.
+       (bulk_in): Call parameter printing.
+       (ccid_set_debug_level): Add debug level 3.
+       (convert_le_u16): New.
+       (print_p2r_header, print_p2r_iccpoweron, print_p2r_iccpoweroff) 
+       (print_p2r_getslotstatus, print_p2r_xfrblock) 
+       (print_p2r_getparameters, print_p2r_resetparameters) 
+       (print_p2r_setparameters, print_p2r_escape, print_p2r_iccclock) 
+       (print_p2r_to0apdu, print_p2r_secure, print_p2r_mechanical) 
+       (print_p2r_abort, print_p2r_setdatarate, print_r2p_unknown): New.
+       (bulk_out): Add arg NO_DEBUG and change all callers to pass 0.
+       Call parameter printing.
+       (ccid_slot_status): Call with NO_DEBUG set.
+       (abort_cmd, send_escape_cmd, ccid_get_atr, ccid_get_atr) 
+       (ccid_transceive_apdu_level, ccid_transceive) 
+       (ccid_transceive_secure): Remove old debug print code.
+
+2009-02-12  Werner Koch  <wk@g10code.com>
+
+       * command.c (cmd_getinfo): Add new subcommand "deny_admin".
+
+2009-01-28  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main): Make --allow-admin the default and make the
+       option a dummy.
+
+2009-01-27  Werner Koch  <wk@g10code.com>
+
+       * app-geldkarte.c: Changed to use an AID.
+
+       * app.c (app_munge_serialno): Add case for no serialno.
+       (app_get_serial_and_stamp): Ditto.
+
+2009-01-26  Werner Koch  <wk@g10code.com>
+
+       * app-geldkarte.c: New.
+       * Makefile.am (card_apps): Add new file.
+       * app.c (select_application): Test for geldkarte.
+
+2009-01-12  Werner Koch  <wk@g10code.com>
+
+       * command.c (send_client_notifications) [HAVE_W32_SYSTEM]: Fix
+       brackets.
+
+2009-01-08  Werner Koch  <wk@g10code.com>
+
+       * iso7816.c (iso7816_read_record, iso7816_read_binary): Pass 0 for
+       L_e because the problem with the CCID driver has gone.
+       (iso7816_apdu_direct): New.
+
+       * app-nks.c (filelist): Add NKS_VER field.  Add NKS 3 specific
+       entries.
+       (app_local_s, do_deinit): New.
+       (get_nks_version): New.
+       (app_select_nks): Setup local data.
+       (keygripstr_from_pk_file): Replace SLOT by APP and take care of
+       NKS version > 2.
+       (do_learn_status): Take care of NKS version.
+
+2009-01-05  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (apdu_get_status): Save the last status.
+
+2008-12-18  Werner Koch  <wk@g10code.com>
+
+       * ccid-driver.c (abort_cmd): New. 
+       (bulk_in): Call abort_cmd after severe errors.
+
+       * apdu.c (reader_table_s): Add field ANY_STATUS.
+       (new_reader_slot): Clear it.
+       (apdu_get_status): Use ANY_STATUS to update the change counter.
+       Remove the use of the flag bit from LAST_STATUS everywhere.
+       * command.c (update_reader_status_file): Factor code out to ...
+       (send_client_notifications): New.  Track signals already sent.
+       (update_reader_status_file): Shutdown the reader  after a failed
+       apdu_get_status.
+
+2008-12-09  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (main): Call i18n_init before init_common_subsystems.
+
+2008-12-08  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (handle_connections): Sync ticker to the next full
+       interval.
+       (TIMERTICK_INTERVAL_USEC): Change to 500ms.
+
+2008-12-05  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (app_local_s): Add field ALGO_ATTR_CHANGE.
+       (app_select_openpgp): Parse new capability.
+       (show_caps): Show new capability.
+
+2008-12-03  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (opts): Use ARGPARSE_ macros.  Add option
+       --card-timeout.
+       * command.c (update_reader_status_file): Implement it.
+
+2008-11-18  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.c (make_libversion): New.
+       (my_strusage): Print libgcrypt and libksba version.
+
+2008-11-03  Werner Koch  <wk@g10code.com>
+
+       * command.c (server_local_s): Add field DISCONNECT_ALLOWED.
+       (cmd_disconnect): Implement command.
+       (open_card): Reset disconnect flag.
+       (update_reader_status_file): Disconnect if allowed.
+
+       * app-common.h (app_ctx_s): Remove INITIALIZED.  Make REF_COUNT
+       unsigned. 
+       * app.c (select_application): Remove INITIALIZED.
+       (app_write_learn_status, app_readcert, app_readkey, app_getattr)
+       (app_setattr, app_sign, app_decipher, app_writecert)
+       (app_writekey, app_get_challenge, app_change_pin, app_check_pin):
+       Replace INITIALIZED by REF_COUNT check.
+       (application_notify_card_removed): Rename to ..
+       (application_notify_card_reset): .. this.  Change all callers.
+       * command.c (do_reset): Call application_notify_card_reset after
+       sending a reset.
+       (update_reader_status_file): Add arg SET_CARD_REMOVED.
+       (scd_update_reader_status_file): Pass true for new flag.
+       (do_reset): Pass false for new flag.
+
+       * app.c (app_get_serial_and_stamp): Use bin2hex.
+       * app-help.c (app_help_get_keygrip_string): Ditto.
+       * app-p15.c (send_certinfo, send_keypairinfo, do_getattr): Ditto.
+       * app-openpgp.c (send_fpr_if_not_null, send_key_data) 
+       (retrieve_fpr_from_card, send_keypair_info): Ditto.
+       * app-nks.c (keygripstr_from_pk_file): Ditto.
+       * command.c (cmd_apdu): Ditto.
+
+2008-10-21  Marcus Brinkmann  <marcus@g10code.com>
+
+       * command.c (open_card): If connect error is SW_HOST_NO_CARD,
+       return a more descriptive error.
+
+2008-10-20  Werner Koch  <wk@g10code.com>
+
+       * pcsc-wrapper.c (read_32): Use provided arg and not stdin.  Is
+       called with stdin, though.
+       (handle_close): Mark unused arg.
+       (handle_status, handle_reset): Ditto.
+
+       * ccid-driver.c (ccid_check_card_presence): Mark not yet used arg.
+
+       * scdaemon.c (scd_deinit_default_ctrl): Mark unused arg.
+       * command.c (cmd_unlock, cmd_restart, cmd_disconnect): Ditto.
+       * apdu.c (ct_get_status): Ditto.
+       (ct_send_apdu, pcsc_send_apdu_wrapped)
+       (apdu_open_remote_reader): Ditto.
+       * app.c (select_application): Ditto.
+       * app-openpgp.c (do_writecert, do_change_pin, do_writekey): Ditto.
+       * app-nks.c (do_change_pin, do_check_pin): Ditto.
+
+2008-10-16  Werner Koch  <wk@g10code.com>
+
+       * command.c (cmd_disconnect): New dummy command.
+       (register_commands): Register command.
+
+2008-10-15  Werner Koch  <wk@g10code.com>
+
+       * command.c (scd_command_handler): Return true if there is no more
+       active session.
+       * scdaemon.c (start_connection_thread): Set shutdown flag if
+       requested by command handler.
+       (main): Make PIPE_SERVER module global.
+       (handle_connections): Disable listen_fd if a shutdown is pending.
+
+2008-10-14  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (reader_table_s): Add fields connect_card and
+       disconnect_card.
+       (new_reader_slot): Set them to NULL.
+       (apdu_connect, apdu_disconnect): New.
+       (apdu_close_reader, apdu_shutdown_reader): Call apdu_disconnect.
+       (connect_pcsc_card, disconnect_pcsc_card): new.
+       (reset_pcsc_reader_direct): Implement in terms of
+       disconnect_pcsc_card and connect_pcsc_card.
+       (apdu_get_atr): Return NULL if there is no ATR.
+       * sc-copykeys.c (main): Add call to apdu_connect.
+       * command.c (open_card): Ditto.
+
+       * apdu.h (SW_HOST_ALREADY_CONNECTED): New.
+       (APDU_CARD_USABLE, APDU_CARD_PRESENT, APDU_CARD_ACTIVE): New.
+       * apdu.c: Replace constants by the new macros.
+       (open_pcsc_reader): Factor  code out to ...
+       (open_pcsc_reader_direct, open_pcsc_reader_wrapped): New.
+       (reset_pcsc_reader): Factor code out to ...
+       (reset_pcsc_reader_direct, reset_pcsc_reader_wrapped): New.
+       (pcsc_get_status): Factor code out to ...
+       (pcsc_get_status_direct, pcsc_get_status_wrapped): New.
+       (pcsc_send_apdu): Factor code out to ...
+       (pcsc_send_apdu_direct, pcsc_send_apdu_wrapped): New.
+       (close_pcsc_reader): Factor code out to ...
+       (close_pcsc_reader_direct, close_pcsc_reader_wrapped): New.
+
+       * command.c (update_reader_status_file): Open the reader if not
+       yet done.
+
+       * scdaemon.c (TIMERTICK_INTERVAL_SEC, TIMERTICK_INTERVAL_USEC):
+       New to replace TIMERTICK_INTERVAL.  Chnage from 2s (4 under W32)
+       to 250ms.
+
+2008-10-13  Werner Koch  <wk@g10code.com>
+
+       * command.c (option_handler) [W32]: Use strtoul with base 16.
+       (update_reader_status_file) [W32]: Set Event.
+       (scd_command_handler): Use INT2FD to silent warning.
+
+2008-09-29  Werner Koch  <wk@g10code.com>
+
+       * scdaemon.h (GCRY_MD_USER): Rename to GCRY_MODULE_ID_USER.
+       (GCRY_MD_USER_TLS_MD5SHA1): Rename to MD_USER_TLS_MD5SHA1 and
+       change all users.
+
+2008-09-28  Marcus Brinkmann  <marcus@g10code.com>
+
+       * apdu.c (pcsc_get_status): Fix last change.
+
+2008-09-25  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_setattr): Do not allow setting of the reset
+       code.
+       (do_change_pin): Allow setting of the reset code.
+
+2008-09-24  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_chv3): Set the did_chv3 flag which was
+       accidently removed on 2008-03-26.
+       (verify_chv2): Revert last change.
+       (do_change_pin): Do not change CHV2. Add reset code logic for v2
+       cards.
+       * iso7816.c (iso7816_reset_retry_counter_with_rc): New.
+       
+       * app-openpgp.c (add_tlv, build_privkey_template): New.
+       (do_writekey): Support v2 keys and other key lengths than 1024.
+       * iso7816.c (iso7816_put_data_odd): New.
+
+2008-09-23  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_sign): Support SHA-2 digests.
+       (verify_chv2): No CHV auto-sync for v2 cards.
+       (do_auth): Allow 2048 bit keys.
+       (parse_algorithm_attribute): New.
+       (rsa_key_format_t): New.
+       (struct app_local_s): Add struct KEYATTR.
+
+2008-09-23  Marcus Brinkmann  <marcus@g10code.com>
+
+       * apdu.c (pcsc_get_status): Be more relaxed with the usable flag
+       under Windows.
+
+2008-09-23  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_setattr): Use command chaining for long
+       values.
+       * iso7816.c (iso7816_put_data): Add arg EXTENDED_MODE. Change all
+       callers.
+       * apdu.c (apdu_send_simple): Add arg EXTENDED_MODE. Change all
+       callers.
+       (send_le): Implement command chaining.
+       * ccid-driver.c (ccid_transceive_apdu_level): Increase allowed
+       APDU size.
+       (ccid_transceive): Alow for APDUS of up to 259 bytes.
+       * apdu.h: Add new SW_ codes.
+
+2008-09-16  Werner Koch  <wk@g10code.com>
+
+       * command.c (cmd_writecert): New.
+       (register_commands): Register it.
+       * app-common.h (app_ctx_s): Add member WRITECERT.
+       * app.c (app_writecert): New.
+       * app-openpgp.c (do_writecert): New.
+       (parse_historical): New.
+       (show_extcap): New.
+       (dump_all_do): Print only the length of longs DOs.
+       * command.c (cmd_writekey, cmd_apdu, cmd_pksign)
+       (cmd_passwd): Replace open coding by skip_options.
+
+2008-08-30  Moritz  <moritz@gnu.org>
+
+       * scdaemon.c (main): Use estream_asprintf instead of asprintf.
+       * command.c (update_reader_status_file): Likewise.
+       (cmd_serialno): Use estream_asprintf instead of asprintf
+       and xfree instead of free to release memory allocated
+       through (estream_)asprintf.
+       (cmd_learn): Likewise.
+       (pin_cb): Likewise.
+       * app-openpgp.c (get_public_key): Likewise.
+
+2008-08-18  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_setattr): Fix test for v2 cards.
+
+2008-08-11  Werner Koch  <wk@g10code.com>
+
+       * apdu.c (reset_pcsc_reader, open_pcsc_reader)
+       (reset_rapdu_reader, open_rapdu_reader): Allow ATRs of up to 33
+       bytes.  Provide maximum size of ATR buffer using DIM.  Such long
+       ATR are never seen in reality but the PC/SC library of MAC OS X is
+       just too buggy.  Reported by Ludovic Rousseau.  Fixes bug #948.
+
+2008-07-30  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_a_chv): Use xtrymalloc and make the prompt
+       for CHV2 more user friendly.
+
+2008-07-03  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_readcert): New.
+       (app_local_s): Add fields IS_V2 and MAX_CERTLEN_3.
+       (app_select_openpgp): Set them and register do_readcert.
+       (do_setattr): Allow storing of the certificate.
+
+2008-06-25  Werner Koch  <wk@g10code.com>
+
+       * app-dinsig.c (do_sign): Allow for SHA256.
+
+2008-06-24  Werner Koch  <wk@g10code.com>
+
+       * app-common.h (app_ctx_s): Renamed reset_mode parameter of
+       change_pin to mode_Flags and make it an unsigned int.
+       (APP_CHANGE_FLAG_RESET, APP_CHANGE_FLAG_NULLPIN): New.
+       * app-openpgp.c (do_change_pin): Adjust for that.
+
+       * command.c (cmd_passwd): Add option --nullpin.
+       * app-nks.c (do_check_pin, do_change_pin): New.
+       (app_select_nks): Register new functions.
+
+2008-04-21  Moritz Schulte  <mo@g10code.com>  (wk)
+
+       * app-openpgp.c (verify_a_chv): Make use of the default CHV flag.
+
+2008-03-26  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (verify_chv3): Support the keypad.
+
+2008-02-09  Marcus Brinkmann  <marcus@g10code.de>
+
+       * scdaemon.c (main): Use CONFIG_FILENAME as filename if it is set
+       in gpgconf-list output.
+
+2007-12-10  Werner Koch  <wk@g10code.com>
+
+       * app-openpgp.c (do_decipher): Take care of cryptograms shorter
+       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.
        the gpg-agent.
 
        
- Copyright 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright 2002, 2003, 2004, 2005, 2007, 2008 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