如何向ISO7816智能卡发送几个任意字节



我有一个可编程设备(Galaxy Watch(,可以用作ISO7816智能卡,我还有另一个可程序设备(Android智能手机(,可以作为卡终端。在不需要任何智能卡功能的情况下,我只需要从手机向手表发送和接收几个字节。

我有一个工作实现,可以在手表上注册AID。电话正在发送一条A4(SELECT FILE(指令,其中命令P1=04和P2=00,并且该指令在数据字段中注册了AID。然后手表会得到一个回调,并可以用任意数据对其进行响应。这很好用。

我的问题是:我如何扩展它,以便能够向手表发送几个任意字节的自定义信息?我有太多不同的信息对象,以便为每个信息对象注册一个单独的AID。我能以某种方式在A4或任何其他命令中添加一些任意字节吗?

我的答案基于基于主机的卡仿真概述。

您似乎已经扩展了HostApduService并实现了processCommandApdu((函数,该函数接收在您的";应用程序";(即您想通过AID访问的内容(。

现在,您必须决定如何对";自定义信息的几个任意字节";在ISO7816方面(请参阅此处以获得阅读ISO7816的良好入口点;这里有的选项

  • 您可以通过READ/UPDATE/APPEND record访问的面向记录的文件
  • 通过READ/UPDATE BINARY访问的透明文件
  • 通过GET/PUT DATA访问的对象

一旦你决定了数据组织,你就必须启用上面提到的processCommandApdu((来解码各自的APDU并读取/写入";自定义信息的几个任意字节";。

最新更新