From ae78f232be79e0666a70bfd17695df14072e522a Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Tue, 20 May 2008 07:14:00 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=9B=E3=83=AF=E3=82=A4=E3=83=88=E3=83=AA?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E5=87=A6?= =?UTF-8?q?=E7=90=86=E5=AE=9F=E8=A3=85=E3=81=AE=E6=BA=96=E5=82=99?= 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@1422 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/title.c | 55 ++++++++++++++++--- build/tests/RelocateChecker/ARM9/Makefile.1 | 2 +- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 3123ccdc..97abb012 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -803,8 +803,8 @@ BOOL SYSM_IsLoadTitleFinished( void ) // // ============================================================================ -// TWLアプリおよびNTR拡張NANDアプリ共通のヘッダ認証処理 -static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle, ROM_Header *head ) +// 署名つきアプリ(≠DSダウンロードアプリ署名)共通のヘッダ認証処理 +static AuthResult SYSMi_AuthenticateHeaderWithSign( TitleProperty *pBootTitle, ROM_Header *head ) { // 署名処理 const u8 *key; @@ -818,6 +818,7 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle, ROM_He start = OS_GetTick(); // pBootTitle->titleIDとROMヘッダのtitleIDの一致確認をする。 + // [TODO:]ホワイトリストマスタリングされたNTRアプリで行わない場合はSYSMi_AuthenticateTWLHeaderへ移動 if( pBootTitle->titleID != head->s.titleID ) { //TWL対応ROMで、ヘッダのtitleIDが起動指定されたIDと違う @@ -907,7 +908,21 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle, ROM_He return AUTH_RESULT_SUCCEEDED; } -// TWLアプリおよびNTR拡張NANDアプリ共通の認証 +// TWLアプリ、NTR拡張NANDアプリ 共通のヘッダ認証処理 +static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle, ROM_Header *head ) +{ + if( head->s.enable_signature ) + { + return SYSMi_AuthenticateHeaderWithSign( pBootTitle, head ); + }else + { + // 署名有効フラグが立っていなければFAILED + OS_TPrintf("Authenticate_Header failed: Sign check flag is OFF.\n"); + return AUTH_RESULT_AUTHENTICATE_FAILED; + } +} + +// TWLアプリ、NTR拡張NANDアプリ 共通の認証 static AuthResult SYSMi_AuthenticateTWLTitle( TitleProperty *pBootTitle ) { ROM_Header *head; @@ -1084,16 +1099,40 @@ static AuthResult SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) // NTR版カードアプリのヘッダ認証処理 static AuthResult SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_Header *head ) { -#pragma unused(pBootTitle,head) - // [TODO:]NTRカード ホワイトリストorホワイトリスト署名チェック - return AUTH_RESULT_SUCCEEDED; + AuthResult ret; + if( head->s.enable_nitro_whitelist_signature ) + { + // マスタリング済みNTRカードアプリの署名チェック(実はTWLアプリと同じ) + ret = SYSMi_AuthenticateHeaderWithSign( pBootTitle, head ); + if( ret == AUTH_RESULT_SUCCEEDED ) + { +#ifdef DHT_TEST + // [TODO:]retを捕まえてOKならhash値をstatic変数に保存しておき、DHTのphase1とphase2で使う +#endif + } + }else + { + // [TODO:]NTRカード ホワイトリスト検索 + // ホワイトリスト検索 + ret = AUTH_RESULT_SUCCEEDED; + if( ret == AUTH_RESULT_SUCCEEDED ) + { +#ifdef DHT_TEST + // [TODO:]retを捕まえてOKならhash値をstatic変数に保存しておき、DHTのphase1とphase2で使う +#endif + } + } + return ret; } // NTR版カードアプリの認証 static AuthResult SYSMi_AuthenticateNTRCardTitle( TitleProperty *pBootTitle) { #pragma unused(pBootTitle) - // [TODO:]DHTチェック + // [TODO:]DHTチェックphase2(phase1はstaticの読み込み時に平行処理) +#ifdef DHT_TEST + +#endif return AUTH_RESULT_SUCCEEDED; } @@ -1102,7 +1141,6 @@ static AuthResult SYSMi_AuthenticateHeader( TitleProperty *pBootTitle, ROM_Heade { ROM_Header_Short *hs = ( ROM_Header_Short *)head; // [TODO:]認証結果はどこかワークに保存しておく? - // [TODO:]署名チェックを行う場合、ヘッダに署名ビットがあるはずなので、それを確認して署名チェックを行う if( hs->platform_code & PLATFORM_CODE_FLAG_TWL ) { // TWLアプリ @@ -1163,7 +1201,6 @@ static AuthResult SYSMi_AuthenticateTitleCore( TitleProperty *pBootTitle) { ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF; // [TODO:]認証結果はどこかワークに保存しておく? - // [TODO:]署名チェックを行う場合、ヘッダに署名ビットがあるはずなので、それを確認して署名チェックを行う if( hs->platform_code & PLATFORM_CODE_FLAG_TWL ) { // TWLアプリ diff --git a/build/tests/RelocateChecker/ARM9/Makefile.1 b/build/tests/RelocateChecker/ARM9/Makefile.1 index 9ae825da..ae4e336f 100644 --- a/build/tests/RelocateChecker/ARM9/Makefile.1 +++ b/build/tests/RelocateChecker/ARM9/Makefile.1 @@ -32,7 +32,7 @@ TARGET_FOB = ARM9FLX.fob FBDSIZE_ARM9FLX = 1810720 TARGET_FOB += ARM9LTD.fob #ARM9_LTD_addsize -FBDSIZE_ARM9LTD = 3097152 +FBDSIZE_ARM9LTD = 2597152 TARGET_NUMBER = 1 TARGET_NAME = RelocateChecker$(TARGET_NUMBER)