Updated on 2026-08-14

This commit is contained in:
Tangem 2020-02-20 16:56:23 +03:00
parent 4637ccc166
commit 2ae3e9cc3c
3 changed files with 28 additions and 5 deletions

View file

@ -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
}
}

View file

@ -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<WriteIssuerDataResponse>(), 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)

View file

@ -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