Updated on 2026-08-14
This commit is contained in:
parent
4637ccc166
commit
2ae3e9cc3c
3 changed files with 28 additions and 5 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue