
Gemplus GemPC 410 and GemPC 430 IFD Handler
===========================================

This package provides the source code for the GemPC 410 (serial) and
GemPC 430 (usb) smart card readers PC/SC ifd handler.

Both readers use a GemCore chip and the same set of commands. Only the
low level transport layer is different.

The GemPC 410 driver is licenced under the GNU General Public Licence
and is mostly written by Ludovic Rousseau <ludovic.rousseau@free.fr>

The GemPC 430 driver is licenced under the a BSD style licence
and is mostly written by Jean-Luc Giraud <jlgiraud@mac.com>


See README.410 for GemPC410 specific comments.


Authors:
========

- David Corcoran for the original headers and empty ifdhandler.c file
- Jean-Luc Giraud for the main part of GemPC430/ and half of common/
- Ludovic Rousseau for the main part of GemPC410/ and half of common/


Supported readers:
==================

- GemPC 410 (v1.21)
- GemPC 430 (v1.04)
- IBM 410p (v1.21)
- VISA and American Express 415 (v???)

the number in () is the GemCore version as seen in the logs generated by
the driver. Like in "(GemPC430) OS string: GemUsb-R1.04-GM" or
"(GemPC410) OS string: GemCore-R1.21-I"


Licences:
=========

The files in GemPC410/ are under GNU General Public Licence.

The files in GemPC430/ are under a BSD-like licence (except main.c which
is under GPL but is not needed to build the driver).

The files in common/ are under a double licence BSD-like and GNU General
Public Licence. except the files ifdhandler.c, ifdhandler.h and
pcscdefines.h which are originally written by David Corcoran and are
under the BSD-like licence.

That means that the GemPC 410 driver is under GNU General Public
Licence, and that the GemPC 430 driver is the BSD-like licence or the
GNU General Public Licence at your choice.


History:
========

0.6.1 - 11 Mar 2002, Ludovic Rousseau
    - GemPC410/gbpserial.c:
      . modified again the port BAUDS setting during open().

0.6.0 - 7 Mar 2002, Ludovic Rousseau
    - GemPC410/gbpserial.c:
      . modified the port BAUDS setting during open().
      . Changed the timeout delay from 2 to 10 seconds
    - common/ifdhandler.c: IFDHTransmitToICC: now manages case 1 APDU
      (only CLA, INS, P1, P2) as an outgoing APDU (CLA, INS, P1, P2, 0)
    - add a debug level: PERIODIC for... periodic calls. Do not define
      DEBUG_LEVEL_PERIODIC in GemPC4?0/Config.h if you don't want to see
      periodic logs from GCCmdCardStatus(), IFDHSetCapabilities() and
      IFDHICCPresence()
    - add a note about support of the IBM-410p reader.

0.5.10 - 3 Mar 2002, Ludovic Rousseau, Jean-Luc Giraud
    - fix bug with some kind of Cyberflex Access cards:
      . disable PPS management
      . the reader stays at 9600 bauds in all cases
    - fix bug when more than 252 output bytes are expected and less than
      that are available (which is the case when the card sends an error)
    - modify install: rule to include release version number in
      filename, create symlinks, remove execution right on the .so lib
    - README.410: Add a script to create the /dev/pcsc/? links
    - GemPC430/GemPC430Utils.c, GemPC410/GemPC410Utils.c,
      common/GCCmds.c: guarantee that the os_string is \0 terminated
    - GemPC410/resetGemPC410.c, GemPC410/gbpserial.c: use
      cfgetospeed()/cfsetospeed() instead of accessing directly the
      termios structure
      . the driver now works under OpenBSD
    - common/ifdhandler.c: also log APDU results

0.5.9 - 30 Nov 2001, Jean-Luc Giraud
    - fix bug in GCUtils.c/gemcore_ISO_EXCHANGE_processing()
    - added ProjectBuilder folder for MacOS X

0.5.8 - 27 Nov 2001, Ludovic Rousseau
    - MANIFEST: do not contain non existing files
        include create_distrib.sh
    - create_distrib.sh: exit in case of error
        mkdir creates the parents directories if needed, 

0.5.7 - 27 Nov 2001, Ludovic Rousseau
    - GemPC430/usblinux.c: crashed with two readers and no root
      priviledges
    - GemPC410/main.c: test code now support ISO 7816 case 1, 2, 3 and 4
      using Jean-Luc ReaderTest Java applet (not included here)
    - common/GCUtils.c: add support for IFD_ICC_NOT_PRESENT GemCore
      error status
    - GemPC410/gbpserial.c: prepare to support multi serial readers
    - GemPC430/usbserial_mosx.c: prepare to support multi USB readers
    - GemPC410/gbpserial.c: use explain_gbp() to log a descriptive GBP
      level error message
    - MANIFEST: add README.410
    - GemPC410/GemPC410Utils.c: log "OS string" at CRITICAL level to
      always have it the logs
    - GemPC430/GemPC430Utils.c: log "OS string" at CRITICAL level to
      always have it the logs
    - common/ifdhandler.c: Add APDU logging
    - common/GCdebug.h: add DEBUG_COMM3() and DEBUG_CRITICAL3() which is
      typically used to log error messages like "blabla /foo/bar: file not
      found"

0.5.6 - 15 Nov 2001, Ludovic Rousseau
    - all: migrate the type return value from RESPONSECODE to ifd_t,
      status_t or gcore_t
    - GCCmds.c: migrate from low level GCSendCommand() use to higer
      level and simpler GCMakeCommand()
    - libGemPC410 now supports long commands

0.5.5 - 7 Nov 2001, Ludovic Rousseau
    include Jean-Luc modifications to add a new protocol layer
    patch GemPC410 to support this layer
    include patches from the Debian package

0.5.4 - 28 Oct 2001, Ludovic Rousseau
    first public release
    I clarified the licences

0.5.3 - 26 Oct 2001, Ludovic Rousseau
    GemPC 410 and GemPC 430 compiles and runs

0.5.2bis - 23 Oct 2001, Jean-Luc Giraud
    Jean-Luc starts to dispatch ifdhandler.c

0.5.2 - 22 Oct 2001, Ludovic Rousseau
    first release containing GemPC410/ GemPC430/ and common/

0.5 - 14 Oct 2001, Jean-Luc Giraud
    complete release containing the code for the GemPC 430

?.? - 25 Sep 2001, Jean-Luc Giraud
    release of ifdhandler.{c,h} and GemCore.h


$Id: README,v 1.13 2002/03/10 23:14:50 rousseau Exp $

