物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

龍杰ACR122U NFC讀卡器支持Apple Pay功能

作者:龍杰供稿
來源:來源網(wǎng)絡(luò)(侵權(quán)刪)
日期:2016-03-29 09:48:56
摘要:自從谷歌的操作系統(tǒng)Android4.4增加了NFC功能,龍杰NFC研發(fā)組就跟蹤測試了基于主機(jī)的卡模擬(HCE)功能(類似于現(xiàn)在火爆的Apple pay)。就是說龍杰ACR122U NFC讀寫器亦可以支持Apple pay 中基于硬件SE的卡模擬功能。

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

龍杰ACR122U NFC讀卡器支持Apple Pay功能

  龍杰ACR122U NFC讀寫器可支持Apple pay 功能

  下面基于主機(jī)模擬卡的連接龍杰ACR122U的原理給大家演示一遍,先介紹基于主機(jī)的卡模擬功能的工作原理。

  ISO/IEC 7816-4卡片模擬

  ISO/IEC 7816-4標(biāo)簽將內(nèi)存分為多個可以單獨(dú)選擇的應(yīng)用。每個應(yīng)用有一個名稱或者文件ID。你可以發(fā)送SELECT命令并在命令中指定正確的應(yīng)用名稱來連接應(yīng)用。為了實(shí)現(xiàn)這套系統(tǒng),Android基本上是將每個Android應(yīng)用程序視作標(biāo)簽中的一個或者多個應(yīng)用。由于應(yīng)用名稱或者文件ID應(yīng)當(dāng)具有唯一性,所以這個功能非??幔F(xiàn)在你的Android智能手機(jī)變成了一個大標(biāo)簽。這套系統(tǒng)甚至能夠與基于安全模塊的卡模擬共存。

  建立連接的過程十分簡單。首先通過龍杰ACR122U讀寫器(PN532 NFC芯片)發(fā)送一個InListPassiveTarget命令。一旦目標(biāo)進(jìn)入讀寫范圍內(nèi),就直接通過DataExchange命令發(fā)送一個SELECT APDU。從現(xiàn)在開始只需繼續(xù)發(fā)送DataExchange命令,直到整個通信過程結(jié)束。

  以十六進(jìn)制格式表示(InListPassiveTarget):

  D4 4A 01 00

  一旦目標(biāo)進(jìn)入范圍,你會收到下列目標(biāo)信息:

  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

  現(xiàn)在可以發(fā)送SELECT APDU與手機(jī)上的APP建立連接:

  D44001 00A4040007F001020304050600

  返回?cái)?shù)據(jù)如下:

  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?,F(xiàn)在你可以隨意發(fā)送數(shù)據(jù),甚至沒有必要編碼為APDU。

  下面是為該演示編寫的代碼:

  IsoDepTamaCommunicator屬于桌面端,桌面端使用NFCTools與Android設(shè)備建立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功能

  陷阱

  在開發(fā)過程中首先假設(shè)APDU使用常見的CLA,所以選用了DesFire卡的0x90。但返回下列錯誤消息。

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

  通過查看Android source code,會發(fā)現(xiàn)正確的CLA是0x00。另外預(yù)期的P1參數(shù)也可以在源代碼中找到。

  NFCTools范例

  如果想要嘗試,可以克隆host-card-emulation-sample GitHub庫,為自己的設(shè)備編寫Android App。前提要求是Android 4.4系統(tǒng)以上。而桌面端只需要從nfctools-examples releases下載最新版本的nfctools-examples.jar。

  通過以下命令啟動范例:

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

  小結(jié)

  基于主機(jī)的卡模擬功能非常簡單易用。相較于Android Beam功能的LLCP/SNEP實(shí)現(xiàn)來說,不容易出錯并且響應(yīng)速度要快許多。當(dāng)然采用HCE模式進(jìn)行P2P通信只是一個小技巧而已。期望Android團(tuán)隊(duì)會在未來版本中開放對SNEP棧的訪問。

  需要注意的是,一個DataExchange命令能夠傳輸?shù)臄?shù)據(jù)量限制在200字節(jié)左右。如果希望傳輸大量數(shù)據(jù),則需要自己將其劃分為幾個小的塊。

  龍杰NFC研發(fā)組就跟蹤測試了基于主機(jī)的卡模擬(HCE)功能(類似于現(xiàn)在火爆的Apple pay)。就是說龍杰ACR122U NFC讀寫器亦可以支持Apple pay 中基于硬件SE的卡模擬功能。

  如果你對nfctools有任何疑問,請關(guān)注ACS微信加入龍杰NFC研發(fā)組一起討論吧。

龍杰ACR122U NFC讀卡器支持Apple Pay功能

  (rfid世界網(wǎng)獨(dú)家稿件,轉(zhuǎn)載請注明來源作者?。?/b>

人物訪談