From 3d124962ed62db025a4713731a750a89d342d1ad Mon Sep 17 00:00:00 2001 From: yosiokat Date: Tue, 22 Apr 2008 04:53:09 +0000 Subject: [PATCH] =?UTF-8?q?AES=E9=8D=B5=E6=83=85=E5=A0=B1=E3=81=AE?= =?UTF-8?q?=E5=BC=95=E6=B8=A1=E3=81=97=E9=96=A2=E6=95=B0=E3=81=A8=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=80=81SYSMi=5FSetAESKeysForAccessControl=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=82=92=E7=94=A8=E6=84=8F=E3=80=82=20=E3=83=89?= =?UTF-8?q?=E3=82=AD=E3=83=A5=E3=83=A1=E3=83=B3=E3=83=88=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1211 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/components/hyena.TWL/src/main.c | 2 +- .../libraries_sysmenu/boot/ARM7/src/bootAPI.c | 28 ++------------- .../sysmenu/ARM7/src/setAESKey.c | 32 +++++++++++++++++- .../sysmenu/common/include/internal_api.h | 6 +++- ...SDK_5_0_FC_plus2_ランチャーリリースタスク.mmap | Bin 34300 -> 33907 bytes 5 files changed, 39 insertions(+), 29 deletions(-) diff --git a/build/components/hyena.TWL/src/main.c b/build/components/hyena.TWL/src/main.c index e90f8302..3851b2ba 100644 --- a/build/components/hyena.TWL/src/main.c +++ b/build/components/hyena.TWL/src/main.c @@ -182,7 +182,7 @@ TwlSpMain(void) #ifndef SDK_NOCRYPTO AES_Init(); // AES - SYSMi_SetAESKeysForAccessControl( (ROM_Header *)HW_TWL_ROM_HEADER_BUF, (u8 *)SDK_SEA_KEY_STORE, NULL, NULL ); + SYSMi_SetAESKeysForAccessControlCore( (ROM_Header *)HW_TWL_ROM_HEADER_BUF, (u8 *)SDK_SEA_KEY_STORE, NULL, NULL ); #ifdef SDK_SEA SEA_Init(); diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index a78fa40b..793d3ef2 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -131,32 +131,8 @@ BOOL BOOT_WaitStart( void ) // ̈nsB // u[gAvROMwb_accessKeyControlĔ - // ńAIRQX^bN̈ĝŁA荞݂֎~ĂZbgB - { - BOOL isClearSlotB = TRUE; - BOOL isClearSlotC = TRUE; - - MI_CpuClearFast( (void *)HW_LAUNCHER_DELIVER_PARAM_BUF, HW_LAUNCHER_DELIVER_PARAM_BUF_SIZE ); - if( ! isNtrMode ) { - if( th->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK ) { - SYSMi_SetAESKeysForAccessControl( th, (u8 *)HW_LAUNCHER_DELIVER_PARAM_BUF, &isClearSlotB, &isClearSlotC ); - } - } - // u[gAvɉāAAESL[Xbg̃NAsB - AESi_ResetAesKeyA(); - if( isClearSlotB ) AESi_ResetAesKeyB(); - if( isClearSlotC ) AESi_ResetAesKeyC(); - - // [TODO:]{ɂ̌NANDɃANZXȂۏ؂邩mFB - // NANDɃANZXȂAv́AXbgĎNA -// if( th->s.access_control.nand_access == 0 ) AESi_ResetAesKeyD(); - - // ͕svɂȂ̂ŁAĂ - { - OSFromFirmBuf* fromFirm = (void*)HW_FIRM_FROM_FIRM_BUF; - MI_CpuClearFast(fromFirm, sizeof(OSFromFirmBuf)); - } - } + SYSMi_SetAESKeysForAccessControl( isNtrMode, th ); + // SDKʃu[g { REBOOTTarget target = REBOOT_TARGET_TWL_SYSTEM; diff --git a/build/libraries_sysmenu/sysmenu/ARM7/src/setAESKey.c b/build/libraries_sysmenu/sysmenu/ARM7/src/setAESKey.c index a734803d..3b486725 100644 --- a/build/libraries_sysmenu/sysmenu/ARM7/src/setAESKey.c +++ b/build/libraries_sysmenu/sysmenu/ARM7/src/setAESKey.c @@ -59,8 +59,37 @@ static const u8 dev_seedSlotC[] = { // // ============================================================================ +void SYSMi_SetAESKeysForAccessControl( BOOL isNtrMode, ROM_Header *pROMH ) +{ + BOOL isClearSlotB = TRUE; + BOOL isClearSlotC = TRUE; + + // ̃Zbg + MI_CpuClearFast( (void *)HW_LAUNCHER_DELIVER_PARAM_BUF, HW_LAUNCHER_DELIVER_PARAM_BUF_SIZE ); + if( !isNtrMode && + ( pROMH->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK ) ) { + SYSMi_SetAESKeysForAccessControlCore( pROMH, (u8 *)HW_LAUNCHER_DELIVER_PARAM_BUF, &isClearSlotB, &isClearSlotC ); + } + + // u[gAvɉāAAESL[Xbg̃NAsB + { + AESi_ResetAesKeyA(); + if( isClearSlotB ) AESi_ResetAesKeyB(); + if( isClearSlotC ) AESi_ResetAesKeyC(); + + // NANDɃANZXȂAv́AXbgĎNA@ +// if( th->s.access_control.nand_access == 0 ) AESi_ResetAesKeyD();@reboot̒REBOOTi_DetachAllDrivesNANDɃANZXꍇ̂ŁAŃNA͂łȂBȂ炻̌ŁB + } + + // ͕̑̌svɂȂ̂ŁAĂ + { + OSFromFirmBuf* fromFirm = (void*)HW_FIRM_FROM_FIRM_BUF; + MI_CpuClearFast(fromFirm, sizeof(OSFromFirmBuf)); + } +} -void SYSMi_SetAESKeysForAccessControl( ROM_Header *pROMH, u8 *pDst, BOOL *pIsClearSlotB, BOOL *pIsClearSlotC ) + +void SYSMi_SetAESKeysForAccessControlCore( ROM_Header *pROMH, u8 *pDst, BOOL *pIsClearSlotB, BOOL *pIsClearSlotC ) { // commonClientKey if( pROMH->s.access_control.common_client_key ) { @@ -100,3 +129,4 @@ void SYSMi_SetAESKeysForAccessControl( ROM_Header *pROMH, u8 *pDst, BOOL *pIsCle } } + diff --git a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h index 9db4d3f8..ff5eaa1b 100644 --- a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h +++ b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h @@ -91,7 +91,11 @@ void SYSMi_EnableHotSW( BOOL enable ); //------------------------------------------------------- // AESݒ //------------------------------------------------------- -void SYSMi_SetAESKeysForAccessControl( ROM_Header *pROMH, u8 *pDst, BOOL *pIsClearSlotB, BOOL *pIsClearSlotC ); +// Avu[gp +void SYSMi_SetAESKeysForAccessControl( BOOL isNtrMode, ROM_Header *pROMH ); + +// `[gp +void SYSMi_SetAESKeysForAccessControlCore( ROM_Header *pROMH, u8 *pDst, BOOL *pIsClearSlotB, BOOL *pIsClearSlotC ); #endif // SDK_ARM7 diff --git a/docs/リリース_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_ランチャーリリースタスク.mmap b/docs/リリース_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_ランチャーリリースタスク.mmap index 386ea428bbecb16c469b50a541e1bb841cc54d8f..d30f999d1053ab23a285d1fba06aef069ddf89b8 100644 GIT binary patch delta 16687 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 l$yb^k6|hYQK|BF+%azQ@rY(lNY|RV|>