Eclipse Keyple®

Eclipse Keyple® is an open source middleware to facilitate the implementation of terminal processing operating smart card readers, and to defined advanced secure ticketing transaction.

Keyple implements the high-level ticketing terminal APIs hosted in Eclipse Keypop®: 'Reader API', 'Card API', 'Calypso Card API', 'Calypso Crypto Symmetric API', and 'Calypso Legacy SAM API'.

The Keyple Core Libraries provides a universal service 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 Keyple Core 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 Libraries 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 model.

The Keyple Java implementation includes 18 components:

  • Core's components to manage smart card reader solutions and select secure element: 'Service Lib', 'Plugin API', 'Common API', 'Util Lib', and 'Service Resource Lib',
  • Distributed System's components to operate remote readers as localy: 'Distributed Remote API', 'Distributed Remote Lib', 'Distributed Local API', 'Distributed Local Lib', and 'Distributed Network Lib',
  • Card Extensions components:
    • 'Calypso Card Lib' to operate secure transaction with Calypso card,
    • 'Calypso Legacy SAM Lib' to manage Calypso legacy SAM,
    • 'Generic Card Lib' to exchange APDU commands with any kind of smart card solution.
  • Reader Plugin Extensions' components:
    • 'Android NFC Plugin Lib': the library to interface the native NFC contactless readers on Android device,
    • 'Android OMAPI Plugin Lib': the library to interface the OMAPI contacts readers on Android device,
    • 'PC/SC Plugin Lib': the library to interface PC/SC readers to the Keyple Core,
    • 'Card Resource Plugin Lib'
    • 'Stub Plugin Lib': a tool to emulate readers and cards to operate Keyple without hardware elements.

The Keyple C++ implementation includes currentely 9 components similar to those in Keyple Java, but the distriubed system feature isn't yet supported, and only PC/SC & stub plugins are provided.

After Keyple 2.0, the complete list of component releases is published on this page

Industry Collaborations
Latest Releases

From 2022-09-07 to 2019-09-18

Name Date Review
2.0.0 (C++ 22/07 Keyple) 2022-09-07
2.0.0 (Java 21/10) 2021-10-06
0.9.0 (Cpp 21/01) 2021-01-26
1.0.0 (Java 20/12) 2020-12-16
0.9.0 (Java 20/09) 2020-09-11
0.8.1 (Cpp 20/05) 2020-05-25
0.8.1 (Java 20/05) 2020-05-15
0.8.0 (Java 20/01) 2020-01-28
0.7.0 (Java 19/07) 2019-09-18
Eclipse Distribution License 1.0 (BSD)

The content of this open source project is received and distributed under the license(s) listed above. Some source code and binaries may be distributed under different terms. Specific license information is provided in file headers and in NOTICE files distributed with the project's binaries.

Active Member Companies

Member companies supporting this project over the last three months.

    Contribution Activity
    Commits on this project (last 12 months)