Title metadata

Revision as of 23:29, 28 June 2022 by Hallowizer (talk | contribs) (byteswaps seem to exist because DSi is little endian)

Title metadata, or TMD for short, is a format used to store information about a title (DSiWare, etc.) and all its installed contents, including which contents they consist of and their SHA1 hashes. The format between Wii and DSi Title metadata appears to be identical; this includes endianness, so byteswaps are often needed on the DSi.

Many operations are done in terms of 64-byte blocks, which means you will often see padding out to the nearest 64-byte boundary at the end of a field.

Example of a Nintendo DSi TMD : http://nus.cdn.t.shop.nintendowifi.net/ccs/download/0003000f484e4c4a/tmd ("HNLJ", or Japanese Version Data.)

The certificate chain at the end of the file seems to always/usually have a size in bytes of 1792 and a SHA256 of 03CE2468F00D1AAEA52D7193A2312B0FE87ECE72D43381C3B6BD4C57E700CDD7.

Structure

Header

Start Length Description
0x000 4 Signature type
0x004 256 Signature
0x104 60 Padding modulo 64
0x140 64 Issuer
0x180 1 Version
0x181 1 ca_crl_version
0x182 1 signer_crl_version
0x183 1 Padding modulo 64
0x184 8 System Version; probably always 0
0x18C 8 Title ID
0x194 4 Title type
0x198 2 Group ID
0x19A 62 reserved
0x1D8 4 Access rights
0x1DC 2 Title version
0x1DE 2 Number of contents (nbr_cont)
0x1E0 2 boot index
0x1E2 2 Padding modulo 64
0x1E4 36*nbr_cont Contents

Content

Start Length Description
0x00 4 Content ID
0x04 2 Index
0x06 2 Type
0x08 8 Size
0x10 20 SHA1 hash

Certificates

Start Length Description
0x000 4 Signature type
0x004 256 Signature
0x104 32 Issuer
0x124 4 Tag
0x128 64 Name
0x168 Key