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
|
||||
DUMMY_KEYS_SUFFIX = .dummykey
|
||||
endif
|
||||
TWL_KEYSDIR ?= $(FIRM_ROOT)/keys/rsa/dummy
|
||||
TWL_KEYSDIR ?= $(FIRM_ROOT)/keys/dummy
|
||||
|
||||
TARGET_BIN ?= $(subst .,$(DUMMY_KEYS_SUFFIX).,$(TARGET_FIRM_BIN))
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ NITRO_NO_STD_PCHDR = TRUE #
|
||||
EMPTY ?=
|
||||
SPACE ?= $(EMPTY) $(EMPTY)
|
||||
|
||||
TWL_KEYSDIR ?= $(SYSMENU_ROOT)/keys/rsa/dummy
|
||||
TWL_KEYSDIR ?= $(SYSMENU_ROOT)/keys/dummy
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# TWL-SYSTEM-MENU path settings
|
||||
|
||||
@ -17,10 +17,11 @@
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
SUBDIRS = \
|
||||
# ../../../libraries_sysmenu/sysmenu
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
USE_PRODUCT_KEY = TRUE
|
||||
|
||||
TARGET_FIRM = SYSTEMMENU
|
||||
TARGET_PLATFORM = TWL
|
||||
TWL_ARCHGEN = LIMITED
|
||||
@ -41,8 +42,16 @@ LINCLUDES = $(MISC_DIR)/include \
|
||||
$(ROOT)/build/libraries/lcfg/ARM9.TWL/include
|
||||
LLIBRARIES = libacsign_enc$(TWL_LIBSUFFIX).a
|
||||
|
||||
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)'
|
||||
MAKETAD_FLAGS += -s
|
||||
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
-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
|
||||
|
||||
|
||||
@ -176,7 +176,8 @@ RomSpec
|
||||
HostRoot ../../data
|
||||
Root /data
|
||||
File NTR_IPL_font_m.NFTR
|
||||
HostRoot ../../../../keys/HWInfo
|
||||
HostRoot $(PRIVKEY_PATH)
|
||||
Root /key
|
||||
# File privKeyHWInfo.der
|
||||
File $(HWINFO_PRIVKEY)
|
||||
|
||||
}
|
||||
|
||||
@ -118,6 +118,15 @@ static const char *strRegion[] = {
|
||||
"KOREA",
|
||||
};
|
||||
|
||||
static const char *strLauncherGameCode[] = {
|
||||
"LNCJ",
|
||||
"LNCE",
|
||||
"LNCP",
|
||||
"LNCO",
|
||||
"LNCC",
|
||||
"LNCK",
|
||||
};
|
||||
|
||||
//======================================================
|
||||
// HW情報ライター
|
||||
//======================================================
|
||||
@ -125,6 +134,8 @@ static const char *strRegion[] = {
|
||||
// HW情報ライターの初期化
|
||||
void HWInfoWriterInit( void )
|
||||
{
|
||||
u8 gameCode[ 5 ] = { 0, 0, 0, 0, 0 };
|
||||
|
||||
GX_DispOff();
|
||||
GXS_DispOff();
|
||||
|
||||
@ -141,8 +152,10 @@ void HWInfoWriterInit( void )
|
||||
ReadHWInfoFile();
|
||||
// VerifyHWInfo();
|
||||
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, 20 * 8, TXT_COLOR_BLACK, "SerialNo = %s", LCFG_THW_GetSerialNoPtr() );
|
||||
PrintfSJISSub( 2 * 8, 16 * 8, TXT_COLOR_BLACK, "Region = %s", strRegion[ LCFG_THW_GetRegion() ] );
|
||||
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_csr = 0;
|
||||
DrawMenu( s_csr, &s_writerParam );
|
||||
@ -235,7 +248,7 @@ static void ReadPrivateKey( void )
|
||||
OSTick start = OS_GetTick();
|
||||
|
||||
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" );
|
||||
}else {
|
||||
keyLength = FS_GetFileLength( &file );
|
||||
@ -257,14 +270,14 @@ static void ReadPrivateKey( void )
|
||||
}
|
||||
OS_TPrintf( "PrivKey read time = %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) );
|
||||
|
||||
if( s_pPrivKeyBuffer ) {
|
||||
// 秘密鍵が有効なら、署名ありのアクセス
|
||||
s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo;
|
||||
}else {
|
||||
// 秘密鍵が無効なら、署名なしのアクセス
|
||||
s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo_NoCheck;
|
||||
PutStringUTF16( 14 * 8, 0 * 8, TXT_COLOR_RED, (const u16 *)L"[No Signature MODE]" );
|
||||
}
|
||||
#ifdef USE_PRODUCT_KEY
|
||||
// 製品用秘密鍵が有効なら、署名ありのアクセス
|
||||
s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo;
|
||||
#else
|
||||
// そうでないなら、署名なしのアクセス
|
||||
s_pReadSecureInfoFunc = LCFGi_THW_ReadSecureInfo_NoCheck;
|
||||
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,
|
||||
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, 18 * 8, TXT_COLOR_BLACK, "Region = %s", strRegion[ LCFG_THW_GetRegion() ] );
|
||||
PrintfSJISSub( 2 * 8, 16 * 8, TXT_COLOR_WHITE, "Region = %s", strRegion[ s_region_old ] );
|
||||
PrintfSJISSub( 2 * 8, 16 * 8, TXT_COLOR_BLACK, "Region = %s", strRegion[ LCFG_THW_GetRegion() ] );
|
||||
s_region_old = LCFG_THW_GetRegion();
|
||||
}
|
||||
|
||||
@ -397,6 +410,9 @@ static BOOL WriteHWSecureInfoFile( u8 region )
|
||||
LCFG_THW_SetSerialNo( serialNo );
|
||||
}
|
||||
|
||||
// ランチャーゲームコード
|
||||
LCFG_THW_SetLauncherGameCode( (const u8 *)strLauncherGameCode[ region ] );
|
||||
|
||||
// ライト
|
||||
if( isWrite &&
|
||||
!LCFGi_THW_WriteSecureInfo( s_pPrivKeyBuffer ) ) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user