From c95b7cb89f0f6b829941476b0eebbd0b40e01ea0 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Fri, 21 Mar 2008 09:36:22 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=BB=E3=82=A2=E3=83=97=E3=83=AA=E3=81=B8?= =?UTF-8?q?=E3=81=AE=E9=8D=B5=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E5=BC=95=E7=B6=99=E3=81=8E=E5=87=A6=E7=90=86=E3=82=92=E5=AE=9F?= =?UTF-8?q?=E8=A3=85=E3=80=82=20=E3=83=BBMachineSettings=E3=81=A7=E3=80=81?= =?UTF-8?q?AES=20SlotC=E9=8D=B5=E3=82=92=E8=A6=81=E6=B1=82=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E5=A4=89=E6=9B=B4=E3=80=82=20?= =?UTF-8?q?=E3=83=BB=E3=83=89=E3=82=AD=E3=83=A5=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=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@920 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/boot/ARM7/src/bootAPI.c | 97 ++++++++++++++---- .../MachineSettings/ARM9/main.rsf | 5 + docs/アプリ種別.mmap | Bin 31584 -> 32056 bytes include/sysmenu.h | 2 +- 4 files changed, 81 insertions(+), 23 deletions(-) diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 5bd1c2e0..ef70afdb 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "reboot.h" #include "internal_api.h" @@ -73,6 +74,28 @@ static u32 nitro_post_clear_list[POST_CLEAR_NUM_MAX + 1] = // const data-------------------------------------------------------- +// dev_commonKey̓x^ŎĂB +static const u8 dev_commonKey[] = { + 0xA1, 0x60, 0x4A, 0x6A, 0x71, 0x23, 0xB5, 0x29, + 0xAE, 0x8B, 0xEC, 0x32, 0xC8, 0x16, 0xFC, 0xAA +}; + +static const u8 dev_seedES[] = { + 0x2D, 0xD4, 0x03, 0x98, 0xA7, 0x6B, 0x03, 0x28, + 0xCE, 0x61, 0x04, 0xBB, 0x0A, 0xBB, 0x03, 0x5B, +}; + +static const u8 dev_seedNAM[] = { + 0x4D, 0x04, 0xA4, 0x7F, 0xE3, 0x02, 0x30, 0x2E, + 0x2A, 0x07, 0x06, 0xE6, 0xD9, 0x06, 0x47, 0x76, +}; + +static const u8 dev_seedSlotC[] = { + 0x3B, 0x06, 0x86, 0x57, 0x33, 0x04, 0x88, 0x11, + 0x49, 0x04, 0x6B, 0x33, 0x12, 0x02, 0xAC, 0xF3, +}; + + void BOOT_Init( void ) { reg_PXI_MAINPINTF = 0x0000; @@ -86,17 +109,7 @@ BOOL BOOT_WaitStart( void ) (void)OS_SetIrqMask(0); // SDKo[W̃T[`ɎԂƁAARM9HALTɂĂ܂AARM7̃TEhXbhARM9FIFOŃf[^M悤ƂĂFIFOtőMłȂԂŖ[vɓĂ܂B (void)OS_SetIrqMaskEx(0); - // [TODO]u[gAvɉāAAESL[Xbg̃NAsB - // u[gAvROMwb_accessKeyControlĔ -// AESi_ResetAesKeyA(); -// AESi_ResetAesKeyB(); -// AESi_ResetAesKeyC(); - - // [TODO]̈nsB - // u[gAvROMwb_accessKeyControlĔ - // ńAIRQX^bN̈ĝŁA荞݂֎~ĂZbgB - - + // [TODO]AvɂĎ}EgAhX́A`[ɂƂďɈSȏꏊȂ̂H // }Eg̓o^ SYSMi_SetBootAppMountInfo( &SYSMi_GetWork2()->bootTitleProperty ); @@ -104,6 +117,57 @@ BOOL BOOT_WaitStart( void ) reg_MI_MBK9 = 0; // SWRAM̃bN reg_PXI_MAINPINTF = MAINP_SEND_IF | 0x0100; // ARM9ɑ΂ău[g悤IRQŗv{ARM7̃Xe[gPɂB + // ̈nsB + // u[gAvROMwb_accessKeyControlĔ + // ńAIRQX^bN̈ĝŁA荞݂֎~ĂZbgB + { + ROM_Header *th = (ROM_Header *)HW_TWL_ROM_HEADER_BUF; // TWLgROMwb_ + BOOL isClearSlotB = TRUE; + BOOL isClearSlotC = TRUE; + + MI_CpuClearFast( (void *)HW_LAUNCHER_DELIVER_PARAM_BUF, HW_LAUNCHER_DELIVER_PARAM_BUF_SIZE ); + if( th->s.platform_code & PLATFORM_CODE_FLAG_TWL ) { + if( th->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK ) { + // commonClientKey + if( th->s.access_control.common_client_key ) { + void *pCommonKey = ( SCFG_GetBondingOption() == SCFG_OP_PRODUCT ) ? + OSi_GetFromFirmAddr()->aes_key[ 0 ] : (void *)dev_commonKey; + MI_CpuCopy8( pCommonKey, (void *)HW_LAUNCHER_DELIVER_PARAM_BUF, AES_BLOCK_SIZE ); + } + // HW AES Slot B + if( th->s.access_control.hw_aes_slot_B ) { + void *pSeedES = ( SCFG_GetBondingOption() == SCFG_OP_PRODUCT ) ? + &( OSi_GetFromFirmAddr()->rsa_pubkey[ 3 ][ 0 ] ) : (void *)dev_seedES; + MI_CpuCopy8( pSeedES, (void *)( HW_LAUNCHER_DELIVER_PARAM_BUF + 0x10 ), AES_BLOCK_SIZE ); + isClearSlotB = FALSE; + // AESXbg̃ftHglZbg͕sv + } + // HW AES Slot C + if( th->s.access_control.hw_aes_slot_C ) { + void *pSeedNAM = ( SCFG_GetBondingOption() == SCFG_OP_PRODUCT ) ? + &( OSi_GetFromFirmAddr()->rsa_pubkey[ 3 ][ 0x10 ] ) : (void *)dev_seedNAM; + void *pSeedSlotC = ( SCFG_GetBondingOption() == SCFG_OP_PRODUCT ) ? + &( OSi_GetFromFirmAddr()->rsa_pubkey[ 3 ][ 0x20 ] ) : (void *)dev_seedSlotC; + MI_CpuCopy8( pSeedNAM, (void *)( HW_LAUNCHER_DELIVER_PARAM_BUF + 0x20 ), AES_BLOCK_SIZE ); + isClearSlotC = FALSE; + // AESXbg̃ftHglZbg + AES_Lock(); + AES_SetKeySeedC( pSeedSlotC ); + AES_Unlock(); + } + } + } + // u[gAvɉāAAESL[Xbg̃NAsB + AESi_ResetAesKeyA(); + if( isClearSlotB ) AESi_ResetAesKeyB(); + if( isClearSlotC ) AESi_ResetAesKeyC(); + + // ͕svɂȂ̂ŁAĂ + { + OSFromBrom7Buf* fromBrom = (void*)HW_FIRM_FROM_BROM_BUF; + MI_CpuClearFast(fromBrom, sizeof(OSFromBrom7Buf) - sizeof(fromBrom->SDNandContext)); + } + } // SDKʃu[g { REBOOTTarget target = REBOOT_TARGET_TWL_SYSTEM; @@ -124,10 +188,6 @@ BOOL BOOT_WaitStart( void ) NULL, NULL, // 萔łȂ̂łƂŐݒ SYSM_OWN_ARM7_MMEM_ADDR, SYSM_OWN_ARM7_MMEM_ADDR_END - SYSM_OWN_ARM7_MMEM_ADDR, SYSM_OWN_ARM9_MMEM_ADDR, SYSM_OWN_ARM9_MMEM_ADDR_END - SYSM_OWN_ARM9_MMEM_ADDR, -#ifdef ISDBG_MB_CHILD_ - HW_PRV_WRAM_END - 0x600, (HW_PRV_WRAM_END - HW_PRV_WRAM_SYSRV_SIZE) - (HW_PRV_WRAM_END - 0x600), - HW_PRV_WRAM_END - 0x600 + 0x20, HW_PRV_WRAM_END - (HW_PRV_WRAM_END - 0x600 + 0x20), -#endif HW_WRAM_BASE, HW_WRAM_SIZE, // LWRAM@@Launcher̓zuȂ̂ŁABASETCYԂ NULL, // copy forward @@ -274,13 +334,6 @@ BOOL BOOT_WaitStart( void ) } #endif // FIRM_USE_SDK_KEYS || SYSMENU_DISABLE_RETAIL_BOOT - // ZLAVXeȊO͌Ă - if ( target != REBOOT_TARGET_TWL_SECURE_SYSTEM ) - { - OSFromBrom7Buf* fromBrom = (void*)HW_FIRM_FROM_BROM_BUF; - MI_CpuClearFast(fromBrom, sizeof(OSFromBrom7Buf) - sizeof(fromBrom->SDNandContext)); - } - // u[g OS_Boot( dh->s.sub_entry_address, mem_list, target ); } diff --git a/build/systemMenu_RED/MachineSettings/ARM9/main.rsf b/build/systemMenu_RED/MachineSettings/ARM9/main.rsf index 588e5567..8c44decc 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/main.rsf +++ b/build/systemMenu_RED/MachineSettings/ARM9/main.rsf @@ -135,6 +135,11 @@ Property # HwAESSlotB TRUE + # + # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] + # + HwAESSlotC TRUE + # # SDCardAccess: sd card access control [TRUE/FALSE] # diff --git a/docs/アプリ種別.mmap b/docs/アプリ種別.mmap index 12ada341053040ed5d4570939e57a55e16ad8d8c..5cb93597ff3ac7f5d1f58286bdf24dbea36b432d 100644 GIT binary patch delta 14854 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 delta 14338 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 diff --git a/include/sysmenu.h b/include/sysmenu.h index 087e5413..55b998a5 100644 --- a/include/sysmenu.h +++ b/include/sysmenu.h @@ -18,7 +18,7 @@ #define SYSMENU_H_ // Compile switch---------------------- -#define DEBUG_USED_CARD_SLOT_B_ // fobOpŃJ[hXbgBgpꍇɗLɂB +//#define DEBUG_USED_CARD_SLOT_B_ // fobOpŃJ[hXbgBgpꍇɗLɂB //-------------------------------------