From d869e8cb7d8773824984ba62494e77cb2e447e2c Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Wed, 25 Jun 2008 06:00:27 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=98=E3=83=83=E3=83=80=E3=81=AE=E3=83=8F?= =?UTF-8?q?=E3=83=83=E3=82=B7=E3=83=A5=E8=A8=88=E7=AE=97=E3=82=BF=E3=82=A4?= =?UTF-8?q?=E3=83=9F=E3=83=B3=E3=82=B0=E3=82=92=E3=80=81=E3=83=97=E3=83=A9?= =?UTF-8?q?=E3=83=83=E3=83=88=E3=83=95=E3=82=A9=E3=83=BC=E3=83=A0=E5=8F=96?= =?UTF-8?q?=E5=BE=97=E5=BE=8C=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1691 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries_sysmenu/sysmenu/ARM9/src/title.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 08ed577e..21beb160 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -780,23 +780,19 @@ OS_TPrintf("RebootSystem failed: cant seek file(0)\n"); goto ERROR; } - //ヘッダ読み込みと同時に各種ハッシュ計算 + //ヘッダ読み込みと同時に各種ハッシュ計算……できない(NTRかTWLか判別できないため)ので読み込みのみ { BOOL result; u32 len = MATH_ROUNDUP( (s32)sizeof(header), SYSM_ALIGNMENT_LOAD_MODULE ); - CalcSHA1CallbackArg arg; - SVC_SHA1Init( &arg.ctx ); - arg.hash_length = (u32)( isTwlApp ? TWL_ROM_HEADER_HASH_CALC_DATA_LEN : NTR_ROM_HEADER_HASH_CALC_DATA_LEN ); if(!isCardApp) { result = FS_ReadFileViaWram(file, (void *)header, (s32)len, MI_WRAM_C, - WRAM_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, SYSMi_CalcSHA1Callback, &arg ); + WRAM_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, NULL, NULL ); }else { result = HOTSW_ReadCardViaWram((void*) 0, (void*)header, (s32)len, MI_WRAM_C, - WRAM_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, SYSMi_CalcSHA1Callback, &arg ); + WRAM_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, NULL, NULL ); } - SVC_SHA1GetHash( &arg.ctx, &s_calc_hash[0] ); if ( !result ) { OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", 0, len); @@ -844,6 +840,9 @@ OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", &s_authcode, } } + // ヘッダのハッシュ計算 + SVC_CalcSHA1( s_calc_hash, header, (u32)( isTwlApp ? TWL_ROM_HEADER_HASH_CALC_DATA_LEN : NTR_ROM_HEADER_HASH_CALC_DATA_LEN )); + //この時点でヘッダの正当性検証 // ※ROMヘッダ認証 s_headerAuthResult = SYSMi_AuthenticateHeader( pBootTitle, head );