2016-07-06 104 views
1

Mifare DESFire通信在多個Android設備上路由到HCE而不是脫離主機(UICC)。M4M - Mifare DESFire EV1:需要將哪個Mifare AID添加到NFC路由表中,用於在UICC上將主機路由到Mifare DESFire虛擬卡?

從基於OMAPI的與脫離主機安全元素的通信中,我已經學會了如何將AID添加到Android脫離主機路由表,以便我可以在UICC上選擇它們。 (感謝@邁克爾羅蘭)

我目前的問題:我的UICC上有一個虛擬的Mifare DESfire卡。現在有些設備不會將我的原生包裹的Mifare命令路由到UICC,我仍然沒有交換機來更改默認路由。所以我想在我的脫離主機路由表中有另一個條目,但我不知道要使用哪個AID。

我們的MIFARE DESFire測試應用程序F01010有一個PICC應用程序AID。這是用於在CLT界面上選擇應用程序的AID,但不能輸入到Android脫離主機路由表。另外,我們還有兩個與MIFARE DESFire應用程序相關的其他AID。這是虛擬卡管理器AID(A0000003964D344D1400000000000000)和服務管理器AID(A0000003964D344D2400000000000000)。

但是我必須在路由表中插入哪個AID?

回答

2

的Android(也可能是NFC控制器本身)目前只支持基於ISO/IEC 7816-4 AIDS/DF名稱路由配置。您不能爲本地DESFire AID(即那些3字節AID)添加路由,也不能爲所有本機封裝通信添加路由。

你可以做什麼:

  • 將您的應用程序的DESFire應用程序創建過程中ISO/IEC 716-4 DF名。該DF名稱是可以在Android脫離主機路由配置中指定的AID。但是,您需要使用DESFire ISO命令集(特別是發出SELECT FILE(通過DF名稱)命令來選擇DESFire應用程序)來觸發基於AID的路由。

  • DESFire EV1本身的AID/DF名稱爲D2 76 00 00 85 01 00。如果您的閱讀器選擇此AID(使用SELECT FILE(通過DF名稱)命令),則DESFire卡將切換到ISO成幀(ISO命令和允許的原始命令封裝)並選擇其主文件。您可以使用Android註冊此AID以將所有DESFire通信路由到UICC。但是,每個閱讀器都需要通過發送該SELECT FILE命令來啓動DESFire通信。

-1

如果您想以廣泛的方式部署您的應用程序以避免使用相同AID的應用程序之間發生衝突,您必須遵循ISO7816-5 link。第二種方法是使用總是以0x0F開頭的專有非註冊AID。

例如:爲0x0F,0×11,爲0x22,0x33,0x44進行

+0

對不起,我有一個AID,但我不知道需要添加到路由表中。我的應用程序基本上只是確保將此Mifare Desfire VC(或Mifare Desfire)的所有命令都路由到UICC。爲此,我需要知道哪些以及如何將Mifare Desfire VC(AID)添加到脫離主機路由。 –

+0

嗨安迪,從應用程序級別你不能訪問真正的路由表。你在清單中做的事情基本上只是向Android系統註冊哪些服務使用哪個AID。據我所知,無法從應用程序級別訪問決定將要主持什麼以及將要發送給UICC的真實路由表。如果您想更改默認路由,您必須訪問NFC堆棧本身的配置文件。例如/etc/libnfc-brcm.conf,如果手機裏面有broadcom芯片的話。在這個位置你必須添加你的路線基本上。 – ph10