【问题标题】:iccOpenLogicalChannel returns STATUS_NO_SUCH_ELEMENT on Javacard AppleticcOpenLogicalChannel 在 Javacard Applet 上返回 STATUS_NO_SUCH_ELEMENT
【发布时间】:2022-08-17 12:42:39
【问题描述】:

我有一个小程序(取自 this HelloSTK2 repo)我已经编译并安装在 SysmoISIM-SJA2 卡上,并且我稍微修改了它以响应 SELECT APDU。修改如下所示:

public void process(APDU arg0) throws ISOException {
    showHello();
}
private void showHello() {
    ProactiveHandler proHdlr = ProactiveHandler.getTheHandler();
    proHdlr.initDisplayText((byte)0, DCS_8_BIT_DATA, welcomeMsg, (short)0, 
            (short)(welcomeMsg.length));
    proHdlr.send();
    return;
}

我所做的只是将现有的showHello() 函数移到处理 APDU 的函数中。我从 Javacard 文档中了解到,process() 函数应该运行,然后返回状态字 9000,或错误代码(如果适用)。

对于SELECT 文件,我编写了一个使用iccOpenLogicalChannel 并将AID 作为参数的Android 应用程序。使用 GlobalPlatformPro 我可以看到小程序已正确安装在 UICC 上,并且它被列为 SELECTABLE,但是当我运行我的 Android 应用程序时,我得到一个 STATUS_NO_SUCH_ELEMENT 响应,根据 iccOpenLogicalChannelResponse source 表示 AID 不是在 UICC 上找到。

Android 应用程序的代码非常简单,如下所示:

val inputView: EditText = findViewById<EditText>(R.id.AID_INPUT)
            val input: String = inputView.text.toString()
            val ch = mTelephonyManager.iccOpenLogicalChannel(input)
            Toast.makeText(this, ch.toString(), Toast.LENGTH_LONG).show()
            mTelephonyManager.iccCloseLogicalChannel(ch.channel)

在卡片上列出小程序的输出如下所示(截断):

AID: d07002ca44, State: 01, Privs: 00
Instance AID: d07002ca44900102

我已经尝试过 d07002ca44 和 d07002ca44900102 并且对两种 AID 都得到了相同的响应。

那么我的问题是:我需要采取哪些步骤来确保我的 Android 应用程序能够选择这个小程序?

值得注意的是,我的 Android 应用程序确实具有运营商权限,并且我能够将 APDU 发送到其他应用程序,例如 USIM 和 ISIM 小程序。

  • 我希望逻辑通道而不是 AID 可用。我做了一个非常简短的检查,似乎它们对于 SIM 卡也是可选的。您可以简单地使用基本频道,但它会在没有任何特定命令(例如iccOpenLogicalChannel )的情况下打开。
  • 我认为可能是这种情况,但错误消息确实明确指出无法找到 UICC,并且我假设如果只是通道无法找到我会收到 STATUS_MISSING_RESOURCE 错误打开。不过,我会尝试使用基本频道并报告。谢谢!

标签: android javacard sim-card


【解决方案1】:

我对 iccOpenLogicalChannel 方法有同样的问题,使用基本通道选择小程序返回 6F00。

这个问题出现在华为 P10 手机上,但在三星 Galaxy A6 上它可以正常工作并且没有问题。

是否有特定的解决方案或者这是与电话相关的问题?

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多