From 42eee63f275718b31226cbd0b787c11fae7ac547 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Thu, 26 Mar 2009 01:53:57 +0000 Subject: [PATCH] =?UTF-8?q?DS=E3=83=80=E3=82=A6=E3=83=B3=E3=83=AD=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=82=A2=E3=83=97=E3=83=AA=E7=BD=B2=E5=90=8D=E6=A4=9C?= =?UTF-8?q?=E8=A8=BC=E6=99=82=E3=81=AB=E3=80=81FS=E3=81=AE=E3=82=AD?= =?UTF-8?q?=E3=83=A3=E3=83=83=E3=82=B7=E3=83=A5=E9=96=A2=E4=BF=82=E4=B8=8D?= =?UTF-8?q?=E5=85=B7=E5=90=88=E3=81=A7=E5=A4=B1=E6=95=97=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=AE=E3=82=92=E3=83=90=E3=83=83=E3=83=95=E3=82=A1=E3=81=AE?= =?UTF-8?q?=E3=82=A2=E3=83=A9=E3=82=A4=E3=83=A1=E3=83=B3=E3=83=88=E8=AA=BF?= =?UTF-8?q?=E6=95=B4=E3=81=A7=E5=9B=9E=E9=81=BF=E3=80=82=20HWInfo=E3=81=AE?= =?UTF-8?q?=E5=BC=B7=E5=88=B6=E3=83=AD=E3=82=B4=E3=83=87=E3=83=A2=E3=82=B9?= =?UTF-8?q?=E3=82=AD=E3=83=83=E3=83=97=E8=B5=B7=E5=8B=95=E3=83=95=E3=83=A9?= =?UTF-8?q?=E3=82=B0=E3=82=92=E8=A6=8B=E3=81=A6=E5=BC=B7=E5=88=B6=E3=83=AD?= =?UTF-8?q?=E3=82=B4=E3=83=87=E3=83=A2=E3=82=B9=E3=82=AD=E3=83=83=E3=83=97?= =?UTF-8?q?=E7=99=BA=E5=8B=95=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=80=82=20=E3=81=93=E3=82=8C=E3=81=AB=E3=81=A8?= =?UTF-8?q?=E3=82=82=E3=81=AA=E3=81=84=E3=80=81=E5=BC=B7=E5=88=B6=E3=83=AD?= =?UTF-8?q?=E3=82=B4=E3=83=87=E3=83=A2=E3=82=B9=E3=82=AD=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=95=E3=83=A9=E3=82=B0=E3=83=95=E3=83=A9=E3=82=B0=E3=82=92?= =?UTF-8?q?SDK=E3=81=AE=20branch-5=5F0rcplus=5FUIG=5Fplus=20rev.10247=20?= =?UTF-8?q?=E3=81=AB=E8=BF=BD=E5=8A=A0=E3=80=82=E3=81=93=E3=82=8C=E4=BB=A5?= =?UTF-8?q?=E9=99=8D=E3=81=AE=E3=82=82=E3=81=AE=E3=81=A7=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=81=A8=E3=83=93=E3=83=AB=E3=83=89=E9=80=9A=E3=82=8A=E3=81=BE?= =?UTF-8?q?=E3=81=9B=E3=82=93=E3=80=82=20=E3=81=BE=E3=81=9F=E3=80=81?= =?UTF-8?q?=E5=BC=B7=E5=88=B6=E3=83=AD=E3=82=B4=E3=83=87=E3=83=A2=E3=82=B9?= =?UTF-8?q?=E3=82=AD=E3=83=83=E3=83=97=E8=B5=B7=E5=8B=95=E3=83=95=E3=83=A9?= =?UTF-8?q?=E3=82=B0=E3=81=AE=E8=A8=AD=E5=AE=9A=E3=82=92nandinitializer.in?= =?UTF-8?q?i=E3=81=A7=E6=8C=87=E5=AE=9A=E3=81=A7=E3=81=8D=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4=E3=80=82=20?= =?UTF-8?q?=E3=81=93=E3=82=8C=E3=81=AB=E3=81=A8=E3=82=82=E3=81=AA=E3=81=84?= =?UTF-8?q?=E3=80=81=E9=96=A2=E9=80=A3=E3=81=99=E3=82=8B=E9=96=A2=E6=95=B0?= =?UTF-8?q?=E3=82=92=E4=BD=BF=E3=81=A3=E3=81=A6=E3=81=84=E3=82=8B=E3=83=84?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E9=A1=9E=E3=81=AE=E3=82=BD=E3=83=BC=E3=82=B9?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=E3=80=82?= 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@2769 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/sysmenu_lib.c | 3 +- .../sysmenu/ARM9/src/title.c | 22 +++++++------ .../HWInfoWriter/ARM9/src/HWInfoWriter.c | 2 +- .../HWInfoWriter/ARM9/src/hwi.c | 3 +- .../HWInfoWriter/ARM9/src/hwi.h | 2 +- .../ARM9.TWL/include/process_hw_info.h | 2 +- .../ARM9.TWL/src/process_hw_info.c | 33 +++++++++++++++---- .../ARM9.TWL/src/process_wireless_setting.c | 4 +-- .../SystemUpdater/ARM9.TWL/src/hw_info.c | 2 +- .../ARM9.TWL/src/hw_info.c | 2 +- 10 files changed, 50 insertions(+), 25 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index c08a05de..30b04658 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -438,7 +438,8 @@ static TitleProperty *SYSMi_CheckShortcutBoot1( void ) // 量産工程用ショートカットキー or // 検査カード起動 //----------------------------------------------------- - if( SYSM_IsInspectCard() || + if( LCFG_THW_IsForceLogoDemoSkip() || + SYSM_IsInspectCard() || ( ( PAD_Read() == SYSM_PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) && ( !LCFG_TSD_IsFinishedBrokenTWLSettings() || !LCFG_TSD_IsFinishedInitialSetting() || !LCFG_TSD_IsFinishedInitialSetting_Launcher() ) ) ){ diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index b319ae54..75e20751 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -105,7 +105,9 @@ static OSThread s_thread; static OSThread s_auth_thread; static TWLBannerFile s_card_bannerBuf; -static MbAuthCode s_authcode; +static u8 s_authcode[MATH_ROUNDUP32(sizeof(MbAuthCode))] ATTRIBUTE_ALIGN(32); +static MbAuthCode *sp_authcode = (MbAuthCode *)s_authcode; +static MbAuthCode bup_num; static BOOL s_loadstart = FALSE; @@ -820,10 +822,10 @@ OS_TPrintf("RebootSystem failed: cant seek file(0)\n"); UTL_SetFatalError(FATAL_ERROR_LOAD_SEEKFILE_FAILED); goto ERROR; } - readLen = FS_ReadFile(file, &s_authcode, (s32)sizeof(s_authcode)); - if( readLen != (s32)sizeof(s_authcode) ) + readLen = FS_ReadFile(file, sp_authcode, (s32)sizeof(MbAuthCode)); + if( readLen != (s32)sizeof(MbAuthCode) ) { -OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", &s_authcode, 0, sizeof(s_authcode), readLen); +OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", sp_authcode, 0, sizeof(MbAuthCode), readLen); UTL_SetFatalError(FATAL_ERROR_LOAD_READDLSIGN_FAILED); goto ERROR; } @@ -1457,7 +1459,7 @@ static BOOL SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) u8 final_hash[SVC_SHA1_DIGEST_SIZE]; // NTRダウンロードアプリ署名のマジックコードチェック - if( s_authcode.magic_code[0] != 'a' || s_authcode.magic_code[1] != 'c' ) { + if( sp_authcode->magic_code[0] != 'a' || sp_authcode->magic_code[1] != 'c' ) { OS_TPrintf("Authenticate failed: Invalid AuthCode.\n"); UTL_SetFatalError(FATAL_ERROR_DL_MAGICCODE_CHECK_FAILED); return FALSE; @@ -1466,18 +1468,18 @@ static BOOL SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) // NTRダウンロードアプリ署名(DERフォーマット)の計算、ハッシュの取得。 MI_CpuClear8( buf, 0x80 ); SVC_InitSignHeap( &con, (void *)SIGN_HEAP_ADDR, SIGN_HEAP_SIZE );// ヒープの初期化 - if( !SVC_DecryptSignDER( &con, buf, s_authcode.sign, nitro_dl_sign_key )) + if( !SVC_DecryptSignDER( &con, buf, sp_authcode->sign, nitro_dl_sign_key )) { OS_TPrintf("Authenticate failed: Sign decryption failed.\n"); UTL_SetFatalError(FATAL_ERROR_DL_SIGN_DECRYPTION_FAILED); return FALSE; } - + // それぞれheader,ARM9FLX,ARM7FLXについてハッシュを計算して、それら3つを並べたものに対してまたハッシュをとる if(s_calc_hash) { // シリアルナンバー付加 - *(u32 *)(&(s_calc_hash[SVC_SHA1_DIGEST_SIZE * 3])) = s_authcode.serial_number; + *(u32 *)(&(s_calc_hash[SVC_SHA1_DIGEST_SIZE * 3])) = sp_authcode->serial_number; // 最終ハッシュ計算 SVC_CalcSHA1( final_hash, s_calc_hash, SVC_SHA1_DIGEST_SIZE * 3 + sizeof(u32)); }else @@ -1486,7 +1488,7 @@ static BOOL SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) UTL_SetFatalError(FATAL_ERROR_DL_HASH_CALC_FAILED); return FALSE; } - + // 計算した最終ハッシュと、署名から得たハッシュとを比較 if(!SVC_CompareSHA1((const void *)buf, (const void *)final_hash)) { @@ -1499,7 +1501,7 @@ static BOOL SYSMi_AuthenticateNTRDownloadTitle( TitleProperty *pBootTitle) } } OS_TPrintf("Authenticate : total %d ms.\n", OS_TicksToMilliSeconds(OS_GetTick() - start) ); - + return TRUE; } diff --git a/build/systemMenu_tools/HWInfoWriter/ARM9/src/HWInfoWriter.c b/build/systemMenu_tools/HWInfoWriter/ARM9/src/HWInfoWriter.c index a6dbafec..c4b2aadd 100644 --- a/build/systemMenu_tools/HWInfoWriter/ARM9/src/HWInfoWriter.c +++ b/build/systemMenu_tools/HWInfoWriter/ARM9/src/HWInfoWriter.c @@ -204,7 +204,7 @@ static void WriteHWInfoFile( u8 region, BOOL isDisableWireless ) // ------------------------------------- (void)PutStringUTF16( MSG_X * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLACK, pMsgSecureWriting ); - if( HWI_WriteHWSecureInfoFile( region, NULL, isDisableWireless ) ) { + if( HWI_WriteHWSecureInfoFile( region, NULL, isDisableWireless, FALSE ) ) { (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLUE, pMsgSucceeded ); }else { (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_RED, pMsgFailed ); diff --git a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c index a3cdc72a..80325139 100644 --- a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c +++ b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.c @@ -417,7 +417,7 @@ BOOL HWI_WriteHWNormalInfoFile( void ) Returns: None. *---------------------------------------------------------------------------*/ -BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWireless ) +BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWireless, BOOL logoDemoSkipForce ) { BOOL isWrite = TRUE; LCFGReadResult result; @@ -435,6 +435,7 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWi } LCFG_THW_SetFlagForceDisableWireless( isDisableWireless ); + LCFG_THW_SetFlagForceLogoDemoSkip( logoDemoSkipForce ); // 旧リージョンを保存 old_region = OS_GetRegion(); diff --git a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.h b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.h index 71e526cf..b5ab0192 100644 --- a/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.h +++ b/build/systemMenu_tools/HWInfoWriter/ARM9/src/hwi.h @@ -39,7 +39,7 @@ HwiInitResult; HwiInitResult HWI_Init( void *(*pAlloc)( u32 ), void (*pFree)( void * ) ); BOOL HWI_ModifyLanguage( u8 region ); BOOL HWI_WriteHWNormalInfoFile( void ); -BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWireless ); +BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo, BOOL isDisableWireless, BOOL logoDemoSkipForce ); BOOL HWI_WriteHWIDSignFile( void ); BOOL HWI_DeleteHWNormalInfoFile( void ); BOOL HWI_DeleteHWSecureInfoFile( void ); diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_hw_info.h b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_hw_info.h index ea3508d4..82a20abb 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_hw_info.h +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/include/process_hw_info.h @@ -52,7 +52,7 @@ void* HWInfoProcess4(void); Returns: None. *---------------------------------------------------------------------------*/ -BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff ); +BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff, BOOL logoDemoSkipForce ); /*===========================================================================*/ diff --git a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_hw_info.c b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_hw_info.c index 38020c37..bf893363 100644 --- a/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_hw_info.c +++ b/build/systemMenu_tools/NandInitializerRed/ARM9.TWL/src/process_hw_info.c @@ -71,6 +71,7 @@ enum { static s8 sMenuSelectNo; static BOOL sWirelessForceOff; +static BOOL sLogoDemoSkipForce; /*---------------------------------------------------------------------------* 内部関数宣言 @@ -79,7 +80,7 @@ static BOOL sWirelessForceOff; static BOOL WriteHWNormalInfoFile( void ); static BOOL WriteHWSecureInfoFile( u8 region ); //static BOOL DeleteHWInfoFile( void ); -static BOOL GetNandInitializerSetting(u8* region, u8* wireless); +static BOOL GetNandInitializerSetting(u8* region, u8* wireless, u8* logodemoskip); /*---------------------------------------------------------------------------* プロセス関数定義 @@ -210,11 +211,12 @@ void* HWInfoProcess2(void) if (gAutoFlag) { // SDカードのnandinitializer.iniより設定を取得 - if (!GetNandInitializerSetting((u8 *)&sMenuSelectNo, (u8 *)&sWirelessForceOff)) + if (!GetNandInitializerSetting((u8 *)&sMenuSelectNo, (u8 *)&sWirelessForceOff, (u8 *)&sLogoDemoSkipForce)) { // 設定の取得に失敗した場合はデフォルト設定(REGION_JAPAN/WIRELESS_ENABLE) sMenuSelectNo = 0; sWirelessForceOff = FALSE; + sLogoDemoSkipForce = FALSE; } } else @@ -232,7 +234,7 @@ void* HWInfoProcess2(void) case MENU_REGION_CHINA: case MENU_REGION_KOREA: - result = WriteHWInfoFile( (u8)sMenuSelectNo, sWirelessForceOff ); + result = WriteHWInfoFile( (u8)sMenuSelectNo, sWirelessForceOff, sLogoDemoSkipForce ); // 全リージョンの結果をクリア for (i=0;i