From 3e77e01ec6c9501d4babbf6916d96618f498a36f Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 30 Apr 2020 19:55:54 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/ui/fragment/id/IdFragment.kt | 1 + .../ui/fragment/id/IssueNewIdFragment.kt | 2 +- .../com/tangem/wallet/ethID/EthIdData.java | 12 ++++++++++++ .../com/tangem/wallet/ethID/EthIdEngine.java | 18 ++++++++++++------ app/src/main/res/values/strings.xml | 1 + 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/tangem/ui/fragment/id/IdFragment.kt b/app/src/main/java/com/tangem/ui/fragment/id/IdFragment.kt index 61e4e7524a..f37118f1ba 100644 --- a/app/src/main/java/com/tangem/ui/fragment/id/IdFragment.kt +++ b/app/src/main/java/com/tangem/ui/fragment/id/IdFragment.kt @@ -341,6 +341,7 @@ class IdFragment : BaseFragment(), NfcAdapter.ReaderCallback, validator.check(ctx, false) context?.let { ContextCompat.getColor(it, validator.color) }?.let { tvBalanceLine1?.setTextColor(it) } tvBalanceLine1?.text = getString(validator.firstLine) + tvBalanceLine2?.text = getString(validator.getSecondLine(false)).format(ctx.card.idCardData.trustedAddress) } if (ctx.card.hasIDCardData()) { diff --git a/app/src/main/java/com/tangem/ui/fragment/id/IssueNewIdFragment.kt b/app/src/main/java/com/tangem/ui/fragment/id/IssueNewIdFragment.kt index 119d692321..8418037d86 100644 --- a/app/src/main/java/com/tangem/ui/fragment/id/IssueNewIdFragment.kt +++ b/app/src/main/java/com/tangem/ui/fragment/id/IssueNewIdFragment.kt @@ -119,7 +119,7 @@ class IssueNewIdFragment : BaseFragment(), NavigationResultListener { photoInBytes, issuerExpireDate.issueDate, issuerExpireDate.expireDate, - (CoinEngineFactory.create(ctx) as? EthIdEngine)?.approvalAddress + (CoinEngineFactory.create(ctx) as? EthIdEngine)?.coinData?.approvalAddress ) val inputs = "$name $lastName;$birthDate${gender.toString()}" diff --git a/app/src/main/java/com/tangem/wallet/ethID/EthIdData.java b/app/src/main/java/com/tangem/wallet/ethID/EthIdData.java index 6cdf9fcf0b..d77b1afdf3 100644 --- a/app/src/main/java/com/tangem/wallet/ethID/EthIdData.java +++ b/app/src/main/java/com/tangem/wallet/ethID/EthIdData.java @@ -9,6 +9,7 @@ public class EthIdData extends CoinData { private boolean hasApprovalTx = false; private Long approvalAddressNonce; private byte[] CKDpub = null; + private String approvalAddress = "0x74bd17417f07ee8cf89a476fc3cc6ef7b7b140a7"; //default approval address for issuance public boolean isHasApprovalTx() { return hasApprovalTx; @@ -34,6 +35,14 @@ public class EthIdData extends CoinData { this.CKDpub = CKDpub; } + public String getApprovalAddress() { + return approvalAddress; + } + + public void setApprovalAddress(String approvalAddress) { + this.approvalAddress = approvalAddress; + } + @Override public void clearInfo() { super.clearInfo(); @@ -50,6 +59,8 @@ public class EthIdData extends CoinData { } if (B.containsKey("CKDpub")) CKDpub = B.getByteArray("CKDpub"); hasApprovalTx = B.getBoolean("HasApprovalTx"); + if (B.containsKey("ApprovalAddress")) approvalAddress = B.getString("ApprovalAddress"); + } @Override @@ -59,6 +70,7 @@ public class EthIdData extends CoinData { if (approvalAddressNonce != null) B.putLong("ApprovalAddressNonce", approvalAddressNonce); if (CKDpub != null) B.putByteArray("CKDpub", CKDpub); B.putBoolean("HasApprovalTx", hasApprovalTx); + if (approvalAddress != null) B.putString("ApprovalAddress", approvalAddress); } catch (Exception e) { Log.e("Can't save to bundle ", e.getMessage()); diff --git a/app/src/main/java/com/tangem/wallet/ethID/EthIdEngine.java b/app/src/main/java/com/tangem/wallet/ethID/EthIdEngine.java index c681805f2a..060eaa2c5d 100644 --- a/app/src/main/java/com/tangem/wallet/ethID/EthIdEngine.java +++ b/app/src/main/java/com/tangem/wallet/ethID/EthIdEngine.java @@ -43,8 +43,8 @@ public class EthIdEngine extends CoinEngine { private static final String TAG = com.tangem.wallet.eth.EthEngine.class.getSimpleName(); public EthIdData coinData = null; - private byte[] approvalPubKey = Util.hexToBytes("04EAD74FEEE4061044F46B19EB654CEEE981E9318F0C8FE99AF5CDB9D779D2E52BB51EA2D14545E0B323F7A90CF4CC72753C973149009C10DB2D83DCEC28487729"); //TODO - public String approvalAddress = calculateAddress(approvalPubKey); //TODO + //default approval public key for issuance + private byte[] approvalPubKey = Util.hexToBytes("04EAD74FEEE4061044F46B19EB654CEEE981E9318F0C8FE99AF5CDB9D779D2E52BB51EA2D14545E0B323F7A90CF4CC72753C973149009C10DB2D83DCEC28487729"); public EthIdEngine(TangemContext ctx) throws Exception { super(ctx); @@ -232,12 +232,12 @@ public class EthIdEngine extends CoinEngine { if (coinData != null && coinData.isHasApprovalTx()) { balanceValidator.setScore(100); balanceValidator.setFirstLine(R.string.id_verified); - balanceValidator.setSecondLine(R.string.balance_validator_second_line_unverified_balance); + balanceValidator.setSecondLine(R.string.balance_validator_second_line_issued_by); return false; } else { balanceValidator.setScore(0); balanceValidator.setFirstLine(R.string.id_not_registered); - balanceValidator.setSecondLine(R.string.balance_validator_second_line_unverified_balance); + balanceValidator.setSecondLine(R.string.empty_string); return false; } } @@ -389,7 +389,7 @@ public class EthIdEngine extends CoinEngine { public void onSuccess(BlockcypherTx response) { Log.i(TAG, "onSuccess: BlockcypherTx"); try { - String address = approvalAddress; + String address = coinData.getApprovalAddress(); if (address.startsWith("0x") || address.startsWith("0X")) { address = address.substring(2); } @@ -484,6 +484,12 @@ public class EthIdEngine extends CoinEngine { try { String wallet = calculateAddress(calculateCKDpub(ctx.getCard().getIdHash())); ctx.getCoinData().setWallet(wallet); + + TangemCard.IDCardData idCardData = ctx.getCard().getIDCardData(); + if (idCardData != null && idCardData.trustedAddress != null) { + String approvalAddress = ctx.getCard().getIDCardData().trustedAddress; + coinData.setApprovalAddress(approvalAddress); + } } catch (Exception e) { ctx.getCoinData().setWallet("ERROR"); throw new CardProtocol.TangemException("Can't define wallet address"); @@ -542,6 +548,6 @@ public class EthIdEngine extends CoinEngine { }; serverApiInfura.setResponseListener(responseListener); - serverApiInfura.requestData(ServerApiInfura.INFURA_ETH_GET_PENDING_COUNT, 67, approvalAddress, "", ""); + serverApiInfura.requestData(ServerApiInfura.INFURA_ETH_GET_PENDING_COUNT, 67, coinData.getApprovalAddress(), "", ""); } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3081823d17..a2cd5b4f1e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -148,6 +148,7 @@ To create account send 1+ XLM to this address Load 20+ XRP to create account Authenticity cannot be verified. Swipe down to refresh. + Issued by %s Now touch the card with ID