SHA1コンテキストが非キャッシュに置かれていたのをスタック(DTCMまたはキャッシュ領域)へ移動。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@751 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
nakasima 2008-02-27 02:29:15 +00:00
parent 06b09b735f
commit 6062f664fe
2 changed files with 9 additions and 12 deletions

View File

@ -968,13 +968,7 @@ static void UnlockHotSwRsc(OSLockWord* word)
* ----------------------------------------------------------------- */
BOOL HOTSW_IsCardAccessible(void)
{
#ifndef DEBUG_USED_CARD_SLOT_B_
u32 mask = (u32)(REG_MI_MC_SL1_CDET_MASK << GetMcSlotShift());
#else
u32 mask = (u32)(REG_MI_MC_SL2_CDET_MASK >> GetMcSlotShift());
#endif
if( !(reg_MI_MC1 & mask) && CmpMcSlotMode(SLOT_STATUS_MODE_10) == TRUE){
if( HOTSW_IsCardExist() && CmpMcSlotMode(SLOT_STATUS_MODE_10) == TRUE){
return TRUE;
}
else{

View File

@ -766,13 +766,16 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle )
// カードの場合のARM9_STATICハッシュチェック
// カード読み込み時、work2に暗号化オブジェクト部分のハッシュ計算済みのコンテキストが保存されるので
// それを用いてARM9_STATIC残りの部分を計算
SVCHMACSHA1Context tempcon;
SVC_HMACSHA1Init( &tempcon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1 );
SYSMi_GetWork2()->hmac_sha1_context.sha1_ctx.sha_block = tempcon.sha1_ctx.sha_block;// この関数ポインタだけARM7とARM9で変えないとダメ
SVC_HMACSHA1Update( &(SYSMi_GetWork2()->hmac_sha1_context),
SVCHMACSHA1Context ctx;
SVC_HMACSHA1Init( &ctx, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1 );
// [TODO] ARM7とのhmac_sha1_contextの排他制御開始
SYSMi_GetWork2()->hmac_sha1_context.sha1_ctx.sha_block = ctx.sha1_ctx.sha_block;// この関数ポインタだけARM7とARM9で変えないとダメ
ctx = SYSMi_GetWork2()->hmac_sha1_context; // SYSMi_GetWork2は非キャッシュなのでスタックDTCMまたはキャッシュ領域へコピー
// [TODO] ARM7とのhmac_sha1_contextの排他制御終了
SVC_HMACSHA1Update( &ctx,
(const void*)((u32)module_addr[l] + ARM9_ENCRYPT_DEF_SIZE),
(module_size[l] - ARM9_ENCRYPT_DEF_SIZE) );
SVC_HMACSHA1GetHash( &(SYSMi_GetWork2()->hmac_sha1_context), calculated_hash );
SVC_HMACSHA1GetHash( &ctx, calculated_hash );
}else
{
SVC_CalcHMACSHA1( calculated_hash, (const void*)module_addr[l], module_size[l],