<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Booto</id>
	<title>3dbrew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Booto"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Booto"/>
	<updated>2026-04-30T13:30:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Title_metadata&amp;diff=957</id>
		<title>Title metadata</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Title_metadata&amp;diff=957"/>
		<updated>2011-07-12T13:01:40Z</updated>

		<summary type="html">&lt;p&gt;Booto: /* Content info records */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Title metadata&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
[http://git.daifukkat.su/?p=3dshax.git Code is available] by trap15 to parse the available information from the 3DS format of TMDs.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
=== Header ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Start&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Length&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;RSA 2048&#039;&#039;||&#039;&#039;RSA 4096&#039;&#039;||||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000||0x000||4||Signature type&lt;br /&gt;
|-&lt;br /&gt;
| 0x004||0x004||256 / 512||Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x104||0x204||60||Padding modulo 64&lt;br /&gt;
|-&lt;br /&gt;
| 0x140||0x240||64||Issuer&lt;br /&gt;
|-&lt;br /&gt;
| 0x180||0x280||1||Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x181||0x281||1||ca_crl_version&lt;br /&gt;
|-&lt;br /&gt;
| 0x182||0x282||1||signer_crl_version&lt;br /&gt;
|-&lt;br /&gt;
| 0x183||0x283||1||Padding modulo 64&lt;br /&gt;
|-&lt;br /&gt;
| 0x184||0x284||8||System Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x18C||0x28C||8||Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x194||0x294||4||Title type&lt;br /&gt;
|-&lt;br /&gt;
| 0x198||0x298||2||Group ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x19A||0x29A||62||reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D8||0x2D8||4||Access rights&lt;br /&gt;
|-&lt;br /&gt;
| 0x1DC||0x2DC||2||Title version&lt;br /&gt;
|-&lt;br /&gt;
| 0x1DE||0x2DE||2||Number of contents (contcount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E0||0x2E0||2||Boot content&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E2||0x2E2||2||Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E4||0x2E4||32||SHA-256 hash of the 36*64 byte long content info record blob (next field)&lt;br /&gt;
|-&lt;br /&gt;
| 0x204||0x304||36*64||Content info records&lt;br /&gt;
|-&lt;br /&gt;
| 0xB04||0xC04||48*contcount|| Content chunk records&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Content info records ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 2&lt;br /&gt;
| Content index offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2&lt;br /&gt;
| Content command count [k]&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 32&lt;br /&gt;
| SHA-256 hash of the next k content records that have not been hashed yet&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Content chunk records ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Content id&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 2&lt;br /&gt;
| Content index&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| 2&lt;br /&gt;
| Content type&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Content size&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 32&lt;br /&gt;
| SHA-256 hash&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Content type flags ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Flags&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Encrypted&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Disc&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| CFM (abbreviation for?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4000&lt;br /&gt;
| Optional&lt;br /&gt;
|-&lt;br /&gt;
| 0x8000&lt;br /&gt;
| Shared&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Certificates ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 4&lt;br /&gt;
| Signature type&lt;br /&gt;
|-&lt;br /&gt;
| 0x004&lt;br /&gt;
| *&lt;br /&gt;
| Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 64&lt;br /&gt;
| Issuer&lt;br /&gt;
|-&lt;br /&gt;
| 0x124&lt;br /&gt;
| 4&lt;br /&gt;
| Tag&lt;br /&gt;
|-&lt;br /&gt;
| 0x128&lt;br /&gt;
| 64&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x168&lt;br /&gt;
| &lt;br /&gt;
| Key&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example code application ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 enum sig_type {&lt;br /&gt;
         RSA_2048_SHA256 = 0x00010004,&lt;br /&gt;
         RSA_4096_SHA256 = 0x00010003,&lt;br /&gt;
         RSA_2048_SHA1   = 0x00010001,&lt;br /&gt;
         RSA_4096_SHA1   = 0x00010000&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
// Sorry I removed the example struct because it is wrong.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Booto</name></author>
	</entry>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=Title_metadata&amp;diff=956</id>
		<title>Title metadata</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=Title_metadata&amp;diff=956"/>
		<updated>2011-07-12T13:00:48Z</updated>

		<summary type="html">&lt;p&gt;Booto: /* Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Title metadata&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
[http://git.daifukkat.su/?p=3dshax.git Code is available] by trap15 to parse the available information from the 3DS format of TMDs.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
=== Header ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Start&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Length&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;RSA 2048&#039;&#039;||&#039;&#039;RSA 4096&#039;&#039;||||&lt;br /&gt;
|-&lt;br /&gt;
| 0x000||0x000||4||Signature type&lt;br /&gt;
|-&lt;br /&gt;
| 0x004||0x004||256 / 512||Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x104||0x204||60||Padding modulo 64&lt;br /&gt;
|-&lt;br /&gt;
| 0x140||0x240||64||Issuer&lt;br /&gt;
|-&lt;br /&gt;
| 0x180||0x280||1||Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x181||0x281||1||ca_crl_version&lt;br /&gt;
|-&lt;br /&gt;
| 0x182||0x282||1||signer_crl_version&lt;br /&gt;
|-&lt;br /&gt;
| 0x183||0x283||1||Padding modulo 64&lt;br /&gt;
|-&lt;br /&gt;
| 0x184||0x284||8||System Version&lt;br /&gt;
|-&lt;br /&gt;
| 0x18C||0x28C||8||Title ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x194||0x294||4||Title type&lt;br /&gt;
|-&lt;br /&gt;
| 0x198||0x298||2||Group ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x19A||0x29A||62||reserved&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D8||0x2D8||4||Access rights&lt;br /&gt;
|-&lt;br /&gt;
| 0x1DC||0x2DC||2||Title version&lt;br /&gt;
|-&lt;br /&gt;
| 0x1DE||0x2DE||2||Number of contents (contcount)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E0||0x2E0||2||Boot content&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E2||0x2E2||2||Padding&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E4||0x2E4||32||SHA-256 hash of the 36*64 byte long content info record blob (next field)&lt;br /&gt;
|-&lt;br /&gt;
| 0x204||0x304||36*64||Content info records&lt;br /&gt;
|-&lt;br /&gt;
| 0xB04||0xC04||48*contcount|| Content chunk records&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Content info records ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 2&lt;br /&gt;
| Content index offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| 2&lt;br /&gt;
| Content command count&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 32&lt;br /&gt;
| SHA-256 hash? Commands?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Content chunk records ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 4&lt;br /&gt;
| Content id&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 2&lt;br /&gt;
| Content index&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| 2&lt;br /&gt;
| Content type&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 8&lt;br /&gt;
| Content size&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 32&lt;br /&gt;
| SHA-256 hash&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Content type flags ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Flags&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Encrypted&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Disc&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| CFM (abbreviation for?)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4000&lt;br /&gt;
| Optional&lt;br /&gt;
|-&lt;br /&gt;
| 0x8000&lt;br /&gt;
| Shared&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Certificates ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Start&lt;br /&gt;
! Length&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x000&lt;br /&gt;
| 4&lt;br /&gt;
| Signature type&lt;br /&gt;
|-&lt;br /&gt;
| 0x004&lt;br /&gt;
| *&lt;br /&gt;
| Signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 64&lt;br /&gt;
| Issuer&lt;br /&gt;
|-&lt;br /&gt;
| 0x124&lt;br /&gt;
| 4&lt;br /&gt;
| Tag&lt;br /&gt;
|-&lt;br /&gt;
| 0x128&lt;br /&gt;
| 64&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| 0x168&lt;br /&gt;
| &lt;br /&gt;
| Key&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example code application ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 enum sig_type {&lt;br /&gt;
         RSA_2048_SHA256 = 0x00010004,&lt;br /&gt;
         RSA_4096_SHA256 = 0x00010003,&lt;br /&gt;
         RSA_2048_SHA1   = 0x00010001,&lt;br /&gt;
         RSA_4096_SHA1   = 0x00010000&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
// Sorry I removed the example struct because it is wrong.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Booto</name></author>
	</entry>
</feed>