AESの鍵を直接利用する場合も鍵Aを使うように変更

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@399 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2007-12-25 09:35:17 +00:00
parent 09f3649d7a
commit 8f82386277
8 changed files with 30 additions and 45 deletions

View File

@ -114,19 +114,18 @@ void AESi_ResetAesKey( void )
Returns: None Returns: None
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
void AESi_RecvSeed( void ) void AESi_RecvSeed( BOOL developer_encrypt )
{ {
AESKey seed; AESKey seed;
// PXI_RecvDataByFifo( PXI_FIFO_TAG_DATA, &seed, AES_BLOCK_SIZE ); // PXI_RecvDataByFifo( PXI_FIFO_TAG_DATA, &seed, AES_BLOCK_SIZE );
PXI_RecvStream( &seed, AES_BLOCK_SIZE ); PXI_RecvStream( &seed, AES_BLOCK_SIZE );
AESi_WaitKey(); AESi_WaitKey();
if ( developer_encrypt )
{
AESi_SetKeyA(&seed); // Direct
}
else
{
AESi_SetKeySeedA((AESKeySeed*)&seed); // APP AESi_SetKeySeedA((AESKeySeed*)&seed); // APP
//AESi_WaitKey(); }
//AESi_SetKeySeedB((AESKeySeed*)&seed); // APP & HARD
//AESi_WaitKey();
//AESi_SetKeySeedC((AESKeySeed*)&seed); //
//AESi_WaitKey();
//AESi_SetKeySeedD((AESKeySeed*)&seed); // HARD
AESi_WaitKey();
AESi_SetKeyC(&seed); // Direct
} }

View File

@ -379,7 +379,7 @@ BOOL FATFS_LoadHeader( void )
// set id depends on game_code and seed to use (or all?) // set id depends on game_code and seed to use (or all?)
AESi_InitKeysForApp((u8*)rh->s.game_code); AESi_InitKeysForApp((u8*)rh->s.game_code);
AESi_RecvSeed(); AESi_RecvSeed( rh->s.developer_encrypt );
return TRUE; return TRUE;
} }
@ -443,14 +443,7 @@ static u32 FATFSi_SetupAES( u32 offset, u32 size )
size = aes_end - offset; size = aes_end - offset;
} }
AESi_WaitKey(); AESi_WaitKey();
if (rh->s.developer_encrypt)
{
AESi_LoadKey( AES_KEY_SLOT_C );
}
else
{
AESi_LoadKey( AES_KEY_SLOT_A ); AESi_LoadKey( AES_KEY_SLOT_A );
}
FATFS_EnableAES( FATFSi_GetCounter( offset ) ); FATFS_EnableAES( FATFSi_GetCounter( offset ) );
} }
else else

View File

@ -155,14 +155,7 @@ static u32 GetTransferSize( u32 offset, u32 size )
{ {
size = aes_end - offset; size = aes_end - offset;
} }
if (rh->s.developer_encrypt)
{
AESi_LoadKey( AES_KEY_SLOT_C );
}
else
{
AESi_LoadKey( AES_KEY_SLOT_A ); AESi_LoadKey( AES_KEY_SLOT_A );
}
EnableAes( offset ); EnableAes( offset );
} }
else else

View File

@ -33,7 +33,7 @@
PRINT_MEMORY_ADDR SPrintfを行います() PRINT_MEMORY_ADDR SPrintfを行います()
FINALROM版でもコードが残るので注意してください FINALROM版でもコードが残るので注意してください
*/ */
#define PRINT_MEMORY_ADDR 0x02000400 #define PRINT_MEMORY_ADDR 0x02000600
#ifdef PROFILE_ENABLE #ifdef PROFILE_ENABLE
@ -57,9 +57,8 @@ static u8 step = 0x80;
#ifdef PRINT_MEMORY_ADDR #ifdef PRINT_MEMORY_ADDR
static char* debugPtr = (char*)PRINT_MEMORY_ADDR; static char* debugPtr = (char*)PRINT_MEMORY_ADDR;
#undef OS_TPrintf #undef OS_TPrintf
#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) //#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf))
#undef OS_Panic #define OS_TPrintf(...) (debugPtr += STD_TSPrintf(debugPtr, __VA_ARGS__))
#define OS_Panic(...) (OS_TPrintf(__VA_ARGS__), OS_Terminate())
#endif #endif
#define THREAD_PRIO_FATFS 8 #define THREAD_PRIO_FATFS 8
@ -67,6 +66,8 @@ static char* debugPtr = (char*)PRINT_MEMORY_ADDR;
extern void* SDNandContext; /* NAND初期化パラメータ */ extern void* SDNandContext; /* NAND初期化パラメータ */
static ROM_Header* const rh= (ROM_Header*)HW_TWL_ROM_HEADER_BUF;
/*************************************************************** /***************************************************************
PreInit PreInit
@ -216,7 +217,7 @@ SetDebugLED(0x02);
PM_BackLightOn( FALSE ); PM_BackLightOn( FALSE );
AESi_InitKeysFIRM(); AESi_InitKeysFIRM();
AESi_RecvSeed(); AESi_RecvSeed( rh->s.developer_encrypt );
// 8: after AESi_RecvSeed // 8: after AESi_RecvSeed
PUSH_PROFILE(); PUSH_PROFILE();

View File

@ -53,7 +53,7 @@ static SVCSignHeapContext acPool;
PRINT_MEMORY_ADDR SPrintfを行います() PRINT_MEMORY_ADDR SPrintfを行います()
FINALROM版でもコードが残るので注意してください FINALROM版でもコードが残るので注意してください
*/ */
#define PRINT_MEMORY_ADDR 0x02000000 #define PRINT_MEMORY_ADDR 0x02000200
//#ifdef SDK_FINALROM // FINALROMで無効化 //#ifdef SDK_FINALROM // FINALROMで無効化
//#undef PROFILE_ENABLE //#undef PROFILE_ENABLE
@ -71,10 +71,10 @@ u32 pf_cnt = 0;
#ifdef PRINT_MEMORY_ADDR #ifdef PRINT_MEMORY_ADDR
static char* debugPtr = (char*)PRINT_MEMORY_ADDR; static char* debugPtr = (char*)PRINT_MEMORY_ADDR;
#undef OS_TPrintf #undef OS_TPrintf
#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) //#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf))
#undef OS_Panic #define OS_TPrintf(...) (debugPtr += STD_TSPrintf(debugPtr, __VA_ARGS__))
#define OS_Panic(...) (OS_TPrintf(__VA_ARGS__), OS_Terminate())
#endif #endif
/*************************************************************** /***************************************************************
PreInit PreInit

View File

@ -34,7 +34,7 @@
PRINT_MEMORY_ADDR SPrintfを行います() PRINT_MEMORY_ADDR SPrintfを行います()
FINALROM版でもコードが残るので注意してください FINALROM版でもコードが残るので注意してください
*/ */
#define PRINT_MEMORY_ADDR 0x02000400 #define PRINT_MEMORY_ADDR 0x02000600
#ifdef PROFILE_ENABLE #ifdef PROFILE_ENABLE
@ -59,8 +59,6 @@ static u8 step = 0x80;
static char* debugPtr = (char*)PRINT_MEMORY_ADDR; static char* debugPtr = (char*)PRINT_MEMORY_ADDR;
#undef OS_TPrintf #undef OS_TPrintf
#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) #define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf))
#undef OS_Panic
#define OS_Panic(...) (OS_TPrintf(__VA_ARGS__), OS_Terminate())
#endif #endif
#define THREAD_PRIO_FATFS 8 #define THREAD_PRIO_FATFS 8
@ -68,6 +66,8 @@ static char* debugPtr = (char*)PRINT_MEMORY_ADDR;
extern void* SDNandContext; /* NAND初期化パラメータ */ extern void* SDNandContext; /* NAND初期化パラメータ */
static ROM_Header* const rh= (ROM_Header*)HW_TWL_ROM_HEADER_BUF;
/*************************************************************** /***************************************************************
PreInit PreInit
@ -194,7 +194,7 @@ SetDebugLED(0x02);
PM_BackLightOn( FALSE ); PM_BackLightOn( FALSE );
AESi_InitKeysFIRM(); AESi_InitKeysFIRM();
AESi_RecvSeed(); AESi_RecvSeed( rh->s.developer_encrypt );
// 8: after AESi_RecvSeed // 8: after AESi_RecvSeed
PUSH_PROFILE(); PUSH_PROFILE();

View File

@ -54,7 +54,7 @@ static SVCSignHeapContext acPool;
PRINT_MEMORY_ADDR SPrintfを行います() PRINT_MEMORY_ADDR SPrintfを行います()
FINALROM版でもコードが残るので注意してください FINALROM版でもコードが残るので注意してください
*/ */
#define PRINT_MEMORY_ADDR 0x02000000 #define PRINT_MEMORY_ADDR 0x02000200
//#ifdef SDK_FINALROM // FINALROMで無効化 //#ifdef SDK_FINALROM // FINALROMで無効化
//#undef PROFILE_ENABLE //#undef PROFILE_ENABLE
@ -73,9 +73,8 @@ u32 pf_cnt = 0;
static char* debugPtr = (char*)PRINT_MEMORY_ADDR; static char* debugPtr = (char*)PRINT_MEMORY_ADDR;
#undef OS_TPrintf #undef OS_TPrintf
#define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf)) #define OS_TPrintf(...) (debugPtr = (char*)((u32)(debugPtr + STD_TSPrintf(debugPtr, __VA_ARGS__) + 0xf) & ~0xf))
#undef OS_Panic
#define OS_Panic(...) (OS_TPrintf(__VA_ARGS__), OS_Terminate())
#endif #endif
/*************************************************************** /***************************************************************
PreInit PreInit

View File

@ -83,11 +83,11 @@ static inline void AESi_InitKeysFIRM( void )
Description: set SEED/KEY from ARM9 via PXI. Description: set SEED/KEY from ARM9 via PXI.
Arguments: None Arguments: developer_encrypt set TRUE if received key is using as direct key
Returns: None Returns: None
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
void AESi_RecvSeed( void ); void AESi_RecvSeed( BOOL developer_encrypt );
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */