Changes

1,496 bytes added ,  00:33, 30 March 2011
Added table with offsets similar to WiiBrew, DSiBrew, entries. Signature throws off values?
Line 1: Line 1: −
[http://git.daifukkat.su/?p=3dshax.git Code Application by trap15]
+
'''Title metadata''' is a format used to store information about a title (a single standalone game, channel, etc.) and all its installed contents, including which contents they consist of and their SHA1 hashes.
    +
[http://git.daifukkat.su/?p=3dshax.git Code is available] by trap15 to parse the available information from the 3DS format of TMDs.
 +
 +
== Structure ==
 +
=== Header ===
 +
{| class="wikitable"
 +
|- style="background-color: #ddd;"
 +
! Start
 +
! Length
 +
! Description
 +
|-
 +
| 0x000
 +
| 4
 +
| Signature type
 +
|-
 +
| 0x004
 +
| *
 +
| 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
 +
|-
 +
| 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
 +
|-
 +
| 0x1E0
 +
| 64
 +
| Content Records
 +
|-
 +
| 0x220
 +
| 40
 +
| Padding modulo 64
 +
|-
 +
| 0x248
 +
| 4
 +
| Boot content
 +
|-
 +
| 0x252
 +
| 4
 +
| Banner content
 +
|-
 +
| 0x256
 +
| 4
 +
| Banner size
 +
|-
 +
| 0x260
 +
| 32
 +
| Hash
 +
 +
|}
 +
 +
=== Content Records ===
 +
{| class="wikitable"
 +
|-
 +
! Start
 +
! Length
 +
! Description
 +
|-
 +
| 0x00
 +
| 4
 +
| Content ID
 +
|-
 +
| 0x04
 +
| 32
 +
| SHA-256 Hash
 +
|}
 +
 +
=== Certificates ===
 +
{| class="wikitable"
 +
|-
 +
! Start
 +
! Length
 +
! Description
 +
|-
 +
| 0x000
 +
| 4
 +
| Signature type
 +
|-
 +
| 0x004
 +
| *
 +
| Signature
 +
|-
 +
| 0x104
 +
| 64
 +
| Issuer
 +
|-
 +
| 0x124
 +
| 4
 +
| Tag
 +
|-
 +
| 0x128
 +
| 64
 +
| Name
 +
|-
 +
| 0x168
 +
|
 +
| Key
 +
|}
 +
 +
== Example code application ==
 +
<source lang="c">
 
  typedef struct {
 
  typedef struct {
 
         u32 cid;        // content id
 
         u32 cid;        // content id
Line 47: Line 197:  
         u8 key[...];
 
         u8 key[...];
 
  } certificate;
 
  } certificate;
 +
</source>
3

edits