From a11c1571784627f358451670e066d057dd4f19a6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 26 Mar 2020 20:04:25 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/tangemtest/_arch/structure/Ids.kt | 103 ----------- .../initializers/PersonalizeResources.kt | 133 +++++++------- .../ucase/variants/personalize/Ids.kt | 113 ++++++++++++ .../converter/IdToValueAssociations.kt | 111 ++++++------ .../converter/JsonToBlockConverter.kt | 166 +++++++++--------- .../personalize/converter/ValueMapper.kt | 111 ++++++------ 6 files changed, 376 insertions(+), 361 deletions(-) create mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt index 6328a50b8b..3b40edcc77 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt @@ -5,109 +5,6 @@ package com.tangem.tangemtest._arch.structure */ interface Id -enum class BlockId : Id { - CARD_NUMBER, - COMMON, - SIGNING_METHOD, - SIGN_HASH_EX_PROP, - DENOMINATION, - TOKEN, - PROD_MASK, - SETTINGS_MASK, - SETTINGS_MASK_PROTOCOL_ENC, - SETTINGS_MASK_NDEF, - PINS, -} - -enum class CardNumber : Id { - SERIES, - NUMBER, -} - -enum class Common : Id { - CURVE, - BLOCKCHAIN, - BLOCKCHAIN_CUSTOM, - MAX_SIGNATURES, - CREATE_WALLET, -} - -enum class SigningMethod : Id { - SIGN_TX, - SIGN_TX_RAW, - SIGN_VALIDATED_TX, - SIGN_VALIDATED_TX_RAW, - SIGN_VALIDATED_TX_ISSUER, - SIGN_VALIDATED_TX_RAW_ISSUER, - SIGN_EXTERNAL, -} - -enum class SignHashExProp : Id { - PIN_LESS_FLOOR_LIMIT, - CRYPTO_EXTRACT_KEY, - REQUIRE_TERMINAL_CERT_SIG, - REQUIRE_TERMINAL_TX_SIG, - CHECK_PIN3, -} - -enum class Denomination : Id { - WRITE_ON_PERSONALIZE, - DENOMINATION, -} - -enum class Token : Id { - ITS_TOKEN, - SYMBOL, - CONTRACT_ADDRESS, - DECIMAL -} - -enum class ProductMask : Id { - NOTE, - TAG, - ID_CARD -} - -enum class SettingsMask : Id { - IS_REUSABLE, - NEED_ACTIVATION, - FORBID_PURGE, - ALLOW_SELECT_BLOCKCHAIN, - USE_BLOCK, - ONE_APDU, - USE_CVC, - ALLOW_SWAP_PIN, - ALLOW_SWAP_PIN2, - FORBID_DEFAULT_PIN, - SMART_SECURITY_DELAY, - PROTECT_ISSUER_DATA_AGAINST_REPLAY, - SKIP_SECURITY_DELAY_IF_VALIDATED, - SKIP_PIN2_CVC_IF_VALIDATED, - SKIP_SECURITY_DELAY_ON_LINKED_TERMINAL, - RESTRICT_OVERWRITE_EXTRA_ISSUER_DATA, -} - -enum class SettingsMaskProtocolEnc : Id { - ALLOW_UNENCRYPTED, - ALLOW_FAST_ENCRYPTION -} - -enum class SettingsMaskNdef : Id { - USE_NDEF, - DYNAMIC_NDEF, - DISABLE_PRECOMPUTED_NDEF, - AAR, - CUSTOM_AAR -} - -enum class Pins : Id { - PIN, - PIN2, - PIN3, - CVC, - PAUSE_BEFORE_PIN2 -} - enum class Additional : Id { UNDEFINED, JSON_INCOMING, diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizeResources.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizeResources.kt index 928ae434d6..ca78771e14 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizeResources.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizeResources.kt @@ -1,9 +1,10 @@ package com.tangem.tangemtest.ucase.resources.initializers import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.* +import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest.ucase.resources.ResourceHolder import com.tangem.tangemtest.ucase.resources.Resources +import com.tangem.tangemtest.ucase.variants.personalize.* import ru.dev.gbixahue.eu4d.lib.kotlin.common.TypedHolder /** @@ -26,104 +27,104 @@ class PersonalizeResources() { } private fun initBlock(holder: TypedHolder) { - holder.register(BlockId.CARD_NUMBER, Resources(R.string.pers_block_card_number, R.string.info_pers_block_card_number)) - holder.register(BlockId.COMMON, Resources(R.string.pers_block_common, R.string.info_pers_block_common)) - holder.register(BlockId.SIGNING_METHOD, Resources(R.string.pers_block_signing_method, R.string.info_pers_block_signing_method)) - holder.register(BlockId.SIGN_HASH_EX_PROP, Resources(R.string.pers_block_sign_hash_ex_prop, R.string.info_pers_block_sign_hash_ex_prop)) - holder.register(BlockId.DENOMINATION, Resources(R.string.pers_block_denomination, R.string.info_pers_block_denomination)) - holder.register(BlockId.TOKEN, Resources(R.string.pers_block_token, R.string.info_pers_block_token)) - holder.register(BlockId.PROD_MASK, Resources(R.string.pers_block_product_mask, R.string.info_pers_block_product_mask)) - holder.register(BlockId.SETTINGS_MASK, Resources(R.string.pers_block_settings_mask, R.string.info_pers_block_settings_mask)) - holder.register(BlockId.SETTINGS_MASK_PROTOCOL_ENC, Resources(R.string.pers_block_settings_mask_protocol_enc, R.string.info_pers_block_settings_mask_protocol_enc)) - holder.register(BlockId.SETTINGS_MASK_NDEF, Resources(R.string.pers_block_settings_mask_ndef, R.string.info_pers_block_settings_mask_ndef)) - holder.register(BlockId.PINS, Resources(R.string.pers_block_pins, R.string.info_pers_block_pins)) + holder.register(BlockId.CardNumber, Resources(R.string.pers_block_card_number, R.string.info_pers_block_card_number)) + holder.register(BlockId.Common, Resources(R.string.pers_block_common, R.string.info_pers_block_common)) + holder.register(BlockId.SigningMethod, Resources(R.string.pers_block_signing_method, R.string.info_pers_block_signing_method)) + holder.register(BlockId.SignHashExProp, Resources(R.string.pers_block_sign_hash_ex_prop, R.string.info_pers_block_sign_hash_ex_prop)) + holder.register(BlockId.Denomination, Resources(R.string.pers_block_denomination, R.string.info_pers_block_denomination)) + holder.register(BlockId.Token, Resources(R.string.pers_block_token, R.string.info_pers_block_token)) + holder.register(BlockId.ProdMask, Resources(R.string.pers_block_product_mask, R.string.info_pers_block_product_mask)) + holder.register(BlockId.SettingsMask, Resources(R.string.pers_block_settings_mask, R.string.info_pers_block_settings_mask)) + holder.register(BlockId.SettingsMaskProtocolEnc, Resources(R.string.pers_block_settings_mask_protocol_enc, R.string.info_pers_block_settings_mask_protocol_enc)) + holder.register(BlockId.SettingsMaskNdef, Resources(R.string.pers_block_settings_mask_ndef, R.string.info_pers_block_settings_mask_ndef)) + holder.register(BlockId.Pins, Resources(R.string.pers_block_pins, R.string.info_pers_block_pins)) } private fun initCardNumber(holder: TypedHolder) { - holder.register(CardNumber.SERIES, Resources(R.string.pers_item_series, R.string.info_pers_item_series)) - holder.register(CardNumber.NUMBER, Resources(R.string.pers_item_number, R.string.info_pers_item_number)) + holder.register(CardNumber.Series, Resources(R.string.pers_item_series, R.string.info_pers_item_series)) + holder.register(CardNumber.Number, Resources(R.string.pers_item_number, R.string.info_pers_item_number)) } private fun initCommon(holder: TypedHolder) { - holder.register(Common.CURVE, Resources(R.string.pers_item_curve, R.string.info_pers_item_curve)) - holder.register(Common.BLOCKCHAIN, Resources(R.string.pers_item_blockchain, R.string.info_pers_item_blockchain)) - holder.register(Common.BLOCKCHAIN_CUSTOM, Resources(R.string.pers_item_custom_blockchain, R.string.info_pers_item_custom_blockchain)) - holder.register(Common.MAX_SIGNATURES, Resources(R.string.pers_item_max_signatures, R.string.info_pers_item_max_signatures)) - holder.register(Common.CREATE_WALLET, Resources(R.string.pers_item_create_wallet, R.string.info_pers_item_create_wallet)) + holder.register(Common.Curve, Resources(R.string.pers_item_curve, R.string.info_pers_item_curve)) + holder.register(Common.Blockchain, Resources(R.string.pers_item_blockchain, R.string.info_pers_item_blockchain)) + holder.register(Common.BlockchainCustom, Resources(R.string.pers_item_custom_blockchain, R.string.info_pers_item_custom_blockchain)) + holder.register(Common.MaxSignatures, Resources(R.string.pers_item_max_signatures, R.string.info_pers_item_max_signatures)) + holder.register(Common.CreateWallet, Resources(R.string.pers_item_create_wallet, R.string.info_pers_item_create_wallet)) } private fun initSigningMethod(holder: TypedHolder) { - holder.register(SigningMethod.SIGN_TX, Resources(R.string.pers_item_sign_tx_hashes, R.string.info_pers_item_sign_tx_hashes)) - holder.register(SigningMethod.SIGN_TX_RAW, Resources(R.string.pers_item_sign_raw_tx, R.string.info_pers_item_sign_raw_tx)) - holder.register(SigningMethod.SIGN_VALIDATED_TX, Resources(R.string.pers_item_sign_validated_tx_hashes, R.string.info_pers_item_sign_validated_tx_hashes)) - holder.register(SigningMethod.SIGN_VALIDATED_TX_RAW, Resources(R.string.pers_item_sign_validated_raw_tx, R.string.info_pers_item_sign_validated_raw_tx)) - holder.register(SigningMethod.SIGN_VALIDATED_TX_ISSUER, Resources(R.string.pers_item_sign_validated_tx_hashes_with_iss_data, R.string.info_pers_item_sign_validated_tx_hashes_with_iss_data)) - holder.register(SigningMethod.SIGN_VALIDATED_TX_RAW_ISSUER, Resources(R.string.pers_item_sign_validated_raw_tx_with_iss_data, R.string.info_pers_item_sign_validated_raw_tx_with_iss_data)) - holder.register(SigningMethod.SIGN_EXTERNAL, Resources(R.string.pers_item_sign_hash_ex, R.string.info_pers_item_sign_hash_ex)) + holder.register(SigningMethod.SignTx, Resources(R.string.pers_item_sign_tx_hashes, R.string.info_pers_item_sign_tx_hashes)) + holder.register(SigningMethod.SignTxRaw, Resources(R.string.pers_item_sign_raw_tx, R.string.info_pers_item_sign_raw_tx)) + holder.register(SigningMethod.SignValidatedTx, Resources(R.string.pers_item_sign_validated_tx_hashes, R.string.info_pers_item_sign_validated_tx_hashes)) + holder.register(SigningMethod.SignValidatedTxRaw, Resources(R.string.pers_item_sign_validated_raw_tx, R.string.info_pers_item_sign_validated_raw_tx)) + holder.register(SigningMethod.SignValidatedTxIssuer, Resources(R.string.pers_item_sign_validated_tx_hashes_with_iss_data, R.string.info_pers_item_sign_validated_tx_hashes_with_iss_data)) + holder.register(SigningMethod.SignValidatedTxRawIssuer, Resources(R.string.pers_item_sign_validated_raw_tx_with_iss_data, R.string.info_pers_item_sign_validated_raw_tx_with_iss_data)) + holder.register(SigningMethod.SignExternal, Resources(R.string.pers_item_sign_hash_ex, R.string.info_pers_item_sign_hash_ex)) } private fun initSignHashExProp(holder: TypedHolder) { - holder.register(SignHashExProp.PIN_LESS_FLOOR_LIMIT, Resources(R.string.pers_item_pin_less_floor_limit, R.string.info_pers_item_pin_less_floor_limit)) - holder.register(SignHashExProp.CRYPTO_EXTRACT_KEY, Resources(R.string.pers_item_cr_ex_key, R.string.info_pers_item_cr_ex_key)) - holder.register(SignHashExProp.REQUIRE_TERMINAL_CERT_SIG, Resources(R.string.pers_item_require_terminal_cert_sig, R.string.info_pers_item_require_terminal_cert_sig)) - holder.register(SignHashExProp.REQUIRE_TERMINAL_TX_SIG, Resources(R.string.pers_item_require_terminal_tx_sig, R.string.info_pers_item_require_terminal_tx_sig)) - holder.register(SignHashExProp.CHECK_PIN3, Resources(R.string.pers_item_pin3, R.string.info_pers_item_pin3)) + holder.register(SignHashExProp.PinLessFloorLimit, Resources(R.string.pers_item_pin_less_floor_limit, R.string.info_pers_item_pin_less_floor_limit)) + holder.register(SignHashExProp.CryptoExKey, Resources(R.string.pers_item_cr_ex_key, R.string.info_pers_item_cr_ex_key)) + holder.register(SignHashExProp.RequireTerminalCertSig, Resources(R.string.pers_item_require_terminal_cert_sig, R.string.info_pers_item_require_terminal_cert_sig)) + holder.register(SignHashExProp.RequireTerminalTxSig, Resources(R.string.pers_item_require_terminal_tx_sig, R.string.info_pers_item_require_terminal_tx_sig)) + holder.register(SignHashExProp.CheckPin3, Resources(R.string.pers_item_pin3, R.string.info_pers_item_pin3)) } private fun initDenomination(holder: TypedHolder) { - holder.register(Denomination.WRITE_ON_PERSONALIZE, Resources(R.string.pers_item_write_on_personalize, R.string.info_pers_item_write_on_personalize)) - holder.register(Denomination.DENOMINATION, Resources(R.string.pers_item_denomination, R.string.info_pers_item_denomination)) + holder.register(Denomination.WriteOnPersonalize, Resources(R.string.pers_item_write_on_personalize, R.string.info_pers_item_write_on_personalize)) + holder.register(Denomination.Denomination, Resources(R.string.pers_item_denomination, R.string.info_pers_item_denomination)) } private fun initToken(holder: TypedHolder) { - holder.register(Token.ITS_TOKEN, Resources(R.string.pers_item_its_token, R.string.info_pers_item_its_token)) - holder.register(Token.SYMBOL, Resources(R.string.pers_item_symbol, R.string.info_pers_item_symbol)) - holder.register(Token.CONTRACT_ADDRESS, Resources(R.string.pers_item_contract_address, R.string.info_pers_item_contract_address)) - holder.register(Token.DECIMAL, Resources(R.string.pers_item_decimal, R.string.info_pers_item_decimal)) + holder.register(Token.ItsToken, Resources(R.string.pers_item_its_token, R.string.info_pers_item_its_token)) + holder.register(Token.Symbol, Resources(R.string.pers_item_symbol, R.string.info_pers_item_symbol)) + holder.register(Token.ContractAddress, Resources(R.string.pers_item_contract_address, R.string.info_pers_item_contract_address)) + holder.register(Token.Decimal, Resources(R.string.pers_item_decimal, R.string.info_pers_item_decimal)) } private fun initProductMask(holder: TypedHolder) { - holder.register(ProductMask.NOTE, Resources(R.string.pers_item_note, R.string.info_pers_item_note)) - holder.register(ProductMask.TAG, Resources(R.string.pers_item_tag, R.string.info_pers_item_tag)) - holder.register(ProductMask.ID_CARD, Resources(R.string.pers_item_id_card, R.string.info_pers_item_id_card)) + holder.register(ProductMask.Note, Resources(R.string.pers_item_note, R.string.info_pers_item_note)) + holder.register(ProductMask.Tag, Resources(R.string.pers_item_tag, R.string.info_pers_item_tag)) + holder.register(ProductMask.CardId, Resources(R.string.pers_item_id_card, R.string.info_pers_item_id_card)) } private fun initSettingsMask(holder: TypedHolder) { - holder.register(SettingsMask.IS_REUSABLE, Resources(R.string.pers_item_is_reusable, R.string.info_pers_item_is_reusable)) - holder.register(SettingsMask.NEED_ACTIVATION, Resources(R.string.pers_item_need_activation, R.string.info_pers_item_need_activation)) - holder.register(SettingsMask.FORBID_PURGE, Resources(R.string.pers_item_forbid_purge, R.string.info_pers_item_forbid_purge)) - holder.register(SettingsMask.ALLOW_SELECT_BLOCKCHAIN, Resources(R.string.pers_item_allow_select_blockchain, R.string.info_pers_item_allow_select_blockchain)) - holder.register(SettingsMask.USE_BLOCK, Resources(R.string.pers_item_use_block, R.string.info_pers_item_use_block)) - holder.register(SettingsMask.ONE_APDU, Resources(R.string.pers_item_one_apdu_at_once, R.string.info_pers_item_one_apdu_at_once)) - holder.register(SettingsMask.USE_CVC, Resources(R.string.pers_item_use_cvc, R.string.info_pers_item_use_cvc)) - holder.register(SettingsMask.ALLOW_SWAP_PIN, Resources(R.string.pers_item_allow_swap_pin, R.string.info_pers_item_allow_swap_pin)) - holder.register(SettingsMask.ALLOW_SWAP_PIN2, Resources(R.string.pers_item_allow_swap_pin2, R.string.info_pers_item_allow_swap_pin2)) - holder.register(SettingsMask.FORBID_DEFAULT_PIN, Resources(R.string.pers_item_forbid_default_pin, R.string.info_pers_item_forbid_default_pin)) - holder.register(SettingsMask.SMART_SECURITY_DELAY, Resources(R.string.pers_item_smart_security_delay, R.string.info_pers_item_smart_security_delay)) - holder.register(SettingsMask.PROTECT_ISSUER_DATA_AGAINST_REPLAY, Resources(R.string.pers_item_protect_issuer_data_against_replay, R.string.info_pers_item_protect_issuer_data_against_replay)) - holder.register(SettingsMask.SKIP_SECURITY_DELAY_IF_VALIDATED, Resources(R.string.pers_item_skip_security_delay_if_validated, R.string.info_pers_item_skip_security_delay_if_validated)) - holder.register(SettingsMask.SKIP_PIN2_CVC_IF_VALIDATED, Resources(R.string.pers_item_skip_pin2_and_cvc_if_validated, R.string.info_pers_item_skip_pin2_and_cvc_if_validated)) - holder.register(SettingsMask.SKIP_SECURITY_DELAY_ON_LINKED_TERMINAL, Resources(R.string.pers_item_skip_security_delay_on_linked_terminal, R.string.info_pers_item_skip_security_delay_on_linked_terminal)) - holder.register(SettingsMask.RESTRICT_OVERWRITE_EXTRA_ISSUER_DATA, Resources(R.string.pers_item_restrict_overwrite_ex_issuer_data, R.string.info_pers_item_restrict_overwrite_ex_issuer_data)) + holder.register(SettingsMask.IsReusable, Resources(R.string.pers_item_is_reusable, R.string.info_pers_item_is_reusable)) + holder.register(SettingsMask.NeedActivation, Resources(R.string.pers_item_need_activation, R.string.info_pers_item_need_activation)) + holder.register(SettingsMask.ForbidPurge, Resources(R.string.pers_item_forbid_purge, R.string.info_pers_item_forbid_purge)) + holder.register(SettingsMask.AllowSelectBlockchain, Resources(R.string.pers_item_allow_select_blockchain, R.string.info_pers_item_allow_select_blockchain)) + holder.register(SettingsMask.UseBlock, Resources(R.string.pers_item_use_block, R.string.info_pers_item_use_block)) + holder.register(SettingsMask.OneApdu, Resources(R.string.pers_item_one_apdu_at_once, R.string.info_pers_item_one_apdu_at_once)) + holder.register(SettingsMask.UseCvc, Resources(R.string.pers_item_use_cvc, R.string.info_pers_item_use_cvc)) + holder.register(SettingsMask.AllowSwapPin, Resources(R.string.pers_item_allow_swap_pin, R.string.info_pers_item_allow_swap_pin)) + holder.register(SettingsMask.AllowSwapPin2, Resources(R.string.pers_item_allow_swap_pin2, R.string.info_pers_item_allow_swap_pin2)) + holder.register(SettingsMask.ForbidDefaultPin, Resources(R.string.pers_item_forbid_default_pin, R.string.info_pers_item_forbid_default_pin)) + holder.register(SettingsMask.SmartSecurityDelay, Resources(R.string.pers_item_smart_security_delay, R.string.info_pers_item_smart_security_delay)) + holder.register(SettingsMask.ProtectIssuerDataAgainstReplay, Resources(R.string.pers_item_protect_issuer_data_against_replay, R.string.info_pers_item_protect_issuer_data_against_replay)) + holder.register(SettingsMask.SkipSecurityDelayIfValidated, Resources(R.string.pers_item_skip_security_delay_if_validated, R.string.info_pers_item_skip_security_delay_if_validated)) + holder.register(SettingsMask.SkipPin2CvcIfValidated, Resources(R.string.pers_item_skip_pin2_and_cvc_if_validated, R.string.info_pers_item_skip_pin2_and_cvc_if_validated)) + holder.register(SettingsMask.SkipSecurityDelayOnLinkedTerminal, Resources(R.string.pers_item_skip_security_delay_on_linked_terminal, R.string.info_pers_item_skip_security_delay_on_linked_terminal)) + holder.register(SettingsMask.RestrictOverwriteExtraIssuerData, Resources(R.string.pers_item_restrict_overwrite_ex_issuer_data, R.string.info_pers_item_restrict_overwrite_ex_issuer_data)) } private fun initSettingsMaskProtocolEnc(holder: TypedHolder) { - holder.register(SettingsMaskProtocolEnc.ALLOW_UNENCRYPTED, Resources(R.string.pers_item_allow_unencrypted, R.string.info_pers_item_allow_unencrypted)) - holder.register(SettingsMaskProtocolEnc.ALLOW_FAST_ENCRYPTION, Resources(R.string.pers_item_allow_fast_encryption, R.string.info_pers_item_allow_fast_encryption)) + holder.register(SettingsMaskProtocolEnc.AllowUnencrypted, Resources(R.string.pers_item_allow_unencrypted, R.string.info_pers_item_allow_unencrypted)) + holder.register(SettingsMaskProtocolEnc.AlloFastEncryption, Resources(R.string.pers_item_allow_fast_encryption, R.string.info_pers_item_allow_fast_encryption)) } private fun initSettingsMaskNde(holder: TypedHolder) { - holder.register(SettingsMaskNdef.USE_NDEF, Resources(R.string.pers_item_use_ndef, R.string.info_pers_item_use_ndef)) - holder.register(SettingsMaskNdef.DYNAMIC_NDEF, Resources(R.string.pers_item_dynamic_ndef, R.string.info_pers_item_dynamic_ndef)) - holder.register(SettingsMaskNdef.DISABLE_PRECOMPUTED_NDEF, Resources(R.string.pers_item_disable_precomputed_ndef, R.string.info_pers_item_disable_precomputed_ndef)) + holder.register(SettingsMaskNdef.UseNdef, Resources(R.string.pers_item_use_ndef, R.string.info_pers_item_use_ndef)) + holder.register(SettingsMaskNdef.DynamicNdef, Resources(R.string.pers_item_dynamic_ndef, R.string.info_pers_item_dynamic_ndef)) + holder.register(SettingsMaskNdef.DisablePrecomputedNdef, Resources(R.string.pers_item_disable_precomputed_ndef, R.string.info_pers_item_disable_precomputed_ndef)) holder.register(SettingsMaskNdef.AAR, Resources(R.string.pers_item_aar, R.string.info_pers_item_aar)) } private fun initPins(holder: TypedHolder) { - holder.register(Pins.PIN, Resources(R.string.pers_item_pin, R.string.info_pers_item_pin)) - holder.register(Pins.PIN2, Resources(R.string.pers_item_pin2, R.string.info_pers_item_pin2)) - holder.register(Pins.PIN3, Resources(R.string.pers_item_pin3, R.string.info_pers_item_pin3)) - holder.register(Pins.CVC, Resources(R.string.pers_item_cvc, R.string.info_pers_item_cvc)) - holder.register(Pins.PAUSE_BEFORE_PIN2, Resources(R.string.pers_item_pause_before_pin2, R.string.info_pers_item_pause_before_pin2)) + holder.register(Pins.Pin, Resources(R.string.pers_item_pin, R.string.info_pers_item_pin)) + holder.register(Pins.Pin2, Resources(R.string.pers_item_pin2, R.string.info_pers_item_pin2)) + holder.register(Pins.Pin3, Resources(R.string.pers_item_pin3, R.string.info_pers_item_pin3)) + holder.register(Pins.Cvc, Resources(R.string.pers_item_cvc, R.string.info_pers_item_cvc)) + holder.register(Pins.PauseBeforePin2, Resources(R.string.pers_item_pause_before_pin2, R.string.info_pers_item_pause_before_pin2)) } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt new file mode 100644 index 0000000000..23c31e2fe8 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt @@ -0,0 +1,113 @@ +package com.tangem.tangemtest.ucase.variants.personalize + +import com.tangem.tangemtest._arch.structure.Id + +/** +[REDACTED_AUTHOR] + */ + +interface PersonalizeId : Id + +interface BlockItem : PersonalizeId + +enum class BlockId : PersonalizeId { + CardNumber, + Common, + SigningMethod, + SignHashExProp, + Denomination, + Token, + ProdMask, + SettingsMask, + SettingsMaskProtocolEnc, + SettingsMaskNdef, + Pins, +} + +enum class CardNumber : BlockItem { + Series, + Number, +} + +enum class Common : BlockItem { + Curve, + Blockchain, + BlockchainCustom, + MaxSignatures, + CreateWallet, +} + +enum class SigningMethod : BlockItem { + SignTx, + SignTxRaw, + SignValidatedTx, + SignValidatedTxRaw, + SignValidatedTxIssuer, + SignValidatedTxRawIssuer, + SignExternal, +} + +enum class SignHashExProp : BlockItem { + PinLessFloorLimit, + CryptoExKey, + RequireTerminalCertSig, + RequireTerminalTxSig, + CheckPin3, +} + +enum class Denomination : BlockItem { + WriteOnPersonalize, + Denomination, +} + +enum class Token : Id { + ItsToken, + Symbol, + ContractAddress, + Decimal +} + +enum class ProductMask : BlockItem { + Note, + Tag, + CardId +} + +enum class SettingsMask : BlockItem { + IsReusable, + NeedActivation, + ForbidPurge, + AllowSelectBlockchain, + UseBlock, + OneApdu, + UseCvc, + AllowSwapPin, + AllowSwapPin2, + ForbidDefaultPin, + SmartSecurityDelay, + ProtectIssuerDataAgainstReplay, + SkipSecurityDelayIfValidated, + SkipPin2CvcIfValidated, + SkipSecurityDelayOnLinkedTerminal, + RestrictOverwriteExtraIssuerData, +} + +enum class SettingsMaskProtocolEnc : BlockItem { + AllowUnencrypted, + AlloFastEncryption +} + +enum class SettingsMaskNdef : BlockItem { + UseNdef, + DynamicNdef, + DisablePrecomputedNdef, + AAR, +} + +enum class Pins : BlockItem { + Pin, + Pin2, + Pin3, + Cvc, + PauseBeforePin2 +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/IdToValueAssociations.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/IdToValueAssociations.kt index dade4fa936..ee5e6cf935 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/IdToValueAssociations.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/IdToValueAssociations.kt @@ -1,7 +1,8 @@ package com.tangem.tangemtest.ucase.variants.personalize.converter -import com.tangem.tangemtest._arch.structure.* +import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.impl.KeyValue +import com.tangem.tangemtest.ucase.variants.personalize.* import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizeConfig import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder @@ -22,61 +23,61 @@ class IdToValueAssociations : BaseTypedHolder() { // All registered association values can't be objects fun init(from: PersonalizeConfig) { - register(CardNumber.SERIES, Value(from.series)) - register(CardNumber.NUMBER, Value(from.startNumber)) - register(Common.CURVE, Value(from.curveID, Helper.listOfCurves())) - register(Common.BLOCKCHAIN, Value(from.blockchain, Helper.listOfBlockchain())) - register(Common.BLOCKCHAIN_CUSTOM, Value("")) - register(Common.MAX_SIGNATURES, Value(from.MaxSignatures)) - register(Common.CREATE_WALLET, Value(from.createWallet)) - register(SigningMethod.SIGN_TX, Value(from.SigningMethod0)) - register(SigningMethod.SIGN_TX_RAW, Value(from.SigningMethod1)) - register(SigningMethod.SIGN_VALIDATED_TX, Value(from.SigningMethod2)) - register(SigningMethod.SIGN_VALIDATED_TX_RAW, Value(from.SigningMethod3)) - register(SigningMethod.SIGN_VALIDATED_TX_ISSUER, Value(from.SigningMethod4)) - register(SigningMethod.SIGN_VALIDATED_TX_RAW_ISSUER, Value(from.SigningMethod5)) - register(SigningMethod.SIGN_EXTERNAL, Value(from.SigningMethod6)) - register(SignHashExProp.PIN_LESS_FLOOR_LIMIT, Value(from.pinLessFloorLimit)) - register(SignHashExProp.CRYPTO_EXTRACT_KEY, Value(from.hexCrExKey)) - register(SignHashExProp.REQUIRE_TERMINAL_CERT_SIG, Value(from.requireTerminalCertSignature)) - register(SignHashExProp.REQUIRE_TERMINAL_TX_SIG, Value(from.requireTerminalTxSignature)) - register(SignHashExProp.CHECK_PIN3, Value(from.checkPIN3onCard)) - register(Denomination.WRITE_ON_PERSONALIZE, Value(from.writeOnPersonalization)) - register(Denomination.DENOMINATION, Value(from.denomination)) - register(Token.ITS_TOKEN, Value(from.itsToken)) - register(Token.SYMBOL, Value(from.symbol)) - register(Token.CONTRACT_ADDRESS, Value(from.contractAddress)) - register(Token.DECIMAL, Value(from.decimal)) - register(ProductMask.NOTE, Value(from.cardData.product_note)) - register(ProductMask.TAG, Value(from.cardData.product_tag)) - register(ProductMask.ID_CARD, Value(from.cardData.product_id_card)) - register(SettingsMask.IS_REUSABLE, Value(from.isReusable)) - register(SettingsMask.NEED_ACTIVATION, Value(from.useActivation)) - register(SettingsMask.FORBID_PURGE, Value(from.forbidPurgeWallet)) - register(SettingsMask.ALLOW_SELECT_BLOCKCHAIN, Value(from.allowSelectBlockchain)) - register(SettingsMask.USE_BLOCK, Value(from.useBlock)) - register(SettingsMask.ONE_APDU, Value(from.useOneCommandAtTime)) - register(SettingsMask.USE_CVC, Value(from.useCVC)) - register(SettingsMask.ALLOW_SWAP_PIN, Value(from.allowSwapPIN)) - register(SettingsMask.ALLOW_SWAP_PIN2, Value(from.allowSwapPIN2)) - register(SettingsMask.FORBID_DEFAULT_PIN, Value(from.forbidDefaultPIN)) - register(SettingsMask.SMART_SECURITY_DELAY, Value(from.smartSecurityDelay)) - register(SettingsMask.PROTECT_ISSUER_DATA_AGAINST_REPLAY, Value(from.protectIssuerDataAgainstReplay)) - register(SettingsMask.SKIP_SECURITY_DELAY_IF_VALIDATED, Value(from.skipSecurityDelayIfValidatedByIssuer)) - register(SettingsMask.SKIP_PIN2_CVC_IF_VALIDATED, Value(from.skipCheckPIN2andCVCIfValidatedByIssuer)) - register(SettingsMask.SKIP_SECURITY_DELAY_ON_LINKED_TERMINAL, Value(from.skipSecurityDelayIfValidatedByLinkedTerminal)) - register(SettingsMask.RESTRICT_OVERWRITE_EXTRA_ISSUER_DATA, Value(from.restrictOverwriteIssuerDataEx)) - register(SettingsMaskProtocolEnc.ALLOW_UNENCRYPTED, Value(from.protocolAllowUnencrypted)) - register(SettingsMaskProtocolEnc.ALLOW_FAST_ENCRYPTION, Value(false)) - register(SettingsMaskNdef.USE_NDEF, Value(from.useNDEF)) - register(SettingsMaskNdef.DYNAMIC_NDEF, Value(from.useDynamicNDEF)) - register(SettingsMaskNdef.DISABLE_PRECOMPUTED_NDEF, Value(from.disablePrecomputedNDEF)) + register(CardNumber.Series, Value(from.series)) + register(CardNumber.Number, Value(from.startNumber)) + register(Common.Curve, Value(from.curveID, Helper.listOfCurves())) + register(Common.Blockchain, Value(from.blockchain, Helper.listOfBlockchain())) + register(Common.BlockchainCustom, Value("")) + register(Common.MaxSignatures, Value(from.MaxSignatures)) + register(Common.CreateWallet, Value(from.createWallet)) + register(SigningMethod.SignTx, Value(from.SigningMethod0)) + register(SigningMethod.SignTxRaw, Value(from.SigningMethod1)) + register(SigningMethod.SignValidatedTx, Value(from.SigningMethod2)) + register(SigningMethod.SignValidatedTxRaw, Value(from.SigningMethod3)) + register(SigningMethod.SignValidatedTxIssuer, Value(from.SigningMethod4)) + register(SigningMethod.SignValidatedTxRawIssuer, Value(from.SigningMethod5)) + register(SigningMethod.SignExternal, Value(from.SigningMethod6)) + register(SignHashExProp.PinLessFloorLimit, Value(from.pinLessFloorLimit)) + register(SignHashExProp.CryptoExKey, Value(from.hexCrExKey)) + register(SignHashExProp.RequireTerminalCertSig, Value(from.requireTerminalCertSignature)) + register(SignHashExProp.RequireTerminalTxSig, Value(from.requireTerminalTxSignature)) + register(SignHashExProp.CheckPin3, Value(from.checkPIN3onCard)) + register(Denomination.WriteOnPersonalize, Value(from.writeOnPersonalization)) + register(Denomination.Denomination, Value(from.denomination)) + register(Token.ItsToken, Value(from.itsToken)) + register(Token.Symbol, Value(from.symbol)) + register(Token.ContractAddress, Value(from.contractAddress)) + register(Token.Decimal, Value(from.decimal)) + register(ProductMask.Note, Value(from.cardData.product_note)) + register(ProductMask.Tag, Value(from.cardData.product_tag)) + register(ProductMask.CardId, Value(from.cardData.product_id_card)) + register(SettingsMask.IsReusable, Value(from.isReusable)) + register(SettingsMask.NeedActivation, Value(from.useActivation)) + register(SettingsMask.ForbidPurge, Value(from.forbidPurgeWallet)) + register(SettingsMask.AllowSelectBlockchain, Value(from.allowSelectBlockchain)) + register(SettingsMask.UseBlock, Value(from.useBlock)) + register(SettingsMask.OneApdu, Value(from.useOneCommandAtTime)) + register(SettingsMask.UseCvc, Value(from.useCVC)) + register(SettingsMask.AllowSwapPin, Value(from.allowSwapPIN)) + register(SettingsMask.AllowSwapPin2, Value(from.allowSwapPIN2)) + register(SettingsMask.ForbidDefaultPin, Value(from.forbidDefaultPIN)) + register(SettingsMask.SmartSecurityDelay, Value(from.smartSecurityDelay)) + register(SettingsMask.ProtectIssuerDataAgainstReplay, Value(from.protectIssuerDataAgainstReplay)) + register(SettingsMask.SkipSecurityDelayIfValidated, Value(from.skipSecurityDelayIfValidatedByIssuer)) + register(SettingsMask.SkipPin2CvcIfValidated, Value(from.skipCheckPIN2andCVCIfValidatedByIssuer)) + register(SettingsMask.SkipSecurityDelayOnLinkedTerminal, Value(from.skipSecurityDelayIfValidatedByLinkedTerminal)) + register(SettingsMask.RestrictOverwriteExtraIssuerData, Value(from.restrictOverwriteIssuerDataEx)) + register(SettingsMaskProtocolEnc.AllowUnencrypted, Value(from.protocolAllowUnencrypted)) + register(SettingsMaskProtocolEnc.AlloFastEncryption, Value(false)) + register(SettingsMaskNdef.UseNdef, Value(from.useNDEF)) + register(SettingsMaskNdef.DynamicNdef, Value(from.useDynamicNDEF)) + register(SettingsMaskNdef.DisablePrecomputedNdef, Value(from.disablePrecomputedNDEF)) register(SettingsMaskNdef.AAR, Value(from.NDEF, Helper.aarList())) - register(Pins.PIN, Value(from.PIN)) - register(Pins.PIN2, Value(from.PIN2)) - register(Pins.PIN3, Value(from.PIN3)) - register(Pins.CVC, Value(from.CVC)) - register(Pins.PAUSE_BEFORE_PIN2, Value(from.pauseBeforePIN2, Helper.pauseBeforePin())) + register(Pins.Pin, Value(from.PIN)) + register(Pins.Pin2, Value(from.PIN2)) + register(Pins.Pin3, Value(from.PIN3)) + register(Pins.Cvc, Value(from.CVC)) + register(Pins.PauseBeforePin2, Value(from.pauseBeforePIN2, Helper.pauseBeforePin())) } } diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/JsonToBlockConverter.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/JsonToBlockConverter.kt index f55643150c..1d57deae2b 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/JsonToBlockConverter.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/JsonToBlockConverter.kt @@ -1,9 +1,11 @@ package com.tangem.tangemtest.ucase.variants.personalize.converter -import com.tangem.tangemtest._arch.structure.* +import com.tangem.tangemtest._arch.structure.Additional +import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.abstraction.Block import com.tangem.tangemtest._arch.structure.abstraction.ListItemBlock import com.tangem.tangemtest._arch.structure.impl.* +import com.tangem.tangemtest.ucase.variants.personalize.* import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizeConfig import ru.dev.gbixahue.eu4d.lib.kotlin.common.Converter @@ -35,127 +37,127 @@ class JsonToBlockConverter : Converter> { } private fun cardNumber(): Block { - val block = createBlock(BlockId.CARD_NUMBER) + val block = createBlock(BlockId.CardNumber) mutableListOf( - CardNumber.SERIES, - CardNumber.NUMBER + CardNumber.Series, + CardNumber.Number ).forEach { createItem(block, it as Id) } return block } private fun common(): Block { - val block = createBlock(BlockId.COMMON) + val block = createBlock(BlockId.Common) mutableListOf( - Common.CURVE, - Common.BLOCKCHAIN, - Common.BLOCKCHAIN_CUSTOM, - Common.MAX_SIGNATURES, - Common.CREATE_WALLET + Common.Curve, + Common.Blockchain, + Common.BlockchainCustom, + Common.MaxSignatures, + Common.CreateWallet ).forEach { createItem(block, it) } return block } private fun signingMethod(): Block { - val block = createBlock(BlockId.SIGNING_METHOD) + val block = createBlock(BlockId.SigningMethod) mutableListOf( - SigningMethod.SIGN_TX, - SigningMethod.SIGN_TX_RAW, - SigningMethod.SIGN_VALIDATED_TX, - SigningMethod.SIGN_VALIDATED_TX_RAW, - SigningMethod.SIGN_VALIDATED_TX_ISSUER, - SigningMethod.SIGN_VALIDATED_TX_RAW_ISSUER, - SigningMethod.SIGN_EXTERNAL + SigningMethod.SignTx, + SigningMethod.SignTxRaw, + SigningMethod.SignValidatedTx, + SigningMethod.SignValidatedTxRaw, + SigningMethod.SignValidatedTxIssuer, + SigningMethod.SignValidatedTxRawIssuer, + SigningMethod.SignExternal ).forEach { createItem(block, it) } return block } private fun signHashExProperties(): Block { - val block = createBlock(BlockId.SIGN_HASH_EX_PROP) + val block = createBlock(BlockId.SignHashExProp) mutableListOf( - SignHashExProp.PIN_LESS_FLOOR_LIMIT, - SignHashExProp.CRYPTO_EXTRACT_KEY, - SignHashExProp.REQUIRE_TERMINAL_CERT_SIG, - SignHashExProp.REQUIRE_TERMINAL_TX_SIG, - SignHashExProp.CHECK_PIN3 + SignHashExProp.PinLessFloorLimit, + SignHashExProp.CryptoExKey, + SignHashExProp.RequireTerminalCertSig, + SignHashExProp.RequireTerminalTxSig, + SignHashExProp.CheckPin3 ).forEach { createItem(block, it) } return block } private fun denomination(): Block { - val block = createBlock(BlockId.DENOMINATION) + val block = createBlock(BlockId.Denomination) mutableListOf( - Denomination.WRITE_ON_PERSONALIZE, - Denomination.DENOMINATION + Denomination.WriteOnPersonalize, + Denomination.Denomination ).forEach { createItem(block, it) } return block } private fun token(): Block { - val block = createBlock(BlockId.TOKEN) + val block = createBlock(BlockId.Token) mutableListOf( - Token.ITS_TOKEN, - Token.SYMBOL, - Token.CONTRACT_ADDRESS, - Token.DECIMAL + Token.ItsToken, + Token.Symbol, + Token.ContractAddress, + Token.Decimal ).forEach { createItem(block, it) } return block } private fun productMask(): Block { - val block = createBlock(BlockId.PROD_MASK) + val block = createBlock(BlockId.ProdMask) mutableListOf( - ProductMask.NOTE, - ProductMask.TAG, - ProductMask.ID_CARD + ProductMask.Note, + ProductMask.Tag, + ProductMask.CardId ).forEach { createItem(block, it) } return block } private fun settingsMask(): Block { - val block = createBlock(BlockId.SETTINGS_MASK) + val block = createBlock(BlockId.SettingsMask) mutableListOf( - SettingsMask.IS_REUSABLE, - SettingsMask.NEED_ACTIVATION, - SettingsMask.FORBID_PURGE, - SettingsMask.ALLOW_SELECT_BLOCKCHAIN, - SettingsMask.USE_BLOCK, - SettingsMask.ONE_APDU, - SettingsMask.USE_CVC, - SettingsMask.ALLOW_SWAP_PIN, - SettingsMask.ALLOW_SWAP_PIN2, - SettingsMask.FORBID_DEFAULT_PIN, - SettingsMask.SMART_SECURITY_DELAY, - SettingsMask.PROTECT_ISSUER_DATA_AGAINST_REPLAY, - SettingsMask.SKIP_SECURITY_DELAY_IF_VALIDATED, - SettingsMask.SKIP_PIN2_CVC_IF_VALIDATED, - SettingsMask.SKIP_SECURITY_DELAY_ON_LINKED_TERMINAL, - SettingsMask.RESTRICT_OVERWRITE_EXTRA_ISSUER_DATA + SettingsMask.IsReusable, + SettingsMask.NeedActivation, + SettingsMask.ForbidPurge, + SettingsMask.AllowSelectBlockchain, + SettingsMask.UseBlock, + SettingsMask.OneApdu, + SettingsMask.UseCvc, + SettingsMask.AllowSwapPin, + SettingsMask.AllowSwapPin2, + SettingsMask.ForbidDefaultPin, + SettingsMask.SmartSecurityDelay, + SettingsMask.ProtectIssuerDataAgainstReplay, + SettingsMask.SkipSecurityDelayIfValidated, + SettingsMask.SkipPin2CvcIfValidated, + SettingsMask.SkipSecurityDelayOnLinkedTerminal, + SettingsMask.RestrictOverwriteExtraIssuerData ).forEach { createItem(block, it) } return block } private fun settingsMaskProtocolEnc(): Block { - val block = createBlock(BlockId.SETTINGS_MASK_PROTOCOL_ENC) + val block = createBlock(BlockId.SettingsMaskProtocolEnc) mutableListOf( - SettingsMaskProtocolEnc.ALLOW_UNENCRYPTED, - SettingsMaskProtocolEnc.ALLOW_FAST_ENCRYPTION).forEach { createItem(block, it) } + SettingsMaskProtocolEnc.AllowUnencrypted, + SettingsMaskProtocolEnc.AlloFastEncryption).forEach { createItem(block, it) } return block } private fun settingsMaskNdef(): Block { - val block = createBlock(BlockId.SETTINGS_MASK_NDEF) + val block = createBlock(BlockId.SettingsMaskNdef) mutableListOf( - SettingsMaskNdef.USE_NDEF, - SettingsMaskNdef.DYNAMIC_NDEF, - SettingsMaskNdef.DISABLE_PRECOMPUTED_NDEF, + SettingsMaskNdef.UseNdef, + SettingsMaskNdef.DynamicNdef, + SettingsMaskNdef.DisablePrecomputedNdef, SettingsMaskNdef.AAR ).forEach { createItem(block, it) } return block } private fun pins(): Block { - val block = createBlock(BlockId.PINS) - mutableListOf(Pins.PIN, Pins.PIN2, Pins.PIN3, Pins.CVC, Pins.PAUSE_BEFORE_PIN2) + val block = createBlock(BlockId.Pins) + mutableListOf(Pins.Pin, Pins.Pin2, Pins.Pin3, Pins.Cvc, Pins.PauseBeforePin2) .forEach { createItem(block, it) } return block } @@ -184,36 +186,36 @@ class JsonToBlockConverter : Converter> { class IdItemHelper { companion object { - val blockIdList = mutableListOf( - BlockId.CARD_NUMBER, BlockId.COMMON, BlockId.SIGNING_METHOD, BlockId.SIGN_HASH_EX_PROP, BlockId.DENOMINATION, - BlockId.TOKEN, BlockId.PROD_MASK, BlockId.SETTINGS_MASK, BlockId.SETTINGS_MASK_PROTOCOL_ENC, - BlockId.SETTINGS_MASK_NDEF, BlockId.PINS + val blockIdList = mutableListOf( + BlockId.CardNumber, BlockId.Common, BlockId.SigningMethod, BlockId.SignHashExProp, BlockId.Denomination, + BlockId.Token, BlockId.ProdMask, BlockId.SettingsMask, BlockId.SettingsMaskProtocolEnc, + BlockId.SettingsMaskNdef, BlockId.Pins ) - val listItemList = mutableListOf(Common.CURVE, Common.BLOCKCHAIN, SettingsMaskNdef.AAR, Pins.PAUSE_BEFORE_PIN2) + val listItemList = mutableListOf(Common.Curve, Common.Blockchain, SettingsMaskNdef.AAR, Pins.PauseBeforePin2) val boolList = mutableListOf( - Common.CREATE_WALLET, SigningMethod.SIGN_TX, SigningMethod.SIGN_TX_RAW, SigningMethod.SIGN_VALIDATED_TX, - SigningMethod.SIGN_VALIDATED_TX_RAW, SigningMethod.SIGN_VALIDATED_TX_ISSUER, - SigningMethod.SIGN_VALIDATED_TX_RAW_ISSUER, SigningMethod.SIGN_EXTERNAL, SignHashExProp.REQUIRE_TERMINAL_CERT_SIG, - SignHashExProp.REQUIRE_TERMINAL_TX_SIG, SignHashExProp.CHECK_PIN3, Denomination.WRITE_ON_PERSONALIZE, Token.ITS_TOKEN, - ProductMask.NOTE, ProductMask.TAG, ProductMask.ID_CARD, SettingsMask.IS_REUSABLE, SettingsMask.NEED_ACTIVATION, - SettingsMask.FORBID_PURGE, SettingsMask.ALLOW_SELECT_BLOCKCHAIN, SettingsMask.USE_BLOCK, SettingsMask.ONE_APDU, - SettingsMask.USE_CVC, SettingsMask.ALLOW_SWAP_PIN, SettingsMask.ALLOW_SWAP_PIN2, SettingsMask.FORBID_DEFAULT_PIN, - SettingsMask.SMART_SECURITY_DELAY, SettingsMask.PROTECT_ISSUER_DATA_AGAINST_REPLAY, - SettingsMask.SKIP_SECURITY_DELAY_IF_VALIDATED, SettingsMask.SKIP_PIN2_CVC_IF_VALIDATED, - SettingsMask.SKIP_SECURITY_DELAY_ON_LINKED_TERMINAL, SettingsMask.RESTRICT_OVERWRITE_EXTRA_ISSUER_DATA, - SettingsMaskProtocolEnc.ALLOW_UNENCRYPTED, SettingsMaskProtocolEnc.ALLOW_FAST_ENCRYPTION, - SettingsMaskNdef.USE_NDEF, SettingsMaskNdef.DYNAMIC_NDEF, SettingsMaskNdef.DISABLE_PRECOMPUTED_NDEF + Common.CreateWallet, SigningMethod.SignTx, SigningMethod.SignTxRaw, SigningMethod.SignValidatedTx, + SigningMethod.SignValidatedTxRaw, SigningMethod.SignValidatedTxIssuer, + SigningMethod.SignValidatedTxRawIssuer, SigningMethod.SignExternal, SignHashExProp.RequireTerminalCertSig, + SignHashExProp.RequireTerminalTxSig, SignHashExProp.CheckPin3, Denomination.WriteOnPersonalize, Token.ItsToken, + ProductMask.Note, ProductMask.Tag, ProductMask.CardId, SettingsMask.IsReusable, SettingsMask.NeedActivation, + SettingsMask.ForbidPurge, SettingsMask.AllowSelectBlockchain, SettingsMask.UseBlock, SettingsMask.OneApdu, + SettingsMask.UseCvc, SettingsMask.AllowSwapPin, SettingsMask.AllowSwapPin2, SettingsMask.ForbidDefaultPin, + SettingsMask.SmartSecurityDelay, SettingsMask.ProtectIssuerDataAgainstReplay, + SettingsMask.SkipSecurityDelayIfValidated, SettingsMask.SkipPin2CvcIfValidated, + SettingsMask.SkipSecurityDelayOnLinkedTerminal, SettingsMask.RestrictOverwriteExtraIssuerData, + SettingsMaskProtocolEnc.AllowUnencrypted, SettingsMaskProtocolEnc.AlloFastEncryption, + SettingsMaskNdef.UseNdef, SettingsMaskNdef.DynamicNdef, SettingsMaskNdef.DisablePrecomputedNdef ) val editTextList = mutableListOf( - CardNumber.SERIES, Common.BLOCKCHAIN_CUSTOM, SignHashExProp.CRYPTO_EXTRACT_KEY, Token.SYMBOL, - Token.CONTRACT_ADDRESS, Pins.PIN, Pins.PIN2, Pins.PIN3, Pins.CVC + CardNumber.Series, Common.BlockchainCustom, SignHashExProp.CryptoExKey, Token.Symbol, + Token.ContractAddress, Pins.Pin, Pins.Pin2, Pins.Pin3, Pins.Cvc ) val numberList = mutableListOf( - CardNumber.NUMBER, Common.MAX_SIGNATURES, SignHashExProp.PIN_LESS_FLOOR_LIMIT, Denomination.DENOMINATION, Token.DECIMAL + CardNumber.Number, Common.MaxSignatures, SignHashExProp.PinLessFloorLimit, Denomination.Denomination, Token.Decimal ) } } diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ValueMapper.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ValueMapper.kt index 02befaaa8e..f31e640e87 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ValueMapper.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ValueMapper.kt @@ -1,11 +1,12 @@ package com.tangem.tangemtest.ucase.variants.personalize.converter -import com.tangem.tangemtest._arch.structure.* +import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.abstraction.BaseItem import com.tangem.tangemtest._arch.structure.abstraction.Block import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest._arch.structure.impl.KeyValue import com.tangem.tangemtest._arch.structure.impl.ListValueWrapper +import com.tangem.tangemtest.ucase.variants.personalize.* import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizeConfig import ru.dev.gbixahue.eu4d.lib.android.global.log.Log @@ -40,61 +41,61 @@ class ValueMapper { private fun createJson(defaultConfig: PersonalizeConfig): PersonalizeConfig { val export = PersonalizeConfig() - export.series = getTyped(CardNumber.SERIES, defaultConfig.series) - export.startNumber = getTyped(CardNumber.NUMBER, defaultConfig.startNumber) - export.curveID = getTyped(Common.CURVE, defaultConfig.curveID) - export.blockchain = getTyped(Common.BLOCKCHAIN, defaultConfig.blockchain) - export.blockchainCustom = getTyped(Common.BLOCKCHAIN_CUSTOM, defaultConfig.blockchainCustom) - export.MaxSignatures = getTyped(Common.MAX_SIGNATURES, defaultConfig.MaxSignatures) - export.createWallet = getTyped(Common.CREATE_WALLET, defaultConfig.createWallet) - export.SigningMethod0 = getTyped(SigningMethod.SIGN_TX, defaultConfig.SigningMethod0) - export.SigningMethod1 = getTyped(SigningMethod.SIGN_TX_RAW, defaultConfig.SigningMethod1) - export.SigningMethod2 = getTyped(SigningMethod.SIGN_VALIDATED_TX, defaultConfig.SigningMethod2) - export.SigningMethod3 = getTyped(SigningMethod.SIGN_VALIDATED_TX_RAW, defaultConfig.SigningMethod3) - export.SigningMethod4 = getTyped(SigningMethod.SIGN_VALIDATED_TX_ISSUER, defaultConfig.SigningMethod4) - export.SigningMethod5 = getTyped(SigningMethod.SIGN_VALIDATED_TX_RAW_ISSUER, defaultConfig.SigningMethod5) - export.SigningMethod6 = getTyped(SigningMethod.SIGN_EXTERNAL, defaultConfig.SigningMethod6) - export.pinLessFloorLimit = getTyped(SignHashExProp.PIN_LESS_FLOOR_LIMIT, defaultConfig.pinLessFloorLimit) - export.hexCrExKey = getTyped(SignHashExProp.CRYPTO_EXTRACT_KEY, defaultConfig.hexCrExKey) - export.requireTerminalCertSignature = getTyped(SignHashExProp.REQUIRE_TERMINAL_CERT_SIG, defaultConfig.requireTerminalCertSignature) - export.requireTerminalTxSignature = getTyped(SignHashExProp.REQUIRE_TERMINAL_TX_SIG, defaultConfig.requireTerminalTxSignature) - export.checkPIN3onCard = getTyped(SignHashExProp.CHECK_PIN3, defaultConfig.checkPIN3onCard) - export.writeOnPersonalization = getTyped(Denomination.WRITE_ON_PERSONALIZE, defaultConfig.writeOnPersonalization) - export.denomination = getTyped(Denomination.DENOMINATION, defaultConfig.denomination) - export.itsToken = getTyped(Token.ITS_TOKEN, defaultConfig.itsToken) - export.symbol = getTyped(Token.SYMBOL, defaultConfig.symbol) - export.contractAddress = getTyped(Token.CONTRACT_ADDRESS, defaultConfig.contractAddress) - export.decimal = getTyped(Token.DECIMAL, defaultConfig.decimal) - export.cardData = export.cardData.apply { this.product_note = getTyped(ProductMask.NOTE, defaultConfig.cardData.product_note) } - export.cardData = export.cardData.apply { this.product_tag = getTyped(ProductMask.TAG, defaultConfig.cardData.product_tag) } - export.cardData = export.cardData.apply { this.product_id_card = getTyped(ProductMask.ID_CARD, defaultConfig.cardData.product_id_card) } - export.isReusable = getTyped(SettingsMask.IS_REUSABLE, defaultConfig.isReusable) - export.useActivation = getTyped(SettingsMask.NEED_ACTIVATION, defaultConfig.useActivation) - export.forbidPurgeWallet = getTyped(SettingsMask.FORBID_PURGE, defaultConfig.forbidPurgeWallet) - export.allowSelectBlockchain = getTyped(SettingsMask.ALLOW_SELECT_BLOCKCHAIN, defaultConfig.allowSelectBlockchain) - export.useBlock = getTyped(SettingsMask.USE_BLOCK, defaultConfig.useBlock) - export.useOneCommandAtTime = getTyped(SettingsMask.ONE_APDU, defaultConfig.useOneCommandAtTime) - export.useCVC = getTyped(SettingsMask.USE_CVC, defaultConfig.useCVC) - export.allowSwapPIN = getTyped(SettingsMask.ALLOW_SWAP_PIN, defaultConfig.allowSwapPIN) - export.allowSwapPIN2 = getTyped(SettingsMask.ALLOW_SWAP_PIN2, defaultConfig.allowSwapPIN2) - export.forbidDefaultPIN = getTyped(SettingsMask.FORBID_DEFAULT_PIN, defaultConfig.forbidDefaultPIN) - export.smartSecurityDelay = getTyped(SettingsMask.SMART_SECURITY_DELAY, defaultConfig.smartSecurityDelay) - export.protectIssuerDataAgainstReplay = getTyped(SettingsMask.PROTECT_ISSUER_DATA_AGAINST_REPLAY, defaultConfig.protectIssuerDataAgainstReplay) - export.skipSecurityDelayIfValidatedByIssuer = getTyped(SettingsMask.SKIP_SECURITY_DELAY_IF_VALIDATED, defaultConfig.skipSecurityDelayIfValidatedByIssuer) - export.skipCheckPIN2andCVCIfValidatedByIssuer = getTyped(SettingsMask.SKIP_PIN2_CVC_IF_VALIDATED, defaultConfig.skipCheckPIN2andCVCIfValidatedByIssuer) - export.skipSecurityDelayIfValidatedByLinkedTerminal = getTyped(SettingsMask.SKIP_SECURITY_DELAY_ON_LINKED_TERMINAL, defaultConfig.skipSecurityDelayIfValidatedByLinkedTerminal) - export.restrictOverwriteIssuerDataEx = getTyped(SettingsMask.RESTRICT_OVERWRITE_EXTRA_ISSUER_DATA, defaultConfig.restrictOverwriteIssuerDataEx) - export.protocolAllowUnencrypted = getTyped(SettingsMaskProtocolEnc.ALLOW_UNENCRYPTED, defaultConfig.protocolAllowUnencrypted) - export.allowFastEncryption = getTyped(SettingsMaskProtocolEnc.ALLOW_FAST_ENCRYPTION, defaultConfig.protocolAllowStaticEncryption) - export.useNDEF = getTyped(SettingsMaskNdef.USE_NDEF, defaultConfig.useNDEF) - export.useDynamicNDEF = getTyped(SettingsMaskNdef.DYNAMIC_NDEF, defaultConfig.useDynamicNDEF) - export.disablePrecomputedNDEF = getTyped(SettingsMaskNdef.DISABLE_PRECOMPUTED_NDEF, defaultConfig.disablePrecomputedNDEF) + export.series = getTyped(CardNumber.Series, defaultConfig.series) + export.startNumber = getTyped(CardNumber.Number, defaultConfig.startNumber) + export.curveID = getTyped(Common.Curve, defaultConfig.curveID) + export.blockchain = getTyped(Common.Blockchain, defaultConfig.blockchain) + export.blockchainCustom = getTyped(Common.BlockchainCustom, defaultConfig.blockchainCustom) + export.MaxSignatures = getTyped(Common.MaxSignatures, defaultConfig.MaxSignatures) + export.createWallet = getTyped(Common.CreateWallet, defaultConfig.createWallet) + export.SigningMethod0 = getTyped(SigningMethod.SignTx, defaultConfig.SigningMethod0) + export.SigningMethod1 = getTyped(SigningMethod.SignTxRaw, defaultConfig.SigningMethod1) + export.SigningMethod2 = getTyped(SigningMethod.SignValidatedTx, defaultConfig.SigningMethod2) + export.SigningMethod3 = getTyped(SigningMethod.SignValidatedTxRaw, defaultConfig.SigningMethod3) + export.SigningMethod4 = getTyped(SigningMethod.SignValidatedTxIssuer, defaultConfig.SigningMethod4) + export.SigningMethod5 = getTyped(SigningMethod.SignValidatedTxRawIssuer, defaultConfig.SigningMethod5) + export.SigningMethod6 = getTyped(SigningMethod.SignExternal, defaultConfig.SigningMethod6) + export.pinLessFloorLimit = getTyped(SignHashExProp.PinLessFloorLimit, defaultConfig.pinLessFloorLimit) + export.hexCrExKey = getTyped(SignHashExProp.CryptoExKey, defaultConfig.hexCrExKey) + export.requireTerminalCertSignature = getTyped(SignHashExProp.RequireTerminalCertSig, defaultConfig.requireTerminalCertSignature) + export.requireTerminalTxSignature = getTyped(SignHashExProp.RequireTerminalTxSig, defaultConfig.requireTerminalTxSignature) + export.checkPIN3onCard = getTyped(SignHashExProp.CheckPin3, defaultConfig.checkPIN3onCard) + export.writeOnPersonalization = getTyped(Denomination.WriteOnPersonalize, defaultConfig.writeOnPersonalization) + export.denomination = getTyped(Denomination.Denomination, defaultConfig.denomination) + export.itsToken = getTyped(Token.ItsToken, defaultConfig.itsToken) + export.symbol = getTyped(Token.Symbol, defaultConfig.symbol) + export.contractAddress = getTyped(Token.ContractAddress, defaultConfig.contractAddress) + export.decimal = getTyped(Token.Decimal, defaultConfig.decimal) + export.cardData = export.cardData.apply { this.product_note = getTyped(ProductMask.Note, defaultConfig.cardData.product_note) } + export.cardData = export.cardData.apply { this.product_tag = getTyped(ProductMask.Tag, defaultConfig.cardData.product_tag) } + export.cardData = export.cardData.apply { this.product_id_card = getTyped(ProductMask.CardId, defaultConfig.cardData.product_id_card) } + export.isReusable = getTyped(SettingsMask.IsReusable, defaultConfig.isReusable) + export.useActivation = getTyped(SettingsMask.NeedActivation, defaultConfig.useActivation) + export.forbidPurgeWallet = getTyped(SettingsMask.ForbidPurge, defaultConfig.forbidPurgeWallet) + export.allowSelectBlockchain = getTyped(SettingsMask.AllowSelectBlockchain, defaultConfig.allowSelectBlockchain) + export.useBlock = getTyped(SettingsMask.UseBlock, defaultConfig.useBlock) + export.useOneCommandAtTime = getTyped(SettingsMask.OneApdu, defaultConfig.useOneCommandAtTime) + export.useCVC = getTyped(SettingsMask.UseCvc, defaultConfig.useCVC) + export.allowSwapPIN = getTyped(SettingsMask.AllowSwapPin, defaultConfig.allowSwapPIN) + export.allowSwapPIN2 = getTyped(SettingsMask.AllowSwapPin2, defaultConfig.allowSwapPIN2) + export.forbidDefaultPIN = getTyped(SettingsMask.ForbidDefaultPin, defaultConfig.forbidDefaultPIN) + export.smartSecurityDelay = getTyped(SettingsMask.SmartSecurityDelay, defaultConfig.smartSecurityDelay) + export.protectIssuerDataAgainstReplay = getTyped(SettingsMask.ProtectIssuerDataAgainstReplay, defaultConfig.protectIssuerDataAgainstReplay) + export.skipSecurityDelayIfValidatedByIssuer = getTyped(SettingsMask.SkipSecurityDelayIfValidated, defaultConfig.skipSecurityDelayIfValidatedByIssuer) + export.skipCheckPIN2andCVCIfValidatedByIssuer = getTyped(SettingsMask.SkipPin2CvcIfValidated, defaultConfig.skipCheckPIN2andCVCIfValidatedByIssuer) + export.skipSecurityDelayIfValidatedByLinkedTerminal = getTyped(SettingsMask.SkipSecurityDelayOnLinkedTerminal, defaultConfig.skipSecurityDelayIfValidatedByLinkedTerminal) + export.restrictOverwriteIssuerDataEx = getTyped(SettingsMask.RestrictOverwriteExtraIssuerData, defaultConfig.restrictOverwriteIssuerDataEx) + export.protocolAllowUnencrypted = getTyped(SettingsMaskProtocolEnc.AllowUnencrypted, defaultConfig.protocolAllowUnencrypted) + export.allowFastEncryption = getTyped(SettingsMaskProtocolEnc.AlloFastEncryption, defaultConfig.protocolAllowStaticEncryption) + export.useNDEF = getTyped(SettingsMaskNdef.UseNdef, defaultConfig.useNDEF) + export.useDynamicNDEF = getTyped(SettingsMaskNdef.DynamicNdef, defaultConfig.useDynamicNDEF) + export.disablePrecomputedNDEF = getTyped(SettingsMaskNdef.DisablePrecomputedNdef, defaultConfig.disablePrecomputedNDEF) export.NDEF = getTyped(SettingsMaskNdef.AAR, defaultConfig.NDEF) - export.PIN = getTyped(Pins.PIN, defaultConfig.PIN) - export.PIN2 = getTyped(Pins.PIN2, defaultConfig.PIN2) - export.PIN3 = getTyped(Pins.PIN3, defaultConfig.PIN3) - export.CVC = getTyped(Pins.CVC, defaultConfig.CVC) - export.pauseBeforePIN2 = getTyped(Pins.PAUSE_BEFORE_PIN2, defaultConfig.pauseBeforePIN2) + export.PIN = getTyped(Pins.Pin, defaultConfig.PIN) + export.PIN2 = getTyped(Pins.Pin2, defaultConfig.PIN2) + export.PIN3 = getTyped(Pins.Pin3, defaultConfig.PIN3) + export.CVC = getTyped(Pins.Cvc, defaultConfig.CVC) + export.pauseBeforePIN2 = getTyped(Pins.PauseBeforePin2, defaultConfig.pauseBeforePIN2) return export }