diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt index a6ac650824..5e0519b5ce 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt @@ -11,9 +11,10 @@ import com.tangem.devkit.ucase.tunnel.ActionView import com.tangem.devkit.ucase.tunnel.ItemError import com.tangem.devkit.ucase.variants.personalize.CardNumberId import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigConverter -import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigToCardConfig +import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationJsonConverter import com.tangem.devkit.ucase.variants.personalize.dto.DefaultPersonalizationParams import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit.ucase.variants.personalize.dto.toCardConfig import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf /** @@ -37,10 +38,10 @@ class PersonalizeAction : BaseAction() { val acquirer = DefaultPersonalizationParams.acquirer() val manufacturer = DefaultPersonalizationParams.manufacturer() - val personalizeConfig = PersonalizationConfigConverter().convert(itemList, PersonalizationConfig.default()) - val cardConfig = PersonalizationConfigToCardConfig().convert(personalizeConfig) + val config = PersonalizationConfigConverter().convert(itemList, PersonalizationConfig.default()) + val jsonDto = PersonalizationJsonConverter().bToA(config) - attrs.tangemSdk.personalize(cardConfig, issuer, manufacturer, acquirer) { + attrs.tangemSdk.personalize(jsonDto.toCardConfig(), issuer, manufacturer, acquirer) { handleResult(payload, it, null, attrs, callback) } } diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt deleted file mode 100644 index 8d7c430b72..0000000000 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt +++ /dev/null @@ -1,107 +0,0 @@ -package com.tangem.devkit.ucase.variants.personalize.converter - -import com.tangem.commands.CardData -import com.tangem.commands.EllipticCurve -import com.tangem.commands.Product -import com.tangem.commands.ProductMaskBuilder -import com.tangem.commands.personalization.entities.CardConfig -import com.tangem.commands.personalization.entities.NdefRecord -import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig -import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationJson -import ru.dev.gbixahue.eu4d.lib.kotlin.common.Converter -import java.util.* - -class PersonalizationConfigToCardConfig : Converter { - - override fun convert(from: PersonalizationConfig): CardConfig { - val signingMethod = PersonalizationConfig.makeSigningMethodMask(from) - - val isNote = from.cardData.product_note - val isTag = from.cardData.product_tag - val isIdCard = from.cardData.product_id_card - val isIdIssuer = from.cardData.product_id_issuer - - val productMaskBuilder = ProductMaskBuilder() - if (isNote) productMaskBuilder.add(Product.Note) - if (isTag) productMaskBuilder.add(Product.Tag) - if (isIdCard) productMaskBuilder.add(Product.IdCard) - if (isIdIssuer) productMaskBuilder.add(Product.IdIssuer) - val productMask = productMaskBuilder.build() - - var tokenSymbol: String? = null - var tokenContractAddress: String? = null - var tokenDecimal: Long? = null - if (from.itsToken) { - tokenSymbol = from.cardData.token_symbol - tokenContractAddress = from.cardData.token_contract_address - tokenDecimal = from.cardData.token_decimal - } - - val blockchain = if (from.cardData.blockchain.isNotEmpty()) from.cardData.blockchain else from.blockchainCustom - val cardData = CardData( - blockchainName = blockchain, - batchId = from.cardData.batch, - productMask = productMask, - tokenSymbol = tokenSymbol, - tokenContractAddress = tokenContractAddress, - tokenDecimal = tokenDecimal?.toInt(), - issuerName = null, - manufactureDateTime = Calendar.getInstance().time, - manufacturerSignature = null) - - - val ndefs = mutableListOf() - if (from.uri.isNotEmpty()) { - ndefs.add(NdefRecord(NdefRecord.Type.URI, from.uri)) - } - when (from.aar) { - "None" -> null - PersonalizationJson.CUSTOM -> NdefRecord(NdefRecord.Type.AAR, from.aarCustom) - else -> NdefRecord(NdefRecord.Type.AAR, from.aar) - }?.let { ndefs.add(it) } - - return CardConfig( - "Tangem", - "Tangem Test", - from.series, - from.startNumber, - 1000, - from.PIN, - from.PIN2, - from.PIN3, - from.hexCrExKey, - from.CVC, - from.pauseBeforePIN2.toInt(), - from.smartSecurityDelay, - EllipticCurve.byName(from.curveID) ?: EllipticCurve.Secp256k1, - signingMethod, - from.MaxSignatures.toInt(), - from.isReusable, - from.allowSwapPIN, - from.allowSwapPIN2, - from.useActivation, - from.useCVC, - from.useNDEF, - from.useDynamicNDEF, - from.useOneCommandAtTime, - from.useBlock, - from.allowSelectBlockchain, - from.forbidPurgeWallet, - from.protocolAllowUnencrypted, - from.protocolAllowStaticEncryption, - from.protectIssuerDataAgainstReplay, - from.forbidDefaultPIN, - from.disablePrecomputedNDEF, - from.skipSecurityDelayIfValidatedByIssuer, - from.skipCheckPIN2andCVCIfValidatedByIssuer, - from.skipSecurityDelayIfValidatedByLinkedTerminal, - from.restrictOverwriteIssuerDataEx, - from.requireTerminalTxSignature, - from.requireTerminalCertSignature, - from.checkPIN3onCard, - from.createWallet, - cardData, - ndefs - ) - } -} \ No newline at end of file diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationJson.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationJson.kt index 8fedba06e5..afe2750564 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationJson.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationJson.kt @@ -2,7 +2,13 @@ package com.tangem.devkit.ucase.variants.personalize.dto import com.google.gson.Gson import com.google.gson.GsonBuilder +import com.tangem.commands.EllipticCurve +import com.tangem.commands.Product +import com.tangem.commands.ProductMaskBuilder +import com.tangem.commands.SigningMethodMask +import com.tangem.commands.personalization.entities.CardConfig import com.tangem.commands.personalization.entities.NdefRecord +import java.util.* class PersonalizationJson { @@ -60,4 +66,73 @@ class PersonalizationJson { return builder.create() } } +} + +fun PersonalizationJson.toCardConfig(): CardConfig { + val isNote = cardData.product_note + val isTag = cardData.product_tag + val isIdCard = cardData.product_id_card + val isIdIssuer = cardData.product_id_issuer + + val productMaskBuilder = ProductMaskBuilder() + if (isNote) productMaskBuilder.add(Product.Note) + if (isTag) productMaskBuilder.add(Product.Tag) + if (isIdCard) productMaskBuilder.add(Product.IdCard) + if (isIdIssuer) productMaskBuilder.add(Product.IdIssuer) + val productMask = productMaskBuilder.build() + + val sdkCardData = com.tangem.commands.CardData( + blockchainName = this.cardData.blockchain, + batchId = this.cardData.batch, + productMask = productMask, + tokenSymbol = this.cardData.token_symbol, + tokenContractAddress = this.cardData.token_contract_address, + tokenDecimal = this.cardData.token_decimal.toInt(), + issuerName = this.issuerName, + manufactureDateTime = Calendar.getInstance().time, + manufacturerSignature = null) + + return CardConfig( + this.issuerName, + "Tangem Test", + this.series, + this.startNumber, + this.count.toInt(), + this.PIN, + this.PIN2, + this.PIN3, + this.hexCrExKey, + this.CVC, + this.pauseBeforePIN2.toInt(), + this.smartSecurityDelay, + EllipticCurve.byName(this.curveID) ?: EllipticCurve.Secp256k1, + SigningMethodMask(this.SigningMethod.toInt()), + this.MaxSignatures.toInt(), + this.isReusable, + this.allowSwapPIN, + this.allowSwapPIN2, + this.useActivation, + this.useCVC, + this.useNDEF, + this.useDynamicNDEF, + this.useOneCommandAtTime, + this.useBlock, + this.allowSelectBlockchain, + this.forbidPurgeWallet, + this.protocolAllowUnencrypted, + this.protocolAllowStaticEncryption, + this.protectIssuerDataAgainstReplay, + this.forbidDefaultPIN, + this.disablePrecomputedNDEF, + this.skipSecurityDelayIfValidatedByIssuer, + this.skipCheckPIN2andCVCIfValidatedByIssuer, + this.skipSecurityDelayIfValidatedByLinkedTerminal, + this.restrictOverwriteIssuerDataEx, + this.requireTerminalTxSignature, + this.requireTerminalCertSignature, + this.checkPIN3onCard, + this.createWallet != 0L, + sdkCardData, + this.ndef + ) } \ No newline at end of file