====== SCSI for DRM stuff on HiMD ====== ===== Commands ===== ==== Command A3: Write Crypto Stuff ==== (This is officially "Send Key", but only on CD/DVD devices...) 00: BYTE Command byte A3 01: BYTE unused (might contain LUN) 02: DWORD Object Number 06: BYTE unused 07: BYTE Key class - For Sony DRM: BD 08: WORD Size of cryptographic data 0A: BYTE key type 0B: BYTE unused ==== Command A4: Read Crypto Stuff ==== (This is officially "Report Key", but only on CD/DVD devices...) 00: BYTE Command byte A4 01: BYTE unused, send as Zero (might contain LUN) 02: DWORD Object Number 06: BYTE unsused 07: BYTE Key class - For Sony DRM: BD 08: WORD Size of cryptographic data 0A: BYTE key type 0B: BYTE unused ===== Data formats ===== even key types imply data transfer to device (using A3 command), whereas odd key types imply data transfer from device (using A4 command) Generally, all unused fields are sent as zero. ==== Key type 30: Authentication Token 1 ==== This data packet is sent from the Host to the HiMD device 00: WORD Length, must be 0012 02: WORD unsused 04: BYTES 8 bytes "Leaf ID of Host" 0C: BYTES 8 bytes "Nonce from Host" ==== Key type 31: Authentication Token 2 ==== This data packet is sent from the HiMD device to the Host, the expected length is 43C (i.e. header + 64 keys?) 00: DWORD unknown, maybe length in first WORD 04: BYTES 16 bytes "Disc ID" 14: BYTES 8 bytes "MAC from Device" 1C: BYTES 8 bytes "Leaf ID of Device" 24: BYTES 8 bytes "Nonce from Device" 2C: BYTES The "local EKB of the Device" Starts with its length in 16 byte units - 1 ==== Key type 32: Authentication Token 3 ==== This data packet is sent from the Host to the HiMD device 00: WORD Length, must be 41A 02: WORD unused 04: BYTES 8 bytes "MAC from Host" 0C: BYTES The "local EKB of the Host" ==== Key type 33: ICV from device ==== This data packet is sent from the HiMD device to the Host (expected length 404) While this packet is never explained in the HiMD Transfer Tool for MAC, it looks suspiciously like the next one, just the other transfer direction. 00: DWORD unknown, length? 04: BYTE unknown, must be zero 05: BYTE bit flags. Bits 6,7: encryption type (0=plain, 2=des ecb, 3=des cbc) Bit 5: MAC flag Bit 4: DIR flag 06: WORD length of following data 08: DWORD generation number 0C: BYTES data, length from field 6. ..: BYTES MAC, only present if MAC bit is set. NOT included in length ==== Key type 34: ICV data to device ==== This data packet is sent from the Host to the HiMD device 00: WORD length (must be 404) 02: WORD unused 04: BYTE ICV slot number (must be between 0 and 31) 05: BYTE bit flags, same bits used as in Type 33 06: WORD length of ICV data 08: DWORD Generation number 0C: BYTES ICV data XX: BYTES 8 Bytes MAC ==== Key type 38: secure clock ==== This data packet is sent to the device 00: BYTE unused 01: BYTE constant 0 02: WORD unused 04: BYTE unused 05: BYTE constant 20 06: BYTE unused 07: BYTE constant 8 08: DWORD unused 0C: BYTE unused 0D: BYTE Seconds 0E: BYTE Minutes 0F: BYTE Hour 10: BYTE Day 11: BYTE Month 12: BYTE Year 13: BYTE unused 14: BYTES MAC ==== Key type 39: Unique ID ==== This data packet is sent from the HiMD device to the host (expected length 192 bytes) 00: DWORD unknown, maybe length in first two bytes 04: WORD "UidCode" 06: BYTE Version 07: BYTE Length 08: BYTES Uid Data ==== Key type 3B: Leaf ID ==== This data packet is sent from the HiMD device to the host 00: WORD unknown, length? 02: BYTES 8 Bytes leaf ID ==== Key type 3D: Disc ID ==== 00: WORD unknown, length? 02: BYTES 16 bytes disc ID