diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/EuiccInfoActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/EuiccInfoActivity.kt index d542420..f9ff6f1 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/EuiccInfoActivity.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/EuiccInfoActivity.kt @@ -110,20 +110,14 @@ class EuiccInfoActivity : BaseEuiccAccessActivity(), OpenEuiccContextMarker { ) getESTKmeInfo(channel.forkApduInterface())?.let { add(Item(R.string.euicc_info_sku, it.skuName)) - add(Item(R.string.euicc_info_sn, it.serialNumber)) + add(Item(R.string.euicc_info_sn, it.serialNumber, copiedToastResId = R.string.toast_sn_copied)) add(Item(R.string.euicc_info_bl_ver, it.bootloaderVersion)) add(Item(R.string.euicc_info_fw_ver, it.firmwareVersion)) } getNineVersion(channel.lpa.eID, channel.lpa.euiccInfo2)?.let { add(Item(R.string.euicc_info_sku, "9eSIM $it")) } - add( - Item( - R.string.euicc_info_eid, - channel.lpa.eID, - copiedToastResId = R.string.toast_eid_copied - ) - ) + add(Item(R.string.euicc_info_eid, channel.lpa.eID, copiedToastResId = R.string.toast_eid_copied)) channel.lpa.euiccInfo2.let { info -> add(Item(R.string.euicc_info_sgp22_version, info?.sgp22Version.toString())) add(Item(R.string.euicc_info_firmware_version, info?.euiccFirmwareVersion.toString())) diff --git a/app-common/src/main/java/im/angry/openeuicc/vendored/estkme.kt b/app-common/src/main/java/im/angry/openeuicc/vendored/estkme.kt index 4fd0d61..b805b89 100644 --- a/app-common/src/main/java/im/angry/openeuicc/vendored/estkme.kt +++ b/app-common/src/main/java/im/angry/openeuicc/vendored/estkme.kt @@ -35,10 +35,8 @@ fun getESTKmeInfo(iface: ApduInterface): ESTKmeInfo? { } } -private fun isSuccessResponse(b: ByteArray) = - b.size >= 2 && b[b.size - 2] == 0x90.toByte() && b[b.size - 1] == 0x00.toByte() - private fun decode(b: ByteArray): String? { - if (!isSuccessResponse(b)) return null - return b.dropLast(2).toByteArray().decodeToString() + if (b.size < 2) return null + if (b[b.size - 2] != 0x90.toByte() || b[b.size - 1] != 0x00.toByte()) return null + return b.sliceArray(0 until b.size - 2).decodeToString() } diff --git a/app-common/src/main/res/values/strings.xml b/app-common/src/main/res/values/strings.xml index f51c177..388baa5 100644 --- a/app-common/src/main/res/values/strings.xml +++ b/app-common/src/main/res/values/strings.xml @@ -31,6 +31,7 @@ Cannot switch to new eSIM profile. Confirmation string mismatch ICCID copied to clipboard + Serial Number copied to clipboard EID copied to clipboard ATR copied to clipboard diff --git a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/EuiccInfo2.kt b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/EuiccInfo2.kt index 2a9b3e5..0720049 100644 --- a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/EuiccInfo2.kt +++ b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/EuiccInfo2.kt @@ -20,7 +20,7 @@ data class Version( val patch: Int, ) { constructor(version: String) : this(version.split('.').map(String::toInt)) - constructor(parts: List) : this(parts[0], parts[1], parts[2]) + private constructor(parts: List) : this(parts[0], parts[1], parts[2]) operator fun compareTo(other: Version): Int { if (major != other.major) return major - other.major