Project roadmap

Current work

  • Java implementation
    • Refactoring of the Calypso API to support extensions of different kind of Calypso SAM solutions (current legacy SAM-C1, coming Open-SAM, or crypto libraries for PKI).
    • Support of the Calypso secure session based on asymmetric authentication (REV3.3 Prime PKI based on ECC).
  • C++ implementation
    • Porting current components updated with Keypop APIs.
    • Next addition of distributed mode support for building a Keyple Distributed C++ client (interacting with a Keyple Distributed Java server).

Long-term study

  • to provide a Hoplink extension (based on a high-level API on top of the Calypso Card API).
  • looking to migrate the Java implementation in Kotlin Multiplatform in order to handle iOS & some native target for ticketing application based on a generic code compliant with Java environment.

Evolutions log

Main improvements in Keyple after the version 2.0.0

Availability DateDescription
2023/11not supported
  • Keyple adopts the Eclipse Keypop API
    • The Keyple middleware is enhanced by the Eclipse Keypop project with new UML-compliant interfaces and APIs, offering new possibilities for the management of SAMs and PKI cards.
2023/04not supported
  • Specification of the JSON objects used by Keyple Distributed
    • It facilitates the implementation of non-Keyple based clients communicating with a Keyple Distributed server
    • e.g. the smart card readers of a terminal without Keyple software can be remotely controlled by a Keyple service.
2022/12in progress
  • Support of Calypso Prime Extended
    • Capability to operate a Calypso secure session in confidential mode and to support intermediate authentications
  • SAM operation improvements
    • Defintion of an API to operate standalone SAM transaction
    • Support of the PSO data signature feature: signature generation & verification. Possibility to operate a signature operation through the Card Transaction or a SAM Transaction.
  • Support of the full card command set of Calypso Prime Regular
    • For the Get Data command, addition of the mode 'EF list' & 'traceability',
    • Binary files' access for read, write, & update,
    • Read Record Multiple, Search Record Multiple, Increase Multiple & Decrease Multiple
    • Pre-personalization : possibility to personalized keyset with Change Key

Global evolutions of Keyple until version 2.0.0 (obsolete)

Until the version 2.0.0 of Keyple, the components of Keyple Java or Keyple C++ were released at the same time with the same version number. The porting in C++ of Keyple Java is based on the same Object-Oriented Model. The Keyple C++ implementation provides the same core & Calypso feature, but the support of the distributed module isn’t part of the scope, and for reader integration, only the PC/SC reader is provided.

  • Calypso terminal compliance
  • Removal of dependencies between Keyple components (Core, Calypso extension, and specific plugins): all components are released with their own version number and could evolve separately.
    • Until the version 1.0.0, the source code of all the Keyple Java components was hosted in a single repository: It was the same for Keyple C++ components hosted in For the version 1.0.0 and below, there were strong dependencies between the Keyple components which had all to be released in the same version number.
    • To facilitate the evolution and the maintenance, the version 2.0.0 proposes a full reorganization of the code. All the components are split in different repositories in order to allow them to evolve independently. The public interfaces are also separated to the specific implementations: the repositories are dedicated to host API or library implementation.
    • The Keyple Java components are managed through 16 repositories.
  • The API for plugin implementation and for distributed architecture configuration have been simplified
  • Core - simplifications of the low-level Plugin API dedicated for plugin developers.
  • Remote Plugin - new stable & simpler version
Main unsolved issue: the versioning of the different components (Core, Calypso extension, and specific plugins) is still linked: to manage transitive importation the artifact are built with the same version reference.
  • Android plugins - NFC & OMAPI plugins optimized for all Android versions
  • Calypso
    • simplified high-level API to parse the Portable Object APDU responses, & recover the data through a card image.
    • addition of the support of the PO PIN feature, PO Stored Value transaction, & the SAM lock
  • Core - Observable Reader interface evolution to improve the support of smart card reader solutions.
  • Calypso - simplified high-level API to build the Portable Object APDU commands (PO data still recovered through a lower API managing APDI response parser)
0.7.02019/07-initial public java implementation
  • Calypso - low-level API to manage the common Calypso features (secure session for authentication, read and write commands of EF records)