简体   繁体   中英

How to use ISO7816 select command with DESfire Ev1 card?

I have a DESfire Ev1 version 1.3 card and I'm trying to select a file using ISO7816 apdu style.

I have one file, with aid A0 A1 A2 and I can select it using both native or wrapped mode:

Native:

-> 5A A0 A1 A2
<- 00

Wrapped:

-> 90 5A 00 00 03 A0 A1 A2 00
<- 91 00

However, if I try to select it using ISO7816 style, I always get a file not found error:

ISO7816:

-> 00 A4 04 00 03 A0 A1 A2 00
-> 6A 82

When using ISO apdu, is the AID in a different format? How can I select this AID using it?

From the docs:

This APDU selects an ISO Application by it's ISO Application Identifier (AID). The ISO AID of DESFire is ”0xD2 76 00 00 85 01 00”. The full ISO AID has to be transmitted, partial selection is NOT supported. Other ISO AIDs are not supported by DESFire

This appears to contradict the fact that you have an AID 0xA0 0xA1 0xA2 .

Seems like you need to be sending:

 
 
 
  
  [CLA] [INS] [P1] [P2] [Len(AID)] [AID]
 
  

Thus:

0x00 0xA4 0x04 0x00 0x07 0xD2 0x76 0x00 0x00 0x85 0x01 0x00

** EDIT **

Try ISO SELECT DIRECTORY instead:

This APDU selects a DESFire Application by it's three byte DESFire Application Identifier (DESFire AID). ...

The functionality of the ISO SELECT DIRECTORY Command is compatible with the native DESFire “Select Application” command.

So:

 0x00 0xA4 0x04 0x00 0x03 0xA0 0xA1 0xA2 

(this was on the following page, and probably what you wanted in the first place.)

I think this is identical to what you had, minus the NUL at the end.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM