mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
BroanOn向けTSボード用のHWセキュア情報作成ツールCalcHMAC__forBroadOnの追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2513 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
f17eb0c225
commit
2be8c4ddc4
47
build/tests/CalcHMAC_forBroadOn/Makefile
Normal file
47
build/tests/CalcHMAC_forBroadOn/Makefile
Normal file
@ -0,0 +1,47 @@
|
||||
#! make -f
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlIPL - tests - CalcHMAC_forBroadOn
|
||||
# File: Makefile
|
||||
#
|
||||
# Copyright 2008 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Date:: #$
|
||||
# $Rev$
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
TARGET_PLATFORM := TWL
|
||||
|
||||
SRCS = CalcHMAC_forBroadOn.c
|
||||
|
||||
TARGET_BIN = CalcHMAC_forBroadOn.srl
|
||||
|
||||
TITLEID_LO = 0BRA
|
||||
|
||||
ROM_SPEC = main.rsf
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
||||
|
||||
LINCLUDES = $(ROOT)/build/libraries/lcfg/ARM9.TWL/include
|
||||
LLIBRARIES = liblcfg$(TWL_LIBSUFFIX).a
|
||||
|
||||
ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),)
|
||||
MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der'
|
||||
endif
|
||||
|
||||
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
-DPRIVKEY_PATH='$(TWL_IPL_RED_PRIVATE_ROOT)/keys/rsa' \
|
||||
-DCARD_REGION='$(CARD_REGION)'
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
do-build: $(TARGETS)
|
||||
|
||||
include $(TWLSDK_ROOT)/build/buildtools/modulerules
|
||||
|
||||
#===== End of Makefile =====
|
||||
171
build/tests/CalcHMAC_forBroadOn/main.rsf
Normal file
171
build/tests/CalcHMAC_forBroadOn/main.rsf
Normal file
@ -0,0 +1,171 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - include
|
||||
# File: ROM-BB.rsf
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded insructions, statements, and computer programs contain
|
||||
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
# Company Ltd., and are protected by Federal copyright law. They may
|
||||
# not be disclosed to third parties or copied or duplicated in any form,
|
||||
# in whole or in part, without the prior written consent of Nintendo.
|
||||
#
|
||||
# $Date:: $
|
||||
# $Rev$
|
||||
# $Author$
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# TWL ROM SPEC FILE
|
||||
#
|
||||
|
||||
Arm9
|
||||
{
|
||||
Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
Elf "$(MAKEROM_ARM9:r).tef"
|
||||
}
|
||||
|
||||
Arm7
|
||||
{
|
||||
Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
Elf "$(MAKEROM_ARM7_BASE:r).tef"
|
||||
}
|
||||
|
||||
Arm9.Ltd
|
||||
{
|
||||
Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
}
|
||||
|
||||
Arm7.Ltd
|
||||
{
|
||||
Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
}
|
||||
|
||||
Property
|
||||
{
|
||||
###
|
||||
### Settings for FinalROM
|
||||
###
|
||||
#### BEGIN
|
||||
#
|
||||
# TITLE NAME: Your product name within 12bytes
|
||||
#
|
||||
#TitleName "YourAppName"
|
||||
|
||||
#
|
||||
# MAKER CODE: Your company ID# in 2 ascii words
|
||||
# issued by NINTENDO
|
||||
#
|
||||
#MakerCode "00"
|
||||
|
||||
#
|
||||
# REMASTER VERSION: Mastering version
|
||||
#
|
||||
RomVersion 2
|
||||
|
||||
#
|
||||
# ROM SPEED TYPE: [MROM/1TROM/UNDEFINED]
|
||||
#
|
||||
RomSpeedType $(MAKEROM_ROMSPEED)
|
||||
|
||||
#
|
||||
# ROM SIZE: in bit [64M/128M/256M/512M/1G/2G]
|
||||
#
|
||||
#RomSize 2G
|
||||
|
||||
#
|
||||
# ROM PADDING: TRUE if finalrom
|
||||
#
|
||||
#RomFootPadding TRUE
|
||||
|
||||
#
|
||||
# ROM HEADER TEMPLATE: Provided to every product by NINTENDO
|
||||
#
|
||||
#RomHeaderTemplate ./etc/rom_header.template.sbin
|
||||
|
||||
#
|
||||
# BANNER FILE: generated from Banner Spec File
|
||||
#
|
||||
BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr
|
||||
|
||||
###
|
||||
### Setting for TWL
|
||||
###
|
||||
|
||||
#
|
||||
# ROM HEADER Ltd: Provided to every product by NINTENDO
|
||||
#
|
||||
RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin
|
||||
|
||||
#
|
||||
# Digest parameters:
|
||||
#
|
||||
DigestParam 1024 32
|
||||
|
||||
#
|
||||
# WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD]
|
||||
# don't have to edit
|
||||
#
|
||||
WramMapping $(MAKEROM_WRAM_MAPPING)
|
||||
|
||||
#
|
||||
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea]
|
||||
#
|
||||
CardRegion ALL
|
||||
|
||||
#
|
||||
# SDCardAccess: sd card access control [TRUE/FALSE]
|
||||
#
|
||||
SDCardAccess TRUE
|
||||
|
||||
#
|
||||
# NANDAccess: NAND access control [TRUE/FALSE]
|
||||
#
|
||||
NANDAccess TRUE
|
||||
|
||||
#
|
||||
# Codec mode:
|
||||
# don't have to edit
|
||||
#
|
||||
CodecMode $(MAKEROM_CODEC_MODE)
|
||||
|
||||
###
|
||||
#### END
|
||||
}
|
||||
|
||||
|
||||
AppendProperty
|
||||
{
|
||||
#
|
||||
# Publisher : "Nintendo"
|
||||
# don't have to edit
|
||||
Publisher Nintendo
|
||||
|
||||
#
|
||||
# Boot allowed Media: [GameCard/NAND]
|
||||
#
|
||||
Media GameCard
|
||||
|
||||
#
|
||||
# GameCode for TitleID : Your GameCode in 4 ascii words
|
||||
#
|
||||
GameCode $(TITLEID_LO)
|
||||
|
||||
}
|
||||
|
||||
|
||||
RomSpec
|
||||
{
|
||||
Offset 0x00000000
|
||||
Segment ALL
|
||||
HostRoot $(PRIVKEY_PATH)
|
||||
Root /key
|
||||
File $(HWINFO_PRIVKEY)
|
||||
}
|
||||
368
build/tests/CalcHMAC_forBroadOn/src/CalcHMAC_forBroadOn.c
Normal file
368
build/tests/CalcHMAC_forBroadOn/src/CalcHMAC_forBroadOn.c
Normal file
@ -0,0 +1,368 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlSDK
|
||||
File: main.c
|
||||
|
||||
Copyright 2008 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
Company Ltd., and are protected by Federal copyright law. They may
|
||||
not be disclosed to third parties or copied or duplicated in any form,
|
||||
in whole or in part, without the prior written consent of Nintendo.
|
||||
|
||||
$Date:: $
|
||||
$Rev$
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
#include <twl.h>
|
||||
#include <nitro.h>
|
||||
#include <nitro/misc.h>
|
||||
#include <twl/crypto/rsa.h>
|
||||
#include <nitro/crypto/util.h>
|
||||
#include <twl/lcfg/common/TWLHWInfo.h>
|
||||
#include <twl/lcfg/common/api.h>
|
||||
#include "TWLStoreFile.h"
|
||||
|
||||
// define data------------------------------------------------------------------
|
||||
#define HWINFO_PRIVKEY_PATH "rom:key/private_HWInfo.der" // 製品用秘密鍵
|
||||
#define RSA_KEY_LENGTH_1024 RSA_KEY_LENGTH
|
||||
#define HWINFO_S_BODY_SIZE 0x1C
|
||||
|
||||
#define PATH_K00A317_JP "sdmc:/hwinfo_s/HWInfo_S.K00A317_JP.dat"
|
||||
#define PATH_K00A317_US "sdmc:/hwinfo_s/HWInfo_S.K00A317_US.dat"
|
||||
#define PATH_K00A317_EU "sdmc:/hwinfo_s/HWInfo_S.K00A317_EU.dat"
|
||||
#define PATH_K00A317_AU "sdmc:/hwinfo_s/HWInfo_S.K00A317_AU.dat"
|
||||
#define PATH_K00A319_JP "sdmc:/hwinfo_s/HWInfo_S.K00A319_JP.dat"
|
||||
#define PATH_K00A319_US "sdmc:/hwinfo_s/HWInfo_S.K00A319_US.dat"
|
||||
#define PATH_K00A319_EU "sdmc:/hwinfo_s/HWInfo_S.K00A319_EU.dat"
|
||||
#define PATH_K00A319_AU "sdmc:/hwinfo_s/HWInfo_S.K00A319_AU.dat"
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
extern s32 CRYPTO_RSA_Sign_custom(CRYPTORSASignContext *context, CRYPTORSASignParam *param);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
static u8 s_privKey[ 4096 ] ATTRIBUTE_ALIGN(32);
|
||||
static TSFHeader s_header;
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static const u64 FuseID_K00A317 = 0x08a1080105112134LLU;
|
||||
static const u64 FuseID_K00A319 = 0x08a1080105112122LLU;
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static const u8 HWINFO_S_K00A317_JP[HWINFO_S_BODY_SIZE] =
|
||||
{
|
||||
0x01, 0x00, 0x00, 0x00, /* validLanguageBitmap */
|
||||
0x00, 0x00, 0x00, 0x00, /* flags, rsv */
|
||||
0x00, /* region */
|
||||
'T', 'J', 'N', '5', '6', '3', '2', '0',
|
||||
'4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */
|
||||
'J', 'A', 'N', 'H' /* launcherTitleID_Lo */
|
||||
};
|
||||
|
||||
static const u8 HWINFO_S_K00A317_US[HWINFO_S_BODY_SIZE] =
|
||||
{
|
||||
0x26, 0x00, 0x00, 0x00, /* validLanguageBitmap */
|
||||
0x00, 0x00, 0x00, 0x00, /* flags, rsv */
|
||||
0x01, /* region */
|
||||
'T', 'N', '5', '6', '3', '2', '0', '4',
|
||||
'0', '2', '0', 0x00, 0x00, 'K', 0x00, /* serialNo */
|
||||
'E', 'A', 'N', 'H' /* launcherTitleID_Lo */
|
||||
};
|
||||
|
||||
static const u8 HWINFO_S_K00A317_EU[HWINFO_S_BODY_SIZE] =
|
||||
{
|
||||
0x3E, 0x00, 0x00, 0x00, /* validLanguageBitmap */
|
||||
0x00, 0x00, 0x00, 0x00, /* flags, rsv */
|
||||
0x02, /* region */
|
||||
'T', 'E', 'N', '5', '6', '3', '2', '0',
|
||||
'4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */
|
||||
'P', 'A', 'N', 'H' /* launcherTitleID_Lo */
|
||||
};
|
||||
|
||||
static const u8 HWINFO_S_K00A317_AU[HWINFO_S_BODY_SIZE] =
|
||||
{
|
||||
0x02, 0x00, 0x00, 0x00, /* validLanguageBitmap */
|
||||
0x00, 0x00, 0x00, 0x00, /* flags, rsv */
|
||||
0x03, /* region */
|
||||
'T', 'A', 'N', '5', '6', '3', '2', '0',
|
||||
'4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */
|
||||
'U', 'A', 'N', 'H' /* launcherTitleID_Lo */
|
||||
};
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static const u8 HWINFO_S_K00A319_JP[HWINFO_S_BODY_SIZE] =
|
||||
{
|
||||
0x01, 0x00, 0x00, 0x00, /* validLanguageBitmap */
|
||||
0x00, 0x00, 0x00, 0x00, /* flags, rsv */
|
||||
0x00, /* region */
|
||||
'T', 'J', 'N', '3', '5', '3', '8', '9',
|
||||
'0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */
|
||||
'J', 'A', 'N', 'H' /* launcherTitleID_Lo */
|
||||
};
|
||||
|
||||
static const u8 HWINFO_S_K00A319_US[HWINFO_S_BODY_SIZE] =
|
||||
{
|
||||
0x26, 0x00, 0x00, 0x00, /* validLanguageBitmap */
|
||||
0x00, 0x00, 0x00, 0x00, /* flags, rsv */
|
||||
0x01, /* region */
|
||||
'T', 'N', '3', '5', '3', '8', '9', '0',
|
||||
'3', '3', '4', 0x00, 0x00, 'K', 0x00, /* serialNo */
|
||||
'E', 'A', 'N', 'H' /* launcherTitleID_Lo */
|
||||
};
|
||||
|
||||
static const u8 HWINFO_S_K00A319_EU[HWINFO_S_BODY_SIZE] =
|
||||
{
|
||||
0x3E, 0x00, 0x00, 0x00, /* validLanguageBitmap */
|
||||
0x00, 0x00, 0x00, 0x00, /* flags, rsv */
|
||||
0x02, /* region */
|
||||
'T', 'E', 'N', '3', '5', '3', '8', '9',
|
||||
'0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */
|
||||
'P', 'A', 'N', 'H' /* launcherTitleID_Lo */
|
||||
};
|
||||
|
||||
static const u8 HWINFO_S_K00A319_AU[HWINFO_S_BODY_SIZE] =
|
||||
{
|
||||
0x02, 0x00, 0x00, 0x00, /* validLanguageBitmap */
|
||||
0x00, 0x00, 0x00, 0x00, /* flags, rsv */
|
||||
0x03, /* region */
|
||||
'T', 'A', 'N', '3', '5', '3', '8', '9',
|
||||
'0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */
|
||||
'U', 'A', 'N', 'H' /* launcherTitleID_Lo */
|
||||
};
|
||||
|
||||
//================================================================================
|
||||
|
||||
static void CalcHWSecureInfoHMAC( void *pDstHMAC, const void* body, u64 fuseID )
|
||||
{
|
||||
u8 key[SVC_SHA1_DIGEST_SIZE];
|
||||
int i;
|
||||
SVC_CalcSHA1(key, &fuseID, sizeof(u64));
|
||||
SVC_CalcHMACSHA1( pDstHMAC, body, HWINFO_S_BODY_SIZE, key, SVC_SHA1_DIGEST_SIZE);
|
||||
|
||||
OS_TPrintf( "key : " );
|
||||
for( i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) {
|
||||
OS_TPrintf( "%02x", key[ i ] );
|
||||
}
|
||||
OS_TPrintf( "\n" );
|
||||
OS_TPrintf( "hmac: " );
|
||||
for( i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) {
|
||||
OS_TPrintf( "%02x", ((u8 *)pDstHMAC)[ i ] );
|
||||
}
|
||||
OS_TPrintf( "\n" );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// 署名算出(BERエンコードなし)
|
||||
static BOOL CalcSignature( void *pDstSign, const void *pSrc, u32 len, const u8 *pPrivKeyDER, u32 keyFileLen, u32 keyLen )
|
||||
{
|
||||
CRYPTORSASignContext context;
|
||||
CRYPTORSASignInitParam initParam;
|
||||
CRYPTORSASignParam param;
|
||||
int result_len;
|
||||
|
||||
initParam.key = (void*)pPrivKeyDER;
|
||||
initParam.key_len = keyFileLen;
|
||||
if( CRYPTO_RSA_SignInit(&context, &initParam) != 0 ) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
param.in = (void *)pSrc;
|
||||
param.in_len = len;
|
||||
param.out = pDstSign;
|
||||
param.out_size = keyLen;
|
||||
|
||||
result_len = CRYPTO_RSA_Sign_custom(&context, ¶m);
|
||||
if( result_len != keyLen ) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return CRYPTO_RSA_SignTerminate(&context) == 0 ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
|
||||
static BOOL LCFGi_THW_WriteSecureInfoCustom( char *pPath, const LCFGTWLHWSecureInfo *pSrcInfo, u64 fuseID, const u8 *pPrivKeyDER, u32 keyFileLen )
|
||||
{
|
||||
TSFHeader header;
|
||||
|
||||
// ヘッダ初期化
|
||||
MI_CpuClear8( &header, sizeof(TSFHeader) );
|
||||
header.version = LCFG_TWL_HWINFO_SECURE_VERSION;
|
||||
header.bodyLength = sizeof( LCFGTWLHWSecureInfo );
|
||||
|
||||
// ヘッダ署名算出
|
||||
{
|
||||
u8 hmac_sha1[ SVC_SHA1_DIGEST_SIZE ];
|
||||
CalcHWSecureInfoHMAC( hmac_sha1, pSrcInfo, fuseID );
|
||||
if( !CalcSignature( (void *)header.digest.rsa, hmac_sha1, SVC_SHA1_DIGEST_SIZE, pPrivKeyDER, keyFileLen, RSA_KEY_LENGTH_1024 ) ) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// ファイル生成
|
||||
(void)FS_CreateFileAuto( pPath, FS_PERMIT_R | FS_PERMIT_W );
|
||||
{
|
||||
#define HWINFO_FILE_LEN ( 16 * 1024 )
|
||||
FSFile file[1];
|
||||
char *pBuffer = OS_Alloc( HWINFO_FILE_LEN );
|
||||
|
||||
if( !FS_OpenFileEx( file, pPath, FS_FILEMODE_RW ) ) {
|
||||
return FALSE;
|
||||
}
|
||||
if( FS_SetFileLength( file, HWINFO_FILE_LEN ) != FS_RESULT_SUCCESS ) {
|
||||
(void)FS_CloseFile( file );
|
||||
return FALSE;
|
||||
}
|
||||
if( pBuffer ) {
|
||||
MI_CpuFillFast( pBuffer, 0xffffffff, HWINFO_FILE_LEN );
|
||||
(void)FS_WriteFile( file, pBuffer, HWINFO_FILE_LEN );
|
||||
}
|
||||
(void)FS_CloseFile( file );
|
||||
}
|
||||
|
||||
// ライト
|
||||
if( !LCFGi_TSF_WriteFile( pPath, &header, (const void *)pSrcInfo, NULL ) ) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// 秘密鍵のリード
|
||||
static BOOL ReadPrivateKey( void *pBuffer, u32 *pKeyFileLen, char *pPath )
|
||||
{
|
||||
BOOL retval = TRUE;
|
||||
FSFile file;
|
||||
|
||||
FS_InitFile( &file );
|
||||
if( !FS_OpenFileEx( &file, pPath, FS_FILEMODE_R ) )
|
||||
{
|
||||
OS_TPrintf( "PrivateKey read failed.\n" );
|
||||
retval = FALSE;
|
||||
}else {
|
||||
*pKeyFileLen = FS_GetFileLength( &file );
|
||||
if( *pKeyFileLen > 0 ) {
|
||||
if( FS_ReadFile( &file, pBuffer, (s32)*pKeyFileLen ) == *pKeyFileLen ) {
|
||||
OS_TPrintf( "PrivateKey read succeeded.\n" );
|
||||
}else {
|
||||
OS_TPrintf( "PrivateKey read failed.\n" );
|
||||
retval = FALSE;
|
||||
}
|
||||
}
|
||||
FS_CloseFile( &file );
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: InitAllocSystem
|
||||
|
||||
Description: ヒープを作成して OS_Alloc が使えるようにします。
|
||||
|
||||
Arguments: なし。
|
||||
|
||||
Returns: なし。
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void InitAllocSystem()
|
||||
{
|
||||
void* newArenaLo;
|
||||
OSHeapHandle hHeap;
|
||||
|
||||
// メインアリーナのアロケートシステムを初期化
|
||||
newArenaLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1);
|
||||
OS_SetMainArenaLo(newArenaLo);
|
||||
|
||||
// メインアリーナ上にヒープを作成
|
||||
hHeap = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi());
|
||||
OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap);
|
||||
}
|
||||
|
||||
extern u64 g_HWInfoFuseROM;
|
||||
extern char *g_pHwInfoPath;
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: TwlMain
|
||||
|
||||
Description: main
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
void TwlMain(void)
|
||||
{
|
||||
BOOL retval;
|
||||
u32 keyLen;
|
||||
|
||||
OS_Init();
|
||||
InitAllocSystem();
|
||||
(void)OS_SetIrqMask(0);
|
||||
(void)OS_EnableIrq();
|
||||
(void)OS_EnableInterrupts();
|
||||
(void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV);
|
||||
FS_Init( FS_DMA_NOT_USE );
|
||||
CRYPTO_SetMemAllocator( OS_AllocFromMain, OS_FreeToMain, NULL );
|
||||
|
||||
OS_TPrintf("---- HMAC over HWInfo_S for PROD boards @ BroadOn ----\n");
|
||||
|
||||
if( !ReadPrivateKey( s_privKey, &keyLen, HWINFO_PRIVKEY_PATH ) ) {
|
||||
OS_TPrintf("PrivateKey read failed.\n");
|
||||
}else {
|
||||
OS_TPrintf("TS-Board: K00A317\n");
|
||||
retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_JP, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_JP, FuseID_K00A317, s_privKey, keyLen );
|
||||
OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" );
|
||||
retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_US, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_US, FuseID_K00A317, s_privKey, keyLen );
|
||||
OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" );
|
||||
retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_EU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_EU, FuseID_K00A317, s_privKey, keyLen );
|
||||
OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" );
|
||||
retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_AU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_AU, FuseID_K00A317, s_privKey, keyLen );
|
||||
OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" );
|
||||
|
||||
OS_TPrintf("TS-Board: K00A319\n");
|
||||
retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_JP, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_JP, FuseID_K00A319, s_privKey, keyLen );
|
||||
OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" );
|
||||
retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_US, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_US, FuseID_K00A319, s_privKey, keyLen );
|
||||
OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" );
|
||||
retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_EU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_EU, FuseID_K00A319, s_privKey, keyLen );
|
||||
OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" );
|
||||
retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_AU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_AU, FuseID_K00A319, s_privKey, keyLen );
|
||||
OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" );
|
||||
}
|
||||
#if 0
|
||||
OS_TPrintf("---- Verify phase ----\n");
|
||||
{
|
||||
OS_TPrintf("TS-Board: K00A317\n");
|
||||
g_HWInfoFuseROM = FuseID_K00A317;
|
||||
g_pHwInfoPath = PATH_K00A317_JP;
|
||||
retval = LCFG_ReadHWSecureInfo();
|
||||
OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" );
|
||||
g_pHwInfoPath = PATH_K00A317_US;
|
||||
retval = LCFG_ReadHWSecureInfo();
|
||||
OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" );
|
||||
g_pHwInfoPath = PATH_K00A317_EU;
|
||||
retval = LCFG_ReadHWSecureInfo();
|
||||
OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" );
|
||||
g_pHwInfoPath = PATH_K00A317_AU;
|
||||
retval = LCFG_ReadHWSecureInfo();
|
||||
OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" );
|
||||
|
||||
OS_TPrintf("TS-Board: K00A319\n");
|
||||
g_HWInfoFuseROM = FuseID_K00A319;
|
||||
g_pHwInfoPath = PATH_K00A319_JP;
|
||||
retval = LCFG_ReadHWSecureInfo();
|
||||
OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" );
|
||||
g_pHwInfoPath = PATH_K00A319_US;
|
||||
retval = LCFG_ReadHWSecureInfo();
|
||||
OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" );
|
||||
g_pHwInfoPath = PATH_K00A319_EU;
|
||||
retval = LCFG_ReadHWSecureInfo();
|
||||
OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" );
|
||||
g_pHwInfoPath = PATH_K00A319_AU;
|
||||
retval = LCFG_ReadHWSecureInfo();
|
||||
OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" );
|
||||
}
|
||||
#endif
|
||||
OS_Terminate();
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user