diff --git a/tangem-core/src/main/java/com/tangem/CardEnvironment.kt b/tangem-core/src/main/java/com/tangem/CardEnvironment.kt index 8c32ac506f..39e077006e 100644 --- a/tangem-core/src/main/java/com/tangem/CardEnvironment.kt +++ b/tangem-core/src/main/java/com/tangem/CardEnvironment.kt @@ -10,7 +10,8 @@ data class CardEnvironment( val pin2: String = DEFAULT_PIN2, val cardId: String? = null, val terminalKeys: KeyPair? = null, - val encryptionKey: ByteArray? = null + val encryptionKey: ByteArray? = null, + val cvc: ByteArray? = null ) { companion object { diff --git a/tangem-core/src/main/java/com/tangem/CardManager.kt b/tangem-core/src/main/java/com/tangem/CardManager.kt index d581ae951c..1e8488f317 100644 --- a/tangem-core/src/main/java/com/tangem/CardManager.kt +++ b/tangem-core/src/main/java/com/tangem/CardManager.kt @@ -137,6 +137,9 @@ class CardManager( fun createWallet(cardId: String, cvc: ByteArray? = null, callback: (result: TaskEvent) -> Unit) { + + if (cvc != null) cardEnvironmentRepository[cardId] = fetchCardEnvironment(cardId).copy(cvc = cvc) + val createWalletCommand = CreateWalletCommand(cardId) val task = SingleCommandTask(createWalletCommand) runTask(task, cardId, callback) diff --git a/tangem-core/src/main/java/com/tangem/commands/CreateWalletCommand.kt b/tangem-core/src/main/java/com/tangem/commands/CreateWalletCommand.kt index 416ebad2f6..833795cbbf 100644 --- a/tangem-core/src/main/java/com/tangem/commands/CreateWalletCommand.kt +++ b/tangem-core/src/main/java/com/tangem/commands/CreateWalletCommand.kt @@ -36,11 +36,9 @@ class CreateWalletResponse( * RemainingSignature is set to MaxSignatures. * * @property cardId CID, Unique Tangem card ID number. - * @property cvc Optional 3-digit code printed on the card. Required if Use_CVC flag is set in Settings_Mask. */ class CreateWalletCommand( - private val cardId: String, - private val cvc: ByteArray? = null + private val cardId: String ) : CommandSerializer() { override fun serialize(cardEnvironment: CardEnvironment): CommandApdu { @@ -49,8 +47,8 @@ class CreateWalletCommand( Tlv(TlvTag.CardId, cardId.hexToBytes()), Tlv(TlvTag.Pin2, cardEnvironment.pin2.calculateSha256()) ) - if (cvc != null) { - tlvData.add(Tlv(TlvTag.Cvc, cvc)) + if (cardEnvironment.cvc != null) { + tlvData.add(Tlv(TlvTag.Cvc, cardEnvironment.cvc)) } return CommandApdu(Instruction.CreateWallet, tlvData) diff --git a/tangem-core/src/main/java/com/tangem/commands/PurgeWalletCommand.kt b/tangem-core/src/main/java/com/tangem/commands/PurgeWalletCommand.kt index ea9edb8949..f8c3feaf7f 100644 --- a/tangem-core/src/main/java/com/tangem/commands/PurgeWalletCommand.kt +++ b/tangem-core/src/main/java/com/tangem/commands/PurgeWalletCommand.kt @@ -28,7 +28,6 @@ class PurgeWalletResponse( * If Is_Reusable flag is disabled, the card switches to ‘Purged’ state. * ‘Purged’ state is final, it makes the card useless. * @property cardId CID, Unique Tangem card ID number. - * @property cvc Optional 3-digit code printed on the card. Required if Use_CVC flag is set in Settings_Mask. */ class PurgeWalletCommand( private val cardId: String