mirror of
https://github.com/CTCaer/hekate
synced 2024-12-22 19:31:12 +00:00
hos: small refactoring
This commit is contained in:
parent
57e6623d74
commit
561a96c62a
5 changed files with 33 additions and 32 deletions
|
@ -547,7 +547,7 @@ int hos_keygen(void *keyblob, u32 kb, tsec_ctxt_t *tsec_ctxt, launch_ctxt_t *hos
|
||||||
{
|
{
|
||||||
switch (kb)
|
switch (kb)
|
||||||
{
|
{
|
||||||
case KB_FIRMWARE_VERSION_100_200:
|
case KB_FIRMWARE_VERSION_100:
|
||||||
case KB_FIRMWARE_VERSION_300:
|
case KB_FIRMWARE_VERSION_300:
|
||||||
case KB_FIRMWARE_VERSION_301:
|
case KB_FIRMWARE_VERSION_301:
|
||||||
se_aes_unwrap_key(13, 15, console_keyseed);
|
se_aes_unwrap_key(13, 15, console_keyseed);
|
||||||
|
@ -789,8 +789,9 @@ int hos_launch(ini_sec_t *cfg)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if fuses lower than 4.0.0 or 9.0.0 or 11.0.0 and if yes apply NO Gamecard patch.
|
// If Auto NOGC is enabled, check if burnt fuses lower than installed HOS fuses and apply NOGC patch.
|
||||||
// Additionally check if running emuMMC and disable GC if v3/v4 fuses are burnt and HOS is <= 8.1.0 or != 11.0.0.
|
// For emuMMC, unconditionally enable NOGC when burnt fuses are higher than installed HOS fuses.
|
||||||
|
// Disable Auto NOGC in stock to prevent black screen (fatal error). Use kip1patch=nogc to force it.
|
||||||
if (!ctxt.stock)
|
if (!ctxt.stock)
|
||||||
{
|
{
|
||||||
u32 fuses = fuse_read_odm(7);
|
u32 fuses = fuse_read_odm(7);
|
||||||
|
@ -808,7 +809,7 @@ int hos_launch(ini_sec_t *cfg)
|
||||||
((fuses & 0x400) && (ctxt.pkg1_id->fuses <= 10)) || // HOS 9.0.0+ fuses burnt.
|
((fuses & 0x400) && (ctxt.pkg1_id->fuses <= 10)) || // HOS 9.0.0+ fuses burnt.
|
||||||
((fuses & 0x2000) && (ctxt.pkg1_id->fuses <= 13)) || // HOS 11.0.0+ fuses burnt.
|
((fuses & 0x2000) && (ctxt.pkg1_id->fuses <= 13)) || // HOS 11.0.0+ fuses burnt.
|
||||||
// Detection broken! Use kip1patch=nogc // HOS 12.0.0+
|
// Detection broken! Use kip1patch=nogc // HOS 12.0.0+
|
||||||
((fuses & 0x4000) && (ctxt.pkg1_id->fuses <= 14)) // HOS 11.0.2+ fuses burnt.
|
((fuses & 0x4000) && (ctxt.pkg1_id->fuses <= 14)) // HOS 12.0.2+ fuses burnt.
|
||||||
)
|
)
|
||||||
))
|
))
|
||||||
config_kip1patch(&ctxt, "nogc");
|
config_kip1patch(&ctxt, "nogc");
|
||||||
|
@ -1058,7 +1059,7 @@ int hos_launch(ini_sec_t *cfg)
|
||||||
// Finalize per firmware key access. Skip access control if new exosphere.
|
// Finalize per firmware key access. Skip access control if new exosphere.
|
||||||
switch (kb | (exo_new << 7))
|
switch (kb | (exo_new << 7))
|
||||||
{
|
{
|
||||||
case KB_FIRMWARE_VERSION_100_200:
|
case KB_FIRMWARE_VERSION_100:
|
||||||
case KB_FIRMWARE_VERSION_300:
|
case KB_FIRMWARE_VERSION_300:
|
||||||
case KB_FIRMWARE_VERSION_301:
|
case KB_FIRMWARE_VERSION_301:
|
||||||
se_key_acc_ctrl(12, SE_KEY_TBL_DIS_KEY_ACCESS_FLAG | SE_KEY_LOCK_FLAG);
|
se_key_acc_ctrl(12, SE_KEY_TBL_DIS_KEY_ACCESS_FLAG | SE_KEY_LOCK_FLAG);
|
||||||
|
|
|
@ -27,19 +27,19 @@
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#define KB_FIRMWARE_VERSION_100_200 0
|
#define KB_FIRMWARE_VERSION_100 0
|
||||||
#define KB_FIRMWARE_VERSION_300 1
|
#define KB_FIRMWARE_VERSION_300 1
|
||||||
#define KB_FIRMWARE_VERSION_301 2
|
#define KB_FIRMWARE_VERSION_301 2
|
||||||
#define KB_FIRMWARE_VERSION_400 3
|
#define KB_FIRMWARE_VERSION_400 3
|
||||||
#define KB_FIRMWARE_VERSION_500 4
|
#define KB_FIRMWARE_VERSION_500 4
|
||||||
#define KB_FIRMWARE_VERSION_600 5
|
#define KB_FIRMWARE_VERSION_600 5
|
||||||
#define KB_FIRMWARE_VERSION_620 6
|
#define KB_FIRMWARE_VERSION_620 6
|
||||||
#define KB_FIRMWARE_VERSION_700 7
|
#define KB_FIRMWARE_VERSION_700 7
|
||||||
#define KB_FIRMWARE_VERSION_810 8
|
#define KB_FIRMWARE_VERSION_810 8
|
||||||
#define KB_FIRMWARE_VERSION_900 9
|
#define KB_FIRMWARE_VERSION_900 9
|
||||||
#define KB_FIRMWARE_VERSION_910 10
|
#define KB_FIRMWARE_VERSION_910 10
|
||||||
#define KB_FIRMWARE_VERSION_1210 11
|
#define KB_FIRMWARE_VERSION_1210 11
|
||||||
#define KB_FIRMWARE_VERSION_MAX KB_FIRMWARE_VERSION_1210
|
#define KB_FIRMWARE_VERSION_MAX KB_FIRMWARE_VERSION_1210
|
||||||
|
|
||||||
#define HOS_PKG11_MAGIC 0x31314B50
|
#define HOS_PKG11_MAGIC 0x31314B50
|
||||||
#define HOS_EKS_MAGIC 0x30534B45
|
#define HOS_EKS_MAGIC 0x30534B45
|
||||||
|
|
|
@ -568,7 +568,7 @@ int hos_keygen(void *keyblob, u32 kb, tsec_ctxt_t *tsec_ctxt)
|
||||||
|
|
||||||
switch (kb)
|
switch (kb)
|
||||||
{
|
{
|
||||||
case KB_FIRMWARE_VERSION_100_200:
|
case KB_FIRMWARE_VERSION_100:
|
||||||
case KB_FIRMWARE_VERSION_300:
|
case KB_FIRMWARE_VERSION_300:
|
||||||
case KB_FIRMWARE_VERSION_301:
|
case KB_FIRMWARE_VERSION_301:
|
||||||
se_aes_unwrap_key(13, 15, console_keyseed);
|
se_aes_unwrap_key(13, 15, console_keyseed);
|
||||||
|
|
|
@ -27,19 +27,19 @@
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#define KB_FIRMWARE_VERSION_100_200 0
|
#define KB_FIRMWARE_VERSION_100 0
|
||||||
#define KB_FIRMWARE_VERSION_300 1
|
#define KB_FIRMWARE_VERSION_300 1
|
||||||
#define KB_FIRMWARE_VERSION_301 2
|
#define KB_FIRMWARE_VERSION_301 2
|
||||||
#define KB_FIRMWARE_VERSION_400 3
|
#define KB_FIRMWARE_VERSION_400 3
|
||||||
#define KB_FIRMWARE_VERSION_500 4
|
#define KB_FIRMWARE_VERSION_500 4
|
||||||
#define KB_FIRMWARE_VERSION_600 5
|
#define KB_FIRMWARE_VERSION_600 5
|
||||||
#define KB_FIRMWARE_VERSION_620 6
|
#define KB_FIRMWARE_VERSION_620 6
|
||||||
#define KB_FIRMWARE_VERSION_700 7
|
#define KB_FIRMWARE_VERSION_700 7
|
||||||
#define KB_FIRMWARE_VERSION_810 8
|
#define KB_FIRMWARE_VERSION_810 8
|
||||||
#define KB_FIRMWARE_VERSION_900 9
|
#define KB_FIRMWARE_VERSION_900 9
|
||||||
#define KB_FIRMWARE_VERSION_910 10
|
#define KB_FIRMWARE_VERSION_910 10
|
||||||
#define KB_FIRMWARE_VERSION_1210 11
|
#define KB_FIRMWARE_VERSION_1210 11
|
||||||
#define KB_FIRMWARE_VERSION_MAX KB_FIRMWARE_VERSION_1210
|
#define KB_FIRMWARE_VERSION_MAX KB_FIRMWARE_VERSION_1210
|
||||||
|
|
||||||
#define HOS_PKG11_MAGIC 0x31314B50
|
#define HOS_PKG11_MAGIC 0x31314B50
|
||||||
#define HOS_EKS_MAGIC 0x30534B45
|
#define HOS_EKS_MAGIC 0x30534B45
|
||||||
|
|
|
@ -115,9 +115,9 @@ const u8 *pkg1_unpack(void *wm_dst, void *sm_dst, void *ldr_dst, const pkg1_id_t
|
||||||
//u32 sec_off[3] = { hdr->wb_off, hdr->ldr_off, hdr->sm_off };
|
//u32 sec_off[3] = { hdr->wb_off, hdr->ldr_off, hdr->sm_off };
|
||||||
|
|
||||||
// Get correct header mapping.
|
// Get correct header mapping.
|
||||||
if (id->kb == KB_FIRMWARE_VERSION_100_200 && !strcmp(id->id, "20161121183008"))
|
if (id->kb == KB_FIRMWARE_VERSION_100 && !strcmp(id->id, "20161121183008"))
|
||||||
sec_map = sec_map_100;
|
sec_map = sec_map_100;
|
||||||
else if (id->kb >= KB_FIRMWARE_VERSION_100_200 && id->kb <= KB_FIRMWARE_VERSION_301)
|
else if (id->kb >= KB_FIRMWARE_VERSION_100 && id->kb <= KB_FIRMWARE_VERSION_301)
|
||||||
sec_map = sec_map_2xx;
|
sec_map = sec_map_2xx;
|
||||||
else
|
else
|
||||||
sec_map = sec_map_4xx;
|
sec_map = sec_map_4xx;
|
||||||
|
|
Loading…
Reference in a new issue