Use OTP in essential backup instead of OTP hash

This commit is contained in:
d0k3 2017-05-26 01:40:11 +02:00
parent 4984df1c08
commit f920fc47fc
2 changed files with 6 additions and 6 deletions

View File

@ -51,6 +51,6 @@ typedef struct {
u8 padding_frndseed[0x200 - sizeof(LocalFriendCodeSeed)]; u8 padding_frndseed[0x200 - sizeof(LocalFriendCodeSeed)];
u8 nand_cid[0x10]; u8 nand_cid[0x10];
u8 padding_nand_cid[0x200 - 0x10]; u8 padding_nand_cid[0x200 - 0x10];
u8 otp_hash[0x20]; u8 otp[0x100];
u8 padding_otp_hash[0x200 - 0x20]; u8 padding_otp[0x200 - 0x100];
} __attribute__((packed)) EssentialBackup; } __attribute__((packed)) EssentialBackup;

View File

@ -32,7 +32,7 @@ u32 BuildEssentialBackup(const char* path, EssentialBackup* essential) {
{ "movable" , 0x400, 0x140 }, { "movable" , 0x400, 0x140 },
{ "frndseed", 0x600, 0x110 }, { "frndseed", 0x600, 0x110 },
{ "nand_cid", 0x800, 0x010 }, { "nand_cid", 0x800, 0x010 },
{ "otp_hash", 0xA00, 0x020 } { "otp" , 0xA00, 0x100 }
}; };
memset(essential, 0, sizeof(EssentialBackup)); memset(essential, 0, sizeof(EssentialBackup));
memcpy(essential, filelist, sizeof(filelist)); memcpy(essential, filelist, sizeof(filelist));
@ -69,11 +69,11 @@ u32 BuildEssentialBackup(const char* path, EssentialBackup* essential) {
// fill nand cid / otp hash // fill nand cid / otp hash
if (GetNandCid(&(essential->nand_cid)) != 0) return 1; if (GetNandCid(&(essential->nand_cid)) != 0) return 1;
bool have_otp = (GetOtpHash(&(essential->otp_hash)) == 0); if (!IS_UNLOCKED) memset(&(filelist[5]), 0, sizeof(ExeFsFileHeader));
if (!have_otp) memset(&(filelist[5]), 0, sizeof(ExeFsFileHeader)); else memcpy(&(essential->otp), (u8*) 0x10012000, 0x100);
// calculate hashes // calculate hashes
for (u32 i = 0; i < (have_otp ? 6 : 5); i++) for (u32 i = 0; i < (IS_UNLOCKED ? 6 : 5); i++)
sha_quick(essential->header.hashes[9-i], sha_quick(essential->header.hashes[9-i],
((u8*) essential) + files[i].offset + sizeof(ExeFsHeader), ((u8*) essential) + files[i].offset + sizeof(ExeFsHeader),
files[i].size, SHA256_MODE); files[i].size, SHA256_MODE);