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
final for 2021/01
|2.0.0||2021/03||Removal of dependencies between components (Core, Calypso extension, and specific plugins): each component will be released with its own version and a separate life cycle.|
The last release of Keyple Java is version 1.0.0 (https://github.com/eclipse/keyple-java). For Keyple C++, the last release is still in version 0.8.1 (https://github.com/eclipse/keyple-cpp), the version 0.9.0 will be released first week of 2021.
Main unsolved issue for the release 1.0.0: the versioning of the different components (Core, Calypso extension, and specific plugins) will still be linked: to manage transitive importation the artifact are build with the same version reference.
The version 2.0.0 will provide a better stability by supporting separate life cycle and different versioning for the Keyple components. Then the hosting of source for the different component will be split separate git repositories.
The 'Keyple Calypso extension' will be completed with additional functionalities : Key & PIN personalization, REV3.2 confidential session, REV1/REV2 product specific supports.