mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
AESの鍵を直接利用する場合も鍵Aを使うように変更
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@399 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
09f3649d7a
commit
8f82386277
@ -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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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" */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user