如何使用电话管理器将APDU命令发送到UICC?

时间:2018-04-11 12:57:32

标签: android android-studio javacard telephonymanager apdu

我正在尝试使用电话管理器类与我的Java卡小程序进行通信。有人可以帮我吗? 基本上我想建立一个连接,然后发送APDU命令到UICC,反之亦然,我需要实现以下步骤(如果我错了请纠正我):

  1. 使用google SDK IccOpenLogicalChannelResponse和applet应用程序ID
  2. 从IccOpenLogicalChannelResponse获取开放状态和逻辑频道
  3. 通过iccTransmitApduLogicalChannel发送apdu并获取字符串响应
  4. Android App destroy必须通过iccCloseLogicalChannel关闭频道
  5. P.S - 我实施了#34;寻求Android" - org.simalliance.openmobileapi成功完成了我的目标,但是为了向api级别超过21的Android设备提供支持,我需要在android中实现Telephony Manager类。

    有人可以帮助我使用Telephony Manager功能的代码级别: iccOpenLogicalChannel, iccCloseLogicalChannel, iccTransmitApduLogicalChannel, iccTransmitApduBasicChannel。

    提前致谢!

1 个答案:

答案 0 :(得分:0)

这很棘手,但有可能。 要访问您的自定义 AID,首先您需要在 ARA-M(或 ARA-F)设置权限,您需要在其中提供您的应用签名(SHA1 20Bytes)和目标自定义 AID(可选或 0xFFFFFFFFFFFF)。这样做,您的移动应用将获得运营商特权(),然后您就可以开始使用了。

所以,步骤:

  1. 在您的智能卡或 SIM 卡中,手动移植一个空白的 ARA-M(可在 github 中找到)
  2. 创建 Android 项目(不要更改密钥库,因为必须维护签名)。获取签名 (256B) 的 SHA 1 (20B)。放松,这个签名不依赖于代码大小,而是你的开发环境。因此,调试、发布和部署证书和签名会有所不同。
  3. 读取器发送原始 APDU 以使用计算的 SHA 设置规则(GlobalPlatform Device Technology Device API Access Control V1.0 或更高版本)。通常由 MNO 的 OTA 完成
  4. 现在您的应用将获得运营商权限,您可以向卡发送 APDU。

祝你好运。