Happy 1999, The second release of PC/SC is out for download. It includes an ICCSP for Cryptoflex cards (which will work with Multiflex) and support for Schlumberger, Litronic, and Towitoko readers. Please read the following README file for more information. Applications can now be written. New releases of PC/SC will not affect your application. At most you may have to call 3-5 functions at the beginning of your Application to init RPC in future releases. I have been telling people not to write apps on the older musclecard stuff. It is finally safe to write applications and future releases of PC/SC will not affect them much. PC/SC gives you a programming interface that is card and reader independant. ******************************************** Title : PC/SC for Linux Author : David Corcoran ([EMAIL PROTECTED]) License: See file docs/LICENSE GNU Public License Copyright (C) 1999 David Corcoran ********************************************* Please see INSTALL for installation instructions. Go to: http://www.smartcardsys.com and download document 6 for API programming documentation. docs - Documentation etc - Configuration Files pcsc-0.xx.xx - include - Common Include Files src - Source Files test - Test Application The installable modules are located under src/resmgr/modules/ for Reader Driver Modules and src/iccsp/ for ICCSC Service Provider Modules. This is my 2nd release of PC/SC for Linux. Future releases will occur more frequently as most of it is finished. This version of PC/SC includes the following: ICCSP ( Smartcard Service Provider ) for the Schlumberger Cryptoflex 4k Note: only file operations are completed here. The crypto is not implemented yet. Also Create File is not until I can get a list of TLV structure definitions ( which will be real soon ) Almost Complete Resource Manager IFD Drivers for the Litronic Argus 210, Schlumberger Reflex 62/64, and the Towitoko ChipDrive and ChipDrive Micro. Note: The Litronic and Towitoko Drivers have not yet been fully tested as of this release. This version of PC/SC allows the application writer to write an application and make little changes to it to work with the final version. All of the function calls will remain the same. There will be about 3 - 5 functions that will need to be called at the beginning of your application which will initialize the RPC when it is implemented. The current version has built the Smartcard Service Provider (ICCSP) as a shared object, and the Resource Manager as a shared object. The application links itself to both of these shared objects in the meantime until RPC separates the ICCSP and the Resource Manager. Since there can exist many different smartcards, different ICCSPs will be installed on the system. Future releases will virtualize the ICCSP classes and the appropriate class will be dynamically loaded when the application makes a request to the reader. SCARDTRACK will identify the ATR of the card in the requested reader and match it in the configuration file etc/cards.conf. There it will get the cooresponding library path, and load it. The application will then have to do the following: Initialize the RPC ( Not implemented yet ) Search for available Readers using RESOURCEQUERY.ListReaders() Connect to the Reader of choice using SCARD.AttachIFD() .. All of it's commands .. Disconnect from the Reader using SCARD.Detach() Close the RPC ( Not implemented yet ) Here are some Future Goals and changes that will be made: ******************************************************************** NONE OF THESE WILL AFFECT YOUR APPLICATION WRITING EXCEPT THE ADDITION OF RPC WHICH WILL NOT AFFECT IT TREMENDOUSLY - YOU MAY JUST HAVE TO ADD 3-5 LINES OF CODE AT THE BEGINNING OF YOUR APP. All fixed width strings will become String class. All Microsoft string arrays will be removed. msstr.c/msstr.h will be removed. Currently the code contains a mixture of fixed strings and String class strings. I have been slowly migrating to the String class but not all at once since that would break alot of stuff. All BYTE arrays and String Arrays will become vectors. You will notice a mixed use of vectors in the code already. I can't figure out why Microsoft would include the array size in some functions but not in others. RPC will be implemented. This will have the Resource Manager as a running process and ICCSP's will connect to it using Remote Procedure Calling. Much of the Cryptoflex ICCSP is not finished such as the cryptographic functions. These will be finished in later releases. A new layer of abstraction between SCARDCOMM and the IFD_Handler interface. This will allow me to control sharing better and factory multiple connections to the same reader. Currently sharing information is stored in the IFD_Handler itself. This is not too good. FileAccess, CHVerification, CryptProv, CryptHash, SCard, and CryptKey will all contain virtual abstract functions which will allow me to provide a seamless way of allowing me to dynamically connect different ICCSP libraries to functions included in the application. The IFD_Handlers will support exception throwing during card in/out events. This will notify the SCARDCOMM which will notify the appropriate ICCSP's connected to it so they can reset their file pointer back to root directory 3F00. Support for more readers. My next is the Schlumberger Reflex 72. I would like to see more support for PCMCIA readers also. *****************END OF WISH LIST*********************************** A quick diagram of the current PC/SC: Application -> ICCSP -> Resource Manager <--> IFD_Handler -> Reader PC/SC will be distributed under the GNU Public License until Final Releases when it will be distributed under LGPL. Future releases will occur more frequently like every 2-3 weeks until final releases. Please feel free to ask questions or make suggestions as you feel. Contact me at: [EMAIL PROTECTED] Thanks Dave ************************************************************* David Corcoran Internet Security/Smartcards Home: Purdue University 2252 US Highway 52 West Department of Computer Science West Lafayette, IN 47906 CERIAS/COAST Laboratory (765) 463-2455 http://www.cs.purdue.edu/homes/corcordt http://www.linuxnet.com ************************************************************* *************************************************************** Linux Smart Card Developers - M.U.S.C.L.E. (Movement for the Use of Smart Cards in a Linux Environment) http://www.linuxnet.com/smartcard/index.html ***************************************************************