From c5a5701c03fe6c25104e347e615ed2c438292a43 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Mon, 1 Jan 2024 20:47:52 -0500 Subject: [PATCH] lpac-jni: Fixup channel validity detection --- .../main/java/im/angry/openeuicc/core/EuiccChannel.kt | 10 +--------- .../net/typeblog/lpac_jni/LocalProfileAssistant.kt | 10 ++++++++++ .../lpac_jni/impl/LocalProfileAssistantImpl.kt | 4 ++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/core/EuiccChannel.kt b/app-common/src/main/java/im/angry/openeuicc/core/EuiccChannel.kt index 25cc66a..003c0cc 100644 --- a/app-common/src/main/java/im/angry/openeuicc/core/EuiccChannel.kt +++ b/app-common/src/main/java/im/angry/openeuicc/core/EuiccChannel.kt @@ -12,15 +12,7 @@ abstract class EuiccChannel( abstract val lpa: LocalProfileAssistant val valid: Boolean - get() { - try { - // Try to ping the eUICC card by reading the EID - lpa.eID - } catch (e: Exception) { - return false - } - return true - } + get() = lpa.valid fun close() = lpa.close() } diff --git a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileAssistant.kt b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileAssistant.kt index 3548106..b40ba10 100644 --- a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileAssistant.kt +++ b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/LocalProfileAssistant.kt @@ -9,6 +9,16 @@ interface LocalProfileAssistant { private const val TAG = "LocalProfileAssistant" } + val valid: Boolean + get() = try { + // If we can read both eID and profiles properly, we are likely looking at + // a valid LocalProfileAssistant + eID + profiles + true + } catch (e: Exception) { + false + } val profiles: List val notifications: List val eID: String diff --git a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/impl/LocalProfileAssistantImpl.kt b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/impl/LocalProfileAssistantImpl.kt index 11261ad..5dabf28 100644 --- a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/impl/LocalProfileAssistantImpl.kt +++ b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/impl/LocalProfileAssistantImpl.kt @@ -49,8 +49,8 @@ class LocalProfileAssistantImpl( apduInterface.connect() contextHandle = LpacJni.createContext(apduInterface, httpInterface) check(LpacJni.es10xInit(contextHandle) >= 0) { "Reconnect attempt failed" } - // Validate that we can actually use the APDU channel by trying to read eID - eID + // Validate that we can actually use the APDU channel by trying to read eID and profiles + check(valid) { "Reconnected channel is invalid" } break } catch (e: Exception) { e.printStackTrace()