mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・HWInfoWriter、NandInitializerでHWID署名に対応する。
・ドキュメント更新・追加。 ・不要なダミー鍵を削除。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@739 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
6785096227
commit
00efdd6242
@ -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
|
||||
|
||||
|
||||
@ -179,5 +179,4 @@ RomSpec
|
||||
HostRoot $(PRIVKEY_PATH)
|
||||
Root /key
|
||||
File $(HWINFO_PRIVKEY)
|
||||
|
||||
}
|
||||
|
||||
@ -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 );
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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 \
|
||||
|
||||
@ -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<49><44>–¼ƒtƒ@ƒCƒ‹‚̃‰ƒCƒg
|
||||
kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSignWriting );
|
||||
|
||||
if( HWI_WriteHWIDSignFile() ) {
|
||||
kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded );
|
||||
}else {
|
||||
kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed );
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
docs/format_TitleID.xls
Normal file
BIN
docs/format_TitleID.xls
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
docs/鍵管理.xls
BIN
docs/鍵管理.xls
Binary file not shown.
Binary file not shown.
@ -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-----
|
||||
Binary file not shown.
@ -1,6 +0,0 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlcyzdiJ14or13KZTuxvMyZCCV
|
||||
uVLZndVNtd1zhhqX0BQQgEb0LM75BQbkwlhwQgdecdSc6xZwaxSWCoRpKB2CzT6U
|
||||
gpPIC0XTiZwFsriu/o1T3E8dg4r+8QDNqcD6PxcxhBamOKtcO4GgZzUkU2bttyVz
|
||||
g9YI9KZLPJlKyhsitQIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
Loading…
Reference in New Issue
Block a user