ショップの鍵データハッシュの照合を、開発版、製品版両方比較するようにした。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2126 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
aoki_ryoma 2008-08-07 08:17:57 +00:00
parent b52109e5dc
commit 29e9f723d2
3 changed files with 36 additions and 8 deletions

View File

@ -38,7 +38,7 @@ static char* s_strSignFilePath[] = {
FILE_SIGN_NINTENDO_CAG2,
};
static char* s_strSignHash[] = {
static char* s_strSignHashDev[] = {
"01e03e86fe11c5172ba742045c63e65c2f058e99",
"7497940e3a3591d592b46ff99d75ebe102c27550",
"cf130c7674bae733f3b106109bb06cc0d6ac1a18",
@ -46,6 +46,13 @@ static char* s_strSignHash[] = {
"c60b2a5cc90f0630cca33040df6b3378239f3bfa"
};
static char* s_strSignHashProd[] = {
"0626f8ac62baaa0b70c543a33962e54507d451d6",
"58c198c8099d579500cb5d9007bf81404a3c41fa",
"72445f08ab30a41aff9e20a2e64ca7d2b263765e",
"43a81069e6b6300dbe08d6fc3583d0c384a37996",
"c60b2a5cc90f0630cca33040df6b3378239f3bfa"
};
void getSysmenuInfo( void )
@ -137,7 +144,8 @@ void getSysmenuInfo( void )
FSFile file[NUM_FILE_SIGN];
u32 fileLen[NUM_FILE_SIGN], maxFileSize = 0;
u8 i;
u8 *srcBuf, *dstBuf, digestBuf[MATH_SHA1_DIGEST_SIZE], cmpDigestBuf[MATH_SHA1_DIGEST_SIZE];
u8 *srcBuf, *dstBuf, digestBuf[MATH_SHA1_DIGEST_SIZE],
cmpDigestDevBuf[MATH_SHA1_DIGEST_SIZE], cmpDigestProdBuf[MATH_SHA1_DIGEST_SIZE];
for( i=0 ; i < NUM_FILE_SIGN; i++ )
{
@ -213,16 +221,30 @@ void getSysmenuInfo( void )
MATH_CalcSHA1( digestBuf, srcBuf, fileLen[i] );
}
strToHexa( s_strSignHash[i] , cmpDigestBuf, MATH_SHA1_DIGEST_SIZE );
strToHexa( s_strSignHashDev[i] , cmpDigestDevBuf, MATH_SHA1_DIGEST_SIZE );
strToHexa( s_strSignHashProd[i], cmpDigestProdBuf, MATH_SHA1_DIGEST_SIZE );
// ハッシュ値が一致したらcorrect,一致しなかったらincorrect
gAllInfo[MENU_SYSMENU][idx].str.sjis =
s_strCorrect[ MI_CpuComp8( cmpDigestBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0 ];
if( MI_CpuComp8( cmpDigestDevBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0 )
{
gAllInfo[MENU_SYSMENU][idx].str.sjis = s_strSysMenuKey[1];
}
else if( MI_CpuComp8( cmpDigestProdBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0 )
{
gAllInfo[MENU_SYSMENU][idx].str.sjis = s_strSysMenuKey[2];
}
else
{
gAllInfo[MENU_SYSMENU][idx].str.sjis = s_strSysMenuKey[0];
}
gAllInfo[MENU_SYSMENU][idx].numLines = 2;
gAllInfo[MENU_SYSMENU][idx].isAligned = FALSE;
putBinary( cmpDigestBuf, MATH_SHA1_DIGEST_SIZE );
putBinary( cmpDigestDevBuf, MATH_SHA1_DIGEST_SIZE );
putBinary( cmpDigestProdBuf, MATH_SHA1_DIGEST_SIZE );
putBinary( digestBuf, MATH_SHA1_DIGEST_SIZE );
}

View File

@ -349,7 +349,12 @@ char *s_strCorrect[] = {
"Incorrect",
"Correct"
};
char *s_strSysMenuKey[] = {
"Incorrect",
"correct: dev",
"correct: prod"
};
char *s_strBool[] = {
"FALSE",

View File

@ -222,6 +222,7 @@ extern const char *s_strSCFGViewMode[];
extern char *s_strEnable[];
extern char *s_strJoint[];
extern char *s_strCorrect[];
extern char *s_strSysMenuKey[];
extern char *s_strSupply[];
extern char *s_strRomMode[];
extern char *s_strPSRAM[];