From 4e63f543f8d83e9f2647293e05582ab7f55d669b Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Wed, 9 Apr 2008 02:05:11 +0000 Subject: [PATCH] =?UTF-8?q?AES=E3=83=87=E3=82=AF=E3=83=AA=E3=83=97?= =?UTF-8?q?=E3=83=88=E5=87=A6=E7=90=86=E3=81=AE=E3=82=BF=E3=82=A4=E3=83=9F?= =?UTF-8?q?=E3=83=B3=E3=82=B0=E3=82=92=E5=A4=89=E6=9B=B4=EF=BC=88=E7=BD=B2?= =?UTF-8?q?=E5=90=8D=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E7=9B=B4=E5=BE=8C?= =?UTF-8?q?=EF=BC=89=20=E3=83=87=E3=82=AF=E3=83=AA=E3=83=97=E3=83=88?= =?UTF-8?q?=E7=AF=84=E5=9B=B2=E5=88=A4=E5=AE=9A=E3=81=AE=E5=8E=B3=E5=AF=86?= =?UTF-8?q?=E5=8C=96?= 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@1088 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries_sysmenu/sysmenu/ARM9/src/title.c | 8 ++++---- build/libraries_sysmenu/sysmenu/common/src/decodeAES.c | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 877427b5..73feb88e 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -701,6 +701,10 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle ) { OS_TPrintf("Authenticate : Sign check succeed. %dms.\n", OS_TicksToMilliSeconds(OS_GetTick() - prev)); } + + // TWL以降のアプリはモジュールの特定領域がAES暗号化されているので、ハッシュチェック前にデクリプトする必要がある。 + // ヘッダのデータを使うので、署名チェック後が望ましい。よってこのタイミング。 + SYSM_StartDecryptAESRegion( &(head->s) ); // それぞれARM9,7のFLXおよびLTDについてハッシュを計算してヘッダに格納されているハッシュと比較 module_addr[ARM9_STATIC] = head->s.main_ram_address; @@ -887,10 +891,6 @@ static AuthResult SYSMi_AuthenticateHeader( TitleProperty *pBootTitle) if( hs->platform_code & PLATFORM_CODE_FLAG_TWL ) { // TWLアプリ - - // TWLアプリの場合はAES暗号化されている部分をデクリプトする - SYSM_StartDecryptAESRegion( hs ); - // 認証処理 switch( pBootTitle->flags.bootType ) { diff --git a/build/libraries_sysmenu/sysmenu/common/src/decodeAES.c b/build/libraries_sysmenu/sysmenu/common/src/decodeAES.c index fda02e23..1f7dd484 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/decodeAES.c +++ b/build/libraries_sysmenu/sysmenu/common/src/decodeAES.c @@ -85,8 +85,9 @@ void SYSM_StartDecryptAESRegion( ROM_Header_Short *hs ) } for( l=0; l<4; l++ ) { + // モジュール配置先の領域(サイズは32バイト単位に補正)に、復号指定領域が含まれているか? if( module_offset[l] <= region_offset[m] && - region_offset[m] < module_offset[l] + module_size[l] ) + region_offset[m] + region_size[m] <= module_offset[l] + MATH_ROUNDUP( module_size[l], SYSM_ALIGNMENT_LOAD_MODULE ) ) { region_addr[m] = (void *)( (u32)module_addr[l] + (region_offset[m] - module_offset[l]) ); break;