From d07a97ae0cab4c9be4aa1cc9353e0d7c5e518bf5 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Thu, 5 Jun 2008 01:09:08 +0000 Subject: [PATCH] =?UTF-8?q?4NAA=E5=AF=BE=E5=BF=9C?= 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/branches/20080524_SDK500fc_plus4_branch@1576 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM7/src/setAESKey.c | 7 ++++++- .../sysmenu/ARM9/src/sysmenu_lib.c | 7 ++++++- .../libraries_sysmenu/sysmenu/ARM9/src/title.c | 17 +++++++++++++---- .../sysmenu/common/include/internal_api.h | 3 +++ .../Launcher/ARM9/src/loadWlanFirm.c | 8 ++++++++ 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM7/src/setAESKey.c b/build/libraries_sysmenu/sysmenu/ARM7/src/setAESKey.c index 215a7fba..cb232a67 100644 --- a/build/libraries_sysmenu/sysmenu/ARM7/src/setAESKey.c +++ b/build/libraries_sysmenu/sysmenu/ARM7/src/setAESKey.c @@ -104,7 +104,12 @@ void SYSMi_SetAESKeysForSignJPEG( ROM_Header *pROMH, BOOL *pIsClearSlotB, BOOL * { void *pAESKey; if( ( pROMH->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK ) && - ( 0 == STD_CompareNString( (const char *)&pROMH->s.titleID_Lo[ 1 ], "ANH", 3 ) ) ) { + ( ( 0 == STD_CompareNString( (const char *)&pROMH->s.titleID_Lo[ 1 ], "ANH", 3 ) ) +#ifdef DEV_UIG_LAUNCHER + || ( ( 0 == STD_CompareNString( (const char *)&pROMH->s.titleID_Lo[ 1 ], "AN4", 3 ) ) && ( SCFG_GetBondingOption() != 0 ) ) +#endif + ) + ) { // for Launcher pAESKey = ( SCFG_GetBondingOption() == SCFG_OP_PRODUCT ) ? &( OSi_GetFromFirmAddr()->rsa_pubkey[ 3 ][ 0x30 ] ) : (void *)dev_jpegEncodeKeyForLauncher; diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index c2533f95..73269888 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -513,6 +513,8 @@ static OSTitleId SYSMi_getTitleIdOfMachineSettings( void ) int getNum; int validNum = 0; NAMTitleId *pTitleIDList = NULL; + char machine_setting_code[4]; + ROM_Header_Short *header = ( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; // インストールされているタイトルの取得 getNum = NAM_GetNumTitles(); @@ -523,10 +525,13 @@ static OSTitleId SYSMi_getTitleIdOfMachineSettings( void ) } (void)NAM_GetTitleList( pTitleIDList, (u32)getNum ); + // 本体情報のTitleIDの4バイト目はランチャーのTitleIDの4バイト目と同じ + STD_TSNPrintf( machine_setting_code, 4, "BN%c", header->titleID_Lo[3]); + // 取得したタイトルに本体情報のIDがあるかチェック for( l = 0; l < getNum; l++ ) { char *code = ((char *)&pTitleIDList[l]) + 1; - if( 0 == STD_CompareNString( code, "BNH", 3 ) ) + if( 0 == STD_CompareNString( code, machine_setting_code, 3 ) ) { ret = (OSTitleId)pTitleIDList[l]; break; diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 7b878778..f393a112 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -920,7 +920,11 @@ static AuthResult SYSMi_AuthenticateHeaderWithSign( TitleProperty *pBootTitle, R prev = OS_GetTick(); hi = head->s.titleID_Hi; // Launcherは専用の鍵を使う - if( 0 == STD_CompareNString( &gamecode[1], "ANH", 3 ) ) + if( ( 0 == STD_CompareNString( &gamecode[1], "ANH", 3 ) ) +#ifdef DEV_UIG_LAUNCHER + || ( ( 0 == STD_CompareNString( &gamecode[1], "AN4", 3 ) ) && ( SCFG_GetBondingOption() != 0 ) ) +#endif + ) { keynum = LAUNCHER_KEY_INDEX; }else @@ -1462,12 +1466,13 @@ static void SYSMi_AuthenticateTitleThreadFunc( TitleProperty *pBootTitle ) // ロード済みの指定タイトルを別スレッドで検証開始する +#define AUTH_STACK_SIZE 0x1400 void SYSM_StartAuthenticateTitle( TitleProperty *pBootTitle ) { - static u64 stack[ STACK_SIZE / sizeof(u64) ]; + static u64 stack[ AUTH_STACK_SIZE / sizeof(u64) ]; s_authResult = AUTH_RESULT_PROCESSING; OS_InitThread(); - OS_CreateThread( &s_auth_thread, (void (*)(void *))SYSMi_AuthenticateTitleThreadFunc, (void*)pBootTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO ); + OS_CreateThread( &s_auth_thread, (void (*)(void *))SYSMi_AuthenticateTitleThreadFunc, (void*)pBootTitle, stack+AUTH_STACK_SIZE/sizeof(u64), AUTH_STACK_SIZE,THREAD_PRIO ); OS_WakeupThreadDirect( &s_auth_thread ); } @@ -1616,7 +1621,11 @@ static void SYSMi_makeTitleIdList( void ) // ランチャーはリストに入れない gamecode = (char *)&(pe_hs->titleID); - if( 0 == STD_CompareNString( &gamecode[1], "ANH", 3 ) ) + if( ( 0 == STD_CompareNString( &gamecode[1], "ANH", 3 ) ) +#ifdef DEV_UIG_LAUNCHER + || ( ( 0 == STD_CompareNString( &gamecode[1], "AN4", 3 ) ) && ( SCFG_GetBondingOption() != 0 ) ) +#endif + ) { continue; } diff --git a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h index c1972796..e7fa2cdd 100644 --- a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h +++ b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h @@ -52,6 +52,9 @@ void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle ); #endif // SDK_ARM9 +// UIGランチャーの開発版(4NA*)を開発用CPUに乗ったREDランチャーから +// 起動するためのスイッチ +#define DEV_UIG_LAUNCHER #ifdef SDK_ARM9 //------------------------------------------------------- diff --git a/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c b/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c index 427f35bf..67ee56fe 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c @@ -360,6 +360,14 @@ BOOL InstallWlanFirmware( BOOL isHotStartWLFirm ) u8 *pSecBuf = NULL; u8 *pHdrBuf = NULL; + ROM_Header_Short *header = ( ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; + + if( header->titleID_Lo[3] == '4' ) + { + OS_TPrintf("[Wlan Firm] This is DEV_UIG_Launcher. Wireless firmware download skipped.\n"); + return TRUE; + } + s_isFinished = FALSE; pNwmBuf = NULL; pFwBuffer = NULL;