AID in android
International Registered Application Provider
Identifier (RID)
• What is the ISO/IEC 7816-5 Numbering System?
• The numbering system provides a means for an application and related
services offered by a provider to identify if a given card contains the elements
required by its application and related services.
• An application identifier (AID) is used to address an application in the card.
• If your application is to be offered internationally, you need an
international AID.
• $500 application fee associated with processing this application.
Source: http://www.ansi.org/other_services/registration_programs/rid.aspx?menuid=10
How about global platform’s AID?
• Previously Global Platform borrowed the RID (the first 5 bytes of the AID) from
VISA. This is because of historical reasons. Global Platform is now a separate
entity but Open Platform.
• VISA did not want to use Global Platform to use their RID anymore. So a new RID
was requested.
• A000000003 000000 for Open Platform and earlier GP implementations and for later cards or
Global Platform specifications you have A000000151 0000 to select the card manager.
• The handling of SELECT is not completely clear from ISO/IEC 7816-4. Generally
though if you provide a smaller AID (of at least 5 bytes) within SELECT by NAME
then a matching application will be selected.
Source: http://www.tagwith.com/question_192038_cant-select-aid-card-manager-when-testing-to-send-apdu
Coexistence with Secure Element Cards
• The NFC controller typically also contains a
default route for APDUs.
• When an AID is not found in the routing table,
the default route is used.
• Beginning with Android 4.4, the default
route is required to be set to the host CPU.
• This means that the routing table typically
only contains entries for AIDs that need to
go to a secure element.
off_host_apdu_servicehost_apdu_service
Source: https://developer.android.com/guide/topics/connectivity/nfc/hce.html#Coexistence
Configure off_host_apdu_service
In your AndroidManifest.xml
<service
android:name=".MyOffHostApduService"
android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE" >
<intent-filter>
<action android:name="android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE" />
</intent-filter>
<meta-data
android:name="android.nfc.cardemulation.off_host_apdu_service"
android:resource="@xml/apduservice" />
</service>
In res/xml/apduservice.xml
<offhost-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/servicedesc"
android:requireDeviceUnlock="false" >
<aid-group
android:category="other"
android:description="@string/subscription" >
<aid-filter android:name=“F123456789" />
</aid-group>
</offhost-apdu-service>
input service name
input AIDs for access SE
Source: https://developer.android.com/guide/topics/connectivity/nfc/hce.html#Coexistence
Appendix
P2P mode description
• Even if you emulate an NFC Forum Type 4 tag with one Android device,
putting two Android devices together will still result in them establishing a
peer-to-peer link (even if Beam is turned off!).
• Thus, the second Android device will not detect your HCE emulated card as
an NFC tag.
• The only way to overcome this limitation is to use the NFC Reader mode
API (new in Android 4.4) on the second device.
• However, in that case, you would need to have an app on the receiving device that is
active in the foreground (that's the only way to enable the Reader mode API).
Source: http://stackoverflow.com.80bola.com/questions/23155719/host-card-emulation-on-android-with-nexus-5/23180223

AID in android

  • 1.
  • 2.
    International Registered ApplicationProvider Identifier (RID) • What is the ISO/IEC 7816-5 Numbering System? • The numbering system provides a means for an application and related services offered by a provider to identify if a given card contains the elements required by its application and related services. • An application identifier (AID) is used to address an application in the card. • If your application is to be offered internationally, you need an international AID. • $500 application fee associated with processing this application. Source: http://www.ansi.org/other_services/registration_programs/rid.aspx?menuid=10
  • 3.
    How about globalplatform’s AID? • Previously Global Platform borrowed the RID (the first 5 bytes of the AID) from VISA. This is because of historical reasons. Global Platform is now a separate entity but Open Platform. • VISA did not want to use Global Platform to use their RID anymore. So a new RID was requested. • A000000003 000000 for Open Platform and earlier GP implementations and for later cards or Global Platform specifications you have A000000151 0000 to select the card manager. • The handling of SELECT is not completely clear from ISO/IEC 7816-4. Generally though if you provide a smaller AID (of at least 5 bytes) within SELECT by NAME then a matching application will be selected. Source: http://www.tagwith.com/question_192038_cant-select-aid-card-manager-when-testing-to-send-apdu
  • 4.
    Coexistence with SecureElement Cards • The NFC controller typically also contains a default route for APDUs. • When an AID is not found in the routing table, the default route is used. • Beginning with Android 4.4, the default route is required to be set to the host CPU. • This means that the routing table typically only contains entries for AIDs that need to go to a secure element. off_host_apdu_servicehost_apdu_service Source: https://developer.android.com/guide/topics/connectivity/nfc/hce.html#Coexistence
  • 5.
    Configure off_host_apdu_service In yourAndroidManifest.xml <service android:name=".MyOffHostApduService" android:exported="true" android:permission="android.permission.BIND_NFC_SERVICE" > <intent-filter> <action android:name="android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE" /> </intent-filter> <meta-data android:name="android.nfc.cardemulation.off_host_apdu_service" android:resource="@xml/apduservice" /> </service> In res/xml/apduservice.xml <offhost-apdu-service xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/servicedesc" android:requireDeviceUnlock="false" > <aid-group android:category="other" android:description="@string/subscription" > <aid-filter android:name=“F123456789" /> </aid-group> </offhost-apdu-service> input service name input AIDs for access SE Source: https://developer.android.com/guide/topics/connectivity/nfc/hce.html#Coexistence
  • 6.
  • 7.
    P2P mode description •Even if you emulate an NFC Forum Type 4 tag with one Android device, putting two Android devices together will still result in them establishing a peer-to-peer link (even if Beam is turned off!). • Thus, the second Android device will not detect your HCE emulated card as an NFC tag. • The only way to overcome this limitation is to use the NFC Reader mode API (new in Android 4.4) on the second device. • However, in that case, you would need to have an app on the receiving device that is active in the foreground (that's the only way to enable the Reader mode API). Source: http://stackoverflow.com.80bola.com/questions/23155719/host-card-emulation-on-android-with-nexus-5/23180223