Hello,
I uploaded to [1] new versions of pcsc-lite and libccid. They have
many and important changes (in particular for pcsc-lite). I would like
to test these versions before I release them as stable. They work for
me and should work for you too.
I will not detail any specific change here but do not hesitate to ask
more for information.
Regards
Changes for libccid:
1.3.12 BETA - 10 Feb 2010, Ludovic Rousseau
- add support of Todos AGM2 CCID, Cherry SmartTerminal XX7X, Smart
SBV280, Ask CPL108, German Privacy Foundation Crypto Stick v1.2
- better support of Dell keyboard
- better support of multislot readers (like the GemCore SIM Pro)
- better support of SCM SCR3310
- 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 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
- some minor bugs removed
Changes for pcsc-lite:
pcsc-lite-2.0.0 BETA: Ludovic Rousseau
10 Feb 2010
- redesign the client/server communication:
* no more shared memory used (allow pcscd and libpcsclite1.so to be on
different computer and talk over a network)
* no more difference between short and extended APDU
* no more use of a /var/run/pcscd/pcscd.events/ directory. events are
sent through the socket
* simpler command format between client and server
The side effect is that you are not able to mix an old pcscd with a
new libpcsclite1.so or the reverse. SCardEstablishContext() will fail
unless you update both sides of the communication.
- Use lists instead of fixed size arrays to store handles.
It is now possible to have:
- 200 simultaneous PC/SC clients instead of 16
- 200 SCardConnect per client instead of 16
- 200 clients per reader instead of 16
The default value of 200 can be changed by giving an argument to pcscd
--max-thread --max-card-handle-per-thread --max-card-handle-per-reader
Thanks to Jean-Luc Giraud for the big patch
- Make SCardReconnect(), SCardStatus() and SCardTransmit() block instead
of returning SCARD_E_SHARING_VIOLATION immediately. These functions
will then behave like on Windows.
This can happen if these functions are called when the reader is
locked by a PCSC transaction
(SCardBeginTransaction/SCardEndTransaction).
You can define the environment variable PCSCLITE_NO_BLOCKING to use
the old behavior.
Thanks to Jean-Luc Giraud for the patch.
http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0041.html
- SCardEstablishContext(): try to start the pcscd daemon if not already
running.
. pcscd will suicide itself after 60 seconds of inactivity if it is
started using --auto-exit. This is the default behavior when pcscd is
started by libpcsclite
. Set PCSCLITE_PCSCD_ARGS with the argument you want to pass to pcscd in
autostart Only one argument is passed. The space character is not a
separator. example: export PCSCLITE_PCSCD_ARGS=-dfa
- SCardListReaders(): can use SCARD_AUTOALLOCATE
- SCardGetAttrib(): return SCARD_E_INSUFFICIENT_BUFFER if the driver
returns IFD_ERROR_INSUFFICIENT_BUFFER
. add support of SCARD_ATTR_DEVICE_FRIENDLY_NAME as it is better
implemented in pcscd (it knows the friendly name)
- SCardGetStatusChange(): Calling with cReaders == 0 will now just
return SCARD_S_SUCCESS
. Use the special reader name "\\?PnP?\Notification" to wait for a
reader event notification
- SCardTransmit(): do not limit the minimum size of an APDU to 4 bytes.
non ISO 7816-4 compliant cards (like Mifare DESFIRE) may use shorter
commands
- SCardStatus(): returns SCARD_E_SHARING_VIOLATION if the reader is
already used More conform to Windows
- PCSC/reader.h: update sruct PIN_PROPERTIES_STRUCTURE to be conform
with Revision 2.02.06, April 2009 of PCSCv2 part 10 Fields
wLcdMaxCharacters and wLcdMaxLines have been removed
. rename FEATURE_MCT_READERDIRECT in FEATURE_MCT_READER_DIRECT to be
conform with ch. 2.3 of PCSC v2 part 10
- SCardControl() return SCARD_E_UNSUPPORTED_FEATURE if the driver
returned IFD_ERROR_NOT_SUPPORTED or IFD_NOT_SUPPORTED This is used to
separate an unsupported value of ControlCode from a general error
- Use the standard --sysconfdir=DIR ($prefix/etc by default) instead of
--enable-confdir=DIR for defining the directory containing reader.conf
- remove SCF support (PC/SC over Smart Card Framework). I never used
this feature and SCF is now dead and replaced by JSR 268
(javax.smartcardio)
- Better handling of PCSCLITE_STATIC_DRIVER as can be used on platforms
using <B5>Clinux (without dynamic loader). This is used to statically
link the reader driver to pcscd. Since the link is static you must
define the IFDHandler API version at compilation time. Either define
IFDHANDLERv1, IFDHANDLERv2 or IFDHANDLERv3
- Use dynamic instead of static allocation for the driver library
filename. The filename is no more limited to 100 characters.
Closes: [#312332] MAX_LIBNAME too short?
- force the return codes SCARD_* to be long since the SCard* functions
return a LONG type
- some other minor improvements and bug corrections
[1] http://ludovic.rousseau.free.fr/softwares/pcsc-lite/
--
Dr. Ludovic Rousseau
_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle