diff --git a/build/systemMenu_RED/HWInfoWriter/ARM9/Makefile b/build/systemMenu_RED/HWInfoWriter/ARM9/Makefile index ae33856d..b7b212ec 100644 --- a/build/systemMenu_RED/HWInfoWriter/ARM9/Makefile +++ b/build/systemMenu_RED/HWInfoWriter/ARM9/Makefile @@ -20,6 +20,12 @@ SUBDIRS = \ #---------------------------------------------------------------------------- +#============================================================================ +#現時点で製品鍵を使った書き込みが行えてはダメなので、デフォルトOFFにしておいてください。 +#USE_PRODUCT_KEY = TRUE +#============================================================================ + + TARGET_FIRM = SYSTEMMENU TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED @@ -40,14 +46,20 @@ LINCLUDES = $(MISC_DIR)/include \ $(ROOT)/build/libraries/lcfg/ARM9.TWL/include LLIBRARIES = libacsign_enc$(TWL_LIBSUFFIX).a +ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) +ifdef USE_PRODUCT_KEY +MACRO_FLAGS += -DUSE_PRODUCT_KEY +MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der' +else +MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo_dev.der' +endif +endif + MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ - -DHWINFO_PRIVKEY='private_HWInfo.der' + -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa' + MAKETAD_FLAGS += -s -MAKEROM_FLAGS += -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa' -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -MACRO_FLAGS += -DUSE_PRODUCT_KEY -endif include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs diff --git a/build/systemMenu_RED/HWInfoWriter/ARM9/main.rsf b/build/systemMenu_RED/HWInfoWriter/ARM9/main.rsf index 378e391e..99057493 100644 --- a/build/systemMenu_RED/HWInfoWriter/ARM9/main.rsf +++ b/build/systemMenu_RED/HWInfoWriter/ARM9/main.rsf @@ -179,5 +179,4 @@ RomSpec HostRoot $(PRIVKEY_PATH) Root /key File $(HWINFO_PRIVKEY) - } diff --git a/build/systemMenu_RED/HWInfoWriter/ARM9/src/HWInfoWriter.c b/build/systemMenu_RED/HWInfoWriter/ARM9/src/HWInfoWriter.c index 83421239..788dacac 100644 --- a/build/systemMenu_RED/HWInfoWriter/ARM9/src/HWInfoWriter.c +++ b/build/systemMenu_RED/HWInfoWriter/ARM9/src/HWInfoWriter.c @@ -26,7 +26,7 @@ // define data------------------------------------------ #define WRITER_ELEMENT_NUM 7 #define MSG_X 3 -#define MSG_Y 19 +#define MSG_Y 18 // extern data------------------------------------------ @@ -59,13 +59,13 @@ static const u16 *const s_pStrWriter[ WRITER_ELEMENT_NUM ] = { }; static MenuPos s_writerPos[] = { - { TRUE, 3 * 8, 4 * 8 }, - { TRUE, 3 * 8, 6 * 8 }, - { TRUE, 3 * 8, 8 * 8 }, - { TRUE, 3 * 8, 10 * 8 }, - { TRUE, 3 * 8, 12 * 8 }, - { TRUE, 3 * 8, 14 * 8 }, - { TRUE, 3 * 8, 16 * 8 }, + { TRUE, 3 * 8, 3 * 8 }, + { TRUE, 3 * 8, 5 * 8 }, + { TRUE, 3 * 8, 7 * 8 }, + { TRUE, 3 * 8, 9 * 8 }, + { TRUE, 3 * 8, 11 * 8 }, + { TRUE, 3 * 8, 13 * 8 }, + { TRUE, 3 * 8, 15 * 8 }, }; @@ -106,9 +106,20 @@ void HWInfoWriterInit( void ) PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"HW Info Writer"); GetAndDrawRTCData( &g_rtcDraw, TRUE ); - if (HWI_Init( Alloc, Free ) == HWI_INIT_SUCCESS_NO_SIGNATRUE_MODE) { - PutStringUTF16( 14 * 8, 0 * 8, TXT_COLOR_RED, (const u16 *)L"[No Signature MODE]" ); + char *pMode = NULL; + switch ( HWI_Init( Alloc, Free ) ) { + case HWI_INIT_SUCCESS_NO_SIGNATRUE_MODE: + pMode = "No"; + break; + case HWI_INIT_SUCCESS_PRO_SIGNATURE_MODE: + pMode = "Pro"; + break; + case HWI_INIT_SUCCESS_DEV_SIGNATURE_MODE: + pMode = "Dev"; + break; + } + PrintfSJIS( 14 * 8, 0 * 8, TXT_COLOR_RED, "[%s Signature MODE]", pMode ); } OS_TPrintf( "region = %d\n", LCFG_THW_GetRegion() ); @@ -169,25 +180,41 @@ static void WriteHWInfoFile( u8 region ) { static const u16 *pMsgNormalWriting = (const u16 *)L"Writing Normal File..."; static const u16 *pMsgSecureWriting = (const u16 *)L"Writing Secure File..."; + static const u16 *pMsgHWIDSignWriting = (const u16 *)L"Writing HWID Sign File..."; static const u16 *pMsgSucceeded = (const u16 *)L"Succeeded!"; static const u16 *pMsgFailed = (const u16 *)L"Failed!"; + // ------------------------------------- // ノーマルファイルのライト + // ------------------------------------- (void)PutStringUTF16( MSG_X * 8, MSG_Y * 8, TXT_COLOR_BLACK, pMsgNormalWriting ); if( HWI_WriteHWNormalInfoFile() ) { - (void)PutStringUTF16( ( MSG_X + 18 ) * 8, MSG_Y * 8, TXT_COLOR_BLUE, pMsgSucceeded ); + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, MSG_Y * 8, TXT_COLOR_BLUE, pMsgSucceeded ); }else { - (void)PutStringUTF16( ( MSG_X + 18 ) * 8, MSG_Y * 8, TXT_COLOR_RED, pMsgFailed ); + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, MSG_Y * 8, TXT_COLOR_RED, pMsgFailed ); } + // ------------------------------------- // セキュアファイルのライト + // ------------------------------------- (void)PutStringUTF16( MSG_X * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLACK, pMsgSecureWriting ); - if( HWI_WriteHWSecureInfoFile( region ) ) { - (void)PutStringUTF16( ( MSG_X + 18 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLUE, pMsgSucceeded ); + if( HWI_WriteHWSecureInfoFile( region, NULL ) ) { + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLUE, pMsgSucceeded ); }else { - (void)PutStringUTF16( ( MSG_X + 18 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_RED, pMsgFailed ); + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_RED, pMsgFailed ); + } + + // ------------------------------------- + // HWID署名ファイルのライト + // ------------------------------------- + (void)PutStringUTF16( MSG_X * 8, ( MSG_Y + 4 ) * 8, TXT_COLOR_BLACK, pMsgHWIDSignWriting ); + + if( HWI_WriteHWIDSignFile() ) { + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 4 ) * 8, TXT_COLOR_BLUE, pMsgSucceeded ); + }else { + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 4 ) * 8, TXT_COLOR_RED, pMsgFailed ); } HWI_ModifyLanguage( region ); @@ -207,24 +234,40 @@ static void DeleteHWInfoFile( void ) { static const u16 *pMsgNormalDeleting = (const u16 *)L"Deleting Normal File..."; static const u16 *pMsgSecureDeleting = (const u16 *)L"Deteting Secure File..."; + static const u16 *pMsgHWIDSignDeleting = (const u16 *)L"Deteting HWID Sign File."; static const u16 *pMsgSucceeded = (const u16 *)L"Succeeded!"; static const u16 *pMsgFailed = (const u16 *)L"Failed!"; - // ノーマルファイル + // ------------------------------------- + // ノーマルファイルの削除 + // ------------------------------------- (void)PutStringUTF16( MSG_X * 8, MSG_Y * 8, TXT_COLOR_BLACK, pMsgNormalDeleting ); if( HWI_DeleteHWNormalInfoFile() ) { - (void)PutStringUTF16( ( MSG_X + 19 ) * 8, MSG_Y * 8, TXT_COLOR_BLUE, pMsgSucceeded ); + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, MSG_Y * 8, TXT_COLOR_BLUE, pMsgSucceeded ); }else { - (void)PutStringUTF16( ( MSG_X + 19 ) * 8, MSG_Y * 8, TXT_COLOR_RED, pMsgFailed ); + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, MSG_Y * 8, TXT_COLOR_RED, pMsgFailed ); } - // セキュアファイル + // ------------------------------------- + // セキュアファイルの削除 + // ------------------------------------- (void)PutStringUTF16( MSG_X * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLACK, pMsgSecureDeleting ); if( HWI_DeleteHWSecureInfoFile() ) { - (void)PutStringUTF16( ( MSG_X + 19 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLUE, pMsgSucceeded ); + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_BLUE, pMsgSucceeded ); }else { - (void)PutStringUTF16( ( MSG_X + 19 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_RED, pMsgFailed ); + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 2 ) * 8, TXT_COLOR_RED, pMsgFailed ); } + + // ------------------------------------- + // HWID署名ファイルの削除 + // ------------------------------------- + (void)PutStringUTF16( MSG_X * 8, ( MSG_Y + 4 ) * 8, TXT_COLOR_BLACK, pMsgHWIDSignDeleting ); + if( HWI_DeleteHWIDSignFile() ) { + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 4 ) * 8, TXT_COLOR_BLUE, pMsgSucceeded ); + }else { + (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 4 ) * 8, TXT_COLOR_RED, pMsgFailed ); + } + DispMessage( 0, 0, TXT_COLOR_NULL, NULL ); NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_WHITE, MSG_X * 8 , MSG_Y * 8, ( 32 - MSG_X ) * 8, ( MSG_Y + 4 ) * 8 ); diff --git a/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.c b/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.c index 4e1574ac..ee08395e 100644 --- a/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.c +++ b/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.c @@ -22,6 +22,11 @@ #include "hwi.h" // define data------------------------------------------ +#ifdef USE_PRODUCT_KEY // 鍵選択スイッチ +#define HWINFO_PRIVKEY_PATH "rom:key/private_HWInfo.der" // 製品用秘密鍵 +#else +#define HWINFO_PRIVKEY_PATH "rom:key/private_HWInfo_dev.der" // 開発用秘密鍵 +#endif // extern data------------------------------------------ const LCFGTWLHWNormalInfo *LCFG_THW_GetDefaultNormalInfo( void ); @@ -40,7 +45,6 @@ static BOOL VerifyData( const u8 *pTgt, const u8 *pOrg, u32 len ); // static variable ------------------------------------- static u8 *s_pPrivKeyBuffer = NULL; -static LCFGReadResult (*s_pReadSecureInfoFunc)( void ); static BOOL s_isReadTSD; static void *(*spAlloc)( u32 length ); static void (*spFree)( void *ptr ); @@ -101,7 +105,17 @@ HwiInitResult HWI_Init( void *(*pAlloc)( u32 ), void (*pFree)( void * ) ) result = ReadPrivateKey(); ReadHWInfoFile(); // VerifyHWInfo(); - + if( 1 ) { + u8 sign[ RSA_KEY_LENGTH ]; + if( !LCFG_ReadHWID_Signature( sign ) || + !LCFG_CheckHWID_Signature( sign ) + ) { + OS_TPrintf( "HWID Signature check failed.\n" ); + }else { + OS_TPrintf( "HWID Signature check succeeded.\n" ); + } + } + return result; } @@ -117,7 +131,6 @@ static void ReadTWLSettings( void ) } } - // 秘密鍵のリード HwiInitResult ReadPrivateKey( void ) { @@ -127,7 +140,7 @@ HwiInitResult ReadPrivateKey( void ) OSTick start = OS_GetTick(); FS_InitFile( &file ); - if( !FS_OpenFileEx( &file, "rom:key/private_HWInfo.der", FS_FILEMODE_R ) ) + if( !FS_OpenFileEx( &file, HWINFO_PRIVKEY_PATH, FS_FILEMODE_R ) ) { OS_TPrintf( "PrivateKey read failed.\n" ); } @@ -152,17 +165,15 @@ HwiInitResult ReadPrivateKey( void ) } OS_TPrintf( "PrivKey read time = %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) ); + if (result) { #ifdef USE_PRODUCT_KEY - // 製品用秘密鍵が有効なら、署名ありのアクセス - s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo; - if (result) { return HWI_INIT_SUCCESS_SIGNATURE_MODE; } - else { return HWI_INIT_FAILURE; } + return HWI_INIT_SUCCESS_PRO_SIGNATURE_MODE; #else - // そうでないなら、署名なしのアクセス - s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo_NoCheck; - if (result) { return HWI_INIT_SUCCESS_NO_SIGNATRUE_MODE; } - else { return HWI_INIT_FAILURE; } + return HWI_INIT_SUCCESS_DEV_SIGNATURE_MODE; #endif + }else { + return HWI_INIT_SUCCESS_NO_SIGNATRUE_MODE; + } } // HW情報全体のリード @@ -181,7 +192,7 @@ static void ReadHWInfoFile( void ) OS_TPrintf( "HW Normal Info read time = %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) ); start = OS_GetTick(); - retval = s_pReadSecureInfoFunc(); + retval = LCFGi_THW_ReadSecureInfo(); if( retval == LCFG_TSF_READ_RESULT_SUCCEEDED ) { OS_TPrintf( "HW Secure Info read succeeded.\n" ); }else { @@ -292,13 +303,13 @@ BOOL HWI_WriteHWNormalInfoFile( void ) Returns: None. *---------------------------------------------------------------------------*/ -BOOL HWI_WriteHWSecureInfoFile( u8 region ) +BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo ) { BOOL isWrite = TRUE; LCFGReadResult result; // ファイルのリード - result = s_pReadSecureInfoFunc(); + result = LCFGi_THW_ReadSecureInfo(); // リードに失敗したらリカバリ if( result != LCFG_TSF_READ_RESULT_SUCCEEDED ) { @@ -314,9 +325,9 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region ) // 対応言語ビットマップのセット LCFG_THW_SetValidLanguageBitmap( s_langBitmapList[ region ] ); - // [TODO:]量産工程でないとシリアルNo.は用意できないので、ここではMACアドレスをもとに適当な値をセットする。 // シリアルNo.のセット - { + if( pSerialNo == NULL ) { + // 量産工程でないとシリアルNo.は用意できないので、ここではMACアドレスをもとに適当な値をセットする。 u8 buffer[ 12 ] = "SERIAL"; // 適当な文字列をMACアドレスと結合してSHA1を取り、仮SerialNoとする。 u8 serialNo[ SVC_SHA1_DIGEST_SIZE ]; int i; @@ -331,6 +342,8 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region ) MI_CpuClear8( &serialNo[ len ], sizeof(serialNo) - len ); OS_TPrintf( "serialNo : %s\n", serialNo ); LCFG_THW_SetSerialNo( serialNo ); + }else { + LCFG_THW_SetSerialNo( pSerialNo ); } // ランチャーTitleID_Loのセット @@ -351,6 +364,31 @@ BOOL HWI_WriteHWSecureInfoFile( u8 region ) return isWrite; } + +/*---------------------------------------------------------------------------* + Name: HWI_WriteHWIDSignFile + + Description: HWID署名ファイルのライト + + Arguments: + + Returns: None. + *---------------------------------------------------------------------------*/ +BOOL HWI_WriteHWIDSignFile( void ) +{ + BOOL retval; + + (void)FS_DeleteFile( (char *)LCFG_TWL_HWID_SIGN_PATH ); + if( !FS_CreateFile( LCFG_TWL_HWID_SIGN_PATH, FS_PERMIT_R | FS_PERMIT_W ) ) { + OS_TPrintf( "file create error. %s\n", LCFG_TWL_HWID_SIGN_PATH ); + } + retval = LCFG_WriteHWID_Signature( s_pPrivKeyBuffer ); + if( !retval ) { + OS_TPrintf( "HWID Signature Write failed.\n" ); + } + return retval; +} + /*---------------------------------------------------------------------------* Name: HWI_DeleteHWNormalInfoFile @@ -397,3 +435,25 @@ BOOL HWI_DeleteHWSecureInfoFile( void ) } } +/*---------------------------------------------------------------------------* + Name: HWI_DeleteHWIDSignFile + + Description: HWID署名ファイルの消去 + + Arguments: None + + Returns: BOOL + *---------------------------------------------------------------------------*/ +BOOL HWI_DeleteHWIDSignFile( void ) +{ + if (FS_DeleteFile( (char *)LCFG_TWL_HWID_SIGN_PATH )) + { + OS_TPrintf( "%s delete succeeded.\n", (char *)LCFG_TWL_HWID_SIGN_PATH ); + return TRUE; + } + else + { + OS_TPrintf( "%s delete failed.\n", (char *)LCFG_TWL_HWID_SIGN_PATH ); + return FALSE; + } +} diff --git a/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.h b/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.h index 8d105171..311131f2 100644 --- a/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.h +++ b/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.h @@ -30,7 +30,8 @@ extern "C" { typedef enum { HWI_INIT_FAILURE, - HWI_INIT_SUCCESS_SIGNATURE_MODE, + HWI_INIT_SUCCESS_PRO_SIGNATURE_MODE, + HWI_INIT_SUCCESS_DEV_SIGNATURE_MODE, HWI_INIT_SUCCESS_NO_SIGNATRUE_MODE } HwiInitResult; @@ -38,9 +39,11 @@ HwiInitResult; HwiInitResult HWI_Init( void *(*pAlloc)( u32 ), void (*pFree)( void * ) ); void HWI_ModifyLanguage( u8 region ); BOOL HWI_WriteHWNormalInfoFile( void ); -BOOL HWI_WriteHWSecureInfoFile( u8 region ); +BOOL HWI_WriteHWSecureInfoFile( u8 region, const u8 *pSerialNo ); +BOOL HWI_WriteHWIDSignFile( void ); BOOL HWI_DeleteHWNormalInfoFile( void ); BOOL HWI_DeleteHWSecureInfoFile( void ); +BOOL HWI_DeleteHWIDSignFile( void ); #ifdef __cplusplus } diff --git a/build/systemMenu_RED/NandInitializer/ARM9.TWL/Makefile b/build/systemMenu_RED/NandInitializer/ARM9.TWL/Makefile index 05743596..a0bc976b 100644 --- a/build/systemMenu_RED/NandInitializer/ARM9.TWL/Makefile +++ b/build/systemMenu_RED/NandInitializer/ARM9.TWL/Makefile @@ -21,6 +21,11 @@ SUBDIRS = #---------------------------------------------------------------------------- +#============================================================================ +#現時点で製品鍵を使った書き込みが行えてはダメなので、デフォルトOFFにしておいてください。 +#USE_PRODUCT_KEY = TRUE +#============================================================================ + TARGET_FIRM = SYSTEMMENU TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED @@ -65,14 +70,18 @@ SRCDIR = src \ #LCFILE = # using default -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ - -DHWINFO_PRIVKEY='private_HWInfo.der' -MAKETAD_FLAGS += -s - -MAKEROM_FLAGS += -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa' ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) +ifdef USE_PRODUCT_KEY MACRO_FLAGS += -DUSE_PRODUCT_KEY +MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der' +else +MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo_dev.der' endif +endif + +MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ + -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa' +MAKETAD_FLAGS += -s LLIBRARIES += libes$(TWL_LIBSUFFIX).a \ libboc$(TWL_LIBSUFFIX).a \ diff --git a/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_hw_info.c b/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_hw_info.c index a60efa79..9e9a551d 100644 --- a/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_hw_info.c +++ b/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_hw_info.c @@ -182,8 +182,11 @@ void* HWInfoProcess0(void) case HWI_INIT_FAILURE: kamiFontPrintfConsoleEx(CONSOLE_RED, "HWI_INIT() Failure!\n" ); break; - case HWI_INIT_SUCCESS_SIGNATURE_MODE: - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, "[Signature MODE]\n" ); + case HWI_INIT_SUCCESS_PRO_SIGNATURE_MODE: + kamiFontPrintfConsoleEx(CONSOLE_ORANGE, "[PRO Signature MODE]\n" ); + break; + case HWI_INIT_SUCCESS_DEV_SIGNATURE_MODE: + kamiFontPrintfConsoleEx(CONSOLE_ORANGE, "[DEV Signature MODE]\n" ); break; case HWI_INIT_SUCCESS_NO_SIGNATRUE_MODE: kamiFontPrintfConsoleEx(CONSOLE_RED, "[No Signature MODE]\n" ); @@ -316,6 +319,7 @@ static BOOL WriteHWInfoFile( u8 region ) { static const char *pMsgNormalWriting = "Writing Normal File..."; static const char *pMsgSecureWriting = "Writing Secure File..."; + static const char *pMsgSignWriting = "Writing Sign File..."; static const char *pMsgSucceeded = "Succeeded!"; static const char *pMsgFailed = "Failed!"; BOOL result = TRUE; @@ -333,7 +337,17 @@ static BOOL WriteHWInfoFile( u8 region ) // セキュアファイルのライト kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSecureWriting ); - if( HWI_WriteHWSecureInfoFile( region ) ) { + if( HWI_WriteHWSecureInfoFile( region, NULL ) ) { + kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); + }else { + kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); + result = FALSE; + } + + // HWID署名ファイルのライト + kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSignWriting ); + + if( HWI_WriteHWIDSignFile() ) { kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); }else { kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); diff --git a/docs/AboutApplicationJump.doc b/docs/AboutApplicationJump.doc index 35b4b301..c93ebfb4 100644 Binary files a/docs/AboutApplicationJump.doc and b/docs/AboutApplicationJump.doc differ diff --git a/docs/rom_header_format.xls b/docs/format_ROM_Header.xls similarity index 89% rename from docs/rom_header_format.xls rename to docs/format_ROM_Header.xls index 9fdda1c8..4c809dfb 100644 Binary files a/docs/rom_header_format.xls and b/docs/format_ROM_Header.xls differ diff --git a/docs/TWLBanner.xls b/docs/format_TWLBanner.xls similarity index 100% rename from docs/TWLBanner.xls rename to docs/format_TWLBanner.xls diff --git a/docs/format_TitleID.xls b/docs/format_TitleID.xls new file mode 100644 index 00000000..d7622bac Binary files /dev/null and b/docs/format_TitleID.xls differ diff --git a/docs/繝輔か繝ォ繝繝繝ェ繝シ_NAND.vsd b/docs/繝輔か繝ォ繝繝繝ェ繝シ_NAND.vsd index c46ef4ee..a7b2d6ef 100644 Binary files a/docs/繝輔か繝ォ繝繝繝ェ繝シ_NAND.vsd and b/docs/繝輔か繝ォ繝繝繝ェ繝シ_NAND.vsd differ diff --git a/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NOR.xls b/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NOR.xls index f628504d..244441a8 100644 Binary files a/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NOR.xls and b/docs/繝輔Λ繝繧キ繝・繝槭ャ繝誉NOR.xls differ diff --git a/docs/骰オ邂。逅.xls b/docs/骰オ邂。逅.xls index 18027b5b..60ac8f23 100644 Binary files a/docs/骰オ邂。逅.xls and b/docs/骰オ邂。逅.xls differ diff --git a/keys/dummy/rsa/private_HWInfo.der b/keys/dummy/rsa/private_HWInfo.der deleted file mode 100644 index a78da43e..00000000 Binary files a/keys/dummy/rsa/private_HWInfo.der and /dev/null differ diff --git a/keys/dummy/rsa/private_HWInfo.pem b/keys/dummy/rsa/private_HWInfo.pem deleted file mode 100644 index a55c5740..00000000 --- a/keys/dummy/rsa/private_HWInfo.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQDlcyzdiJ14or13KZTuxvMyZCCVuVLZndVNtd1zhhqX0BQQgEb0 -LM75BQbkwlhwQgdecdSc6xZwaxSWCoRpKB2CzT6UgpPIC0XTiZwFsriu/o1T3E8d -g4r+8QDNqcD6PxcxhBamOKtcO4GgZzUkU2bttyVzg9YI9KZLPJlKyhsitQIDAQAB -AoGBAIIVGRODl1tEUEwVi/UPX+NqtrqLtbfgboS/HYyYM81rz2RHhXJ7UOAHBJB+ -yirilFDsEhDgivkzDBnAXq9LaeaiXHZQwuUTszXyRSOdnaYzWoJAdPd3GH96a/xs -0VLWUTrzs1CH/5k8sxT4erk5l07ouBx5r/CPyJO/X5pIy8XhAkEA96DaxiFfdvEj -xXo1wkBmZbOsg+/wFMZhn+Bhm5Mxhblcrba60DmMyWhdJy6jb/gysAWY8OHLR21t -wMxAFccbvQJBAO00/fW8fA92BCb4Jh1s9uiXQAPpd+LdnxhXrm9+5y//wLLAUtii -awVmIycAuYlJSVzGSeQjAIP6MIefMp9lVlkCQHtDsAN2c13y1Vqk5gPHKPGxScv3 -cSv2QHxkJlJaKAmn5rF2R3IFY8aSU+SAO80t4JVsg+BMlXL9zudtBO2SSoUCQANe -pFjwU4bYs1hmYAw89wj41RT5JRXY9iCfZj/5OomJBZDEgKjJLeIGwGsWbIxRuTQT -MQuHn8NAM55JmauAAgkCQQC4bqOlgAPVGaoAK98Kf40EKufyY2XaMSiGmqpG3bnw -o13x8SWrOh6Stu5jgFnyGcItJone3lLWo2xN1b6SzN84 ------END RSA PRIVATE KEY----- diff --git a/keys/dummy/rsa/pubKey_HWInfo.der b/keys/dummy/rsa/pubKey_HWInfo.der deleted file mode 100644 index 756072c8..00000000 Binary files a/keys/dummy/rsa/pubKey_HWInfo.der and /dev/null differ diff --git a/keys/dummy/rsa/pubkey_HWInfo.pem b/keys/dummy/rsa/pubkey_HWInfo.pem deleted file mode 100644 index e5a13ec2..00000000 --- a/keys/dummy/rsa/pubkey_HWInfo.pem +++ /dev/null @@ -1,6 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlcyzdiJ14or13KZTuxvMyZCCV -uVLZndVNtd1zhhqX0BQQgEb0LM75BQbkwlhwQgdecdSc6xZwaxSWCoRpKB2CzT6U -gpPIC0XTiZwFsriu/o1T3E8dg4r+8QDNqcD6PxcxhBamOKtcO4GgZzUkU2bttyVz -g9YI9KZLPJlKyhsitQIDAQAB ------END PUBLIC KEY-----