mirror of
https://github.com/CTCaer/hekate.git
synced 2024-11-29 21:12:06 +00:00
pkg2: do not hash kernel/ini1 if exo
This commit is contained in:
parent
836530d4e3
commit
6ac9d79282
3 changed files with 14 additions and 11 deletions
|
@ -1071,7 +1071,7 @@ int hos_launch(ini_sec_t *cfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rebuild and encrypt package2.
|
// Rebuild and encrypt package2.
|
||||||
pkg2_build_encrypt((void *)PKG2_LOAD_ADDR, &ctxt, &kip1_info);
|
pkg2_build_encrypt((void *)PKG2_LOAD_ADDR, &ctxt, &kip1_info, is_exo);
|
||||||
|
|
||||||
// Configure Exosphere if secmon is replaced.
|
// Configure Exosphere if secmon is replaced.
|
||||||
if (is_exo)
|
if (is_exo)
|
||||||
|
|
|
@ -742,7 +742,7 @@ DPRINTF("adding kip1 '%s' @ %08X (%08X)\n", ki->kip1->name, (u32)ki->kip1, ki->s
|
||||||
return ini1_size;
|
return ini1_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pkg2_build_encrypt(void *dst, void *hos_ctxt, link_t *kips_info)
|
void pkg2_build_encrypt(void *dst, void *hos_ctxt, link_t *kips_info, bool is_exo)
|
||||||
{
|
{
|
||||||
u8 *pdst = (u8 *)dst;
|
u8 *pdst = (u8 *)dst;
|
||||||
launch_ctxt_t * ctxt = (launch_ctxt_t *)hos_ctxt;
|
launch_ctxt_t * ctxt = (launch_ctxt_t *)hos_ctxt;
|
||||||
|
@ -807,13 +807,16 @@ DPRINTF("kernel encrypted\n");
|
||||||
ini1_size = _pkg2_ini1_build(pdst, hdr, kips_info, false);
|
ini1_size = _pkg2_ini1_build(pdst, hdr, kips_info, false);
|
||||||
DPRINTF("INI1 encrypted\n");
|
DPRINTF("INI1 encrypted\n");
|
||||||
|
|
||||||
|
if (!is_exo) // Not needed on Exosphere 1.0.0 and up.
|
||||||
|
{
|
||||||
// Calculate SHA256 over encrypted Kernel and INI1.
|
// Calculate SHA256 over encrypted Kernel and INI1.
|
||||||
u8 *pk2_hash_data = (u8 *)dst + 0x100 + sizeof(pkg2_hdr_t);
|
u8 *pk2_hash_data = (u8 *)dst + 0x100 + sizeof(pkg2_hdr_t);
|
||||||
se_calc_sha256_oneshot(&hdr->sec_sha256[0x20 * PKG2_SEC_KERNEL],
|
se_calc_sha256_oneshot(&hdr->sec_sha256[SE_SHA_256_SIZE * PKG2_SEC_KERNEL],
|
||||||
(void *)pk2_hash_data, hdr->sec_size[PKG2_SEC_KERNEL]);
|
(void *)pk2_hash_data, hdr->sec_size[PKG2_SEC_KERNEL]);
|
||||||
pk2_hash_data += hdr->sec_size[PKG2_SEC_KERNEL];
|
pk2_hash_data += hdr->sec_size[PKG2_SEC_KERNEL];
|
||||||
se_calc_sha256_oneshot(&hdr->sec_sha256[0x20 * PKG2_SEC_INI1],
|
se_calc_sha256_oneshot(&hdr->sec_sha256[SE_SHA_256_SIZE * PKG2_SEC_INI1],
|
||||||
(void *)pk2_hash_data, hdr->sec_size[PKG2_SEC_INI1]);
|
(void *)pk2_hash_data, hdr->sec_size[PKG2_SEC_INI1]);
|
||||||
|
}
|
||||||
|
|
||||||
// Encrypt header.
|
// Encrypt header.
|
||||||
*(u32 *)hdr->ctr = 0x100 + sizeof(pkg2_hdr_t) + kernel_size + ini1_size;
|
*(u32 *)hdr->ctr = 0x100 + sizeof(pkg2_hdr_t) + kernel_size + ini1_size;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (c) 2018-2020 CTCaer
|
* Copyright (c) 2018-2022 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
@ -156,6 +156,6 @@ const char* pkg2_patch_kips(link_t *info, char* patchNames);
|
||||||
|
|
||||||
const pkg2_kernel_id_t *pkg2_identify(u8 *hash);
|
const pkg2_kernel_id_t *pkg2_identify(u8 *hash);
|
||||||
pkg2_hdr_t *pkg2_decrypt(void *data, u8 kb, bool is_exo);
|
pkg2_hdr_t *pkg2_decrypt(void *data, u8 kb, bool is_exo);
|
||||||
void pkg2_build_encrypt(void *dst, void *hos_ctxt, link_t *kips_info);
|
void pkg2_build_encrypt(void *dst, void *hos_ctxt, link_t *kips_info, bool is_exo);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue