Updated on 2026-08-14

This commit is contained in:
Tangem 2020-04-21 13:34:42 +00:00
commit 50c0a4c43e
5 changed files with 35 additions and 1 deletions

View file

@ -8,6 +8,7 @@ import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.IsoDep
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
@ -231,6 +232,8 @@ class IdFragment : BaseFragment(), NfcAdapter.ReaderCallback,
mpSecondScanSound.start()
}
} else {
Log.d(this.javaClass.simpleName,
"Error while reading ID card: ${cardProtocol.error.localizedMessage}")
// remove last UIDs because of error and no card read
FirebaseCrashlytics.getInstance().recordException(cardProtocol.error)
rlProgressBar?.post {

View file

@ -6,6 +6,7 @@ import android.os.Bundle
import android.os.Parcelable
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.View
import android.widget.EditText
import android.widget.RadioButton
@ -22,7 +23,6 @@ import com.tangem.wallet.ethID.EthIdEngine
import kotlinx.android.parcel.Parcelize
import kotlinx.android.synthetic.main.fragment_issue_new_id.*
import java.io.ByteArrayOutputStream
import java.lang.Exception
import java.text.SimpleDateFormat
import java.util.*
@ -54,6 +54,8 @@ class IssueNewIdFragment : BaseFragment(), NavigationResultListener {
try {
processData()
} catch (exception: Exception) {
Log.e(this.javaClass.simpleName,
"Exception while processing data: ${exception.localizedMessage}")
Toast.makeText(context, "Check for correctness of data", Toast.LENGTH_LONG).show()
return@setOnClickListener
}
@ -123,6 +125,9 @@ class IssueNewIdFragment : BaseFragment(), NavigationResultListener {
val inputs = "$name $lastName;$birthDate${gender.toString()}"
val info = inputs.toByteArray() + photoInBytes!!
ctx.card.idHash = Util.calculateSHA256(info)
Log.d(this.javaClass.simpleName,
"ID info provided: $inputs,\n photo of size ${photoInBytes?.size}")
}
private fun convertDate(inputDate: CharSequence): String {

View file

@ -8,6 +8,7 @@ import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.IsoDep
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.activity.OnBackPressedCallback
import com.google.firebase.crashlytics.FirebaseCrashlytics
@ -114,6 +115,10 @@ class ValidateIdFragment : BaseFragment(), NavigationResultListener,
val data = Bundle()
ctx.saveToBundle(data)
data.putByteArray(Constant.EXTRA_TX, tx)
Log.d(this.javaClass.simpleName,
"Transaction is ready to be sent.")
navigateForResult(
Constant.REQUEST_CODE_SEND_TRANSACTION_,
R.id.action_validateIdFragment_to_writeIdFragment,
@ -161,6 +166,8 @@ class ValidateIdFragment : BaseFragment(), NavigationResultListener,
}
PINStorage.setPIN2(PINStorage.getDefaultPIN2())
Log.d(this.javaClass.simpleName,
"Ready to sing transaction, launching OneTouchSignTask")
signTransactionTask = OneTouchSignTask(NfcReader((activity as MainActivity).nfcManager, isoDep),
App.localStorage, App.pinStorage, this@ValidateIdFragment, transaction)
signTransactionTask?.start()
@ -216,6 +223,8 @@ class ValidateIdFragment : BaseFragment(), NavigationResultListener,
mpFinishSignSound.start()
} else {
Log.d(this.javaClass.simpleName,
"Error while signing with ID Issuer card: ${cardProtocol.error.localizedMessage}")
FirebaseCrashlytics.getInstance().recordException(cardProtocol.error)
lastReadSuccess = false
if (cardProtocol.error.javaClass == CardProtocol.TangemException_InvalidPIN::class.java) {

View file

@ -8,6 +8,7 @@ import android.nfc.NfcAdapter
import android.nfc.Tag
import android.nfc.tech.IsoDep
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.activity.OnBackPressedCallback
import com.google.firebase.crashlytics.FirebaseCrashlytics
@ -186,6 +187,8 @@ class WriteIdFragment : BaseFragment(), NavigationResultListener,
)
} else {
Log.d(this.javaClass.simpleName,
"Error while writing on ID card: ${cardProtocol.error}")
lastReadSuccess = false
FirebaseCrashlytics.getInstance().recordException(cardProtocol.error)
if (cardProtocol.error.javaClass == CardProtocol.TangemException_InvalidPIN::class.java) {

View file

@ -277,6 +277,9 @@ public class EthIdEngine extends CoinEngine {
@Override
public SignTask.TransactionToSign constructTransaction(Amount amountValue, Amount feeValue, boolean IncFee, String targetAddress) {
Log.d(this.getClass().getSimpleName(),
"Constructing transaction for signature");
final EthTransaction tx = constructIdTxForSign(coinData.getApprovalAddressNonce());
return new SignTask.TransactionToSign() {
@ -309,6 +312,9 @@ public class EthIdEngine extends CoinEngine {
@Override
public byte[] onSignCompleted(byte[] signFromCard) throws Exception {
Log.d(this.getClass().getSimpleName(),
"Transaction has been signed, now preparing transaction to send");
byte[] for_hash = tx.getRawHash();
BigInteger r = new BigInteger(1, Arrays.copyOfRange(signFromCard, 0, 32));
BigInteger s = new BigInteger(1, Arrays.copyOfRange(signFromCard, 32, 64));
@ -330,6 +336,8 @@ public class EthIdEngine extends CoinEngine {
Log.e(this.getClass().getSimpleName(), " V: " + String.valueOf(v));
byte[] txForSend = tx.getEncoded();
Log.d(this.getClass().getSimpleName(),
"Tx is ready to be sent");
notifyOnNeedSendTransaction(txForSend);
return txForSend;
}
@ -434,9 +442,13 @@ public class EthIdEngine extends CoinEngine {
if (method.equals(ServerApiInfura.INFURA_ETH_SEND_RAW_TRANSACTION)) {
if (infuraResponse.getResult() == null || infuraResponse.getResult().isEmpty()) {
ctx.setError("Rejected by node: " + infuraResponse.getError());
Log.d(this.getClass().getSimpleName(),
"Rejected by node:" + infuraResponse.getError());
blockchainRequestsCallbacks.onComplete(false);
} else {
ctx.setError(null);
Log.d(this.getClass().getSimpleName(),
"Transaction has been sent successfully");
blockchainRequestsCallbacks.onComplete(true);
}
}
@ -444,6 +456,8 @@ public class EthIdEngine extends CoinEngine {
@Override
public void onFail(String method, String message) {
Log.d(this.getClass().getSimpleName(),
"requestSendTransaction failed with message: " + message);
if (method.equals(ServerApiInfura.INFURA_ETH_SEND_RAW_TRANSACTION)) {
ctx.setError(message);
blockchainRequestsCallbacks.onComplete(false);