物联传媒 旗下网站
登录 注册
RFID世界网 >  新闻中心  >  企业动态  >  正文

龙杰ACR122U NFC读卡器支持Apple Pay功能

作者:龙杰供稿
来源:RFID世界网
日期:2016-03-29 09:48:56
摘要:自从谷歌的操作系统Android4.4增加了NFC功能,龙杰NFC研发组就跟踪测试了基于主机的卡模拟(HCE)功能(类似于现在火爆的Apple pay)。就是说龙杰ACR122U NFC读写器亦可以支持Apple pay 中基于硬件SE的卡模拟功能。

  自从谷歌的操作系统Android4.4增加了NFC功能,龙杰NFC研发组就跟踪测试了基于主机的卡模拟(HCE)功能(类似于现在火爆的Apple pay)。就是说龙杰ACR122U NFC读写器亦可以支持Apple pay 中基于硬件SE的卡模拟功能。

龙杰ACR122U NFC读卡器支持Apple Pay功能

  龙杰ACR122U NFC读写器可支持Apple pay 功能

  下面基于主机模拟卡的连接龙杰ACR122U的原理给大家演示一遍,先介绍基于主机的卡模拟功能的工作原理。

  ISO/IEC 7816-4卡片模拟

  ISO/IEC 7816-4标签将内存分为多个可以单独选择的应用。每个应用有一个名称或者文件ID。你可以发送SELECT命令并在命令中指定正确的应用名称来连接应用。为了实现这套系统,Android基本上是将每个Android应用程序视作标签中的一个或者多个应用。由于应用名称或者文件ID应当具有唯一性,所以这个功能非常酷,现在你的Android智能手机变成了一个大标签。这套系统甚至能够与基于安全模块的卡模拟共存。

  建立连接的过程十分简单。首先通过龙杰ACR122U读写器(PN532 NFC芯片)发送一个InListPassiveTarget命令。一旦目标进入读写范围内,就直接通过DataExchange命令发送一个SELECT APDU。从现在开始只需继续发送DataExchange命令,直到整个通信过程结束。

  以十六进制格式表示(InListPassiveTarget):

  D4 4A 01 00

  一旦目标进入范围,你会收到下列目标信息:

  01 0004 60 04 089D64A2 0575807002

  01 = Target No

  0004 = SENS_RES

  60 = SEL_RES (please have a look at the HCE documentation how to compare the value)

  04 = length of the NFCID

  089D64A2 = random NFCID, it changes with every connection

  0575807002 = ATS

  现在可以发送SELECT APDU与手机上的APP建立连接:

  D44001 00A4040007F001020304050600

  返回数据如下:

  00 = CLAss

  A4 = INStruction, SELECT

  04 = P1, select by name

  00 = P2

  07 = length of the application name

  F0010203040506 = application name as defined in the manifest by the AID-filter

  你的HostApduService会收到上述信息作为第一条APDU。现在你可以随意发送数据,甚至没有必要编码为APDU。

  下面是为该演示编写的代码:

  IsoDepTamaCommunicator属于桌面端,桌面端使用NFCTools与Android设备建立IsoDep连接。完整示例请参看org.nfctools.examples.hce package

龙杰ACR122U NFC读卡器支持Apple Pay功能

龙杰ACR122U NFC读卡器支持Apple Pay功能

  在Android端,你有一个简单的HostApduService(定义见HCE文件)。完整源代码见host-card-emulation-sample repository

龙杰ACR122U NFC读卡器支持Apple Pay功能

  陷阱

  在开发过程中首先假设APDU使用常见的CLA,所以选用了DesFire卡的0x90。但返回下列错误消息。

  E/BrcmNfcNfa(1187): CET4T: Unsupported Class byte (0x90)

  通过查看Android source code,会发现正确的CLA是0x00。另外预期的P1参数也可以在源代码中找到。

  NFCTools范例

  如果想要尝试,可以克隆host-card-emulation-sample GitHub库,为自己的设备编写Android App。前提要求是Android 4.4系统以上。而桌面端只需要从nfctools-examples releases下载最新版本的nfctools-examples.jar。

  通过以下命令启动范例:

  java -cp nfctools-examples.jar org.nfctools.examples.hce.HceDemo

  小结

  基于主机的卡模拟功能非常简单易用。相较于Android Beam功能的LLCP/SNEP实现来说,不容易出错并且响应速度要快许多。当然采用HCE模式进行P2P通信只是一个小技巧而已。期望Android团队会在未来版本中开放对SNEP栈的访问。

  需要注意的是,一个DataExchange命令能够传输的数据量限制在200字节左右。如果希望传输大量数据,则需要自己将其划分为几个小的块。

  龙杰NFC研发组就跟踪测试了基于主机的卡模拟(HCE)功能(类似于现在火爆的Apple pay)。就是说龙杰ACR122U NFC读写器亦可以支持Apple pay 中基于硬件SE的卡模拟功能。

  如果你对nfctools有任何疑问,请关注ACS微信加入龙杰NFC研发组一起讨论吧。

龙杰ACR122U NFC读卡器支持Apple Pay功能

  (rfid世界网独家稿件,转载请注明来源作者!)

人物访谈