2009-11-10 152 views
4

我一直在尝试通过APDU交换与SIM应用交互。为了交换APDU,我必须通过Connector.open()API创建一个APDUConnection,但是这个特定的API会抛出一个IO异常,声明“此平台不支持JSR 177”,我不知道是否会发生这种情况,因为我测试了这个模拟器还是黑莓设备上不支持它。黑莓手机JSR 177支持

我想知道,有没有人成功地与黑莓上的SIM应用程序交互?如果是的话,有什么办法呢?如果我可以实现JSR 177,是否可以向Blackberry SDK添加扩展?如何扩展SDK以包含此类扩展?我非常感谢来自你们的任何投入。提前致谢。

回答

1

JSR 177主要用于与安全元件和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接收的将是从智能卡中的应用程序发送数据的一个字节数组的例子环境。