Hello community, here is the log from the commit of package pcsc-ccid for openSUSE:Factory checked in at 2014-03-25 13:24:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pcsc-ccid (Old) and /work/SRC/openSUSE:Factory/.pcsc-ccid.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pcsc-ccid" Changes: -------- --- /work/SRC/openSUSE:Factory/pcsc-ccid/pcsc-ccid.changes 2014-02-16 19:54:17.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.pcsc-ccid.new/pcsc-ccid.changes 2014-03-25 13:24:59.000000000 +0100 @@ -1,0 +2,25 @@ +Sun Mar 23 17:13:24 UTC 2014 - [email protected] + +- Updated to version 1.4.16 + * 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. +- added alternative key (E8F9C57E) to keyring + +------------------------------------------------------------------- Old: ---- ccid-1.4.15.tar.bz2 ccid-1.4.15.tar.bz2.asc New: ---- ccid-1.4.16.tar.bz2 ccid-1.4.16.tar.bz2.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pcsc-ccid.spec ++++++ --- /var/tmp/diff_new_pack.XXkgR4/_old 2014-03-25 13:25:00.000000000 +0100 +++ /var/tmp/diff_new_pack.XXkgR4/_new 2014-03-25 13:25:00.000000000 +0100 @@ -32,7 +32,7 @@ %if %suse_version > 1220 BuildRequires: gpg-offline %endif -Version: 1.4.15 +Version: 1.4.16 Release: 0 Url: http://pcsclite.alioth.debian.org/ccid.html Summary: PCSC Driver for CCID Based Smart Card Readers and GemPC Twin Serial Reader ++++++ ccid-1.4.15.tar.bz2 -> ccid-1.4.16.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/ChangeLog new/ccid-1.4.16/ChangeLog --- old/ccid-1.4.15/ChangeLog 2013-11-25 19:16:37.000000000 +0100 +++ new/ccid-1.4.16/ChangeLog 2014-03-23 16:20:44.000000000 +0100 @@ -1,3 +1,292 @@ +2014-03-23 Ludovic Rousseau + + * [r6880] README, configure.ac: Release 1.4.16 + * [r6879] src/commands.c: Fix compiler warning + + commands.c: In function `SecurePINVerify': commands.c:529:9: + warning: variable `n' set but not used + [-Wunused-but-set-variable] int n, oldReadTimeout; ^ + * [r6878] src/commands.c: Fix compiler warning + + commands.c:511:19: warning: | has lower precedence than ==; == + will be evaluated first [-Wparentheses] if (T1_S_BLOCK | T1_S_WTX + == RxBuffer[PCB]) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ commands.c:511:19: + note: place parentheses around the '==' expression to silence + this warning if (T1_S_BLOCK | T1_S_WTX == RxBuffer[PCB]) ^ + ~~~~~~~~~~~~~~~~~~~~~~~~~ commands.c:511:19: note: place + parentheses around the | expression to evaluate it first if + (T1_S_BLOCK | T1_S_WTX == RxBuffer[PCB]) ~~~~~~~~~~~^~~~~~~~~~ 1 + warning generated. + * [r6877] src/commands.c: SecurePINVerify: add support of WTX + received before SW + + 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. + * [r6876] src/ccid_ifdhandler.h: Add + DRIVER_OPTION_DISABLE_PIN_RETRIES definition + + This is a missing for revision 6875 + +2014-03-22 Ludovic Rousseau + + * [r6875] src/Info.plist.src, src/ccid.c: 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. + + Closes Alioth bug + https://alioth.debian.org/tracker/index.php?func=detail&aid=314005&group_id=30105&atid=410088 + * [r6874] src/ccid_usb.c: InterruptRead(): log the libusb errors + + Allow an easier debug + +2014-03-11 Ludovic Rousseau + + * [r6873] readers/IID_AT90S064_CCID_READER.txt, + readers/supported_readers.txt: Add IID AT90S064 CCID READER + +2014-03-09 Ludovic Rousseau + + * [r6871] readers/Watchdata_W5181.txt, + readers/supported_readers.txt: Add Watchdata W5181 + +2014-03-08 Ludovic Rousseau + + * [r6869] src/openct/proto-t1.c: t1_transceive(): add a new test on + retries + + The driver should not send R-blocks infinitely. + + The problem was detected by a T=1 card on a TPDU pinpad reader + with a VERIFY command that send a WTX request before returning + the SW code. + * [r6868] src/openct/proto-t1.c: t1_transceive(): check retries is + is positive + + The test was "retries == 0" but it may happen that retries + becomes negative. Then the counter will be decreasing + "indefinitely". + + The new test is "retries <= 0" to also get the negative values + and resync if needed. + + The problem was detected by a T=1 card on a TPDU pinpad reader + with a VERIFY command that send a WTX request before returning + the SW code. + +2014-03-07 Ludovic Rousseau + + * [r6866] readers/INSIDE_Secure_VaultIC_441_Smart_Object.txt, + readers/supported_readers.txt: Add INSIDE Secure VaultIC 441 + Smart Object + * [r6865] readers/INSIDE_Secure_VaultIC_405_Smart_Object.txt, + readers/supported_readers.txt: Add INSIDE Secure VaultIC 405 + Smart Object + * [r6864] readers/supported_readers.txt: Replace HP by Hewlett + Packard + +2014-02-26 Ludovic Rousseau + + * [r6862] NEWS: Indicates the changes are in README. + +2014-02-23 Ludovic Rousseau + + * [r6860] readers/Chicony_HP_USB_Smartcard_CCID_Keyboard.txt, + readers/supported_readers.txt: Add HP USB Smartcard CCID Keyboard + +2014-02-18 Ludovic Rousseau + + * [r6857] readers/Microchip_SEC1210.txt, + readers/supported_readers.txt: Add Microchip SEC1210 + * [r6856] readers/Microchip_SEC1110.txt, + readers/supported_readers.txt: Add Microchip SEC1110 + * [r6855] readers/Crypto_Stick_Crypto_Stick_v1.4.txt, + readers/supported_readers.txt: Add Crypto Stick Crypto Stick v1.4 + +2014-02-14 Ludovic Rousseau + + * [r6846] README, configure.ac: Release 1.4.15 + * [r6845] src/ccid.c, src/ccid.h: Disable pinpad for Fujitsu + SmartCase KB SCR eSIG + + Thanks to Maarten for the bug report and patch. + +2014-02-08 Ludovic Rousseau + + * [r6839] readers/Feitian_bR301.txt, readers/supported_readers.txt: + Add Feitian bR301 + +2014-02-03 Ludovic Rousseau + + * [r6835] readers/Gemalto_Ezio_Shield_Pro_SC.txt, + readers/supported_readers.txt: Add Gemalto Ezio Shield Pro SC + +2014-01-28 Ludovic Rousseau + + * [r6833] src/reader.conf.in: Remove the optional CHANNELID + + Use DEVICENAME only instead. + * [r6832] src/ccid.h, src/ccid_serial.c, src/reader.conf.in: Add + support of Gemalto CR30 reader in serial communication + + The Gemalto CR30 reader is a dual slot reader. The reader can be + connected with a USB cable (normal CCID protocol) or using a + serial cable. + + The serial configuration is made using a special name in + /etc/reader.conf DEVICENAME field like: DEVICENAME + /dev/ttyS0:GemCoreSIMPro2 + * [r6831] src/ccid_serial.c: set_ccid_descriptor(): initialize + .ccid.readTimeout + + The read timeout was not initialized. I don't know how it was + working. + +2014-01-21 Ludovic Rousseau + + * [r6829] readers/Vasco_DIGIPASS_870.txt, + readers/supported_readers.txt: Add VASCO DIGIPASS 870 + * [r6828] src/ccid_usb.c: get_end_points(): be more strict for + bInterfaceClass = 255 + + If the bInterfaceClass is 255 (proprietary) and then not, but + possibly, a CCID interface (on an old reader) we also check the + extra_length is valid for a CCID device. + + The problem was with a composite device with 2 interfaces: one + non-CCID interface with bInterfaceClass = 255 and a CCID + interface with bInterfaceClass = 11. The first non-CCID interface + must be skipped. + * [r6827] readers/Aladdin_eToken_PRO_USB_72K_Java.txt: Small update + +2014-01-07 Ludovic Rousseau + + * [r6820] src/ccid.c: ccid_open_hack_post(): use default read + timeout for CmdEscape + + Use the default read timeout (DEFAULT_COM_READ_TIMEOUT at 3 + seconds) instead of the current value of 100 ms (set in + CreateChannelByNameOrChannel) that is too short to load the l10n + strings in a pinpad reader. + * [r6819] src/ifdhandler.c: Support Gemalto features for pinpad + readers + + MinimumPINSize, MaximumPINSize and bEntryValidationCondition are + fetched from the reader firmware. No need to hardcode specific + values anymore. + * [r6818] examples/scardcontrol.c: Fix typo in text + * [r6817] src/ifdhandler.c: Set specific value of + bEntryValidationCondition for known readers + + Gemalto Pinpad, Covadis Véga-Alpha and Cherry ST2000 readers only + support validation by key pressed. + * [r6816] examples/scardcontrol.c: Retrieve + bEntryValidationCondition from the driver + + Use PCSCv2_PART10_PROPERTY_bEntryValidationCondition to know what + validation conditions aer supported by the pinpad. + + Default value is 7 (as before). + * [r6815] examples/scardcontrol.c: Check value returned by gets(3) + + Fix compiler warning: scardcontrol.c:649:4: warning: ignoring + return value of ‘fgets’, declared with attribute + warn_unused_result [-Wunused-result] + * [r6814] examples/scardcontrol.c: Retrieve min and max PIN sizes + from the driver + + Use PCSCv2_PART10_PROPERTY_bMinPINSize and + PCSCv2_PART10_PROPERTY_bMaxPINSize to know the min and max PIN + sizes. + + If not defined by the driver the default values are 4 for min and + 8 for max (as before). + * [r6813] examples/scardcontrol.c: Do a PIN verify instead of PIN + modify + +2014-01-06 Ludovic Rousseau + + * [r6812] 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 + * [r6811] src/ifdhandler.c: Add specific PIN min & max sizes for + SmartTerminal ST-2xxx + + The Cherry GmbH SmartTerminal ST-2xxx reader has a min PIN size + of 0 digits and a max PIN size of 25 (0x19) digits. + + Thanks to Dominik Heidler for the bug report + https://github.com/OpenSC/OpenSC/issues/199 + +2013-12-17 Ludovic Rousseau + + * [r6809] examples/scardcontrol.c: Fix calculation of the command + length + + Since pcsc-lite 1.8.9 (October 2013) the structures + PIN_MODIFY_STRUCTURE and PIN_VERIFY_STRUCTURE are different and + now use a C99 flexible array member when available for abData + field. uint8_t abData[]; + + The the sizeof(PIN_VERIFY_STRUCTURE) is one byte smaller and the + calculation of the complete command is now simpler. + +2013-12-12 Ludovic Rousseau + + * [r6806] readers/IIT_E.Key_Almaz-1C.txt, + readers/supported_readers.txt: Add IIT E.Key Almaz-1C + +2013-12-06 Ludovic Rousseau + + * [r6805] readers/DUALi_DRAGON_NFC_READER.txt, + readers/supported_readers.txt: Add DUALi DRAGON NFC READER + +2013-11-26 Ludovic Rousseau + + * [r6801] src/ccid_usb.c: Do not get the data rates if + bNumDataRatesSupported = 0 + + According to CCID spec 1.1: " If the value is 00h, all data rates + between the default data rate dwDataRate and the maximum data + rate dwMaxDataRate are supported. " + + Some readers do not support control request 0x03 GET_DATA_RATES + if they declare bNumDataRatesSupported = 0. That should not + generate a critical error. + + This change will fix bug [#314516] Do not log + ccid_usb.c:1142:ControlUSB() control failed (1/4): -9 Success + https://alioth.debian.org/tracker/index.php?func=detail&aid=314516&group_id=30105&atid=410088 + + and also fix bug [#313651] Do not call get_data_rates() if + bNumDataRatesSupported is 0 + https://alioth.debian.org/tracker/index.php?func=detail&aid=313651&group_id=30105&atid=410088 + * [r6800] src/ccid_usb.c: Revert revision 6799 + + We will use a better way to solve the bug. + * [r6799] src/ccid_usb.c: Failing to get the data rates from the + reader is not a critical error + + The reader may not respond to control request 0x03 GET_DATA_RATES + In such a case the CCID driver should not report a critical + error. + + The driver will now report a info level error.o + + Closes alioth bug [#314516] Do not log + ccid_usb.c:1142:ControlUSB() control failed (1/4): -9 Success + https://alioth.debian.org/tracker/index.php?func=detail&aid=314516&group_id=30105&atid=410088 + * [r6798] src/debug.h: Add DEBUG_INFO5() macro + 2013-11-25 Ludovic Rousseau * [r6795] README, configure.ac: Release 1.4.14 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/MacOSX/debuglog.h new/ccid-1.4.16/MacOSX/debuglog.h --- old/ccid-1.4.15/MacOSX/debuglog.h 2014-02-11 18:47:36.000000000 +0100 +++ new/ccid-1.4.16/MacOSX/debuglog.h 2014-02-14 17:15:44.000000000 +0100 @@ -1,8 +1,8 @@ /* - * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * * Copyright (C) 1999-2004 - * David Corcoran <[email protected]> + * David Corcoran <[email protected]> * Copyright (C) 1999-2011 * Ludovic Rousseau <[email protected]> * @@ -32,7 +32,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: debuglog.h 6822 2014-01-13 15:21:25Z rousseau $ + * $Id: debuglog.h 6851 2014-02-14 15:43:32Z rousseau $ */ /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/MacOSX/ifdhandler.h new/ccid-1.4.16/MacOSX/ifdhandler.h --- old/ccid-1.4.15/MacOSX/ifdhandler.h 2014-02-11 18:47:36.000000000 +0100 +++ new/ccid-1.4.16/MacOSX/ifdhandler.h 2014-02-14 17:15:44.000000000 +0100 @@ -1,8 +1,8 @@ /* - * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * * Copyright (C) 1999-2004 - * David Corcoran <[email protected]> + * David Corcoran <[email protected]> * Copyright (C) 2003-2004 * Damien Sauveron <[email protected]> * Copyright (C) 2002-2011 @@ -34,7 +34,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: ifdhandler.h 6822 2014-01-13 15:21:25Z rousseau $ + * $Id: ifdhandler.h 6851 2014-02-14 15:43:32Z rousseau $ */ /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/MacOSX/reader.h new/ccid-1.4.16/MacOSX/reader.h --- old/ccid-1.4.15/MacOSX/reader.h 2014-02-11 18:47:36.000000000 +0100 +++ new/ccid-1.4.16/MacOSX/reader.h 2014-02-14 17:15:44.000000000 +0100 @@ -1,8 +1,8 @@ /* - * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * * Copyright (C) 1999-2005 - * David Corcoran <[email protected]> + * David Corcoran <[email protected]> * Copyright (C) 2005-2009 * Ludovic Rousseau <[email protected]> * @@ -32,7 +32,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: reader.h 6822 2014-01-13 15:21:25Z rousseau $ + * $Id: reader.h 6851 2014-02-14 15:43:32Z rousseau $ */ /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/NEWS new/ccid-1.4.16/NEWS --- old/ccid-1.4.15/NEWS 2008-11-18 22:48:42.000000000 +0100 +++ new/ccid-1.4.16/NEWS 2014-03-23 16:09:48.000000000 +0100 @@ -0,0 +1 @@ +Read the README file for news. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/README new/ccid-1.4.16/README --- old/ccid-1.4.15/README 2014-02-14 10:22:39.000000000 +0100 +++ new/ccid-1.4.16/README 2014-03-23 16:18:59.000000000 +0100 @@ -118,6 +118,28 @@ History: ======== +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 @@ -960,6 +982,6 @@ - First public release -$Id: README 6846 2014-02-14 09:19:48Z rousseau $ +$Id: README 6880 2014-03-23 15:13:34Z rousseau $ vim:ts=20 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/aclocal.m4 new/ccid-1.4.16/aclocal.m4 --- old/ccid-1.4.15/aclocal.m4 2014-02-14 11:00:22.000000000 +0100 +++ new/ccid-1.4.16/aclocal.m4 2014-03-23 16:19:04.000000000 +0100 @@ -793,7 +793,8 @@ END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi -fi]) +fi +]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/configure new/ccid-1.4.16/configure --- old/ccid-1.4.15/configure 2014-02-14 11:00:23.000000000 +0100 +++ new/ccid-1.4.16/configure 2014-03-23 16:19:05.000000000 +0100 @@ -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.15. +# Generated by GNU Autoconf 2.69 for ccid 1.4.16. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='ccid' PACKAGE_TARNAME='ccid' -PACKAGE_VERSION='1.4.15' -PACKAGE_STRING='ccid 1.4.15' +PACKAGE_VERSION='1.4.16' +PACKAGE_STRING='ccid 1.4.16' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1362,7 +1362,7 @@ # 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.15 to adapt to many kinds of systems. +\`configure' configures ccid 1.4.16 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1432,7 +1432,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ccid 1.4.15:";; + short | recursive ) echo "Configuration of ccid 1.4.16:";; esac cat <<\_ACEOF @@ -1568,7 +1568,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ccid configure 1.4.15 +ccid configure 1.4.16 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1987,7 +1987,7 @@ 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.15, which was +It was created by ccid $as_me 1.4.16, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2851,7 +2851,7 @@ # Define the identity of the package. PACKAGE='ccid' - VERSION='1.4.15' + VERSION='1.4.16' cat >>confdefs.h <<_ACEOF @@ -2945,6 +2945,7 @@ fi + # silent build by default # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : @@ -14165,7 +14166,7 @@ # 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.15, which was +This file was extended by ccid $as_me 1.4.16, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14231,7 +14232,7 @@ 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.15 +ccid config.status 1.4.16 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/configure.ac new/ccid-1.4.16/configure.ac --- old/ccid-1.4.15/configure.ac 2014-02-14 10:22:39.000000000 +0100 +++ new/ccid-1.4.16/configure.ac 2014-03-23 16:18:59.000000000 +0100 @@ -1,12 +1,12 @@ # Process this file with autoconf to produce a configure script. # You may need to use autoconf 2.56 or newer -# $Id: configure.ac 6846 2014-02-14 09:19:48Z rousseau $ +# $Id: configure.ac 6880 2014-03-23 15:13:34Z rousseau $ # Require autoconf 2.61 AC_PREREQ([2.69]) -AC_INIT([ccid],[1.4.15]) +AC_INIT([ccid],[1.4.16]) AC_CONFIG_SRCDIR(src/ifdhandler.c) AC_CONFIG_AUX_DIR([.]) AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip subdir-objects) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/readers/supported_readers.txt new/ccid-1.4.16/readers/supported_readers.txt --- old/ccid-1.4.15/readers/supported_readers.txt 2014-02-11 18:47:35.000000000 +0100 +++ new/ccid-1.4.16/readers/supported_readers.txt 2014-03-23 16:09:48.000000000 +0100 @@ -1,6 +1,6 @@ # # List of readers supported by the CCID driver -# Generated: 2014-02-08 +# Generated: 2014-03-11 # # DO NOT EDIT BY HAND @@ -201,6 +201,9 @@ 0x0982:0x0008:COVADIS VEGA-ALPHA 0x0982:0x0040:COVADIS Auriga +# Crypto Stick +0x20A0:0x4108:Crypto Stick Crypto Stick v1.4 + # DUALi 0x1DB2:0x088B:DUALi DRAGON NFC READER @@ -254,6 +257,7 @@ 0x1677:0x0025:HDZB uKeyCI800-K18 # Hewlett Packard +0x03F0:0x104A:Hewlett Packard HP USB Smartcard CCID Keyboard 0x03F0:0x2924:Hewlett Packard MFP Smart Card Reader # HID OMNIKEY @@ -270,6 +274,9 @@ 0x04E6:0x5721:Identive Identive CLOUD 4510 F Contactless + SAM Reader 0x04E6:0x5810:Identive CLOUD 2700 R Smart Card Reader +# IID +0x2406:0x6200:IID AT90S064 CCID READER + # IIT 0x03EB:0x9324:IIT E.Key Almaz-1C @@ -281,6 +288,10 @@ 0x2406:0x6404:Inside Secure AT90SCR050 0x2406:0x6407:Inside Secure AT90SCR200 +# INSIDE Secure +0x2406:0x6303:INSIDE Secure VaultIC 405 Smart Object +0x2406:0x6305:INSIDE Secure VaultIC 441 Smart Object + # KEBTechnology 0x04CC:0x5072:KEBTechnology KONA USB SmartCard @@ -302,6 +313,10 @@ # Macally 0x08AE:0x0BDF:Macally NFC CCID eNetPad +# Microchip +0x0424:0x1104:Microchip SEC1110 +0x0424:0x1202:Microchip SEC1210 + # Morpho 0x079B:0x0026:Morpho MSO350/MSO351 Fingerprint Sensor & SmartCard Reader 0x079B:0x0052:Morpho MSO1350 Fingerprint Sensor & SmartCard Reader @@ -437,6 +452,9 @@ # VMware 0x0E0F:0x0004:VMware Virtual USB CCID +# Watchdata W5181 +0x163C:0x0A03:Watchdata W5181 + # Winbond 0x0416:0x3815:Winbond CCID SmartCard Controller @@ -518,6 +536,9 @@ ########################## # section: duplicates ########################## +#0x0424:0x1202:Microchip SEC1210 (Microchip_SEC1210.txt) +#0x0424:0x1202:Microchip SEC1210 (Microchip_SEC1210.txt_i1) + #0x04E6:0x5291:SCM Microsystems Inc. SCL010 Contactless Reader (SCL010.txt) #0x04E6:0x5291:SCM Microsystems Inc. SCL010 Contactless Reader (SCM_SCL010.txt) @@ -587,6 +608,10 @@ #0x0F14:0x003D:Ingenico WITEO USB Smart Card Reader (Ingenico_WITEO_badge.txt) #0x0F14:0x003D:Ingenico WITEO USB Smart Card Reader (Ingenico_WITEO_base.txt) +#0x163C:0x0A03:Watchdata W5181 (Watchdata_W5181.txt) +#0x163C:0x0A03:Watchdata W5181 (Watchdata_W5181.txt_i1) +#0x163C:0x0A03:Watchdata W5181 (Watchdata_W5181.txt_i2) + #0x1DB2:0x088B:DUALi DRAGON NFC READER (DUALi_DRAGON_NFC_READER.txt) #0x1DB2:0x088B:DUALi DRAGON NFC READER (DUALi_DRAGON_NFC_READER.txt_i1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/Info.plist.src new/ccid-1.4.16/src/Info.plist.src --- old/ccid-1.4.15/src/Info.plist.src 2013-01-27 11:53:40.000000000 +0100 +++ new/ccid-1.4.16/src/Info.plist.src 2014-03-23 16:09:48.000000000 +0100 @@ -89,6 +89,11 @@ 32: power on the card at 1.8V, then 3V and then 5V 48: let the reader decide + 0x40: 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. + Default value: 0 --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/ccid.c new/ccid-1.4.16/src/ccid.c --- old/ccid-1.4.15/src/ccid.c 2014-02-14 10:22:39.000000000 +0100 +++ new/ccid-1.4.16/src/ccid.c 2014-03-23 16:09:48.000000000 +0100 @@ -18,7 +18,7 @@ */ /* - * $Id: ccid.c 6845 2014-02-14 09:16:01Z rousseau $ + * $Id: ccid.c 6875 2014-03-22 17:38:22Z rousseau $ */ #include <stdio.h> @@ -436,6 +436,21 @@ DEBUG_COMM("Failed to load l10n strings"); return_value = IFD_COMMUNICATION_ERROR; } + + if (DriverOptions & DRIVER_OPTION_DISABLE_PIN_RETRIES) + { + /* disable VERIFY from reader */ + const unsigned char cmd2[] = {0xb5, 0x00}; + length_res = sizeof(res); + if (IFD_SUCCESS == CmdEscape(reader_index, cmd2, sizeof(cmd2), res, &length_res, DEFAULT_COM_READ_TIMEOUT)) + { + DEBUG_COMM("Disable SPE retry counter successfull"); + } + else + { + DEBUG_CRITICAL("Failed to disable SPE retry counter"); + } + } } break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/ccid_ifdhandler.h new/ccid-1.4.16/src/ccid_ifdhandler.h --- old/ccid-1.4.15/src/ccid_ifdhandler.h 2010-06-04 14:31:15.000000000 +0200 +++ new/ccid-1.4.16/src/ccid_ifdhandler.h 2014-03-23 16:09:48.000000000 +0100 @@ -18,7 +18,7 @@ */ /* - * $Id: ccid_ifdhandler.h 4973 2010-06-01 09:43:29Z rousseau $ + * $Id: ccid_ifdhandler.h 6876 2014-03-23 12:00:57Z rousseau $ */ #ifndef _ccid_ifd_handler_h_ @@ -42,6 +42,7 @@ #define DRIVER_OPTION_GEMPC_TWIN_KEY_APDU 2 #define DRIVER_OPTION_USE_BOGUS_FIRMWARE 4 #define DRIVER_OPTION_RESET_ON_CLOSE 8 +#define DRIVER_OPTION_DISABLE_PIN_RETRIES (1 << 6) extern int DriverOptions; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/ccid_usb.c new/ccid-1.4.16/src/ccid_usb.c --- old/ccid-1.4.15/src/ccid_usb.c 2014-02-11 18:47:35.000000000 +0100 +++ new/ccid-1.4.16/src/ccid_usb.c 2014-03-23 16:09:48.000000000 +0100 @@ -18,7 +18,7 @@ */ /* - * $Id: ccid_usb.c 6828 2014-01-21 17:36:11Z rousseau $ + * $Id: ccid_usb.c 6874 2014-03-22 17:18:02Z rousseau $ */ #define __CCID_USB__ @@ -1214,6 +1214,7 @@ ret = libusb_submit_transfer(transfer); if (ret < 0) { libusb_free_transfer(transfer); + DEBUG_CRITICAL2("libusb_submit_transfer failed: %d", ret); return ret; } @@ -1231,6 +1232,7 @@ if (libusb_handle_events(ctx) < 0) break; libusb_free_transfer(transfer); + DEBUG_CRITICAL2("libusb_handle_events failed: %d", ret); return ret; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/commands.c new/ccid-1.4.16/src/commands.c --- old/ccid-1.4.15/src/commands.c 2013-11-25 18:08:07.000000000 +0100 +++ new/ccid-1.4.16/src/commands.c 2014-03-23 16:11:21.000000000 +0100 @@ -19,7 +19,7 @@ */ /* - * $Id: commands.c 6783 2013-10-24 09:36:52Z rousseau $ + * $Id: commands.c 6879 2014-03-23 15:11:20Z rousseau $ */ #include <string.h> @@ -497,8 +497,72 @@ } else { - /* get only the T=1 data */ /* FIXME: manage T=1 error blocks */ + + /* defines from openct/proto-t1.c */ + #define PCB 1 + #define DATA 3 + #define T1_S_BLOCK 0xC0 + #define T1_S_RESPONSE 0x20 + #define T1_S_TYPE(pcb) ((pcb) & 0x0F) + #define T1_S_WTX 0x03 + + /* WTX S-block */ + if ((T1_S_BLOCK | T1_S_WTX) == RxBuffer[PCB]) + { +/* + * The Swiss health care card sends a WTX request before returning the + * SW code. If the reader is in TPDU the driver must manage the request + * itself. + * + * received: 00 C3 01 09 CB + * openct/proto-t1.c:432:t1_transceive() S-Block request received + * openct/proto-t1.c:489:t1_transceive() CT sent S-block with wtx=9 + * sending: 00 E3 01 09 EB + * openct/proto-t1.c:667:t1_xcv() New timeout at WTX request: 23643 sec + * received: 00 40 02 90 00 D2 +*/ + ct_buf_t tbuf; + unsigned char sblk[1]; /* we only need 1 byte of data */ + t1_state_t *t1 = &get_ccid_slot(reader_index)->t1; + unsigned int slen; + int oldReadTimeout; + + DEBUG_COMM2("CT sent S-block with wtx=%u", RxBuffer[DATA]); + t1->wtx = RxBuffer[DATA]; + + oldReadTimeout = ccid_descriptor->readTimeout; + if (t1->wtx > 1) + { + /* set the new temporary timeout at WTX card request */ + ccid_descriptor->readTimeout *= t1->wtx; + DEBUG_INFO2("New timeout at WTX request: %d sec", + ccid_descriptor->readTimeout); + } + + ct_buf_init(&tbuf, sblk, sizeof(sblk)); + t1->wtx = RxBuffer[DATA]; + ct_buf_putc(&tbuf, RxBuffer[DATA]); + + slen = t1_build(t1, RxBuffer, 0, + T1_S_BLOCK | T1_S_RESPONSE | T1_S_TYPE(RxBuffer[PCB]), + &tbuf, NULL); + + ret = CCID_Transmit(t1 -> lun, slen, RxBuffer, 0, t1->wtx); + if (ret != IFD_SUCCESS) + return ret; + + /* I guess we have at least 6 bytes in RxBuffer */ + *RxLength = 6; + ret = CCID_Receive(reader_index, RxLength, RxBuffer, NULL); + if (ret != IFD_SUCCESS) + return ret; + + /* Restore initial timeout */ + ccid_descriptor->readTimeout = oldReadTimeout; + } + + /* get only the T=1 data */ memmove(RxBuffer, RxBuffer+3, *RxLength -4); *RxLength -= 4; /* remove NAD, PCB, LEN and CRC */ } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/misc.h new/ccid-1.4.16/src/misc.h --- old/ccid-1.4.15/src/misc.h 2014-02-11 18:47:36.000000000 +0100 +++ new/ccid-1.4.16/src/misc.h 2014-02-14 17:15:44.000000000 +0100 @@ -1,7 +1,7 @@ /* * This handles GCC attributes * - * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * * Copyright (C) 2005-2010 * Ludovic Rousseau <[email protected]> @@ -32,7 +32,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: misc.h 6822 2014-01-13 15:21:25Z rousseau $ + * $Id: misc.h 6851 2014-02-14 15:43:32Z rousseau $ */ #ifndef __misc_h__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/openct/proto-t1.c new/ccid-1.4.16/src/openct/proto-t1.c --- old/ccid-1.4.15/src/openct/proto-t1.c 2013-03-16 14:52:33.000000000 +0100 +++ new/ccid-1.4.16/src/openct/proto-t1.c 2014-03-23 16:09:48.000000000 +0100 @@ -193,7 +193,7 @@ { DEBUG_COMM("Parity error"); /* ISO 7816-3 Rule 7.4.2 */ - if (retries == 0) + if (retries <= 0) goto resync; /* ISO 7816-3 Rule 7.2 */ @@ -221,7 +221,7 @@ { DEBUG_COMM("R-BLOCK required"); /* ISO 7816-3 Rule 7.4.2 */ - if (retries == 0) + if (retries <= 0) goto resync; /* ISO 7816-3 Rule 7.2 */ @@ -241,7 +241,7 @@ if (!t1_verify_checksum(t1, sdata, n)) { DEBUG_COMM("checksum failed"); /* ISO 7816-3 Rule 7.4.2 */ - if (retries == 0) + if (retries <= 0) goto resync; /* ISO 7816-3 Rule 7.2 */ @@ -267,7 +267,7 @@ { DEBUG_COMM("R-Block required"); /* ISO 7816-3 Rule 7.4.2 */ - if (retries == 0) + if (retries <= 0) goto resync; /* ISO 7816-3 Rule 7.2 */ @@ -292,7 +292,7 @@ t1_seq(pcb), t1->ns, t1->more); /* ISO 7816-3 Rule 7.4.2 */ - if (retries == 0) + if (retries <= 0) goto resync; /* ISO 7816-3 Rule 7.2 */ @@ -314,6 +314,10 @@ /* ISO 7816-3 Rule 7.2 */ if (T1_R_BLOCK == t1_block_type(t1->previous_block[1])) { + /* ISO 7816-3 Rule 7.4.2 */ + if (retries <= 0) + goto resync; + DEBUG_COMM("Rule 7.2"); slen = t1_rebuild(t1, sdata); continue; @@ -363,7 +367,7 @@ DEBUG_COMM("wrong nr"); /* ISO 7816-3 Rule 7.4.2 */ - if (retries == 0) + if (retries <= 0) goto resync; slen = t1_build(t1, sdata, dad, @@ -404,7 +408,7 @@ if (T1_S_IS_RESPONSE(pcb)) { /* ISO 7816-3 Rule 7.4.2 */ - if (retries == 0) + if (retries <= 0) goto resync; /* ISO 7816-3 Rule 7.2 */ @@ -764,7 +768,7 @@ retries--; /* ISO 7816-3 Rule 7.4.2 */ - if (retries == 0) + if (retries <= 0) goto error; if (-1 == n) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/parser.h new/ccid-1.4.16/src/parser.h --- old/ccid-1.4.15/src/parser.h 2014-02-11 18:47:36.000000000 +0100 +++ new/ccid-1.4.16/src/parser.h 2014-02-14 17:15:44.000000000 +0100 @@ -1,5 +1,5 @@ /* - * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * * Copyright (C) 2003 * Toni Andjelkovic <[email protected]> @@ -32,7 +32,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: parser.h 6822 2014-01-13 15:21:25Z rousseau $ + * $Id: parser.h 6851 2014-02-14 15:43:32Z rousseau $ */ /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/strlcpycat.h new/ccid-1.4.16/src/strlcpycat.h --- old/ccid-1.4.15/src/strlcpycat.h 2014-02-11 18:47:36.000000000 +0100 +++ new/ccid-1.4.16/src/strlcpycat.h 2014-02-14 17:15:44.000000000 +0100 @@ -1,5 +1,5 @@ /* - * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * * Copyright (C) 2004-2010 * Ludovic Rousseau <[email protected]> @@ -30,7 +30,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: strlcpycat.h 6822 2014-01-13 15:21:25Z rousseau $ + * $Id: strlcpycat.h 6851 2014-02-14 15:43:32Z rousseau $ */ /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/tokenparser.c new/ccid-1.4.16/src/tokenparser.c --- old/ccid-1.4.15/src/tokenparser.c 2014-02-14 11:00:33.000000000 +0100 +++ new/ccid-1.4.16/src/tokenparser.c 2014-03-23 16:09:58.000000000 +0100 @@ -484,10 +484,10 @@ /* * Reads lexical config files and updates database. * - * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * * Copyright (C) 2001-2003 - * David Corcoran <[email protected]> + * David Corcoran <[email protected]> * Copyright (C) 2003-2010 * Ludovic Rousseau <[email protected]> * @@ -517,7 +517,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: tokenparser.l 6822 2014-01-13 15:21:25Z rousseau $ + * $Id: tokenparser.l 6851 2014-02-14 15:43:32Z rousseau $ */ /** * @file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ccid-1.4.15/src/tokenparser.l new/ccid-1.4.16/src/tokenparser.l --- old/ccid-1.4.15/src/tokenparser.l 2014-02-11 18:47:36.000000000 +0100 +++ new/ccid-1.4.16/src/tokenparser.l 2014-02-14 17:15:44.000000000 +0100 @@ -1,10 +1,10 @@ /* * Reads lexical config files and updates database. * - * MUSCLE SmartCard Development ( http://www.linuxnet.com ) + * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html ) * * Copyright (C) 2001-2003 - * David Corcoran <[email protected]> + * David Corcoran <[email protected]> * Copyright (C) 2003-2010 * Ludovic Rousseau <[email protected]> * @@ -34,7 +34,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: tokenparser.l 6822 2014-01-13 15:21:25Z rousseau $ + * $Id: tokenparser.l 6851 2014-02-14 15:43:32Z rousseau $ */ /** ++++++ pcsc-ccid.keyring ++++++ --- /var/tmp/diff_new_pack.XXkgR4/_old 2014-03-25 13:25:01.000000000 +0100 +++ /var/tmp/diff_new_pack.XXkgR4/_new 2014-03-25 13:25:01.000000000 +0100 @@ -30,3 +30,311 @@ AKCXbqMkNr5QNdPi37LtspMzCHlvoACgknJVGCR6Fmz7s1wL38ZLkcqYgsM= =ItMa -----END PGP PUBLIC KEY BLOCK----- + + +pub 4096R/E8F9C57E 2010-09-19 +uid Ludovic Rousseau <[email protected]> +uid Ludovic Rousseau <[email protected]> +sub 4096R/2F1BEFF0 2010-09-19 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v2.0.22 (GNU/Linux) + +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 +pRP4yT/Kvsj1Rz0cYYI= +=a5wl +-----END PGP PUBLIC KEY BLOCK----- -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
