From a710e7de77f2c1076d25647a3d4210f957a36846 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 1 Apr 2020 10:33:50 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../src/main/java/com/tangem/CardManager.kt | 2 +- .../ucase/domain/actions/PersonalizeAction.kt | 41 ++++---------- .../converter/PersonalizeConfigConverter.kt | 4 +- .../personalize/dto/CardManagerConfig.kt | 54 ------------------- .../dto/DefaultPersonalizeParams.kt | 51 ++++++++++++++++++ .../personalize/ui/PersonalizeFragment.kt | 35 ++++++------ .../personalize/ui/PersonalizeViewModel.kt | 2 +- .../src/main/res/layout/activity_main.xml | 0 8 files changed, 79 insertions(+), 110 deletions(-) delete mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/CardManagerConfig.kt create mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizeParams.kt delete mode 100644 tangem-demo/src/main/res/layout/activity_main.xml diff --git a/tangem-core/src/main/java/com/tangem/CardManager.kt b/tangem-core/src/main/java/com/tangem/CardManager.kt index baa96477e7..c5a1f99e77 100644 --- a/tangem-core/src/main/java/com/tangem/CardManager.kt +++ b/tangem-core/src/main/java/com/tangem/CardManager.kt @@ -274,7 +274,7 @@ class CardManager( val personalizationCommand = PersonalizeCommand(config, issuer, manufacturer, acquirer) val task = SingleCommandTask(personalizationCommand) task.performPreflightRead = false - runTask(task, cardId, callback = callback) + runTask(task, callback = callback) } /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt index 3ebe74db73..251e318315 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt @@ -1,46 +1,23 @@ package com.tangem.tangemtest.ucase.domain.actions -import com.tangem.commands.personalization.CardConfig -import com.tangem.tangemtest._arch.structure.impl.EditTextItem -import com.tangem.tangemtest._arch.structure.impl.getData +import com.tangem.commands.personalization.entities.CardConfig import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback -import com.tangem.tangemtest.ucase.variants.TlvId -import com.tangem.tasks.TaskEvent -import ru.dev.gbixahue.eu4d.lib.android.global.log.Log +import com.tangem.tangemtest.ucase.variants.personalize.dto.DefaultPersonalizeParams /** [REDACTED_AUTHOR] */ class PersonalizeAction : BaseCardAction() { override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) { - var cardId: String? = null - ScanAction().executeMainAction(attrs) { response, affectedList -> - when (response) { - is TaskEvent.Event -> { - Log.d(this, "ScanAction:response: TaskEvent.Event") - val item = affectedList.firstOrNull { it.id == TlvId.CardId } as? EditTextItem - ?: return@executeMainAction - cardId = item.getData() - if (cardId == null) { - handleResponse(response, null, attrs, callback) - return@executeMainAction - } - } - is TaskEvent.Completion -> { - Log.d(this, "ScanAction:response: TaskEvent.Completion") - if (cardId == null) { - handleResponse(response, null, attrs, callback) - return@executeMainAction - } + val cardConfig = attrs.payload.remove(cardConfig) as? CardConfig + ?: throw IllegalArgumentException("CardConfig must be in the payloads of the ParamsManager") - val cardConfig = attrs.payload.remove(cardConfig) as? CardConfig - ?: throw IllegalArgumentException("CardConfig must be in the payloads of the ParamsManager") + val issuer = DefaultPersonalizeParams.issuer() + val acquirer = DefaultPersonalizeParams.acquirer() + val manufacturer = DefaultPersonalizeParams.manufacturer() - attrs.cardManager.personalize(cardConfig, cardId!!) { - handleResponse(it, null, attrs, callback) - } - } - } + attrs.cardManager.personalize(cardConfig, issuer, manufacturer, acquirer) { + handleResponse(it, null, attrs, callback) } } diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizeConfigConverter.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizeConfigConverter.kt index e7b6d3240a..5ccefd3453 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizeConfigConverter.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizeConfigConverter.kt @@ -3,8 +3,8 @@ package com.tangem.tangemtest.ucase.variants.personalize.converter import com.tangem.commands.CardData import com.tangem.commands.EllipticCurve import com.tangem.commands.ProductMaskBuilder -import com.tangem.commands.personalization.CardConfig -import com.tangem.commands.personalization.NdefRecord +import com.tangem.commands.personalization.entities.CardConfig +import com.tangem.commands.personalization.entities.NdefRecord import com.tangem.tangemtest._arch.structure.Additional import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.abstraction.Block diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/CardManagerConfig.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/CardManagerConfig.kt deleted file mode 100644 index 424790bb68..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/CardManagerConfig.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.tangem.tangemtest.ucase.variants.personalize.dto - -import com.tangem.Config -import com.tangem.commands.personalization.entities.Issuer -import com.tangem.common.KeyPair - -/** -[REDACTED_AUTHOR] - */ - -interface CardManagerConfig { - companion object { - fun default(): Config { - val issuer = issuer() - return Config( - true, - issuer = issuer(), - issuerPublicKey = null, - acquirerKeyPair = acquirer(), - manufacturerKeyPair = manufacturer() - ) - } - - private fun issuer(): Issuer { - return Issuer( - name = "TANGEM SDK", - id = "TANGEM SDK" + "\u0000", - dataKeyPair = KeyPair( - "".toByteArray(), - "11121314151617184771ED81F2BACF57479E4735EB1405083927372D40DA9E92".toByteArray() - ), - transactionKeyPair = KeyPair( - "".toByteArray(), - "11121314151617184771ED81F2BACF57479E4735EB1405081918171615141312".toByteArray() - ) - ) - } - - private fun acquirer(): KeyPair { - return KeyPair( - "".toByteArray(), - "21222324252627284771ED81F2BACF57479E4735EB1405083927372D40DA9E92".toByteArray() - ) - } - - private fun manufacturer(): KeyPair { - val manufacturer = Manufacturer(Manufacturer.Mode.Developer) - return KeyPair( - manufacturer.publicKey, - manufacturer.privateKey - ) - } - } -} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizeParams.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizeParams.kt new file mode 100644 index 0000000000..c8d9afa0d1 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizeParams.kt @@ -0,0 +1,51 @@ +package com.tangem.tangemtest.ucase.variants.personalize.dto + +import com.tangem.commands.personalization.entities.Acquirer +import com.tangem.commands.personalization.entities.Issuer +import com.tangem.commands.personalization.entities.Manufacturer +import com.tangem.common.KeyPair + +/** +[REDACTED_AUTHOR] + */ + +interface DefaultPersonalizeParams { + companion object { + + fun issuer(): Issuer { + val name = "TANGEM SDK" + return Issuer( + name = name, + id = name + "\u0000", + dataKeyPair = KeyPair( + "".toByteArray(), + "11121314151617184771ED81F2BACF57479E4735EB1405083927372D40DA9E92".toByteArray() + ), + transactionKeyPair = KeyPair( + "".toByteArray(), + "11121314151617184771ED81F2BACF57479E4735EB1405081918171615141312".toByteArray() + ) + ) + } + + fun acquirer(): Acquirer { + val name = "Smart Cash" + return Acquirer( + name = name, + id = name + "\u0000", + keyPair = KeyPair( + "".toByteArray(), + "21222324252627284771ED81F2BACF57479E4735EB1405083927372D40DA9E92".toByteArray() + ) + ) + } + + fun manufacturer(): Manufacturer { + val keys = Manufacturer(com.tangem.tangemtest.ucase.variants.personalize.dto.Manufacturer.Mode.Developer) + return Manufacturer( + name = "Tangem", + keyPair = KeyPair(keys.publicKey, keys.privateKey) + ) + } + } +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeFragment.kt index 1316456113..db3b1a9980 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeFragment.kt @@ -12,10 +12,7 @@ import androidx.lifecycle.Observer import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.Snackbar import com.tangem.CardManager -import com.tangem.tangem_sdk_new.DefaultCardManagerDelegate -import com.tangem.tangem_sdk_new.NfcLifecycleObserver -import com.tangem.tangem_sdk_new.TerminalKeysStorage -import com.tangem.tangem_sdk_new.nfc.NfcManager +import com.tangem.tangem_sdk_new.extensions.init import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.structure.abstraction.Block import com.tangem.tangemtest._main.MainViewModel @@ -25,7 +22,6 @@ import com.tangem.tangemtest.ucase.domain.paramsManager.ParamsManagerFactory import com.tangem.tangemtest.ucase.resources.ActionType import com.tangem.tangemtest.ucase.ui.ActionViewModelFactory import com.tangem.tangemtest.ucase.ui.ParamsViewModel -import com.tangem.tangemtest.ucase.variants.personalize.dto.CardManagerConfig import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizeConfig import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.WidgetBuilder import kotlinx.android.synthetic.main.fg_personalize.* @@ -56,8 +52,6 @@ class PersonalizeFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val cardManager = initCardManager() ?: return - val blockList = mutableListOf() personalizeVM.ldBlockList.observe(viewLifecycleOwner, Observer { list -> blockList.clear() @@ -68,6 +62,7 @@ class PersonalizeFragment : Fragment() { personalizeVM.toggleDescriptionVisibility(it) }) + val cardManager = CardManager.init(requireActivity()) paramsVM.setCardManager(cardManager) paramsVM.ldResponse.observe(viewLifecycleOwner, Observer { Log.d(this, "action response: ${if (it.length > 50) it.substring(0..50) else it}") @@ -81,19 +76,19 @@ class PersonalizeFragment : Fragment() { } } - private fun initCardManager(): CardManager? { - val activity = activity ?: return null - val nfcManager = NfcManager().apply { - this.setCurrentActivity(activity) - activity.lifecycle.addObserver(NfcLifecycleObserver(this)) - } - val cardManagerDelegate = DefaultCardManagerDelegate(nfcManager.reader).apply { - this.activity = activity - } - return CardManager(nfcManager.reader, cardManagerDelegate, CardManagerConfig.default()).apply { - this.setTerminalKeysService(TerminalKeysStorage(activity.application)) - } - } +// private fun initCardManager(): CardManager? { +// val activity = activity ?: return null +// val nfcManager = NfcManager().apply { +// this.setCurrentActivity(activity) +// activity.lifecycle.addObserver(NfcLifecycleObserver(this)) +// } +// val cardManagerDelegate = DefaultCardManagerDelegate(nfcManager.reader).apply { +// this.activity = activity +// } +// return CardManager(nfcManager.reader, cardManagerDelegate, DefaultPersonalizeParams.default()).apply { +// this.setTerminalKeysService(TerminalKeysStorage(activity.application)) +// } +// } protected fun showSnackbarMessage(message: String) { Snackbar.make(mainView, message, BaseTransientBottomBar.LENGTH_SHORT).show() diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeViewModel.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeViewModel.kt index 56d9ba2aac..8449ddcfad 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeViewModel.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import com.google.gson.Gson -import com.tangem.commands.personalization.CardConfig +import com.tangem.commands.personalization.entities.CardConfig import com.tangem.tangemtest._arch.structure.abstraction.BaseItem import com.tangem.tangemtest._arch.structure.abstraction.Block import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizeConfigConverter diff --git a/tangem-demo/src/main/res/layout/activity_main.xml b/tangem-demo/src/main/res/layout/activity_main.xml deleted file mode 100644 index e69de29bb2..0000000000