- Master - Keyple Java 20/12
- Master - Keyple Java 20/09
- Patch - Keyple Java 20/05
- Master - Keyple Java 20/01
- Master - Keyple Java 19/07
Release train components:
- keyple-java-core 1.0
- keyple-java-distributed-local 1.0
- keyple-java-distributed-network 1.0
- keyple-java-distributed-remote 1.0
- keyple-java-calypso 1.0
- keyple-java-plugin-pcsc 1.0
- keyple-java-plugin-stub 1.0
- keyple-android-plugin-android-nfc 1.0
- keyple-android-plugin-android-omapi 1.0
- KEYP-346,370 : reorganization and renaming of many packages and classes, all "SE" have been changed to "Card".
- KEYP-305 : improved plugin/reader API with register/unregister mechanisms, simplified settings
- KEYP-324 : revised observation management in the Reader API
- KEYP-332 : removed unused TIMEOUT events entries
- KEYP-337 : added exception handlers management for observable plugins and readers
- KEYP-360 : improved accessibility logic in the reader API
- various other refactorings and improvements
- fixed issues raised by Sonarqube
- improved Javadoc
- KEYP-41 : add first version of "Keyple Distributed Local" component as part of the "Keyple Distributed" solution for distributed systems.
- KEYP-41 : add first version of "Keyple Distributed Network" component as part of the "Keyple Distributed" solution for distributed systems.
- KEYP-41 : add first version of "Keyple Distributed Remote" component as part of the "Keyple Distributed" solution for distributed systems.
- KEYP-346,370 : reorganization and renaming of many packages and classes, all "SE" have been changed to "Card", removed ProxyElement internal interface.
- KEYP-123 : added new method prepareSetCounter in PoTransaction
- various other refactorings and improvements
- fixed issues raised by Sonarqube
- improved Javadoc
- KEYP-305 : update observation mechanisms, added specific settings
- KEYP-336 : revised protocol identification management
- KEYP-361 : improved OS specific constraints (MacOS, Windows, Linux)
- various other refactorings and improvements
- KEYP-305 : update observation mechanisms
- various other refactorings and improvements
- KEYP-305 : update observation mechanisms, added specific settings
- KEYP-336 : revised protocol identification management
- various other refactorings and improvements
- KEYP-336 : revised protocol identification management
- various other refactorings and improvements
Release train components:
- keyple-java-core 0.9
- keyple-java-calypso 0.9
- keyple-java-plugin-pcsc 0.9
- keyple-java-plugin-stub 0.9
- keyple-java-plugin-remotese 0.9
- keyple-android-plugin-android-nfc 0.9
- keyple-android-plugin-android-omapi 0.9
- KEYP-320 : ReaderPlugin and SeReader no longer implement the Comparable interface
- KEYP-319 : added a method finalizeSeProcessing to ObservableReader to handle abnormal transaction terminations
- KEYP-318 : added a direct access to the plugin and reader that generated a ReaderEvent
- KEYP-317 : changed ChannelControl access
- KEYP-316 : added a new method (prepareReleaseSeChannel) to control the channel during selection
- KEYP-314 : reviewed the channel control management: notifySeProcessed is removed
- KEYP-312 : restricting access to methods of the reader API that are not used by the plugins.
- KEYP-108, 213 : improved plugin lifecycle management (SeProxyService, PluginFactory)
- KEYP-145 : improved command builders and parsers to manage erroneous status word with dedicated exceptions
- KEYP-154,295 : improved exceptions management, all exceptions are now runtime exceptions
- KEYP-243,250,251 : improvement of the classes from the selection package (deep refactoring and simplification)
- KEYP-245 : improved isolation in the plugin API
- KEYP-202, 241, 242 : fixed misused Set fields (changed into List), simplified ProxyReader API (less methods)
- KEYP-225 : SeResource constructor is now public
- fixed a comparison issue in the Tag class
- various other refactorings and improvements
- fixed many issues raised by Sonarqube
- KEYP-314 : simplified the channel control management: a new prepareReleasePoChannel command is added to PoTransaction
- KEYP-306 : added a default value to SeProtocol in PoSelector and SamSelector (specifying it is now optional)
- KEYP-311 : added the possibility to unlock the SAM when it is selected
- KEYP-62 : added Invalidate and Rehabilitate commands
- KEYP-96 : added Stored Value management commands
- KEYP-23 : added PIN management commands
- KEYP-101 : enhanced CalypsoPo with card data (updated during the transaction)
- KEYP-102 : update the content of CalypsoPo during selection
- KEYP-103,113 : extensive reworking of the PoTransaction class (split into 3 classes). The data received from the PO are now made available in CalypsoPo instead of the previous parser system.
- KEYP-134,216 : extensive reworking of the selection classes. The data received from the PO are now made available in CalypsoPo.
- KEYP-145 : extensive reworking of command builders and parsers
- KEYP-154 : improved exceptions management, add many exception cases
- KEYP-290 : fixed NPE when opening a secure session without reading with rev 2.4 PO
- KEYP-292 : make CalypsoPo and CalypsoSam classes extendable
- KEYP-225 : PoResource and SamResource classes are removed, their usage is replaced by SeResource<CalypsoPo/CalypsoSam>
- KEYP-306 : SE protocol is now optional when building PoSelector and SamSelector. Its default value is ISO_14443_4 and ISO7816_3 respectively.
- updated with the new keyple-java-core API
- various other refactorings and improvements
- fixed many issues raised by Sonarqube
- any parameters can be set in the stub reader
- Conversion of the Java code to Kotlin
- Removal of Supports Library usage
- AndroidNFC plugin now support Android 9.0+ remove SE detection
- Updated versions of Android sdk support and dependencies
- Various improvements of Android NFC example application
- Conversion of the Java code to Kotlin
- Removal of Supports Library usage
- OMAPI compliance improvement to the SIM Alliance
- OMAPI implementation and to the Android 9.0 native OMAPI implementation.
- OMAPI Plugin may now support NEXT instruction on SimAlliance OMAPI 3+
- Updated versions of Android sdk support and dependencies
- Various improvements of OMAPI's example application
Release train components:
- keyple-java-core 0.8.1
- keyple-java-calypso 0.8.1
- keyple-java-plugin-pcsc 0.8.1
- keyple-java-plugin-stub 0.8.1
- keyple-java-plugin-remotese 0.8.1
- keyple-android-plugin-nfc 0.8.1
- keyple-android-plugin-omapi 0.8.1
- KEYP-187 : ReaderPoolPlugin#allocate throw a KeypleAllocationReaderException if allocation fails for technical issue, ReaderPoolPlugin#allocate throw a KeypleAllocationNoReaderAvailableException if no reader is available
- KEYP-192 : Reorganize plugin and reader abstract classes
- KEYP-195 : Ensure readers list is thread safe
- KEYP-187 : SamResourceManager throw a CalypsoNoSamResourceAvailableException if unable to allocate a Sam Resource
- KEYP-189 : SamResourceManager : retry mechanism is now parametrized - new constructor added
- none
- KEYP-207 : add KeypleAllocationReaderException to stub plugin
- KEYP-190 : fix NullPointerException on RemoteMethodTxEngine when remoteMethodTx is null
- KEYP-203 : fix ConcurrentModificationException while disconnecting/connecting readers
- KEYP-204 : add 'error' field in Keyple Dto, reject dto response if id does not match with request
- KEYP-208 : fix ClassCastException in VirtualReaderImpl
- KEYP-212 : allow users to define their own ExecutorService for async task - new constructor for MasterAPI and SlaveAPI
- KEYP-212 : add a createdDate in virtual reader session
- KEYP-219 : ensure load balancing works properly : fix sessionId in RmPoolReleaseTx, RmPoolAllocateExecutor use node Id
- none
- KEYP-195 : update init readers method to use ConcurrentSkipListSet
Release train components:
- keyple-java-core 0.8
- keyple-java-calypso 0.8
- keyple-java-plugin-pcsc 0.8
- keyple-java-plugin-stub 0.8
- keyple-java-plugin-remotese 0.8
- keyple-android-plugin-nfc 0.8
- keyple-android-plugin-omapi 0.8
- Se Proxy API
- Plugins need to be registered to the SeProxyService with an PluginFactory with a unique plugin name
- Reader monitoring
- Redesign of the abstract classes inherited by plugin objects
- Fix for a clean stop of the observation when removing a reader
- Secure Element monitoring
- Add a new API to start/stop the SE Detection methods in the ObservableReader interface
- Redesign of the abstract classes inherited by reader objects
- Abstract Local Reader should now declare a behaviour for each of their state via with AbstractObservableState
- Added 4 ObservableState : WaitForSeInsertion, WaitForSeProcessing, WaitForSeRemoval, WaitForStartDetect
- Added MonitorigingJob objects to launch a background task in a AbstractObservableState
- SE_REMOVAL event renamed SE_REMOVED
- NoStackTraceThrowable exception removed
- Secure Element logical and physical channels management
- Deletion of the SeRequestSet class replaced by Set
- Changes in the management of card channels: the closure of the channel is no longer attached to a SeRequest but operated independently
- ChannelState renamed ChannelControl
- Update of the ProxyReader interface: addition of variants of the "transmit" method with control of the multi-request mode and channel closing
- Update of the DefaultSelectionRequest and DefaultSelectionsResponse classes
- Addition of the MultiSeRequestProcessing enum used in the "transmit" method to indicate the procedure to be followed during the selection phase
- Update of the selection and transaction classes to take the new channel management into account
- Addition of SAM key management commands, & PO Write Record command.
- Fixed a bug in the parser of the response to Select File
- Added PcscPluginFactory to register plugin to SeProxy
- Added PcscPlugin interface, make PcscPluginImpl package protected
- Added PcscReader interface, make PcscReaderImpl package protected
- Added a work around the stop of the smart card service under Windows has been made specific to this platform by detecting the OS
- Added a specific behaviour for card detection on MacOs
- Added StubPluginFactory and StubPoolPluginFactory to register plugin to SeProxy
- StubPlugin and StubPoolPlugin should be instantiated via the factory with a unique plugin name
- Added StubPlugin/StubPoolPlugin interface, make StubPluginImpl/StubPoolPluginImpl package protected
- Added StubReader interface, make StubReaderImpl package protected
- Added VirtualObservableReader interface for Remote Se Observable Reader
- Added a DefaultTransportDto with basic behaviour
- RemoteMethod renamed to RemoteMethodName
- RemoteSePlugin should be instantiated via the factory with a unique plugin name
- RemoteSePoolPlugin should be instantiated via the factory with a unique plugin name
- Added AndroidNfcPluginFactory to register plugin to SeProxy
- Added RemoteSePlugin interface, make RemoteSePluginImpl package protected
- Added VirtualReader interface, make RemoteSeReaderImpl package protected
- Added RemoteSePoolPlugin interface, make RemoteSePoolPluginImpl package protected
- Added AndroidNfcPluginFactory to register plugin to SeProxy
- Added AndroidNfcPlugin interface, make AndroidNfcPluginImpl package protected
- Added AndroidNfcReader interface, make AndroidNfcReaderImpl package protected
- Added a Se Removal detection mecanism via CardAbsentPingMonitoringJob in WaitForSeRemoval state
- Added AndroidOmapiPluginFactory to register plugin to SeProxy
- Added AndroidOmapiPlugin interface, make AndroidOmapiPluginImpl package protected
- Added AndroidOmapiReader interface, make AndroidOmapiReaderImpl package protected
- Added Gradle wrapper in java root project and android root project
- Added Gradle Keyple tasks in root project to install/remove all artefacts at once: installAll, removeAll
- CI : move jenkins and docker files to a new repository : https://github.com/eclipse/keyple-ops
Release train components:
- keyple-java-core 0.7
- keyple-java-calypso 0.7
- keyple-java-plugin-pcsc 0.7
- keyple-java-plugin-stub 0.7
- keyple-java-plugin-remotese 0.7
- keyple-android-plugin-nfc 0.7
- keyple-android-plugin-omapi 0.7
- SE Proxy API: generic universal interface to interface a smartcard reader; transmission of grouped APDU commands; observable reader notification
- Transaction API: management of an explicit application selection on a reader; setting of a default selection operation on an observed reader
- Known issues/limits
- Allows the cast of ReaderPlugin & SeReader native classes: could cause a misusage of the API by ticketing application. A ReaderPlugin factory would be necessary for the setting of plugins to the SE Proxy Service.
- The support for non-ISO Secure Element (memory cards) is limited.
- Selecting an already selected SE raises a null pointer exception (#73). The re-selection checking has weaknesses (#51). A time-based mechanism should be added to avoid multiple selections.
- Low level API: support of the main Calypso PO & SAM commands
- Transaction API; management a Calypso secure session
- Known issues/limits
- the Calypso PO test in contact mode has yet to be performed
- PO session has to be improved with automatic setting and security counter measures.
- Missing the Calypso CLAp automatic setting, the support of the PIN, Stored Value, Confidential session, & Data Signature features.
- Interface the Java SmartCardIO API
- Known issues/limits
- PcscPlugin has a public visibility.
- In order to deal with a problem with the implementation of smartcard.io on Windows, we use a hack using reflective code that can induce new problems: compilation on the next Java platforms, strange behavior on other environments (Linux, embedded Linux) See https://stackoverflow.com/questions/16921785/smartcard-terminal-removal-scard-e-no-service-cardexception
- Reader plugin emulator: allows to define virtual readers to operate the SE Proxy API without native readers.
- Known issues/limits:
- StubPlugin has a public visibility.
- Some tests have a dependency with the Calypso library.
- Plugin to communicate remotely with a Secure Element; definition of MasterAPI and SlaveAPI to enable Remote Procedure Call (RPC) between Keyple virtual reader terminals and Keyple native reader terminals. MasterAPI manages virtual reader that acts as a proxy to the remote reader.
- Known limits in 0.7.0
- RemoteSePlugin has a public visibility.
- virtualReader#SePresent() API is not implemented
- Functions to be renamed in accordance with the RPC standard
- Plugin interfacing an observable reader operated through the Android NFC API.
- Known issues/limits:
- AndroidNfcPlugin has a public visibility.
- Usage of 'fragment' to remove from the plugin code
- SE remove detection capability added in Android 7.0 not yet supported.
- Plugin interfacing static readers operated through the SIM Alliance / GlobalPlatform OMAPI.
- Known issues/limits:
- OmapiPlugin has a public visibility.
- Usage of 'fragment' to remove from the plugin code
- package API renamed from Android 9.0 not yet supported.