diff --git a/tangem-core/src/main/java/com/tangem/commands/ReadIssuerExtraDataCommand.kt b/tangem-core/src/main/java/com/tangem/commands/ReadIssuerExtraDataCommand.kt index fc33d22b41..2504764a55 100644 --- a/tangem-core/src/main/java/com/tangem/commands/ReadIssuerExtraDataCommand.kt +++ b/tangem-core/src/main/java/com/tangem/commands/ReadIssuerExtraDataCommand.kt @@ -62,7 +62,7 @@ class ReadIssuerExtraDataCommand( val tlvBuilder = TlvBuilder() tlvBuilder.append(TlvTag.Pin, cardEnvironment.pin1) tlvBuilder.append(TlvTag.CardId, cardEnvironment.cardId) - tlvBuilder.append(TlvTag.Mode, IssuerDataMode.ExtraData) + tlvBuilder.append(TlvTag.Mode, EXTRA_DATA_MODE) tlvBuilder.append(TlvTag.Offset, offset) return CommandApdu(Instruction.ReadIssuerData, tlvBuilder.serialize()) } @@ -83,4 +83,12 @@ class ReadIssuerExtraDataCommand( throw TaskError.SerializeCommandError() } } + + companion object { + /** + * This mode value specifies that this command retrieves Issuer EXTRA data from the card + * (with value 0 the command will get instead simple Issuer Data from the card). + */ + const val EXTRA_DATA_MODE = 1 + } } \ No newline at end of file diff --git a/tangem-core/src/main/java/com/tangem/commands/WriteIssuerExtraDataCommand.kt b/tangem-core/src/main/java/com/tangem/commands/WriteIssuerExtraDataCommand.kt index 70e7f3064c..3ae08d0fe6 100644 --- a/tangem-core/src/main/java/com/tangem/commands/WriteIssuerExtraDataCommand.kt +++ b/tangem-core/src/main/java/com/tangem/commands/WriteIssuerExtraDataCommand.kt @@ -9,9 +9,24 @@ import com.tangem.common.tlv.TlvMapper import com.tangem.common.tlv.TlvTag import com.tangem.tasks.TaskError +/** + * This enum specifies modes for [WriteIssuerExtraDataCommand]. + */ enum class IssuerDataMode(val code: Byte) { - ExtraData(1), + /** + * This mode is required to initiate writing issuer extra data to the card. + */ + InitializeWritingExtraData(1), + /** + * With this mode, the command writes part of issuer extra data + * (block of a size [WriteIssuerExtraDataCommand.SINGLE_WRITE_SIZE]) to the card. + */ WriteExtraData(2), + /** + * This mode is used after the issuer extra data was fully written to the card. + * Under this mode the command provides the issuer signature + * to confirm the validity of data that was written to card. + */ FinalizeExtraData(3); companion object { @@ -44,7 +59,7 @@ class WriteIssuerExtraDataCommand( verifier: IssuerDataVerifier = DefaultIssuerDataVerifier() ) : CommandSerializer(), IssuerDataVerifier by verifier { - var mode: IssuerDataMode = IssuerDataMode.ExtraData + var mode: IssuerDataMode = IssuerDataMode.InitializeWritingExtraData var offset: Int = 0 override fun serialize(cardEnvironment: CardEnvironment): CommandApdu { @@ -55,7 +70,7 @@ class WriteIssuerExtraDataCommand( tlvBuilder.append(TlvTag.Mode, mode) when (mode) { - IssuerDataMode.ExtraData -> { + IssuerDataMode.InitializeWritingExtraData -> { tlvBuilder.append(TlvTag.Size, issuerData.size) tlvBuilder.append(TlvTag.IssuerDataSignature, startingSignature) tlvBuilder.append(TlvTag.IssuerDataCounter, issuerDataCounter) diff --git a/tangem-core/src/main/java/com/tangem/tasks/WriteIssuerExtraDataTask.kt b/tangem-core/src/main/java/com/tangem/tasks/WriteIssuerExtraDataTask.kt index ba3a510f75..f24deb929f 100644 --- a/tangem-core/src/main/java/com/tangem/tasks/WriteIssuerExtraDataTask.kt +++ b/tangem-core/src/main/java/com/tangem/tasks/WriteIssuerExtraDataTask.kt @@ -59,7 +59,7 @@ internal class WriteIssuerExtraDataTask( is CompletionResult.Success -> { when (command.mode) { - IssuerDataMode.ExtraData -> { + IssuerDataMode.InitializeWritingExtraData -> { command.mode = IssuerDataMode.WriteExtraData writeIssuerData(command, callback) return@sendCommand