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