diff --git a/build/libraries/aes/ARM7/aes_init.c b/build/libraries/aes/ARM7/aes_init.c index d6339e28..2c97e03f 100644 --- a/build/libraries/aes/ARM7/aes_init.c +++ b/build/libraries/aes/ARM7/aes_init.c @@ -35,8 +35,6 @@ void AESi_InitKeysForApp( u8 game_code[4] ) reg_AES_AES_ID_A2 = AES_IDS_ID0_C(game_code); reg_AES_AES_ID_A3 = AES_IDS_ID0_D(game_code); - reg_AES_AES_ID_B0 = AES_IDS_ID1_A(game_code); - reg_AES_AES_ID_B1 = AES_IDS_ID1_B(game_code); AES_Unlock(); } @@ -62,53 +60,6 @@ void AESi_InitKeysForHard( u8 fuse[8] ) AES_Unlock(); } -/*---------------------------------------------------------------------------* - Name: AESi_ResetAesKey - - Description: set SEED/KEYs filler data without seed[3] - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void AESi_ResetAesKey( void ) -{ - AES_Lock(); - AES_WaitKey(); - - // set dummy without seed[3] - reg_AES_AES_SEED_A0 = 1; - reg_AES_AES_SEED_A1 = 2; - reg_AES_AES_SEED_A2 = 3; - reg_AES_AES_SEED_B0 = 4; - reg_AES_AES_SEED_B1 = 5; - reg_AES_AES_SEED_B2 = 6; - reg_AES_AES_SEED_C0 = 7; - reg_AES_AES_SEED_C1 = 8; - reg_AES_AES_SEED_C2 = 9; - reg_AES_AES_SEED_D0 = 10; - reg_AES_AES_SEED_D1 = 11; - reg_AES_AES_SEED_D2 = 12; - - reg_AES_AES_KEY_A0 = 1; - reg_AES_AES_KEY_A1 = 2; - reg_AES_AES_KEY_A2 = 3; - reg_AES_AES_KEY_A3 = 3; - reg_AES_AES_KEY_B0 = 4; - reg_AES_AES_KEY_B1 = 5; - reg_AES_AES_KEY_B2 = 6; - reg_AES_AES_KEY_B3 = 6; - reg_AES_AES_KEY_C0 = 7; - reg_AES_AES_KEY_C1 = 8; - reg_AES_AES_KEY_C2 = 9; - reg_AES_AES_KEY_C3 = 9; - reg_AES_AES_KEY_D0 = 10; - reg_AES_AES_KEY_D1 = 11; - reg_AES_AES_KEY_D2 = 12; - reg_AES_AES_KEY_D3 = 12; - AES_Unlock(); -} - /*---------------------------------------------------------------------------* Name: AESi_InitSeedWithRomHeader diff --git a/include/firm/aes/ARM7/aes_ids.h b/include/firm/aes/ARM7/aes_ids.h index 1999eccc..b96caa54 100644 --- a/include/firm/aes/ARM7/aes_ids.h +++ b/include/firm/aes/ARM7/aes_ids.h @@ -20,9 +20,9 @@ #define AES_IDS_ID0_C(c) (((unsigned long)c[0] << 0) | ((unsigned long)c[1] << 8) | ((unsigned long)c[2] << 16) | ((unsigned long)c[3] << 24)) #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)) - +#if 0 // not specialized for application #define AES_IDS_ID1_A(c) (((unsigned long)c[3] << 0) | ((unsigned long)c[1] << 8) | ((unsigned long)c[2] << 16) | ((unsigned long)c[0] << 24)) #define AES_IDS_ID1_B(c) (((unsigned long)c[0] << 0) | ((unsigned long)c[2] << 8) | ((unsigned long)c[1] << 16) | ((unsigned long)c[3] << 24)) - +#endif /* TWL_AES_AES_IDS_H_ */ #endif diff --git a/include/firm/aes/ARM7/aes_init.h b/include/firm/aes/ARM7/aes_init.h index 67402a61..4be73e28 100644 --- a/include/firm/aes/ARM7/aes_init.h +++ b/include/firm/aes/ARM7/aes_init.h @@ -54,13 +54,23 @@ void AESi_InitKeysForHard( u8 fuse[8] ); /*---------------------------------------------------------------------------* Name: AESi_ResetAesKey - Description: set SEED/KEYs by dummy data without seed[3] + Description: set SEED/ID/KEYs filler data without slot-D Arguments: None Returns: None *---------------------------------------------------------------------------*/ -void AESi_ResetAesKey( void ); +static inline void AESi_ResetAesKey( void ) +{ + AES_Lock(); + AES_WaitKey(); + + MI_CpuCopy32( (u32*)AESi_ResetAesKey, (u32*)REG_AES_KEY_A0_ADDR+1, 40 ); + MI_CpuCopy32( (u32*)AESi_ResetAesKey+10, (u32*)REG_AES_KEY_B0_ADDR+1, 40 ); + MI_CpuCopy32( (u32*)AESi_ResetAesKey+20, (u32*)REG_AES_KEY_C0_ADDR+1, 40 ); + + AES_Unlock(); +} /*---------------------------------------------------------------------------* Name: AESi_InitKeysFIRM