2024-04-17 | Keypop Calypso Crypto Legacysam Java Api0.6.0
Added- New method added to
LegacySamSelectionExtension :prepareGetData(GetDataTag tag) to schedule the execution of a “Get Data” command for the specified tag.
ChangedCardCertificateComputationData renamed to LegacyCardCertificateComputationData
|
---|
2024-04-12 | Keypop Calypso Crypto Legacysam Java Api0.5.0
Changed- Java source and target levels
1.6 -> 1.8
UpgradedAddedGetDataTag to enumerate all output data types.KeyPairContainer interface to contain a key pair.CardCertificateComputationData interface to contain input/output data for the “PSO Compute Certificate” command.- New methods added to
FreeTransactionManager :prepareGetData(GetDataTag tag) to schedule the execution of a “Get Data” command for the specified tag.prepareGenerateCardAsymmetricKeyPair(KeyPairContainer keyPairContainer) to schedule the execution of “Card Generate Asymmetric Key Pair” command.prepareComputeCardCertificate(CardCertificateComputationData data) to schedule the execution of a “PSO Compute Certificate” command.
- New methods added to
LegacySamApiFactory :createKeyPairContainer() to create a new instance of KeyPairContainer .createCardCertificateComputationData() to create a new instance of CardCertificateComputationData .
- New method added to
LegacySam :getCaCertificate() to get the CA certificate retrieved from the SAM as a 384-byte byte array.
|
---|
2024-04-12 | Keypop Calypso Card Java Api2.1.0
Changed- Java source and target levels
1.6 -> 1.8
Upgraded- Gradle
6.8.3 -> 7.6.4 - Keypop Reader API
2.0.0 -> 2.0.1 (code source not impacted)
Added- Support for PKI cards
- New APIs dedicated to the card personalization:
- added
PutDataTag enum - added
preparePutData(PutDataTag tag, byte[] data) method to TransactionManager - added
prepareGenerateAsymmetricKeyPair() method to TransactionManager - added
CARD_PUBLIC_KEY , CARD_CERTIFICATE , CA_CERTIFICATE entries to GetDataTag enum - added
getCardPublicKey() , getCardCertificate() , getCaCertificate() methods to CalypsoCard
- New APIs/SPIs dedicated to the card secure transaction in PKI mode:
- added SPIs to operate the involved certificates with an external library:
PcaCertificate , CaCertificate , CaCertificateParser , CardCertificate , CardCertificateParser - added
AsymmetricCryptoSecuritySetting interface - added
createAsymmetricCryptoSecuritySetting(...) method to CalypsoCardApiFactory - added
SecurePkiModeTransactionManager interface - added
createSecurePkiModeTransactionManager(...) method to CalypsoCardApiFactory - added
InvalidCertificateException
|
---|
2024-04-12 | Keypop Calypso Crypto Asymmetric Java Api0.2.0
Changed- Update design
- Java source and target levels
1.6 -> 1.8
Upgraded |
---|
2024-04-12 | Keypop Calypso Crypto Symmetric Java Api0.1.1
Changed- Java source and target levels
1.6 -> 1.8
Upgraded |
---|
2024-04-12 | Keypop Card Java Api2.0.1
Changed- Java source and target levels
1.6 -> 1.8
Upgraded |
---|
2024-04-12 | Keypop Reader Java Api2.0.1
Changed- Java source and target levels
1.6 -> 1.8
Upgraded |
---|
2024-01-10 | Keypop Calypso Crypto Legacysam Java Api0.4.0
AddedLegacySamStaticUnlockDataProviderSpi , an SPI to provide SAM unlock data in static mode.LegacySamDynamicUnlockDataProviderSpi , an SPI to provide SAM unlock data in dynamic mode.- New methods added to
LegacySamSelectionExtension :setStaticUnlockDataProvider(LegacySamStaticUnlockDataProviderSpi unlockDataProvider) sets the unlock data provider for the static mode when the card reader becomes available at a later stage.setStaticUnlockDataProvider(LegacySamStaticUnlockDataProviderSpi unlockDataProvider, CardReader targetSamReader) sets the unlock data provider and the target SAM reader for the static mode when the target SAM reader is initially available.setDynamicUnlockDataProvider(LegacySamDynamicUnlockDataProviderSpi unlockDataProvider) sets the unlock data provider for the dynamic mode when the card reader becomes available at a later stage.setDynamicUnlockDataProvider(LegacySamDynamicUnlockDataProviderSpi unlockDataProvider, CardReader targetSamReader) sets the unlock data provider and the target SAM reader for the dynamic mode when the target SAM reader is initially available.
Fixed- The allowed length for unlocking data in static mode is 16 bytes only as expected by the SAM (
setUnlockData method).
|
---|
2023-11-27 | Keypop Calypso Crypto Legacysam Java Api0.3.0
⚠️ The project has been migrated from the Calypsonet Terminal Calypso Crypto Legacy SAM API GitHub repository. AddedLegacySamApiFactory centralizes the methods used to create instances of the various interfaces of the API.CardTransactionLegacySamExtension extends the SPI CardTransactionCryptoExtension provided by “Keypop Calypso Card API” to extends a card transaction with specific SAM features (e.g. signature computation, etc.).- New methods added to
LegacySamSelectionExtension :setUnlockData(String unlockData, LegacySam.ProductType productType) sets the unlock data to be used to unlock a SAM C1 (8 or 16 bytes) and schedules the execution of the “Unlock data” command in the first position.prepareReadSystemKeyParameters(SystemKeyType systemKeyType) schedules the execution of a “Read Key Parameters” command for a system key.prepareReadCounterStatus(int counterNumber) schedules the execution of a “Read Event Counter” and “Read Ceiling” commands to read the status of a counter.prepareReadAllCountersStatus() schedules the execution of a “Read Event Counter” and “Read Ceiling” commands to read the status of all counters.
- New method added to
LegacySam :getCounterIncrementAccess(int counterNumber) returns the counter increment access mode.
Changed- The project license is now “MIT License” (previously “Eclipse Public License 2.0”).
- CI: The Gradle plugin
org.eclipse.keyple:keyple-gradle:0.2.+ has been replaced by org.eclipse.keypop:keypop-gradle:0.1.+ . - Renamed:
- Artifact
org.calypsonet.terminal:calypsonet-terminal-calypso-crypto-legacysam-java-api -> org.eclipse.keypop:keypop-calypso-crypto-legacysam-java-api - Package
org.eclipse.keypop.calypso.card.crypto.legacysam -> org.eclipse.keypop.calypso.crypto.legacysam - Interface
LegacySamSelection -> LegacySamSelectionExtension - Interface
LSSecuritySetting -> SecuritySetting - Interface
LSFreeTransactionManager -> FreeTransactionManager - Interface
LSAsyncTransactionCreatorManager -> AsyncTransactionCreatorManager - Interface
LSAsyncTransactionExecutorManager -> AsyncTransactionExecutorManager - Interface
LSRevocationServiceSpi -> LegacySamRevocationServiceSpi
- All legacy factories were merged into a single factory
LegacySamApiFactory :LegacySamSelectionFactory LSTransactionManagerFactory LSSecuritySettingFactory LSCardTransactionCryptoExtensionFactory LSCommandDataFactory
- Method signature refactored:
LSWriteTransactionManager.prepareWriteCounterConfiguration(int counterNumber, int ceilingValue, boolean isManualCounterIncrementAuthorized) -> WriteTransactionManager.prepareWriteCounterConfiguration(int counterNumber, int ceilingValue, CounterIncrementAccess counterIncrementAccess) .
The enum CounterIncrementAccess has been created for this purpose.TraceableSignatureComputationData.withSamTraceabilityMode(int offset, boolean usePartialSamSerialNumber) -> TraceableSignatureComputationData.withSamTraceabilityMode(int offset, SamTraceabilityMode samTraceabilityMode) .
The enum SamTraceabilityMode has been created for this purpose.TraceableSignatureVerificationData.withSamTraceabilityMode(int offset, boolean isPartialSamSerialNumber, LSRevocationServiceSpi samRevocationService) -> TraceableSignatureComputationData.withSamTraceabilityMode(int offset, SamTraceabilityMode samTraceabilityMode, LegacySamRevocationServiceSpi samRevocationService) .
The enum SamTraceabilityMode has been created for this purpose.
Removed- The
filterByProductType(LegacySam.ProductType productType) and filterBySerialNumber(String serialNumberRegex) methods of LegacySamSelection have been removed following the introduction of generic selection filters in the “Keypop Reader API”. Indeed, these two methods implemented filtering on power-on data, and it is now up to the implementation libraries to propose utility methods to recreate the regexes to be used for power-on data based on product type and/or serial number.
|
---|
2023-11-27 | Keypop Calypso Card Java Api2.0.0
⚠️ The project has been migrated from the Calypsonet Terminal Calypso API GitHub repository. AddedCalypsoCardApiFactory centralizes the methods used to create instances of the various interfaces of the API.- Exception
InvalidPinException to be thrown if an invalid PIN is provided by the user. - SPI
CardTransactionCryptoExtension must be implemented by a crypto extension to extends a card transaction with specific crypto features (e.g. signature computation, etc.). - SPI
SymmetricCryptoCardTransactionManagerFactory must be implemented by a symmetric crypto extension so that it can be associated with a card transaction requiring a symmetric cryptographic module to secure the transaction (e.g. Legacy SAM, Open SAM, etc.). - SPI
AsymmetricCryptoCardTransactionManagerFactory must be implemented by an asymmetric crypto extension so that it can be associated with a card transaction requiring an asymmetric cryptographic module to secure the transaction (e.g. PKI). - Method
SecureTransactionManager.getCryptoExtension(Class<E> cryptoExtensionClass) returns the CardTransactionCryptoExtension associated with the secure card transaction.
Changed- The project license is now “MIT License” (previously “Eclipse Public License 2.0”).
- CI: The Gradle plugin
org.eclipse.keyple:keyple-gradle:0.2.+ has been replaced by org.eclipse.keypop:keypop-gradle:0.1.+ . - Renamed:
- Artifact
org.calypsonet.terminal:calypsonet-terminal-calypso-java-api -> org.eclipse.keypop:keypop-calypso-card-java-api - Package
org.calypsonet.terminal.calypso -> org.eclipse.keypop.calypso.card - Class
CalypsoApiProperties -> CalypsoCardApiProperties - Class
SamIOException -> CryptoIOException - Interface
CalypsoCardSelection -> CalypsoCardSelectionExtension - Interface
CardSecuritySetting -> SymmetricCryptoSecuritySetting - Method
initSamContextForNextTransaction() -> initCryptoContextForNextTransaction()
- Method signature refactored:
processCommands(boolean closePhysicalChannel) -> processCommands(ChannelControl channelControl) . The enum ChannelControl has been created for this purpose.
CalypsoCard extends now IsoSmartCard .CardTransactionManager has been split into the followings interfaces:FreeTransactionManager : Manager of card transactions requiring no cryptographic computation.SecureRegularModeTransactionManager : Manager of card transactions secured by symmetric key cryptographic algorithms, compatible with all Regular Calypso products.SecureExtendedModeTransactionManager : Manager of card transactions secured by symmetric key cryptographic algorithms, adding additional operations available only for “Calypso Prime Extended” products.SecurePkiModeTransactionManager : Manager of card transactions secured by asymmetric key cryptographic algorithms, compatible only with “Calypso Prime PKI” products.
Removed- All elements related to the SAM have been removed and will be provided by specific symmetric crypto extensions:
CommonSecuritySetting SamSecuritySetting CalypsoSamSelection CalypsoSam SamTransactionManager CommonSignatureComputationData BasicSignatureComputationData TraceableSignatureComputationData CommonSignatureVerificationData BasicSignatureVerificationData TraceableSignatureVerificationData SamRevocationServiceSpi SamRevokedException InvalidSignatureException
- All deprecated and obsolete methods have been removed:
CalypsoCardSelection.filterByCardProtocol(String cardProtocol) (moved to the “Keypop Reader Java API”)CalypsoCardSelection.filterByPowerOnData(String powerOnDataRegex) (moved to the “Keypop Reader Java API”)CalypsoCardSelection.filterByDfName(byte[] aid) (moved to the “Keypop Reader Java API”)CalypsoCardSelection.filterByDfName(String aid) (moved to the “Keypop Reader Java API”)CalypsoCardSelection.setFileOccurrence(FileOccurrence fileOccurrence) (moved to the “Keypop Reader Java API”)CalypsoCardSelection.setFileControlInformation(FileControlInformation fileControlInformation) (moved to the “Keypop Reader Java API”)CalypsoCardSelection.addSuccessfulStatusWord(int statusWord) CalypsoCardSelection.prepareSelectFile(byte[] lid) CalypsoCardSelection.prepareReadRecordFile(byte sfi, int recordNumber) CalypsoCard.getAllFiles() CommonTransactionManager.getSecuritySetting() CommonTransactionManager.prepareComputeSignature(CommonSignatureComputationData<?> data) CommonTransactionManager.prepareVerifySignature(CommonSignatureVerificationData<?> data) CommonTransactionManager.processCommands() CardTransactionManager.getCardReader() CardTransactionManager.getCalypsoCard() CardTransactionManager.getCardSecuritySetting() CardTransactionManager.prepareSelectFile(byte[] lid) CardTransactionManager.prepareReadRecordFile(byte sfi, int recordNumber) CardTransactionManager.prepareReadRecordFile(byte sfi, int firstRecordNumber, int numberOfRecords, int recordSize) CardTransactionManager.prepareReadCounterFile(byte sfi, int countersNumber) CardTransactionManager.prepareReleaseCardChannel() CardTransactionManager.processCardCommands() CardTransactionManager.processVerifyPin(byte[] pin) CardTransactionManager.processChangePin(byte[] newPin) CardTransactionManager.processChangeKey(int keyIndex, byte newKif, byte newKvc, byte issuerKif, byte issuerKvc) CardTransactionManager.processOpening(WriteAccessLevel writeAccessLevel) CardTransactionManager.processClosing() CardTransactionManager.processCancel() CardSecuritySetting.setSamResource(CardReader samReader, CalypsoSam calypsoSam)
|
---|
2023-11-27 | Keypop Calypso Crypto Asymmetric Java Api0.1.0 This is the initial release. |
---|
2023-11-27 | Keypop Calypso Crypto Symmetric Java Api0.1.0 This is the initial release. |
---|
2023-11-27 | Keypop Card Java Api2.0.0
⚠️ The project has been migrated from the Calypsonet Terminal Card API GitHub repository. Changed- The project license is now “MIT License” (previously “Eclipse Public License 2.0”).
- CI: The Gradle plugin
org.eclipse.keyple:keyple-gradle:0.2.+ has been replaced by org.eclipse.keypop:keypop-gradle:0.1.+ . - Renamed:
- Artifact
org.calypsonet.terminal:calypsonet-terminal-card-java-api -> org.eclipse.keypop:keypop-card-java-api - Package
org.calypsonet.terminal.card -> org.eclipse.keypop.card - Interface
CardSelectionSpi -> CardSelectionExtensionSpi
- Moved:
- Interface
org.calypsonet.terminal.card.spi.ParseException -> org.eclipse.keypop.card.ParseException - Method
CardSelectorSpi.getSuccessfulSelectionStatusWords() -> CardSelectionRequestSpi.getSuccessfulSelectionStatusWords()
- The following exceptions classes are now marked as final:
ParseException CardBrokenCommunicationException ReaderBrokenCommunicationException UnexpectedStatusWordException
Removed- Method
CardSelectionRequestSpi.getCardSelector() - Interface
CardSelectorSpi has been moved to the Keypop Reader Java API
|
---|
2023-11-27 | Keypop Reader Java Api2.0.0
⚠️ The project has been migrated from the Calypsonet Terminal Reader API GitHub repository. AddedReaderApiFactory centralizes the methods used to create instances of the various interfaces of the API.BasicCardSelector can be used to create generic card selection filters based on card communication protocol or power-on data.IsoCardSelector lets you create ISO card selection filters based on card communication protocol and power-on data, as well as AIDs, and define selection strategies (e.g. first occurrence, FCI reading, etc.).IsoSmartCard extends the SmartCard interface and provides access to data from the Select Application ISO command response.
Changed- The project license is now “MIT License” (previously “Eclipse Public License 2.0”).
- CI: The Gradle plugin
org.eclipse.keyple:keyple-gradle:0.2.+ has been replaced by org.eclipse.keypop:keypop-gradle:0.1.+ . - Renamed:
- Artifact
org.calypsonet.terminal:calypsonet-terminal-reader-java-api -> org.eclipse.keypop:keypop-reader-java-api - Package
org.calypsonet.terminal.reader -> org.eclipse.keypop.reader - Interface
CardSelection -> CardSelectionExtension
- Moved:
- Method
SmartCard.getSelectApplicationResponse() -> IsoSmartCard.getSelectApplicationResponse()
- Method signature refactored:
CardSelectionManager.prepareSelection(CardSelection cardSelection) -> CardSelectionManager.prepareSelection(CardSelector<?> cardSelector, CardSelectionExtension cardSelectionExtension) CardSelectionManager.scheduleCardSelectionScenario(ObservableCardReader observableCardReader, DetectionMode detectionMode, NotificationMode notificationMode)
-> CardSelectionManager.scheduleCardSelectionScenario(ObservableCardReader observableCardReader, NotificationMode notificationMode)
|
---|