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>