4.0.0: Difference between revisions
Package1 update summary. |
|||
Line 38: | Line 38: | ||
The package1 entrypoint address specified by BCT was increased by 0x20-bytes, since there's now an additional 0x20-bytes at the start of package1. The additional data is identical to the 0x20-byte block before it. | The package1 entrypoint address specified by BCT was increased by 0x20-bytes, since there's now an additional 0x20-bytes at the start of package1. The additional data is identical to the 0x20-byte block before it. | ||
====Package1==== | |||
setKeyslotFlags (LT_4001011a) | |||
Instead of writing ~flags directly to securityEngine->KEYSLOT_FLAGS[keyslot], this now preserves the high bits of the existing flags. | |||
getOdmFuse4Type (LT_40010614) | |||
This func now includes bits 16-19 in the OR'd flag used in the switch, and now returns 4 as a default invalid result instead of the low bit of [[Fuses|FUSE_SPARE_BIT_5]]. | |||
checkFuseCoherency (LT_400106e4) | |||
This func was updated to take into account the new invalid retval for getOdmFuse4Type. C | |||
Check that bootrom patch version was < 0x1F was removed, and patch version is still validated to be < 0x7F. | |||
decryptAndParsePK11 (LT_40010734) | |||
The entrypoint calculation code no longer adds *(package11Header + 0x4) to the address. | |||
generateKeys (LT_400107a2) | |||
setKeyslotFlags(keyslot, 0x15) is now additionally called on keyslots 14 and 15. | |||
The code for switching key generation method depending on fuses (unit type) and last byte of PKC modulus has been removed, and replaced with a call to a single key generation function. | |||
The code block inbetween the keyslot-config code was replaced with just a call to LT_40011264. | |||
setKeyslotFlags(keyslot, 0xFF) is now used on keyslots 12 and 15 instead of 12 and 13. | |||
downgradeFuseCheck (LT_400111cc) | |||
The burnt fuse information stored in .rodata now expects 4 fuses to be burnt for retail units, instead of 3. | |||
generateKeysFromBITAddress (LT_40011264) | |||
Instead of calling generateKeysLegacyMethod, this now calls generateKeysFromKeyblobAndKeyseeds (the main key generation function). Legacy key generation code has been removed. | |||
generateKeysFromKeyblobAndKeyseeds (LT_400112f0) | |||
The function now takes in two keyseeds and sizes, previously it only took in one (keyseed, size) pair. | |||
Keyslot 15 (SSK) is now used where keyslot 10 was used previously, and keyslot 15 is no longer cleared when keyslot 14 (SBK) is cleared. | |||
The [[Flash_Filesystem|Keyblob]] keyseed was updated for keyblob 4. | |||
code block following the keyblob clear code was updated: | |||
After the decrypted keyblob is cleared, decryptDataIntoKeyslot(KEYSLOT_14, KEYSLOT_12, secondKeySeed, secondKeySeedSize) is now called before decryptDataIntoKeyslot(KEYSLOT_12, KEYSLOT_12, firstKeySeed, firstKeySeedSize). | |||
At the end of the function, "decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_10, perConsoleKeyseed2, 0x10); clearKeyslot(KEYSLOT_10);" has been replaced with "decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_15, perConsoleKeyseed3, 0x10); decryptDataIntoKeyslot(KEYSLOT_15, KEYSLOT_15, perConsoleKeyseed2, 0x10);" | |||
==Keys== | ==Keys== |