デフォルトではWRAM経由FS_Readを使わないように変更

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1189 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yoshida_teruhisa 2008-04-18 09:01:04 +00:00
parent 34dcca87be
commit cb60f24831
3 changed files with 65 additions and 8 deletions

View File

@ -50,7 +50,7 @@ ifdef DO_NOT_SHOW_LAUNCHER
MACRO_FLAGS += -DDO_NOT_SHOW_LAUNCHER MACRO_FLAGS += -DDO_NOT_SHOW_LAUNCHER
endif endif
ifndef LOAD_APP_VIA_PRIMAL_FS ifdef LOAD_APP_VIA_WRAM
MACRO_FLAGS += -DLOAD_APP_VIA_WRAM MACRO_FLAGS += -DLOAD_APP_VIA_WRAM
endif endif

View File

@ -849,9 +849,14 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle )
} }
#endif #endif
// TWL以降のアプリはモジュールの特定領域がAES暗号化されているので、ハッシュチェック前にデクリプトする必要がある。 #ifdef LOAD_APP_VIA_WRAM
// ヘッダのデータを使うので、署名チェック後が望ましい。よってこのタイミング。 if( pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_ROM )
SYSM_StartDecryptAESRegion( &(head->s) ); #endif
{
// TWL以降のアプリはモジュールの特定領域がAES暗号化されているので、ハッシュチェック前にデクリプトする必要がある。
// ヘッダのデータを使うので、署名チェック後が望ましい。よってこのタイミング。
SYSM_StartDecryptAESRegion( &(head->s) );
}
// それぞれARM9,7のFLXおよびLTDについてハッシュを計算してヘッダに格納されているハッシュと比較 // それぞれARM9,7のFLXおよびLTDについてハッシュを計算してヘッダに格納されているハッシュと比較
module_addr[ARM9_STATIC] = head->s.main_ram_address; module_addr[ARM9_STATIC] = head->s.main_ram_address;

View File

@ -30,6 +30,7 @@
// function's prototype declaration--------------------- // function's prototype declaration---------------------
static BOOL ROTestCore( char *path, char *testfile ); static BOOL ROTestCore( char *path, char *testfile );
static BOOL RWExTestCore( char *path, char *testfile );
static BOOL SRLTest( void ); static BOOL SRLTest( void );
static BOOL ContentTest( void ); static BOOL ContentTest( void );
static void FinalizeRWTest( FSFile *file, char* filename ); 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のファイルオープン成功したらだめ // ReadOnlyなので、Writeのファイルオープン成功したらだめ
if( !s_quiettest ) OS_TPrintf("%s:Write mode open succeed. (ReadOnly) \n",filename); 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; 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 ) static BOOL SRLTest( void )
{ {
return ROTestCore( "nand:", "<srl>" ); if( s_testnum < 17 )
{
return ROTestCore( "nand:", "<srl>" );
}else if( 16 < s_testnum && s_testnum < 21)
{
return RWExTestCore( "nand:", "<srl>" );
}else
{
return FALSE;
}
} }
static BOOL ContentTest( void ) static BOOL ContentTest( void )
@ -251,6 +302,7 @@ static BOOL TMPJumpTest( void )
} }
u8 tempbuf[ LCFG_TEMP_BUFFER_SIZE * 2 ]; u8 tempbuf[ LCFG_TEMP_BUFFER_SIZE * 2 ];
static TWLSubBannerFile sbf;
static void TestFSPermission( void ) static void TestFSPermission( void )
{ {
@ -270,7 +322,7 @@ static void TestFSPermission( void )
result[10] = RWTest( "nand:/import" ); // nand:/import result[10] = RWTest( "nand:/import" ); // nand:/import
result[11] = RWTest( "nand:/tmp" ); // nand:/tmp result[11] = RWTest( "nand:/tmp" ); // nand:/tmp
result[12] = SRLTest(); // nand:/<srl> result[12] = SRLTest(); // nand:/<srl>
result[13] = OS_DeleteSubBannerFile(); // nand:/<banner> result[13] = OS_DeleteSubBannerFile(&sbf); // nand:/<banner>
result[14] = TMPJumpTest(); // nand:/<tmpjump> result[14] = TMPJumpTest(); // nand:/<tmpjump>
@ -308,7 +360,7 @@ void RomTypeTestInit( void )
PutStringUTF16( 4 * 8, 10 * 8, TXT_COLOR_BLACK, (const u16 *)L"Push X To Start Test Quietly."); PutStringUTF16( 4 * 8, 10 * 8, TXT_COLOR_BLACK, (const u16 *)L"Push X To Start Test Quietly.");
GetAndDrawRTCData( &g_rtcDraw, TRUE ); 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' ) if( '0' <= s_testnum && s_testnum <= '9' )
{ {
s_testnum -= '0'; s_testnum -= '0';