Eclipse Keyple is an open source framework to facilitate the implementation of terminal processing operating smart card readers, and to defined advanced secure ticketing transaction.
The Keyple Core API provides a universal interface to manage smart card readers:
- The solution is able to handle any smart card reader solutions: standard (contacts/contactless PC/SC, NFC, OMAPI) or proprietary in a generic way.
- It’s also compatible with any terminal architecture: local or remote, for any kind of terminals: mobile, embedded or server. Remote smart card readers could be managed as local readers in a transparent way.
The Core API can be extended with command sets of specific smart card solutions in order to define advanced secure transactions. The project hosts a first extension to support the Calypso ticketing solution.
The Keyple Calypso API provides a high-level interface to implement fast and secure contactless ticketing transactions based on the Calypso standard.
- The settings of the Calypso cards & SAM APDU commands are automatically generated according to the functional operations defined by the developers.
- Cards & SAM commands are transmitted in an optimized grouping to limit network exchanges in case of distributed architecture.
Two implementations are currentely proposed for Java (dependency Java SE 6 and later, Android 4.4 or later) and for C++ (dependency C++ 11). Both implementations are based on the same oriented-object API.
- The components of Keyple Java are:
- 'Keyple Core': the generic interface to manage smart card reader solutions and select secure element.
- 'Calypso Extension': the library to define transaction with Calypso card.
- 'stub plugin': a tool to emulate readers and cards to operate Keyple without hardware elemnts.
- 'PC/SC plugin': the library to interface PC/SC readers to the Keyple Core.
- 'Android NFC plugin': the library to interface the native NFC contactless readers on Android device.
- 'OMAPI plugin': the library to interface the OMAPI contacts readers on Android device.
- 'Remote SE plugin': a first prototype of plugin to operate remote readers as localy.
- The components of Keyple C++ are:
- The Keyple Cpp is currently limited to support of the 'Calypso Core', 'Calypso Extension', the 'stub plugin', and the ‘PC/SC plugin' (based on the same API as for Java compnents). The 'Remote SE plugin' client will be added for the version 1.0.0.
When a Keyple Java version is released, the porting of Keyple C++ is published two months later.
initial public java implementation
|0.9.0||2020/09||alpha for 2020/10||
alpha for 2020/10
final for 2020/11
The C++ porting of Keyple 0.9 is in progress, a first alpha will be available during October, and the final 0.9 release in November 2020.
The version 1.0.0 alpha 1 of Keyple Java is planned for October 2020:
The main objectives of this version are:
- a simpler and reliable Remote SE plugin solution to operate remote readers independently to the system architecture.
- for the 'Keyple Calypso extension': to complete the functionalities to propose the full set of Calypso PO features (Key & PIN personalization, REV3.2 confidential session, REV1/REV2 product specific supports),
- for the 'Keyple Core module': some simplifications on the Plugin API dedicated for plugin developers.
Starting from the version 1.0, all independent components of Keyple Java will be hosted in separate git repositories, and will follow their own versioning.
Eclipse Keyple guides:
- The raw Readme files of the Java and the C++ repositories present the architecture of the API and startup guides.
- The User Guide of the API 0.9 of Eclipse Keyple
- The User Guide of the API 1.0.0 of Eclipse Keyple (reorganized packages to limit dependencies)
- Keyple Core - Application API : for the development of terminal application interfaced with smartcard readers
- Keyple Core - Card API: for the development of smart catd solution library.
- Keyple Core - Plugin API: for the development of plugin of samrtcard reader
- Keyple Calypso - Transaction API: the high-level interface to operate Calypso Card processing