2006-08-11  Ludovic Rousseau

	* [r2135] README,
	  configure.in: release 1.1.0
	* [r2134] configure.in,
	  src/Makefile.am: use ./configure
	  --enable-twinserial to compile and install the the driver for
	  the GemPC Twin serial Thanks to Wolfgang Glas for the idea
	* [r2133] README,
	  readers/CL1356T.txt,
	  readers/Makefile.am: add id3 Semiconductors
	  CL1356T in the "should work but unsuported" list
	* [r2132] config.h.in: Regenerate

2006-08-10  Ludovic Rousseau

	* [r2131] README,
	  readers/Makefile.am,
	  readers/iDream.txt: Add iDream (or
	  THRC2002-2) to the "Unsupported or partly supported CCID
	  readers" list. Thanks to Dr Jean-Pierre Szikora for the report

2006-08-09  Ludovic Rousseau

	* [r2130] src/ifdhandler.c:
	  IFDHCreateChannelByName(): add a "warm up" sequence. This
	  sequence is sometimes needed when pcscd is restarted with the
	  reader already connected. We get some "usb_bulk_read: Resource
	  temporarily unavailable" on the first few tries. It is an
	  empirical hack

2006-08-07  Ludovic Rousseau

	* [r2123] src/defs.h: CMD_BUF_SIZE should not
	  include a byte for the cmd. This definition was reused as-is
	  from the ifd-gempc source code. Thanks to Wolfgang Glas for the
	  bug report

2006-08-03  Ludovic Rousseau

	* [r2122] src/ifdhandler.c: IFDHICCPresence():
	  check the value returned by CmdEscape() in the SCR331-DI
	  contactless reader familly code. Byg detected by using
	  __attribute__((warn_unused_result)) also used as __must_check by
	  the Linux kernel
	* [r2121] src/utils.c,
	  src/utils.h: change the prototype of
	  ReleaseReaderIndex() to return void since he function always
	  returned 0 and the returned value was never checked
	* [r2120] src/commands.c:
	  SecurePINVerify()/SecurePINModify(): the USB timeout shall be
	  greater than the reader timeout so we get the reader answer. I
	  use a margin of 10 seconds. Thanks to Gerald Richter for the bug
	  report

2006-08-01  Ludovic Rousseau

	* [r2119] src/ccid_usb.c: ReadUSB(): check that
	  usbDevice[reader_index].dev->bus is still non-NULL (as we do in
	  WriteUSB()) before dereferencing it in the debug message. Thanks
	  to Michael Wegner for the patch
	* [r2118] configure.in: Exit the ./configure
	  script if some include files are not found Use AC_MSG_ERROR()
	  instead of AC_MSG_WARN()

2006-07-31  Ludovic Rousseau

	* [r2117] config.h.in: regenerate
	* [r2116] configure.in,
	  examples/scardcontrol.c,
	  src/ifdhandler.c: use ntohl/htonl from
	  arpa/inet.h since the tag value for
	  IOCTL_FEATURE_VERIFY_PIN_DIRECT and
	  IOCTL_FEATURE_MODIFY_PIN_DIRECT _shall_ be encoded in big endian
	  as documented in PCSC v2 part 10 ch 2.2 page 2. The applications
	  using this feature shall be updated (to respect the PCSC
	  specification) Thanks to Ulrich Vogl for the bug report

2006-07-12  Ludovic Rousseau

	* [r2110] src/commands.c: CCID_Receive(): check
	  that we received at least enough bytes to test
	  cmd[STATUS_OFFSET]. usb_bulk_read() will return 0 bytes without
	  error in case of timeout
	* [r2109] src/ifdhandler.c: use LPSTR instead
	  of LPTSTR (deprecated)
	* [r2108] src/commands.c: SetParameters(): do
	  not fail if the command fails to set a parameter that is not
	  changeable by the CCID

2006-07-11  Ludovic Rousseau

	* [r2107] src/ccid_usb.c: correct a typo in a
	  comment

2006-07-09  Ludovic Rousseau

	* [r2101] README,
	  readers/AU9520.txt,
	  readers/supported_readers.txt: add Alcor
	  Micro AU9520
	* [r2100] README,
	  readers/id3_CL1356D.txt,
	  readers/supported_readers.txt: add id3
	  Semiconductors CL1356D

2006-07-04  Ludovic Rousseau

	* [r2099] config.h.in: update comment for size_t
	* [r2098] src/commands.c: make pcscd detect a
	  buffer overflow when the receiving buffer is too small instead
	  of silently ignoring the detected problem. This problem only
	  occured with readers supporting Extended APDU.
	* [r2097] src/ccid_usb.c: ReadUSB(): be sure we
	  have read enough bytes before checking for frame detectation

2006-07-03  Ludovic Rousseau

	* [r2096] src/commands.c: CmdXfrBlock(): remove
	  the unused clean_up_and_return goto label
	* [r2095] src/commands.c: CmdXfrBlock(): call
	  CmdXfrBlockAPDU_extended() if the reader supports Extended APDU
	* [r2094] src/commands.c: add
	  CmdXfrBlockAPDU_extended() to support Extended APDU readers
	* [r2093] src/commands.c: CCID_Receive():
	  return the value of bChainParameter in *chain_parameter
	* [r2092] src/commands.c: CmdXfrBlockTPDU_T1():
	  also log the length of the reception buffer
	* [r2091] src/commands.c,
	  src/openct/proto-t1.c,
	  src/towitoko/pps.c: use CCID_Receive() with
	  the new API (use NULL as chain_parameter)
	* [r2090] src/commands.c,
	  src/commands.h: CCID_Receive() has a new
	  parameter: chain_parameter
	* [r2089] src/commands.h: add #define
	  CHAIN_PARAMETER_OFFSET
	* [r2088] src/commands.c: move the "command
	  length too big" checks from CmdXfrBlock() to CmdXfrBlockTPDU_T0()
	* [r2087] src/commands.c: CCID_Transmit(): log
	  if the transmit buffer is too big
	* [r2086] src/commands.c: CCID_Receive(): use
	  <= instead of < to detect a reception buffer overrun and log an
	  error if it occurs
	* [r2085] src/ccid.c: ccid_open_hack(): the
	  CL1356D firmware needs some time to initialize. Wait 1 second
	  here
	* [r2084] src/ccid.h: add #define CL1356D
	* [r2083] src/ccid_usb.c: ReadUSB(): detect and
	  ignore duplicated CCID frames

2006-06-30  Ludovic Rousseau

	* [r2082] src/ccid.c: ccid_error(): display the
	  value of the Unknown CCID error code

2006-06-08  Ludovic Rousseau

	* [r2078] configure.in: add support of FreeBSD

2006-05-25  Ludovic Rousseau

	* [r2055] src/Info.plist: update the licence
	  from GPL to LGPL

2006-05-19  Ludovic Rousseau

	* [r2048] src/ccid_usb.c: SCM SPR 532 with
	  firmware < 5.10 has problems
	* [r2047] readers/SPR532.txt: update with
	  firmware 5.10
	* [r2046] src/openct/proto-t1.c:
	  t1_transceive(): add a overrun debug message if we received more
	  bytes than we can store.
	* [r2045] src/openct/proto-t1.c:
	  t1_transceive(): add a debug message if we are in state DEAD.
	  The card must be reset first.

2006-05-16  Ludovic Rousseau

	* [r2044] readers/ActivkeySim.txt,
	  readers/supported_readers.txt: add
	  Actividentity (ActiveCard) Activkey Sim

2006-05-10  Ludovic Rousseau

	* [r2041] src/ccid.h: correct a typo in a
	  comment

2006-05-04  Ludovic Rousseau

	* [r2039] examples/scardcontrol.c: Use a
	  timeout of 0.1 second instead of 0 for waiting characters from
	  the keyboard
	* [r2038] README,
	  readers/supported_readers.txt: add C3PO LTC31
	  (new model, USB product id 0x0006) in the supported list
	* [r2037] README,
	  readers/supported_readers.txt: add "HP USB
	  Smart Card Keyboard" in the "Should work but untested by me:"
	  list
	* [r2036] readers/HPUSBSmartCardKeyboard.txt,
	  readers/Makefile.am: add
	  HPUSBSmartCardKeyboard.txt

2006-05-03  Ludovic Rousseau

	* [r2035] src/ccid.c: ccid_open_hack(): add SCM
	  SCR331-DI-NTTCOM in the list of dual slots contactless readers
	  hack
	* [r2034] README,
	  readers/CardMan3021.txt,
	  readers/Makefile.am: add OmniKey CardMan 3021
	  in the "Should work but untested by me" list
	* [r2033] readers/LTC31v2.txt,
	  readers/Makefile.am: add LTC31 (new version)
	* [r2032] src/parse.c: I used the MSB instead
	  of LSB in parsing dwSynchProtocols

2006-04-23  Ludovic Rousseau

	* [r2026] COPYING: update the Free Software
	  Foundation postal address

2006-04-22  Ludovic Rousseau

	* [r2022] src/Makefile.am: add
	  $(PROVIDED_BY_PCSC) to libccidtwin_la_SOURCES so that
	  libccidtwin uses its own log_xxd/log_msg when configured with
	  --disable-pcsclite
	* [r2021] src/Makefile.am: add $(TOKEN_PARSER)
	  to libccidtwin_la_SOURCES
	* [r2020] README,
	  configure.in: release 1.0.1

2006-04-20  Ludovic Rousseau

	* [r2019] src/ifdhandler.c: declare the
	  functions to export as EXTERNAL
	* [r2017] readers/ACR38U-CCID.txt,
	  readers/CardMan3121.txt,
	  readers/CryptoIdentity.txt,
	  readers/GemPCKey.txt,
	  readers/GemPCTwin.txt,
	  readers/KAAN_Advanced.txt,
	  readers/KAAN_Base.txt,
	  readers/KAAN_SIM_III.txt,
	  readers/LTC31.txt,
	  readers/MySmartPad.txt,
	  readers/Oz776S.txt,
	  readers/SCR331-DI.txt,
	  readers/SCR331.txt,
	  readers/SCR3310.txt,
	  readers/SCR335.txt,
	  readers/SCR355.txt,
	  readers/SIM_Pocket_Combo.txt,
	  readers/SPR532.txt,
	  readers/Verisign_secure_storage_token.txt,
	  readers/mIDentity.txt,
	  readers/sid800.txt: regenerate using the
	  latest version of parse
	* [r2016] README,
	  readers/CardMan3621.txt,
	  readers/Makefile.am,
	  readers/supported_readers.txt: add OmniKey
	  CardMan 3621 in the "Should work but untested by me" list Thanks
	  to Bruce Stephens.

2006-04-18  Ludovic Rousseau

	* [r2014] src/ccid_usb.c: declare
	  get_ccid_usb_interface() as EXTERNAL since this function is used
	  by src/parse
	* [r2013] src/ifdhandler.c: #include "misc.h"
	  so that ifdhandler.h functions are declared EXTERNAL
	* [r2012] src/Makefile.am: add
	  $(SYMBOL_VISIBILITY) to libccid_la_CFLAGS and
	  libccidtwin_la_CFLAGS
	* [r2011] configure.in: add code to detect the
	  support of -fvisibility=hidden
	* [r2007] src/Makefile.am,
	  src/misc.h, src/parser.h,
	  src/strlcpy.c,
	  src/strlcpycat.h,
	  src/tokenparser.l: use tokenparser.l and
	  parser.h from pcsc-lite (using a symlink in subversion). So we
	  also need strlcpy.c, strlcpycat.h and misc.h
	* [r2006] src/parser.h,
	  src/tokenparser.l: remove
	* [r2005] configure.in,
	  src/Makefile.am: always use our own
	  tokenparser.l even when pcsc-lite is used (do not use
	  LTPBundleFindValueWithKey from pcscd)

2006-04-14  Ludovic Rousseau

	* [r2004] readers/Makefile.am: add SCR3311.txt,
	  SCR355.txt and SDI010.txt
	* [r2003] readers/SDI010.txt,
	  readers/SSI010.txt: rename SSI010.txt in
	  SDI010.txt
	* [r2002] src/ccid_usb.c: firmwares for Athena
	  ASE IIIe USBv2 and ASE IIIe KB USB were bogus.
	* [r2001] readers/Makefile.am: add ASE_IIIe.txt
	  and ASEDrive_IIIe_KB.txt
	* [r2000] README,
	  readers/ASEDrive_IIIe_KB.txt,
	  readers/supported_readers.txt: add Athena ASE
	  IIIe KB USB
	* [r1999] readers/ASE_IIIe.txt: update firmware
	  version

2006-03-28  Ludovic Rousseau

	* [r1986] src/commands.c: SecurePINVerify() and
	  SecurePINModify(): Make sure bEntryValidationCondition is valid
	  The Cherry XX44 keyboard smart card reader crashes when a wrong
	  value is used

2006-03-27  Ludovic Rousseau

	* [r1985] examples/scardcontrol.c: Modify PIN:
	  use a for() loop instead of 3 fgets() since we will not read
	  every "PIN" if the command is aborted
	* [r1984] src/commands.c: SecurePINVerify():
	  debug a debug message. use dw2i(TxBuffer, 15) instead of just
	  the first byte TxBuffer[15]
	* [r1983] src/commands.c: SecurePINModify():
	  separate the validation test in three different tests and add a
	  debug message for each test
	* [r1982] src/commands.c: SecurePINVerify():
	  debug a debug message :-)
	* [r1981] src/ccid.h,
	  src/commands.c: SecurePINModify(): circumvent
	  a bug in Cherry XX44 keyboard firmware

2006-03-21  Ludovic Rousseau

	* [r1969] README: add Gemplus GemPC Card in the
	  "supported" list
	* [r1968] README,
	  readers/Makefile.am,
	  readers/Winbond.txt,
	  readers/supported_readers.txt: add Winbond
	  Electronics W81E381 chipset
	* [r1951] README: add SCM Micro SDI 010 in the
	  "Should work" list
	* [r1950] readers/SSI010.txt,
	  readers/supported_readers.txt,
	  src/ccid.c, src/ccid.h,
	  src/ifdhandler.c: add support for SCM SDI 010
	  contactless reader thanks to Oleg Makarenko for the patch
	* [r1949] readers/AxaltoV3.txt,
	  readers/Makefile.am: add Axalto Reflex USB V3

2006-03-20  Ludovic Rousseau

	* [r1945] README,
	  readers/supported_readers.txt: add Axalto
	  Reflex USB v3 in the "should work" list
	* [r1944] configure.in: document
	  --disable-multi-thread instead of --enable-multi-thread since
	  safe threading is used by default
	* [r1943] configure.in: document
	  --disable-pcsclite instead of --enable-pcsclite since pcsc-lite
	  is used by default
	* [r1942] configure.in: display the status "use
	  libusb : yes/no" document --disable-libusb instead of
	  --enable-libusb since libusb is used by default.

2006-03-06  Ludovic Rousseau

	* [r1927] src/ccid_usb.h: use #if defined
	  (__USB_H__) || defined (_SYS_USB_LIBUSB_USB_H) instead of #ifdef
	  __USB_H__ to support the Solaris libusb thanks to Iain
	  MacDonnell for the patch
	* [r1926] configure.in: remove CFLAGS="$CFLAGS
	  -Wall" since it is GCC specific
	* [r1925] configure.in: add support of Solaris

2006-03-03  Ludovic Rousseau

	* [r1911] README: release 1.0.0
	* [r1910] configure.in: version 1.0.0
	* [r1909] README: add OmniKey CardMan 3821 and
	  CardMan 6121 in the "Should work but untested by me" list
	* [r1908] readers/CardMan3821.txt,
	  readers/CardMan6121.txt,
	  readers/Makefile.am,
	  readers/supported_readers.txt: add OmniKey
	  CardMan 3821 and CardMan 6121
	* [r1905] README: update the "Debug
	  informations:" chapter. The two options comm and periodic have
	  been swaped
	* [r1904]
	  readers/CherrySmartTerminalST2XXX.txt: new
	  firmware (5.08)

2006-02-28  Ludovic Rousseau

	* [r1903] readers/Makefile.am,
	  readers/SCR333.txt: add SCR333.txt
	* [r1886] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): if the card is in specific mode and
	  request a speed not supported by the reader we return
	  IFD_COMMUNICATION_ERROR instead of IFD_PROTOCOL_NOT_SUPPORTED so
	  that pcsc-lite do not try to talk to the card

2006-02-24  Ludovic Rousseau

	* [r1883] README: add URL for the Cherry
	  SmartTerminal ST2000U

2006-02-21  Ludovic Rousseau

	* [r1876] README: - move the ActivCard USB
	  reader 2.0 from "Should work but untested by me" to "Unsupported
	  or partly supported CCID readers" - add the ActivCard USB reader
	  3.0 in the "Supported CCID readers" list
	* [r1875] src/ccid_usb.c: the ActivCard V2 is
	  bogus (problem with wMaxPacketSize size frames)
	* [r1874] readers/Makefile.am: distribute
	  ActivCardV2.txt and ActivCardV3.txt
	* [r1873] readers/supported_readers.txt: add
	  ActivCard USB Reader 3.0
	* [r1872] readers/ActivCardV2.txt,
	  readers/ActivCardV3.txt: add ActivCard v2 and
	  v3 descriptions
	* [r1870] Makefile.am: correct the Perl regexp
	  in ChangeLog rule
	* [r1869] Makefile.am: add subversion revision
	  in ChangeLog.svn

2006-02-20  Ludovic Rousseau

	* [r1867] readers/Makefile.am: add SCM
	  SCR3320.txt and SCR3340.txt
	* [r1866] readers/SCR3320.txt: add SCM SCR3320
	  - Smart Card Reader
	* [r1865] readers/SCR3340.txt: add SCR3340 -
	  ExpressCard54 Smart Card Reader

2006-02-07  Ludovic Rousseau

	* [r1864] README,
	  readers/supported_readers.txt: add "SCM SCR
	  3340 ExpressCard54" in the "Should work but untested by me" list
	* [r1863] README: add Gemplus GemPC Express in
	  the "Should work but untested by me" list
	* [r1862] readers/GemPC_Express.txt,
	  readers/Makefile.am,
	  readers/supported_readers.txt: add Gemplus
	  GemPC Express

2006-02-06  Ludovic Rousseau

	* [r1861] readers/supported_readers.txt: rename
	  POS Pro & SIM Pro to a more real name "Gemplus GemCore xxx"
	* [r1860] src/commands.c:
	  SecurePINVerify/SecurePINModify: get the data from a T=1 TPDU
	  block only if the exchange was successful (with special
	  treatment for timeout and cancel cases)
	* [r1859] src/commands.c: SecurePINVerify():
	  move the prologue filing part to be homogenous with
	  SecurePINModify()
	* [r1858] src/commands.c: SecurePINModify():
	  add support of T=1 cards with TPDU readers
	* [r1857] src/commands.c: SecurePINVerify():
	  add support of T=1 cards with TPDU readers
	* [r1856] src/openct/proto-t1.c,
	  src/openct/proto-t1.h: export t1_build() and
	  some constants
	* [r1855] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): store the card protocol in
	  ccid_desc->cardProtocol
	* [r1854] src/ccid.h: add a cardProtocol field
	  to store the card protocol in use

2006-01-30  Ludovic Rousseau

	* [r1846] configure.in: add support for OpenBSD
	* [r1845] examples/Makefile.am,
	  src/Makefile.am: use $(foo) instead of @foo@
	  to do not replace the values but the variables
	* [r1842] configure.in: when checking for PCSC
	  exit with en error only if
	  /usr/local/lib/pkgconfig/libpcsclite.pc exists _and_ pkg-config
	  is installed

2006-01-25  Ludovic Rousseau

	* [r1841] readers/Makefile.am: add
	  CardMan5125.txt
	* [r1840] README: add OmniKey CardMan 5125 in
	  the "Should work but untested by me" list
	* [r1839] readers/CardMan5125.txt,
	  readers/supported_readers.txt: add OmniKey
	  CardMan 5125

2006-01-24  Ludovic Rousseau

	* [r1834] readers/supported_readers.txt: add
	  SmartEpad
	* [r1833] README: add SmartEpad (v 2.0) in the
	  supported list
	* [r1832] src/ccid.c,
	  src/ccid.h: add support for the SmartEpad (v
	  2.0) reader (MYSMARTPAD)
	* [r1831] readers/Makefile.am: add
	  MySmartPad.txt

2006-01-20  Ludovic Rousseau

	* [r1820] README,
	  readers/SCR3311.txt: move the SCM Micro SCR
	  3311 from the "should work" list to the "supported" list
	* [r1819] src/parse.c: rewrite to scan the
	  devices ourself instead of calling IFDHCreateChannel(). No need
	  to have an updated Info.plist anymore.
	* [r1818] src/ccid_usb.c:
	  get_ccid_usb_interface(): use the same code for a device with 1
	  or >1 interfaces

2006-01-18  Ludovic Rousseau

	* [r1815] README: add Gemplus GemPC PinPad,
	  Gemplus GemCore POS Pro & Gemplus GemCore SIM Pro
	* [r1814] INSTALL: document the configuration
	  of /etc/reader.conf for a GemPC PinPad, a GemCore POS Pro or a
	  GemCore SIM Pro
	* [r1810] readers/GemCoreSIMPro.txt,
	  readers/Makefile.am: add GemCore SIM Pro
	* [r1809] readers/supported_readers.txt: add
	  GemCore POS Pro & Gemplus SIM Pro --Cette ligne, et les
	  suivantes ci-dessous, seront ignores-- M
	  readers/supported_readers.txt
	* [r1808] src/ccid.h,
	  src/ccid_serial.c,
	  src/ccid_usb.c,
	  src/defs.h,
	  src/reader.conf.in: add support of GemCore
	  SIM Pro and GemCore POS Pro (serial and USB).
	* [r1807] src/ccid_usb.c: CloseUSB(): free the
	  allocated arrayOfSupportedDataRates only for the pimary slot.
	  The other slots of the same reader either point to the same
	  array or point to a statically allocated array.
	* [r1806] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): exit the while if you find a
	  correct speed in the case of a card too fast
	* [r1805] src/ccid.c: ccid_open_hack(): update
	  the spanish PIN Pad string since the number of remaining tries
	  in always displayed at the first character

2006-01-17  Ludovic Rousseau

	* [r1804] src/ccid_usb.c: OpenUSBByName():
	  check that usbDevice[previous_reader_index].dev is still valid
	  before dereferencing it Thanks to Martin Paljak for the bug
	  report
	* [r1803] src/Makefile.am: use @PTHREAD_CFLAGS@
	  and @PTHREAD_LIBS@
	* [r1802] configure.in: use LIBS instead of
	  LDLIBS when checking if pcsc-lite is installed
	* [r1801] src/ccid_serial.c:
	  OpenSerialByName(): call CloseSerial() if the "Get firmware" or
	  "Change card movement notification" command failed

2006-01-16  Ludovic Rousseau

	* [r1800] src/commands.c,
	  src/commands.h: SecurePINVerify(): bug
	  circumvention for the GemPC Pinpad (bNumberMessage)

2006-01-12  Ludovic Rousseau

	* [r1799] src/ccid.c: ccid_open_hack(): use { }
	  around DEBUG_COMM() in an if-else since DEBUG_COMM() is not a
	  function but an multi-instruction macro

2006-01-11  Ludovic Rousseau

	* [r1798] readers/GemPCPinpad.txt,
	  readers/supported_readers.txt: add Gemplus
	  GemPC Pinpad
	* [r1797] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): if the card is faster than the
	  reader (TA1=97 for example) we try to use a no so bad speed
	  (corresponding to TA1=96, 95 or 94) instead of the default speed
	  of TA1=11
	* [r1796] src/ccid.c: ccid_open_hack(): load
	  the localisation strings according to LANG environment variable.
	  Languages supported: de, en, es, fr, it
	* [r1795] src/Info.plist,
	  src/ccid.c: move the comment about APDU mode
	  from ccid_open_hack() to Info.plist since it is configured there
	* [r1794] src/ccid.h,
	  src/commands.c: SecurePINModify(): bug
	  circumvention for the GemPC Pinpad
	* [r1793] src/commands.c,
	  src/commands.h: SecurePINModify(): modify the
	  user command to make the SPR 532 and Cherry ST 2000C firmware
	  happy
	* [r1792] src/ccid_usb.c: OpenUSBByName(): use
	  log level INFO instead of CRITICAL to display copyright
	  information
	* [r1791] src/ccid_usb.c: release the allocated
	  ressources only when the last slot of a multi-slot reader is
	  closed
	* [r1790] src/Info.plist,
	  src/ccid.h,
	  src/commands.c,
	  src/commands.h,
	  src/ifdhandler.c: allow to select the power
	  on voltage using Info.plist instead of recompiling the source
	  code

2006-01-03  Ludovic Rousseau

	* [r1789] README,
	  readers/supported_readers.txt: add SCM Micro
	  SCR 3311 and 3320 in the "Should work but untested by me" list
	* [r1788] README: add URL for SCM Micro SCR 3310
	* [r1787] README,
	  readers/SCR355.txt,
	  readers/supported_readers.txt: add support
	  for SCM Micro SCR 355

2006-01-02  Ludovic Rousseau

	* [r1785] readers/Makefile.am: use
	  ACR38U-CCID.txt instead of ACR38.txt
	* [r1784] configure.in: use pkg-config for
	  libusb if available

2005-12-14  Ludovic Rousseau

	* [r1782]
	  readers/Verisign_secure_storage_token.txt:
	  update with new ./parse version

2005-12-08  Ludovic Rousseau

	* [r1780] src/ifdhandler.c: typo in a comment
	* [r1779] INSTALL: The GemPC Twin is not the
	  only serial CCID reader

2005-12-07  Ludovic Rousseau

	* [r1778] README,
	  readers/ACR38.txt,
	  readers/ACR38U-CCID.txt,
	  readers/supported_readers.txt: replace ACR 38
	  by ACR 38U-CCID since they are two different readers

2005-12-01  Ludovic Rousseau

	* [r1776] README,
	  readers/ASE_IIIe.txt,
	  readers/supported_readers.txt: add Athena ASE
	  IIIe USB V2 in "Supported CCID readers" list

2005-11-29  Ludovic Rousseau

	* [r1775] src/ccid_usb.c: OpenUSBByName(): do
	  not (re)set the usbDevice[].ccid.pbSeq field since we just
	  copied the complete structure just before
	* [r1774] src/ifdhandler.c: Avoid a possible
	  division by 0 if f or d parameter is null. This could happen
	  only with non-ISO cards with TA1=0x00 or other undefined values
	* [r1773] src/towitoko/atr.c: add support of
	  non-ISO TA1=0x97 (Di=7 is/was RFU)
	* [r1771] examples/scardcontrol.c,
	  src/ccid.c,
	  src/ccid_serial.c,
	  src/commands.c,
	  src/defs.h,
	  src/ifdhandler.c,
	  src/openct/proto-t1.c,
	  src/towitoko/defines.h,
	  src/towitoko/pps.c,
	  src/utils.c: remove PCSC/ from the pcsc-lite
	  #include header files since the PCSC/ part is already given by
	  `pkg-config --cflags libpcsclite`
	* [r1770] configure.in: rewrite the libusb
	  detection code to: - use libusb-config if available -
	  --enable-libusb do not give a path anymore but just a yes/no
	  status. paths/arguments/etc must be given using LIBUSB_CFLAGS
	  and LIBUSB_LIBS - use AC_TRY_LINK_FUNC() instead of
	  AC_CHECK_LIB() so we do not explicitely give the library name.
	  This name should come from LIBUSB_LIBS
	* [r1769] configure.in: in libusb detection
	  code: restore CPPFLAGS to $saved_CPPFLAGS instead of $saved_LIBS
	* [r1768] configure.in: recommand the use of
	  PCSC_CFLAGS=... instead of CFLAGS=... to find the pcsc-lite
	  headers
	* [r1767] configure.in: use $CPPFLAGS instead
	  of $CFLAGS since we only need to set the C preprocessor to find
	  the .h files

2005-11-27  Ludovic Rousseau

	* [r1761] README: release 0.9.4
	* [r1760] readers/MySmartPad.txt: new file for
	  MySMART PAD V2.0
	* [r1759] README: add Cherry SmartTerminal
	  ST2XXX
	* [r1758] readers/Makefile.am: add 3 missing
	  reader descriptions

2005-11-24  Ludovic Rousseau

	* [r1754] configure.in: we need pcsc-lite
	  1.2.9-beta9 or greater
	* [r1752] src/ifdhandler.c:
	  IFDHGetCapabilities(): use info instead of comm debug level to
	  print the number of slots supported by the reader
	* [r1751] examples/scardcontrol.c: update
	  copyright date
	* [r1750] examples/scardcontrol.c: in Modify
	  PIN command we need to read 3 lines from the keyboard (old, new
	  and confirm PINs)
	* [r1749] examples/scardcontrol.c: use a buffer
	  of 40 instead of 10 to reader the keyboard since the PIN may be
	  longer than 8 digits
	* [r1747] src/commands.c:
	  SecurePINVerify()/SecurePINModify(): set the response length to
	  0 in case of (write) communication error
	* [r1746] src/commands.c: SecurePINModify():
	  set the response length to 0 in case of error in the command
	  format
	* [r1745] src/ifdhandler.c: IFDHControl(): use
	  sizeof(PCSC_TLV_STRUCTURE) instead of 6
	* [r1743] examples/scardcontrol.c: my check if
	  the applet is present was wrong
	* [r1742] examples/scardcontrol.c: exit if the
	  test applet is not found
	* [r1740] configure.in: do not duplicate the
	  definition of PCSCLITE_HP_DROPDIR in --enable-ccidtwindir since
	  it is already defined in --enable-usbdropdir This prevented the
	  successful execution of ./configure when -pedantic-errors is used
	* [r1739] src/openct/proto-t1.c: t1_xcv():
	  correct the comment about &rmax
	* [r1738] src/openct/proto-t1.c: t1_xcv(): the
	  second argument of CCID_Receive() is (unsigned int *) so we
	  can't use &rmax since &rmax is a (size_t *) and may not be the
	  same on 64-bits architectures for example (iMac G5) */
	* [r1737] configure.in,
	  src/Makefile.am: tokenparser.l is only needed
	  when pcscd is not used (Solaris). It is not needed on Mac OS X
	  since LTPBundleFindValueWithKey() is provided by pcscd
	* [r1735] configure.in: use libusb-config(1) to
	  get, if possible, correct values for LIBUSB_CFLAGS and
	  LIBUSB_LIBS
	* [r1734] configure.in: replace dnl by #
	* [r1733] configure.in,
	  src/Makefile.am: use
	  LIBUSB_CFLAGS/LIBUSB_LIBS instead of LDFLAGS/CPPFLAGS for libusb
	  configuration

2005-11-22  Ludovic Rousseau

	* [r1730] README: add the "SCM Micro SCR
	  3310-NTTCOM" in the "Should work but untested by me" list. See
	  http://archives.neohapsis.com/archives/dev/muscle/2005-q4/0217.html
	* [r1729] readers/supported_readers.txt: add
	  SCM SCR 3310 NTTCom. See
	  http://archives.neohapsis.com/archives/dev/muscle/2005-q4/0217.html

2005-11-16  Ludovic Rousseau

	* [r1717] examples/scardcontrol.c: Modify PIN:
	  use a 4 digit PIN so we can test it using the test Java Card
	  applet
	* [r1716] examples/scardcontrol.c: Modify PIN:
	  bInsertionOffsetOld and bInsertionOffsetNew starts from the APDU
	  data (5th byte) and not the APDU start (first byte)
	* [r1715] examples/scardcontrol.c: add a modify
	  PIN dump command
	* [r1714] examples/scardcontrol.c: Modify PIN:
	  add a comment for bNumberMessage
	* [r1713] examples/scardcontrol.c: Modify PIN:
	  use 0x03 for bNumberMessage since the GemPC Pinpad rejects any
	  other valu. The SPR 532 needs 0 here
	* [r1712] examples/scardcontrol.c: verify PIN:
	  use 0x01 for bNumberMessage for the GemPC Pinpad
	* [r1711] examples/scardcontrol.c: verify PIN:
	  use 0x02 (validation key pressed) for bEntryValidationCondition
	  as the GemPC Pinpad rejects any other values

2005-11-15  Ludovic Rousseau

	* [r1705] Makefile.am: use svn2cl.sh instead of
	  rcs2log since we migrated to subversion
	* [r1704] src/commands.c: SecurePINModify():
	  set the readTimeout to at least 30 seconds since we are not
	  waiting after an APDU but after a human (after the reader in
	  fact).

2005-11-07  Ludovic Rousseau

	* [r1703] src/ccid_serial.c,
	  src/ccid_usb.c: remove #ifdef
	  DEBUG_LEVEL_COMM since DEBUG_LEVEL_COMM is a numeric value and
	  not a compilation flag anymore. Debug is always active and
	  filtered by pcscd.
	* [r1702] src/Info.plist,
	  src/debug.h: exchange COMM and PERIODIC debug
	  values so that all except PERIODIC value is 7

2005-10-30  Ludovic Rousseau

	* [r1701] src/commands.c: SecurePINModify():
	  correct management of bMsgIndex2 and bMsgIndex3
	* [r1700] src/commands.c: SecurePINModify(): do
	  not copy the ulDataLength field to the CCID frame
	* [r1699] src/ccid.h: #define CHERRYST2000

2005-10-19  Ludovic Rousseau

	* [r1692] readers/SPR532.txt: firmware 5.07
	* [r1691] examples/scardcontrol.c: declare
	  offset, pin_verify and pin_modify variable only if needed

2005-09-27  Ludovic Rousseau

	* [r1677] src/commands.c: CCID_Transmit():
	  cmd[8-9] is the expected length in character mode only. It shall
	  be 0x0000 for TPDU and short APDU modes.

2005-09-26  Ludovic Rousseau

	* [r1676] examples/scardcontrol.c: use the new
	  HandlerTest applet commands
	* [r1675] src/commands.c: SecurePINVerify():
	  set the readTimeout to at least 30 seconds since we are not
	  waiting after an APDU but after a human.
	* [r1674] src/ccid.h:
	  _ccid_descriptor.readTimeout is in seconds even for USB. The
	  comment was wrong

2005-09-20  Ludovic Rousseau

	* [r1670] src/commands.c: SecurePINVerify():
	  update the size of ulDataLength field as defined in PCSCv2 part
	  10, revision 2.01.04, september 2005
	* [r1669] examples/scardcontrol.c: use
	  HOST_TO_CCID_16/HOST_TO_CCID_32

2005-09-05  Ludovic Rousseau

	* [r1641] src/ccid_usb.c: get_data_rates():
	  check the response size only if bNumDataRatesSupported is non
	  zero
	* [r1640] src/parse.c: if
	  bNumDataRatesSupported is 0 we get the list size from what GET
	  DATA RATES command returns idem for bNumClockSupported
	* [r1639] src/parse.c: do not request data
	  rates if the reader reports it support a 0 length list. Idem for
	  clocks.
	* [r1638] src/parse.c: print
	  bNumClockSupported: as %d and not 0x%02X

2005-09-01  Ludovic Rousseau

	* [r1635] examples/scardcontrol.c: also work
	  with T=1 cards
	* [r1634] examples/scardcontrol.c: debug modify
	  PIN test code
	* [r1633] readers/supported_readers.txt: add
	  Cherry ST1044U
	* [r1632]
	  readers/CherrySmartTerminalST2XXX.txt,
	  readers/supported_readers.txt: add Cherry
	  SmartTerminal ST-2XXX
	* [r1631] examples/scardcontrol.c: add sample
	  code to perform FEATURE_VERIFY_PIN_DIRECT and
	  FEATURE_MODIFY_PIN_DIRECT if the reader supports it
	* [r1630] src/ccid_ifdhandler.h,
	  src/commands.c,
	  src/commands.h,
	  src/ifdhandler.c: add support of PC/SC v2
	  part 10 CM_IOCTL_GET_FEATURE_REQUEST add support of
	  FEATURE_VERIFY_PIN_DIRECT and FEATURE_MODIFY_PIN_DIRECT remove
	  support of IOCTL_SMARTCARD_VENDOR_VERIFY_PIN (now obsoleted)

2005-08-25  Ludovic Rousseau

	* [r1626] README: add Cherry ST-1044U in the
	  supported list
	* [r1625] readers/CherryST1044U.txt: new file

2005-08-21  Ludovic Rousseau

	* [r1622] README: move the "Cherry XX44
	  keyboard" from "should work" to "supported" list

2005-08-16  Ludovic Rousseau

	* [r1619] .cvsignore,
	  aclocal/.cvsignore,
	  build/.cvsignore,
	  examples/.cvsignore,
	  readers/.cvsignore,
	  src/.cvsignore,
	  src/towitoko/.cvsignore,
	  trunk/PCSC/.cvsignore, trunk/PCSC/doc/.cvsignore,
	  trunk/PCSC/doc/example/.cvsignore, trunk/PCSC/etc/.cvsignore,
	  trunk/PCSC/libmusclecard/.cvsignore,
	  trunk/PCSC/libmusclecard/doc/.cvsignore,
	  trunk/PCSC/libmusclecard/src/.cvsignore,
	  trunk/PCSC/libmusclecard/utils/.cvsignore,
	  trunk/PCSC/libmusclecard/utils/bundleTool/.cvsignore,
	  trunk/PCSC/m4/.cvsignore, trunk/PCSC/src/.cvsignore,
	  trunk/PCSC/src/PCSC/.cvsignore, trunk/PCSC/src/utils/.cvsignore,
	  trunk/PCSC/win32/.cvsignore: removed since we use SVN and not
	  CVS anymore Thanks to Martin Paljak for the idea

2005-08-13  Ludovic Rousseau

	* [r1614] src/Info.plist: document
	  DRIVER_OPTION_RESET_ON_CLOSE
	* [r1613] src/ccid_usb.c: CloseUSB(): call
	  usb_reset() only if DRIVER_OPTION_RESET_ON_CLOSE is set. The
	  problem was that a device reset also disconnects the keyboard on
	  a keyboard + reader device.
	* [r1612] src/ccid_ifdhandler.h: #define
	  DRIVER_OPTION_RESET_ON_CLOSE

2005-08-11  Ludovic Rousseau

	* [r1610] readers/CherryXX44.txt: update adding
	  clock frequencies and data rates
	* [r1609] src/parse.c: check that we do not
	  receive more data rates anc clock frequencies than the reader
	  supports
	* [r1608] src/ccid_usb.c: get_data_rates():
	  check that we do not get more data rates than the reader supports

2005-08-03  Ludovic Rousseau

	* [r1600] src/commands.c: CCID_Receive(): log
	  time extension messages at priority COMM instead of CRITICAL.
	  Thanks to Martin Paljak for the patch.

2005-08-02  Ludovic Rousseau

	* [r1585] src/ccid_usb.c: OpenUSBByName(): call
	  usb_close() if the device can't be used

2005-07-04  Ludovic Rousseau

	* [r1570] src/ifdhandler.c: IFDHControl():
	  having a NULL RxBuffer is not an error since it is enough to
	  send the code in dwControlCode Thanks to Martin Paljak for the
	  patch
	* [r1569] src/ccid_usb.c: OpenUSBByName():
	  vendorID, productID are unsigned avoids a "comparison between
	  signed and unsigned" warning
	* [r1568] src/ccid.h: struct _ccid_descriptor:
	  dwMaxDataRate is unsigned avoids a "comparison between signed
	  and unsigned" warning
	* [r1567] src/ccid.h: struct _ccid_descriptor:
	  dwMaxCCIDMessageLength is unsigned avoids a "comparison between
	  signed and unsigned" warning
	* [r1566] src/commands.c: CmdPowerOn(): atr_len
	  is unsigned avoids a "comparison between signed and unsigned"
	  warning

2005-06-16  Ludovic Rousseau

	* [r1563] src/parse.c: parse wLcdLayout
	* [r1562] src/parse.c: parse bClassEnveloppe
	* [r1561] src/parse.c: pares bClassGetResponse
	* [r1560] src/parse.c: parse dwSynchProtocols

2005-06-15  Ludovic Rousseau

	* [r1559] src/ifdhandler.c: #include
	  <PCSC/reader.h>
	* [r1558] examples/scardcontrol.c: remove
	  definition of SCARD_CTL_CODE and #include <PCSC/reader.h>
	* [r1557] src/ccid_ifdhandler.h: remove
	  definition of SCARD_CTL_CODE
	* [r1556] configure.in: check the availability
	  of reader.h (provided by pcsc-lite 1.2.9-beta8)
	* [r1555] configure.in: check against pcsc-lite
	  1.2.9-beta8 instead of beta7

2005-06-04  Ludovic Rousseau

	* [r1547] src/ccid_usb.c: WriteUSB(): do not
	  parse usbDevice[reader_index].dev->bus if it is a NULL pointer
	  (the device has been removed for example)

2005-05-27  Ludovic Rousseau

	* [r1546] README: Add Eutron SIM Pocket Combo
	  and Eutron CryptoIdentity in the supported list
	* [r1545] readers/CryptoIdentity.txt,
	  readers/supported_readers.txt: add Eutron
	  CryptoIdentity

2005-05-20  Ludovic Rousseau

	* [r1523] README: add Verisign Secure Token in
	  the supported list
	* [r1522] README: add RSA SecureID SID800 in
	  the UNsupported list
	* [r1521] README: add Verisign Secure Storage
	  Token in the supported list
	* [r1520] readers/sid800.txt: regenerate using
	  new ./parse

2005-05-05  Ludovic Rousseau

	* [r1514] readers/Makefile.am,
	  readers/SCR331-DI-NTTCom.txt: add
	  SCR331-DI-NTTCom.txt
	* [r1513] readers/Makefile.am: rename
	  KAAN_mIDentity.txt in mIDentity.txt
	* [r1512] readers/ACR38.txt,
	  readers/CardMan3121.txt,
	  readers/GemPCKey.txt,
	  readers/KAAN_Advanced.txt,
	  readers/KAAN_Base.txt,
	  readers/LTC31.txt,
	  readers/Oz776S.txt,
	  readers/SCR331-DI.txt,
	  readers/SCR331.txt,
	  readers/SCR3310.txt,
	  readers/SCR335.txt,
	  readers/SIM_Pocket_Combo.txt,
	  readers/SPR532.txt,
	  readers/mIDentity.txt: regenerate using the
	  latest src/parse program
	* [r1511] src/ifdhandler.c: do not #include
	  <math.h> since we now use +1 instead of ceil() to round the
	  calculated timeouts to the upper integer - we do not need an
	  mathematical exact value. the {usb,serial}read must just not
	  timeout before the reader firmware timeouts - we avoid a
	  dependency/link on the math library
	* [r1510] src/ifdhandler.c: T0_card_timeout():
	  use intermediate variables EGT, BWT, CWT, etu to improve code
	  readability
	* [r1509] src/ifdhandler.c: T0_card_timeout():
	  declare EGT, WWT as double instead of int to have some precision
	  We also calculate EGT and WWT in milliseconds instead of seconds

2005-05-04  Ludovic Rousseau

	* [r1508] README,
	  readers/supported_readers.txt: add SCM Micro
	  SCR 331-DI NTTCom in the "Should work but untested by me" list
	* [r1507] src/ifdhandler.c:
	  IFDHCreateChannelByName(), T0_card_timeout(), T1_card_timeout():
	  also include other card parameters (TC1 for T=0, TC1 and CWI for
	  T=1) in the timeout formula
	* [r1506] README,
	  readers/supported_readers.txt: rename "Kobil
	  KAAN mIDentity" in "Kobil mIDentity"
	* [r1505] src/ifdhandler.c: IFDHICCPresence():
	  add support of SCR331-DI NTTCom Thanks to Takuto Matsuu fro the
	  patch
	* [r1504] src/ccid.h: #define SCR331DINTTCOM
	  0x04E65120
	* [r1503] readers/supported_readers.txt: add
	  the manufacturer name in the reader name

2005-05-02  Ludovic Rousseau

	* [r1496] src/ccid_serial.c: typo in the data
	  rates list
	* [r1495] src/ifdhandler.c:
	  T0_card_timeout()/T1_card_timeout(): use ceil() to round the
	  timeout
	* [r1494] src/ccid.c,
	  src/ccid.h: ccid_error(): function is (const
	  char *) instead of (char *) to avoid a "warning: passing arg 4
	  of `ccid_error' discards qualifiers from pointer target type"
	  using gcc 3.4
	* [r1493] readers/CherryXX33.txt,
	  readers/DellSCRK.txt,
	  readers/GemPC433_SL.txt,
	  readers/GemPCTwin.txt,
	  readers/KAAN_SIM_III.txt: regenerate using
	  the new parse command
	* [r1492] src/commands.c: CmdEscape(): replay
	  the command if we receive STATUS_COMM_NAK
	* [r1491] src/ccid_serial.c: ReadSerial(): if
	  we get a NAK we return STATUS_COMM_NAK to the above layer to
	  replay the command instead of just restarting the read
	* [r1490] src/defs.h: add STATUS_COMM_NAK
	* [r1489] src/parse.c: display the clock
	  frequencies supported by the reader
	* [r1488] src/parse.c: move the display of
	  supported data rates after printing bNumDataRatesSupported info
	* [r1487] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): check if the baud rate is present
	  in the baud rates list only if the list is present. Otherwise we
	  use the old behavior.
	* [r1486] src/ccid_usb.c: get_data_rates(): if
	  the reader do not support GET DATA RATES we return NULL instead
	  of a manually constructed/fake list
	* [r1485] src/ccid_serial.c,
	  src/ccid_usb.c: Open*ByName(): initialise
	  dwMaxDataRate field
	* [r1484] src/ccid.h: add dwMaxDataRate field
	  (again)
	* [r1483] src/ccid_usb.c: get_data_rates():
	  check that the reader sends a DATA RATES list size multiple of 4
	  othewise it is an error
	* [r1482] src/parse.c: display the bit value of
	  dwFeatures in the text message
	* [r1481] src/parse.c: test all the 4 bytes of
	  dwFeatures against 0 and not just the first one
	* [r1480] src/parse.c: do not display the list
	  returned by GET DATA RATES if the list size is not a multiple of
	  4 (n % 4 != 0)

2005-04-27  Ludovic Rousseau

	* [r1479] src/ccid_serial.c,
	  src/ccid_usb.c: Open*ByName: do not
	  initialise the now disappeared .dwMaxDataRate field
	* [r1478] src/ccid.h: _ccid_descriptor: remove
	  the now useless dwMaxDataRate field
	* [r1477] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): we do not check if (card_baudrate
	  <= ccid_desc->dwMaxDataRate) since find_baud_rate() will tell us
	  if the speed is supported or not by the reader
	* [r1476] src/ccid_usb.c: get_data_rates(): if
	  the CCID command GET DATA RATES is nto supported the array of
	  supported rates contains only the default and max data rates
	* [r1475] src/ccid_usb.c: get_data_rates():
	  test if int_array is NULL (and not buffer)
	* [r1474] readers/Makefile.am: add the new or
	  missing readers
	* [r1473] configure.in: version 0.9.4
	* [r1472] src/ccid_serial.c:
	  OpenSerialByName(): inhibit the Plug-n-Play string by setting
	  the RTS signal to low. Mainly useful for the GemPC Card (PCMCIA)
	* [r1471]
	  readers/Verisign_secure_storage_token.txt:
	  Verisign Secure Storage Token
	* [r1470] readers/Verisign_secure_token.txt:
	  Verisign Secure Token (without mass memory)
	* [r1469] readers/supported_readers.txt: add
	  Verisign Secure Token and VeriSign Secure Storage Token
	* [r1468] src/parse.c: display the supported
	  data rates using the CCID command GET DATA RATES
	* [r1467] src/ccid_usb.c: get_data_rates(): use
	  the real interface number instead of 0
	* [r1460] src/ccid_usb.c: get_data_rates():
	  buffer argument of usb_control_msg is (char *) and not (unsigned
	  char *)
	* [r1459] src/ccid_usb.c: get_data_rates()
	  returns an unsigned int [] (not just int [])
	* [r1458] src/ccid_serial.c: SerialDataRates[]
	  is unsigned

2005-04-26  Ludovic Rousseau

	* [r1454] src/openct/proto-t1.c: t1_xcv():
	  increase the read timeout if the card sends and WTX request
	* [r1453] src/ccid_serial.c,
	  src/ccid_usb.c: use the calculated read
	  timeout instead of a fixed value
	* [r1452] src/ifdhandler.c: calculate and store
	  the read timeout according to the card ATR instead of using a
	  fixed value of 60 seconds
	* [r1451] src/ifdhandler.c: add
	  T0_card_timeout() and T1_card_timeout()
	* [r1450] src/defs.h: /* Default communication
	  read timeout in seconds */ #define DEFAULT_COM_READ_TIMEOUT 2
	* [r1449] src/ccid.h: struct _ccid_descriptor:
	  add unsigned int readTimeout field
	* [r1448] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): only use a data rate supported by
	  the reader in the PPS negociation, otherwise we stay at the
	  default speed.
	* [r1447] src/ccid_serial.c:
	  OpenSerialByName(): the reader does not support the Get Data
	  Rates CCID function so the list of supported data rates is hard
	  coded.
	* [r1446] src/ccid_usb.c: OpenUSBByName(): get
	  the list of data rates the reader supports See 3.7.3 Get Data
	  Rates (page 25) from CCID spec 1.00
	* [r1445] src/ccid.h: struct _ccid_descriptor:
	  add unsigned int *arrayOfSupportedDataRates field
	* [r1444] src/ccid_serial.c:
	  OpenSerialByName(): set card movement notification in
	  synchronous mde
	* [r1443] configure.in: we need pcsc-lite
	  1.2.9-beta7 and not just beta5 since we use the new log API
	* [r1442] src/ifdhandler.c: extra_egt():
	  rewrite the function comment
	* [r1441] src/ifdhandler.c: extra_egt(): reuse
	  the same baud rate calculation formula
	* [r1440] src/ifdhandler.c: extra_egt(): change
	  two if() in one
	* [r1439] src/ifdhandler.c: change comments:
	  TBi (i>2) is BWI/CWI not BWI/BCI

2005-04-25  Ludovic Rousseau

	* [r1438] src/ifdhandler.c: extra_egt(): some
	  (bogus) cards require an extra EGT but the ATR does not say so.
	  We try to detect the bogus cards and set TC1=2
	* [r1437] src/ifdhandler.c: light code
	  reformating

2005-04-22  Ludovic Rousseau

	* [r1436] readers/supported_readers.txt: add
	  Eutron SIM Pocket Combo

2005-04-21  Ludovic Rousseau

	* [r1427] src/openct/checksum.c,
	  src/openct/checksum.h,
	  src/openct/proto-t1.h: #include <stdint.h>
	  only if HAVE_STDINT_H is defined. Some old FreeBSD do not have
	  stdint.h. Thanks to Tilman Linneweh for the patch

2005-04-13  Ludovic Rousseau

	* [r1426] readers/SIM_Pocket_Combo.txt: Eutron
	  SIM Pocket Combo (the reader is dual slot and is seen as two
	  readers)
	* [r1425] readers/sid800.txt: RSA SecurID
	  SID800 Hardware Authenticator

2005-04-12  Ludovic Rousseau

	* [r1422] src/Info.plist: "Generic CCID reader"
	  -> "Generic CCID driver"

2005-03-17  Ludovic Rousseau

	* [r1411] src/ccid.c: ccid_error(): use
	  log_msg() instead of debug_msg()
	* [r1410] src/debug.c: change debug_msg() in
	  log_msg() and add the priority argument same for debug_xxd()
	  changed in log_xxd() These functions are only used by the parse
	  command and if the driver is not used with pcsclite
	* [r1409] src/debug.h: use pcsclite debuglog.h
	  header file and use its Log?() macro instead of debug_msg().
	  This adds color to the log messages because Log?() macros use
	  log_msg() instead of the deprecated debug_msg() function.
	* [r1408] src/ifdhandler.c: init_driver(): use
	  DEBUG_INFO2() instead of debug_msg()
	* [r1407] src/tokenparser.l: add "%option
	  nounput" to avoid the compilation warning "`yyunput' defined but
	  not used"
	* [r1406] src/towitoko/atr.c:
	  ATR_GetDefaultProtocol(): the message "no default protocol found
	  in ATR. Using T=0" is not CRITICAL but INFO only
	* [r1405] configure.in: store & restore the
	  value of LIBS around the macro AC_CHECK_LIB(pcsclite,...) to
	  avoid adding an automatic -lpcsclite to LIBS
	* [r1404] configure.in: do not check for
	  SCardEstablishContext is the user does NOT want to use pcsc-lite
	  (with --disable-pcsclite)

2005-03-14  Ludovic Rousseau

	* [r1400] README: release 0.9.3
	* [r1399] COPYING, README,
	  src/ccid.c, src/ccid.h,
	  src/ccid_ifdhandler.h,
	  src/ccid_serial.c,
	  src/ccid_serial.h,
	  src/ccid_usb.c,
	  src/ccid_usb.h,
	  src/commands.c,
	  src/commands.h,
	  src/debug.c, src/debug.h,
	  src/defs.h,
	  src/ifdhandler.c,
	  src/openct/checksum.h,
	  src/openct/proto-t1.h,
	  src/utils.c, src/utils.h:
	  change licence from GNU GPL to GNU LGPL
	* [r1398] configure.in: version 0.9.3

2005-03-04  Ludovic Rousseau

	* [r1397] readers/KAAN_SIM_III.txt,
	  readers/mIDentity.txt: Add KAAN SIM III and
	  KAAN mIDentity
	* [r1396] config.h.in: add HAVE_LIBPCSCLITE
	* [r1395] configure.in: use $PCSC_LIBS instead
	  of $PCSCLITE_LIBS since we used PKG_CHECK_MODULES(PCSC, ...)
	* [r1394] README,
	  readers/supported_readers.txt: add Kobil KAAN
	  mIDentity in supported reader list
	* [r1393] README,
	  readers/supported_readers.txt: add Kobil KAAN
	  SIM III in supported readers list
	* [r1392] README,
	  readers/supported_readers.txt: add SCR 3310
	* [r1391] readers/SCR3310.txt: SCR3310

2005-02-28  Ludovic Rousseau

	* [r1368] src/ifdhandler.c,
	  src/towitoko/atr.c: use ATR_t instead of ATR
	* [r1367] src/towitoko/atr.h: rename ATR struct
	  to ATR_t do not conflict with ATR field defined by
	  PCSC/ifdhandler.h. This allows compilation using tcc (Tiny C
	  Compiler)

2005-02-27  Ludovic Rousseau

	* [r1361] configure.in: check that we can link
	  with libpcsclite needed by examples/scardcontrol.c
	* [r1360] configure.in: exits with an error if
	  usbdropdir is not defined
	* [r1359] configure.in: if
	  /usr/local/lib/pkgconfig/libpcsclite.pc exists (default
	  pcsc-lite configuration) we exit telling the user to use
	  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
	* [r1358] configure.in: do not check for
	  pkg-config since we can do without it

2005-02-25  Ludovic Rousseau

	* [r1356] readers/CardMan3121.txt,
	  readers/CherryXX33.txt,
	  readers/CherryXX44.txt,
	  readers/GemPC433_SL.txt,
	  readers/KAAN_Advanced.txt,
	  readers/KAAN_Base.txt,
	  readers/SCR331-DI.txt,
	  readers/SCR331.txt,
	  readers/SCR335.txt,
	  readers/SPR532.txt: typo: correct ICC by CCID
	  where needed
	* [r1355] src/parse.c: typo: used "ICC" instead
	  of "CCID"
	* [r1354] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): return immediately if the reader
	  has the bit CCID_CLASS_AUTO_PPS_PROP set since he will perform
	  PPS and SetParameters himself
	* [r1353] src/ccid.h: #define
	  CCID_CLASS_AUTO_PPS_PROP 0x00000040
	* [r1352] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): calculate the value of pps[2] (TA1)
	  even if CCID_CLASS_AUTO_PPS_CUR bit is set and no PPS will be
	  generated by the driver since this value is also used later by
	  the SetParameters()
	* [r1351] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): use "card_baudrate <=
	  ccid_desc->dwMaxDataRate" instead of "card_baudrate <
	  ccid_desc->dwMaxDataRate" to not miss the maximum speed value
	* [r1350] Makefile.am: we do not need to
	  distribute mkinstalldirs
	* [r1349] configure.in: define
	  WITHOUT_PCSC=false when pcsclite _is_ used

2005-02-23  Ludovic Rousseau

	* [r1346] examples/scardcontrol.c: #include
	  <sys/time.h> instead of <time.h> to get correct definition of
	  struct timeval under Mac OS X
	* [r1343] src/debug.c: if you use
	  --disable-pcsclite and do _not_ want to see the logs sent to
	  stderr just #undef LOG_TO_STDERR
	* [r1342] configure.in,
	  src/Makefile.am: if --disable-pcsclite is
	  used we must link the library with debug.c to provide debug_msg()
	* [r1341] examples/Makefile.am: use
	  @PCSC_CFLAGS@ and @PCSC_LIBS@

2005-02-21  Ludovic Rousseau

	* [r1330] src/ccid_serial.c:
	  OpenSerialByName(): use tx_buffer[] = { 0x02 } insead of "\x02"
	  since we want 1 byte only and not a null-terminated string
	* [r1329] src/Makefile.am: use @PCSC_CFLAGS@
	* [r1328] configure.in: use pkg-config(1) to
	  find everything related to pcsc-lite if you installed pcsc-lite
	  in /usr/local you may use $
	  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure if you do
	  not have pkg-config installed you may use $
	  CFLAGS=-I/usr/local/include/PCSC ./configure

2005-02-20  Ludovic Rousseau

	* [r1327] src/ccid_usb.c: add an "interface
	  field" in _usbDevice. This value is set in OpenUSB() and used in
	  CloseUSB(). The struct usb_device structure is half "corrupted"
	  after the USB device is removed and we wanted to use it when
	  when closing the driver after a reader removal. This caused a
	  crash with libusb 0.1.10.
	* [r1326] README: add Kobil KAAN Base & KAAN
	  Advanced readers in the supported list
	* [r1325] src/ccid_usb.c: Bogus_firmwares[]:
	  add Kobil KAAN Base & KAAN Advanced readers
	* [r1324] readers/supported_readers.txt: add
	  Kobil KAAN Base & KAAN Advanced readers
	* [r1323] readers/KAAN_Advanced.txt,
	  readers/KAAN_Base.txt: firmware 0.37

2005-02-04  Ludovic Rousseau

	* [r1322] readers/ACR38.txt: new firmware (but
	  still with version 1.0) with the wMaxPacketSize bug removed

2005-02-02  Ludovic Rousseau

	* [r1321] README: move the ACR 38 from
	  Unsupported to Supported list

2005-01-26  Ludovic Rousseau

	* [r1319] readers/Makefile.am: add the new or
	  missing readers
	* [r1318] readers/CherryXX44.txt,
	  readers/KAAN_Advanced.txt,
	  readers/KAAN_Base.txt: new readers
	  descriptions

2005-01-20  Ludovic Rousseau

	* [r1317] README: add Cherry XX44 keyboard
	  (SmartBoard G83-6744)
	* [r1316] readers/supported_readers.txt: add
	  Cherry XX44 (SmartBoard G83-6744)

2005-01-13  Ludovic Rousseau

	* [r1314] README: move the SCM Micro readers
	  from unsupported to supported list and document how to upgrade
	  the firmwares Thanks to Torsten Maykranz for his support
	* [r1313] readers/SCR335.txt: New model with
	  firmware 5.14 (instead of 4.16)
	* [r1312] src/ccid_usb.c: Bogus_firmwares[]:
	  the 3 SMC readers had the same (cut-n-paste) USB identification
	* [r1311] src/commands.c: CmdXfrBlockCHAR_T0():
	  move a variable declaration at the beginning of the function
	  since ISO C89 forbids mixed declarations and code
	* [r1310] src/commands.c: SecurePIN():
	  proprietary command to add the PIN code in the APDU without any
	  padding (this is not possible with the CCID specs). Thanks to
	  Martin Paljak for the patch.
	* [r1309] src/ccid.h: define SPR532 USB
	  identification

2005-01-11  Ludovic Rousseau

	* [r1302] configure.in: typo: shat -> what

2005-01-09  Ludovic Rousseau

	* [r1301] src/commands.c: SecurePIN(),
	  CCID_Transmit(), SetParameters(): check that the user provided
	  command is not too large (avoid a possible buffer overflow)
	* [r1300] examples/scardcontrol.c: The APDU now
	  comes _after_ the CCID structure as described the CCID
	  specifications.
	* [r1299] src/commands.c: SecurePIN(): directly
	  use the user buffer passed instead of reversing the APDU/CCID
	  structure. It is now as described in the CCID specifications.
	  Thanks to Martin Paljak. I was wrong.

2004-12-19  Ludovic Rousseau

	* [r1298] src/ccid_usb.c: SPR 532 firmware
	  previous to 5.04 is bogus regarding min/max pin lengths
	* [r1297] readers/SPR532.txt: update with
	  firmware 5.04

2004-10-27  Ludovic Rousseau

	* [r1292] src/ccid_serial.c:
	  OpenSerialByName(): use %s instead of %d for dev_name

2004-10-20  Ludovic Rousseau

	* [r1290] examples/scardcontrol.c: set
	  wPINMaxExtraDigit: set max to 8 (instead of 4) to differentiate
	  it from min (set to 4)
	* [r1289] examples/scardcontrol.c: in
	  wPINMaxExtraDigit the bytes order is max,min and not min,max.
	  The comments were wrong

2004-10-19  Ludovic Rousseau

	* [r1288] readers/supported_readers.txt: add
	  Oz776
	* [r1287] src/Info.plist,
	  src/ccid_ifdhandler.h,
	  src/ccid_usb.c: check firmware version to
	  avoid firmwares with bugs. You can still use a bigus firmware by
	  setting DRIVER_OPTION_USE_BOGUS_FIRMWARE in Info.plist
	* [r1286] src/commands.c,
	  src/commands.h,
	  src/openct/proto-t1.c,
	  src/towitoko/pps.c: Add support of character
	  level communication (CCID_CLASS_CHARACTER). Thanks to Jeffrey Dai

2004-10-14  Ludovic Rousseau

	* [r1285] readers/DellSCRK.txt: add idVendor &
	  idProduct using the new parse command

2004-10-07  Ludovic Rousseau

	* [r1284] readers/Makefile.am: reorganize the
	  list and add Oz776S.txt
	* [r1283] readers/Oz776S.txt: O2Micro Oz776S
	  USB Hub smartcard reader
	* [r1282] readers/SCR331-DI.txt,
	  readers/SCR335.txt,
	  readers/SPR532.txt: add idVendor & idProduct
	  using the new parse command
	* [r1281] src/ccid_usb.c,
	  src/ccid_usb.h: the first argument of
	  get_desc() is lun instead of channel and the function uses
	  LunToReaderIndex() to get the reader index
	* [r1280] src/parse.c: use lun instead of
	  channel as first argument to get_desc() and use the returned
	  value to detect an error
	* [r1279] readers/SCR331.txt: add idVendor &
	  idProduct using the new parse command

2004-10-06  Ludovic Rousseau

	* [r1278] readers/ACR38.txt,
	  readers/CardMan3121.txt,
	  readers/CherryXX33.txt,
	  readers/DellSK-3106.txt,
	  readers/GemPC433_SL.txt,
	  readers/GemPCKey.txt,
	  readers/GemPCTwin.txt,
	  readers/LTC31.txt: add idVendor & idProduct
	  using the new parse command
	* [r1277] src/parse.c: display idVendor and
	  idProduct
	* [r1276] src/parse.c: display USB bcdDevice
	  field. Is it the device firmware release?
	* [r1275] src/parse.c: add support of
	  "Character level exchange"

2004-10-04  Ludovic Rousseau

	* [r1265] configure.in: do not redefine
	  PKG_CONFIG_PATH when checking the pcsc-lite version since the
	  variable is already defined a few lines above

2004-10-03  Ludovic Rousseau

	* [r1263] examples/scardcontrol.c: add "THIS
	  PROGRAM IS NOT DESIGNED AS A TESTING TOOL!

2004-09-30  Ludovic Rousseau

	* [r1261] src/ifdhandler.c: mask bStatus to get
	  the ICC state since bSatus may also indicate an error in b6-b7
	* [r1260] src/ccid.h: #define
	  CCID_CLASS_CHARACTER
	* [r1259] src/ccid.h: define OZ776 USB
	  identification
	* [r1258] src/ccid.h: define
	  CCID_ICC_STATUS_MASK and status states
	* [r1257] src/commands.c: CmdGetSlotStatus():
	  card absent or mute is not an communication error (even if the
	  CCID command result indicates a command failure)
	* [r1256] src/ccid_usb.c:
	  get_ccid_usb_interface(): the O2Micro OZ776S reader has a wrong
	  USB descriptor. The extra[] field is associated with the last
	  endpoint instead of the main USB descriptor.

2004-09-29  Ludovic Rousseau

	* [r1254] examples/Makefile.am,
	  src/Makefile.am: use @AM_CPPFLAGS@ (defined
	  by configure.in) instead of `pkg-config libpcsclite --cflags`
	  since PKG_CONFIG_PATH may not be correct here
	* [r1253] configure.in: define
	  AM_CPPFLAGS=`pkg-config libpcsclite --cflags` here since we also
	  defined/exported a "valid" PKG_CONFIG_PATH
	* [r1252] src/Makefile.am: do not define
	  parse_CFLAGS since AM_CPPFLAGS is already defined with the same
	  value
	* [r1251] configure.in: try to find pkg-config
	  files in /usr/local/lib/pkgconfig since pcsc-lite installs them
	  in this directory by default

2004-09-08  Ludovic Rousseau

	* [r1228] src/ccid.c: ccid_open_hack(): do not
	  use a null terminated C string for the TPDU->APDU switch command
	  since the command is NOT a C string
	* [r1227] src/commands.c: CmdPowerOn(): do not
	  use a null terminated C string for the EMV->ISO switch command
	  since the command is NOT a C string
	* [r1226] src/commands.c: switch the Cherry
	  xx33 reader in ISO mode if power up in EMV mode fails. Thanks to
	  St&#65533;phane Durand for the bug report.
	* [r1225] src/ccid.h: #define CHERRYXX33
	  0x046A0005

2004-09-03  Ludovic Rousseau

	* [r1213] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): return the result value of
	  SetParameters() in case of error instead of always
	  IFD_COMMUNICATION_ERROR. This will allow to return
	  IFD_NOT_SUPPORTED in some cases and avoid a PTS negociation
	  failure (and card ignored) in pcscd.
	* [r1212] src/commands.c: SetParameters():
	  returns IFD_NOT_SUPPORTED if the CCID error is "command not
	  supported".

2004-08-24  Ludovic Rousseau

	* [r1196] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): the bmTCCKST bits shall be _set_
	  not cleared
	* [r1195] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): we shall indicate the T=1 checksum
	  used (LRC/CRC) in the SetParameters() command
	* [r1194] src/openct/proto-t1.c:
	  t1_negociate_ifsd: the frame size is 5 only for LRC checksum.
	  The correct size is (4 + t1->rc_bytes)
	* [r1193] src/utils.c: ReleaseReaderIndex:
	  return 0 since the function is not void ()

2004-08-17  Ludovic Rousseau

	* [r1189] src/Info.plist: use the official
	  doctype, public and system ids. Thanks to Ville Skytt&#65533; and OpenCT

2004-08-15  Ludovic Rousseau

	* [r1186] README: release 0.9.2
	* [r1185] examples/Makefile.am,
	  src/Makefile.am: use AM_CPPFLAGS =
	  `pkg-config libpcsclite --cflags`
	* [r1184] config.h.in: no need to define
	  HAVE_PCSC_IFDHANDLER_H (the check section changed in
	  configure.in)
	* [r1183] configure.in: use `pkg-config
	  libpcsclite --cflags` to locate ifdhandler.h and do not use
	  PCSC/ifdhandler.h but just ifdhandler.h

2004-08-10  Ludovic Rousseau

	* [r1165] README: place the "Known problems"
	  near the affected reader and not in a independent section for
	  clarification

2004-08-06  Ludovic Rousseau

	* [r1160] src/parse.c: try to
	  IFDHCloseChannel() only if we opened at least one reader
	* [r1157] src/ccid.c: ccid_open_hack(): update
	  the hack for the SCR331-DI contactless now we use multi-slots
	* [r1156] src/ifdhandler.c: IFDHICCPresence():
	  periodic debug message indicating the card presence/absence
	* [r1155] src/ifdhandler.c: use a much cleaner
	  way to check presence of a contactless card with a multislot
	  SCR331-DI reader
	* [r1154] src/ifdhandler.c: IFDHICCPresence():
	  call get_ccid_descriptor() on reader_index instead of Lun
	* [r1153] src/ifdhandler.c:
	  FDHGetCapabilities() tag TAG_IFD_SLOT_THREAD_SAFE: Can NOT talk
	  to multiple slots at the same time (at least until it is fully
	  validated)
	* [r1152] src/ifdhandler.c:
	  IFDHCreateChannel()/IFDHCreateChannelByName(): if the OpenPort()
	  call fails we ReleaseReaderIndex() and do not call
	  ccid_open_hack()
	* [r1151] src/ccid_usb.c: for multi-slots
	  readers IFDHCreateChannel*()/OpenUSB is called for each slot. If
	  we are opening a new slot of an already opened reader we reuse
	  the same data (same libusb structures) and share the same pbSeq.
	* [r1150] src/commands.c: use
	  (*ccid_descriptor->pbSeq)++ instead of ccid_descriptor->bSeq++
	* [r1149] src/ccid_serial.c,
	  src/ccid_usb.c: use pbSeq instead of bSeq
	* [r1148] src/ccid.h: replace "unsigned char
	  bSeq" by "unsigned char *pbSeq" so that two slots of a same
	  reader can share the same sequence number
	* [r1147] src/ccid_serial.c: use a dynamic
	  timeout when reading the serial port. The first timeout use when
	  detecting the reader is 2 seconds to not wait too long if no
	  reader is connected. Later timeouts are set to 1 minute to allow
	  long time APDU.

2004-08-04  Ludovic Rousseau

	* [r1146] src/ccid.h,
	  src/ccid_serial.c,
	  src/ccid_usb.c,
	  src/ifdhandler.c: remove defaultFeatures
	  management (was used for SCR331-DI hack)
	* [r1145] src/Makefile.am: add "parse_CFLAGS =
	  `pkg-config libpcsclite --cflags`" so that parse.c can find and
	  use <ifdhandler.h>
	* [r1144] src/parse.c: do not use
	  OpenUSB/CloseUSB but IFDHCreateChannel/IFDHCloseChannel to use
	  the ReaderIndex[] mechanism
	* [r1143] src/utils.c: update copyright date
	  (add 2004)
	* [r1142] src/utils.c: LunToReaderIndex():
	  debug message when Lun is not found
	* [r1141] src/utils.c: GetNewReaderIndex():
	  debug message when ReaderIndex[] is full
	* [r1140] src/utils.c: GetNewReaderIndex():
	  store Lun in the first free ReaderIndex[] entry
	* [r1139] src/towitoko/pps.c: typo: Receivig ->
	  Receiving
	* [r1138] src/towitoko/pps.c: PPS_Exchange():
	  do not recalculate the PPS length from the received PPS but take
	  it from the number of bytes actually received (it may not be a
	  PPS)

2004-07-28  Ludovic Rousseau

	* [r1107] src/ifdhandler.c: use reader_index
	  instead of lun as reader identification allocate (in
	  IFDHCreateChannel*) and release (in IFDHCloseChannel)
	* [r1106] src/ccid.c,
	  src/ccid.h,
	  src/ccid_ifdhandler.h,
	  src/ccid_serial.c,
	  src/ccid_serial.h,
	  src/ccid_usb.c,
	  src/ccid_usb.h,
	  src/commands.c,
	  src/commands.h: use reader_index instead of
	  lun as reader identification
	* [r1105] src/utils.c,
	  src/utils.h: use a more complex Lun -> reader
	  transformation (Lun>>16) is not usable for multi-slots readers

2004-07-27  Ludovic Rousseau

	* [r1103] src/openct/proto-t1.c: this code
	  fails EMV test 1771-4 (should be a residue)

2004-07-26  Ludovic Rousseau

	* [r1102] src/openct/proto-t1.c: - debug some
	  cases - add ISO 7816-3 rule number in comments
	* [r1101] src/ccid_serial.c,
	  src/ccid_usb.c: initialise
	  ccid.defaultFeatures field

2004-07-22  Ludovic Rousseau

	* [r1096] configure.in: use pkg-config to test
	  the release version of pcsc-lite

2004-07-21  Ludovic Rousseau

	* [r1095] configure.in: version 0.9.2
	* [r1094] src/ifdhandler.c: hack to support the
	  SCR331-DI contactless interface
	* [r1093] src/ccid.c: ccid_open_hack(): detect
	  and activate the contactless interface of the SCR331-DI
	* [r1092] src/commands.c: use bCurrentSlotIndex
	  as the slot number in the CCID commands (instead of 0)
	* [r1091] src/ccid_serial.c,
	  src/ccid_usb.c: initialise bMaxSlotIndex and
	  ccid.bCurrentSlotIndex fields
	* [r1090] src/ccid.h: add defaultFeatures field
	  for multislot readers with different dwFeatures for each slot.
	* [r1089] src/ccid.h: add SCR331DI
	  identification
	* [r1088] src/ccid.h: add bMaxSlotIndex and
	  bCurrentSlotIndex fields to support multislot readers (one USB
	  device with two or more card readers)

2004-07-20  Ludovic Rousseau

	* [r1087] src/openct/proto-t1.c: remove "||
	  sent_length" in "if (retries == 0 || sent_length)" since it is
	  an OpenCT code that should not be needed with the new automata.
	* [r1086] src/openct/proto-t1.c: update the
	  copyright, add my name to reflect the same change in OpenCT

2004-07-19  Ludovic Rousseau

	* [r1085] src/ifdhandler.c: update
	  IFDHControl() prototype to replace LPVOID by PUCHAR (prototype
	  changed in pcsc-lite-1.2.9-beta5)
	* [r1084] src/ifdhandler.c,
	  src/openct/proto-t1.c,
	  src/openct/proto-t1.h: BUG: I forgot to
	  initialise the t1.lun field. It failed to work with more than
	  one readers and a T=1 card in a TPDU reader.
	* [r1083] src/openct/proto-t1.c: in resync: we
	  set retries = 1 since when we return in the loop we have
	  retries--; Without this retries goes negative and the test 'if
	  (retries == 0)' will not become true again before a looooong
	  time.

2004-07-16  Ludovic Rousseau

	* [r1079] src/ccid_usb.c: OpenUSBByName(): use
	  base 0 instead of 16 in strtoul() so that you can express the
	  decimal value 15 as: 15 (decimal), 0xF (hex) or 017 (octal). It
	  is not really needed since the reader descriptions in Info.plist
	  are all in hex.
	* [r1078] src/ifdhandler.c: init_driver(): use
	  base 0 instead of 16 in strtoul() so that you can express the
	  decimal value 15 as: 15 (decimal), 0xF (hex) or 017 (octal)
	* [r1077] src/ccid_ifdhandler.h,
	  src/ccid_serial.c,
	  src/ccid_usb.c,
	  src/ifdhandler.c,
	  src/parse.c, src/utils.c:
	  rename PCSCLITE_MAX_READERS in CCID_DRIVER_MAX_READERS This
	  value is not defined by pcsc-lite but is internal to the CCID
	  driver. By default pcsc-lite supports the same number of readers
	  (16).
	* [r1076] src/commands.c: BUG: CmdPowerOn():
	  use memmove() instead of memcpy() to copy the ATR bytes since
	  the source end destination buffers (with a more than 10 bytes
	  long ATR) overlaps. Bug spotted by splint http://www.splint.org/

2004-07-15  Ludovic Rousseau

	* [r1075] src/openct/proto-t1.h: use "uint8_t
	  *" instead of "unsigned char *" in the prototype of
	  t1_state_t.checksum field.
	* [r1074] src/tokenparser.l: initialise
	  pcDesiredKey to NULL instead of 0
	* [r1073] src/commands.c: BUG in
	  CmdXfrBlockTPDU_T1(): the t1_transceive() returned value was
	  stored in an unsigned int and tested if < 0 (error case). Of
	  course the test was never true.
	* [r1071] src/openct/proto-t1.c: remove a
	  useless break; after a goto;
	* [r1070] src/openct/proto-t1.c,
	  src/openct/proto-t1.h: in t1_transceive() and
	  t1_negociate_ifsd() dad argument is unsigned.
	* [r1069] src/openct/checksum.h: replace
	  "unsigned char *" by "uint8_t *" to use the exact same prototype
	  as in the functions definition
	* [r1068] src/commands.c,
	  src/commands.h: i2dw() is not used outside
	  commands.c so declare it static
	* [r1067] examples/scardcontrol.c: allow splint
	  to continue parsing after use of type fd_set
	* [r1066] src/commands.c,
	  src/commands.h: CmdXfrBlockTPDU_T0() and
	  CmdXfrBlockTPDU_T1() are internal functions so declare them
	  static
	* [r1065] src/towitoko/atr.c: atr tables are
	  internal only so declare them static
	* [r1064] src/openct/proto-t1.c: define
	  internal functions as static
	* [r1063] src/openct/buffer.c,
	  src/openct/buffer.h: remove unused functions

2004-07-10  Ludovic Rousseau

	* [r1062] src/openct/proto-t1.c: change
	  "previous_block[1]" in "previous_block[PCB]"
	* [r1061] src/openct/proto-t1.c: remove unused
	  struct ifd_protocol_ops
	* [r1060] src/openct/proto-t1.c,
	  src/openct/proto-t1.h: IFD_PROTOCOL_MORE ->
	  IFD_PROTOCOL_T1_MORE IFD_PROTOCOL_STATE -> IFD_PROTOCOL_T1_STATE
	  renamed to be in line with OpenCT

2004-07-09  Ludovic Rousseau

	* [r1059] examples/scardcontrol.c,
	  src/ifdhandler.c,
	  src/parse.c: explicitely cast the returned
	  value as (void) if we don't use it
	* [r1058] src/ifdhandler.c:
	  IFDHSetProtocolParameters(): test the return value of
	  SetParameters()
	* [r1057] src/parse.c:
	  ccid_parse_interface_descriptor() is now static
	* [r1056] src/parse.c: make channel variable
	  (unsigned int) instead of (int)
	* [r1055] src/parse.c: include <sys/types.h> so
	  splint can parse the file
	* [r1054] src/ccid_serial.c,
	  src/ccid_usb.c,
	  src/ccid_usb.h: mark potentially null values
	  as /*@null@*/ for splint
	* [r1053] src/ccid_serial.c,
	  src/ccid_usb.c,
	  src/ifdhandler.c,
	  src/openct/proto-t1.c,
	  src/parse.c: mark unused arguments as
	  /*@unused@*/ for splint
	* [r1052] src/ccid_usb.c: include <sys/types.h>
	  so splint can parse the file
	* [r1051] src/ccid.c: the buffer var_text[]
	  was, in fact, used outside its declaration
	* [r1050] src/ccid_serial.c,
	  src/ccid_serial.h: ReadChunk() and
	  get_bytes() are internal use in ccid_serial.c so declare them
	  static
	* [r1049] src/ccid_serial.c,
	  src/ccid_usb.c: lun is (unsigned int) so
	  reader = LunToReaderIndex(lun) is also (unsigned int)
	* [r1048] src/ccid_serial.c:
	  OpenSerialByName(): arguments of CmdEscape() are unsigned
	* [r1047] src/ccid_serial.c: replace "121234"
	  by "123456" to make it more clear it is a memory reservation for
	  6 characters
	* [r1046] src/ccid_serial.c: remove a unneeded
	  cast in (int)lun
	* [r1045] src/ccid_serial.c: allow splint to
	  continue parsing after use of type fd_set
	* [r1044] src/ccid_serial.c: ReadSerial(): the
	  unknown card movement byte is in "c" not "buffer[3]"
	* [r1043] src/ccid.c,
	  src/ccid.h,
	  src/ccid_ifdhandler.h,
	  src/ccid_serial.c,
	  src/ccid_serial.h,
	  src/ccid_usb.c,
	  src/ccid_usb.h,
	  src/commands.c,
	  src/commands.h,
	  src/ifdhandler.c: lun is (unsigned int)
	  instead of (int) Avoid a warning by splint in #define
	  LunToReaderIndex(Lun) (Lun>>16) Left operand of >> may be
	  negative (int): lun >> 16

2004-07-02  Ludovic Rousseau

	* [r1023] src/Info.plist,
	  src/create_Info_plist.pl: replace VENDOR
	  pattern by MAGIC_VENDOR since we also have a VENDOR in
	  IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and then a collision. same
	  change for PRODUCT and FRIENDLYNAME to be homogenous.
	* [r1022] src/ccid_serial.c:
	  OpenSerialByName(): perform a command (get the reader firmware)
	  to be sure a GemPC Twin (serial or pcmcia) reader is connected
	* [r1021] src/openct/README: present where the
	  files come from and what I did

2004-07-01  Ludovic Rousseau

	* [r1019] configure.in: version 0.9.1
	* [r1018] README: release 0.9.1
	* [r1017] src/openct/proto-t1.h: #define
	  IFD_PARITY_ERROR
	* [r1015] README: release 0.9.0

2004-06-30  Ludovic Rousseau

	* [r1014] examples/scardcontrol.c: correct a
	  signedness issue
	* [r1013] src,
	  src/.cvsignore: rename tokenparser_macosx.?
	  in tokenparser_fake.?
	* [r1012] trunk/Drivers/ccid, .cvsignore: add
	  build-stamp and configure-stamp
	* [r1011] examples,
	  examples/.cvsignore: ignore temporary files
	* [r1010] src/towitoko/COPYING: LGPL licence
	* [r1009] configure.in: version 0.9.0
	* [r1008] src/towitoko/pps.c: PPS_Match() was
	  wrong when the confirmation is shorter than the request
	* [r1007] src/towitoko/pps.c,
	  src/towitoko/pps.h: PPS_Exchange() has a new
	  argument (unsigned char *pps1) which is the PPS1 returned by the
	  card (TA1 the card wants to use)
	* [r1006] src/towitoko/pps.c: CCID_Transmit()
	  now uses a 4th argument (unsigned char bBWI)
	* [r1005] src/towitoko/pps.c,
	  src/towitoko/pps.h: move macros
	  PPS_HAS_PPS?() from pps.c to pps.h
	* [r1004] src/towitoko/atr.c,
	  src/towitoko/atr.h: add
	  ATR_GetDefaultProtocol() function
	* [r1003] src/towitoko/atr.c,
	  src/towitoko/atr.h: remove unused functions
	* [r1002] src/towitoko/atr.c: the atr_f_table[]
	  and atr_d_table[] tables were partly wrong
	* [r1001] src/towitoko/README: - update the
	  text - the function ATR_GetDefaultProtocol() is mine (Ludovic
	  Rousseau)
	* [r1000] src/towitoko/defines.h: remove MIN()
	  and MAX() definitions
	* [r999] src/ifdhandler.c: if
	  DEBUG_LEVEL_PERIODIC is not set we temporaily remove
	  DEBUG_LEVEL_COMM in IFDHICCPresence() to avoid having the low
	  level debug every time pcscd test the card presence
	* [r998] src/ifdhandler.c: - removed CardUp()
	  and CardDown() - all the reader initialisation/negotiation is
	  now done in IFDHSetProtocolParameters() (that's why you need
	  pcsc-lite-1.2.9beta3)
	* [r997] src/utils.c: pcsclite.h moved in PCSC/
	* [r996] src/defs.h: the t1 field in struct
	  CCID_DESC changed from Protocol_T1 (towitiko) to t1_state_t
	  (openct)
	* [r995] src/debug.h: we do not need to have
	  PACKAGE defined (I do not remember what it was used for)
	* [r994] src/commands.c: CmdXfrBlockTPDU_T1():
	  use the T=1 TPDU layer from opensc/ instead of towitoko/
	* [r993] src/commands.c: CCID_Receive() returns
	  IFD_PARITY_ERROR if the error returned by the reader is 0xFD
	  (parity error) and IFD_COMMUNICATION_ERROR otherwise (so that
	  the T=1 TPDU layer can recover the error)
	* [r992] src/commands.c,
	  src/commands.h: CCID_Transmit() now has a new
	  "unsigned char bBWI" argument
	* [r991] src/commands.c: CmdPowerOn(): add a
	  mechanism to allow power on at 1.8V, 3V and then 5V as specified
	  by ISO 7816. We still use 5V for now to avoid problems with non
	  ISO compliant cards
	* [r990] src/commands.c: add __FUNCTION__ as
	  argument to ccid_error()
	* [r989] src/ccid.c,
	  src/ccid.h: ccid_error() now also has a "char
	  *function" argument to log the name of the function in which the
	  error occured
	* [r988] src/Makefile.am: - rename protocol_t1/
	  in towitoko/ to reflect the project the code comes from - remove
	  the now useless files from towitoko/ and add the files from
	  openct/
	* [r987] src/towitoko/apdu.h,
	  src/towitoko/protocol_t1.c,
	  src/towitoko/protocol_t1.h,
	  src/towitoko/t1_block.c,
	  src/towitoko/t1_block.h: remove these files
	  since I now use the T=1 TPDU code from OpenCT
	* [r986] src/openct,
	  src/openct/LICENSE,
	  src/openct/buffer.c,
	  src/openct/buffer.h,
	  src/openct/checksum.c,
	  src/openct/checksum.h,
	  src/openct/proto-t1.c,
	  src/openct/proto-t1.h: use T=1 TPDU code from
	  the OpenCT project <http://www.opensc.org/> The state automata
	  was greatly improved to manage "all" the possible errors cases.
	* [r985] src/Info.plist: document the possible
	  values for ifdLogLevel and ifdDriverOptions

2004-06-23  Ludovic Rousseau

	* [r972] examples/scardcontrol.c: - send Select
	  DF and Select EF APDU before Verify PIN - read stdin (consume
	  the "*" fake keys) if the pinpad is on a keyboard
	* [r971] configure.in: check for the presence
	  of PCSC/ifdhandler.h instead of ifdhandler.h
	* [r970] config.h.in: HAVE_IFDHANDLER_H is
	  renamed HAVE_PCSC_IFDHANDLER_H
	* [r969] README: add info for: - Cherry XX33
	  keyboard - Dell keyboard SK-3106 - Dell smart card reader
	  keyboard Move some readers in "Unsupported or partly supported
	  CCID readers:" - C3PO LTC31 - SCM Micro SCR 331 - SCM Micro SCR
	  335 - SCM Micro SPR 532

2004-06-22  Ludovic Rousseau

	* [r966] Makefile.am: ChangeLog is not a .PHONY
	  target but a real file

2004-06-13  Ludovic Rousseau

	* [r940] examples/scardcontrol.c: use
	  SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 instead of
	  SCARD_PROTOCOL_ANY since it is not defined in Micosoft PC/SC

2004-05-30  Ludovic Rousseau

	* [r910] configure.in: use 'pkg-config
	  libpcsclite --variable=usbdropdir' even if --prefix= is used.
	  You should use --enable-usbdropdir= and --enable-ccidtwindir= to
	  set to different values.

2004-05-26  Ludovic Rousseau

	* [r906] readers/DellSK-3106.txt: Dell keyboard
	  SK-3106
	* [r905] src/commands.c: set *rx_length to 0
	  when a ReadPort() error is returned. The problem was not solved
	  by ccid_usb.c 1.25.
	* [r904] src/commands.c: bPINOperation is not
	  passed in the user command since the command is "PIN
	  Verification" and nothing else
	* [r903] examples/scardcontrol.c: remove
	  useless bPINOperation

2004-05-25  Ludovic Rousseau

	* [r900] examples/scardcontrol.c,
	  src/ccid.h,
	  src/ccid_serial.c,
	  src/ccid_usb.c,
	  src/ifdhandler.c: add support for
	  SCardGetAttrib(.., IOCTL_SMARTCARD_VENDOR_VERIFY_PIN, ..) to
	  know if the reader supports SCardControl(..,
	  IOCTL_SMARTCARD_VENDOR_VERIFY_PIN, ..)
	* [r896] configure.in: add a --enable-pcsclite
	  option (default yes) so that the driver can be compiled for a
	  different framework (one needing tokenparser.l)
	* [r895] src/ccid_usb.c: set length to 0 when a
	  usb_bulk_read() error is returned
	* [r894] src/Makefile.am: install Info.plist
	  before the lib. This is for my convenience only because of my
	  debug setup.
	* [r893] src/Makefile.am: rename
	  tokenparser_macosx.l into tokenparser_fake.l since it is not
	  MacOSX specific.

2004-05-24  Ludovic Rousseau

	* [r892] examples/scardcontrol.c,
	  src/ccid.c,
	  src/ccid_serial.c,
	  src/ccid_serial.h,
	  src/ccid_usb.c,
	  src/ccid_usb.h,
	  src/commands.c,
	  src/commands.h,
	  src/debug.c,
	  src/ifdhandler.c,
	  src/towitoko/atr.h,
	  src/towitoko/protocol_t1.c: recompile using
	  gcc -pedantic and correct: - some C++ syntax comments - many
	  signedness "problems"
	* [r891] src/ccid_ifdhandler.h,
	  src/commands.c,
	  src/commands.h,
	  src/ifdhandler.c: add support for Secure PIN
	  through SCardControl() (see sample code in examples/)
	* [r890] src/ccid.c: - add some missing error
	  codes - low error values indicate the byte in error in the CCID
	  frame
	* [r889] examples,
	  examples/Makefile.am,
	  examples/scardcontrol.c: add examples for
	  SCardControl IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and
	  IOCTL_SMARTCARD_VENDOR_VERIFY_PIN
	* [r888] Makefile.am: add examples in SUBDIRS
	* [r887] configure.in: remove -fno-common from
	  CFLAGS since it is(?) gcc specific
	* [r886] readers/ACR38.txt,
	  readers/supported_readers.txt: add Advanced
	  Card Systems ACR 38
	* [r885] readers/CherryXX33.txt,
	  readers/supported_readers.txt: add Cherry XX33

2004-05-18  Ludovic Rousseau

	* [r882] src/ifdhandler.c: in
	  CardUp():SetParameters() the default TA1 is 0x11

2004-05-17  Ludovic Rousseau

	* [r881] src/Info.plist: add default
	  ifdDriverOptions set to 0x0000
	* [r880] src/ifdhandler.c: - add support of
	  IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE in IFDHControl() - read
	  ifdDriverOptions from Info.plist to limit the use of
	  IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE (idea from Peter Williams)
	* [r879] src/ccid.c,
	  src/commands.c: redefined CmdEscape() to pass
	  the CCID message instead of just a tag
	* [r878] src/ccid_usb.c,
	  src/ccid_usb.h: do not export
	  get_end_points() declaration and make the function static
	* [r877] src/Makefile.am,
	  src/ccid_ifdhandler.h,
	  src/ccid_serial.c,
	  src/commands.h,
	  src/defs.h, src/parse.c,
	  src/towitoko/atr.c,
	  src/towitoko/defines.h,
	  src/towitoko/protocol_t1.c,
	  src/utils.c: reorganize header files
	* [r876] config.h.in,
	  configure.in: check for pcsclite.h and
	  ifdhandler.h installed by recent pcsc-lite
	* [r875] src/pcscdefines.h: types and
	  definitions are now in <pcsclite.h>, "defs.h" and
	  "ccid_ifdhandler.h"
	* [r874] src/winsmcrd.h: removed since
	  pcsclite.h now defines SCARD_ATTR_*
	* [r873] src/ccid_ifdhandler.h: use the
	  ifdhandler.h provided by pcsc-lite so remove a lot of lines

2004-05-14  Ludovic Rousseau

	* [r872] configure.in: check that pkg-config
	  command is present before using it
	* [r871] INSTALL,
	  configure.in: use `pkg-config libpcsclite
	  --variable=usbdropdir` so you do not have to use
	  --enable-usbdropdir=DIR or --enable-ccidtwindir=DIR even if
	  pcscd does not use the default /usr/local/pcsc/drivers

2004-05-12  Ludovic Rousseau

	* [r863] README: document the libusb bug on
	  MacOS X with unplug/replug in a different USB socket
	* [r862] INSTALL, README:
	  move debug configuration from INSTALL to README since it is
	  dynamic now
	* [r861] README: remove the "readers
	  enumeration" part since this problem is now solved by
	  pcsc-lite-1.2.9
	* [r860] INSTALL: document the use of
	  'pkg-config libpcsclite --variable=usbdropdir'

2004-05-10  Ludovic Rousseau

	* [r840] src/ifdhandler.c: in IFDHPowerICC()
	  IFD_POWER_DOWN is just power down without a power up. Changed to
	  be compliant with IFD Handler specifications.

2004-05-07  Ludovic Rousseau

	* [r837] src/towitoko/protocol_t1.c: in
	  Protocol_T1_Negociate_IFSD() rename sblock in block since the
	  same variable is used for sent and received block. This was not
	  clear and was the source of reported bug [ #300707 ] "Delete
	  block before using it in t1_protocol.c" which is not a bug in
	  fact.

2004-05-06  Ludovic Rousseau

	* [r836] INSTALL: add a "configuring the driver
	  for the serial reader (GemPC Twin)" part

2004-05-04  Ludovic Rousseau

	* [r825] readers/Makefile.am: add DellSCRK.txt
	* [r824] readers/DellSCRK.txt,
	  readers/supported_readers.txt: add Dell smart
	  card reader keyboard

2004-04-19  Ludovic Rousseau

	* [r808] src/Makefile.am: add winsmcrd.h in
	  COMMON
	* [r807] src/ifdhandler.c: reset ATR string
	  (length = 0) when the card is powered down or not present
	* [r806] src/defs.h: typo in a comment
	* [r805] src/winsmcrd.h: list of tags for
	  SCardGetAttrib() like SCARD_ATTR_ATR_STRING
	* [r804] src/ifdhandler.c: add
	  SCARD_ATTR_ATR_STRING in addition to TAG_IFD_ATR in
	  IFDHGetCapabilities()

2004-04-16  Ludovic Rousseau

	* [r795] src/ifdhandler.c: new IFDHControl() API
	* [r794] src/ccid_ifdhandler.h: use a new
	  version from pcsc-lite with support of the new IFDHControl() API

2004-04-08  Ludovic Rousseau

	* [r781] src/ccid_usb.c: add support for the
	  libusb naming scheme: usb:%04x/%04x:libusb:%s
	* [r780] readers/SK-3106.txt,
	  readers/SPR532.txt: parse bPINSupport field
	* [r779] src/parse.c: parse bPINSupport field

2004-04-07  Ludovic Rousseau

	* [r778] readers/Makefile.am: also distribute
	  SK-3106.txt

2004-04-06  Ludovic Rousseau

	* [r777] config.h.in,
	  configure.in: remove --enable-debugcritical,
	  --enable-debuginfo, --enable-debugperiodic and
	  --enable-debugcomm options since the log level is now
	  dynamically managed by ifdLogLevel in Info.plist
	* [r776] src/Info.plist: define default
	  ifdLogLevel at 3 (DEBUG_LEVEL_CRITICAL | DEBUG_LEVEL_INFO)
	* [r775] src/debug.c: remove now useless #ifdef
	  DEBUG
	* [r774] src/ccid_serial.c,
	  src/ccid_usb.c: add { } to avoid ambiguities
	  now that DEBUG_* are "if (x) y" constructions
	* [r773] src/ifdhandler.c: during the first
	  IFDHCreateChannel*() init_debug() is called to read the value of
	  ifdLogLevel from the Info.plist
	* [r772] src/debug.h: change the DEBUG_* macros
	  from static (compilation conditional) to dynamic (if ())
	* [r771] src/Makefile.am: debug.c is only
	  needed by parse_SOURCES not COMMON
	* [r770] src/ifdhandler.c: do not return before
	  pthread_mutex_unlock() in IFDHCreateChannelByName()
	* [r769] src/ifdhandler.c: also call
	  ccid_open_hack() in IFDHCreateChannelByName()
	* [r768] src/ifdhandler.c: T=1 context is
	  initialized in CardUp(), not in IFDHCreateChannel()
	* [r766] src/ifdhandler.c: revert to nearly
	  previous version. - IFD_POWER_DOWN is power down and power up
	  (cold reset) - IFD_RESET is power up (warm reset) - IFD_POWER_UP
	  is power up

2004-04-05  Ludovic Rousseau

	* [r764] configure.in: version 0.4.2
	* [r763] readers/SK-3106.txt,
	  readers/supported_readers.txt: add support
	  for the Dell keyboard SK-3106
	* [r762] src/ccid_usb.c: define
	  ALLOW_PROPRIETARY_CLASS by default Proprietary USB Class (0xFF)
	  are (or are not) accepted A proprietary class is used for
	  devices released before the final CCID specifications were
	  ready. We should not have problems with non CCID devices becasue
	  the Manufacturer and Product ID are also used to identify the
	  device */

2004-03-31  Ludovic Rousseau

	* [r755] src/Makefile.am: use $(srcdir) instead
	  of ".". Thanks to Dr Russel Winder for the patch.

2004-03-30  Ludovic Rousseau

	* [r738] src/ccid_usb.c: allow proprietary CCID
	  Class byte but only if ALLOW_PROPRIETARY_CLASS is defined. You
	  should know what you do. Only useful for pre-CCID devices.
	* [r737] src/parse.c: - use
	  get_ccid_usb_interface() to also manage USB composite devices
	  (keyboards) - continue parsing even if bDescriptorType == 0xFF
	  (proprietary)
	* [r736] src/ccid_usb.h: define
	  get_ccid_usb_interface() only if __USB_H__ is defined (usb.h
	  included)

2004-03-23  Ludovic Rousseau

	* [r723] reconf: move the "cp aclocal.m4
	  build/" after autoreconf

2004-03-22  Ludovic Rousseau

	* [r722] reconf: cp aclocal.m4 build/

2004-03-18  Ludovic Rousseau

	* [r716] src/ifdhandler.c: Reset action is
	  power off and power on, not just power on

2004-02-27  Ludovic Rousseau

	* [r709] README: add C3PO LTC32, SCM Micro SCR
	  333 and C3PO TLTC2USB in the list of "Should work but untested
	  by me" readers
	* [r708] README: alphabetical reordering of
	  readers
	* [r707] readers/supported_readers.txt: add SCR
	  333

2004-02-24  Ludovic Rousseau

	* [r706] Makefile.am: use a shorter Perl script
	  to convert generate/convert ChangeLog

2004-02-14  Ludovic Rousseau

	* [r703] README: release 0.4.1
	* [r702] configure.in: version 0.4.1
	* [r701] readers/Makefile.am: distribute
	  SCR331-DI.txt and supported_readers.txt
	* [r700] src/Makefile.am: disribute
	  create_Info_plist.pl

2004-02-13  Ludovic Rousseau

	* [r698] configure.in: version 0.4.0
	* [r697] README: release 0.4.0

2004-02-12  Ludovic Rousseau

	* [r696] src/ifdhandler.c: huge rework of
	  CardUp()
	* [r695] src/towitoko/protocol_t1.c: return
	  with a error if the received bloc in less than 4 bytes (T=0
	  error response for example)
	* [r694] src/ccid_serial.c,
	  src/ccid_usb.c: fill dwDefaultClock and
	  dwMaxDataRate according to the reader descriptor
	* [r693] src/ccid.h: add dwDefaultClock and
	  dwMaxDataRate fields

2004-02-11  Ludovic Rousseau

	* [r692] src/ifdhandler.c: Perform PPS and IFSD
	  only if the reader does not do it automatically
	* [r691] src/ccid.h: add CCID_CLASS_AUTO_BAUD
	  and CCID_CLASS_AUTO_IFSD
	* [r690] src/towitoko/protocol_t1.c: add return
	  code tests in Protocol_T1_Negociate_IFSD()
	* [r689] src/towitoko/pps.c,
	  src/towitoko/pps.h: PPS_Exchange() now uses
	  'int lun' instead of 'Protocol_T1 * t1'
	* [r688] src/towitoko/protocol_t1.c: remove
	  debug message
	* [r687] src/ifdhandler.c: use
	  Protocol_T1_Negociate_IFSD() in CardUp()
	* [r686] src/towitoko/protocol_t1.c,
	  src/towitoko/protocol_t1.h: add
	  Protocol_T1_Negociate_IFSD()
	* [r685] src/ccid.h: add
	  CCID_CLASS_AUTO_CONF_ATR

2004-02-09  Ludovic Rousseau

	* [r683] src/ccid_usb.c: first bSeq is 0 (even
	  if 1 works ok)
	* [r682] src/ccid_usb.c: usb_reset() the device
	  before usb_close()

2004-02-05  Ludovic Rousseau

	* [r677] README: add Silitek SK-3105 keyboard
	  URL

2004-02-04  Ludovic Rousseau

	* [r676] src/debug.h: DEBUG_COMM4 was named
	  DEBUG_COMM3 due to cut-n-paste

2004-02-03  Ludovic Rousseau

	* [r673] src/ccid_ifdhandler.h,
	  src/ifdhandler.c: add CardUp() and CardDown()
	  for PowerOn and PowerOff actions
	* [r672] src/ccid.h,
	  src/ccid_serial.c,
	  src/ccid_usb.c: add dwMaxIFSD field
	* [r671] src/debug.h: add DEBUG_COMM3()
	* [r670] src/towitoko/pps.c,
	  src/towitoko/protocol_t1.c,
	  src/towitoko/t1_block.c: use my own debug
	  routines
	* [r669] readers/SCR331-DI.txt: new file

2004-02-02  Ludovic Rousseau

	* [r668] src/towitoko/protocol_t1.c: do not
	  restrict ifsc to Towitoko
	* [r667] src/towitoko/protocol_t1.c: remove PPS
	  hack
	* [r666] README: add SCR 331-DI in the "should
	  work" list
	* [r665] readers/supported_readers.txt,
	  src/Info.plist,
	  src/Makefile.am,
	  src/create_Info_plist.pl: use
	  create_Info_plist.pl to generate the installed Info.plist from
	  an Info.plist template and a list of supported readers.

2004-01-29  Ludovic Rousseau

	* [r663] src/ifdhandler.c: removed useless
	  function name in debug messages since we use __FUNCTION__
	* [r662] src/ccid_usb.c: - remove device_name[]
	  from struct _usbDevice - use naming scheme usb:vendor/product -
	  simplify (a bit) the code
	* [r661] src/ccid_usb.h,
	  src/parse.c: remore *device_name[] argument
	  from get_desc()
	* [r660] src/debug.h: add DEBUG_CRITICAL4

2004-01-27  Ludovic Rousseau

	* [r659] src/commands.c: set received size to 0
	  in case of error in CmdXfrBlockTPDU_T1
	* [r658] src/commands.c: in case of error exits
	  CCID_Receive() without copying an nonexistent anwser
	* [r655] src/ccid_usb.c: use DEBUG_CRITICAL2()
	  instead of DEBUG_CRITICAL()
	* [r654] README: add the "Silitek SK-3105
	  keyboard" in the "Should work but untested by me" list
	* [r653] trunk/Drivers/ccid, .cvsignore,
	  aclocal,
	  aclocal/.cvsignore, build,
	  build/.cvsignore, readers,
	  readers/.cvsignore: ignore some build files
	* [r652] src,
	  src/.cvsignore,
	  src/towitoko,
	  src/towitoko/.cvsignore: ignore some build
	  files
	* [r651] src/Info.plist: add Silitek SK-3105
	  keyboard
	* [r650] src/ccid_usb.c,
	  src/ccid_usb.h: add support of USB devices
	  with multiple interfaces (like the Silitek SK-3105 keyboard)
	* [r649] src/ccid_serial.c,
	  src/ccid_serial.h,
	  src/ccid_usb.c,
	  src/ccid_usb.h,
	  src/defs.h,
	  src/ifdhandler.c: add support of
	  IFDHCreateChannelByName

2004-01-22  Ludovic Rousseau

	* [r641] src/Makefile.am: move rules for
	  src/protocol_t1/ files in src/Makefile.am to avoid building a
	  (problematic) static library
	* [r640] src/towitoko/Makefile.am: removed
	  since rules for src/protocol_t1/ files are in src/Makefile.am

2004-01-15  Ludovic Rousseau

	* [r620] src/towitoko/apdu.h: define APDU_Cmd
	  and APDU_Rsp
	* [r619] src/towitoko,
	  src/towitoko/Makefile.am,
	  src/towitoko/README,
	  src/towitoko/atr.c,
	  src/towitoko/atr.h,
	  src/towitoko/defines.h,
	  src/towitoko/pps.c,
	  src/towitoko/pps.h,
	  src/towitoko/protocol_t1.c,
	  src/towitoko/protocol_t1.h,
	  src/towitoko/t1_block.c,
	  src/towitoko/t1_block.h: new files from
	  Carlos Prados towitoko-2.0.7 driver (with a bit of hacking)
	* [r618] src/Makefile.am: build protocol_t1
	  library
	* [r617] src/commands.c: add SetParameters()
	  CCID command
	* [r616] src/ifdhandler.c: add support of T=1
	  in TPDU mode
	* [r615] src/defs.h: add CcidDesc.t1 field
	* [r614] src/commands.c,
	  src/commands.h: replace CmdXfrBlockTPDU() by
	  CmdXfrBlockTPDU_T0() and CmdXfrBlockTPDU_T1()
	* [r613] src/commands.c: split
	  CmdXfrBlockShortAPDU() in CCID_Transmit() and CCID_Receive()
	* [r612] src/ccid_serial.c,
	  src/ccid_usb.c,
	  src/ifdhandler.c: call ccid_open_hack() in
	  IFDHCreateChannel() instead of in each OpenPort()
	* [r611] src/ccid.c,
	  src/commands.c,
	  src/commands.h,
	  src/ifdhandler.c: use an (int *) instead of a
	  PDWORD for rx_length argument
	* [r610] aclocal,
	  aclocal/Makefile.am,
	  aclocal/acx_pthread.m4: new files. add
	  definition of ACX_PTHREAD macro
	* [r609] src/ccid_ifdhandler.h,
	  src/ifdhandler.c: add get_ccid_slot() function
	* [r608] src/ccid_serial.c,
	  src/ccid_usb.c,
	  src/ifdhandler.c: remove function name from
	  debug message since __FUNCTION__ is now used in DEBUG_* macro
	  definition
	* [r607] src/Info.plist: add ActivCard
	* [r606] README: created an "Should work but
	  untested by me" section and add SCM Micro SPR 532 and ActivCard
	  USB reader 2.0

2004-01-08  Ludovic Rousseau

	* [r584] README: The crashes under MacOS X were
	  not because of a bug in libusb but because of a bug in pcscd
	  MacOS X hotplug.

2004-01-06  Ludovic Rousseau

	* [r581] src/ccid_usb.c: the USB extra field
	  length shall be exactly 54 bytes to be CCID.

2004-01-05  Ludovic Rousseau

	* [r580] src/debug.h: also print the function
	  name (__FUNCTION__) in the debug messages
	* [r579] src/ccid_usb.c,
	  src/parse.c: add a test on the USB extra
	  field length to avoid a crash and print an error message. This
	  occurs when the reader is _not_ CCID and the CCID driver is used
	  (wrong Info.plist for example).

2003-12-19  Ludovic Rousseau

	* [r578] INSTALL,
	  src/Makefile.am: build but do not install the
	  serial ccidtwin driver by default since it is useless on
	  computers without a serial port or without this reader for
	  example.

2003-12-16  Ludovic Rousseau

	* [r570] src/ccid_usb.c: read and write
	  timeouts are not symmetric. write timout can be shorter since
	  the reader and card is not supposed to do anything before
	  receiving (write) a command.

2003-12-12  Ludovic Rousseau

	* [r569] src/ifdhandler.c: return
	  IFD_NOT_SUPPORTED instead of IFD_SUCCESS in functions doing
	  nothing (yet) (IFDHSetCapabilities, IFDHSetProtocolParameters,
	  IFDHControl);

2003-12-11  Ludovic Rousseau

	* [r568] src/ifdhandler.c: set the result
	  buffer length to 0 in IFDHControl()

2003-11-25  Ludovic Rousseau

	* [r565] configure.in: do not try to find usb.h
	  and other libusb files if --disable-libusb is used. Needed if
	  you only want to build the serial driver. Thanks to Niki Waibel
	  for the patch.
	* [r564] INSTALL,
	  configure.in,
	  src/Makefile.am: add a --enable-ccidtwindir
	  argument to ./configure to specify the serial GemPC Twin
	  installation directory
	* [r563] Makefile.am,
	  config.h.in, configure.in,
	  reconf, src/ifdhandler.c:
	  use a updated version of acx_pthread.m4 needed for FreeBSD

2003-11-06  Ludovic Rousseau

	* [r556] configure.in: check that the installed
	  libusb implements usb_get_string_simple()

2003-11-04  Ludovic Rousseau

	* [r553] README: add SPR 532 in "Supported CCID
	  readers" list
	* [r552] README: release 0.3.2
	* [r551] configure.in: version 0.3.2
	* [r550] src/commands.c: comment out the
	  automatic GET RESPONSE part. I don't think it should be in the
	  driver. Maybe in pcscd instead?

2003-11-03  Ludovic Rousseau

	* [r547] readers/Makefile.am: also distribute
	  SPR532.txt

2003-11-01  Ludovic Rousseau

	* [r545] Makefile.am: bootstrap is no more
	  distributed (it is no more in CVS either)
	* [r544] src/Makefile.am: $(CCID_BUNDLE) is a
	  directory so use 'rm -r' in uninstall_ccid: target

2003-10-31  Ludovic Rousseau

	* [r543] src/Makefile.am: modify the hack to
	  compile under MacOSX.
	* [r542] reconf: config.guess, config.sub,
	  depcomp and ltmain.sh are in build/ so removed them there.
	* [r541] create_distrib.sh: useless since we
	  have a 'make dist' rule

2003-10-29  Ludovic Rousseau

	* [r531] src/Info.plist: add USB identification
	  for SPR 532
	* [r530] readers/SPR532.txt: add SPR 532
	  description even if it is not a "real" CCID reader.
	* [r529] src/parse.c: continue parsing even if
	  bInterfaceSubClass and bInterfaceProtocol are unsupported. This
	  may be the case with non "real" CCID readers.
	* [r528] src/parse.c: do not exit if the
	  InterfaceClass is 0xFF (proprietary). It is the case with old
	  readers manufactured before the final release of the CCID specs.

2003-10-28  Ludovic Rousseau

	* [r525] src/ccid_usb.c: correctly use the
	  device name in a debug message instead of a not yet initialised
	  field.
	* [r524] bootstrap: removed since ./reconf is
	  doing a correct job
	* [r523] README: move LTC31 reader from
	  unsupported to supported reader list. It was my fault since in
	  used odd INS byte in my test applet and odd INS bytes are
	  forbidden by ISO 7816-4 ch. 5.4.2 Instruction byte. Thanks to
	  Josep Mon&#65533;s Teixidor for pointing the problem.
	* [r522] src/commands.c: correct a stupid bug
	  that occurs with an APDU with 2 bytes response.

2003-09-23  Ludovic Rousseau

	* [r467] README: release 0.3.1
	* [r466] MANIFEST: update file list
	* [r465] README: add a note about T=1 cards and
	  readers in TPDU mode

2003-09-22  Ludovic Rousseau

	* [r464] src/ccid_ifdhandler.h: define
	  TAG_IFD_THREAD_SAFE introduced in pcsclite-1.2.0-rc3
	* [r463] src/ifdhandler.c: add support of
	  thread safe (APDU multiplexing on different readers)
	* [r462] src/ccid_serial.c: ReadChunk() realy
	  reads up to min_length bytes. Add some debug messages in the
	  state automata.
	* [r461] src/Makefile.am: modify install rules
	  so that root can use them even over NFS where root is nobody
	* [r460] config.h.in,
	  configure.in: add --enable-multi-thread for
	  thread safe support
	* [r459] Makefile.am,
	  reconf: add reconf file

2003-09-19  Ludovic Rousseau

	* [r453] src/ccid_serial.c,
	  src/ccid_serial.h: complete reimplementation
	  of the Twin serial protocol using a finite state automata (code
	  much simpler)

2003-09-16  Ludovic Rousseau

	* [r448] configure.in: Put back AC_PROG_CPP, it
	  has nothing to do with C++ but with C preprocessor
	* [r445] src/ccid.c: Do not switch to APDU mode
	  since it also swicth in EMV mode and may not work with non EMV
	  cards
	* [r444] src/Makefile.am: honor DESTDIR in
	  install rules (closes [ #300110 ])
	* [r443] configure.in: remove useless
	  AC_PROG_CPP (no C++ code in ccid driver)
	* [r438] configure.in: version 0.3.1
	* [r437] INSTALL: document the use of
	  --enable-libusb=PATH
	* [r436] configure.in: add --enable-libusb=PATH
	  option

2003-09-10  Ludovic Rousseau

	* [r425] README: I forgot to add "support of
	  "time request" from the card."
	* [r423] README: release 0.3.0
	* [r422] INSTALL: document the use of
	  ./configure script
	* [r421] Makefile.am: use ChangeLog instead of
	  ChangeLog.cvs since the dist Makefile target is looking at this
	  file name.
	* [r420] src/config.h: config.h is now
	  generated by ./configure
	* [r418] Makefile.am,
	  configure.in,
	  readers/Makefile.am: add readers/ in
	  generated .tar.gz archive
	* [r417] readers/CardMan3121.txt,
	  readers/GemPC433_SL.txt,
	  readers/GemPCKey.txt,
	  readers/GemPCTwin.txt,
	  readers/LTC31.txt,
	  readers/SCR331.txt,
	  readers/SCR335.txt: use new parse indentation
	  for more readability of supported features
	* [r415] config.h.in: new build process using
	  autoconf/automake
	* [r414] src/ccid_serial.c,
	  src/ccid_serial.h: manage serial protocol
	  used by the GemPC Twin. Thanks to Niki W. Waibel for a working
	  prototype.
	* [r413] src/ccid.c,
	  src/ccid.h: contains common CCID feature for
	  USB and serial (was in ccid_usb before)
	* [r412] src/reader.conf.in: used to generate a
	  correct reader.conf with the real library name
	* [r411] src/ccid_ifdhandler.h: remove
	  IFDSetEmv() definition. It is now useless.
	* [r410] src/ifdhandler.c: use OpenPort instead
	  of OpenUSB. move the complex TPDU management in commands.c (and
	  use it only if reader does not support APDU mode)
	* [r409] src/defs.h: transport abstraction:
	  define OpenPort, ClosePort, etc. to OpenSerial or OpenUSB
	  depending on TWIN_SERIAL compilation option
	* [r408] src/debug.h: test for PACKAGE and not
	  __CONFIG_H__ since the config.h file is not generated by
	  ./configure
	* [r407] src/commands.c,
	  src/commands.h: - support auto voltage at
	  power on if reader support it - support Gemplus proprietary
	  command to switch reader from TPDU to APDU mode - use APDU mode
	  if reader support it. make it easy to support extended APDU but
	  I have no reader to test this.
	* [r406] src/ccid_usb.c,
	  src/ccid_usb.h: redesign to separate
	  communication media and CCID protocol. call ccid_open_hack()
	  upon open to do some reader dependent magic.
	* [r405] src/parse.c: indent the output with
	  one feature per line (and not on the same line separated by ,)
	* [r404] Makefile,
	  src/Makefile, src/check,
	  src/ylwrap: new build process using
	  autoconf/automake
	* [r403] src/pcscdefines.h,
	  src/utils.c: use PCSCLITE_MAX_READERS instead
	  of PCSCLITE_MAX_CHANNELS
	* [r402] Makefile.am, NEWS,
	  bootstrap, build,
	  build/ylwrap,
	  configure.in,
	  src/Makefile.am: new build process using
	  autoconf/automake

2003-08-27  Ludovic Rousseau

	* [r343] MANIFEST,
	  src/Makefile,
	  src/capabilities.c: remove unused
	  capabilities.c file

2003-08-26  Ludovic Rousseau

	* [r342] README: release 0.2.0
	* [r341] create_distrib.sh: script to create
	  the .tar.gz
	* [r340] README: add a note about libusb
	  problem under *BSD
	* [r339] src/check: require pcsc-lite 1.2.0
	  instead of 1.1.2
	* [r326] README: the reader enumeration problem
	  also exist under GNU/Linux (is not MacOS specific)

2003-08-24  Ludovic Rousseau

	* [r322] MANIFEST: remove src/dep_stamp
	* [r321] README: add not about bugs/limitations
	  under MacOS X

2003-08-21  Ludovic Rousseau

	* [r314] src/parse.c: do not print garbage if
	  we can't get the iManufacturer or iProduct fields

2003-08-20  Ludovic Rousseau

	* [r309] src/config.h: comment low level debug
	  messages
	* [r308] src/Makefile: use ./ylwrap instead of
	  ylwrap
	* [r306] src/check: do not define LDFLAGS since
	  we get it from outside
	* [r305] src/Makefile: add needed MacOS X
	  frameworks to LDFLAGS (for parse and check)
	* [r304] MANIFEST: add src/ylwrap
	* [r303] src/ylwrap: wrapper to call (f)lex
	* [r302] MANIFEST: src/parse shall not be
	  distributed
	* [r301] src/ccid_usb.c: do not duplicate the
	  Info.plist filename but "calculate" it once
	* [r300] src/Makefile: Add support of MacOS X
	* [r299] src/Info.plist: use an <array></array>
	  for the alias enumeration

2003-08-14  Ludovic Rousseau

	* [r279] src/ccid_usb.c: use a 1 minute USB
	  timeout instead of the 1 second used for debug
	* [r278] MANIFEST: include in CVS
	* [r277] src/Makefile: remove parse binary in
	  clean target

2003-08-13  Ludovic Rousseau

	* [r276] src/Makefile: do not exit with failure
	  if makedepend(1) does not exist
	* [r275] INSTALL: Installation and check guide

2003-08-12  Ludovic Rousseau

	* [r273] README: release 0.1.0
	* [r269] trunk/Drivers/ccid, AUTHORS,
	  COPYING, Makefile,
	  README, readers,
	  readers/CardMan3121.txt,
	  readers/GemPC433_SL.txt,
	  readers/GemPCKey.txt,
	  readers/GemPCTwin.txt,
	  readers/LTC31.txt,
	  readers/SCR331.txt,
	  readers/SCR335.txt, src,
	  src/.dependencies,
	  src/Info.plist,
	  src/Makefile,
	  src/capabilities.c,
	  src/ccid_ifdhandler.h,
	  src/ccid_usb.c,
	  src/ccid_usb.h, src/check,
	  src/commands.c,
	  src/commands.h,
	  src/config.h, src/debug.c,
	  src/debug.h, src/defs.h,
	  src/ifdhandler.c,
	  src/parse.c, src/parser.h,
	  src/pcscdefines.h,
	  src/tokenparser.l,
	  src/utils.c, src/utils.h:
	  Initial revision

