From e8ae6ccb2d9d48f61bbf5f267f8787df721cb2a7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 13 Apr 2020 09:24:20 +0300 Subject: [PATCH] Updated on 2026-08-14 --- tangem-core/src/main/java/com/tangem/CardSession.kt | 9 +++++++-- tangem-core/src/main/java/com/tangem/commands/Command.kt | 1 + tangem-core/src/main/java/com/tangem/common/tlv/Tlv.kt | 5 +++++ .../src/main/java/com/tangem/common/tlv/TlvBuilder.kt | 8 +++++++- .../src/main/java/com/tangem/common/tlv/TlvDecoder.kt | 5 +++++ 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/tangem-core/src/main/java/com/tangem/CardSession.kt b/tangem-core/src/main/java/com/tangem/CardSession.kt index 9977e9b17f..87394ab897 100644 --- a/tangem-core/src/main/java/com/tangem/CardSession.kt +++ b/tangem-core/src/main/java/com/tangem/CardSession.kt @@ -48,6 +48,7 @@ class CardSession( private val initialMessage: Message? = null ) { + private val tag = this.javaClass.simpleName /** * True if some operation is still in progress. */ @@ -164,7 +165,10 @@ class CardSession( } else { error.localizedMessage } - if (error !is SessionError.UserCancelled) viewDelegate.onError(errorMessage) + if (error !is SessionError.UserCancelled) { + Log.e("tag", "Finishing with error: $errorMessage") + viewDelegate.onError(errorMessage) + } } fun send(apdu: CommandApdu, callback: (result: CompletionResult) -> Unit) { @@ -176,6 +180,7 @@ class CardSession( when (error) { is SessionError.NeedEncryption -> { + Log.i(tag, "Establishing encryption") when (environment.encryptionMode) { EncryptionMode.NONE -> { environment.encryptionKey = null @@ -186,7 +191,7 @@ class CardSession( environment.encryptionMode = EncryptionMode.STRONG } EncryptionMode.STRONG -> { - Log.e(this::class.simpleName!!, "Encryption doesn't work") + Log.e(tag, "Encryption doesn't work") callback(CompletionResult.Failure(SessionError.NeedEncryption())) } } diff --git a/tangem-core/src/main/java/com/tangem/commands/Command.kt b/tangem-core/src/main/java/com/tangem/commands/Command.kt index a44332d04f..f78e5663cb 100644 --- a/tangem-core/src/main/java/com/tangem/commands/Command.kt +++ b/tangem-core/src/main/java/com/tangem/commands/Command.kt @@ -38,6 +38,7 @@ abstract class Command : CardSessionRunnable { abstract fun deserialize(environment: SessionEnvironment, apdu: ResponseApdu): T override fun run(session: CardSession, callback: (result: CompletionResult) -> Unit) { + Log.i("Command", "Sending ${this::class.java.simpleName}") transceive(session, callback) } diff --git a/tangem-core/src/main/java/com/tangem/common/tlv/Tlv.kt b/tangem-core/src/main/java/com/tangem/common/tlv/Tlv.kt index 544317c358..5b0f5a47c5 100644 --- a/tangem-core/src/main/java/com/tangem/common/tlv/Tlv.kt +++ b/tangem-core/src/main/java/com/tangem/common/tlv/Tlv.kt @@ -1,6 +1,7 @@ package com.tangem.common.tlv import com.tangem.Log +import com.tangem.common.extensions.toHexString import java.io.ByteArrayInputStream import java.io.IOException @@ -71,6 +72,10 @@ class Tlv { } } + override fun toString(): String { + return "${this.tag} ($tagRaw): ${value.toHexString()}" + } + } fun List.serialize(): ByteArray = diff --git a/tangem-core/src/main/java/com/tangem/common/tlv/TlvBuilder.kt b/tangem-core/src/main/java/com/tangem/common/tlv/TlvBuilder.kt index 6ec643d00a..3e3c8557f2 100644 --- a/tangem-core/src/main/java/com/tangem/common/tlv/TlvBuilder.kt +++ b/tangem-core/src/main/java/com/tangem/common/tlv/TlvBuilder.kt @@ -1,5 +1,7 @@ package com.tangem.common.tlv +import com.tangem.Log + class TlvBuilder { private val tlvs = mutableListOf() private val encoder = TlvEncoder() @@ -10,6 +12,10 @@ class TlvBuilder { tlvs.add(encoder.encode(tag, value)) } - fun serialize(): ByteArray = tlvs.serialize() + fun serialize(): ByteArray { + Log.v("TLV", + "List of TLV that are being sent to a card:\n${tlvs.joinToString("\n")}") + return tlvs.serialize() + } } \ No newline at end of file diff --git a/tangem-core/src/main/java/com/tangem/common/tlv/TlvDecoder.kt b/tangem-core/src/main/java/com/tangem/common/tlv/TlvDecoder.kt index 3d63f0e27e..48c14edec4 100644 --- a/tangem-core/src/main/java/com/tangem/common/tlv/TlvDecoder.kt +++ b/tangem-core/src/main/java/com/tangem/common/tlv/TlvDecoder.kt @@ -18,6 +18,11 @@ import java.util.* */ class TlvDecoder(val tlvList: List) { + init { + Log.v("TLV", + "List of TLV received from card:\n${tlvList.joinToString("\n")}") + } + /** * Finds [Tlv] by its [TlvTag]. * Returns null if [Tlv] is not found, otherwise converts its value to [T].