Project roadmap

Current work

  • Java implementation
    • supply a Calypso security extension library to manage the Calypso OpenSAM security module
  • C++ implementation
    • Porting current components updated with Keypop APIs.
    • Next for the future, 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

Major improvements in Keyple after the version 2.0.0

Availability DateDescription
JavaC++
2024/12
  • Keyple-less distributed client design support (Keyple dependency-free application connected to a Keyple Distributed server): 2 Kotlin MultiPlatform libraries that can be compiled for any environment, artifacts for the Java runtime environment and native artifacts for Windows, Linux, macOS, Android & iOS systems.
    • library for managing the JSON Keyple Distributed protocol
    • library for interfacing a contactless reader to any device: NFC reader on Android or iOS mobile, or PC/SC reader on PC.
2024/04in progress (scheduled Q1/2025)
  • Support of Calypso Prime PKI
    • Capability to manage a simple asymmetric authentication of a Calypso card without involving a SAM (REV3.3 Prime PKI based on ECC)
2023/11in progress (scheduled Q1/2025)
  • Adoption of the Eclipse Keypop API
    • The Keyple middleware is enhanced by the Eclipse Keypop project with new UML-compliant interfaces and APIs.
    • The Keyple Calypso Card library can be extended with other libraries to handle SAM security features or PKI cryptography.
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 (scheduled Q1/2025)
  • Support of Calypso Prime Extended
    • Capability to operate a Calypso secure session in confidential mode and to support intermediate authentications
2022/062022/11
  • SAM operation improvements
    • Definition 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.
2022/022022/08
  • 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.

ReleaseJavaC++Description
2.0.02021/102022/07
  • 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: https://github.com/eclipse-keyple/keyple-java. It was the same for Keyple C++ components hosted in https://github.com/eclipse-keyple/keyple-cpp. 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
1.0.02020/12dropped
  • 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.
0.9.02020/092021/01
  • 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
0.8.12020/012020/05
  • 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)