I'm sort of pulling my hair out here. I cannot get the chip to perform a TAM1 or MAM1 cryptographic command. It will only respond with an 0F error. Here is the configuration of my test chip (yes I've tried multiple different chips).
Device Security Configuration (Block 0x3F)
- DEV_SEC_CONFIG: 0xA2 — AES mode enabled, writable
Global Crypto Header (Block 0x0C, Byte 1)
- NFC_GCH: 0xC1 — Access Right Activated
Crypto Config Header (Block 0x0D, Byte 1)
- NFC_CCH: 0xE7 — Active/Locked
Authentication Limit (Block 0x0E)
- NFC_AUTH_LIMIT: 0 — Unlimited attempts
Key Headers (NFC_KHx)
- KEY0 (0x10): 0xE7 — Active/Locked
- KEY1 (0x12): 0xE7 — Active/Locked
- KEY2 (0x14): 0xE7 — Active/Locked
- KEY3 (0x16): 0xE7 — Active/Locked
Key Privileges (NFC_KPx)
- KEY0 (0x11): 0xFF — All privileges (AREA1_Write, AREA1_Read, CryptoConfig, EAS/AFI, Destroy, Privacy, Write, Read)
- KEY1 (0x13): 0x00 — None
- KEY2 (0x15): 0x00 — None
- KEY3 (0x17): 0x00 — None
Key Storage Blocks
- All key storage blocks (0x20–0x2F) are protected and unreadable
Here is the command I'm sending;
The message portion (bytes 12–23) is 12 bytes = 96 bits, as required by the specification.
The response from the chip is always 01 (flags) 0F (error).
What the heck am I doing wrong here?