我一直在尝试通过 APDU 交换与 SIM 应用程序进行交互。为了交换 APDU,我必须通过 Connector.open() API 创建一个 APDUConnection,但是这个特定的 API 抛出了一个 IO 异常,指出“此平台不支持 JSR 177”,我不知道是否会发生这种情况,因为我在模拟器或者它是否在 Blackberry 设备上也不支持。
我想知道,有没有人成功地与 Blackberry 上的 SIM 应用程序交互?如果是,有什么方法可以做到?如果我可以实现 JSR 177,是否可以向 Blackberry SDK 添加扩展?如何扩展 SDK 以包含此类扩展?我真的很感谢你们的任何意见。提前致谢。
最佳答案
JSR 177 通常用于与 Secure Elements 和 UICC 通信。 JSR 177 无法在 BlackBerry 模拟器上运行,因为它不支持模拟所需的硬件。如果要添加 NFC 模拟,则需要编辑模拟器并按照 here 提供的说明进行操作。我还没有完成这些说明,所以我不知道是否可以模拟到 SIM 的 JSR 177 连接。从链接中提供的说明中可以看出,“BlackBerry Smartphone Simulator 仅模拟不安全的被动通信。”
我建议您阅读 BlackBerry NFC Primer 并了解一些交互智能卡应用程序的知识。
可以在 BlackBerry 设备上使用 JSR 177,但为此您必须使用 NCFR 或 RESE 签名对应用程序进行签名才能访问 API。此签名只能通过应用程序获取到 BlackBerry。您可能需要基于您在应用程序中使用的 API 的两个或一个签名,但是如果您想与 SIM 通信,我相信您只需要 NFCR 签名。
以下是如何创建 JSR 177 连接的简短(未经测试)示例:
//The BNF URI is explained within JSR 177, it will connect to the AID specified in the
//target. In this example the AID is the first thing that came to my head and should be an
//application install on the UICC.
final String BNF_URI = "apdu:0;target=A0.00.00.00.01.02.03.04";
...
//Cmd APDU defines the APDU to be sent to the application on the UICC
byte[] cmdApdu = new byte[]{ 0x00, 0x4A, 0x00, 0x01, 0x00};
ApduConnection conn = (ApduConnection)Connector.open();
byte[] rApdu = conn.exchangeAPDU(cmdApdu);
...
在示例中,接收到的 R-APDU 将是从智能卡环境中的应用程序发送的数据字节数组。
关于java - 黑莓上的 JSR 177 支持,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1707726/