mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新者)akabane_jumpei 活線挿抜ライブラリ修正 コマンド認証値、コマンドカウンタ初期値、PNジェネレータ初期値に乱数を使用。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@288 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
d7258b61fa
commit
66b043a3f4
@ -46,6 +46,7 @@ static void LoadStaticModule_Secure(void);
|
|||||||
static void McPowerOn(void);
|
static void McPowerOn(void);
|
||||||
static void SetMCSCR(void);
|
static void SetMCSCR(void);
|
||||||
|
|
||||||
|
static void GenVA_VB_VD(void);
|
||||||
static void LoadTable(void);
|
static void LoadTable(void);
|
||||||
static void ReadIDNormal(void);
|
static void ReadIDNormal(void);
|
||||||
static void MIm_CardDmaCopy32(u32 dmaNo, const void *src, void *dest);
|
static void MIm_CardDmaCopy32(u32 dmaNo, const void *src, void *dest);
|
||||||
@ -141,7 +142,7 @@ void HOTSW_Init(void)
|
|||||||
|
|
||||||
// カードブート用構造体の初期化
|
// カードブート用構造体の初期化
|
||||||
MI_CpuClear32(&s_cbData, sizeof(CardBootData));
|
MI_CpuClear32(&s_cbData, sizeof(CardBootData));
|
||||||
|
|
||||||
OS_TPrintf("*** sizeof(ROM_Header) : 0x%08x\n", sizeof(ROM_Header));
|
OS_TPrintf("*** sizeof(ROM_Header) : 0x%08x\n", sizeof(ROM_Header));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,11 +163,6 @@ BOOL HOTSW_Boot(void)
|
|||||||
OS_TPrintf("---------------- Card Boot Start ---------------\n");
|
OS_TPrintf("---------------- Card Boot Start ---------------\n");
|
||||||
// カード電源ON
|
// カード電源ON
|
||||||
McPowerOn();
|
McPowerOn();
|
||||||
|
|
||||||
// VAE・VBI・VD値の設定
|
|
||||||
s_cbData.vae = VAE_VALUE;
|
|
||||||
s_cbData.vbi = VBI_VALUE;
|
|
||||||
s_cbData.vd = VD_VALUE;
|
|
||||||
|
|
||||||
// セキュア領域の読み込みセグメント先頭番号(Segment4 ~ Segment7)
|
// セキュア領域の読み込みセグメント先頭番号(Segment4 ~ Segment7)
|
||||||
s_cbData.secureSegNum = 4;
|
s_cbData.secureSegNum = 4;
|
||||||
@ -236,7 +232,10 @@ BOOL HOTSW_Boot(void)
|
|||||||
}
|
}
|
||||||
// Key Table初期化
|
// Key Table初期化
|
||||||
GCDm_MakeBlowfishTableDS(&s_cbData.keyTable, &s_pBootSegBuffer->rh.s, s_cbData.keyBuf, 8);
|
GCDm_MakeBlowfishTableDS(&s_cbData.keyTable, &s_pBootSegBuffer->rh.s, s_cbData.keyBuf, 8);
|
||||||
|
|
||||||
|
// コマンド認証値・コマンドカウンタ初期値・PNジェネレータ初期値の生成
|
||||||
|
GenVA_VB_VD();
|
||||||
|
|
||||||
// セキュアモードに移行
|
// セキュアモードに移行
|
||||||
s_funcTable[s_cbData.cardType].ChangeMode_N(&s_cbData);
|
s_funcTable[s_cbData.cardType].ChangeMode_N(&s_cbData);
|
||||||
|
|
||||||
@ -395,6 +394,33 @@ void HOTSW_SetSecureSegmentBuffer(void* buf, u32 size)
|
|||||||
OS_TPrintf("*** Scr Seg Buf Address : 0x%08x\n", s_pSecureSegBuffer);
|
OS_TPrintf("*** Scr Seg Buf Address : 0x%08x\n", s_pSecureSegBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* -----------------------------------------------------------------
|
||||||
|
* GenVA_VB_VD関数
|
||||||
|
*
|
||||||
|
* コマンド認証値・コマンドカウンタ・PNジェネレータ初期値の生成
|
||||||
|
* ----------------------------------------------------------------- */
|
||||||
|
static void GenVA_VB_VD(void)
|
||||||
|
{
|
||||||
|
u32 dummy = 0;
|
||||||
|
MATHRandContext32 rnd;
|
||||||
|
|
||||||
|
// 乱数を初期化 VBlankカウンタ値を種とする。
|
||||||
|
MATH_InitRand32(&rnd, (u64)OS_GetVBlankCount());
|
||||||
|
|
||||||
|
s_cbData.vae = MATH_Rand32(&rnd, 0);
|
||||||
|
s_cbData.vbi = MATH_Rand32(&rnd, 0);
|
||||||
|
s_cbData.vd = MATH_Rand32(&rnd, 0);
|
||||||
|
dummy = MATH_Rand32(&rnd, 0);
|
||||||
|
|
||||||
|
EncryptByBlowfish(&s_cbData.keyTable, &s_cbData.vae, &s_cbData.vbi);
|
||||||
|
EncryptByBlowfish(&s_cbData.keyTable, &s_cbData.vd , &dummy);
|
||||||
|
|
||||||
|
s_cbData.vae &= 0xffffff;
|
||||||
|
s_cbData.vbi &= 0xfffff;
|
||||||
|
s_cbData.vd &= 0xffffff;
|
||||||
|
}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------
|
/* -----------------------------------------------------------------
|
||||||
* LoadTable関数
|
* LoadTable関数
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user