mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NTRセキュア領域の移動を、rebootライブラリで行うようにbootAPIでメモリリストを設定
TWLカードアプリハッシュ計算処理を少々変更 NTRでもマウント情報をヘッダに従って配置しようとしていたので修正 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1266 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
c77e040990
commit
ff8443c7ab
@ -34,7 +34,7 @@
|
||||
#define reg_MI_MC_SWP (*(REGType8v *) ( REG_MC1_ADDR + 1 ) )
|
||||
|
||||
#define PRE_CLEAR_NUM_MAX (6*2)
|
||||
#define COPY_NUM_MAX (5*3)
|
||||
#define COPY_NUM_MAX (6*3)
|
||||
#define POST_CLEAR_NUM_MAX (12 + 6*2)
|
||||
|
||||
#define CLRLIST_REBOOT_STACK_PAD_SIZE_IDX (2*3+1)
|
||||
@ -181,9 +181,27 @@ BOOL BOOT_WaitStart( void )
|
||||
};
|
||||
|
||||
// copy forwardƒŠƒXƒg<C692>Ý’è
|
||||
mem_list[list_count++] = SYSM_TWL_MOUNT_INFO_TMP_BUFFER;
|
||||
mem_list[list_count++] = (u32)th->s.sub_mount_info_ram_address;
|
||||
mem_list[list_count++] = SYSM_MOUNT_INFO_SIZE + OS_MOUNT_PATH_LEN;
|
||||
// カードアプリのときはNTRセキュア領域再配置コピー
|
||||
if( SYSMi_GetWork2()->bootTitleProperty.flags.bootType == LAUNCHER_BOOTTYPE_ROM)
|
||||
{
|
||||
u32 *dest = dh->s.main_ram_address;
|
||||
// romの再配置情報を参照して、セキュア領域の再配置先を変更する必要が無いか調べる
|
||||
if( SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC].src != NULL )
|
||||
{
|
||||
dest = (u32 *)SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC].src;
|
||||
}
|
||||
mem_list[list_count++] = SYSM_CARD_NTR_SECURE_BUF;
|
||||
mem_list[list_count++] = (u32)dest;
|
||||
mem_list[list_count++] = ( dh->s.main_size < SECURE_AREA_SIZE ) ? dh->s.main_size : SECURE_AREA_SIZE;
|
||||
}
|
||||
// マウント情報
|
||||
if( !isNtrMode )
|
||||
{
|
||||
mem_list[list_count++] = SYSM_TWL_MOUNT_INFO_TMP_BUFFER;
|
||||
mem_list[list_count++] = (u32)th->s.sub_mount_info_ram_address;
|
||||
mem_list[list_count++] = SYSM_MOUNT_INFO_SIZE + OS_MOUNT_PATH_LEN;
|
||||
}
|
||||
// モジュール再配置コピーforward
|
||||
for( l=0; l<RELOCATE_INFO_NUM ; l++ )
|
||||
{
|
||||
if( SYSMi_GetWork()->romRelocateInfo[l].src != NULL && !SYSMi_GetWork()->romRelocateInfo[l].rev )
|
||||
@ -196,6 +214,7 @@ BOOL BOOT_WaitStart( void )
|
||||
mem_list[list_count++] = NULL;
|
||||
|
||||
// copy backwardƒŠƒXƒg<C692>Ý’è
|
||||
// モジュール再配置コピーbackward
|
||||
for( l=0; l<RELOCATE_INFO_NUM ; l++ )
|
||||
{
|
||||
if( SYSMi_GetWork()->romRelocateInfo[l].src != NULL && SYSMi_GetWork()->romRelocateInfo[l].rev )
|
||||
|
||||
@ -672,18 +672,8 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
||||
static void SYSMi_Relocate( void )
|
||||
{
|
||||
u32 size;
|
||||
u32 *dest = SYSM_GetCardRomHeader()->main_ram_address;
|
||||
// NTRセキュア領域の再配置
|
||||
DC_InvalidateRange( (void *)SYSM_CARD_NTR_SECURE_BUF, SECURE_AREA_SIZE ); // キャッシュケア
|
||||
size = ( SYSM_GetCardRomHeader()->main_size < SECURE_AREA_SIZE ) ?
|
||||
SYSM_GetCardRomHeader()->main_size : SECURE_AREA_SIZE;
|
||||
// romの再配置情報を参照して、セキュア領域の再配置先を変更する必要が無いか調べる
|
||||
if( SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC].src != NULL )
|
||||
{
|
||||
dest = (u32 *)SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC].src;
|
||||
}
|
||||
MI_CpuCopyFast( (void *)SYSM_CARD_NTR_SECURE_BUF, dest, size );
|
||||
|
||||
u32 *dest ;
|
||||
// NTRセキュア領域の再配置は後でbootAPIおよびrebootライブラリにて行う
|
||||
if( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) {
|
||||
// TWLモード
|
||||
// TWLセキュア領域の再配置
|
||||
@ -924,9 +914,15 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle )
|
||||
OS_ReleaseLockID( id );
|
||||
|
||||
SVC_HMACSHA1Update( &ctx,
|
||||
(const void*)((u32)module_addr[l] + ARM9_ENCRYPT_DEF_SIZE),
|
||||
(module_size[l] - ARM9_ENCRYPT_DEF_SIZE) );
|
||||
SVC_HMACSHA1GetHash( &ctx, calculated_hash );
|
||||
(const void*)(SYSM_CARD_NTR_SECURE_BUF + ARM9_ENCRYPT_DEF_SIZE),
|
||||
(SECURE_AREA_SIZE - ARM9_ENCRYPT_DEF_SIZE) );
|
||||
if( module_size[l] > SECURE_AREA_SIZE )
|
||||
{
|
||||
SVC_HMACSHA1Update( &ctx,
|
||||
(const void*)((u32)module_addr[l] + SECURE_AREA_SIZE),
|
||||
(module_size[l] - SECURE_AREA_SIZE) );
|
||||
SVC_HMACSHA1GetHash( &ctx, calculated_hash );
|
||||
}
|
||||
}else
|
||||
{
|
||||
SVC_CalcHMACSHA1( calculated_hash, (const void*)module_addr[l], module_size[l],
|
||||
|
||||
Loading…
Reference in New Issue
Block a user