From 2521a7e48c3d1a9fb62d096bf447e26dc8e38022 Mon Sep 17 00:00:00 2001 From: yutaka Date: Thu, 27 Mar 2008 12:05:01 +0000 Subject: [PATCH] =?UTF-8?q?AES=E9=8D=B5=E3=81=AE=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=81=AB=E3=82=88=E3=82=8B=E5=A4=89=E6=9B=B4?= =?UTF-8?q?=20(NAND=E6=9A=97=E5=8F=B7=E5=8C=96=E9=8D=B5=E3=82=82=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=81=95=E3=82=8C=E3=81=BE=E3=81=99=EF=BC=81)?= 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@988 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries/aes/ARM7/aes_init.c | 20 ++++++++++++++++++++ build/libraries/os/common/os_boot.c | 3 ++- build/nandfirm/menu-launcher/ARM7/main.c | 9 +++++++++ build/nandfirm/sdmc-launcher/ARM7/main.c | 9 +++++++++ docs/éµç®¡ç†.xls | Bin 35328 -> 35328 bytes include/firm/aes/ARM7/aes_init.h | 12 ++++++++++++ 6 files changed, 52 insertions(+), 1 deletion(-) diff --git a/build/libraries/aes/ARM7/aes_init.c b/build/libraries/aes/ARM7/aes_init.c index c9146fca..c48f3027 100644 --- a/build/libraries/aes/ARM7/aes_init.c +++ b/build/libraries/aes/ARM7/aes_init.c @@ -15,6 +15,7 @@ $Author$ *---------------------------------------------------------------------------*/ +#include #include #include @@ -23,6 +24,25 @@ #define AES_IDS_ID0_D(c) (((unsigned long)c[3] << 0) | ((unsigned long)c[2] << 8) | ((unsigned long)c[1] << 16) | ((unsigned long)c[0] << 24)) +/*---------------------------------------------------------------------------* + Name: AESi_PreInitKeys + + Description: reset IDs preset by bootrom. + you SHOULD NOT touch any ID registers after this call. + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +void AESi_PreInitKeys( void ) +{ + AES_WaitKey(); + + reg_AES_AES_ID_B2 = reg_OS_CHIP_ID1 ^ *(const u32*)&OSi_GetFromFirmAddr()->aes_key[2][0]; + reg_AES_AES_ID_D1 = reg_OS_CHIP_ID0 ^ *(const u32*)&OSi_GetFromFirmAddr()->aes_key[2][8]; + reg_AES_AES_ID_D2 = reg_OS_CHIP_ID1 ^ *(const u32*)&OSi_GetFromFirmAddr()->aes_key[2][4]; +} + /*---------------------------------------------------------------------------* Name: AESi_InitKeysForApp diff --git a/build/libraries/os/common/os_boot.c b/build/libraries/os/common/os_boot.c index ce1c2462..f3a68145 100644 --- a/build/libraries/os/common/os_boot.c +++ b/build/libraries/os/common/os_boot.c @@ -79,7 +79,8 @@ void OS_BootWithRomHeaderFromFIRM( ROM_Header* rom_header ) mem_list[i++] = stack_bottom - code_buf_end; } /* ˆê•”Œ®ƒoƒbƒtƒ@‚̃NƒŠƒA (Œ®ŠÇ—.xlsŽQÆ) */ - // ŠY“––³‚µ + mem_list[i++] = (u32)OSi_GetFromFirmAddr()->aes_key[2]; + mem_list[i++] = ACS_AES_LEN; #endif // SDK_ARM7 mem_list[i++] = NULL; // copy forward diff --git a/build/nandfirm/menu-launcher/ARM7/main.c b/build/nandfirm/menu-launcher/ARM7/main.c index f9ebb98d..13e16368 100644 --- a/build/nandfirm/menu-launcher/ARM7/main.c +++ b/build/nandfirm/menu-launcher/ARM7/main.c @@ -122,6 +122,15 @@ static void PreInit(void) { OS_Terminate(); } + /* + AESŠÖ˜A (NANDˆÃ†‰»‚ÌŒ®•ÏX‚ðŠÜ‚Þ) + */ +#ifndef SDK_FINALROM + if ( !*(u8*)HW_TWL_RED_LAUNCHER_VER ) +#endif + { + AESi_PreInitKeys(); + } /* ƒŠƒZƒbƒgƒpƒ‰ƒ[ƒ^(1ƒoƒCƒg)‚ð‹¤—L—̈æ(1ƒoƒCƒg)‚ɃRƒs[ */ diff --git a/build/nandfirm/sdmc-launcher/ARM7/main.c b/build/nandfirm/sdmc-launcher/ARM7/main.c index ab865092..fe92f161 100644 --- a/build/nandfirm/sdmc-launcher/ARM7/main.c +++ b/build/nandfirm/sdmc-launcher/ARM7/main.c @@ -122,6 +122,15 @@ static void PreInit(void) { OS_Terminate(); } + /* + AESŠÖ˜A (NANDˆÃ†‰»‚ÌŒ®•ÏX‚ðŠÜ‚Þ) + */ +#ifndef SDK_FINALROM + if ( !*(u8*)HW_TWL_RED_LAUNCHER_VER ) +#endif + { + AESi_PreInitKeys(); + } /* ƒŠƒZƒbƒgƒpƒ‰ƒ[ƒ^(1ƒoƒCƒg)‚ð‹¤—L—̈æ(1ƒoƒCƒg)‚ɃRƒs[ */ diff --git a/docs/éµç®¡ç†.xls b/docs/éµç®¡ç†.xls index 642e42d19e56c01cd4db612fff20c213f0f4c3f6..3da5edc6db6347cf95726c695aace19c8a246204 100644 GIT binary patch delta 1120 zcmZwFUq}=|7y$5ZX79hZcinm%)QV_sT%^Ss79>zLQ&s&>vRLLd^a=S&V2K`*(uKQ;w)d> z%d0%VPF@W4)Irx2X89oY@d(cGNw$u4TEl;T7u|dUziRr{j08qJZZGl;0RD_WWYlQI zb&>HT12`UT#E@QtJ;6Bc)@^(dzJh1<0oI2?ujk%Q{HS;N$7)w;(F2i;wAH3`@b01t zSvU^;@ZSDquiDS;1^b!(q<1Liz%gKu03WnatI;!WFWGB0KoB^NG<^!4ItcJK12Ay{ zH=GIaZhvQh*KiR%wC;=Er@Fr(1TpYJBXncDBggiMs~y#0rr}-Za?sxk(0hg^iJ#7B zaJ&uT?g~08I83{h*L#3NJ9ucsxQ|+mMy0wQdfKV>cHS%VKI#=@-Y@e3=zt3{AA}=r zoe=F7iO`EBDqAX;f)uXxkL^rtP4H1B4Y%EeKEh>j^7N#ZfukZekmVI}Ly;Sb+>mlZ zksGvS`5zf{(*NWJY|9O(lpA#VWw}Az3VF3F|2#OxQX)6xRLV?6W-2mM%1lLON|~w1 zOer%JnJHzaDywm2&AF27Wo}TbI5SI;S&Gb(GE0$JQf4VKOUf)oW=WZ)%J#UjnR6sV zefViI4R_oxoh*Ints9UeRGLQR3z;NT8b1t=`soHh1~S4KSz)-DZ^dPboB2+3@;1iu zt)lt-EPGV2*=uYrG}K?C0#y`K6k&=v3Y}t}qV(|=@p_@5DnPxNH`8D09(UtHp(R+1 eU26I&>%>2k{_!5PeBE!w$&uc4pr0y!m!#>Mf<-Qa1K0 zVK1;?@$vj1T)47$77NNOo>VlvuQb^(4yv*L-Zz|lKYmrioj3YX_c%TMI{^G$S!L9y z^3`2ZB) zyvPUPm{TW2tLZvDcu8g31v8Mr(c;pcOy>n3WwLPHndl?jQQRsv)f|lTnbQTuB{w9w z0dBb=uNkeQOq6f#qm?Q>+cQd{<=G^@J)nI*|ANoEO|CCMxyvm}`%WR@hegv^p~IRDb^|48~7Zr+A(a{5nQ)ZK6qWr V+IRS8JKFQ?+Ao8R^WV4p>>oU)u+#tm diff --git a/include/firm/aes/ARM7/aes_init.h b/include/firm/aes/ARM7/aes_init.h index 9924c773..000c2540 100644 --- a/include/firm/aes/ARM7/aes_init.h +++ b/include/firm/aes/ARM7/aes_init.h @@ -27,6 +27,18 @@ extern "C" { /*---------------------------------------------------------------------------* ŠÖ”’è‹` *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------* + Name: AESi_PreInitKeys + + Description: reset IDs preset by bootrom. + you SHOULD NOT touch any ID registers after this call. + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +void AESi_PreInitKeys( void ); + /*---------------------------------------------------------------------------* Name: AESi_InitKeysForApp