mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
HWInfoWriterの鍵運用を整理する。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@494 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
47f1ca4ee6
commit
0deab36684
@ -24,7 +24,7 @@ SPACE ?= $(EMPTY) $(EMPTY)
|
|||||||
ifndef TWL_KEYSDIR
|
ifndef TWL_KEYSDIR
|
||||||
DUMMY_KEYS_SUFFIX = .dummykey
|
DUMMY_KEYS_SUFFIX = .dummykey
|
||||||
endif
|
endif
|
||||||
TWL_KEYSDIR ?= $(FIRM_ROOT)/keys/rsa/dummy
|
TWL_KEYSDIR ?= $(FIRM_ROOT)/keys/dummy
|
||||||
|
|
||||||
TARGET_BIN ?= $(subst .,$(DUMMY_KEYS_SUFFIX).,$(TARGET_FIRM_BIN))
|
TARGET_BIN ?= $(subst .,$(DUMMY_KEYS_SUFFIX).,$(TARGET_FIRM_BIN))
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@ NITRO_NO_STD_PCHDR = TRUE #
|
|||||||
EMPTY ?=
|
EMPTY ?=
|
||||||
SPACE ?= $(EMPTY) $(EMPTY)
|
SPACE ?= $(EMPTY) $(EMPTY)
|
||||||
|
|
||||||
TWL_KEYSDIR ?= $(SYSMENU_ROOT)/keys/rsa/dummy
|
TWL_KEYSDIR ?= $(SYSMENU_ROOT)/keys/dummy
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# TWL-SYSTEM-MENU path settings
|
# TWL-SYSTEM-MENU path settings
|
||||||
|
|||||||
@ -17,10 +17,11 @@
|
|||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
SUBDIRS = \
|
SUBDIRS = \
|
||||||
# ../../../libraries_sysmenu/sysmenu
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
USE_PRODUCT_KEY = TRUE
|
||||||
|
|
||||||
TARGET_FIRM = SYSTEMMENU
|
TARGET_FIRM = SYSTEMMENU
|
||||||
TARGET_PLATFORM = TWL
|
TARGET_PLATFORM = TWL
|
||||||
TWL_ARCHGEN = LIMITED
|
TWL_ARCHGEN = LIMITED
|
||||||
@ -41,8 +42,16 @@ LINCLUDES = $(MISC_DIR)/include \
|
|||||||
$(ROOT)/build/libraries/lcfg/ARM9.TWL/include
|
$(ROOT)/build/libraries/lcfg/ARM9.TWL/include
|
||||||
LLIBRARIES = libacsign_enc$(TWL_LIBSUFFIX).a
|
LLIBRARIES = libacsign_enc$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)'
|
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||||
MAKETAD_FLAGS += -s
|
-DHWINFO_PRIVKEY='private_HWInfo.der'
|
||||||
|
MAKETAD_FLAGS += -s
|
||||||
|
|
||||||
|
ifdef USE_PRODUCT_KEY
|
||||||
|
MAKEROM_FLAGS += -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa'
|
||||||
|
MACRO_FLAGS += -DUSE_PRODUCT_KEY
|
||||||
|
else
|
||||||
|
MAKEROM_FLAGS += -DPRIVKEY_PATH='../../../../keys/dummy/rsa'
|
||||||
|
endif
|
||||||
|
|
||||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
|||||||
@ -176,7 +176,8 @@ RomSpec
|
|||||||
HostRoot ../../data
|
HostRoot ../../data
|
||||||
Root /data
|
Root /data
|
||||||
File NTR_IPL_font_m.NFTR
|
File NTR_IPL_font_m.NFTR
|
||||||
HostRoot ../../../../keys/HWInfo
|
HostRoot $(PRIVKEY_PATH)
|
||||||
Root /key
|
Root /key
|
||||||
# File privKeyHWInfo.der
|
File $(HWINFO_PRIVKEY)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -118,6 +118,15 @@ static const char *strRegion[] = {
|
|||||||
"KOREA",
|
"KOREA",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char *strLauncherGameCode[] = {
|
||||||
|
"LNCJ",
|
||||||
|
"LNCE",
|
||||||
|
"LNCP",
|
||||||
|
"LNCO",
|
||||||
|
"LNCC",
|
||||||
|
"LNCK",
|
||||||
|
};
|
||||||
|
|
||||||
//======================================================
|
//======================================================
|
||||||
// HW情報ライター
|
// HW情報ライター
|
||||||
//======================================================
|
//======================================================
|
||||||
@ -125,6 +134,8 @@ static const char *strRegion[] = {
|
|||||||
// HW情報ライターの初期化
|
// HW情報ライターの初期化
|
||||||
void HWInfoWriterInit( void )
|
void HWInfoWriterInit( void )
|
||||||
{
|
{
|
||||||
|
u8 gameCode[ 5 ] = { 0, 0, 0, 0, 0 };
|
||||||
|
|
||||||
GX_DispOff();
|
GX_DispOff();
|
||||||
GXS_DispOff();
|
GXS_DispOff();
|
||||||
|
|
||||||
@ -141,8 +152,10 @@ void HWInfoWriterInit( void )
|
|||||||
ReadHWInfoFile();
|
ReadHWInfoFile();
|
||||||
// VerifyHWInfo();
|
// VerifyHWInfo();
|
||||||
OS_TPrintf( "region = %d\n", LCFG_THW_GetRegion() );
|
OS_TPrintf( "region = %d\n", LCFG_THW_GetRegion() );
|
||||||
PrintfSJISSub( 2 * 8, 18 * 8, TXT_COLOR_BLACK, "Region = %s", strRegion[ LCFG_THW_GetRegion() ] );
|
PrintfSJISSub( 2 * 8, 16 * 8, TXT_COLOR_BLACK, "Region = %s", strRegion[ LCFG_THW_GetRegion() ] );
|
||||||
PrintfSJISSub( 2 * 8, 20 * 8, TXT_COLOR_BLACK, "SerialNo = %s", LCFG_THW_GetSerialNoPtr() );
|
PrintfSJISSub( 2 * 8, 18 * 8, TXT_COLOR_BLACK, "SerialNo = %s", LCFG_THW_GetSerialNoPtr() );
|
||||||
|
// LCFG_THW_GetLauncherGameCode( gameCode );
|
||||||
|
// PrintfSJISSub( 2 * 8, 20 * 8, TXT_COLOR_BLACK, "LauncherGameCode = %s", gameCode );
|
||||||
s_region_old = LCFG_THW_GetRegion();
|
s_region_old = LCFG_THW_GetRegion();
|
||||||
s_csr = 0;
|
s_csr = 0;
|
||||||
DrawMenu( s_csr, &s_writerParam );
|
DrawMenu( s_csr, &s_writerParam );
|
||||||
@ -235,7 +248,7 @@ static void ReadPrivateKey( void )
|
|||||||
OSTick start = OS_GetTick();
|
OSTick start = OS_GetTick();
|
||||||
|
|
||||||
FS_InitFile( &file );
|
FS_InitFile( &file );
|
||||||
if( !FS_OpenFileEx( &file, "rom:key/privKeyHWInfo.der", FS_FILEMODE_R ) ) {
|
if( !FS_OpenFileEx( &file, "rom:key/private_HWInfo.der", FS_FILEMODE_R ) ) {
|
||||||
OS_TPrintf( "PrivateKey read failed.\n" );
|
OS_TPrintf( "PrivateKey read failed.\n" );
|
||||||
}else {
|
}else {
|
||||||
keyLength = FS_GetFileLength( &file );
|
keyLength = FS_GetFileLength( &file );
|
||||||
@ -257,14 +270,14 @@ static void ReadPrivateKey( void )
|
|||||||
}
|
}
|
||||||
OS_TPrintf( "PrivKey read time = %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
OS_TPrintf( "PrivKey read time = %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||||
|
|
||||||
if( s_pPrivKeyBuffer ) {
|
#ifdef USE_PRODUCT_KEY
|
||||||
// 秘密鍵が有効なら、署名ありのアクセス
|
// 製品用秘密鍵が有効なら、署名ありのアクセス
|
||||||
s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo;
|
s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo;
|
||||||
}else {
|
#else
|
||||||
// 秘密鍵が無効なら、署名なしのアクセス
|
// そうでないなら、署名なしのアクセス
|
||||||
s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo_NoCheck;
|
s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo_NoCheck;
|
||||||
PutStringUTF16( 14 * 8, 0 * 8, TXT_COLOR_RED, (const u16 *)L"[No Signature MODE]" );
|
PutStringUTF16( 14 * 8, 0 * 8, TXT_COLOR_RED, (const u16 *)L"[No Signature MODE]" );
|
||||||
}
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -327,8 +340,8 @@ static void WriteHWInfoFile( u8 region )
|
|||||||
NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_WHITE,
|
NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_WHITE,
|
||||||
MSG_X * 8 , MSG_Y * 8, ( 32 - MSG_X ) * 8, ( MSG_Y + 4 ) * 8 );
|
MSG_X * 8 , MSG_Y * 8, ( 32 - MSG_X ) * 8, ( MSG_Y + 4 ) * 8 );
|
||||||
|
|
||||||
PrintfSJISSub( 2 * 8, 18 * 8, TXT_COLOR_WHITE, "Region = %s", strRegion[ s_region_old ] );
|
PrintfSJISSub( 2 * 8, 16 * 8, TXT_COLOR_WHITE, "Region = %s", strRegion[ s_region_old ] );
|
||||||
PrintfSJISSub( 2 * 8, 18 * 8, TXT_COLOR_BLACK, "Region = %s", strRegion[ LCFG_THW_GetRegion() ] );
|
PrintfSJISSub( 2 * 8, 16 * 8, TXT_COLOR_BLACK, "Region = %s", strRegion[ LCFG_THW_GetRegion() ] );
|
||||||
s_region_old = LCFG_THW_GetRegion();
|
s_region_old = LCFG_THW_GetRegion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,6 +410,9 @@ static BOOL WriteHWSecureInfoFile( u8 region )
|
|||||||
LCFG_THW_SetSerialNo( serialNo );
|
LCFG_THW_SetSerialNo( serialNo );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ランチャーゲームコード
|
||||||
|
LCFG_THW_SetLauncherGameCode( (const u8 *)strLauncherGameCode[ region ] );
|
||||||
|
|
||||||
// ライト
|
// ライト
|
||||||
if( isWrite &&
|
if( isWrite &&
|
||||||
!LCFGi_THW_WriteSecureInfo( s_pPrivKeyBuffer ) ) {
|
!LCFGi_THW_WriteSecureInfo( s_pPrivKeyBuffer ) ) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user