Hello community,

here is the log from the commit of package pcsc-ccid for openSUSE:Factory 
checked in at 2013-11-26 19:21:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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      2013-10-11 
09:00:10.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pcsc-ccid.new/pcsc-ccid.changes 2013-11-26 
19:21:51.000000000 +0100
@@ -1,0 +2,10 @@
+Tue Nov 26 11:07:53 UTC 2013 - [email protected]
+
+- Updated to version 1.4.14
+  * 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
+
+-------------------------------------------------------------------

Old:
----
  ccid-1.4.13.tar.bz2
  ccid-1.4.13.tar.bz2.asc

New:
----
  ccid-1.4.14.tar.bz2
  ccid-1.4.14.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pcsc-ccid.spec ++++++
--- /var/tmp/diff_new_pack.uleOG9/_old  2013-11-26 19:21:52.000000000 +0100
+++ /var/tmp/diff_new_pack.uleOG9/_new  2013-11-26 19:21:52.000000000 +0100
@@ -32,7 +32,7 @@
 %if %suse_version > 1220
 BuildRequires:  gpg-offline
 %endif
-Version:        1.4.13
+Version:        1.4.14
 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.13.tar.bz2 -> ccid-1.4.14.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/ChangeLog new/ccid-1.4.14/ChangeLog
--- old/ccid-1.4.13/ChangeLog   2013-08-12 23:46:05.000000000 +0200
+++ new/ccid-1.4.14/ChangeLog   2013-11-25 19:16:37.000000000 +0100
@@ -1,3 +1,238 @@
+2013-11-25  Ludovic Rousseau
+
+       * [r6795] README, configure.ac: Release 1.4.14
+       * [r6794] README: Reformat the list of readers in the "add support
+         for" section
+       * [r6793] src/ccid_usb.c: Generalize the management of readers with
+         bDeviceClass = 0xFF
+         
+         Some early Gemalto Ezio CB+ readers have bDeviceClass,
+         bDeviceSubClass and bDeviceProtocol set to 0xFF (proprietary)
+         instead of 0x00.
+         
+         So on Mac OS X the reader configuration is not done by the
+         OS/kernel and we do it ourself.
+         
+         The code is no more limited to the GEMALTO_EZIO_CBP
+         (0x08E6/0x34C3) but to any reader with the problem, like the
+         Todos Argos Mini II CCID.
+       * [r6792] MacOSX/configure: Set Xcode SDK to version 10.8
+         
+         With Xcode 5.x the minimum SDK version is 10.8 (Mountain Lion)
+         even on Mountain Lion.
+       * [r6791] readers/Gemalto_Ezio_Shield_Secure_Channel.txt,
+         readers/supported_readers.txt: Add Gemalto ING Shield Pro SC
+       * [r6790] src/ifdhandler.c: IFDHControl(): report
+         FEATURE_IFD_PIN_PROPERTIES only for pinpad readers
+         
+         Some (bogus) applications use the presence of
+         FEATURE_IFD_PIN_PROPERTIES to know if the reader is a pinpad
+         reader or not. The application should use
+         FEATURE_VERIFY_PIN_DIRECT and FEATURE_MODIFY_PIN_DIRECT instead.
+         
+         Reporting FEATURE_IFD_PIN_PROPERTIES for a non-pinpad reader is
+         useless so it should not harm to remove it from
+         CM_IOCTL_GET_FEATURE_REQUEST.
+
+2013-10-24  Ludovic Rousseau
+
+       * [r6784] src/ccid_usb.c, src/ifdhandler.c: Add support of Gemalto
+         GemCore SIM Pro firmware 2.0
+         
+         The new firmware of the Gemalto GemCore SIM Pro removes a
+         limitation of the firmware 1.0. The 2 slots now supports the same
+         data rates. The second slot is no more limited to some values
+         only.
+       * [r6783] src/ccid.c, src/ccid_serial.c, src/commands.c,
+         src/commands.h, src/ifdhandler.c: Add a timeout parameter to
+         CmdEscape()
+         
+         Not all commands need the same timeout. For example the
+         CmdEscape() used in ccid_serial.c to check if the reader is alive
+         should have a short timeout. The timeout was forced to 30 seconds
+         inside CmdEscape() so it was not possible to use a different
+         value. The patch fixes this.
+       * [r6782] src/ifdhandler.c: Limit GemCore SIM PRO hack to only the
+         specific reader
+         
+         If the ATR fails we should mark the card as absent only for the
+         GemCore SIM PRO. This reader do not manage slot status for the
+         second slot and a corresponding hack is present in function
+         IFDHICCPresence() around line 1713.
+
+2013-10-19  Ludovic Rousseau
+
+       * [r6781]
+         readers/extra_features/Gemalto_Ezio_Shield_PinPad_Martin_features.txt:
+         CT710 parse from Martin Paljak
+         
+         http://archives.neohapsis.com/archives/dev/muscle/2013-q4/0040.html
+         https://sourceforge.net/p/opensc/mailman/message/31538801/
+
+2013-10-18  Ludovic Rousseau
+
+       * [r6776] readers/extra_features/GemPCPinpadv2_features.txt,
+         readers/extra_features/Gemalto_Ezio_Shield_PinPad_features.txt:
+         Add reader name, Pid and Vid
+       * [r6774] readers/extra_features,
+         readers/extra_features/GemPCPinpadv2_features.txt,
+         readers/extra_features/Gemalto_Ezio_Shield_PinPad_features.txt,
+         readers/extra_features/README.txt: This directory contains extra
+         information about a reader
+         
+         For example the result of the
+         PCSC/UnitaryTests/FEATURE_CCID_ESC_COMMAND_Gemalto_features.py
+         command on some Gemalto readers.
+
+2013-10-09  Ludovic Rousseau
+
+       * [r6766] README, configure.ac: release 1.4.13
+
+2013-10-02  Ludovic Rousseau
+
+       * [r6762] MacOSX/configure: Simplify the code for a NON generic
+         driver
+         
+         - do not build a class driver (not yet used by pcsc-lite on Mac
+         OS X) using --disable-class
+         
+         - use a specific bundle name to NOT overwrite the official CCID
+         driver using --enable-bundle=ifd-ccid-$BUNDLE_ID.bundle
+         
+         - differentiate each libccid library by the dynamic linker using
+         --prefix=/fake/$BUNDLE_ID
+       * [r6761] MacOSX/configure: Document the use of --disable-class
+
+2013-10-01  Ludovic Rousseau
+
+       * [r6760] src/ccid_usb.c, src/debug.c: Use the COUNT_OF macro
+
+2013-09-30  Ludovic Rousseau
+
+       * [r6757] src/ccid_usb.c: Multislot support: do not crash on exit
+         
+         The field multislot_extension should be set to NULL only _after_
+         the multi-slot thread management is stopped. This entry is used
+         by the Multi_PollingProc thread.
+
+2013-09-23  Ludovic Rousseau
+
+       * [r6755] readers/Access_IS_ePassport_Reader.txt,
+         readers/supported_readers.txt: Add Access IS ePassport Reader
+       * [r6754] ylwrap: Update from automake 1.14
+
+2013-09-21  Ludovic Rousseau
+
+       * [r6753] src/ifdhandler.c: CreateChannelByNameOrChannel(): reset
+         ccid_descriptor->readTimeout in all cases
+         
+         The value was not restored in the error case. So it was not a
+         bug. But the Coverity tool complained:
+         
+         CID 1090609 (#1 of 1): Failure to restore non-local value
+         (MISSING_RESTORE)20. end_of_scope: Value of non-local
+         "ccid_descriptor->readTimeout" that was saved in "oldReadTimeout"
+         is not restored as it was along other paths.
+
+2013-09-16  Ludovic Rousseau
+
+       * [r6752] src/Makefile.am: Revert change in revision 6735
+         
+         We can't use install-exec-local since we want to overwrite the
+         install rule. We do not want to _add_ files to install
+       * [r6751] MacOSX/configure: Display the warning "No Universal
+         Binary build" in red
+
+2013-09-05  Ludovic Rousseau
+
+       * [r6746] configure.ac: Set LIBUSB_* even if the libusb-1.0 version
+         is too old
+         
+         If PKG_CHECK_MODULES(LIBUSB, libusb-1.0 >=
+         $LIBUSB_NEEDED_VERSION,...) fails then LIBUSB_CFLAGS and
+         LIBUSB_LIBS are not set. This is problematic since it just
+         displays a warning. So we recall PKG_CHECK_MODULES(LIBUSB,
+         libusb-1.0) with not version test
+         
+         Problem discovered with Debian GNU/kFreeBSD where libusb-1.0 is
+         at version 1.0.6 (it is not the _real_ libusb).
+         
+         ./configure failed with: [...] checking for LIBUSB... no
+         configure: WARNING: install libusb 1.0.8 or later checking
+         libusb.h usability... yes checking libusb.h presence... yes
+         checking for libusb.h... yes configure: error: libusb not found,
+         use ./configure LIBUSB_LIBS=...
+
+2013-08-24  Ludovic Rousseau
+
+       * [r6740] configure.ac: Use subdir-objects option
+         
+         src/Makefile.am:36: warning: source file 'towitoko/atr.c' is in a
+         subdirectory, src/Makefile.am:36: but option 'subdir-objects' is
+         disabled
+         
+         automake-1.14: warning: possible forward-incompatibility.
+         automake-1.14: At least a source file is in a subdirectory, but
+         the 'subdir-objects' automake-1.14: automake option hasn't been
+         enabled. For now, the corresponding output automake-1.14: object
+         file(s) will be placed in the top-level directory. However,
+         automake-1.14: this behaviour will change in future Automake
+         versions: they will automake-1.14: unconditionally cause object
+         files to be placed in the same subdirectory automake-1.14: of the
+         corresponding sources. automake-1.14: You are advised to start
+         using 'subdir-objects' option throughout your automake-1.14:
+         project, to avoid future incompatibilities.
+
+2013-08-23  Ludovic Rousseau
+
+       * [r6739] src/ifdhandler.c: IFDHControl(): 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.
+       * [r6738] src/commands.c: Silence a "clang --analyze" warning
+         
+         commands.c:1936:12: warning: The right operand of '==' is a
+         garbage value if (0x10 == pcbuffer[0]) ^ ~~~~~~~~~~~
+       * [r6737] src/ccid_usb.c: Fix "clang --analyze" warning
+         
+         ccid_usb.c:1095:14: warning: Result of 'calloc' is converted to a
+         pointer of type 'unsigned int', which is incompatible with sizeof
+         operand type 'int' int_array = calloc(n+1, sizeof(int)); ^~~~~~
+         ~~~~~~~~~~~
+         
+         - Change variable name int_array -> uint_array since the type is
+         "unsigned int" - Use sizeof(uint_array[0]) to always get the
+         correct type of a uint_array[] element
+       * [r6736] src/Makefile.am: Uninstall libccidtwin in the uninstall
+         rule
+         
+         If libccidtwin is installed in install rule we should also remove
+         it in the uninstall rule
+       * [r6735] src/Makefile.am: Use the -local versions for install and
+         uninstall rules
+         
+         autoreconf: running: automake --add-missing --no-force
+         --warnings=all src/Makefile.am:76: warning: user target 'install'
+         defined here ... /usr/share/automake-1.13/am/install.am: ...
+         overrides Automake target 'install' defined here
+         src/Makefile.am:99: warning: user target 'uninstall' defined here
+         ... /usr/share/automake-1.13/am/install.am: ... overrides
+         Automake target 'uninstall' defined here src/Makefile.am:99:
+         consider using uninstall-local instead of uninstall
+         
+         See
+         http://www.gnu.org/software/automake/manual/html_node/Extending.html
+
+2013-08-20  Ludovic Rousseau
+
+       * [r6732] readers/Planeta_RC700-NFC_CCID.txt,
+         readers/supported_readers.txt: Add Planeta RC700-NFC CCID
+
 2013-08-12  Ludovic Rousseau
 
        * [r6729] README, configure.ac: Release 1.4.12
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/MacOSX/configure 
new/ccid-1.4.14/MacOSX/configure
--- old/ccid-1.4.13/MacOSX/configure    2013-10-06 12:25:18.000000000 +0200
+++ new/ccid-1.4.14/MacOSX/configure    2013-11-25 18:08:07.000000000 +0100
@@ -17,7 +17,7 @@
 #    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 #    02110-1301 USA.
 
-# $Id: configure 6762 2013-10-02 15:18:08Z rousseau $
+# $Id: configure 6792 2013-11-25 13:03:21Z rousseau $
 
 # to use
 # ./MacOSX/configure
@@ -66,7 +66,7 @@
        echo -en $NORMAL
 else
        echo "Universal Binary build"
-       CFLAGS="$CFLAGS -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk
 -arch i386 -arch x86_64"
+       CFLAGS="$CFLAGS -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
 -arch i386 -arch x86_64"
 fi
 echo
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/README new/ccid-1.4.14/README
--- old/ccid-1.4.13/README      2013-10-09 12:02:34.000000000 +0200
+++ new/ccid-1.4.14/README      2013-11-25 19:15:15.000000000 +0100
@@ -118,6 +118,14 @@
 History:
 ========
 
+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
@@ -276,10 +284,15 @@
 
 
 1.4.5 - 11 October 2011, Ludovic Rousseau
-    - Add support of Alcor Micro AU9540, Ubisys 13.56MHz RFID (CCID),
-      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
+    - 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:
@@ -291,9 +304,12 @@
 
 
 1.4.4 - 13 May 2011, Ludovic Rousseau
-    - Add support of Gemalto Ezio Shield, Gemalto Ezio CB+, Gemalto Ezio
-      Shield Secure Channel, Gemalto Ezio Shield PinPad and Gemalto Ezio
-      Generic
+    - 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).
@@ -303,8 +319,11 @@
 
 
 1.4.3 - 2 April 2011, Ludovic Rousseau
-    - Add support of Neowave Weneo, Vasco DIGIPASS 920, SCM SCL011,
-      Feitian ePass2003 readers
+    - 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.
@@ -314,10 +333,16 @@
 
 
 1.4.2 - 22 February 2011, Ludovic Rousseau
-    - Add support of Feitian SCR310 reader (also known as 301v2), ACS
-      APG8201 PINhandy 1, Oberthur ID-ONE TOKEN SLIM v2, new Neowave
-      Weneo token, Vasco DIGIPASS KEY 860, Vasco DIGIPASS KEY 200,
-      Xiring Leo v2, Xiring MyLeo, Aktiv Rutoken lite readers
+    - 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
@@ -327,9 +352,11 @@
 
 
 1.4.1 - 3 December 2010, Ludovic Rousseau
-    - Add support of Gemalto Smart Guardian (SG CCID), ReinerSCT
-      cyberJack RFID basis, Akasa AK-CR-03, BZH uKeyCI800-K18, Free
-      Software Initiative of Japan Gnuk token readers
+    - 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
@@ -348,9 +375,15 @@
 
 
 1.4.0 - 4 August 2010, Ludovic Rousseau
-    - add support of Kingtrust Multi-Reader, Dectel CI692, Todos CX00,
-      C3PO LTC36, ACS AET65, Broadcom 5880, Tianyu Smart Card Reader,
-      Gemalto Hybrid Smartcard Reader
+    - 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
@@ -373,14 +406,31 @@
 
 
 1.3.12 - 8 May 2010, Ludovic Rousseau
-    - add support of Todos AGM2 CCID, Cherry SmartTerminal XX7X, Smart
-      SBV280, Ask CPL108, German Privacy Foundation Crypto Stick v1.2,
-      id3 CL1356T5, Covadis Auriga, GoldKey PIV Token, Vasco DIGIPASS
-      KEY 860, Vasco DIGIPASS KEY 200, Vasco DP855, Vasco DP865, Atmel
-      AT90SCR100, Atmel AT90SCR050, Atmel VaultIC420, Atmel VaultIC440,
-      Atmel VaultIC460, KOBIL Smart Token, KOBIL mIDentity 4smart, KOBIL
-      mIDentity 4smart AES, KOBIL mIDentity visual, KOBIL mIDentity
-      fullsize, KOBIL mIDentity 4smart fullsize AES, SCM SCR3500
+    - 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
@@ -419,10 +469,17 @@
 
 
 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
+    - 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
@@ -442,10 +499,15 @@
 
 
 1.3.10 - 7 March 2009, Ludovic Rousseau
-    - add support for MSI StarReader SMART, Noname reader (from
-      Omnikey), Xiring Xi Sign PKI, Realtek 43 in 1 + Sim + Smart Card
-      Reader, Atmel AT98SC032CT, Aktiv Rutoken Magistra, TianYu CCID
-      SmartKey, Precise Biometrics 200 MC and 250 MC
+    - 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
@@ -454,12 +516,22 @@
 
 
 1.3.9 - 18 November 2008, Ludovic Rousseau
-    - add support for Aladdin eToken PRO USB 72K Java, Cherry
-      SmartTerminal ST-1200USB, Atmel AT91SO, SpringCard Prox'N'Roll,
-      CSB6 Basic, EasyFinger Ultimate, CSB6 Ultimate, EasyFinger
-      Standard, CrazyWriter, CSB6 Secure, KONA USB SmartCard, HP MFP
-      Smart Card Reader, ACS ACR122U PICC, Gemalto PDT, VMware Virtual
-      USB CCID
+    - 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
@@ -472,7 +544,8 @@
 
 
 1.3.8 - 27 June 2008, Ludovic Rousseau
-    - add support for Oberthur ID-One Cosmo Card
+    - 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
@@ -482,8 +555,10 @@
 
 
 1.3.7 - 8 June 2008, Ludovic Rousseau
-    - add support for ActivCard Activkey Sim, Pro-Active CSB6 Ultimate,
-      id3 Semiconductors CL1356A HID
+    - 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 +
@@ -495,8 +570,12 @@
 
 
 1.3.6 - 30 April 2008, Ludovic Rousseau
-    - add support for Covadis Alya, Covadis Véga, Precise Biometrics 250
-      MC, Vasco DP905, Validy TokenA sl vt
+    - 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
@@ -850,6 +929,6 @@
     - First public release
 
 
-$Id: README 6766 2013-10-09 10:00:52Z rousseau $
+$Id: README 6795 2013-11-25 18:09:17Z rousseau $
 
  vim:ts=20
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/configure new/ccid-1.4.14/configure
--- old/ccid-1.4.13/configure   2013-10-09 12:02:44.000000000 +0200
+++ new/ccid-1.4.14/configure   2013-11-25 19:15:25.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.13.
+# Generated by GNU Autoconf 2.69 for ccid 1.4.14.
 #
 #
 # 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.13'
-PACKAGE_STRING='ccid 1.4.13'
+PACKAGE_VERSION='1.4.14'
+PACKAGE_STRING='ccid 1.4.14'
 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.13 to adapt to many kinds of systems.
+\`configure' configures ccid 1.4.14 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.13:";;
+     short | recursive ) echo "Configuration of ccid 1.4.14:";;
    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.13
+ccid configure 1.4.14
 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.13, which was
+It was created by ccid $as_me 1.4.14, 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.13'
+ VERSION='1.4.14'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -14159,7 +14159,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.13, which was
+This file was extended by ccid $as_me 1.4.14, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -14225,7 +14225,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.13
+ccid config.status 1.4.14
 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.13/configure.ac new/ccid-1.4.14/configure.ac
--- old/ccid-1.4.13/configure.ac        2013-10-09 12:02:34.000000000 +0200
+++ new/ccid-1.4.14/configure.ac        2013-11-25 19:15:15.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 6766 2013-10-09 10:00:52Z rousseau $
+# $Id: configure.ac 6795 2013-11-25 18:09:17Z rousseau $
 
 # Require autoconf 2.61
 AC_PREREQ([2.69])
 
-AC_INIT([ccid],[1.4.13])
+AC_INIT([ccid],[1.4.14])
 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.13/readers/supported_readers.txt 
new/ccid-1.4.14/readers/supported_readers.txt
--- old/ccid-1.4.13/readers/supported_readers.txt       2013-10-06 
12:25:18.000000000 +0200
+++ new/ccid-1.4.14/readers/supported_readers.txt       2013-11-25 
18:08:07.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # List of readers supported by the CCID driver
-# Generated: 2013-09-23
+# Generated: 2013-11-25
 #
 # DO NOT EDIT BY HAND
 
@@ -219,6 +219,7 @@
 
 # Gemalto
 0x08E6:0x2202:Gemalto Gem e-Seal Pro USB Token
+0x08E6:0x34C1:Gemalto ING Shield Pro SC
 0x08E6:0x34C2:Gemalto Ezio Shield
 0x08E6:0x34C5:Gemalto Ezio Shield Branch Reader
 0x08E6:0x34EC:Gemalto GemPC Express
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/src/ccid.c new/ccid-1.4.14/src/ccid.c
--- old/ccid-1.4.13/src/ccid.c  2013-06-12 13:56:24.000000000 +0200
+++ new/ccid-1.4.14/src/ccid.c  2013-11-25 18:08:07.000000000 +0100
@@ -18,7 +18,7 @@
 */
 
 /*
- * $Id: ccid.c 6650 2013-06-10 08:43:24Z rousseau $
+ * $Id: ccid.c 6783 2013-10-24 09:36:52Z rousseau $
  */
 
 #include <stdio.h>
@@ -200,7 +200,7 @@
                RESPONSECODE ret;
 
                ret = CmdEscape(reader_index, cmd, sizeof cmd,
-                       (unsigned char*)gf_features, &len_features);
+                       (unsigned char*)gf_features, &len_features, 0);
                if ((IFD_SUCCESS == ret) &&
                    (len_features == sizeof *gf_features))
                {
@@ -242,7 +242,7 @@
                                unsigned char res[10];
                                unsigned int length_res = sizeof(res);
 
-                               if (CmdEscape(reader_index, cmd, sizeof(cmd), 
res, &length_res) == IFD_SUCCESS)
+                               if (CmdEscape(reader_index, cmd, sizeof(cmd), 
res, &length_res, 0) == IFD_SUCCESS)
                                {
                                        ccid_descriptor->dwFeatures &= 
~CCID_CLASS_EXCHANGE_MASK;
                                        ccid_descriptor->dwFeatures |= 
CCID_CLASS_SHORT_APDU;
@@ -427,7 +427,7 @@
                                }
 
                                (void)sleep(1);
-                               if (IFD_SUCCESS == CmdEscape(reader_index, cmd, 
sizeof(cmd), res, &length_res))
+                               if (IFD_SUCCESS == CmdEscape(reader_index, cmd, 
sizeof(cmd), res, &length_res, 0))
                                {
                                        DEBUG_COMM("l10n string loaded 
successfully");
                                }
@@ -467,8 +467,8 @@
                                unsigned char res[20];
                                unsigned int length_res = sizeof(res);
 
-                               if ((IFD_SUCCESS == CmdEscape(reader_index, 
cmd1, sizeof(cmd1), res, &length_res))
-                                       && (IFD_SUCCESS == 
CmdEscape(reader_index, cmd2, sizeof(cmd2), res, &length_res)))
+                               if ((IFD_SUCCESS == CmdEscape(reader_index, 
cmd1, sizeof(cmd1), res, &length_res, 0))
+                                       && (IFD_SUCCESS == 
CmdEscape(reader_index, cmd2, sizeof(cmd2), res, &length_res, 0)))
                                {
                                        DEBUG_COMM("SCM SCR331-DI contactless 
detected");
                                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/src/ccid_serial.c 
new/ccid-1.4.14/src/ccid_serial.c
--- old/ccid-1.4.13/src/ccid_serial.c   2013-06-12 13:56:24.000000000 +0200
+++ new/ccid-1.4.14/src/ccid_serial.c   2013-11-25 18:08:07.000000000 +0100
@@ -20,7 +20,7 @@
  */
 
 /*
- * $Id: ccid_serial.c 6650 2013-06-10 08:43:24Z rousseau $
+ * $Id: ccid_serial.c 6783 2013-10-24 09:36:52Z rousseau $
  */
 
 #include <stdio.h>
@@ -760,19 +760,14 @@
                unsigned int rx_length = sizeof(rx_buffer);
 
                /* 2 seconds timeout to not wait too long if no reader is 
connected */
-               serialDevice[reader].ccid.readTimeout = 2*1000;
-
                if (IFD_SUCCESS != CmdEscape(reader_index, tx_buffer, 
sizeof(tx_buffer),
-                       rx_buffer, &rx_length))
+                       rx_buffer, &rx_length, 2*1000))
                {
                        DEBUG_CRITICAL("Get firmware failed. Maybe the reader 
is not connected");
                        (void)CloseSerial(reader_index);
                        return STATUS_UNSUCCESSFUL;
                }
 
-               /* normal timeout: 2 seconds */
-               serialDevice[reader].ccid.readTimeout = 
DEFAULT_COM_READ_TIMEOUT ;
-
                rx_buffer[rx_length] = '\0';
                DEBUG_INFO2("Firmware: %s", rx_buffer);
        }
@@ -786,7 +781,7 @@
                unsigned int rx_length = sizeof(rx_buffer);
 
                if (IFD_SUCCESS != CmdEscape(reader_index, tx_buffer, 
sizeof(tx_buffer),
-                       rx_buffer, &rx_length))
+                       rx_buffer, &rx_length, 0))
                {
                        DEBUG_CRITICAL("Change card movement notification 
failed.");
                        (void)CloseSerial(reader_index);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/src/ccid_usb.c 
new/ccid-1.4.14/src/ccid_usb.c
--- old/ccid-1.4.13/src/ccid_usb.c      2013-10-06 12:25:18.000000000 +0200
+++ new/ccid-1.4.14/src/ccid_usb.c      2013-11-25 18:08:07.000000000 +0100
@@ -18,7 +18,7 @@
 */
 
 /*
- * $Id: ccid_usb.c 6760 2013-10-01 12:57:50Z rousseau $
+ * $Id: ccid_usb.c 6793 2013-11-25 13:09:41Z rousseau $
  */
 
 #define __CCID_USB__
@@ -447,9 +447,12 @@
                                                /* we reuse the same device
                                                 * and the reader is multi-slot 
*/
                                                usbDevice[reader_index] = 
usbDevice[previous_reader_index];
-                                               /* the other slots do not have 
the same data rates */
+                                               /* The other slots of GemCore 
SIM Pro firmware
+                                                * 1.0 do not have the same 
data rates.
+                                                * Firmware 2.0 do not have 
this limitation */
                                                if ((GEMCOREPOSPRO == readerID)
-                                                       || (GEMCORESIMPRO == 
readerID))
+                                                       || ((GEMCORESIMPRO == 
readerID)
+                                                       && 
(usbDevice[reader_index].ccid.IFD_bcdDevice < 0x0200)))
                                                {
                                                        
usbDevice[reader_index].ccid.arrayOfSupportedDataRates = SerialCustomDataRates;
                                                        
usbDevice[reader_index].ccid.dwMaxDataRate = 125000;
@@ -494,35 +497,45 @@
                                }
 
 again:
-#ifdef __APPLE__
-                               /* Some early Gemalto Ezio CB+ readers have
-                                * bDeviceClass, bDeviceSubClass and 
bDeviceProtocol set
-                                * to 0xFF (proprietary) instead of 0x00.
-                                *
-                                * So on Mac OS X the reader configuration is 
not done
-                                * by the OS/kernel and we do it ourself.
-                                */
-                               if (GEMALTO_EZIO_CBP == readerID)
+                               r = libusb_get_active_config_descriptor(dev, 
&config_desc);
+                               if (r < 0)
                                {
-                                       r = 
libusb_set_configuration(dev_handle, 1);
+#ifdef __APPLE__
+                                       /* Some early Gemalto Ezio CB+ readers 
have
+                                        * bDeviceClass, bDeviceSubClass and 
bDeviceProtocol set
+                                        * to 0xFF (proprietary) instead of 
0x00.
+                                        *
+                                        * So on Mac OS X the reader 
configuration is not done
+                                        * by the OS/kernel and we do it 
ourself.
+                                        */
+                                       if ((0xFF == desc.bDeviceClass)
+                                               && (0xFF == 
desc.bDeviceSubClass)
+                                               && (0xFF == 
desc.bDeviceProtocol))
+                                       {
+                                               r = 
libusb_set_configuration(dev_handle, 1);
+                                               if (r < 0)
+                                               {
+                                                       
(void)libusb_close(dev_handle);
+                                                       DEBUG_CRITICAL4("Can't 
set configuration on %d/%d: %d",
+                                                                       
bus_number, device_address, r);
+                                                       continue;
+                                               }
+                                       }
+
+                                       /* recall */
+                                       r = 
libusb_get_active_config_descriptor(dev, &config_desc);
                                        if (r < 0)
                                        {
+#endif
                                                (void)libusb_close(dev_handle);
-                                               DEBUG_CRITICAL4("Can't set 
configuration on %d/%d: %d",
+                                               DEBUG_CRITICAL4("Can't get 
config descriptor on %d/%d: %d",
                                                        bus_number, 
device_address, r);
                                                continue;
                                        }
+#ifdef __APPLE__
                                }
 #endif
 
-                               r = libusb_get_active_config_descriptor(dev, 
&config_desc);
-                               if (r < 0)
-                               {
-                                       (void)libusb_close(dev_handle);
-                                       DEBUG_CRITICAL4("Can't get config 
descriptor on %d/%d: %d",
-                                               bus_number, device_address, r);
-                                       continue;
-                               }
 
                                usb_interface = 
get_ccid_usb_interface(config_desc, &num);
                                if (usb_interface == NULL)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/src/commands.c 
new/ccid-1.4.14/src/commands.c
--- old/ccid-1.4.13/src/commands.c      2013-10-06 12:25:18.000000000 +0200
+++ new/ccid-1.4.14/src/commands.c      2013-11-25 18:08:07.000000000 +0100
@@ -19,7 +19,7 @@
 */
 
 /*
- * $Id: commands.c 6738 2013-08-23 08:43:37Z rousseau $
+ * $Id: commands.c 6783 2013-10-24 09:36:52Z rousseau $
  */
 
 #include <string.h>
@@ -245,7 +245,7 @@
                        unsigned int res_length = sizeof(res_tmp);
 
                        if ((return_value = CmdEscape(reader_index, cmd_tmp,
-                               sizeof(cmd_tmp), res_tmp, &res_length)) != 
IFD_SUCCESS)
+                               sizeof(cmd_tmp), res_tmp, &res_length, 0)) != 
IFD_SUCCESS)
                                return return_value;
 
                        /* avoid looping if we can't switch mode */
@@ -455,7 +455,7 @@
 
                /* the SPR532 will append the PIN code without any padding */
                return_value = CmdEscape(reader_index, cmd_tmp, sizeof(cmd_tmp),
-                       res_tmp, &res_length);
+                       res_tmp, &res_length, 0);
                if (return_value != IFD_SUCCESS)
                        return return_value;
 
@@ -805,7 +805,7 @@
  ****************************************************************************/
 RESPONSECODE CmdEscape(unsigned int reader_index,
        const unsigned char TxBuffer[], unsigned int TxLength,
-       unsigned char RxBuffer[], unsigned int *RxLength)
+       unsigned char RxBuffer[], unsigned int *RxLength, unsigned int timeout)
 {
        unsigned char *cmd_in, *cmd_out;
        status_t res;
@@ -814,8 +814,12 @@
        int old_read_timeout;
        _ccid_descriptor *ccid_descriptor = get_ccid_descriptor(reader_index);
 
-       old_read_timeout = ccid_descriptor -> readTimeout;
-       ccid_descriptor -> readTimeout = 30*1000;       /* 30 seconds */
+       /* a value of 0 do not change the default read timeout */
+       if (timeout > 0)
+       {
+               old_read_timeout = ccid_descriptor -> readTimeout;
+               ccid_descriptor -> readTimeout = timeout;
+       }
 
 again:
        /* allocate buffers */
@@ -909,7 +913,9 @@
        free(cmd_out);
 
 end:
-       ccid_descriptor -> readTimeout = old_read_timeout;
+       if (timeout > 0)
+               ccid_descriptor -> readTimeout = old_read_timeout;
+
        return return_value;
 } /* Escape */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/src/commands.h 
new/ccid-1.4.14/src/commands.h
--- old/ccid-1.4.13/src/commands.h      2010-06-04 14:31:15.000000000 +0200
+++ new/ccid-1.4.14/src/commands.h      2013-11-25 18:08:07.000000000 +0100
@@ -18,7 +18,7 @@
 */
 
 /*
- * $Id: commands.h 4973 2010-06-01 09:43:29Z rousseau $
+ * $Id: commands.h 6783 2013-10-24 09:36:52Z rousseau $
  */
 
 #define SIZE_GET_SLOT_STATUS 10
@@ -39,7 +39,7 @@
 
 RESPONSECODE CmdEscape(unsigned int reader_index,
        const unsigned char TxBuffer[], unsigned int TxLength,
-       unsigned char RxBuffer[], unsigned int *RxLength);
+       unsigned char RxBuffer[], unsigned int *RxLength, unsigned int timeout);
 
 RESPONSECODE CmdPowerOff(unsigned int reader_index);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.4.13/src/ifdhandler.c 
new/ccid-1.4.14/src/ifdhandler.c
--- old/ccid-1.4.13/src/ifdhandler.c    2013-10-06 12:25:18.000000000 +0200
+++ new/ccid-1.4.14/src/ifdhandler.c    2013-11-25 18:08:07.000000000 +0100
@@ -17,7 +17,7 @@
        Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-/* $Id: ifdhandler.c 6753 2013-09-21 14:16:17Z rousseau $ */
+/* $Id: ifdhandler.c 6790 2013-11-25 10:02:35Z rousseau $ */
 
 #include <stdio.h>
 #include <string.h>
@@ -1182,8 +1182,9 @@
                        if (return_value != IFD_SUCCESS)
                        {
                                /* used by GemCore SIM PRO: no card is present 
*/
-                               get_ccid_descriptor(reader_index)->dwSlotStatus
-                                       = IFD_ICC_NOT_PRESENT;
+                               if (GEMCORESIMPRO == ccid_descriptor -> 
readerID)
+                                       
get_ccid_descriptor(reader_index)->dwSlotStatus
+                                               = IFD_ICC_NOT_PRESENT;
 
                                DEBUG_CRITICAL("PowerUp failed");
                                return_value = IFD_ERROR_POWER_ACTION;
@@ -1396,8 +1397,9 @@
                        unsigned int iBytesReturned;
 
                        iBytesReturned = RxLength;
-                       return_value = CmdEscape(reader_index, TxBuffer, 
TxLength, RxBuffer,
-                               &iBytesReturned);
+                       /* 30 seconds timeout for long commands */
+                       return_value = CmdEscape(reader_index, TxBuffer, 
TxLength,
+                               RxBuffer, &iBytesReturned, 30*1000);
                        *pdwBytesReturned = iBytesReturned;
                }
        }
@@ -1439,13 +1441,16 @@
                        iBytesReturned += sizeof(PCSC_TLV_STRUCTURE);
                }
 
-               /* We can always forward wLcdLayout */
-               pcsc_tlv -> tag = FEATURE_IFD_PIN_PROPERTIES;
-               pcsc_tlv -> length = 0x04; /* always 0x04 */
-               pcsc_tlv -> value = htonl(IOCTL_FEATURE_IFD_PIN_PROPERTIES);
+               /* Provide IFD_PIN_PROPERTIES only for pinpad readers */
+               if (ccid_descriptor -> bPINSupport)
+               {
+                       pcsc_tlv -> tag = FEATURE_IFD_PIN_PROPERTIES;
+                       pcsc_tlv -> length = 0x04; /* always 0x04 */
+                       pcsc_tlv -> value = 
htonl(IOCTL_FEATURE_IFD_PIN_PROPERTIES);
 
-               pcsc_tlv++;
-               iBytesReturned += sizeof(PCSC_TLV_STRUCTURE);
+                       pcsc_tlv++;
+                       iBytesReturned += sizeof(PCSC_TLV_STRUCTURE);
+               }
 
                if ((KOBIL_TRIBANK == readerID)
                        || (KOBIL_MIDENTITY_VISUAL == readerID))
@@ -1542,7 +1547,7 @@
                        unsigned int len;
 
                        len = sizeof(firmware);
-                       ret = CmdEscape(reader_index, cmd, sizeof(cmd), 
firmware, &len);
+                       ret = CmdEscape(reader_index, cmd, sizeof(cmd), 
firmware, &len, 0);
 
                        if (IFD_SUCCESS == ret)
                        {
@@ -1669,8 +1674,8 @@
 
                        /* we just transmit the buffer as a CCID Escape command 
*/
                        iBytesReturned = RxLength;
-                       return_value = CmdEscape(reader_index, TxBuffer, 
TxLength, RxBuffer,
-                               &iBytesReturned);
+                       return_value = CmdEscape(reader_index, TxBuffer, 
TxLength,
+                               RxBuffer, &iBytesReturned, 0);
                        *pdwBytesReturned = iBytesReturned;
                }
        }
@@ -1707,8 +1712,11 @@
 
        ccid_descriptor = get_ccid_descriptor(reader_index);
 
-       if (GEMCORESIMPRO == ccid_descriptor->readerID)
+       if ((GEMCORESIMPRO == ccid_descriptor->readerID)
+            && (ccid_descriptor->IFD_bcdDevice < 0x0200))
        {
+               /* GemCore SIM Pro firmware 2.00 and up features
+                * a full independant second slot */
                return_value = ccid_descriptor->dwSlotStatus;
                goto end;
        }
@@ -1791,7 +1799,7 @@
                if (! (LogLevel & DEBUG_LEVEL_PERIODIC))
                        LogLevel &= ~DEBUG_LEVEL_COMM;
 
-               ret = CmdEscape(reader_index, cmd, sizeof(cmd), res, 
&length_res);
+               ret = CmdEscape(reader_index, cmd, sizeof(cmd), res, 
&length_res, 0);
 
                /* set back the old LogLevel */
                LogLevel = oldLogLevel;

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to