mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ペアレンタルコントロール関連の下記APIを追加。
問い合わせコード算出: SYSM_CalcPCTLInquiryCode マスターキー算出 : SYSM_CalcPCTLMasterKey git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1317 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
c7e8f8228b
commit
c7ad147378
@ -39,6 +39,7 @@ SRCS = sysmenu_lib.c \
|
||||
../common/src/pxi.c \
|
||||
../common/src/mountInfo.c \
|
||||
../common/src/decodeAES.c \
|
||||
../common/src/masterkey.c \
|
||||
$(REVISION_SRC)
|
||||
|
||||
|
||||
|
||||
110
build/libraries_sysmenu/sysmenu/common/src/masterkey.c
Normal file
110
build/libraries_sysmenu/sysmenu/common/src/masterkey.c
Normal file
@ -0,0 +1,110 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: Sample Test
|
||||
File: test.c
|
||||
|
||||
Copyright 2005 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.
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu.h>
|
||||
|
||||
#define CODE_LENGTH 8
|
||||
|
||||
static u32 Crc32Table[0x100];
|
||||
|
||||
// Forward references
|
||||
u32 CalcMasterkey(const u8 *src);
|
||||
|
||||
static void Crc32Init(void)
|
||||
{
|
||||
u32 i, j;
|
||||
u32 poly = 0xedb88320;
|
||||
u32 crc;
|
||||
|
||||
for (i = 0; i < 0x100; i++) {
|
||||
crc = i;
|
||||
for (j = 8; j > 0; j--) {
|
||||
if (crc & 1) {
|
||||
crc = (crc >> 1) ^ poly;
|
||||
} else {
|
||||
crc >>= 1;
|
||||
}
|
||||
}
|
||||
Crc32Table[i] = crc;
|
||||
}
|
||||
}
|
||||
|
||||
static u32 CalcCrc32(const u8 *src, u32 len)
|
||||
{
|
||||
u32 crc = 0xffffffff;
|
||||
|
||||
while (len) {
|
||||
crc = ((crc >> 8) & 0xffffffff) ^ Crc32Table[(crc ^ *src) & 0xff];
|
||||
src++;
|
||||
len--;
|
||||
}
|
||||
return crc;
|
||||
}
|
||||
|
||||
u32 CalcMasterkey(const u8 *src)
|
||||
{
|
||||
static u8 initFlag = 0;
|
||||
u32 key;
|
||||
|
||||
if (initFlag == 0) {
|
||||
Crc32Init();
|
||||
initFlag = 1;
|
||||
}
|
||||
|
||||
key = ((CalcCrc32(src, CODE_LENGTH) ^ 0xaaaa) + 5313) % 100000;
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
//======================================================================
|
||||
//
|
||||
// マスターキー算出
|
||||
//
|
||||
//======================================================================
|
||||
u32 SYSM_CalcPCTLMasterKey( void )
|
||||
{
|
||||
u32 masterKey;
|
||||
u32 inquiryCode = SYSM_CalcPCTLInquiryCode();
|
||||
u8 arg[ 9 ];
|
||||
RTCDate date;
|
||||
RTC_Init();
|
||||
RTC_GetDate( &date );
|
||||
STD_TSPrintf( (char *)arg, "%02d%02d%04d", date.month, date.day, inquiryCode % 10000 );
|
||||
masterKey = CalcMasterkey( arg );
|
||||
OS_TPrintf( "MasterKey : %05d\n", masterKey );
|
||||
return masterKey;
|
||||
}
|
||||
|
||||
|
||||
//======================================================================
|
||||
//
|
||||
// ペアレンタルコントロール問い合わせ番号算出
|
||||
//
|
||||
//======================================================================
|
||||
u32 SYSM_CalcPCTLInquiryCode( void )
|
||||
{
|
||||
int i;
|
||||
u64 num = 0;
|
||||
u8 *p = (u8 *)#
|
||||
u8 macAddr[ 6 ];
|
||||
u32 inquiryCode;
|
||||
OS_GetMacAddress( macAddr );
|
||||
for( i = 5; i >= 0; i-- ) {
|
||||
*p++ = macAddr[ i ];
|
||||
}
|
||||
inquiryCode = (u32)( num % 100000000UL );
|
||||
OS_TPrintf( "InquiryCode : %08d\n", inquiryCode );
|
||||
return inquiryCode;
|
||||
}
|
||||
|
||||
@ -129,6 +129,10 @@ extern BOOL SYSM_IsLeapYear100( u32 year ); //
|
||||
// スリープモード
|
||||
extern void SYSM_GoSleepMode( void ); // スリープモードへの遷移
|
||||
|
||||
// ペアレンタルコントロール問い合わせ
|
||||
u32 SYSM_CalcPCTLInquiryCode( void ); // 問い合わせコード(10進8桁)算出
|
||||
u32 SYSM_CalcPCTLMasterKey( void ); // マスターキー (10進5桁)算出
|
||||
|
||||
#endif
|
||||
|
||||
// 状態チェック
|
||||
|
||||
Loading…
Reference in New Issue
Block a user