In 2018, the Calypso Networks Association initiated the Eclipse Keyple project: an open source library facilitating the creation of ticketing terminals dealing with smart cards ( https://keyple.org & https://projects.eclipse.org/projects/iot.keyple/ ).
The Eclipse Keyple solution addresses 2 main objectives:
- be able to generically interface any smart card reader solution regardless of the embedded or distributed architecture,
- provide a basis for building library extensions for ticketing solutions, with a first extension dedicated to the Calypso card solution.
The provision of transport ticketing solutions is based on public tenders where it is easier to require the support of APIs rather than the use of a particular implementation. So, the Calypso Networks Association standardized various APIs for the design of ticketing terminals operating smartcards. These ticketing terminal APIs are thus implemented by the Eclipse Keyple libraries.
The Calypso Networks Association will continue to define these ticketing terminal APIs, but now proposes to host Java and C++ implementations of these interface definitions in an Eclipse project: Keypop.
The Eclipse Keypop project will host Java & C++ codes of the ticketing terminal APIs standardized by CNA. These interface codes must allow the implementation by any ticketing terminal solution operating smart cards, independently of the system architecture.
Eclipse Keypop:
- provides APIs to manage in a generic way any type of smart card reader solution. These APIs can then be extended for any kind of ticketing solution.
- includes high level APIs to conduct secure transactions with Calypso ticketing cards.
Eclipse Keypop open source interfaces will initially be available in Java and C++, designed on the same mutual Object-Oriented Model.
The 'Reader API' is a high-level interface used by terminal applications to operate smart card readers, it:
- provides the means to identify card readers and verify the presence of smart cards,
- offers the possibility to configure the observation of readers in order to be notified on card insertion or withdrawal,
- is the entry point to manage the selection of a smart card in a specific reader.
The 'Card API' defines the internal elements shared by the reader layer to implement specific ticketing card extension.
The 'Calypso API' is an extension of the Reader API which provides a high-level API standardizing the way to interact with Calypso cards.
- The Calypso Card API provides the means to select a target card and then perform a secure transaction with the selected target.
- The Calypso Crypto Legacy SAM API is the interface to manage security modules.
The first objective is to open to the community the coding of the ticketing terminal APIs. This may also faciliate the adoption of the reader API by ticketing solutions other than Calypso.
The Eclipse foundation also hosts the Keyple project which is a set of libraries implementing these APIs: it is logical to gather these projects in the same open source foundation.
The Keypop brand is owned by Calypso Networks Association which will transfer its property to the Eclipse Fondation.
All the code of the Keypop interfaces will be licensed under MIT in order to allow wide possibilities for library solutions that would implement these interfaces.
For summer 2023, the first release will provide full definitions of the Reader and Card APIs, and a partial definition of the Calypso API.
The Calypso API will at least support all the features of Prime Regular and Extended cards, and the Legacy SAM security module.
The next evolutions will be mainly extensions of the Calypso API.
- in the coming months, an evolution of the Calypso card API will bring the support of Prime PKI.
- next year, a crypto extension to the Calypso API should bring the management of the future OpenSAM security module.