From e1844232e3e05f2cd147e5bb28da794b912bac82 Mon Sep 17 00:00:00 2001 From: Ludovic Rousseau Date: Sat, 10 Aug 2019 11:56:57 +0200 Subject: [PATCH] New upstream version 1.4.31 --- ChangeLog | 333 +++++++- MacOSX/configure | 2 +- MacOSX/ifdhandler.h | 6 +- Makefile.am | 1 + Makefile.in | 5 +- README | 1312 -------------------------------- README.md | 1339 +++++++++++++++++++++++++++++++++ configure | 27 +- configure.ac | 2 +- ltmain.sh | 385 ++++------ m4/libtool.m4 | 3 +- readers/supported_readers.txt | 33 +- src/ccid_usb.c | 2 +- src/misc.h | 2 + src/parse.c | 9 +- src/simclist.c | 14 +- src/tokenparser.l | 2 + 17 files changed, 1888 insertions(+), 1589 deletions(-) delete mode 100644 README create mode 100644 README.md diff --git a/ChangeLog b/ChangeLog index d5edadc..e95059e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,335 @@ -commit db45750ebb2ce8d841f8e555e79f09108527aaa8 (HEAD -> master, origin/master, origin/HEAD) +commit 743e9a9daf4dd27128eb6be8b13562f0ea695fd5 (HEAD -> master, tag: ccid-1.4.31) +Author: Ludovic Rousseau +Date: Sat Aug 10 11:49:32 2019 +0200 + + Distribute README.md + + Autotools does not know about README.md file so we must add it explicitly. + + Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 680d7479c6b9eb02fabc657a727888c35e6fd31d (origin/master, origin/HEAD) +Author: Ludovic Rousseau +Date: Sat Aug 10 11:43:21 2019 +0200 + + Release 1.4.31 + + Signed-off-by: Ludovic Rousseau + + README.md | 27 +++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 28 insertions(+), 1 deletion(-) + +commit 6768d39c987a2fcca2d34516e7d042ebca63e009 +Author: Ludovic Rousseau +Date: Sat Aug 10 11:41:26 2019 +0200 + + Reformat README.md for a better MarkDown + + README.md | 1412 ++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 706 insertions(+), 706 deletions(-) + +commit 71d442ed5ef02a4115e6a2406db020fc3a7c417e +Author: Ludovic Rousseau +Date: Sat Aug 10 11:37:36 2019 +0200 + + Rename README in README.md + + We can now have a nice MarkDown rendering. + + README => README.md | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit d66f0fad276cf1210536c7534a2edd56e4f8350c (zotac/master) +Author: Ludovic Rousseau +Date: Wed Jul 31 17:08:12 2019 +0200 + + Add SPECINFOSYSTEMS DIAMOND token + + readers/SPECINFOSYSTEMS_DIAMOND_token.txt | 52 +++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 ++- + 2 files changed, 56 insertions(+), 1 deletion(-) + +commit c53375f8e8b1d41c729fac149b1c41218b94ae64 +Author: Ludovic Rousseau +Date: Mon Jul 29 23:08:05 2019 +0200 + + Add AvestUA AvestKey + + readers/AvestUA_AvestKey.txt | 49 +++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 ++++- + 2 files changed, 53 insertions(+), 1 deletion(-) + +commit 25fee850dd3de47d518f14e0fe84d9c98a4345b6 +Author: Godfrey Chung +Date: Fri Jun 28 15:46:03 2019 +0800 + + MacOSX/configure: fix checking error for dynamic library libusb + + The directory may contain other dynamic libraries and therefore libusb + is incorrectly found. + + MacOSX/configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ebf5010b64bc5e69346bff4617fa6eebed4fc40b +Author: Ludovic Rousseau +Date: Thu Jun 20 17:47:29 2019 +0200 + + Update PCSC-contib submodule + + PCSC-contrib | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fd83c6f797be6091e432a259c2ad65782fbaaa43 +Author: Ludovic Rousseau +Date: Thu Jun 20 17:46:30 2019 +0200 + + Update PCSC submodule + + Update PCSC/src/misc.h to get the fix for warning: 'PCSC_API' macro redefined + + PCSC | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0b88e9c82c9d1c795f7c6adfca83aa47a1bbaa76 +Author: Ludovic Rousseau +Date: Mon Jun 17 21:52:09 2019 +0200 + + Add HID Global Crescendo Key 0x002D + + readers/HID_Global_Crescendo_Key_0x002D.txt | 51 +++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 52 insertions(+) + +commit 3139b814bec05a5ea22ed063134d6611eca58110 +Author: Ludovic Rousseau +Date: Mon Jun 17 18:07:53 2019 +0200 + + Add HID Global Crescendo Key 0x002B + + readers/HID_Global_Crescendo_Key_0x002B.txt | 51 +++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 52 insertions(+) + +commit 0e1923bd3b0872a39b0ec25c24c84f9a768aad9d +Author: Ludovic Rousseau +Date: Mon Jun 17 18:06:39 2019 +0200 + + Add HID Global Crescendo Key 0x0029 + + readers/HID_Global_Crescendo_Key_0x0029.txt | 51 +++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 52 insertions(+) + +commit 4475166e07382b5b9a6cc88d0984308b72a2edc7 +Author: Ludovic Rousseau +Date: Mon Jun 17 18:05:22 2019 +0200 + + Add HID Global Crescendo Key 0x0028 + + readers/HID_Global_Crescendo_Key_0x0028.txt | 51 +++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 53 insertions(+), 1 deletion(-) + +commit dd0b2865d970ef7b69dbcf14f2bcaef13329d71d +Author: Ludovic Rousseau +Date: Sat Jun 15 15:37:24 2019 +0200 + + Add Route1 MobiKEY Fusion3 + + readers/Route1_MobiKEY_Fusion3.txt | 55 ++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 +++- + 2 files changed, 59 insertions(+), 1 deletion(-) + +commit 903ffe6f61dc1b3e2bd870ab8153114ced394277 +Author: Ludovic Rousseau +Date: Fri Jun 14 08:46:51 2019 +0200 + + Add extra_features for Gemalto IDBridge CT710 + + readers/extra_features/Gemalto_IDBridge_CT710.txt | 39 +++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +commit 006e405ecd534d9bfce93ebdcd40e3e687d4dbd4 +Author: Ludovic Rousseau +Date: Tue Jun 11 11:14:41 2019 +0200 + + parse: use libusb_strerror() instead of strerror(errno) + + We now display the error message from libusb when a libusb call fails. + + Fixes https://salsa.debian.org/rousseau/CCID/issues/2 + + src/parse.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 0d98000b414e6c489eeae71c83bc76bceb564f49 +Author: Ludovic Rousseau +Date: Tue Apr 2 19:00:19 2019 +0200 + + Add Avtor SecureToken (idProduct: 0x0020) + + readers/Avtor_SecureToken_0x0020.txt | 57 ++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 59 insertions(+), 1 deletion(-) + +commit 2a6c7245b19640eb3c71598cfe5f44abd1d75a23 +Author: Ludovic Rousseau +Date: Wed Mar 13 19:47:23 2019 +0100 + + Update Aladdin R.D. JaCartaReader reader name + + Is was "JaCarta3" + + readers/supported_readers.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f37941d448e0fca17ffb20282ce27311e02687e7 +Author: Ludovic Rousseau +Date: Tue Mar 12 18:29:58 2019 +0100 + + Add Aladdin R.D. JaCarta3 + + readers/Aladdin_R.D._JaCarta3.txt | 51 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 ++- + 2 files changed, 53 insertions(+), 1 deletion(-) + +commit 266d092cfab467d05fbd48b56436340adfd4e17a +Author: Ludovic Rousseau +Date: Thu Jan 17 20:15:28 2019 +0100 + + Add Bit4id miniLector Blue + + readers/bit4id_minilector-BLUE.txt | 54 ++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 55 insertions(+) + +commit 51df9ec8c7d701df9ff78aa32ea19f0a561a29aa +Author: Ludovic Rousseau +Date: Thu Jan 17 20:11:56 2019 +0100 + + Add Bit4id TokenME EVO v2 + + readers/bit4id_TokenME-EVO.txt | 50 ++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 51 insertions(+) + +commit bd6bd148ccd077073ecf8bd2a25eee94f485b935 +Author: Ludovic Rousseau +Date: Thu Jan 17 20:08:38 2019 +0100 + + Add Bit4id miniLector AIR EVO + + readers/bit4id_minilector-AIR.txt | 48 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 ++- + 2 files changed, 50 insertions(+), 1 deletion(-) + +commit 476f5a7b5eb4747ee22e5affec68e28cb4750597 +Author: Ludovic Rousseau +Date: Wed Jan 16 09:33:57 2019 +0100 + + Add Certgate GmbH ONEKEY ID 2 USB + + readers/Certgate_ONEKEY_ID_2_USB.txt | 49 ++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 ++- + 2 files changed, 51 insertions(+), 1 deletion(-) + +commit 2795ef5ab70a0de91071e1be84e29dcd727911d8 +Author: Ludovic Rousseau +Date: Sun Dec 30 17:35:40 2018 +0100 + + Add Alcor Link AK9563 + + readers/Alcor_Link_AK9563.txt | 156 ++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 +- + 2 files changed, 160 insertions(+), 1 deletion(-) + +commit 54831a762e888c8ad12b7e8d17a1be0dacd7404e +Author: Ludovic Rousseau +Date: Wed Dec 19 13:56:32 2018 +0100 + + Add Identiv SCR3500 C Contact Reader + + readers/Identiv_SCR3500_C_Contact_Reader.txt | 55 ++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 57 insertions(+), 1 deletion(-) + +commit a691e5cbc53bf693c27c846f08612a08c4a1c331 +Author: Ludovic Rousseau +Date: Fri Nov 30 16:49:25 2018 +0100 + + Add Broadcom Corp 58200 (idProduct: 0x5845) + + readers/Broadcom_58200_0x5845.txt | 52 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 53 insertions(+) + +commit d882261ebc3f43f1ca3f984ea8d8a7d99701f72d +Author: Ludovic Rousseau +Date: Fri Nov 30 16:47:52 2018 +0100 + + Add Broadcom Corp 58200 (idProduct: 0x5844) + + readers/Broadcom_58200_0x5844.txt | 52 +++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 1 + + 2 files changed, 53 insertions(+) + +commit 869544330fe96810eb7f3f8ab39cad7fa7686539 +Author: Ludovic Rousseau +Date: Fri Nov 30 16:45:10 2018 +0100 + + Add Broadcom Corp 58200 (idProduct: 0x5843) + + readers/Broadcom_58200_0x5843.txt | 106 ++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 108 insertions(+), 1 deletion(-) + +commit 25ab9d6e4fad9ac1f70ef4c76e3be3ce175f79fb +Author: Ludovic Rousseau +Date: Wed Oct 24 18:48:26 2018 +0200 + + Add InfoCert WirelessKey + + readers/InfoCert_WirelessKey.txt | 53 ++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 5 +++- + 2 files changed, 57 insertions(+), 1 deletion(-) + +commit 5adffb317bcae37144e6fad7840d8c0970851c25 +Author: Ludovic Rousseau +Date: Fri Oct 12 16:19:00 2018 +0200 + + Add ACS ACR1252 Reader + + readers/ACS_ACR1252_Reader.txt | 53 ++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 ++- + 2 files changed, 55 insertions(+), 1 deletion(-) + +commit f262442ca2b48ac6cf47a556721dabb6c3a9d0a9 +Author: Ludovic Rousseau +Date: Thu Oct 4 14:31:54 2018 +0200 + + InterruptRead(): log the timeout used + + This change allows to differentiate between a short + (PCSCLITE_POWER_OFF_GRACE_PERIOD, 5 seconds by default) and a long + (PCSCLITE_STATUS_EVENT_TIMEOUT, 10 minutes by default) timeout. + + src/ccid_usb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4529d6d723009a62dab31dc8c9fda03b2204e05f +Author: Ludovic Rousseau +Date: Mon Sep 24 21:00:04 2018 +0200 + + Add NXP PN7462AU CCID + + readers/NXP_PN7462AU_CCID.txt | 310 ++++++++++++++++++++++++++++++++++++++++++ + readers/supported_readers.txt | 3 +- + 2 files changed, 312 insertions(+), 1 deletion(-) + +commit db45750ebb2ce8d841f8e555e79f09108527aaa8 (tag: ccid-1.4.30) Author: Ludovic Rousseau Date: Wed Sep 19 09:33:32 2018 +0200 diff --git a/MacOSX/configure b/MacOSX/configure index 2cdf272..96d6464 100755 --- a/MacOSX/configure +++ b/MacOSX/configure @@ -48,7 +48,7 @@ LIBUSB_ARCHIVE="$LIBUSB_DIR"/libusb-1.0.a LIBUSB_CFLAGS=$(pkg-config --cflags --static libusb-1.0) LIBUSB_LIBS=$(pkg-config --libs --static libusb-1.0) -if ls "$LIBUSB_DIR"/*.dylib 2> /dev/null +if ls "$LIBUSB_DIR"/libusb-1.0*.dylib 2> /dev/null then echo -en $RED echo "*****************************" diff --git a/MacOSX/ifdhandler.h b/MacOSX/ifdhandler.h index 3f27f87..a2f9f73 100644 --- a/MacOSX/ifdhandler.h +++ b/MacOSX/ifdhandler.h @@ -40,7 +40,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The routines specified hereafter will allow you to write an IFD handler for the PC/SC Lite resource manager. Please use the complement developer's kit complete with headers and Makefile at: -http://www.musclecard.com/drivers.html +https://muscle.apdu.fr/musclecard.com/sourcedrivers.html This gives a common API for communication to most readers in a homogeneous fashion. This document assumes that the driver developer is @@ -82,7 +82,7 @@ Example: 0x04E6 @endverbatim -You may have an OEM of this reader in which an additional @c +You may have an OEM of this reader in which an additional @c \ can be used like in the below example: @verbatim @@ -202,7 +202,7 @@ It has the following syntax: # Configuration file for pcsc-lite # David Corcoran -FRIENDLYNAME Generic Reader +FRIENDLYNAME "Generic Reader" DEVICENAME /dev/ttyS0 LIBPATH /usr/lib/pcsc/drivers/libgen_ifd.so CHANNELID 1 diff --git a/Makefile.am b/Makefile.am index 69f7534..49574a3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3,6 +3,7 @@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = readers examples contrib src EXTRA_DIST = bootstrap ChangeLog SCARDGETATTRIB.txt \ + README.md \ $(AUX_DIST) \ m4/ax_pthread.m4 \ MacOSX/configure \ diff --git a/Makefile.in b/Makefile.in index e43d8f5..baefd37 100644 --- a/Makefile.in +++ b/Makefile.in @@ -162,8 +162,8 @@ CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ - COPYING ChangeLog INSTALL NEWS README ar-lib compile \ - config.guess config.sub install-sh ltmain.sh missing ylwrap + COPYING ChangeLog INSTALL NEWS ar-lib compile config.guess \ + config.sub install-sh ltmain.sh missing ylwrap DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -354,6 +354,7 @@ usbdropdir = @usbdropdir@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = readers examples contrib src EXTRA_DIST = bootstrap ChangeLog SCARDGETATTRIB.txt \ + README.md \ $(AUX_DIST) \ m4/ax_pthread.m4 \ MacOSX/configure \ diff --git a/README b/README deleted file mode 100644 index a8f0457..0000000 --- a/README +++ /dev/null @@ -1,1312 +0,0 @@ -USB CCID IFD Handler -==================== - -This package provides the source code for a generic USB CCID (Chip/Smart -Card Interface Devices) and ICCD (Integrated Circuit(s) Card Devices) -driver. See the USB CCID [1] and ICCD [2] specifications from the USB -working group. - -[1] http://www.usb.org/developers/docs/devclass_docs/DWG_Smart-Card_CCID_Rev110.pdf -[2] http://www.usb.org/developers/docs/devclass_docs/DWG_Smart-Card_USB-ICC_ICCD_rev10.pdf - -Authors: -======== - -- Ludovic Rousseau -- Carlos Prados for the PPS and ATR parsing code (taken from his - towitoto driver) in towitoko/ directory. -- Olaf Kirch for the T=1 TPDU code (from the OpenCT package) in openct/ - directory. I (Ludovic Rousseau) greatly improved this code. - - -CCID and ICCD readers: -====================== - -A reader can be in one of these list: -- supported - See https://ccid.apdu.fr/ccid/supported.html -- should work - See https://ccid.apdu.fr/ccid/shouldwork.html -- unsupported - See https://ccid.apdu.fr/ccid/unsupported.html -- disabled - See https://ccid.apdu.fr/ccid/disabled.html - - -Supported operating systems: -============================ - -- GNU/Linux (libusb 1.0) -- MacOS X/Darwin (libusb 1.0) - -See also https://ccid.apdu.fr/ for more information. - - -Debug informations: -=================== - -The driver uses the debug function provided by pcscd. So if pcscd sends -its debug to stdout (pcscd --foreground) then the CCID driver will also -send its debug to stdout. If pcscd sends its debug to syslog (by -default) then the CCID driver will also send its debug to syslog. - -You can change the debug level using the Info.plist configuration file. -The Info.plist is installed, by default, in -/usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist -or set the environment variable LIBCCID_ifdLogLevel. - -The debug level is set in the ifdLogLevel field. It is a binary OR -combination of 4 different levels. -- 1: critical: important error messages -- 2: info: informative messages like what reader was detected -- 4: comm: a dump of all the bytes exchanged between the host and the - reader -- 8: periodic: periodic info when pcscd test if a card is present (every - 1/10 of a second) - -By default the debug level is set to 3 (1 + 2) and correspond to the -critical and info levels. - -You have to restart the driver so it read the configuration file again -and use the new debug level value. To restart the driver you just need -to unplug all your CCID readers so the driver is unloaded and then replug -your readers. You can also restart pcscd. - - -Voltage selection -================= - -You can change the voltage level using the Info.plist configuration -file. The Info.plist is installed, by default, in -/usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist - -The voltage level is set in the ifdDriverOptions field. It is a binary OR -combination of 4 different levels. - -- 0: power on the card at 5V (default value) -- 16: power on the card at 3V and, if 3V fails then use 5V -- 32: power on the card at 1.8V, then 3V and then 5V -- 48: let the reader decide - -By default the voltage level is set to 0 and correspond to 5V. - -You have to restart the driver so it read the configuration file again -and use the new debug level value. To restart the driver you just need -to unplug all your CCID readers so the driver is unloaded and then replug -your readers. You can also restart pcscd. - - -Licence: -======== - - This library is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2.1 of the License, or (at -your option) any later version. - - This library is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser -General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License -along with this library; if not, write to the Free Software Foundation, -Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - -History: -======== - -1.4.30 - 19 September 2018, Ludovic Rousseau - - The project moved to https://ccid.apdu.fr/ - - Add support of - . ACS ACR33 ICC Reader - . BIFIT ANGARA - . Broadcom Corp 58200 - . Certgate GmbH AirID 2 USB - . DC.Ltd DC4 5CCID READER - . Genesys Logic CCID Card Reader - . Genesys Logic Combo Card Reader - . InfoThink IT-500U Reader - . Spyrus Inc WorkSafe Pro (ProductID 0x3117) - - Disabled readers - . REINER SCT cyberJack RFID standard - - Update reader names for - . Fujitsu Keyboard KB100 SCR - . Fujitsu Keyboard KB100 SCR eSIG - . FujitsuTechnologySolutions GmbH Keyboard KB SCR2 - . Yubico YubiKey CCID - . Yubico YubiKey FIDO+CCID - . Yubico YubiKey OTP+CCID - . Yubico YubiKey OTP+FIDO+CCID - - Fix libusb config descriptor leak - - Fix leaking an allocated bundle in case no matching reader was found - - -1.4.29 - 21 February 2018, Ludovic Rousseau - - Add support of - . Access IS NFC Smart Module (With idProduct 0x0164) - . Bit4id Digital-DNA Key - . Bit4id Digital-DNA Key BT - . Bluink Ltd. Bluink CCID - . Chicony HP Skylab USB Smartcard Keyboard - . HID Global OMNIKEY 5023 Smart Card Reader - . HID Global OMNIKEY 5027CK CCID CONFIG IF - . KeyXentic Inc. KX906 Smart Card Reader - . Spyrus Inc Rosetta USB - . Spyrus Inc WorkSafe Pro - . Watchdata USB Key (idProduct: 0x0418) - - The C3PO LTC31 v2 wrongly declares PIN support - - Remove extra EGT patch because if has bad side effects - - -1.4.28 - 11 October 2017, Ludovic Rousseau - - Add support of - . Athena IDProtect Flash - . Elatec TWN4/B1.06/CPF3.05/S1SC1.32/P (Beta 3) - . HID Global OMNIKEY 5122 Dual - . HID Global OMNIKEY 5122 Smartcard Reader - . IIT E.Key Crystal-1 - . KRONEGGER Micro Core Platform - . KRONEGGER NFC blue Reader Platform - . Ledger Nano S - . REINER SCT cyberJack RFID standard - . REINER SCT cyberJack one - . SAFETRUST SABRE SCR - . SafeNet eToken 5300 - . Unicept GmbH AirID USB Dongle - . Watchdata USB Key - . mCore SCard-Reader - - Disabled readers - . Jinmuyu Electronics Co., Ltd. MR800 - - Fix non-pinpad HID global devices - - udev rules: - . allow rule overwrite - . Disable USB autosuspend on C3PO LTC31 v1 reader - - Some minor improvements - - -1.4.27 - 21 May 2017, Ludovic Rousseau - - Add support of - . ACS ACR1255U-J1 - . ACS CryptoMate (T2) - . ANCUD CCID USB Reader & RNG - . DUALi DE-620 Combi - . FT CCID - . FT CCID KB - . FT U2F CCID KB - . FT U2F CCID KBOARD - . HID Global OMNIKEY 5422 Smartcard Reader - . InfoThink IT-102MU Reader - . Kapsch TrafficCom USB SAM reader - . MK Technology KeyPass S1 - . Mulann PVT - . Regula RFID Reader - . Spyrus Inc PocketVault P-3X - . Unicept GmbH AirID USB - - Add Microchip SEC1210 UART support (when connected on a serial port) - - Add Zero Length Packet (ZLP) support for Gemalto IDBridge CT30 and K30 - enable the patch using ./configure --enable-zlp - - Add support of HID Omnikey 5422 as multi slot reader (for macOS) - - Escape command: signals buffer overflow instead of silently - truncating the buffer - - Fix a bug with multi readers and pcscd uses hotplug_libusb (not the - recommended configuration) - - Some minor improvements - - -1.4.26 - 7 January 2017, Ludovic Rousseau - - Add support of - . Bit4id Digital DNA Key - . Bit4id tokenME FIPS v3 - . INGENICO Leo - . appidkey GmbH ID60-USB - - PowerOn: the default algorithm is now 5V then 1.8V then 3V then fail. - It is still possible to change the initial voltage in the - Info.plist file. Now, in any case, all the values are tried - before failing. - - Negotiate maximum baud rate when bNumDataRatesSupported = 0 - - Some minor improvements - - -1.4.25 - 30 September 2016, Ludovic Rousseau - - Add support of - . Aladdin R.D. JaCarta (idProduct: 0x0402) - . Broadcom Corp 5880 (idProduct: 0x5832) - . Broadcom Corp 5880 (idProduct: 0x5833) - . Broadcom Corp 5880 (idProduct: 0x5834) - . ESMART Token GOST X2 ET1020-A - . Feitian VR504 VHBR Contactless & Contact Card Reader - . Feitian bR500 - . Gemalto K50 - . appidkey GmbH ID100-USB SC Reader - . appidkey GmbH ID50 -USB - - Remove suport of - . Broadcom Corp 5880 (idProduct: 0x5800) - . Broadcom Corp 5880 (idProduct: 0x5805) - . KEBTechnology KONA USB SmartCard - - macOS: Fix composite device enumeration - - Fix crash with GemCore Pos Pro and GemCore Sim Pro - - Some minor improvements - - -1.4.24 - 22 May 2016, Ludovic Rousseau - - Add support of - . Generic USB Smart Card Reader - . Giesecke & Devrient GmbH StarSign CUT S - . HID AVIATOR Generic - - better support of Elatec TWN4 SmartCard NFC - - better support of SCM SCL011 - - betetr support of HID Aviator generic - - fix SCARD_ATTR_VENDOR_IFD_SERIAL_NO attribute size - - fix a race condition on card events with multiple readers - - Some minor improvements - - -1.4.23 - 20 April 2016, Ludovic Rousseau - - Add support of - . ACS ACR3901U ICC Reader - . Alcor Micro AU9560 - . Cherry SmartTerminal XX44 - . HID Global OMNIKEY 3x21 Smart Card Reader - . HID Global OMNIKEY 5022 Smart Card Reader - . HID Global OMNIKEY 6121 Smart Card Reader - . IonIDe Smartcard Reader reader - . KACST HSID Reader - . KACST HSID Reader Dual Storage - . KACST HSID Reader Single Storage - - Remove support of - . VMware Virtual USB CCID - - Do NOT add support of - . DUALi DE-ABCM6 - - Fix a busy loop consuming 100% of CPU for some composite USB devices - impacted readers: Yubico Yubikey NEO U2F+CCID and Broadcom BCM5880 - - Remove support of (unused) option DRIVER_OPTION_RESET_ON_CLOSE - - log libusb error name instead of decimal value - - Some minor improvements - - -1.4.22 - 10 January 2016, Ludovic Rousseau - - Add support of - . Aktiv Rutoken PINPad 2 - . Aladdin R.D. JC-WebPass (JC600) - . Aladdin R.D. JCR-770 - . Aladdin R.D. JaCarta - . Aladdin R.D. JaCarta Flash - . Aladdin R.D. JaCarta LT - . Aladdin R.D. JaCarta U2F (JC602) - . Athena ASEDrive IIIe Combo Bio PIV - . Athena ASEDrive IIIe KB Bio PIV - . GEMALTO CT1100 - . GEMALTO K1100 - . Hitachi, Ltd. Hitachi Biometric Reader - . Hitachi, Ltd. Hitachi Portable Biometric Reader - . Nitrokey Nitrokey Storage - . THURSBY SOFTWARE TSS-PK1 - . Thursby Software Systems, Inc. TSS-PK7 - . Thursby Software Systems, Inc. TSS-PK8 - - Patch for Microchip SEC1110 reader on Mac OS X (card events notification) - - Patch for Cherry KC 1000 SC (problem was with a T=1 card and case 2 APDU) - - Fix support of FEATURE_MCT_READER_DIRECT for the Kobil mIDentity - visual reader - - Set timeout to 90 sec for PPDU (Pseudo APDU) commands. This change - allows the use of a Secure Verify command sent as a PPDU through - SCardTransmit(). - - Fix a crash when reader reader initialization failed - - Fix initialization bug with Gemalto Pinpad reader on Mac OS X - - Some minor bugs fixed - - -1.4.21 - 21 October 2015, Ludovic Rousseau - - Add support of - . ACS ACR1252 Dual Reader - . Chicony HP USB Smartcard CCID Keyboard JP - . Chicony HP USB Smartcard CCID Keyboard KR - . FT ePass2003Auto - . Feitian bR301 BLE - . Feitian iR301 (ProductID 0x0619) - . Feitian iR301 (ProductID 0x061C) - . Identiv @MAXX ID-1 Smart Card Reader - . Identiv @MAXX Light2 token - . Identiv CLOUD 2980 F Smart Card Reader - . Identiv Identiv uTrust 4701 F Dual Interface Reader - . Identiv SCR3500 A Contact Reader - . Identiv SCR3500 B Contact Reader - . Identiv SCR35xx USB Smart Card Reader - . Identiv uTrust 2900 R Smart Card Reader - . Identiv uTrust 2910 R Smart Card Reader - . Identiv uTrust 2910 R Taglio SC Reader - . Identiv uTrust 3512 SAM slot Token - . Identiv uTrust 3522 embd SE RFID Token - . Identiv uTrust 3700 F CL Reader - . Identiv uTrust 3701 F CL Reader - . Identive Identive CLOUD 4000 F DTC - . Liteon HP SC Keyboard - Apollo (Liteon) - . Liteon HP SC Keyboard - Apollo JP (Liteon) - . Liteon HP SC Keyboard - Apollo KR (Liteon) - . Nitrokey Nitrokey HSM - . Nitrokey Nitrokey Pro - . Nitrokey Nitrokey Start - . Rocketek RT-SCR1 - . VASCO DIGIPASS 875 - . WatchCNPC USB CCID Key - - Remove support of - . Crypto Stick Crypto Stick v1.4 is an old version of Nitrokey Nitrokey Pro - . Free Software Initiative of Japan Gnuk Token is an old version - of Nitrokey Nitrokey Start - - Add Feitain R502 dual interface (composite) reader on Mac OS X - - display a human readable version of the error code returned by - libusb - - Mac OS X: wait until libusb/the reader is ready - - some minor bugs fixed - - -1.4.20 - 5 August 2015, Ludovic Rousseau - - Add support of - . ACS ACR1251 Dual Reader - . Access IS NFC Smart Module - . BIFIT iToken - . BLUTRONICS BLUDRIVE II CCID (idProduct: 0x1079) - . Generic MultiCard Device - . NXP Pegoda 2 N - . SafeNet eToken 5100 - . SafeNet eToken 7300 - . Yubico Yubikey 4 CCID - . Yubico Yubikey 4 OTP+CCID - . Yubico Yubikey 4 OTP+U2F+CCID - . Yubico Yubikey 4 U2F+CCID - - Depends on libusb version 1.0.9 instead of 1.0.8 - - The O2 Micro Oz776 reader only supports 9600 bps - - Change installation directory for Mac OS X El Capitan 10.11 - - -1.4.19 - 13 May 2014, Ludovic Rousseau - - Add support of - . AK910 CKey (idProduct 0x0001) - . AK910 CKey (idProduct 0x0011) - . AK910 IDONE - . Broadcom Corp 5880 (idProduct: 0x5804) - . CASTLES EZCCID Smart Card Reader - . Cherry KC 1000 SC - . Cherry KC 1000 SC Z - . Cherry KC 1000 SC/DI - . Cherry KC 1000 SC/DI Z - . Cherry TC 1300 - . Chicony USB Smart Card Keyboard - . Elatec TWN4 SmartCard NFC - . Feitian 502-CL - . Feitian eJAVA Token - . FujitsuTechnologySolutions GmbH Keyboard KB100 SCR - . FujitsuTechnologySolutions GmbH Keyboard KB100 SCR eSIG - . Hewlett-Packard HP lt4112 Gobi 4G Module - . Identive SCT3522CC token - . OMNIKEY AG 6121 USB mobile - . PIVKey T800 - . REINER SCT tanJack Bluetooth - . Watchdata USB Key - - Add syslog(3) debug for Mac OS X Yosemite. - Use: sudo syslog -c "com.apple.ifdreader PID" -d to change the logging level. - See also "Change syslog logging level on Yosemite" - http://ludovicrousseau.blogspot.com/2015/03/change-syslog-logging-level-on-yosemite.html - - Remove ZLP patch for Gemalto IDBridge CT30 and K30. The patch was - causing problems with the K50. A new reader firmware (version F) - solved the problem so the patch is no more needed. - - Fix a memory leak in an error path - - some minor bugs removed - - -1.4.18 - 13 September 2014, Ludovic Rousseau - - Add support of - . Cherry Cherry TC 1100 - . Cherry Smart Card Reader USB - . Cherry Smartcard Keyboard G87-1xx44 - . FujitsuTechnologySolutions GmbH Keyboard KB SCR2 - . Lenovo Lenovo USB Smartcard Keyboard - . Yubico Yubikey NEO OTP+U2F+CCID - . Yubico Yubikey NEO U2F+CCID - . eID_R6 001 X8 - - fix support of Omnikey CardMan 3121 - - reduce memory consumed when configured with --enable-embedded - - prepare the port to UEFI - - -1.4.17 - 11 June 2014, Ludovic Rousseau - - Add support of - . Feitian R502 - . Free Software Initiative of Japan Gnuk Token - . German Privacy Foundation Crypto Stick v2.0 - . HID Global veriCLASS Reader - . HID OMNIKEY 5025-CL - . Identive Technologies Multi-ISO HF Reader - USB - . OMNIKEY 5421 - . OMNIKEY AG 3121 USB - . udea MILKO V1. - - Fix support of O2 Micro Oz776. The reader is limited to 9600 bps - - some minor bugs removed - - -1.4.16 - 23 March 2014, Ludovic Rousseau - - Add support of - . Crypto Stick Crypto Stick v1.4 - . Hewlett Packard USB Smartcard CCID Keyboard - . IID AT90S064 CCID READER - . INSIDE Secure VaultIC 405 Smart Object - . INSIDE Secure VaultIC 441 Smart Object - . Microchip SEC1110 - . Microchip SEC1210 - . Watchdata W5181 - - Add support of DRIVER_OPTION_DISABLE_PIN_RETRIES - The Gemalto pinpad reader sends a VERIFY command with no PIN value - in order to retreive the remaining retries from the card. Some - cards (like the OpenPGP card) do not support this. - It is now possible to disable this behavior from the Gemalto - Pinpad and Covadis Véga Alpha. - - add support of WTX received before SW during Secure Pin Entry Verify - The Swiss health care card sends a WTX request before returning - the SW code. If the reader is in TPDU and the card is in T=1 the - driver must manage the request itself. - - -1.4.15 - 14 February 2014, Ludovic Rousseau - - Add support of - . DUALi DRAGON NFC READER - . Feitian bR301 - . Gemalto CR30 reader in serial communication - . Gemalto Ezio Shield Pro SC - . IIT E.Key Almaz-1C - - PIN_MODIFY_STRUCTURE & PIN_VERIFY_STRUCTURE: Fix calculation of - the command length after pcsc-lite 1.8.9 (October 2013) changed - the PCSC/reader.h header - - Add specific PIN min (0) & max (25) sizes for SmartTerminal - ST-2xxx - - Do not get the data rates if bNumDataRatesSupported = 0 - - Support Gemalto features for pinpad readers MinimumPINSize, - MaximumPINSize and bEntryValidationCondition are fetched from the - reader firmware - - disable (broken) pinpad for Fujitsu SmartCase KB SCR eSIG - - examples/scardcontrol.c: - . Parse codes returned by a pinpad (as SW1/SW2) - Known codes for now are: - 0x9000: Success - 0x6400: Timeout - 0x6401: Cancelled by user - 0x6402: PIN mismatch - 0x6403: Too short or too long PIN - . Retrieve min and max PIN sizes from the driver - . Retrieve bEntryValidationCondition from the driver - - be more strict for bInterfaceClass = 255 by also checking extra_length - - some minor bugs removed - - -1.4.14 - 25 November 2013, Ludovic Rousseau - - Add support of - . Gemalto GemCore SIM Pro firmware 2.0 (using USB) - - report FEATURE_IFD_PIN_PROPERTIES only for pinpad readers - - Generalize the management of (old) readers with bDeviceClass = 0xFF - - some minor bugs removed - - -1.4.13 - 9 October 2013, Ludovic Rousseau - - Add support of - . Access IS ePassport Reader - . Planeta RC700-NFC CCID - - Add support of Windows value for CM_IOCTL_GET_FEATURE_REQUEST - Windows uses 0x313520 for SCARD_CTL_CODE(3400) pcsc-lite uses - 0x42000D48 for SCARD_CTL_CODE(3400) - RDP aplications (like rdesktop) will convert SCardControl() - commands from a Windows application (so using 0x313520) to - pcsc-lite. - - fix multi-slot support for card movement notification (introduced - in 1.4.12) - - Mac OS X: differentiate each libccid library by the dynamic linker - using --prefix=/fake/$BUNDLE_ID - - some minor bugs removed - - -1.4.12 - 12 August 2013, Ludovic Rousseau - - Add support of - . HID OMNIKEY 5127 CK - . HID OMNIKEY 5326 DFR - . HID OMNIKEY 5427 CK - . Ingenico WITEO USB Smart Card Reader (Base and Badge) - . SecuTech SecuTech Token - - Add support of card movement notifications for multi-slot readers - - Check libusb is at least at version 1.0.8 - - Get the serialconfdir value from pcsc-lite pkg config instead of - using $(DESTDIR)/$(sysconfdir)/reader.conf.d/ - - Disable class driver on Mac OS X - - Update the bundle name template to include the vendor name - - some minor bugs removed - - -1.4.11 - 12 June 2013, Ludovic Rousseau - - Add support of - . Gemalto IDBridge CT30 - . Gemalto IDBridge K30 - . SCM Microsystems Inc. SCL010 Contactless Reader - . SCM Microsystems Inc. SDI011 Contactless Reader - . THRC reader - - Better management of time extension requests - - parse: better support of devices with bInterfaceClass = 0xFF - - udev rule file: Remove setting group to pcscd, remove support of - Linux kernel < 2.6.35 for auto power up management - - some minor bugs removed - - -1.4.10 - 16 April 2013, Ludovic Rousseau - - Add support of - . ACS APG8201 USB Reader with PID 0x8202 - . GIS Ltd SmartMouse USB - . Gemalto IDBridge K3000 - . Identive CLOUD 2700 F Smart Card Reader - . Identive CLOUD 2700 R Smart Card Reader - . Identive CLOUD 4500 F Dual Interface Reader - . Identive CLOUD 4510 F Contactless + SAM Reader - . Identive CLOUD 4700 F Dual Interface Reader - . Identive CLOUD 4710 F Contactless + SAM Reader - . Inside Secure AT90SCR050 - . Inside Secure AT90SCR100 - . Inside Secure AT90SCR200 - . SCR3310-NTTCom USB SmartCard Reader - . SafeTech SafeTouch - . SpringCard H512 Series - . SpringCard H663 Series - . SpringCard NFC'Roll - . Yubico Yubikey NEO CCID - . Yubico Yubikey NEO OTP+CCID - - Add support of time extension for Escape commands - - -1.4.9 - 16 January 2013, Ludovic Rousseau - - Add support of - . Aktiv Rutoken PINPad In - . Aktiv Rutoken PINPad Ex - . REINER SCT cyberJack go - - Info.plist: Correctly handle reader names containing & - - -1.4.8 - 22 June 2012, Ludovic Rousseau - - Add support of - . SCR3310-NTTCom USB (was removed in version 1.4.6) - . Inside Secure VaultIC 420 Smart Object - . Inside Secure VaultIC 440 Smart Object - - Wait up to 3 seconds for reader start up - - Add support of new PC/SC V2 part 10 properties: - . dwMaxAPDUDataSize - . wIdVendor - . wIdProduct - - Use helper functions from libPCSCv2part10 to parse the PC/SC v2 - part 10 features - - -1.4.7 - 22 June 2012, Ludovic Rousseau - - Add support of - . ACS ACR101 ICC Reader - . ACS CryptoMate64 - . Alcor Micro AU9522 - . Bit4id CKey4 - . Bit4id cryptokey - . Bit4id iAM - . Bit4id miniLector - . Bit4id miniLector-s - . CCB eSafeLD - . Gemalto Ezio Shield Branch - . KOBIL Systems IDToken - . NXP PR533 - - KOBIL Systems IDToken special cases: - . Give more time (3 seconds instead of 2) to the reader to answer - . Hack for the Kobil IDToken and Geman eID card. The German eID - card is bogus and need to be powered off before a power on - . Add Reader-Info-Commands special APDU/command - - Manufacturer command - - Product name command - - Firmware version command - - Driver version command - - Use auto suspend for CCID devices only (Closes Alioth bug - [#313445] "Do not activate USB suspend for composite devices: - keyboard") - - Fix some error management in the T=1 TPDU state machine - - some minor bugs removed - - some minor improvements added - - -1.4.6 - 6 April 2012, Ludovic Rousseau - - Add support of - . Avtor SC Reader 371 - . Avtor SecureToken - . DIGIPASS KEY 202 - . Fujitsu SmartCase KB SCR eSIG - . Giesecke & Devrient StarSign CUT - . Inside Secure VaultIC 460 Smart Object - . Macally NFC CCID eNetPad reader - . OmniKey 6321 USB - . SCM SDI 011 - . Teridian TSC12xxF - . Vasco DIGIPASS KEY 101 - - Remove support of readers without a USB CCID descriptor file - . 0x08E6:0x34C1:Gemalto Ezio Shield Secure Channel - . 0x08E6:0x34C4:Gemalto Ezio Generic - . 0x04E6:0x511A:SCM SCR 3310 NTTCom - . 0x0783:0x0008:C3PO LTC32 USBv2 with keyboard support - . 0x0783:0x9002:C3PO TLTC2USB - . 0x047B:0x020B:Silitek SK-3105 - - Disable SPE for HP USB CCID Smartcard Keyboard. The reader is - bogus and unsafe. - - Convert "&" in a reader name into "&" to fix a problem on Mac - OS X - - Fix a problem with ICCD type A devices. We now wait for device ready - - Secure PIN Verify and PIN Modify: set the minimum timeout to 90 - seconds - - Add support of wIdVendor and wIdProduct properties - - Add support of dwMaxAPDUDataSize - - Add support of Gemalto firmware features - - some minor bugs removed - - -1.4.5 - 11 October 2011, Ludovic Rousseau - - Add support of - . Alcor Micro AU9540 - . BIFIT USB-Token iBank2key - . BIFIT iBank2Key - . Gemalto Ezio Shield PinPad reader - . Gemalto SA .NET Dual - . Precise Sense MC reader (with fingerprint) - . SDS DOMINO-Key TWIN Pro - . Ubisys 13.56MHz RFID (CCID) - - Add support of bPPDUSupport and FEATURE_CCID_ESC_COMMAND - - SCARD_ATTR_VENDOR_NAME and SCARD_ATTR_VENDOR_IFD_VERSION are not - the vendor name and version of the driver but of the IFD: - InterFace Device i.e. the smart card reader. We then return the - USB iManufacturer string as SCARD_ATTR_VENDOR_NAME and USB - bcdDevice as SCARD_ATTR_VENDOR_IFD_VERSION - - reduce binary size bu removing unused features from simclist - - Fix some warnings reported bu Coverity - - -1.4.4 - 13 May 2011, Ludovic Rousseau - - Add support of - . Gemalto Ezio CB+ - . Gemalto Ezio Generic - . Gemalto Ezio Shield - . Gemalto Ezio Shield PinPad - . Gemalto Ezio Shield Secure Channel - - Activate USB automatic power suspend. The Linux kernel should - power off the reader automatically if it is not used (pcscd is not - running). - - Add support of TLV Properties wLcdMaxCharacters and wLcdMaxLines. - They just duplicate wLcdLayout - - some minor bugs removed - - -1.4.3 - 2 April 2011, Ludovic Rousseau - - Add support of - . Feitian ePass2003 readers - . Neowave Weneo - . SCM SCL011 - . Vasco DIGIPASS 920 - - use :libudev: instead of :libhal: naming scheme. - - Do not install RSA_SecurID_getpasswd and Kobil_mIDentity_switch - and the associated documentation. - - the Secure Pin Entry of the HP USB Smart Card Keyboard is bogus so - disable it - - some minor bugs removed - - -1.4.2 - 22 February 2011, Ludovic Rousseau - - Add support of - . ACS APG8201 PINhandy 1 - . Aktiv Rutoken lite readers - . Feitian SCR310 reader (also known as 301v2) - . Oberthur ID-ONE TOKEN SLIM v2 - . Vasco DIGIPASS KEY 200 - . Vasco DIGIPASS KEY 860 - . Xiring Leo v2 - . Xiring MyLeo - . new Neowave Weneo token - - Add back support of "bogus" Oz776, REINER SCT and BLUDRIVE II - - Ease detection of OpenCT by pcsc-lite - - disable use of interrupt card events for multi slots readers (the - algorithm is bogus and can't be used) - - fix minor problems detected by the clang tool - - some minor bugs removed - - -1.4.1 - 3 December 2010, Ludovic Rousseau - - Add support of - . Akasa AK-CR-03, BZH uKeyCI800-K18 - . Free Software Initiative of Japan Gnuk token readers - . Gemalto Smart Guardian (SG CCID) - . ReinerSCT cyberJack RFID basis - - Remove O2 Micro Oz776 and Blutronics Bludrive II CCID since they - are no more supported since version 1.4.0 - - SecurePINVerify() & SecurePINModify(): Accept big and little - endian byte orders for multibytes fields. The application - should not use HOST_TO_CCID_16() and HOST_TO_CCID_32() any more - and just use the normal byte order of the architecture. - - Need pcsc-lite 1.6.5 for TAG_IFD_POLLING_THREAD_WITH_TIMEOUT - - Add --enable-embedded (default is no) to build libccid for an - embedded system. This will activate the NO_LOG option to disable - logging and limit RAM and disk consumption. - - Remove --enable-udev option since it is not used anymore with - libhal. The udev rules file is now used to change the access - rights of the device and not send a hotplug signal to pcscd. - See http://ludovicrousseau.blogspot.com/2010/09/pcscd-auto-start.html - - some minor bugs removed - - -1.4.0 - 4 August 2010, Ludovic Rousseau - - add support of - . ACS AET65 - . Broadcom 5880 - . C3PO LTC36 - . Dectel CI692 - . Gemalto Hybrid Smartcard Reader - . Kingtrust Multi-Reader - . Tianyu Smart Card Reader - . Todos CX00 - - Add support of the SCM SDI 010 again. At least the contact - interface can be used. - - Use libusb-1.0 instead of libusb-0.1 - - add support of TAG_IFD_STOP_POLLING_THREAD and use of the - asynchronous libusb API to be able to stop a transfer. - - Request pcsc-lite 1.6.2 minimum (instead of 1.6.0) to have - TAG_IFD_STOP_POLLING_THREAD defined - - The O2MICRO OZ776 patch (for OZ776, OZ776_7772, REINER_SCT and - BLUDRIVEII_CCID) is no more supported with libusb-1.0 - - correctly get the IFSC from the ATR (ATR parsing was not always - correct) - - some minor bugs removed - - -1.3.13 - 4 June 2010, Ludovic Rousseau - - much faster warm start (up to 3.8 second gained) - - Add support of SCARD_ATTR_VENDOR_IFD_SERIAL_NO to get the serial - number of the USB device - - some minor bugs removed - - -1.3.12 - 8 May 2010, Ludovic Rousseau - - add support of - . Ask CPL108 - . Atmel AT90SCR050 - . Atmel AT90SCR100 - . Atmel VaultIC420 - . Atmel VaultIC440 - . Atmel VaultIC460 - . Cherry SmartTerminal XX7X - . Covadis Auriga - . German Privacy Foundation Crypto Stick v1.2 - . GoldKey PIV Token - . KOBIL Smart Token - . KOBIL mIDentity 4smart - . KOBIL mIDentity 4smart AES - . KOBIL mIDentity 4smart fullsize AES - . KOBIL mIDentity fullsize - . KOBIL mIDentity visual - . SCM SCR3500 - . Smart SBV280 - . Todos AGM2 CCID - . Vasco DIGIPASS KEY 200 - . Vasco DIGIPASS KEY 860 - . Vasco DP855 - . Vasco DP865 - . id3 CL1356T5 - - remove support of Smart SBV280 on manufacturer request. They use - libusb directly. - - remove support of SCM SDI 010 on manufacturer request since not - supported by my driver - - Enable the Broadcom 5880 reader. It should work after a firmware - upgrade. - - better support of Dell keyboard - - better support of multislot readers (like the GemCore SIM Pro) - - better support of SCM SCR3310 - - better support of ICCD version A devices - - The Covadis Véga-Alpha reader is a GemPC pinpad inside. So we use - the same code to: - . load the strings for the display - . avoid limitation of the reader - - IFDHControl(): the (proprietary) get firmware version escape - command is allowed with a Gemalto reader - . the (proprietary) switch interface escape command is allowed on - the Gemalto GemProx DU - . return IFD_ERROR_NOT_SUPPORTED instead of - IFD_COMMUNICATION_ERROR if the dwControlCode value is not - supported - . return IFD_ERROR_INSUFFICIENT_BUFFER when appropriate - - IFDHGetCapabilities(): add support of SCARD_ATTR_ICC_PRESENCE and - SCARD_ATTR_ICC_INTERFACE_STATUS - - support FEATURE_GET_TLV_PROPERTIES - - add support of IOCTL_FEATURE_GET_TLV_PROPERTIES bMinPINSize & - bMaxPINSize for Gemalto Pinpad V1 & Covadis Véga-Alpha - - support extended APDU of up to 64kB with APDU readers. - - get the language selected during Mac OS X installation as language - to use for Covadis Véga-Alpha and Gemalto GemPC PinPad pinpad - readers - - FEATURE_MCT_READER_DIRECT is also supported by the Kobil mIDentity - visual - - better support of Sun Studio CC - - some minor bugs removed - - -1.3.11 - 28 July 2009, Ludovic Rousseau - - add support of - . Raritan D2CIM-DVUSB VM/CCID - . Feitian SCR301 - . Softforum XecureHSM - . 2 Neowave Weneo tokens - . Synnix STD200 - . Aktiv Rutoken ECP - . Alcor Micro SCR001 - . ATMEL AT91SC192192CT-USB - . Panasonic USB Smart Card Reader 7A-Smart - . Gemalto GemProx DU and SU - - remove support of Reiner-SCT cyberJack pinpad(a) on request of - Reiner-SCT. You should user the Reiner-SCT driver instead - - define CFBundleName to CCIDCLASSDRIVER so that non class drivers - have a higher priority. Used by pcsc-lite 1.5.5 and up. - Add a --disable-class configure option so that the Info.plist does - not define a Class driver. Default is class driver. - - do not power up a card with a voltage not supported by the reader - - add support of PIN_PROPERTIES_STRUCTURE structure and - FEATURE_IFD_PIN_PROPERTIES - - adds support of FEATURE_MCT_READERDIRECT. Only the Kobil TriB@nk - reader supports this feature for now. This is used for the Secoder - functionality in connected mode. - - add support of a composite device. No change needed with libhal. - use --enable-composite-as-multislot on Mac OS X since libhal is - not available on Mac OS X or with libusb on Linux - - some minor bugs removed - - -1.3.10 - 7 March 2009, Ludovic Rousseau - - add support for - . Aktiv Rutoken Magistra - . Atmel AT98SC032CT - . MSI StarReader SMART - . Noname reader (from Omnikey) - . Precise Biometrics 200 MC and 250 MC - . Realtek 43 in 1 + Sim + Smart Card Reader - . TianYu CCID SmartKey - . Xiring Xi Sign PKI - - add a patch to support the bogus OpenPGP card (on board key - generation sometimes timed out) - - disable support of the contactless part of SDI010 and SCR331DI - (this code was reverse engineered and hard to maintain) - - some minor bugs removed - - -1.3.9 - 18 November 2008, Ludovic Rousseau - - add support for - . ACS ACR122U PICC - . Aladdin eToken PRO USB 72K Java - . Atmel AT91SO - . CSB6 Basic - . CSB6 Secure - . CSB6 Ultimate - . Cherry SmartTerminal ST-1200USB - . CrazyWriter - . EasyFinger Standard - . EasyFinger Ultimate - . Gemalto PDT - . HP MFP Smart Card Reader - . KONA USB SmartCard - . SpringCard Prox'N'Roll - . VMware Virtual USB CCID - - MacOSX/configure: do not overwrite PCSC_CFLAGS, PCSC_LIBS, - LIBUSB_CFLAGS and LIBUSB_LIBS if already defined by the user - - by default, link statically against libusb on Mac OS X - - IFDHPowerICC(): use a very long timeout for PowerUp since the card - can be very slow to send the full ATR (up to 30 seconds at 4 MHz) - - SecurePINVerify(): correct a bug when using a Case 1 APDU and a - SCM SPR532 reader - - log the reader name instead of just the pcscd Lun - - some minor bugs removed - - -1.3.8 - 27 June 2008, Ludovic Rousseau - - add support for - . Oberthur ID-One Cosmo Card - - do not include the release number in the Info.plist to avoid a - diff of a configuration file when upgrading the package. - - do not fail compilation if libusb is not available - - do not crash if the reader firmware is bogus and does not support - chaining for extended APDU. This is the case for Kobil readers - - some minor bugs removed - - -1.3.7 - 8 June 2008, Ludovic Rousseau - - add support for - . ActivCard Activkey Sim - . Pro-Active CSB6 Ultimate - . id3 Semiconductors CL1356A HID - - src/parse: do not try to parse devices with bInterfaceClass=0xFF - by default (use command line argument -p for proprietary class) - - configure.in: check if libusb-0.1 is emulated by libusb-compat + - libusb-1.0 to use or not the USB interrupt feature - - correct a bug in the serial communication (GemPC twin serial - reader) - - correct a pthread problem under Solaris - - some minor bugs removed - - -1.3.6 - 30 April 2008, Ludovic Rousseau - - add support for - . Covadis Alya - . Covadis Véga - . Precise Biometrics 250 MC - . Validy TokenA sl vt - . Vasco DP905 - - better support for the O2Micro OZ776, GemCore SIM Pro - - the environment variable LIBCCID_ifdLogLevel overwrite the value - of ifdLogLevel read from the Info.plist file - - add support for DragonFly BSD - - some minor bugs removed - - -1.3.5 - 22 February 2008, Ludovic Rousseau - - add support for Gemplus Gem e-Seal Pro, Cherry SmartBoard, - G83-6610 - - use usb_interrupt_read() only if libusb > 0.1.12 or - --enable-usb-interrupt is used. libusb <= 0.1.12 is bogus and will - consume more CPU than needed. - - contrib/Kobil_mIDentity_switch/Kobil_mIDentity_switch was broken - on Linux since release 1.3.1 - - some minor bugs removed - - -1.3.4 - 8 February 2008, Ludovic Rousseau - - the serial driver could not be loaded because of the missing - symbol InterruptRead - - remove WAIT_FOR_SYSFS="bInterfaceProtocol" to do not delay udev - - -1.3.3 - 6 February 2008, Ludovic Rousseau - - add support for Lexar Smart Enterprise Guardian and Blutronics - Bludrive II CCID - - add support of TAG_IFD_POLLING_THREAD using IFDHPolling() to - detect asynchronous card movements. With this feature pcscd will - not poll the reader every 0.4 second for a card movement but will - wait until the reader sends a USB interrupt signal - - correct a bug with an ICCD-B device and a receive buffer smaller - than 4 bytes - - remove the sleep in the udev rule. It slows down the detection of - any USB device - - some minor bugs removed - - -1.3.2 - 22 January 2008, Ludovic Rousseau - - add support of Apple Mac OS X Leopard (10.5.1) - - solve a hotplug problem on Ubuntu 7.10 (reader was not detected) - - create a symlink from libccidtwin.so to libccidtwin.so.VERSION so - that the /etc/reader.conf configuration file do not need to edited - for each new driver version - - make driver for the GemPC Serial compile again - - some minor bugs removed - - -1.3.1 - 16 November 2007, Ludovic Rousseau - - add support for "Philips Semiconductors JCOP41V221" ICCD card, - O2Micro oz776 (ProductID 0x7772), CardMan5321, Giesecke & Devrient - StarSign Card Token 350 and 550, SafeNet IKey4000, Eutron - CryptoIdentity, Eutron Smart Pocket, Eutron Digipass 860, Lenovo - Integrated Smart Card Reader, "Kobil EMV CAP - SecOVID Reader III, - Charismathics token, Reiner-SCT cyberJack pinpad(a) - - improve support of Mac OS X and *BSD - - some minor bugs removed - - -1.3.0 - 10 May 2007, Ludovic Rousseau - - add support of ICCD version A and B - - add support for (new) KOBIL mIDentity, SchlumbergerSema Cyberflex - Access e-gate ICCD, Fujitsu Siemens Computers SmartCard USB 2A and - SmartCard Keyboard USB 2A readers, OmniKey CardMan 4321 - - contrib/RSA_SecurID/RSA_SecurID_getpasswd: tool to get the on time - password also displayed on the token screen - - contrib/Kobil_mIDentity_switch: tool to activate the CCID reader - of the Kobil mIDentity. The tool should be started automatically - by the udev rule on Linux - - GemPC pinpad: localisation of the string "PIN blocked", add - Portuguese(pt), Dutch(nl) and Turkish(tr) localisations - - some minor bugs removed - -1.2.1 - 27 January 2007, Ludovic Rousseau - - pcscd_ccid.rules: add non CCID generic (InterfaceClass: 0xFF) - readers - - INSTALL: document how to use --enable-udev on FreeBSD - - move the O2Micro Oz7762 from the unsupported to the supported list - since patches to support it are applied by default - (O2MICRO_OZ776_PATCH) - - -1.2.0 - 19 January 2007, Ludovic Rousseau - - add support for SCARD_ATTR_VENDOR_IFD_VERSION, - SCARD_ATTR_VENDOR_NAME and SCARD_ATTR_MAXINPUT tags used by - SCardGetAttrib(). Read SCARDGETATTRIB.txt for more documentation - - add support for OmniKey CardMan 5125, CardMan 1021, C3PO LTC32, - Teo by Xiring, HP USB Smartcard Reader - - use --enable-twinserial to build the serial reader driver - - use --enable-udev to configure for a use with Linux udev hotplug - mechanism. This will allow pcscd to avoid polling the USB bus - every 1 second - - some minor bugs removed - - -1.1.0 - 11 August 2006, Ludovic Rousseau - - support Extended APDU (up to 64KB) for readers in TPDU mode (many - readers) or Extended APDU mode (very rare). This only works for - T=1 cards. - - add support for C3PO LTC31 (new version), OmniKey CardMan 3021, HP - USB Smart Card Keyboard, Actividentity (ActiveCard) Activkey Sim, - id3 Semiconductors CL1356D and CL1356T, Alcor Micro AU9520 - - support the contactless interface of the SCR331-DI-NTTCOM - - add support of FreeBSD - - increase the USB timeout used for PIN verify/modify to not timeout - before the reader - - the 4-bytes value returned by CM_IOCTL_GET_FEATURE_REQUEST 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). - - use ./configure --enable-twinserial to compile and install the the - driver for the GemPC Twin serial - - some minor bugs removed - - -1.0.1 - 22 April 2006, Ludovic Rousseau - - add support for Axalto Reflex USB v3, SCM Micro SDI 010, Winbond - Electronics W81E381 chipset, Gemplus GemPC Card, Athena ASE IIIe - KB USB, OmniKey CardMan 3621 - - support Solaris (Solaris uses a different libusb) - - better documentation for ./configure arguments - - improve support of Cherry XX44 keyboard for PIN verify and change - (circumvent firmware bugs) - - do not use LTPBundleFindValueWithKey() from pcscd since this - function has been removed from pcscd API - - use -fvisibility=hidden is available to limit the number of - exported symbols - - -1.0.0 - 3 March 2006, Ludovic Rousseau - - add support for ActivCard USB Reader 3.0, Athena ASE IIIe USB V2, - SCM Micro SCR 355, SCR 3311, SCR 3320, SCR 3340 ExpressCard54, - Gemplus GemCore SIM Pro, GemCore POS Pro (serial and USB), GemPC - Express (ExpressCard/54 interface), SmartEpad (v 2.0), OmniKey - CardMan 5121 - - greatly improve support of PIN PAD readers. We now support TPDU - readers with T=1 cards - - use l10n strings for the Gemplus GemPC PIN PAD (it has a screen). - Supported languages are: de, en, es, fr, it - - rename ACS ACR 38 in ACR 38U-CCID since the ACR 38 is a different - reader and is not CCID compatible - - allow to select the Power On voltage using Info.plist instead of - recompiling the source code - - correct bugs in the support of multi-slots readers - - if the card is faster than the reader (TA1=97 for example) we try - to use a not-so-bad speed (corresponding to TA1=96, 95 or 94) - instead of the default speed of TA1=11 - - the src/parse tool do not use the driver anymore. No need to - update the Info.plist file first. - - some minor bugs removed - - -0.9.4 - 27 November 2005, Ludovic Rousseau - - add support for Eutron SIM Pocket Combo, Eutron CryptoIdentity, - Verisign Secure Token and VeriSign Secure Storage Token, GemPC - Card (PCMCIA), SCM SCR331-DI NTTCom, SCM Micro SCR 3310-NTTCom, - Cherry ST-1044U, Cherry SmartTerminal ST-2XXX - - 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). A sample code is available in examples/scardcontrol.c - - we need pcsc-lite 1.2.9-beta9 since some structures used for PIN - pad readers are defined by pcsc-lite - - 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 - - IFDHSetProtocolParameters(): only use a data rate supported by the - reader in the PPS negociation, otherwise we stay at the default - speed. - - calculate and store the read timeout according to the card ATR - instead of using a fixed value of 60 seconds - - increase the read timeout if the card sends and WTX request - - improve support of GemPC Twin and GemPC Card (serial protocol) - - reset the device on close 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. - - use color logs - - some minor bugs removed - - -0.9.3 - 14 March 2005, Ludovic Rousseau - - change the licence from GNU GPL to GNU Lesser GPL (LGPL) - - add support for ACS ACR 38, Kobil KAAN Base, Kobil KAAN Advanced, - Kobil KAAN SIM III, Kobil KAAN mIDentity, SCM Micro SCR 331, - SCM Micro SCR 331-DI, SCM Micro SCR 335, SCM Micro SCR 3310, - SCM Micro SCR 532, Cherry XX44 readers - - improve communication speed with readers featuring "Automatic PPS - made by the CCID" - - switch the Cherry xx33 reader in ISO mode if power up in EMV mode - fails. - - add support of character level readers. Thanks to O2Micro for the - patch - - add support for the O2Micro OZ776S reader but the reader firmware - is still bogus - - check firmware version to avoid firmwares with bugs. You can still - use a bogus firmware by setting DRIVER_OPTION_USE_BOGUS_FIRMWARE - in Info.plist - - some minor bugs removed - -0.9.2 - 15 August 2004, Ludovic Rousseau - - T=1 TPDU code: - . the work on T=1 TPDU code was possible thanks to Gemplus - validation team who helped me test, debug and bring the code to - an EMV validation level. Thanks to Jérôme, Jean-Yves, Xavier and - the Gemplus readers department - . error code was not checked correctly - . avoid a (nearly) infinite loop when resynch are needed. - . correctly initialise an internal value to allow more than one - reader to work - - multi-slots readers - . add support for multi-slots readers. The only one I have is a - SCM Micro SCR 331-DI with a contact and a contactless interface. - The contactless interface may or may not work for you since the - reader uses proprietary (undocumented) commands. - - GemPC Twin serial reader - . perform a command (get the reader firmware) to be sure a GemPC - Twin (serial or pcmcia) reader is connected - . use a dynamic timeout when reading the serial port. - The first timeout used 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. - - use `pkg-config libpcsclite --cflags` to locate the pcsc-lite - header files - - use `pkg-config --print-errors --atleast-version=1.2.9-beta5 libpcsclite` - to test the pcsc-lite version - - code improvements thanks to the splint tool (http://www.splint.org/) - -0.9.1 - 1 July 2004, Ludovic Rousseau - - I forgot to define IFD_PARITY_ERROR in a .h file - -0.9.0 - 1 July 2004, Ludovic Rousseau - - The T=1 TPDU automata from Carlos Prados' Towitoko driver is very - limited and do not support error management mechanisms. - I then used the T=1 TPDU automata from OpenCT (OpenSC project). - This automata is much more powerful but still lacks a lot of error - management code. - I then added all the needed code to reach the quality level - requested by the EMV standard. - - add support for new readers: - . Advanced Card Systems ACR 38 - . Cherry XX33 - . Dell keyboard SK-3106 - . Dell smart card reader keyboard - . SCR 333 - - add support of multi procotol cards (T=0 and T=1) - - the debug level is now dynamic and set in the Info.plist file (no - need to recompile the driver any more) - - add support for the libusb naming scheme: usb:%04x/%04x:libusb:%s - - INSTALL: add a "configuring the driver for the serial reader - (GemPC Twin)" part - - 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 - - add support of IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and - IOCTL_SMARTCARD_VENDOR_VERIFY_PIN in IFDHControl() - - read ifdDriverOptions from Info.plist to limit the use of - IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE (idea from Peter Williams) - - provide an example of use of SCardControl() - IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and - IOCTL_SMARTCARD_VENDOR_VERIFY_PIN in example/ - - add a --enable-pcsclite option (default to yes) so that the driver - can be compiled for a different framework (one needing - tokenparser.l like Solaris) - - Reset action is power off and power on, not just power on - - use the include files from pcsc-lite - - 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 - -0.4.1 - 14 February 2004, Ludovic Rousseau - - distribute missing files readers/supported_readers.txt and - src/create_Info_plist.pl - 'make install' failed because of this. - -0.4.0 - 13 February 2004, Ludovic Rousseau - - support of T=1 with TPDU readers. A lot of the T=1 code comes from - Carlos Prados towitoko driver. - My code is GNU GPL, his code is GNU LGPL so the global driver is - GNU GPL - - PPS negotiation if the reader does not do it automatically - - add support for the Silitek SK-3105 keyboard. It's a USB device - with multiple interfaces - - use the create_Info_plist.pl script to generate the installed - Info.plist from an Info.plist template and a list of supported - readers. The Info.plist was too "complex" to maintain by hand - since it now contains 11 entries - - add support of IFDHCreateChannelByName to avoid wrong reader - enumeration. This is not complete if you have multiple _identical_ - readers. You need to use a > 1.2.0 pcsc-lite version (not yet - released at that time) - - 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. - - 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 - - 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 - - add a --enable-ccidtwindir argument to ./configure to specify the - serial GemPC Twin installation directory - - debug and code improvements and simplifications - -0.3.2 - 4 November 2003, Ludovic Rousseau - - src/commands.c: correct a stupid bug that occurs with an APDU with - 2 bytes response. - - Info.plist: add SPR 532 in list of supported readers - - 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. - - move LTC31 reader from unsupported to supported reader list. It - was my f ault 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é s Teixidor for pointing the problem. - - src/commands.c: comment out the automatic GET RESPONSE part. I - don't think it should be in the driver. Maybe in pcscd instead? - -0.3.1 - 23 September 2003, Ludovic Rouseau - - add --enable-multi-thread (enabled by default) for thread safe - support an APDU multiplexing. You will need pcsc-lite-1.2.0-rc3 or - above to use this feature. - - add --enable-libusb=PATH option is your libusb is not installed in - /usr or /usr/local - - honor DESTDIR in install rules (closes [ #300110 ]). Thanks to - Ville Skyttä for the patch. - - src/ccid.c: do not switch the GemPC Key and GemPC Twin in APDU - mode since it also swicth in EMV mode and may not work with non - EMV cards - - src/ccid_serial.c: complete reimplementation of the Twin serial - protocol using a finite state automata (code much simpler) - -0.3.0 - 10 September 2003, Ludovic Rousseau - - support of GemPC Twin connected to a serial port. Thanks to Niki - W. Waibel for a working prototype. - - support of auto voltage at power up if the reader support it - instead of forcing a 5V in all cases. - - support of APDU mode instead of just TPDU if the reader support - it. Thanks to Jean-Luc Giraud for the idea and inspiration I got - from his "concurrent" driver. - - support of "time request" from the card. - - parse: new indentation for more readability of supported features. - - switch the GemPC Key and GemPC Twin in APDU mode since they - support it but do not announce it in the dwFeatures. - - new build process using autoconf/automake. - -0.2.0 - 26 August 2003, Ludovic Rousseau - - Works under MacOS X - - Info.plist: use an for the alias enumeration - - Makefile rework for *BSD and MacOS X - -0.1.0 - 13 August 2003, Ludovic Rousseau - - First public release - - - vim:ts=20 diff --git a/README.md b/README.md new file mode 100644 index 0000000..ad66938 --- /dev/null +++ b/README.md @@ -0,0 +1,1339 @@ +USB CCID IFD Handler +==================== + +This package provides the source code for a generic USB CCID (Chip/Smart +Card Interface Devices) and ICCD (Integrated Circuit(s) Card Devices) +driver. See the USB CCID [1] and ICCD [2] specifications from the USB +working group. + +* [1] http://www.usb.org/developers/docs/devclass_docs/DWG_Smart-Card_CCID_Rev110.pdf +* [2] http://www.usb.org/developers/docs/devclass_docs/DWG_Smart-Card_USB-ICC_ICCD_rev10.pdf + +Authors: +======== + +- Ludovic Rousseau +- Carlos Prados for the PPS and ATR parsing code (taken from his + towitoto driver) in towitoko/ directory. +- Olaf Kirch for the T=1 TPDU code (from the OpenCT package) in openct/ + directory. I (Ludovic Rousseau) greatly improved this code. + + +CCID and ICCD readers: +====================== + +A reader can be in one of these list: +- supported + See https://ccid.apdu.fr/ccid/supported.html +- should work + See https://ccid.apdu.fr/ccid/shouldwork.html +- unsupported + See https://ccid.apdu.fr/ccid/unsupported.html +- disabled + See https://ccid.apdu.fr/ccid/disabled.html + + +Supported operating systems: +============================ + +- GNU/Linux (libusb 1.0) +- MacOS X/Darwin (libusb 1.0) + +See also https://ccid.apdu.fr/ for more information. + + +Debug informations: +=================== + +The driver uses the debug function provided by pcscd. So if pcscd sends +its debug to stdout (`pcscd --foreground`) then the CCID driver will also +send its debug to stdout. If pcscd sends its debug to syslog (by +default) then the CCID driver will also send its debug to syslog. + +You can change the debug level using the `Info.plist` configuration file. +The `Info.plist` file is installed, by default, in +`/usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist` +or set the environment variable `LIBCCID_ifdLogLevel`. + +The debug level is set in the `ifdLogLevel` field. It is a binary OR +combination of 4 different levels. +- 1: critical: important error messages +- 2: info: informative messages like what reader was detected +- 4: comm: a dump of all the bytes exchanged between the host and the + reader +- 8: periodic: periodic info when pcscd test if a card is present (every + 1/10 of a second) + +By default the debug level is set to 3 (1 + 2) and correspond to the +critical and info levels. + +You have to restart the driver so it reads the configuration file again +and use the new debug level value. To restart the driver you just need +to unplug all your CCID readers so the driver is unloaded and then replug +your readers. You can also restart pcscd. + + +Voltage selection +================= + +You can change the voltage level using the `Info.plist` configuration +file. The `Info.plist` is installed, by default, in +`/usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist` + +The voltage level is set in the `ifdDriverOptions` field. It is a binary OR +combination of 4 different levels. + +- 0: power on the card at 5V (default value) +- 16: power on the card at 3V and, if 3V fails then use 5V +- 32: power on the card at 1.8V, then 3V and then 5V +- 48: let the reader decide + +By default the voltage level is set to 0 and corresponds to 5V. + +You have to restart the driver so it reads the configuration file again +and use the new voltage level value. To restart the driver you just need +to unplug all your CCID readers so the driver is unloaded and then replug +your readers. You can also restart pcscd. + + +Licence: +======== + + This library is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at +your option) any later version. + + This library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser +General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License +along with this library; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + +History: +======== + +1.4.31 - 10 August 2019, Ludovic Rousseau + - Add support of + - ACS ACR1252 Reader + - Aladdin R.D. JaCartaReader + - Alcor Link AK9563 + - AvestUA AvestKey + - Avtor SecureToken (idProduct: 0x0020) + - Bit4id TokenME EVO v2 + - Bit4id miniLector AIR EVO + - Bit4id miniLector Blue + - Broadcom Corp 58200 (idProduct: 0x5843) + - Broadcom Corp 58200 (idProduct: 0x5844) + - Broadcom Corp 58200 (idProduct: 0x5845) + - Certgate GmbH ONEKEY ID 2 USB + - HID Global Crescendo Key 0x0028 + - HID Global Crescendo Key 0x0029 + - HID Global Crescendo Key 0x002B + - HID Global Crescendo Key 0x002D + - Identiv SCR3500 C Contact Reader + - InfoCert WirelessKey + - NXP PN7462AU CCID + - Route1 MobiKEY Fusion3 + - SPECINFOSYSTEMS DIAMOND token + - MacOSX/configure: fix checking error for dynamic library libusb + - Some minor improvements for debug + + +1.4.30 - 19 September 2018, Ludovic Rousseau + - The project moved to https://ccid.apdu.fr/ + - Add support of + - ACS ACR33 ICC Reader + - BIFIT ANGARA + - Broadcom Corp 58200 + - Certgate GmbH AirID 2 USB + - DC.Ltd DC4 5CCID READER + - Genesys Logic CCID Card Reader + - Genesys Logic Combo Card Reader + - InfoThink IT-500U Reader + - Spyrus Inc WorkSafe Pro (ProductID 0x3117) + - Disabled readers + - REINER SCT cyberJack RFID standard + - Update reader names for + - Fujitsu Keyboard KB100 SCR + - Fujitsu Keyboard KB100 SCR eSIG + - FujitsuTechnologySolutions GmbH Keyboard KB SCR2 + - Yubico YubiKey CCID + - Yubico YubiKey FIDO+CCID + - Yubico YubiKey OTP+CCID + - Yubico YubiKey OTP+FIDO+CCID + - Fix libusb config descriptor leak + - Fix leaking an allocated bundle in case no matching reader was found + + +1.4.29 - 21 February 2018, Ludovic Rousseau + - Add support of + - Access IS NFC Smart Module (With idProduct 0x0164) + - Bit4id Digital-DNA Key + - Bit4id Digital-DNA Key BT + - Bluink Ltd. Bluink CCID + - Chicony HP Skylab USB Smartcard Keyboard + - HID Global OMNIKEY 5023 Smart Card Reader + - HID Global OMNIKEY 5027CK CCID CONFIG IF + - KeyXentic Inc. KX906 Smart Card Reader + - Spyrus Inc Rosetta USB + - Spyrus Inc WorkSafe Pro + - Watchdata USB Key (idProduct: 0x0418) + - The C3PO LTC31 v2 wrongly declares PIN support + - Remove extra EGT patch because if has bad side effects + + +1.4.28 - 11 October 2017, Ludovic Rousseau + - Add support of + - Athena IDProtect Flash + - Elatec TWN4/B1.06/CPF3.05/S1SC1.32/P (Beta 3) + - HID Global OMNIKEY 5122 Dual + - HID Global OMNIKEY 5122 Smartcard Reader + - IIT E.Key Crystal-1 + - KRONEGGER Micro Core Platform + - KRONEGGER NFC blue Reader Platform + - Ledger Nano S + - REINER SCT cyberJack RFID standard + - REINER SCT cyberJack one + - SAFETRUST SABRE SCR + - SafeNet eToken 5300 + - Unicept GmbH AirID USB Dongle + - Watchdata USB Key + - mCore SCard-Reader + - Disabled readers + - Jinmuyu Electronics Co., Ltd. MR800 + - Fix non-pinpad HID global devices + - udev rules: + - allow rule overwrite + - Disable USB autosuspend on C3PO LTC31 v1 reader + - Some minor improvements + + +1.4.27 - 21 May 2017, Ludovic Rousseau + - Add support of + - ACS ACR1255U-J1 + - ACS CryptoMate (T2) + - ANCUD CCID USB Reader & RNG + - DUALi DE-620 Combi + - FT CCID + - FT CCID KB + - FT U2F CCID KB + - FT U2F CCID KBOARD + - HID Global OMNIKEY 5422 Smartcard Reader + - InfoThink IT-102MU Reader + - Kapsch TrafficCom USB SAM reader + - MK Technology KeyPass S1 + - Mulann PVT + - Regula RFID Reader + - Spyrus Inc PocketVault P-3X + - Unicept GmbH AirID USB + - Add Microchip SEC1210 UART support (when connected on a serial port) + - Add Zero Length Packet (ZLP) support for Gemalto IDBridge CT30 and K30 + enable the patch using ./configure --enable-zlp + - Add support of HID Omnikey 5422 as multi slot reader (for macOS) + - Escape command: signals buffer overflow instead of silently + truncating the buffer + - Fix a bug with multi readers and pcscd uses hotplug_libusb (not the + recommended configuration) + - Some minor improvements + + +1.4.26 - 7 January 2017, Ludovic Rousseau + - Add support of + - Bit4id Digital DNA Key + - Bit4id tokenME FIPS v3 + - INGENICO Leo + - appidkey GmbH ID60-USB + - PowerOn: the default algorithm is now 5V then 1.8V then 3V then fail. + It is still possible to change the initial voltage in the + Info.plist file. Now, in any case, all the values are tried + before failing. + - Negotiate maximum baud rate when bNumDataRatesSupported = 0 + - Some minor improvements + + +1.4.25 - 30 September 2016, Ludovic Rousseau + - Add support of + - Aladdin R.D. JaCarta (idProduct: 0x0402) + - Broadcom Corp 5880 (idProduct: 0x5832) + - Broadcom Corp 5880 (idProduct: 0x5833) + - Broadcom Corp 5880 (idProduct: 0x5834) + - ESMART Token GOST X2 ET1020-A + - Feitian VR504 VHBR Contactless & Contact Card Reader + - Feitian bR500 + - Gemalto K50 + - appidkey GmbH ID100-USB SC Reader + - appidkey GmbH ID50 -USB + - Remove suport of + - Broadcom Corp 5880 (idProduct: 0x5800) + - Broadcom Corp 5880 (idProduct: 0x5805) + - KEBTechnology KONA USB SmartCard + - macOS: Fix composite device enumeration + - Fix crash with GemCore Pos Pro and GemCore Sim Pro + - Some minor improvements + + +1.4.24 - 22 May 2016, Ludovic Rousseau + - Add support of + - Generic USB Smart Card Reader + - Giesecke & Devrient GmbH StarSign CUT S + - HID AVIATOR Generic + - better support of Elatec TWN4 SmartCard NFC + - better support of SCM SCL011 + - betetr support of HID Aviator generic + - fix SCARD_ATTR_VENDOR_IFD_SERIAL_NO attribute size + - fix a race condition on card events with multiple readers + - Some minor improvements + + +1.4.23 - 20 April 2016, Ludovic Rousseau + - Add support of + - ACS ACR3901U ICC Reader + - Alcor Micro AU9560 + - Cherry SmartTerminal XX44 + - HID Global OMNIKEY 3x21 Smart Card Reader + - HID Global OMNIKEY 5022 Smart Card Reader + - HID Global OMNIKEY 6121 Smart Card Reader + - IonIDe Smartcard Reader reader + - KACST HSID Reader + - KACST HSID Reader Dual Storage + - KACST HSID Reader Single Storage + - Remove support of + - VMware Virtual USB CCID + - Do NOT add support of + - DUALi DE-ABCM6 + - Fix a busy loop consuming 100% of CPU for some composite USB devices + impacted readers: Yubico Yubikey NEO U2F+CCID and Broadcom BCM5880 + - Remove support of (unused) option DRIVER_OPTION_RESET_ON_CLOSE + - log libusb error name instead of decimal value + - Some minor improvements + + +1.4.22 - 10 January 2016, Ludovic Rousseau + - Add support of + - Aktiv Rutoken PINPad 2 + - Aladdin R.D. JC-WebPass (JC600) + - Aladdin R.D. JCR-770 + - Aladdin R.D. JaCarta + - Aladdin R.D. JaCarta Flash + - Aladdin R.D. JaCarta LT + - Aladdin R.D. JaCarta U2F (JC602) + - Athena ASEDrive IIIe Combo Bio PIV + - Athena ASEDrive IIIe KB Bio PIV + - GEMALTO CT1100 + - GEMALTO K1100 + - Hitachi, Ltd. Hitachi Biometric Reader + - Hitachi, Ltd. Hitachi Portable Biometric Reader + - Nitrokey Nitrokey Storage + - THURSBY SOFTWARE TSS-PK1 + - Thursby Software Systems, Inc. TSS-PK7 + - Thursby Software Systems, Inc. TSS-PK8 + - Patch for Microchip SEC1110 reader on Mac OS X (card events notification) + - Patch for Cherry KC 1000 SC (problem was with a T=1 card and case 2 APDU) + - Fix support of FEATURE_MCT_READER_DIRECT for the Kobil mIDentity + visual reader + - Set timeout to 90 sec for PPDU (Pseudo APDU) commands. This change + allows the use of a Secure Verify command sent as a PPDU through + SCardTransmit(). + - Fix a crash when reader reader initialization failed + - Fix initialization bug with Gemalto Pinpad reader on Mac OS X + - Some minor bugs fixed + + +1.4.21 - 21 October 2015, Ludovic Rousseau + - Add support of + - ACS ACR1252 Dual Reader + - Chicony HP USB Smartcard CCID Keyboard JP + - Chicony HP USB Smartcard CCID Keyboard KR + - FT ePass2003Auto + - Feitian bR301 BLE + - Feitian iR301 (ProductID 0x0619) + - Feitian iR301 (ProductID 0x061C) + - Identiv @MAXX ID-1 Smart Card Reader + - Identiv @MAXX Light2 token + - Identiv CLOUD 2980 F Smart Card Reader + - Identiv Identiv uTrust 4701 F Dual Interface Reader + - Identiv SCR3500 A Contact Reader + - Identiv SCR3500 B Contact Reader + - Identiv SCR35xx USB Smart Card Reader + - Identiv uTrust 2900 R Smart Card Reader + - Identiv uTrust 2910 R Smart Card Reader + - Identiv uTrust 2910 R Taglio SC Reader + - Identiv uTrust 3512 SAM slot Token + - Identiv uTrust 3522 embd SE RFID Token + - Identiv uTrust 3700 F CL Reader + - Identiv uTrust 3701 F CL Reader + - Identive Identive CLOUD 4000 F DTC + - Liteon HP SC Keyboard - Apollo (Liteon) + - Liteon HP SC Keyboard - Apollo JP (Liteon) + - Liteon HP SC Keyboard - Apollo KR (Liteon) + - Nitrokey Nitrokey HSM + - Nitrokey Nitrokey Pro + - Nitrokey Nitrokey Start + - Rocketek RT-SCR1 + - VASCO DIGIPASS 875 + - WatchCNPC USB CCID Key + - Remove support of + - Crypto Stick Crypto Stick v1.4 is an old version of Nitrokey Nitrokey Pro + - Free Software Initiative of Japan Gnuk Token is an old version + of Nitrokey Nitrokey Start + - Add Feitain R502 dual interface (composite) reader on Mac OS X + - display a human readable version of the error code returned by + libusb + - Mac OS X: wait until libusb/the reader is ready + - some minor bugs fixed + + +1.4.20 - 5 August 2015, Ludovic Rousseau + - Add support of + - ACS ACR1251 Dual Reader + - Access IS NFC Smart Module + - BIFIT iToken + - BLUTRONICS BLUDRIVE II CCID (idProduct: 0x1079) + - Generic MultiCard Device + - NXP Pegoda 2 N + - SafeNet eToken 5100 + - SafeNet eToken 7300 + - Yubico Yubikey 4 CCID + - Yubico Yubikey 4 OTP+CCID + - Yubico Yubikey 4 OTP+U2F+CCID + - Yubico Yubikey 4 U2F+CCID + - Depends on libusb version 1.0.9 instead of 1.0.8 + - The O2 Micro Oz776 reader only supports 9600 bps + - Change installation directory for Mac OS X El Capitan 10.11 + + +1.4.19 - 13 May 2014, Ludovic Rousseau + - Add support of + - AK910 CKey (idProduct 0x0001) + - AK910 CKey (idProduct 0x0011) + - AK910 IDONE + - Broadcom Corp 5880 (idProduct: 0x5804) + - CASTLES EZCCID Smart Card Reader + - Cherry KC 1000 SC + - Cherry KC 1000 SC Z + - Cherry KC 1000 SC/DI + - Cherry KC 1000 SC/DI Z + - Cherry TC 1300 + - Chicony USB Smart Card Keyboard + - Elatec TWN4 SmartCard NFC + - Feitian 502-CL + - Feitian eJAVA Token + - FujitsuTechnologySolutions GmbH Keyboard KB100 SCR + - FujitsuTechnologySolutions GmbH Keyboard KB100 SCR eSIG + - Hewlett-Packard HP lt4112 Gobi 4G Module + - Identive SCT3522CC token + - OMNIKEY AG 6121 USB mobile + - PIVKey T800 + - REINER SCT tanJack Bluetooth + - Watchdata USB Key + - Add syslog(3) debug for Mac OS X Yosemite. + Use: sudo syslog -c "com.apple.ifdreader PID" -d to change the logging level. + See also "Change syslog logging level on Yosemite" + http://ludovicrousseau.blogspot.com/2015/03/change-syslog-logging-level-on-yosemite.html + - Remove ZLP patch for Gemalto IDBridge CT30 and K30. The patch was + causing problems with the K50. A new reader firmware (version F) + solved the problem so the patch is no more needed. + - Fix a memory leak in an error path + - some minor bugs removed + + +1.4.18 - 13 September 2014, Ludovic Rousseau + - Add support of + - Cherry Cherry TC 1100 + - Cherry Smart Card Reader USB + - Cherry Smartcard Keyboard G87-1xx44 + - FujitsuTechnologySolutions GmbH Keyboard KB SCR2 + - Lenovo Lenovo USB Smartcard Keyboard + - Yubico Yubikey NEO OTP+U2F+CCID + - Yubico Yubikey NEO U2F+CCID + - eID_R6 001 X8 + - fix support of Omnikey CardMan 3121 + - reduce memory consumed when configured with --enable-embedded + - prepare the port to UEFI + + +1.4.17 - 11 June 2014, Ludovic Rousseau + - Add support of + - Feitian R502 + - Free Software Initiative of Japan Gnuk Token + - German Privacy Foundation Crypto Stick v2.0 + - HID Global veriCLASS Reader + - HID OMNIKEY 5025-CL + - Identive Technologies Multi-ISO HF Reader - USB + - OMNIKEY 5421 + - OMNIKEY AG 3121 USB + - udea MILKO V1. + - Fix support of O2 Micro Oz776. The reader is limited to 9600 bps + - some minor bugs removed + + +1.4.16 - 23 March 2014, Ludovic Rousseau + - Add support of + - Crypto Stick Crypto Stick v1.4 + - Hewlett Packard USB Smartcard CCID Keyboard + - IID AT90S064 CCID READER + - INSIDE Secure VaultIC 405 Smart Object + - INSIDE Secure VaultIC 441 Smart Object + - Microchip SEC1110 + - Microchip SEC1210 + - Watchdata W5181 + - Add support of DRIVER_OPTION_DISABLE_PIN_RETRIES + The Gemalto pinpad reader sends a VERIFY command with no PIN value + in order to retreive the remaining retries from the card. Some + cards (like the OpenPGP card) do not support this. + It is now possible to disable this behavior from the Gemalto + Pinpad and Covadis Véga Alpha. + - add support of WTX received before SW during Secure Pin Entry Verify + The Swiss health care card sends a WTX request before returning + the SW code. If the reader is in TPDU and the card is in T=1 the + driver must manage the request itself. + + +1.4.15 - 14 February 2014, Ludovic Rousseau + - Add support of + - DUALi DRAGON NFC READER + - Feitian bR301 + - Gemalto CR30 reader in serial communication + - Gemalto Ezio Shield Pro SC + - IIT E.Key Almaz-1C + - PIN_MODIFY_STRUCTURE & PIN_VERIFY_STRUCTURE: Fix calculation of + the command length after pcsc-lite 1.8.9 (October 2013) changed + the PCSC/reader.h header + - Add specific PIN min (0) & max (25) sizes for SmartTerminal + ST-2xxx + - Do not get the data rates if bNumDataRatesSupported = 0 + - Support Gemalto features for pinpad readers MinimumPINSize, + MaximumPINSize and bEntryValidationCondition are fetched from the + reader firmware + - disable (broken) pinpad for Fujitsu SmartCase KB SCR eSIG + - examples/scardcontrol.c: + - Parse codes returned by a pinpad (as SW1/SW2) + Known codes for now are: + 0x9000: Success + 0x6400: Timeout + 0x6401: Cancelled by user + 0x6402: PIN mismatch + 0x6403: Too short or too long PIN + - Retrieve min and max PIN sizes from the driver + - Retrieve bEntryValidationCondition from the driver + - be more strict for bInterfaceClass = 255 by also checking extra_length + - some minor bugs removed + + +1.4.14 - 25 November 2013, Ludovic Rousseau + - Add support of + - Gemalto GemCore SIM Pro firmware 2.0 (using USB) + - report FEATURE_IFD_PIN_PROPERTIES only for pinpad readers + - Generalize the management of (old) readers with bDeviceClass = 0xFF + - some minor bugs removed + + +1.4.13 - 9 October 2013, Ludovic Rousseau + - Add support of + - Access IS ePassport Reader + - Planeta RC700-NFC CCID + - Add support of Windows value for CM_IOCTL_GET_FEATURE_REQUEST + Windows uses 0x313520 for SCARD_CTL_CODE(3400) pcsc-lite uses + 0x42000D48 for SCARD_CTL_CODE(3400) + RDP aplications (like rdesktop) will convert SCardControl() + commands from a Windows application (so using 0x313520) to + pcsc-lite. + - fix multi-slot support for card movement notification (introduced + in 1.4.12) + - Mac OS X: differentiate each libccid library by the dynamic linker + using --prefix=/fake/$BUNDLE_ID + - some minor bugs removed + + +1.4.12 - 12 August 2013, Ludovic Rousseau + - Add support of + - HID OMNIKEY 5127 CK + - HID OMNIKEY 5326 DFR + - HID OMNIKEY 5427 CK + - Ingenico WITEO USB Smart Card Reader (Base and Badge) + - SecuTech SecuTech Token + - Add support of card movement notifications for multi-slot readers + - Check libusb is at least at version 1.0.8 + - Get the serialconfdir value from pcsc-lite pkg config instead of + using $(DESTDIR)/$(sysconfdir)/reader.conf.d/ + - Disable class driver on Mac OS X + - Update the bundle name template to include the vendor name + - some minor bugs removed + + +1.4.11 - 12 June 2013, Ludovic Rousseau + - Add support of + . Gemalto IDBridge CT30 + . Gemalto IDBridge K30 + . SCM Microsystems Inc. SCL010 Contactless Reader + . SCM Microsystems Inc. SDI011 Contactless Reader + . THRC reader + - Better management of time extension requests + - parse: better support of devices with bInterfaceClass = 0xFF + - udev rule file: Remove setting group to pcscd, remove support of + Linux kernel < 2.6.35 for auto power up management + - some minor bugs removed + + +1.4.10 - 16 April 2013, Ludovic Rousseau + - Add support of + . ACS APG8201 USB Reader with PID 0x8202 + . GIS Ltd SmartMouse USB + . Gemalto IDBridge K3000 + . Identive CLOUD 2700 F Smart Card Reader + . Identive CLOUD 2700 R Smart Card Reader + . Identive CLOUD 4500 F Dual Interface Reader + . Identive CLOUD 4510 F Contactless + SAM Reader + . Identive CLOUD 4700 F Dual Interface Reader + . Identive CLOUD 4710 F Contactless + SAM Reader + . Inside Secure AT90SCR050 + . Inside Secure AT90SCR100 + . Inside Secure AT90SCR200 + . SCR3310-NTTCom USB SmartCard Reader + . SafeTech SafeTouch + . SpringCard H512 Series + . SpringCard H663 Series + . SpringCard NFC'Roll + . Yubico Yubikey NEO CCID + . Yubico Yubikey NEO OTP+CCID + - Add support of time extension for Escape commands + + +1.4.9 - 16 January 2013, Ludovic Rousseau + - Add support of + . Aktiv Rutoken PINPad In + . Aktiv Rutoken PINPad Ex + . REINER SCT cyberJack go + - Info.plist: Correctly handle reader names containing & + + +1.4.8 - 22 June 2012, Ludovic Rousseau + - Add support of + . SCR3310-NTTCom USB (was removed in version 1.4.6) + . Inside Secure VaultIC 420 Smart Object + . Inside Secure VaultIC 440 Smart Object + - Wait up to 3 seconds for reader start up + - Add support of new PC/SC V2 part 10 properties: + . dwMaxAPDUDataSize + . wIdVendor + . wIdProduct + - Use helper functions from libPCSCv2part10 to parse the PC/SC v2 + part 10 features + + +1.4.7 - 22 June 2012, Ludovic Rousseau + - Add support of + . ACS ACR101 ICC Reader + . ACS CryptoMate64 + . Alcor Micro AU9522 + . Bit4id CKey4 + . Bit4id cryptokey + . Bit4id iAM + . Bit4id miniLector + . Bit4id miniLector-s + . CCB eSafeLD + . Gemalto Ezio Shield Branch + . KOBIL Systems IDToken + . NXP PR533 + - KOBIL Systems IDToken special cases: + . Give more time (3 seconds instead of 2) to the reader to answer + . Hack for the Kobil IDToken and Geman eID card. The German eID + card is bogus and need to be powered off before a power on + . Add Reader-Info-Commands special APDU/command + - Manufacturer command + - Product name command + - Firmware version command + - Driver version command + - Use auto suspend for CCID devices only (Closes Alioth bug + [#313445] "Do not activate USB suspend for composite devices: + keyboard") + - Fix some error management in the T=1 TPDU state machine + - some minor bugs removed + - some minor improvements added + + +1.4.6 - 6 April 2012, Ludovic Rousseau + - Add support of + . Avtor SC Reader 371 + . Avtor SecureToken + . DIGIPASS KEY 202 + . Fujitsu SmartCase KB SCR eSIG + . Giesecke & Devrient StarSign CUT + . Inside Secure VaultIC 460 Smart Object + . Macally NFC CCID eNetPad reader + . OmniKey 6321 USB + . SCM SDI 011 + . Teridian TSC12xxF + . Vasco DIGIPASS KEY 101 + - Remove support of readers without a USB CCID descriptor file + . 0x08E6:0x34C1:Gemalto Ezio Shield Secure Channel + . 0x08E6:0x34C4:Gemalto Ezio Generic + . 0x04E6:0x511A:SCM SCR 3310 NTTCom + . 0x0783:0x0008:C3PO LTC32 USBv2 with keyboard support + . 0x0783:0x9002:C3PO TLTC2USB + . 0x047B:0x020B:Silitek SK-3105 + - Disable SPE for HP USB CCID Smartcard Keyboard. The reader is + bogus and unsafe. + - Convert "&" in a reader name into "&" to fix a problem on Mac + OS X + - Fix a problem with ICCD type A devices. We now wait for device ready + - Secure PIN Verify and PIN Modify: set the minimum timeout to 90 + seconds + - Add support of wIdVendor and wIdProduct properties + - Add support of dwMaxAPDUDataSize + - Add support of Gemalto firmware features + - some minor bugs removed + + +1.4.5 - 11 October 2011, Ludovic Rousseau + - Add support of + - Alcor Micro AU9540 + - BIFIT USB-Token iBank2key + - BIFIT iBank2Key + - Gemalto Ezio Shield PinPad reader + - Gemalto SA .NET Dual + - Precise Sense MC reader (with fingerprint) + - SDS DOMINO-Key TWIN Pro + - Ubisys 13.56MHz RFID (CCID) + - Add support of bPPDUSupport and FEATURE_CCID_ESC_COMMAND + - SCARD_ATTR_VENDOR_NAME and SCARD_ATTR_VENDOR_IFD_VERSION are not + the vendor name and version of the driver but of the IFD: + InterFace Device i.e. the smart card reader. We then return the + USB iManufacturer string as SCARD_ATTR_VENDOR_NAME and USB + bcdDevice as SCARD_ATTR_VENDOR_IFD_VERSION + - reduce binary size bu removing unused features from simclist + - Fix some warnings reported bu Coverity + + +1.4.4 - 13 May 2011, Ludovic Rousseau + - Add support of + - Gemalto Ezio CB+ + - Gemalto Ezio Generic + - Gemalto Ezio Shield + - Gemalto Ezio Shield PinPad + - Gemalto Ezio Shield Secure Channel + - Activate USB automatic power suspend. The Linux kernel should + power off the reader automatically if it is not used (pcscd is not + running). + - Add support of TLV Properties wLcdMaxCharacters and wLcdMaxLines. + They just duplicate wLcdLayout + - some minor bugs removed + + +1.4.3 - 2 April 2011, Ludovic Rousseau + - Add support of + - Feitian ePass2003 readers + - Neowave Weneo + - SCM SCL011 + - Vasco DIGIPASS 920 + - use :libudev: instead of :libhal: naming scheme. + - Do not install RSA_SecurID_getpasswd and Kobil_mIDentity_switch + and the associated documentation. + - the Secure Pin Entry of the HP USB Smart Card Keyboard is bogus so + disable it + - some minor bugs removed + + +1.4.2 - 22 February 2011, Ludovic Rousseau + - Add support of + - ACS APG8201 PINhandy 1 + - Aktiv Rutoken lite readers + - Feitian SCR310 reader (also known as 301v2) + - Oberthur ID-ONE TOKEN SLIM v2 + - Vasco DIGIPASS KEY 200 + - Vasco DIGIPASS KEY 860 + - Xiring Leo v2 + - Xiring MyLeo + - new Neowave Weneo token + - Add back support of "bogus" Oz776, REINER SCT and BLUDRIVE II + - Ease detection of OpenCT by pcsc-lite + - disable use of interrupt card events for multi slots readers (the + algorithm is bogus and can't be used) + - fix minor problems detected by the clang tool + - some minor bugs removed + + +1.4.1 - 3 December 2010, Ludovic Rousseau + - Add support of + - Akasa AK-CR-03, BZH uKeyCI800-K18 + - Free Software Initiative of Japan Gnuk token readers + - Gemalto Smart Guardian (SG CCID) + - ReinerSCT cyberJack RFID basis + - Remove O2 Micro Oz776 and Blutronics Bludrive II CCID since they + are no more supported since version 1.4.0 + - SecurePINVerify() & SecurePINModify(): Accept big and little + endian byte orders for multibytes fields. The application + should not use HOST_TO_CCID_16() and HOST_TO_CCID_32() any more + and just use the normal byte order of the architecture. + - Need pcsc-lite 1.6.5 for TAG_IFD_POLLING_THREAD_WITH_TIMEOUT + - Add --enable-embedded (default is no) to build libccid for an + embedded system. This will activate the NO_LOG option to disable + logging and limit RAM and disk consumption. + - Remove --enable-udev option since it is not used anymore with + libhal. The udev rules file is now used to change the access + rights of the device and not send a hotplug signal to pcscd. + See http://ludovicrousseau.blogspot.com/2010/09/pcscd-auto-start.html + - some minor bugs removed + + +1.4.0 - 4 August 2010, Ludovic Rousseau + - add support of + - ACS AET65 + - Broadcom 5880 + - C3PO LTC36 + - Dectel CI692 + - Gemalto Hybrid Smartcard Reader + - Kingtrust Multi-Reader + - Tianyu Smart Card Reader + - Todos CX00 + - Add support of the SCM SDI 010 again. At least the contact + interface can be used. + - Use libusb-1.0 instead of libusb-0.1 + - add support of TAG_IFD_STOP_POLLING_THREAD and use of the + asynchronous libusb API to be able to stop a transfer. + - Request pcsc-lite 1.6.2 minimum (instead of 1.6.0) to have + TAG_IFD_STOP_POLLING_THREAD defined + - The O2MICRO OZ776 patch (for OZ776, OZ776_7772, REINER_SCT and + BLUDRIVEII_CCID) is no more supported with libusb-1.0 + - correctly get the IFSC from the ATR (ATR parsing was not always + correct) + - some minor bugs removed + + +1.3.13 - 4 June 2010, Ludovic Rousseau + - much faster warm start (up to 3.8 second gained) + - Add support of SCARD_ATTR_VENDOR_IFD_SERIAL_NO to get the serial + number of the USB device + - some minor bugs removed + + +1.3.12 - 8 May 2010, Ludovic Rousseau + - add support of + - Ask CPL108 + - Atmel AT90SCR050 + - Atmel AT90SCR100 + - Atmel VaultIC420 + - Atmel VaultIC440 + - Atmel VaultIC460 + - Cherry SmartTerminal XX7X + - Covadis Auriga + - German Privacy Foundation Crypto Stick v1.2 + - GoldKey PIV Token + - KOBIL Smart Token + - KOBIL mIDentity 4smart + - KOBIL mIDentity 4smart AES + - KOBIL mIDentity 4smart fullsize AES + - KOBIL mIDentity fullsize + - KOBIL mIDentity visual + - SCM SCR3500 + - Smart SBV280 + - Todos AGM2 CCID + - Vasco DIGIPASS KEY 200 + - Vasco DIGIPASS KEY 860 + - Vasco DP855 + - Vasco DP865 + - id3 CL1356T5 + - remove support of Smart SBV280 on manufacturer request. They use + libusb directly. + - remove support of SCM SDI 010 on manufacturer request since not + supported by my driver + - Enable the Broadcom 5880 reader. It should work after a firmware + upgrade. + - better support of Dell keyboard + - better support of multislot readers (like the GemCore SIM Pro) + - better support of SCM SCR3310 + - better support of ICCD version A devices + - The Covadis Véga-Alpha reader is a GemPC pinpad inside. So we use + the same code to: + - load the strings for the display + - avoid limitation of the reader + - IFDHControl(): the (proprietary) get firmware version escape + command is allowed with a Gemalto reader + - the (proprietary) switch interface escape command is allowed on + the Gemalto GemProx DU + - return IFD_ERROR_NOT_SUPPORTED instead of + IFD_COMMUNICATION_ERROR if the dwControlCode value is not + supported + - return IFD_ERROR_INSUFFICIENT_BUFFER when appropriate + - IFDHGetCapabilities(): add support of SCARD_ATTR_ICC_PRESENCE and + SCARD_ATTR_ICC_INTERFACE_STATUS + - support FEATURE_GET_TLV_PROPERTIES + - add support of IOCTL_FEATURE_GET_TLV_PROPERTIES bMinPINSize & + bMaxPINSize for Gemalto Pinpad V1 & Covadis Véga-Alpha + - support extended APDU of up to 64kB with APDU readers. + - get the language selected during Mac OS X installation as language + to use for Covadis Véga-Alpha and Gemalto GemPC PinPad pinpad + readers + - FEATURE_MCT_READER_DIRECT is also supported by the Kobil mIDentity + visual + - better support of Sun Studio CC + - some minor bugs removed + + +1.3.11 - 28 July 2009, Ludovic Rousseau + - add support of + - Raritan D2CIM-DVUSB VM/CCID + - Feitian SCR301 + - Softforum XecureHSM + - 2 Neowave Weneo tokens + - Synnix STD200 + - Aktiv Rutoken ECP + - Alcor Micro SCR001 + - ATMEL AT91SC192192CT-USB + - Panasonic USB Smart Card Reader 7A-Smart + - Gemalto GemProx DU and SU + - remove support of Reiner-SCT cyberJack pinpad(a) on request of + Reiner-SCT. You should user the Reiner-SCT driver instead + - define CFBundleName to CCIDCLASSDRIVER so that non class drivers + have a higher priority. Used by pcsc-lite 1.5.5 and up. + Add a --disable-class configure option so that the Info.plist does + not define a Class driver. Default is class driver. + - do not power up a card with a voltage not supported by the reader + - add support of PIN_PROPERTIES_STRUCTURE structure and + FEATURE_IFD_PIN_PROPERTIES + - adds support of FEATURE_MCT_READERDIRECT. Only the Kobil TriB@nk + reader supports this feature for now. This is used for the Secoder + functionality in connected mode. + - add support of a composite device. No change needed with libhal. + use --enable-composite-as-multislot on Mac OS X since libhal is + not available on Mac OS X or with libusb on Linux + - some minor bugs removed + + +1.3.10 - 7 March 2009, Ludovic Rousseau + - add support for + - Aktiv Rutoken Magistra + - Atmel AT98SC032CT + - MSI StarReader SMART + - Noname reader (from Omnikey) + - Precise Biometrics 200 MC and 250 MC + - Realtek 43 in 1 + Sim + Smart Card Reader + - TianYu CCID SmartKey + - Xiring Xi Sign PKI + - add a patch to support the bogus OpenPGP card (on board key + generation sometimes timed out) + - disable support of the contactless part of SDI010 and SCR331DI + (this code was reverse engineered and hard to maintain) + - some minor bugs removed + + +1.3.9 - 18 November 2008, Ludovic Rousseau + - add support for + - ACS ACR122U PICC + - Aladdin eToken PRO USB 72K Java + - Atmel AT91SO + - CSB6 Basic + - CSB6 Secure + - CSB6 Ultimate + - Cherry SmartTerminal ST-1200USB + - CrazyWriter + - EasyFinger Standard + - EasyFinger Ultimate + - Gemalto PDT + - HP MFP Smart Card Reader + - KONA USB SmartCard + - SpringCard Prox'N'Roll + - VMware Virtual USB CCID + - MacOSX/configure: do not overwrite PCSC_CFLAGS, PCSC_LIBS, + LIBUSB_CFLAGS and LIBUSB_LIBS if already defined by the user + - by default, link statically against libusb on Mac OS X + - IFDHPowerICC(): use a very long timeout for PowerUp since the card + can be very slow to send the full ATR (up to 30 seconds at 4 MHz) + - SecurePINVerify(): correct a bug when using a Case 1 APDU and a + SCM SPR532 reader + - log the reader name instead of just the pcscd Lun + - some minor bugs removed + + +1.3.8 - 27 June 2008, Ludovic Rousseau + - add support for + - Oberthur ID-One Cosmo Card + - do not include the release number in the Info.plist to avoid a + diff of a configuration file when upgrading the package. + - do not fail compilation if libusb is not available + - do not crash if the reader firmware is bogus and does not support + chaining for extended APDU. This is the case for Kobil readers + - some minor bugs removed + + +1.3.7 - 8 June 2008, Ludovic Rousseau + - add support for + - ActivCard Activkey Sim + - Pro-Active CSB6 Ultimate + - id3 Semiconductors CL1356A HID + - src/parse: do not try to parse devices with bInterfaceClass=0xFF + by default (use command line argument -p for proprietary class) + - configure.in: check if libusb-0.1 is emulated by libusb-compat + + libusb-1.0 to use or not the USB interrupt feature + - correct a bug in the serial communication (GemPC twin serial + reader) + - correct a pthread problem under Solaris + - some minor bugs removed + + +1.3.6 - 30 April 2008, Ludovic Rousseau + - add support for + - Covadis Alya + - Covadis Véga + - Precise Biometrics 250 MC + - Validy TokenA sl vt + - Vasco DP905 + - better support for the O2Micro OZ776, GemCore SIM Pro + - the environment variable LIBCCID_ifdLogLevel overwrite the value + of ifdLogLevel read from the Info.plist file + - add support for DragonFly BSD + - some minor bugs removed + + +1.3.5 - 22 February 2008, Ludovic Rousseau + - add support for Gemplus Gem e-Seal Pro, Cherry SmartBoard, + G83-6610 + - use usb_interrupt_read() only if libusb > 0.1.12 or + --enable-usb-interrupt is used. libusb <= 0.1.12 is bogus and will + consume more CPU than needed. + - contrib/Kobil_mIDentity_switch/Kobil_mIDentity_switch was broken + on Linux since release 1.3.1 + - some minor bugs removed + + +1.3.4 - 8 February 2008, Ludovic Rousseau + - the serial driver could not be loaded because of the missing + symbol InterruptRead + - remove WAIT_FOR_SYSFS="bInterfaceProtocol" to do not delay udev + + +1.3.3 - 6 February 2008, Ludovic Rousseau + - add support for Lexar Smart Enterprise Guardian and Blutronics + Bludrive II CCID + - add support of TAG_IFD_POLLING_THREAD using IFDHPolling() to + detect asynchronous card movements. With this feature pcscd will + not poll the reader every 0.4 second for a card movement but will + wait until the reader sends a USB interrupt signal + - correct a bug with an ICCD-B device and a receive buffer smaller + than 4 bytes + - remove the sleep in the udev rule. It slows down the detection of + any USB device + - some minor bugs removed + + +1.3.2 - 22 January 2008, Ludovic Rousseau + - add support of Apple Mac OS X Leopard (10.5.1) + - solve a hotplug problem on Ubuntu 7.10 (reader was not detected) + - create a symlink from libccidtwin.so to libccidtwin.so.VERSION so + that the /etc/reader.conf configuration file do not need to edited + for each new driver version + - make driver for the GemPC Serial compile again + - some minor bugs removed + + +1.3.1 - 16 November 2007, Ludovic Rousseau + - add support for "Philips Semiconductors JCOP41V221" ICCD card, + O2Micro oz776 (ProductID 0x7772), CardMan5321, Giesecke & Devrient + StarSign Card Token 350 and 550, SafeNet IKey4000, Eutron + CryptoIdentity, Eutron Smart Pocket, Eutron Digipass 860, Lenovo + Integrated Smart Card Reader, "Kobil EMV CAP - SecOVID Reader III, + Charismathics token, Reiner-SCT cyberJack pinpad(a) + - improve support of Mac OS X and *BSD + - some minor bugs removed + + +1.3.0 - 10 May 2007, Ludovic Rousseau + - add support of ICCD version A and B + - add support for (new) KOBIL mIDentity, SchlumbergerSema Cyberflex + Access e-gate ICCD, Fujitsu Siemens Computers SmartCard USB 2A and + SmartCard Keyboard USB 2A readers, OmniKey CardMan 4321 + - contrib/RSA_SecurID/RSA_SecurID_getpasswd: tool to get the on time + password also displayed on the token screen + - contrib/Kobil_mIDentity_switch: tool to activate the CCID reader + of the Kobil mIDentity. The tool should be started automatically + by the udev rule on Linux + - GemPC pinpad: localisation of the string "PIN blocked", add + Portuguese(pt), Dutch(nl) and Turkish(tr) localisations + - some minor bugs removed + +1.2.1 - 27 January 2007, Ludovic Rousseau + - pcscd_ccid.rules: add non CCID generic (InterfaceClass: 0xFF) + readers + - INSTALL: document how to use --enable-udev on FreeBSD + - move the O2Micro Oz7762 from the unsupported to the supported list + since patches to support it are applied by default + (O2MICRO_OZ776_PATCH) + + +1.2.0 - 19 January 2007, Ludovic Rousseau + - add support for SCARD_ATTR_VENDOR_IFD_VERSION, + SCARD_ATTR_VENDOR_NAME and SCARD_ATTR_MAXINPUT tags used by + SCardGetAttrib(). Read SCARDGETATTRIB.txt for more documentation + - add support for OmniKey CardMan 5125, CardMan 1021, C3PO LTC32, + Teo by Xiring, HP USB Smartcard Reader + - use --enable-twinserial to build the serial reader driver + - use --enable-udev to configure for a use with Linux udev hotplug + mechanism. This will allow pcscd to avoid polling the USB bus + every 1 second + - some minor bugs removed + + +1.1.0 - 11 August 2006, Ludovic Rousseau + - support Extended APDU (up to 64KB) for readers in TPDU mode (many + readers) or Extended APDU mode (very rare). This only works for + T=1 cards. + - add support for C3PO LTC31 (new version), OmniKey CardMan 3021, HP + USB Smart Card Keyboard, Actividentity (ActiveCard) Activkey Sim, + id3 Semiconductors CL1356D and CL1356T, Alcor Micro AU9520 + - support the contactless interface of the SCR331-DI-NTTCOM + - add support of FreeBSD + - increase the USB timeout used for PIN verify/modify to not timeout + before the reader + - the 4-bytes value returned by CM_IOCTL_GET_FEATURE_REQUEST 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). + - use ./configure --enable-twinserial to compile and install the the + driver for the GemPC Twin serial + - some minor bugs removed + + +1.0.1 - 22 April 2006, Ludovic Rousseau + - add support for Axalto Reflex USB v3, SCM Micro SDI 010, Winbond + Electronics W81E381 chipset, Gemplus GemPC Card, Athena ASE IIIe + KB USB, OmniKey CardMan 3621 + - support Solaris (Solaris uses a different libusb) + - better documentation for ./configure arguments + - improve support of Cherry XX44 keyboard for PIN verify and change + (circumvent firmware bugs) + - do not use LTPBundleFindValueWithKey() from pcscd since this + function has been removed from pcscd API + - use -fvisibility=hidden is available to limit the number of + exported symbols + + +1.0.0 - 3 March 2006, Ludovic Rousseau + - add support for ActivCard USB Reader 3.0, Athena ASE IIIe USB V2, + SCM Micro SCR 355, SCR 3311, SCR 3320, SCR 3340 ExpressCard54, + Gemplus GemCore SIM Pro, GemCore POS Pro (serial and USB), GemPC + Express (ExpressCard/54 interface), SmartEpad (v 2.0), OmniKey + CardMan 5121 + - greatly improve support of PIN PAD readers. We now support TPDU + readers with T=1 cards + - use l10n strings for the Gemplus GemPC PIN PAD (it has a screen). + Supported languages are: de, en, es, fr, it + - rename ACS ACR 38 in ACR 38U-CCID since the ACR 38 is a different + reader and is not CCID compatible + - allow to select the Power On voltage using Info.plist instead of + recompiling the source code + - correct bugs in the support of multi-slots readers + - if the card is faster than the reader (TA1=97 for example) we try + to use a not-so-bad speed (corresponding to TA1=96, 95 or 94) + instead of the default speed of TA1=11 + - the src/parse tool do not use the driver anymore. No need to + update the Info.plist file first. + - some minor bugs removed + + +0.9.4 - 27 November 2005, Ludovic Rousseau + - add support for Eutron SIM Pocket Combo, Eutron CryptoIdentity, + Verisign Secure Token and VeriSign Secure Storage Token, GemPC + Card (PCMCIA), SCM SCR331-DI NTTCom, SCM Micro SCR 3310-NTTCom, + Cherry ST-1044U, Cherry SmartTerminal ST-2XXX + - 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). A sample code is available in examples/scardcontrol.c + - we need pcsc-lite 1.2.9-beta9 since some structures used for PIN + pad readers are defined by pcsc-lite + - 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 + - IFDHSetProtocolParameters(): only use a data rate supported by the + reader in the PPS negociation, otherwise we stay at the default + speed. + - calculate and store the read timeout according to the card ATR + instead of using a fixed value of 60 seconds + - increase the read timeout if the card sends and WTX request + - improve support of GemPC Twin and GemPC Card (serial protocol) + - reset the device on close 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. + - use color logs + - some minor bugs removed + + +0.9.3 - 14 March 2005, Ludovic Rousseau + - change the licence from GNU GPL to GNU Lesser GPL (LGPL) + - add support for ACS ACR 38, Kobil KAAN Base, Kobil KAAN Advanced, + Kobil KAAN SIM III, Kobil KAAN mIDentity, SCM Micro SCR 331, + SCM Micro SCR 331-DI, SCM Micro SCR 335, SCM Micro SCR 3310, + SCM Micro SCR 532, Cherry XX44 readers + - improve communication speed with readers featuring "Automatic PPS + made by the CCID" + - switch the Cherry xx33 reader in ISO mode if power up in EMV mode + fails. + - add support of character level readers. Thanks to O2Micro for the + patch + - add support for the O2Micro OZ776S reader but the reader firmware + is still bogus + - check firmware version to avoid firmwares with bugs. You can still + use a bogus firmware by setting DRIVER_OPTION_USE_BOGUS_FIRMWARE + in Info.plist + - some minor bugs removed + +0.9.2 - 15 August 2004, Ludovic Rousseau + - T=1 TPDU code: + - the work on T=1 TPDU code was possible thanks to Gemplus + validation team who helped me test, debug and bring the code to + an EMV validation level. Thanks to Jérôme, Jean-Yves, Xavier and + the Gemplus readers department + - error code was not checked correctly + - avoid a (nearly) infinite loop when resynch are needed. + - correctly initialise an internal value to allow more than one + reader to work + - multi-slots readers + - add support for multi-slots readers. The only one I have is a + SCM Micro SCR 331-DI with a contact and a contactless interface. + The contactless interface may or may not work for you since the + reader uses proprietary (undocumented) commands. + - GemPC Twin serial reader + - perform a command (get the reader firmware) to be sure a GemPC + Twin (serial or pcmcia) reader is connected + - use a dynamic timeout when reading the serial port. + The first timeout used 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. + - use `pkg-config libpcsclite --cflags` to locate the pcsc-lite + header files + - use `pkg-config --print-errors --atleast-version=1.2.9-beta5 libpcsclite` + to test the pcsc-lite version + - code improvements thanks to the splint tool (http://www.splint.org/) + +0.9.1 - 1 July 2004, Ludovic Rousseau + - I forgot to define IFD_PARITY_ERROR in a .h file + +0.9.0 - 1 July 2004, Ludovic Rousseau + - The T=1 TPDU automata from Carlos Prados' Towitoko driver is very + limited and do not support error management mechanisms. + I then used the T=1 TPDU automata from OpenCT (OpenSC project). + This automata is much more powerful but still lacks a lot of error + management code. + I then added all the needed code to reach the quality level + requested by the EMV standard. + - add support for new readers: + - Advanced Card Systems ACR 38 + - Cherry XX33 + - Dell keyboard SK-3106 + - Dell smart card reader keyboard + - SCR 333 + - add support of multi procotol cards (T=0 and T=1) + - the debug level is now dynamic and set in the Info.plist file (no + need to recompile the driver any more) + - add support for the libusb naming scheme: usb:%04x/%04x:libusb:%s + - INSTALL: add a "configuring the driver for the serial reader + (GemPC Twin)" part + - 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 + - add support of IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and + IOCTL_SMARTCARD_VENDOR_VERIFY_PIN in IFDHControl() + - read ifdDriverOptions from Info.plist to limit the use of + IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE (idea from Peter Williams) + - provide an example of use of SCardControl() + IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and + IOCTL_SMARTCARD_VENDOR_VERIFY_PIN in example/ + - add a --enable-pcsclite option (default to yes) so that the driver + can be compiled for a different framework (one needing + tokenparser.l like Solaris) + - Reset action is power off and power on, not just power on + - use the include files from pcsc-lite + - 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 + +0.4.1 - 14 February 2004, Ludovic Rousseau + - distribute missing files readers/supported_readers.txt and + src/create_Info_plist.pl + 'make install' failed because of this. + +0.4.0 - 13 February 2004, Ludovic Rousseau + - support of T=1 with TPDU readers. A lot of the T=1 code comes from + Carlos Prados towitoko driver. + My code is GNU GPL, his code is GNU LGPL so the global driver is + GNU GPL + - PPS negotiation if the reader does not do it automatically + - add support for the Silitek SK-3105 keyboard. It's a USB device + with multiple interfaces + - use the create_Info_plist.pl script to generate the installed + Info.plist from an Info.plist template and a list of supported + readers. The Info.plist was too "complex" to maintain by hand + since it now contains 11 entries + - add support of IFDHCreateChannelByName to avoid wrong reader + enumeration. This is not complete if you have multiple _identical_ + readers. You need to use a > 1.2.0 pcsc-lite version (not yet + released at that time) + - 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. + - 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 + - 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 + - add a --enable-ccidtwindir argument to ./configure to specify the + serial GemPC Twin installation directory + - debug and code improvements and simplifications + +0.3.2 - 4 November 2003, Ludovic Rousseau + - src/commands.c: correct a stupid bug that occurs with an APDU with + 2 bytes response. + - Info.plist: add SPR 532 in list of supported readers + - 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. + - move LTC31 reader from unsupported to supported reader list. It + was my f ault 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é s Teixidor for pointing the problem. + - src/commands.c: comment out the automatic GET RESPONSE part. I + don't think it should be in the driver. Maybe in pcscd instead? + +0.3.1 - 23 September 2003, Ludovic Rouseau + - add --enable-multi-thread (enabled by default) for thread safe + support an APDU multiplexing. You will need pcsc-lite-1.2.0-rc3 or + above to use this feature. + - add --enable-libusb=PATH option is your libusb is not installed in + /usr or /usr/local + - honor DESTDIR in install rules (closes [ #300110 ]). Thanks to + Ville Skyttä for the patch. + - src/ccid.c: do not switch the GemPC Key and GemPC Twin in APDU + mode since it also swicth in EMV mode and may not work with non + EMV cards + - src/ccid_serial.c: complete reimplementation of the Twin serial + protocol using a finite state automata (code much simpler) + +0.3.0 - 10 September 2003, Ludovic Rousseau + - support of GemPC Twin connected to a serial port. Thanks to Niki + W. Waibel for a working prototype. + - support of auto voltage at power up if the reader support it + instead of forcing a 5V in all cases. + - support of APDU mode instead of just TPDU if the reader support + it. Thanks to Jean-Luc Giraud for the idea and inspiration I got + from his "concurrent" driver. + - support of "time request" from the card. + - parse: new indentation for more readability of supported features. + - switch the GemPC Key and GemPC Twin in APDU mode since they + support it but do not announce it in the dwFeatures. + - new build process using autoconf/automake. + +0.2.0 - 26 August 2003, Ludovic Rousseau + - Works under MacOS X + - Info.plist: use an for the alias enumeration + - Makefile rework for *BSD and MacOS X + +0.1.0 - 13 August 2003, Ludovic Rousseau + - First public release + + + vim:ts=20 diff --git a/configure b/configure index c696380..7da7d84 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ccid 1.4.30. +# Generated by GNU Autoconf 2.69 for ccid 1.4.31. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ccid' PACKAGE_TARNAME='ccid' -PACKAGE_VERSION='1.4.30' -PACKAGE_STRING='ccid 1.4.30' +PACKAGE_VERSION='1.4.31' +PACKAGE_STRING='ccid 1.4.31' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1378,7 +1378,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ccid 1.4.30 to adapt to many kinds of systems. +\`configure' configures ccid 1.4.31 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1449,7 +1449,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ccid 1.4.30:";; + short | recursive ) echo "Configuration of ccid 1.4.31:";; esac cat <<\_ACEOF @@ -1593,7 +1593,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ccid configure 1.4.30 +ccid configure 1.4.31 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2012,7 +2012,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ccid $as_me 1.4.30, which was +It was created by ccid $as_me 1.4.31, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2876,7 +2876,7 @@ fi # Define the identity of the package. PACKAGE='ccid' - VERSION='1.4.30' + VERSION='1.4.31' cat >>confdefs.h <<_ACEOF @@ -7135,11 +7135,8 @@ _LT_EOF test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -14711,7 +14708,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ccid $as_me 1.4.30, which was +This file was extended by ccid $as_me 1.4.31, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14777,7 +14774,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ccid config.status 1.4.30 +ccid config.status 1.4.31 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 7594cb8..85815b8 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ # Require autoconf 2.61 AC_PREREQ([2.69]) -AC_INIT([ccid],[1.4.30]) +AC_INIT([ccid],[1.4.31]) AC_CONFIG_SRCDIR(src/ifdhandler.c) AC_CONFIG_AUX_DIR([.]) AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip subdir-objects) diff --git a/ltmain.sh b/ltmain.sh index d3230f7..c12c197 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -31,7 +31,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-4" +VERSION="2.4.6 Debian-2.4.6-9" package_revision=2.4.6 @@ -64,7 +64,7 @@ package_revision=2.4.6 # libraries, which are installed to $pkgauxdir. # Set a version string for this script. -scriptversion=2015-10-12.13; # UTC +scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 @@ -580,16 +580,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then { $debug_cmd - func_quote_arg pretty "$2" - eval "$1+=\\ \$func_quote_arg_result" + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd - func_quote_arg pretty "$2" - eval "$1=\$$1\\ \$func_quote_arg_result" + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi @@ -1091,184 +1091,88 @@ func_relative_path () } -# func_quote_portable EVAL ARG -# ---------------------------- -# Internal function to portably implement func_quote_arg. Note that we still -# keep attention to performance here so we as much as possible try to avoid -# calling sed binary (so far O(N) complexity as long as func_append is O(1)). -func_quote_portable () +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () { $debug_cmd - func_quote_portable_result=$2 - - # one-time-loop (easy break) - while true - do - if $1; then - func_quote_portable_result=`$ECHO "$2" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` - break + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi - # Quote for eval. - case $func_quote_portable_result in - *[\\\`\"\$]*) - case $func_quote_portable_result in - *[\[\*\?]*) - func_quote_portable_result=`$ECHO "$func_quote_portable_result" | $SED "$sed_quote_subst"` - break - ;; - esac - - func_quote_portable_old_IFS=$IFS - for _G_char in '\' '`' '"' '$' - do - # STATE($1) PREV($2) SEPARATOR($3) - set start "" "" - func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy - IFS=$_G_char - for _G_part in $func_quote_portable_result - do - case $1 in - quote) - func_append func_quote_portable_result "$3$2" - set quote "$_G_part" "\\$_G_char" - ;; - start) - set first "" "" - func_quote_portable_result= - ;; - first) - set quote "$_G_part" "" - ;; - esac - done - done - IFS=$func_quote_portable_old_IFS + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" ;; - *) ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; esac - break - done - func_quote_portable_unquoted_result=$func_quote_portable_result - case $func_quote_portable_result in - # double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # many bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_portable_result=\"$func_quote_portable_result\" - ;; - esac -} - - -# func_quotefast_eval ARG -# ----------------------- -# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', -# but optimized for speed. Result is stored in $func_quotefast_eval. -if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then - func_quotefast_eval () - { - printf -v func_quotefast_eval_result %q "$1" - } -else - func_quotefast_eval () - { - func_quote_portable false "$1" - func_quotefast_eval_result=$func_quote_portable_result - } -fi - - -# func_quote_arg MODEs ARG -# ------------------------ -# Quote one ARG to be evaled later. MODEs argument may contain zero ore more -# specifiers listed below separated by ',' character. This function returns two -# values: -# i) func_quote_arg_result -# double-quoted (when needed), suitable for a subsequent eval -# ii) func_quote_arg_unquoted_result -# has all characters that are still active within double -# quotes backslashified. Available only if 'unquoted' is specified. -# -# Available modes: -# ---------------- -# 'eval' (default) -# - escape shell special characters -# 'expand' -# - the same as 'eval'; but do not quote variable references -# 'pretty' -# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might -# later used in func_quote to get output like: 'echo "a b"' instead of -# 'echo a\ b'. This is slower than default on some shells. -# 'unquoted' -# - produce also $func_quote_arg_unquoted_result which does not contain -# wrapping double-quotes. -# -# Examples for 'func_quote_arg pretty,unquoted string': -# -# string | *_result | *_unquoted_result -# ------------+-----------------------+------------------- -# " | \" | \" -# a b | "a b" | a b -# "a b" | "\"a b\"" | \"a b\" -# * | "*" | * -# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" -# -# Examples for 'func_quote_arg pretty,unquoted,expand string': -# -# string | *_result | *_unquoted_result -# --------------+---------------------+-------------------- -# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" -func_quote_arg () -{ - _G_quote_expand=false - case ,$1, in - *,expand,*) - _G_quote_expand=: - ;; - esac - - case ,$1, in - *,pretty,*|*,expand,*|*,unquoted,*) - func_quote_portable $_G_quote_expand "$2" - func_quote_arg_result=$func_quote_portable_result - func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result - ;; - *) - # Faster quote-for-eval for some shells. - func_quotefast_eval "$2" - func_quote_arg_result=$func_quotefast_eval_result - ;; - esac -} - - -# func_quote MODEs ARGs... -# ------------------------ -# Quote all ARGs to be evaled later and join them into single command. See -# func_quote_arg's description for more info. -func_quote () -{ - $debug_cmd - _G_func_quote_mode=$1 ; shift - func_quote_result= - while test 0 -lt $#; do - func_quote_arg "$_G_func_quote_mode" "$1" - if test -n "$func_quote_result"; then - func_append func_quote_result " $func_quote_arg_result" + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" else - func_append func_quote_result "$func_quote_arg_result" + func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. @@ -1311,8 +1215,8 @@ func_show_eval () _G_cmd=$1 _G_fail_exp=${2-':'} - func_quote_arg pretty,expand "$_G_cmd" - eval "func_notquiet $func_quote_arg_result" + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" @@ -1337,8 +1241,8 @@ func_show_eval_locale () _G_fail_exp=${2-':'} $opt_quiet || { - func_quote_arg expand,pretty "$_G_cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { @@ -1466,7 +1370,7 @@ func_lt_ver () #! /bin/sh # Set a version string for this script. -scriptversion=2015-10-12.13; # UTC +scriptversion=2015-10-07.11; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 @@ -1676,8 +1580,8 @@ func_run_hooks () # ' # # No change in '$@' (ignored completely by this hook). There is # # no need to do the equivalent (but slower) action: -# # func_quote eval ${1+"$@"} -# # my_options_prep_result=$func_quote_result +# # func_quote_for_eval ${1+"$@"} +# # my_options_prep_result=$func_quote_for_eval_result # false # } # func_add_hook func_options_prep my_options_prep @@ -1713,8 +1617,8 @@ func_run_hooks () # done # # if $args_changed; then -# func_quote eval ${1+"$@"} -# my_silent_option_result=$func_quote_result +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result # fi # # $args_changed @@ -1781,8 +1685,8 @@ func_options () if $_G_rc_options; then func_options_result=$_G_res_var else - func_quote eval ${1+"$@"} - func_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + func_options_result=$func_quote_for_eval_result fi $_G_rc_options @@ -1925,8 +1829,8 @@ func_parse_options () if $_G_rc_parse_options; then # save modified positional parameters for caller - func_quote eval ${1+"$@"} - func_parse_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result fi $_G_rc_parse_options @@ -2237,7 +2141,7 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.6-4 + version: $progname $scriptversion Debian-2.4.6-9 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` @@ -2471,8 +2375,8 @@ libtool_options_prep () if $_G_rc_lt_options_prep; then # Pass back the list of options. - func_quote eval ${1+"$@"} - libtool_options_prep_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result fi $_G_rc_lt_options_prep @@ -2578,8 +2482,8 @@ libtool_parse_options () if $_G_rc_lt_parse_options; then # save modified positional parameters for caller - func_quote eval ${1+"$@"} - libtool_parse_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result fi $_G_rc_lt_parse_options @@ -2639,8 +2543,8 @@ libtool_validate_options () } # Pass back the unparsed argument list - func_quote eval ${1+"$@"} - libtool_validate_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options @@ -3606,8 +3510,8 @@ func_mode_compile () esac done - func_quote_arg pretty "$libobj" - test "X$libobj" != "X$func_quote_arg_result" \ + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" @@ -3680,8 +3584,8 @@ compiler." func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result - func_quote_arg pretty "$srcfile" - qsrcfile=$func_quote_arg_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then @@ -4284,8 +4188,8 @@ func_mode_install () case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. - func_quote_arg pretty "$nonopt" - install_prog="$func_quote_arg_result " + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " arg=$1 shift else @@ -4295,8 +4199,8 @@ func_mode_install () # The real first argument should be the name of the installation program. # Aesthetically quote it. - func_quote_arg pretty "$arg" - func_append install_prog "$func_quote_arg_result" + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; @@ -4353,12 +4257,12 @@ func_mode_install () esac # Aesthetically quote the argument. - func_quote_arg pretty "$arg" - func_append install_prog " $func_quote_arg_result" + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then - func_quote_arg pretty "$arg2" + func_quote_for_eval "$arg2" fi - func_append install_shared_prog " $func_quote_arg_result" + func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ @@ -4369,8 +4273,8 @@ func_mode_install () if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else - func_quote_arg pretty "$install_override_mode" - func_append install_shared_prog " -m $func_quote_arg_result" + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi @@ -4666,8 +4570,8 @@ func_mode_install () relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { - func_quote_arg expand,pretty "$relink_command" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else @@ -5446,8 +5350,7 @@ else if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" - func_quote_arg pretty "$ECHO" - qECHO=$func_quote_arg_result + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. @@ -5457,7 +5360,7 @@ func_fallback_echo () \$1 _LTECHO_EOF' } - ECHO=$qECHO + ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to @@ -6800,9 +6703,9 @@ func_mode_link () while test "$#" -gt 0; do arg=$1 shift - func_quote_arg pretty,unquoted "$arg" - qarg=$func_quote_arg_unquoted_result - func_append libtool_args " $func_quote_arg_result" + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then @@ -7400,9 +7303,9 @@ func_mode_link () save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs - func_quote_arg pretty "$flag" - func_append arg " $func_quote_arg_result" - func_append compiler_flags " $func_quote_arg_result" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" @@ -7416,10 +7319,10 @@ func_mode_link () save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs - func_quote_arg pretty "$flag" - func_append arg " $wl$func_quote_arg_result" - func_append compiler_flags " $wl$func_quote_arg_result" - func_append linker_flags " $func_quote_arg_result" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" @@ -7443,8 +7346,8 @@ func_mode_link () # -msg_* for osf cc -msg_*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: @@ -7464,12 +7367,13 @@ func_mode_link () # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer + # -fuse-ld=* Linker select flags for GCC -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*|-fsanitize=*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + -specs=*|-fsanitize=*|-fuse-ld=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" @@ -7490,15 +7394,15 @@ func_mode_link () continue else # Otherwise treat like 'Some other compiler flag' below - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; *.$objext) @@ -7618,8 +7522,8 @@ func_mode_link () *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; esac # arg @@ -10131,8 +10035,8 @@ EOF for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { - func_quote_arg expand,pretty "$cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? @@ -10225,8 +10129,8 @@ EOF eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { - func_quote_arg expand,pretty "$cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? @@ -10700,12 +10604,12 @@ EOF elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - func_quote_arg pretty "$var_value" - relink_command="$var=$func_quote_arg_result; export $var; $relink_command" + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done - func_quote_arg pretty,unquoted "(cd `pwd`; $relink_command)" - relink_command=$func_quote_arg_unquoted_result + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. @@ -10945,14 +10849,13 @@ EOF elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - func_quote_arg pretty,unquoted "$var_value" - relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command" + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - func_quote_arg pretty,unquoted "$relink_command" - relink_command=$func_quote_arg_unquoted_result + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi diff --git a/m4/libtool.m4 b/m4/libtool.m4 index e67ed69..c81e669 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -4063,7 +4063,8 @@ _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" diff --git a/readers/supported_readers.txt b/readers/supported_readers.txt index a30f7ff..12b9be7 100644 --- a/readers/supported_readers.txt +++ b/readers/supported_readers.txt @@ -1,6 +1,6 @@ # # List of readers supported by the CCID driver -# Generated: 2018-09-04 +# Generated: 2019-07-31 # # DO NOT EDIT BY HAND @@ -130,6 +130,7 @@ 0x072F:0x1204:ACS ACR101 ICC Reader 0x072F:0x221A:ACS ACR1251 Dual Reader 0x072F:0x223B:ACS ACR1252 Dual Reader +0x072F:0x223E:ACS ACR1252 Reader 0x072F:0x223F:ACS ACR1255U-J1 0x072F:0x8201:ACS APG8201 PINhandy 1 0x072F:0x8202:ACS APG8201 USB Reader @@ -162,9 +163,13 @@ 0x24DC:0x0201:Aladdin R.D. JCR-770 0x24DC:0x0401:Aladdin R.D. JC-WebPass (JC600) 0x24DC:0x0402:Aladdin R.D. JaCarta +0x24DC:0x0428:Aladdin R.D. JaCartaReader 0x24DC:0x0501:Aladdin R.D. JaCarta U2F (JC602) 0x24DC:0x100F:Aladdin R.D. JaCarta Flash +# Alcor Link +0x2CE3:0x9563:Alcor Link AK9563 + # Alcor Micro 0x058F:0x9522:Alcor Micro AU9522 @@ -193,9 +198,13 @@ 0x03EB:0x6012:ATMEL VaultIC420 Smart Object 0x03EB:0x6014:ATMEL VaultIC440 +# AvestUA +0xC1A6:0x0131:AvestUA AvestKey + # Avtor 0x15CF:0x0019:Avtor SecureToken 0x15CF:0x001D:Avtor SC Reader 371 +0x15CF:0x0020:Avtor SecureToken # Axalto 0x04E6:0x511C:Axalto Reflex USB v3 @@ -215,7 +224,10 @@ 0x25DD:0x2351:Bit4id Digital DNA Key 0x25DD:0x2361:Bit4id Digital-DNA Key BT 0x25DD:0x2362:Bit4id Digital-DNA Key +0x25DD:0x2371:Bit4id TokenME EVO v2 0x25DD:0x3111:Bit4id miniLector +0x25DD:0x3211:Bit4id miniLector AIR EVO +0x25DD:0xB001:Bit4id miniLector Blue # Bluink Ltd. 0x2ABE:0x1003:Bluink Ltd. Bluink CCID @@ -230,6 +242,9 @@ 0x0A5C:0x5833:Broadcom Corp 5880 0x0A5C:0x5834:Broadcom Corp 5880 0x0A5C:0x5842:Broadcom Corp 58200 +0x0A5C:0x5843:Broadcom Corp 58200 +0x0A5C:0x5844:Broadcom Corp 58200 +0x0A5C:0x5845:Broadcom Corp 58200 # C3PO 0x0783:0x0007:C3PO TLTC2USB @@ -245,6 +260,7 @@ # Certgate GmbH 0x2DFF:0xB601:Certgate GmbH AirID 2 USB +0x2DFF:0xB602:Certgate GmbH ONEKEY ID 2 USB # charismathics 0x19E7:0x0002:charismathics plug'n'crypt CCID token @@ -384,6 +400,10 @@ # HID # HID Global +0x09C3:0x0028:HID Global Crescendo Key +0x09C3:0x0029:HID Global Crescendo Key +0x09C3:0x002B:HID Global Crescendo Key +0x09C3:0x002D:HID Global Crescendo Key 0x076B:0x3031:HID Global OMNIKEY 3x21 Smart Card Reader 0x076B:0x5022:HID Global OMNIKEY 5022 Smart Card Reader 0x076B:0x5023:HID Global OMNIKEY 5023 Smart Card Reader @@ -422,6 +442,7 @@ 0x04E6:0x581A:Identiv uTrust 3522 embd SE RFID Token 0x04E6:0x581B:Identiv uTrust 2910 R Taglio SC Reader 0x04E6:0x581C:Identiv SCR35xx USB Smart Card Reader +0x04E6:0x581D:Identiv SCR3500 C Contact Reader # Identive 0x04E6:0x5710:Identive CLOUD 2700 F Smart Card Reader @@ -441,6 +462,9 @@ 0x03EB:0x9308:IIT E.Key Crystal-1 0x03EB:0x9324:IIT E.Key Almaz-1C +# InfoCert +0x2FD2:0x0100:InfoCert WirelessKey + # InfoThink 0x1FC9:0x0102:InfoThink IT-102MU Reader 0x1403:0x7506:InfoThink IT-500U Reader @@ -540,6 +564,7 @@ # NXP 0x1FC9:0x0107:NXP Pegoda 2 N 0x1FC9:0x010B:NXP PR533 +0x1FC9:0x0117:NXP PN7462AU CCID # OBERTHUR TECHNOLOGIES 0x1A74:0xB111:OBERTHUR TECHNOLOGIES ID-ONE TOKEN SLIM v2 @@ -592,6 +617,9 @@ # Rocketek 0x14CD:0x8166:Rocketek RT-SCR1 +# Route1 +0x13FE:0xC831:Route1 MobiKEY Fusion3 + # SafeNet 0x0529:0x0602:SafeNet eToken 7300 0x0529:0x0620:SafeNet eToken 5100 @@ -631,6 +659,9 @@ # Softforum Co., Ltd 0x04E8:0x0007:Softforum Co., Ltd XecureHSM +# SPECINFOSYSTEMS +0x316E:0x0001:SPECINFOSYSTEMS DIAMOND token + # SpringCard 0x1C34:0x7113:SpringCard CrazyWriter 0x1C34:0x7121:SpringCard CSB6 Basic diff --git a/src/ccid_usb.c b/src/ccid_usb.c index 664dfba..414ab7d 100644 --- a/src/ccid_usb.c +++ b/src/ccid_usb.c @@ -1303,7 +1303,7 @@ int InterruptRead(int reader_index, int timeout /* in ms */) if (usbDevice[reader_index].multislot_extension != NULL) return Multi_InterruptRead(reader_index, timeout); - DEBUG_PERIODIC2("before (%d)", reader_index); + DEBUG_PERIODIC3("before (%d), timeout: %d ms", reader_index, timeout); transfer = libusb_alloc_transfer(0); if (NULL == transfer) diff --git a/src/misc.h b/src/misc.h index a498b46..ac35723 100644 --- a/src/misc.h +++ b/src/misc.h @@ -44,7 +44,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) || \ defined(__SUNPRO_C) && __SUNPRO_C >= 0x590 #define INTERNAL __attribute__ ((visibility("hidden"))) +#ifndef PCSC_API #define PCSC_API __attribute__ ((visibility("default"))) +#endif #elif defined(__SUNPRO_C) && __SUNPRO_C >= 0x550 /* http://wikis.sun.com/display/SunStudio/Macros+for+Shared+Library+Symbol+Visibility */ #define INTERNAL __hidden diff --git a/src/parse.c b/src/parse.c index fe1e457..f647ad3 100644 --- a/src/parse.c +++ b/src/parse.c @@ -101,7 +101,8 @@ int main(int argc, char *argv[]) r = libusb_open(dev, &handle); if (r < 0) { - (void)fprintf(stderr, "Can't libusb_open(): %s\n", strerror(errno)); + (void)fprintf(stderr, "Can't libusb_open(): %s\n", + libusb_error_name(r)); if (getuid()) { (void)fprintf(stderr, @@ -196,7 +197,7 @@ again: (void)fprintf(stderr, "Can't claim interface (bus %d, device %d): %s\n", libusb_get_bus_number(dev), libusb_get_device_address(dev), - strerror(errno)); + libusb_error_name(r)); (void)libusb_close(handle); if (EBUSY == errno) @@ -421,7 +422,7 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, /* we got an error? */ if (n <= 0) { - (void)(void)printf(" IFD does not support GET CLOCK FREQUENCIES request: %s\n", strerror(errno)); + (void)(void)printf(" IFD does not support GET CLOCK FREQUENCIES request: %s\n", libusb_error_name(n)); if (EBUSY == errno) { (void)fprintf(stderr, @@ -473,7 +474,7 @@ static int ccid_parse_interface_descriptor(libusb_device_handle *handle, /* we got an error? */ if (n <= 0) (void)printf(" IFD does not support GET_DATA_RATES request: %s\n", - strerror(errno)); + libusb_error_name(n)); else if (n % 4) /* not a multiple of 4 */ (void)printf(" wrong size for GET_DATA_RATES: %d\n", n); diff --git a/src/simclist.c b/src/simclist.c index fac019a..659aab9 100644 --- a/src/simclist.c +++ b/src/simclist.c @@ -44,8 +44,10 @@ /* disable asserts */ #ifndef SIMCLIST_DEBUG +#ifndef NDEBUG #define NDEBUG #endif +#endif #include @@ -1222,7 +1224,7 @@ int list_dump_filedescriptor(const list_t *restrict l, int fd, size_t *restrict /* speculation confirmed */ WRITE_ERRCHECK(fd, ser_buf, bufsize); } else { /* speculation found broken */ - WRITE_ERRCHECK(fd, & bufsize, sizeof(size_t)); + WRITE_ERRCHECK(fd, &bufsize, sizeof(bufsize)); WRITE_ERRCHECK(fd, ser_buf, bufsize); } free(ser_buf); @@ -1245,7 +1247,7 @@ int list_dump_filedescriptor(const list_t *restrict l, int fd, size_t *restrict } WRITE_ERRCHECK(fd, x->data, bufsize); } else { - WRITE_ERRCHECK(fd, &bufsize, sizeof(size_t)); + WRITE_ERRCHECK(fd, &bufsize, sizeof(bufsize)); WRITE_ERRCHECK(fd, x->data, bufsize); } } @@ -1337,7 +1339,7 @@ int list_restore_filedescriptor(list_t *restrict l, int fd, size_t *restrict len if (NULL == buf) return -1; for (cnt = 0; cnt < header.numels; cnt++) { - READ_ERRCHECK(fd, buf, header.elemlen); + READ_ERRCHECK(fd, buf, (ssize_t) header.elemlen); list_append(l, l->attrs.unserializer(buf, & elsize)); totmemorylen += elsize; } @@ -1347,7 +1349,7 @@ int list_restore_filedescriptor(list_t *restrict l, int fd, size_t *restrict len buf = malloc(header.elemlen); if (NULL == buf) return -1; - READ_ERRCHECK(fd, buf, header.elemlen); + READ_ERRCHECK(fd, buf, (ssize_t) header.elemlen); list_append(l, buf); } totmemorylen = header.numels * header.elemlen; @@ -1362,7 +1364,7 @@ int list_restore_filedescriptor(list_t *restrict l, int fd, size_t *restrict len buf = malloc((size_t)elsize); if (NULL == buf) return -1; - READ_ERRCHECK(fd, buf, elsize); + READ_ERRCHECK(fd, buf, (ssize_t) elsize); totreadlen += elsize; list_append(l, l->attrs.unserializer(buf, & elsize)); totmemorylen += elsize; @@ -1374,7 +1376,7 @@ int list_restore_filedescriptor(list_t *restrict l, int fd, size_t *restrict len buf = malloc(elsize); if (NULL == buf) return -1; - READ_ERRCHECK(fd, buf, elsize); + READ_ERRCHECK(fd, buf, (ssize_t) elsize); totreadlen += elsize; list_append(l, buf); } diff --git a/src/tokenparser.l b/src/tokenparser.l index d22696e..0d58a69 100644 --- a/src/tokenparser.l +++ b/src/tokenparser.l @@ -44,7 +44,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#ifndef NDEBUG #define NDEBUG +#endif #include #include "simclist.h"