Package2: Difference between revisions
mNo edit summary |
|||
(13 intermediate revisions by 3 users not shown) | |||
Line 71: | Line 71: | ||
|- | |- | ||
| 0x5C | | 0x5C | ||
| | | 0x1 | ||
| | | Package2 version. Must be >= {minimum valid package2 version} constant in TZ. | ||
|- | |||
| 0x5D | |||
| 0x1 | |||
| Bootloader version. Must be <= {current bootloader version} constant in TZ. | |||
|- | |- | ||
| 0x5E | | 0x5E | ||
Line 132: | Line 136: | ||
Before being decrypted, the encrypted header's CTR additionally encodes metadata used to validate package2's contents as follows: | Before being decrypted, the encrypted header's CTR additionally encodes metadata used to validate package2's contents as follows: | ||
* Size of the entire package2 with the raw header = ctr_word2 ^ ctr_word3 ^ ctr_word0 | * Size of the entire package2 with the raw header = ctr_word2 ^ ctr_word3 ^ ctr_word0 | ||
* | * Key generation = ((ctr_word1 ^ (ctr_word1 >> 16)) & 0xFF) ^ (ctr_word1 >> 24) | ||
In [4.0.0], the | In [4.0.0], the key generation must be less or equal to 4. | ||
== Section 0 == | == Section 0 == | ||
Line 145: | Line 149: | ||
=== INI1 === | === INI1 === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 171: | Line 173: | ||
==== KIP1 ==== | ==== KIP1 ==== | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 217: | Line 217: | ||
| 0x2C | | 0x2C | ||
| 0x4 | | 0x4 | ||
| | | Main Thread Affinity Mask | ||
|- | |- | ||
| 0x30 | | 0x30 | ||
Line 241: | Line 241: | ||
| 0x5C | | 0x5C | ||
| 0x24 | | 0x24 | ||
| Reserved | | Reserved | ||
|- | |- | ||
| 0x80 | | 0x80 | ||
Line 261: | Line 261: | ||
| 0x4 | | 0x4 | ||
| 0x4 | | 0x4 | ||
| | | Size | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x4 | | 0x4 | ||
| Compressed Size | | Compressed/Binary Size | ||
|} | |} | ||
Compressed size can be 0 or lower than | Compressed/Binary size can be 0 or lower than expected, this is the case for BSS for example. | ||
===== Compression ===== | ===== Compression ===== | ||
The compression used here is BLZ, with a modified footer since 3ds. The footer is now 0xC bytes instead of 0x8, and has the form u32 compressed_data_len; u32 | The compression used here is BLZ, with a modified footer since 3ds. The footer is now 0xC bytes instead of 0x8, and has the form u32 compressed_data_len; u32 footer_size; u32 additional_len_when_uncompressed; | ||
== Section 2 == | == Section 2 == | ||
Line 283: | Line 283: | ||
|- | |- | ||
! System version | ! System version | ||
! | ! Bootloader current version | ||
! Package2 minimum valid version | |||
! Package2 version | |||
|- | |- | ||
| [[1.0.0]] | | [[1.0.0]] | ||
| 0x1 | |||
| 0x4 | |||
|- | |||
| [[2.0.0]] | |||
| 0x2 | | 0x2 | ||
| 0x5 | |||
|- | |||
| [[3.0.0]] | |||
| 0x3 | | 0x3 | ||
| | | 0x6 | ||
|- | |- | ||
| [[ | | [[3.0.2]] | ||
| 0x4 | | 0x4 | ||
| | | 0x7 | ||
|- | |- | ||
| [[ | | [[4.0.0]] | ||
| 0x5 | | 0x5 | ||
| | | 0x8 | ||
|- | |- | ||
| [[ | | [[5.0.0]] | ||
| 0x6 | | 0x6 | ||
| | | 0x9 | ||
|- | |- | ||
| [[ | | [[6.0.0]] | ||
| 0x7 | | 0x7 | ||
| | | 0xA | ||
|- | |- | ||
| [[ | | [[6.2.0]] | ||
| 0x8 | | 0x8 | ||
| | | 0xB | ||
|- | |- | ||
| [[ | | [[7.0.0]] | ||
| 0x9 | | 0x9 | ||
| | | 0xC | ||
|- | |- | ||
| [[ | | [[8.1.0]] | ||
| 0xA | | 0xA | ||
| | | 0xD | ||
|- | |- | ||
| [[ | | [[9.0.0]] | ||
| 0xB | | 0xB | ||
| | | 0xE | ||
|- | |- | ||
| [[ | | [[9.1.0]] | ||
| 0xC | | 0xC | ||
| | | 0xF | ||
|- | |- | ||
| [[ | | [[10.0.0]] | ||
| 0xD | | 0xD | ||
| | | 0x10 | ||
|- | |- | ||
| [[ | | [[11.0.0]] | ||
| 0xE | | 0xE | ||
| | | 0x11 | ||
|- | |||
| [[12.0.2]] | |||
| 0xF | |||
| 0x12 | |||
|- | |||
| [[12.1.0]] | |||
| 0xF | |||
| 0x13 | |||
|- | |||
| [[13.0.0]] | |||
| 0xF | |||
| 0x14 | |||
|} | |} | ||