龍杰ACR122U NFC讀卡器支持Apple Pay功能
自從谷歌的操作系統Android4.4增加了NFC功能,龍杰NFC研發組就跟蹤測試了基于主機的卡模擬(HCE)功能(類似于現在火爆的Apple pay)。就是說龍杰ACR122U NFC讀寫器亦可以支持Apple pay 中基于硬件SE的卡模擬功能。

龍杰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。


在Android端,你有一個簡單的HostApduService(定義見HCE文件)。完整源代碼見host-card-emulation-sample repository。

陷阱
在開發過程中首先假設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研發組一起討論吧。

(rfid世界網獨家稿件,轉載請注明來源作者!)



