The first 0x10-bytes are all-zero except the first byte which is 0x80. It's unknown what the first 0x10-bytes are used for.
The first 0x10-bytes are all-zero except the first byte which is 0x80. It's unknown what the first 0x10-bytes are used for.
−
The hash at offset 0x12 hashes the 0x12-byte data at offset 0x0 followed by a zero u16. The RSA signature is signed by Nintendo. Following this header is the actual content payload, which is written to a cleartext file under the [[extdata]] /boss directory.
+
The hash at offset 0x12 hashes the 0x12-byte data at offset 0x0 followed by a zero u16. The RSA signature is signed by Nintendo. Following this header is the actual content payload, which is written to a cleartext file under the [[extdata]] /boss directory. The data following the payload header is written to extdata, but it's unknown what data is written to the extdata file before the content payload.
+
+
=== Payload Content Header ===
+
{| class="wikitable"
+
|-
+
! Offset
+
! Length
+
! Description
+
|-
+
| 0x0
+
| 0x8
+
| ProgramID
+
|-
+
| 0x8
+
| 0x4
+
| Usually zero?
+
|-
+
| 0xC
+
| 0x4
+
| Magic Number 0x10001
+
|-
+
| 0x10
+
| 0x4
+
| Size of the payload after this header
+
|-
+
| 0x14
+
| 0x4
+
| Extdata FileID
+
|-
+
| 0x18
+
| 0x4
+
| ?
+
|-
+
| 0x1C
+
| 0x100
+
| RSA-2048 signature, which likely signs the following hash
+
|-
+
| 0x11C
+
| 0x20
+
| SHA-256 hash, likely hashes the whole content payload
+
|}
+
+
The application likely handles verifying the RSA signature for this payload header.