Changes

1,466 bytes added ,  16:00, 14 February 2021
Created page with "'''SpotPass''' is a Nintendo Wii U feature that has the same purpose as on the Nintendo 3DS. It downloads automatically content. ==Content Container== SpotPass content must u..."
'''SpotPass''' is a Nintendo Wii U feature that has the same purpose as on the Nintendo 3DS. It downloads automatically content.

==Content Container==
SpotPass content must use this container. Unlike the Nintendo 3DS the format is much smaller and doesn't include RSA signatures probably because they figured out the whole communication is already encrypted with HTTPS. The byte order is Big Endian.

===BOSS Header===
{| class="wikitable"
|-
! Offset
! Length
! Description
|-
| 0x0
| 0x4
| Magic Number "boss"
|-
| 0x4
| 0x4
| Magic Number 0x20001
|-
| 0x8
| 0x2
| Must be 0x0001
|-
| 0xA
| 0x2
| Must be 0x0002
|-
| 0xC
| 0xC
| First 12 bytes of the Initialization Vector (IV)
|-
| 0x18
| 0x8
| Padding
|}

===Payload===
The rest of the container is the payload. It is encrypted with AES-CTR. The first 12 bytes of the IV are from the header at offset 0xC. The last 4 missing bytes are always an integer in big endian of 1 (0x00, 0x00, 0x00, 0x01). The key that is used is the one in [https://wiiubrew.org/wiki//dev/crypto#Key_object_handles key slot 0x1F]

{| class="wikitable"
|-
! Offset
! Length
! Description
|-
| 0x0
| 0x20
| SHA-256 HMAC of the remaining payload
|-
| 0x20
|
| Actual/Remaining payload. The content that gets written to the file system.
|}

The first 32 bytes of the decrypted payload are the SHA-256 HMAC of the remaining payload. The key that is used is stored in [https://wiiubrew.org/wiki//dev/crypto#Key_object_handles key slot 0x20]
12

edits