All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.1.0 - 2024-04-12
- Java source and target levels
1.6
->1.8
- Gradle
6.8.3
->7.6.4
- Keypop Reader API
2.0.0
->2.0.1
(code source not impacted)
- Support for PKI cards
- New APIs dedicated to the card personalization:
- added
PutDataTag
enum - added
preparePutData(PutDataTag tag, byte[] data)
method toTransactionManager
- added
prepareGenerateAsymmetricKeyPair()
method toTransactionManager
- added
CARD_PUBLIC_KEY
,CARD_CERTIFICATE
,CA_CERTIFICATE
entries toGetDataTag
enum - added
getCardPublicKey()
,getCardCertificate()
,getCaCertificate()
methods toCalypsoCard
- added
- 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 toCalypsoCardApiFactory
- added
SecurePkiModeTransactionManager
interface - added
createSecurePkiModeTransactionManager(...)
method toCalypsoCardApiFactory
- added
InvalidCertificateException
- added SPIs to operate the involved certificates with an external library:
- New APIs dedicated to the card personalization:
2.0.0 - 2023-11-27
CalypsoCardApiFactory
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 theCardTransactionCryptoExtension
associated with the secure card transaction.
- 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 byorg.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()
- Artifact
- Method signature refactored:
processCommands(boolean closePhysicalChannel)
->processCommands(ChannelControl channelControl)
. The enumChannelControl
has been created for this purpose.
CalypsoCard
extends nowIsoSmartCard
.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.
- 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)
1.8.0 - 2023-04-04
CardTransactionManager.initSamContextForNextTransaction
method.
1.7.0 - 2023-03-08
CalypsoCardSelection.prepareReadBinary
method.CalypsoCardSelection.prepareReadCounter
method.CalypsoCardSelection.preparePreOpenSecureSession
method (secure session "pre-open" variant).
- "Calypsonet Terminal Reader API" to version
1.2.0
1.6.0 - 2023-02-17
CommonTransactionManager.processCommands(boolean closePhysicalChannel)
method.CardTransactionManager.prepareVerifyPin
method.CardTransactionManager.prepareChangePin
method.CardTransactionManager.prepareChangeKey
method.CardTransactionManager.prepareOpenSecureSession
method.CardTransactionManager.prepareCloseSecureSession
method.CardTransactionManager.prepareCancelSecureSession
method.CardSecuritySetting.disableReadOnSessionOpening
method.
CommonTransactionManager.processCommands()
method.CardTransactionManager.prepareReleaseCardChannel
method.CardTransactionManager.processVerifyPin
method.CardTransactionManager.processChangePin
method.CardTransactionManager.processChangeKey
method.CardTransactionManager.processOpening
method.CardTransactionManager.processClosing
method.CardTransactionManager.processCancel
method.
1.5.0 - 2022-12-22
CardTransactionManager.prepareEarlyMutualAuthentication
method (extended mode).CardTransactionManager.prepareActivateEncryption
method (extended mode).CardTransactionManager.prepareDeactivateEncryption
method (extended mode).
SamSecuritySetting
API.SamTransactionManager
API.CommonTransactionManager.getSecuritySetting
method.CardTransactionManager.getCardReader
method.CardTransactionManager.getCalypsoCard
method.CalypsoSam.ProductType.CSAM_F
value.
1.4.1 - 2022-11-17
- Added precision in the documentation of the methods of the
CardTransactionManager
API. - UML diagrams moved to a dedicated repository (see
README.md
file).
1.4.0 - 2022-10-26
SelectFileException
to manage the status of the "Select File" card command.
- "Calypsonet Terminal Reader API" to version
1.1.0
1.3.0 - 2022-10-04
CalypsoSam.ProductType.HSM_C1
identifier for HSM products.
1.2.0 - 2022-05-30
CalypsoCard.getTransactionCounter
method (issue #42).SamRevocationServiceSpi
SPI (issue #29).CommonSignatureComputationData
.BasicSignatureComputationData
.TraceableSignatureComputationData
API (issue #28).CommonSignatureVerificationData
.BasicSignatureVerificationData
.TraceableSignatureVerificationData
API (issue #29).CommonSecuritySetting
API.CommonSecuritySetting.setControlSamResource
method as a replacement for thesetSamResource
method.CommonSecuritySetting.getTransactionAuditData
method (issue #44).CommonTransactionManager
API.CommonTransactionManager.getSecuritySetting
method as a replacement for thegetCardSecuritySetting
method.CommonTransactionManager.prepareComputeSignature
method (issue #28).CommonTransactionManager.prepareVerifySignature
method (issue #29).CommonTransactionManager.processCommands
method as a replacement for theprocessCardCommands
method.SamSecuritySetting
API.SamTransactionManager
API.ReaderIOException
exception.InvalidSignatureException
exception.
- Renaming of
AtomicTransactionException
toSessionBufferOverflowException
. - Renaming of
AuthenticationNotVerifiedException
toCardSignatureNotVerifiableException
. - Merging of
CardAnomalyException
,SamAnomalyException
andCardCloseSecureSessionException
toUnexpectedCommandStatusException
. - Merging of
DesynchronizedExchangesException
andInconsistencyDataException
toInconsistentDataException
. - Merging of
SessionAuthenticationException
andSvAuthenticationException
toInvalidCardSignatureException
.
CardTransactionManager.getCardSecuritySetting
method.CardTransactionManager.processCardCommands
method.CardSecuritySetting.setSamResource
method.
CardTransactionException
abstract common exception.
1.1.0 - 2022-02-01
prepareUpdateBinary
andprepareWriteBinary
methods toCardTransactionManager
API (issue #19).prepareReadBinary
method toCardTransactionManager
API (issue #20).prepareReadRecordsPartially
method toCardTransactionManager
APIs (issue #21 and #38).prepareSearchRecords
method toCardTransactionManager
APIs (issue #22).prepareIncreaseCounters
andprepareDecreaseCounters
methods toCardTransactionManager
API (issue #23).processChangeKey
method toCardTransactionManager
API (issue #24).prepareReadRecord
andprepareReadRecords
methods as a replacement for theprepareReadRecordFile
methods.prepareReadCounter
method as a replacement for theprepareReadCounterFile
method.EF_LIST
andTRACEABILITY_INFORMATION
keys toGetDataTag
API (issue #18).- Management of EFs with no SFI (issue #40).
- Documentation of card selection methods for older cards (issue #17).
- Documentation of
FileHeader
methods (issue #18). - Documentation of
prepareSelectFile
methods.
prepareSelectFile
methods using a byte array for the LID argument.prepareReadRecordFile
methods.prepareReadCounterFile
method.
1.0.5 - 2021-12-17
- Documentation of
processClosing
method (issue #16).
1.0.4 - 2021-12-17
- Documentation of
processOpening
andprocessClosing
methods (issue #15).
1.0.3 - 2021-12-15
- Documentation of
prepareReadRecord
methods (issue #13). - Signature of methods throwing
NoSuchElementException
(issue #13).
1.0.2 - 2021-11-22
addSuccessfulStatusWord
method (issue #11).
1.0.1 - 2021-11-22
- Description of the management of invalidated cards in
CalypsoCard
(issue #6).
1.0.0 - 2021-10-06
This is the initial release.