From 5756c48d3d2dce6d1d64085e1e2b6c34bc1e0eb1 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Mon, 2 May 2022 10:04:15 -0400 Subject: [PATCH] Show ICCID as little-endian string We use ICCID as big-endian internally to match the eUICC chip itself, but the user (and the OS) would prefer the little-endian representation. --- .../im/angry/openeuicc/ui/EuiccManagementFragment.kt | 2 +- .../com/truphone/lpa/impl/ListProfilesWorker.java | 11 +++++++++++ .../main/java/com/truphone/lpa/impl/ProfileKey.java | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt b/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt index cbf5000..97a8681 100644 --- a/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt +++ b/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt @@ -147,7 +147,7 @@ class EuiccManagementFragment : Fragment(), EuiccFragmentMarker, EuiccProfilesCh } ) binding.provider.text = profile[PROVIDER_NAME.name] - binding.iccid.text = profile[ICCID.name] + binding.iccid.text = profile[ICCID_LITTLE.name]!! binding.iccid.transformationMethod = PasswordTransformationMethod.getInstance() } diff --git a/libs/lpad-sm-dp-plus-connector/src/main/java/com/truphone/lpa/impl/ListProfilesWorker.java b/libs/lpad-sm-dp-plus-connector/src/main/java/com/truphone/lpa/impl/ListProfilesWorker.java index 546c18f..b0ea5ed 100644 --- a/libs/lpad-sm-dp-plus-connector/src/main/java/com/truphone/lpa/impl/ListProfilesWorker.java +++ b/libs/lpad-sm-dp-plus-connector/src/main/java/com/truphone/lpa/impl/ListProfilesWorker.java @@ -41,6 +41,7 @@ class ListProfilesWorker { profileMap.put(ProfileKey.STATE.name(), LocalProfileAssistantImpl.DISABLED_STATE.equals(info.getProfileState().toString()) ? "Disabled" : "Enabled"); profileMap.put(ProfileKey.ICCID.name(), info.getIccid().toString()); + profileMap.put(ProfileKey.ICCID_LITTLE.name(), iccidBigToLittle(info.getIccid().toString())); profileMap.put(ProfileKey.NAME.name(), (info.getProfileName()!=null)?info.getProfileName().toString():""); profileMap.put(ProfileKey.NICKNAME.name(), (info.getProfileNickname()!=null)?info.getProfileNickname().toString():""); profileMap.put(ProfileKey.PROVIDER_NAME.name(), (info.getServiceProviderName()!=null)?info.getServiceProviderName().toString():""); @@ -93,4 +94,14 @@ class ListProfilesWorker { return apduChannel.transmitAPDU(apdu); } + + private String iccidBigToLittle(String iccid) { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < iccid.length() / 2; i++) { + builder.append(iccid.charAt(i * 2 + 1)); + if (iccid.charAt(i * 2) != 'F') + builder.append(iccid.charAt(i * 2)); + } + return builder.toString(); + } } diff --git a/libs/lpad-sm-dp-plus-connector/src/main/java/com/truphone/lpa/impl/ProfileKey.java b/libs/lpad-sm-dp-plus-connector/src/main/java/com/truphone/lpa/impl/ProfileKey.java index 7409c80..b674edb 100644 --- a/libs/lpad-sm-dp-plus-connector/src/main/java/com/truphone/lpa/impl/ProfileKey.java +++ b/libs/lpad-sm-dp-plus-connector/src/main/java/com/truphone/lpa/impl/ProfileKey.java @@ -2,6 +2,7 @@ package com.truphone.lpa.impl; public enum ProfileKey { ICCID, + ICCID_LITTLE, // Little Endian STATE, NAME, NICKNAME,