Forum / MIFARE SDK / Mifare desfire EV1 and ISO IEC 7816-4 Commands
I am sending ISO 7816-4 apdu from my PC/SC application and everything is fine except the following
1. When using UPDATE BINARY command I can write only 55 bytes at a time using short APDU and able to write only 53 bytes using extended APDU
2. The Desfire EV1 documentations says 28 applications are allowed, but I can create only 27 applications in a Brand New Desfire 8K card.
3. Besides this is this possible to create more than 256 bytes at a time from desfire EV1 using ISO 7816-4 READ BINARY COmmand?
I am using ACR122U on a windows 10 platform. I appreciate if somebody can provide me with answers.
+ 0 | - 0
The frame size for one APDU is limited to maximum 64 bytes in DESFire EV1. There is no possibility to increase this framesize. When subtracting the 4 bytes which are needed for ISO/IEC 14443-4, actually only 60 bytes can be used for one native DESFire EV1 command APDU. When using one of the ISO/IEC 7816-4 standard commands which are supported by DESFire EV1 (like Cmd.ISOReadBinary) additionally ISO 7816-4 bytes need to be included into the APDU. The needed bytes are: CLA, INS, P1, P2, Lc and Le. The INS byte reflects the native DESFire EV1 command code and the data section actually holds the command header and the command data.
Your conclusion of being able to write only 55 data bytes at a time when using ISO/IEC 7816-4 APDUs is correct. In one command frame you are limited to this size. If you want to send more data at once, you need to implement a so-called chaining mechanism which basically connects multiple command-response pairs. The ISO chaining mechanism according to ISO/IEC 14443-4 can be implemented in order to send/read larger chunks of data at once (by using multiple challenge-response pairs automatically).
The DESFire EV1 allows the creation of 28 applications (PICC = AID using 0x000000 is not included in counting). The reason that you were not able to create more applications could be the configuration of your applications – can you check how much memory is still available on the card? If you created each application with support of multiple keys it could be that you ran out of memory. If the maximum number of applications is reached and you try to create the 29th one, you get the error code 0xCE (count error) returned, which signalized that the application limit has been reached.
The MIFARE Team
+ 0 | - 0
Excellent, I tried to create applications with varying number of keys and I am able to create 28 App. However, regarding sending more than 64 bytes looks like nightmare. I suppose it is not an easy task to use ISO-IEC 7816-4 command for chanining.
+ 0 | - 0
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic.