mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
カードスクランブル乱数の種を固定値になりやすいVカウンタからチック&RTC初回ロード値へ変更。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1128 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
698caf92af
commit
6c8e58e242
@ -244,6 +244,8 @@ TwlSpMain(void)
|
||||
// RTCのリセットチェック
|
||||
static void ResetRTC( void )
|
||||
{
|
||||
SYSM_work* sw = SYSMi_GetWork();
|
||||
|
||||
// ランチャーでリセットを検出するためにこの処理をしているが、RTC_Init内でも同じことをしているので、ちょっと無駄。
|
||||
RTCRawStatus1 stat1;
|
||||
RTCRawStatus2 stat2;
|
||||
@ -261,8 +263,11 @@ static void ResetRTC( void )
|
||||
fout.fout = RTC_FOUT_DUTY_32KHZ;
|
||||
RTC_WriteFout(&fout);
|
||||
}
|
||||
SYSMi_GetWork()->flags.common.isResetRTC = TRUE;
|
||||
sw->flags.common.isResetRTC = TRUE;
|
||||
}
|
||||
|
||||
// RTC初回データ読み込み
|
||||
RTC_ReadDateTime(&sw->Rtc1stData);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -190,6 +190,8 @@ CardThreadData HotSwThreadData;
|
||||
*---------------------------------------------------------------------------*/
|
||||
void HOTSW_Init(u32 threadPrio)
|
||||
{
|
||||
SYSM_work* sw = SYSMi_GetWork();
|
||||
|
||||
OS_InitTick();
|
||||
OS_InitThread();
|
||||
|
||||
@ -287,7 +289,7 @@ void HOTSW_Init(u32 threadPrio)
|
||||
HotSwThreadData.idx_insert = (HotSwThreadData.idx_insert+1) % HOTSW_INSERT_MSG_NUM;
|
||||
}
|
||||
else{
|
||||
SYSMi_GetWork()->flags.hotsw.is1stCardChecked = TRUE;
|
||||
sw->flags.hotsw.is1stCardChecked = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1040,14 +1042,15 @@ void HOTSW_SetSecureSegmentBuffer(ModeType type ,void* buf, u32 size)
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void GenVA_VB_VD(void)
|
||||
{
|
||||
SYSM_work* sw = SYSMi_GetWork();
|
||||
u32 dummy = 0;
|
||||
MATHRandContext32 rnd;
|
||||
|
||||
// 乱数を初期化 VBlankカウンタ値を種とする。
|
||||
// [TODO] プログラムがV周期に同期しているためVカウンタでは固定値になりやすい
|
||||
// (特にダイレクトブート)。
|
||||
// 起動する度に変化するパラメータと組み合わせるべき。
|
||||
MATH_InitRand32(&rnd, (u64)OS_GetVBlankCount());
|
||||
MATHRandContext32 rnd;
|
||||
|
||||
// 乱数を初期化
|
||||
// チック&RTC初回ロード値を種とする。
|
||||
// (起動する度に変化するパラメータと組み合わせる。
|
||||
// Vカウンタは2130サイクル変化しないので固定値になりやすい。)
|
||||
MATH_InitRand32(&rnd, OS_GetTick() ^ sw->Rtc1stData.words[0] ^ sw->Rtc1stData.words[1]);
|
||||
|
||||
s_cbData.vae = MATH_Rand32(&rnd, 0);
|
||||
s_cbData.vbi = MATH_Rand32(&rnd, 0);
|
||||
|
||||
@ -119,6 +119,7 @@ typedef struct SYSM_work {
|
||||
|
||||
LauncherParam launcherParam;
|
||||
SYSMRomEmuInfo romEmuInfo;
|
||||
RTCRawData Rtc1stData; // RTC初回ロード値 8byte
|
||||
|
||||
BOOL isDeveloperAESMode; // 開発用セキュリティか?(製品版でFALSE)
|
||||
void *addr_AESregion[2]; // AES暗号化領域の格納アドレス
|
||||
|
||||
Loading…
Reference in New Issue
Block a user