From cb60f248318c2d8b73b85777ec57bb0799e25e83 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Fri, 18 Apr 2008 09:01:04 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88?= =?UTF-8?q?=E3=81=A7=E3=81=AFWRAM=E7=B5=8C=E7=94=B1FS=5FRead=E3=82=92?= =?UTF-8?q?=E4=BD=BF=E3=82=8F=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=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@1189 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries_sysmenu/sysmenu/ARM9/Makefile | 2 +- .../sysmenu/ARM9/src/title.c | 11 +++- .../tests/RomTypeTest/ARM9/src/RomTypeTest.c | 60 +++++++++++++++++-- 3 files changed, 65 insertions(+), 8 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/Makefile b/build/libraries_sysmenu/sysmenu/ARM9/Makefile index a6723c7c..b32f1b7a 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/Makefile +++ b/build/libraries_sysmenu/sysmenu/ARM9/Makefile @@ -50,7 +50,7 @@ ifdef DO_NOT_SHOW_LAUNCHER MACRO_FLAGS += -DDO_NOT_SHOW_LAUNCHER endif -ifndef LOAD_APP_VIA_PRIMAL_FS +ifdef LOAD_APP_VIA_WRAM MACRO_FLAGS += -DLOAD_APP_VIA_WRAM endif diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 1f490a4e..1816f70c 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -849,9 +849,14 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle ) } #endif - // TWL以降のアプリはモジュールの特定領域がAES暗号化されているので、ハッシュチェック前にデクリプトする必要がある。 - // ヘッダのデータを使うので、署名チェック後が望ましい。よってこのタイミング。 - SYSM_StartDecryptAESRegion( &(head->s) ); +#ifdef LOAD_APP_VIA_WRAM + if( pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_ROM ) +#endif + { + // TWL以降のアプリはモジュールの特定領域がAES暗号化されているので、ハッシュチェック前にデクリプトする必要がある。 + // ヘッダのデータを使うので、署名チェック後が望ましい。よってこのタイミング。 + SYSM_StartDecryptAESRegion( &(head->s) ); + } // それぞれARM9,7のFLXおよびLTDについてハッシュを計算してヘッダに格納されているハッシュと比較 module_addr[ARM9_STATIC] = head->s.main_ram_address; diff --git a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c b/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c index 77c888a8..3696e6cf 100644 --- a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c +++ b/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c @@ -30,6 +30,7 @@ // function's prototype declaration--------------------- static BOOL ROTestCore( char *path, char *testfile ); +static BOOL RWExTestCore( char *path, char *testfile ); static BOOL SRLTest( void ); static BOOL ContentTest( void ); static void FinalizeRWTest( FSFile *file, char* filename ); @@ -99,7 +100,7 @@ static BOOL ROTestCore( char *path, char *testfile ) */ // ファイルオープン - if ( FS_OpenFileEx( file, filename, FS_FILEMODE_W ) ) + if ( FS_OpenFileEx( file, filename, FS_FILEMODE_RWL ) ) { // ReadOnlyなので、Writeのファイルオープン成功したらだめ if( !s_quiettest ) OS_TPrintf("%s:Write mode open succeed. (ReadOnly) \n",filename); @@ -134,9 +135,59 @@ static BOOL ROTestCore( char *path, char *testfile ) return TRUE; } +static BOOL RWExTestCore( char *path, char *testfile ) +{ + char filename[256]; + char testfilename[256]; + int len; + char buf[5]; + FSFile file[1]; + + FS_InitFile( file ); + STD_TSNPrintf( filename, 256, "%s/%s", path, testfile ); + STD_TSNPrintf( testfilename, 256, "%s/test.txt", path ); + + // ファイルオープン + if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_RWL ) ) + { + // RWLモードファイルオープン失敗 + if( !s_quiettest ) OS_TPrintf("%s:RWL mode open failed.\n",filename); + FS_CloseFile( file ); + return FALSE; + } + + // ファイルリード + len = FS_ReadFile( file, buf, 3 ); + if( len != 3 ) + { + // リード失敗 + if( !s_quiettest ) OS_TPrintf("%s:read failed.\n",filename); + FS_CloseFile( file ); + return FALSE; + } + // ファイルクローズ + if( !FS_CloseFile( file ) ) + { + // クローズ失敗 + if( !s_quiettest ) OS_TPrintf("%s:close failed.\n",filename); + return FALSE; + } + + return TRUE; +} + static BOOL SRLTest( void ) { - return ROTestCore( "nand:", "" ); + if( s_testnum < 17 ) + { + return ROTestCore( "nand:", "" ); + }else if( 16 < s_testnum && s_testnum < 21) + { + return RWExTestCore( "nand:", "" ); + }else + { + return FALSE; + } } static BOOL ContentTest( void ) @@ -251,6 +302,7 @@ static BOOL TMPJumpTest( void ) } u8 tempbuf[ LCFG_TEMP_BUFFER_SIZE * 2 ]; +static TWLSubBannerFile sbf; static void TestFSPermission( void ) { @@ -270,7 +322,7 @@ static void TestFSPermission( void ) result[10] = RWTest( "nand:/import" ); // nand:/import result[11] = RWTest( "nand:/tmp" ); // nand:/tmp result[12] = SRLTest(); // nand:/ - result[13] = OS_DeleteSubBannerFile(); // nand:/ + result[13] = OS_DeleteSubBannerFile(&sbf); // nand:/ result[14] = TMPJumpTest(); // nand:/ @@ -308,7 +360,7 @@ void RomTypeTestInit( void ) PutStringUTF16( 4 * 8, 10 * 8, TXT_COLOR_BLACK, (const u16 *)L"Push X To Start Test Quietly."); GetAndDrawRTCData( &g_rtcDraw, TRUE ); - s_testnum = ((ROM_Header_Short *)(HW_TWL_ROM_HEADER_BUF))->titleID_Lo[1]; + s_testnum = (char)((ROM_Header_Short *)(HW_TWL_ROM_HEADER_BUF))->titleID_Lo[1]; if( '0' <= s_testnum && s_testnum <= '9' ) { s_testnum -= '0';