diff --git a/2.0.0-SNAPSHOT/api_class_diagram.puml b/2.0.0-SNAPSHOT/api_class_diagram.puml index 81fe5f2..b8c14bd 100644 --- a/2.0.0-SNAPSHOT/api_class_diagram.puml +++ b/2.0.0-SNAPSHOT/api_class_diagram.puml @@ -366,9 +366,8 @@ package "transaction" as transaction { +**InvalidPinException** +**CardRevokedException** +**InconsistentDataException**: Number of R-APDUs != number of C-APDUs **or** data read in session != data read outside session. - +**InvalidCardPkiSignatureException** - +**InvalidCardMacException** - +**CardMacNotVerifiableException**: CloseSecureSession is successful but crypto resource is no more available to check the card MAC. + +**InvalidCardSignatureException** + +**CardSignatureNotVerifiableException**: CloseSecureSession is successful but crypto resource is no more available to check the card MAC. +**SelectFileException** +**UnexpectedCommandStatusException** +**ReaderIOException**: Card reader and/or Crypto reader communication is broken. diff --git a/2.0.0-SNAPSHOT/api_class_diagram.svg b/2.0.0-SNAPSHOT/api_class_diagram.svg index 6e4f08d..cfd6066 100644 --- a/2.0.0-SNAPSHOT/api_class_diagram.svg +++ b/2.0.0-SNAPSHOT/api_class_diagram.svg @@ -1 +1 @@ - Terminal Calypso Card API 2.0.+ (2023-11-06)Colors legend:Work in progress...External public API references:Calypsonet Terminal Reader APIcalypso.cardcardtransactionspifinalCalypsoCardApiPropertiesfinalString VERSIONCalypsoCardApiFactoryCalypsoCardSelectionExtension createCalypsoCardSelectionExtension () SymmetricCryptoSecuritySetting createSymmetricCryptoSecuritySetting (SymmetricCryptoCardTransactionManagerFactory cryptoCardTransactionManagerFactory)AsymmetricCryptoSecuritySetting createAsymmetricCryptoSecuritySetting (AsymmetricCryptoCardTransactionManagerFactory cryptoCardTransactionManagerFactory) FreeTransactionManager createFreeTransactionManager (CardReadercardReader, CalypsoCard card)SecureRegularModeTransactionManager createSecureRegularModeTransactionManager (CardReadercardReader, CalypsoCard card, SymmetricCryptoSecuritySetting securitySetting)SecureExtendedModeTransactionManager createSecureExtendedModeTransactionManager (CardReadercardReader, CalypsoCard card, SymmetricCryptoSecuritySetting securitySetting)SecurePkiModeTransactionManager createSecurePkiModeTransactionManager (CardReadercardReader, CalypsoCard card, AsymmetricCryptoSecuritySetting securitySetting) SearchCommandData createSearchCommandData ()WriteAccessLevelPERSONALIZATIONLOADDEBITSelectFileControlFIRST_EFNEXT_EFCURRENT_DFGetDataTagFCP_FOR_CURRENT_FILEFCI_FOR_CURRENT_DFEF_LISTTRACEABILITY_INFORMATION<<CardSelectionExtension>>CalypsoCardSelectionExtensionCalypsoCardSelectionExtension acceptInvalidatedCard () CalypsoCardSelectionExtension prepareSelectFile (short lid)CalypsoCardSelectionExtension prepareSelectFile (SelectFileControl selectControl) CalypsoCardSelectionExtension prepareGetData (GetDataTag tag) CalypsoCardSelectionExtension prepareReadRecord (byte sfi, int recordNumber)CalypsoCardSelectionExtension prepareReadBinary (byte sfi, int offset, int nbBytesToRead)CalypsoCardSelectionExtension prepareReadCounter (byte sfi, int nbCountersToRead) CalypsoCardSelectionExtension preparePreOpenSecureSession (WriteAccessLevel writeAccessLevel)CalypsoCardSelectionExtension preparePreOpenSecureSessionInPkiMode ()<<IsoSmartCard>>CalypsoCardProductType getProductType ()boolean isHce () boolean isDfInvalidated () byte[] getDfName ()byte[] getApplicationSerialNumber () byte[] getStartupInfoRawData ()byte getPlatform ()byte getApplicationType ()byte getApplicationSubtype ()byte getSoftwareIssuer ()byte getSoftwareVersion ()byte getSoftwareRevision ()byte getSessionModification () byte[] getTraceabilityInformation () DirectoryHeader getDirectoryHeader ()ElementaryFile getFileBySfi (byte sfi)ElementaryFile getFileByLid (short lid)Set<ElementaryFile> getFiles () boolean isDfRatified ()int getTransactionCounter () boolean isPkiModeSupported ()boolean isExtendedModeSupported ()boolean isRatificationOnDeselectSupported () boolean isPinFeatureAvailable ()boolean isPinBlocked ()int getPinAttemptRemaining () boolean isSvFeatureAvailable ()int getSvBalance ()int getSvLastTNum ()SvLoadLogRecord getSvLoadLogRecord ()SvDebitLogRecord getSvDebitLogLastRecord ()List<SvDebitLogRecord> getSvDebitLogAllRecords ()DirectoryHeadershort getLid ()Byte getDfStatus () byte[] getAccessConditions ()byte[] getKeyIndexes () byte getKif (WriteAccessLevel writeAccessLevel)byte getKvc (WriteAccessLevel writeAccessLevel)ElementaryFilebyte getSfi ()FileHeader getHeader ()FileData getData ()FileHeadershort getLid ()byte getDfStatus ()ElementaryFile.Type getEfType () int getRecordsNumber ()int getRecordSize () byte[] getAccessConditions ()byte[] getKeyIndexes () Short getSharedReference ()TypeLINEARBINARYCYCLICCOUNTERSSIMULATED_COUNTERSFileDatabyte[] getContent ()byte[] getContent (int numRecord)byte[] getContent (int numRecord, int dataOffset, int dataLength)SortedMap<Integer, byte[]> getAllRecordsContent () Integer getContentAsCounterValue (int numCounter)SortedMap<Integer, Integer> getAllCountersValue ()ProductTypePRIME_REVISION_1PRIME_REVISION_2PRIME_REVISION_3LIGHTBASICUNKNOWNSvLoadLogRecordbyte[] getRawData () byte[] getLoadDate ()byte[] getLoadTime () int getAmount ()int getBalance ()byte[] getFreeData () byte getKvc ()byte[] getSamId ()int getSamTNum ()int getSvTNum ()SvDebitLogRecordbyte[] getRawData () byte[] getDebitDate ()byte[] getDebitTime () int getAmount ()int getBalance () byte getKvc ()byte[] getSamId ()int getSamTNum ()int getSvTNum ()TransactionManagerT extends TransactionManager<T>T prepareSelectFile (short lid)T prepareSelectFile (SelectFileControl selectFileControl) T prepareGetData (GetDataTag tag) T prepareReadRecord (byte sfi, int recordNumber)T prepareReadRecords (byte sfi, int fromRecordNumber, int toRecordNumber, int recordSize)T prepareReadRecordsPartially (byte sfi, int fromRecordNumber, int toRecordNumber, int offset, int nbBytesToRead)T prepareReadBinary (byte sfi, int offset, int nbBytesToRead)T prepareReadCounter (byte sfi, int nbCountersToRead) T prepareSearchRecords (SearchCommandData data) T prepareCheckPinStatus () T prepareAppendRecord (byte sfi, byte[] recordData)T prepareUpdateRecord (byte sfi, int recordNumber, byte[] recordData)T prepareWriteRecord (byte sfi, int recordNumber, byte[] recordData) T prepareUpdateBinary (byte sfi, int offset, byte[] data)T prepareWriteBinary (byte sfi, int offset, byte[] data) T prepareIncreaseCounter (byte sfi, int counterNumber, int incValue)T prepareIncreaseCounters (byte sfi, Map<Integer, Integer> counterNumberToIncValueMap)T prepareDecreaseCounter (byte sfi, int counterNumber, int decValue)T prepareDecreaseCounters (byte sfi, Map<Integer, Integer> counterNumberToDecValueMap)T prepareSetCounter (byte sfi, int counterNumber, int newValue) T prepareSvReadAllLogs () T prepareVerifyPin (byte[] pin)T prepareChangePin (byte[] newPin) T processCommands (ChannelControl channelControl) List<byte[]> getTransactionAuditData ()ChannelControlKEEP_OPENCLOSE_AFTERFreeTransactionManagerSecureTransactionManagerT extends SecureTransactionManager<T><E extends CardTransactionCryptoExtension> E getCryptoExtension (Class<E> cryptoExtensionClass) T prepareCloseSecureSession ()T prepareCancelSecureSession ()SecureSymmetricCryptoTransactionManagerT extends SecureSymmetricCryptoTransactionManager<T>T prepareOpenSecureSession (WriteAccessLevel writeAccessLevel) T prepareSvGet (SvOperation svOperation, SvAction svAction)T prepareSvReload (int amount, byte[] date, byte[] time, byte[] free)T prepareSvReload (int amount)T prepareSvDebit (int amount, byte[] date, byte[] time)T prepareSvDebit (int amount) T prepareInvalidate ()T prepareRehabilitate () T prepareChangeKey (int keyIndex, byte newKif, byte newKvc, byte issuerKif, byte issuerKvc)SecureRegularModeTransactionManagerSecureExtendedModeTransactionManagerSecureExtendedModeTransactionManager prepareEarlyMutualAuthentication ()SecureExtendedModeTransactionManager prepareActivateEncryption ()SecureExtendedModeTransactionManager prepareDeactivateEncryption ()SecurePkiModeTransactionManagerSecurePkiModeTransactionManager prepareOpenSecureSession ()SvOperationRELOADDEBITSvActionDOUNDOAsymmetricCryptoSecuritySettingAsymmetricCryptoSecuritySetting setAuthorityPublicKey (byte[] publicKey)AsymmetricCryptoSecuritySetting setAuthorityCertificate (X509Certificate certificate)AsymmetricCryptoSecuritySetting enableUnsignedPublicKeyUsage ()SymmetricCryptoSecuritySettingSymmetricCryptoSecuritySetting enableMultipleSession ()SymmetricCryptoSecuritySetting enableRatificationMechanism ()SymmetricCryptoSecuritySetting enablePinPlainTransmission ()SymmetricCryptoSecuritySetting enableSvLoadAndDebitLog ()SymmetricCryptoSecuritySetting authorizeSvNegativeBalance ()SymmetricCryptoSecuritySetting disableReadOnSessionOpening () SymmetricCryptoSecuritySetting assignKif (WriteAccessLevel writeAccessLevel, byte kvc, byte kif)SymmetricCryptoSecuritySetting assignDefaultKif (WriteAccessLevel writeAccessLevel, byte kif)SymmetricCryptoSecuritySetting assignDefaultKvc (WriteAccessLevel writeAccessLevel, byte kvc) SymmetricCryptoSecuritySetting addAuthorizedSessionKey (byte kif, byte kvc)SymmetricCryptoSecuritySetting addAuthorizedSvKey (byte kif, byte kvc) SymmetricCryptoSecuritySetting setPinVerificationCipheringKey (byte kif, byte kvc)SymmetricCryptoSecuritySetting setPinModificationCipheringKey (byte kif, byte kvc) void initCryptoContextForNextTransaction ()SearchCommandDataSearchCommandData setSfi (byte sfi)SearchCommandData startAtRecord (int recordNumber)SearchCommandData setOffset (int offset)SearchCommandData enableRepeatedOffset ()SearchCommandData setSearchData (byte[] data)SearchCommandData setMask (byte[] mask)SearchCommandData fetchFirstMatchingResult () List<Integer> getMatchingRecordNumbers ()«RuntimeException»SessionBufferOverflowException: Session buffer would overflow for atomic session.UnauthorizedKeyExceptionInvalidPinExceptionCardRevokedExceptionInconsistentDataException: Number of R-APDUs != number of C-APDUsordata read in session != data read outside session.InvalidCardPkiSignatureExceptionInvalidCardMacExceptionCardMacNotVerifiableException: CloseSecureSession is successful but crypto resource is no more available to check the card MAC.SelectFileExceptionUnexpectedCommandStatusExceptionReaderIOException: Card reader and/or Crypto reader communication is broken.CardIOExceptionCryptoExceptionCryptoIOExceptionAsymmetricCryptoCardTransactionManagerFactorySymmetricCryptoCardTransactionManagerFactoryCardTransactionCryptoExtensionuseuseuseuseprovideuseuseuseuseuseuseuseprovideprovideprovideprovideprovideuseprovideprovideprovide \ No newline at end of file + Terminal Calypso Card API 2.0.+ (2023-11-06)Colors legend:Work in progress...External public API references:Calypsonet Terminal Reader APIcalypso.cardcardtransactionspifinalCalypsoCardApiPropertiesfinalString VERSIONCalypsoCardApiFactoryCalypsoCardSelectionExtension createCalypsoCardSelectionExtension () SymmetricCryptoSecuritySetting createSymmetricCryptoSecuritySetting (SymmetricCryptoCardTransactionManagerFactory cryptoCardTransactionManagerFactory)AsymmetricCryptoSecuritySetting createAsymmetricCryptoSecuritySetting (AsymmetricCryptoCardTransactionManagerFactory cryptoCardTransactionManagerFactory) FreeTransactionManager createFreeTransactionManager (CardReadercardReader, CalypsoCard card)SecureRegularModeTransactionManager createSecureRegularModeTransactionManager (CardReadercardReader, CalypsoCard card, SymmetricCryptoSecuritySetting securitySetting)SecureExtendedModeTransactionManager createSecureExtendedModeTransactionManager (CardReadercardReader, CalypsoCard card, SymmetricCryptoSecuritySetting securitySetting)SecurePkiModeTransactionManager createSecurePkiModeTransactionManager (CardReadercardReader, CalypsoCard card, AsymmetricCryptoSecuritySetting securitySetting) SearchCommandData createSearchCommandData ()WriteAccessLevelPERSONALIZATIONLOADDEBITSelectFileControlFIRST_EFNEXT_EFCURRENT_DFGetDataTagFCP_FOR_CURRENT_FILEFCI_FOR_CURRENT_DFEF_LISTTRACEABILITY_INFORMATION<<CardSelectionExtension>>CalypsoCardSelectionExtensionCalypsoCardSelectionExtension acceptInvalidatedCard () CalypsoCardSelectionExtension prepareSelectFile (short lid)CalypsoCardSelectionExtension prepareSelectFile (SelectFileControl selectControl) CalypsoCardSelectionExtension prepareGetData (GetDataTag tag) CalypsoCardSelectionExtension prepareReadRecord (byte sfi, int recordNumber)CalypsoCardSelectionExtension prepareReadBinary (byte sfi, int offset, int nbBytesToRead)CalypsoCardSelectionExtension prepareReadCounter (byte sfi, int nbCountersToRead) CalypsoCardSelectionExtension preparePreOpenSecureSession (WriteAccessLevel writeAccessLevel)CalypsoCardSelectionExtension preparePreOpenSecureSessionInPkiMode ()<<IsoSmartCard>>CalypsoCardProductType getProductType ()boolean isHce () boolean isDfInvalidated () byte[] getDfName ()byte[] getApplicationSerialNumber () byte[] getStartupInfoRawData ()byte getPlatform ()byte getApplicationType ()byte getApplicationSubtype ()byte getSoftwareIssuer ()byte getSoftwareVersion ()byte getSoftwareRevision ()byte getSessionModification () byte[] getTraceabilityInformation () DirectoryHeader getDirectoryHeader ()ElementaryFile getFileBySfi (byte sfi)ElementaryFile getFileByLid (short lid)Set<ElementaryFile> getFiles () boolean isDfRatified ()int getTransactionCounter () boolean isPkiModeSupported ()boolean isExtendedModeSupported ()boolean isRatificationOnDeselectSupported () boolean isPinFeatureAvailable ()boolean isPinBlocked ()int getPinAttemptRemaining () boolean isSvFeatureAvailable ()int getSvBalance ()int getSvLastTNum ()SvLoadLogRecord getSvLoadLogRecord ()SvDebitLogRecord getSvDebitLogLastRecord ()List<SvDebitLogRecord> getSvDebitLogAllRecords ()DirectoryHeadershort getLid ()Byte getDfStatus () byte[] getAccessConditions ()byte[] getKeyIndexes () byte getKif (WriteAccessLevel writeAccessLevel)byte getKvc (WriteAccessLevel writeAccessLevel)ElementaryFilebyte getSfi ()FileHeader getHeader ()FileData getData ()FileHeadershort getLid ()byte getDfStatus ()ElementaryFile.Type getEfType () int getRecordsNumber ()int getRecordSize () byte[] getAccessConditions ()byte[] getKeyIndexes () Short getSharedReference ()TypeLINEARBINARYCYCLICCOUNTERSSIMULATED_COUNTERSFileDatabyte[] getContent ()byte[] getContent (int numRecord)byte[] getContent (int numRecord, int dataOffset, int dataLength)SortedMap<Integer, byte[]> getAllRecordsContent () Integer getContentAsCounterValue (int numCounter)SortedMap<Integer, Integer> getAllCountersValue ()ProductTypePRIME_REVISION_1PRIME_REVISION_2PRIME_REVISION_3LIGHTBASICUNKNOWNSvLoadLogRecordbyte[] getRawData () byte[] getLoadDate ()byte[] getLoadTime () int getAmount ()int getBalance ()byte[] getFreeData () byte getKvc ()byte[] getSamId ()int getSamTNum ()int getSvTNum ()SvDebitLogRecordbyte[] getRawData () byte[] getDebitDate ()byte[] getDebitTime () int getAmount ()int getBalance () byte getKvc ()byte[] getSamId ()int getSamTNum ()int getSvTNum ()TransactionManagerT extends TransactionManager<T>T prepareSelectFile (short lid)T prepareSelectFile (SelectFileControl selectFileControl) T prepareGetData (GetDataTag tag) T prepareReadRecord (byte sfi, int recordNumber)T prepareReadRecords (byte sfi, int fromRecordNumber, int toRecordNumber, int recordSize)T prepareReadRecordsPartially (byte sfi, int fromRecordNumber, int toRecordNumber, int offset, int nbBytesToRead)T prepareReadBinary (byte sfi, int offset, int nbBytesToRead)T prepareReadCounter (byte sfi, int nbCountersToRead) T prepareSearchRecords (SearchCommandData data) T prepareCheckPinStatus () T prepareAppendRecord (byte sfi, byte[] recordData)T prepareUpdateRecord (byte sfi, int recordNumber, byte[] recordData)T prepareWriteRecord (byte sfi, int recordNumber, byte[] recordData) T prepareUpdateBinary (byte sfi, int offset, byte[] data)T prepareWriteBinary (byte sfi, int offset, byte[] data) T prepareIncreaseCounter (byte sfi, int counterNumber, int incValue)T prepareIncreaseCounters (byte sfi, Map<Integer, Integer> counterNumberToIncValueMap)T prepareDecreaseCounter (byte sfi, int counterNumber, int decValue)T prepareDecreaseCounters (byte sfi, Map<Integer, Integer> counterNumberToDecValueMap)T prepareSetCounter (byte sfi, int counterNumber, int newValue) T prepareSvReadAllLogs () T prepareVerifyPin (byte[] pin)T prepareChangePin (byte[] newPin) T processCommands (ChannelControl channelControl) List<byte[]> getTransactionAuditData ()ChannelControlKEEP_OPENCLOSE_AFTERFreeTransactionManagerSecureTransactionManagerT extends SecureTransactionManager<T><E extends CardTransactionCryptoExtension> E getCryptoExtension (Class<E> cryptoExtensionClass) T prepareCloseSecureSession ()T prepareCancelSecureSession ()SecureSymmetricCryptoTransactionManagerT extends SecureSymmetricCryptoTransactionManager<T>T prepareOpenSecureSession (WriteAccessLevel writeAccessLevel) T prepareSvGet (SvOperation svOperation, SvAction svAction)T prepareSvReload (int amount, byte[] date, byte[] time, byte[] free)T prepareSvReload (int amount)T prepareSvDebit (int amount, byte[] date, byte[] time)T prepareSvDebit (int amount) T prepareInvalidate ()T prepareRehabilitate () T prepareChangeKey (int keyIndex, byte newKif, byte newKvc, byte issuerKif, byte issuerKvc)SecureRegularModeTransactionManagerSecureExtendedModeTransactionManagerSecureExtendedModeTransactionManager prepareEarlyMutualAuthentication ()SecureExtendedModeTransactionManager prepareActivateEncryption ()SecureExtendedModeTransactionManager prepareDeactivateEncryption ()SecurePkiModeTransactionManagerSecurePkiModeTransactionManager prepareOpenSecureSession ()SvOperationRELOADDEBITSvActionDOUNDOAsymmetricCryptoSecuritySettingAsymmetricCryptoSecuritySetting setAuthorityPublicKey (byte[] publicKey)AsymmetricCryptoSecuritySetting setAuthorityCertificate (X509Certificate certificate)AsymmetricCryptoSecuritySetting enableUnsignedPublicKeyUsage ()SymmetricCryptoSecuritySettingSymmetricCryptoSecuritySetting enableMultipleSession ()SymmetricCryptoSecuritySetting enableRatificationMechanism ()SymmetricCryptoSecuritySetting enablePinPlainTransmission ()SymmetricCryptoSecuritySetting enableSvLoadAndDebitLog ()SymmetricCryptoSecuritySetting authorizeSvNegativeBalance ()SymmetricCryptoSecuritySetting disableReadOnSessionOpening () SymmetricCryptoSecuritySetting assignKif (WriteAccessLevel writeAccessLevel, byte kvc, byte kif)SymmetricCryptoSecuritySetting assignDefaultKif (WriteAccessLevel writeAccessLevel, byte kif)SymmetricCryptoSecuritySetting assignDefaultKvc (WriteAccessLevel writeAccessLevel, byte kvc) SymmetricCryptoSecuritySetting addAuthorizedSessionKey (byte kif, byte kvc)SymmetricCryptoSecuritySetting addAuthorizedSvKey (byte kif, byte kvc) SymmetricCryptoSecuritySetting setPinVerificationCipheringKey (byte kif, byte kvc)SymmetricCryptoSecuritySetting setPinModificationCipheringKey (byte kif, byte kvc) void initCryptoContextForNextTransaction ()SearchCommandDataSearchCommandData setSfi (byte sfi)SearchCommandData startAtRecord (int recordNumber)SearchCommandData setOffset (int offset)SearchCommandData enableRepeatedOffset ()SearchCommandData setSearchData (byte[] data)SearchCommandData setMask (byte[] mask)SearchCommandData fetchFirstMatchingResult () List<Integer> getMatchingRecordNumbers ()«RuntimeException»SessionBufferOverflowException: Session buffer would overflow for atomic session.UnauthorizedKeyExceptionInvalidPinExceptionCardRevokedExceptionInconsistentDataException: Number of R-APDUs != number of C-APDUsordata read in session != data read outside session.InvalidCardSignatureExceptionCardSignatureNotVerifiableException: CloseSecureSession is successful but crypto resource is no more available to check the card MAC.SelectFileExceptionUnexpectedCommandStatusExceptionReaderIOException: Card reader and/or Crypto reader communication is broken.CardIOExceptionCryptoExceptionCryptoIOExceptionAsymmetricCryptoCardTransactionManagerFactorySymmetricCryptoCardTransactionManagerFactoryCardTransactionCryptoExtensionuseuseuseuseprovideuseuseuseuseuseuseuseprovideprovideprovideprovideprovideuseprovideprovideprovide \ No newline at end of file