es-sdk-20080801_rc1対応

HWSecureInfoがない場合対応

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2106 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2008-08-05 09:28:41 +00:00
parent 414a3e813f
commit b364e3ab03
4 changed files with 45 additions and 24 deletions

View File

@ -226,11 +226,12 @@ SDK_WEAK_SYMBOL AESResult SEA_Decrypt(const void* src, u32 srcSize, void* dst)
(void)dst;
return AES_RESULT_SUCCESS;
}
#define SEA_ADDR_WRAM_1 ((u32)0x03004000u)
#define CRYPTO_BUFFER_ADDR 0x1ffb000
#define CRYPTO_BUFFER_SIZE 0x1000
u32 SEA_GetCryptoBufferAddr(void);
SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferAddr(void) __attribute__((never_inline)) { return SEA_ADDR_WRAM_1; }
SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferAddr(void) __attribute__((never_inline)) { return HW_FIRM_ES_BUF; }
u32 SEA_GetCryptoBufferSize(void);
SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferSize(void) __attribute__((never_inline)) { return HW_WRAM_1_SIZE; }
SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferSize(void) __attribute__((never_inline)) { return HW_FIRM_ES_BUF_SIZE; }
/*---------------------------------------------------------------------------*
Name: FS_ResolveSrl
@ -279,7 +280,7 @@ int FS_ResolveSrlList( const OSTitleId* titleIdList, u32 nums )
if ( !titleIdList || !nums || ES_ERR_OK != ES_InitLib() )
{
return FALSE;
}
}OS_TPrintf("InitLib\n");
for ( i = 0; i < nums; i++ )
{
#ifdef PROFILE_ES

View File

@ -35,13 +35,6 @@ static const u8 rsa_key_launcher[128] =
};
#endif
#define RSA_HEAP_SIZE (4*1024) // RSA用ヒープサイズ
#define CRYPTO_HEAP_SIZE (11*1024) // CRYPTO用ヒープサイズ
#define HEAP_SIZE (RSA_HEAP_SIZE > CRYPTO_HEAP_SIZE ? RSA_HEAP_SIZE : CRYPTO_HEAP_SIZE)
static u8 heap[HEAP_SIZE] ATTRIBUTE_ALIGN(32);
static SVCSignHeapContext acPool;
#define MENU_TITLE_ID_HI 0x00030017ULL
@ -129,6 +122,29 @@ static void PostInit(void)
SRLを解決する
***************************************************************/
//#define DEBUG_CRYPTO_ALLOCATOR
#ifdef DEBUG_CRYPTO_ALLOCATOR
#include <nitro/crypto.h>
static int allocated=0;
static void* myAlloc(size_t size)
{
void* ptr = OS_Alloc(size);
if (ptr)
{
OS_TPrintf("Alloc [%d] %d bytes.\n", ++allocated, size);
}
else
{
OS_TPrintf("Failed to allocate %d bytes.\n", size);
}
return ptr;
}
static void myFree(void* ptr)
{
OS_TPrintf("Free [%d]\n", --allocated);
OS_Free(ptr);
}
#endif
static BOOL TryResolveSrl(void)
{
OSTitleId titleIdList[] =
@ -139,8 +155,8 @@ static BOOL TryResolveSrl(void)
int num;
// CRYPTO用ヒープ設定 (ESライブラリしか使わないはず)
void* lo = OS_InitAlloc( OS_ARENA_MAIN, heap, heap + CRYPTO_HEAP_SIZE, 1);
void* hi = heap + CRYPTO_HEAP_SIZE;
void* lo = OS_InitAlloc( OS_ARENA_MAIN, (void*)HW_FIRM_RSA_BUF, (void*)HW_FIRM_RSA_BUF_END, 1);
void* hi = (void*)HW_FIRM_RSA_BUF_END;
OSHeapHandle hh = OS_CreateHeap( OS_ARENA_MAIN, lo, hi );
if ( hh < 0 )
{
@ -149,6 +165,10 @@ static BOOL TryResolveSrl(void)
}
OS_SetCurrentHeap( OS_ARENA_MAIN, hh );
#ifdef DEBUG_CRYPTO_ALLOCATOR
CRYPTO_SetAllocator(myAlloc, myFree);
#endif
if ( !LCFG_ReadHWSecureInfo() )
{
OS_TPrintf("Failed to load HWSecureInfo.\n");
@ -314,7 +334,7 @@ void TwlMain( void )
/* ES (CRYPTO) ライブラリはここまで */
/* SVN_RSA はここから*/
// RSA用ヒープ設定
SVC_InitSignHeap( &acPool, heap, RSA_HEAP_SIZE );
SVC_InitSignHeap( &acPool, (void*)HW_FIRM_RSA_BUF, HW_FIRM_RSA_BUF_SIZE );
if ( !FS_LoadHeader( &acPool, NULL, NULL, RSA_KEY_ADDR ) || !CheckHeader() )
{

View File

@ -21,11 +21,6 @@
extern "C" {
#endif
//------------------------------------- FIRM
#define HW_FIRM HW_WRAM
#define HW_FIRM_END (HW_FIRM + HW_FIRM_SIZE)
#define HW_FIRM_SIZE (HW_WRAM_0_SIZE + HW_WRAM_1_SIZE + HW_WRAM_A_SIZE_MAX + HW_WRAM_B_SIZE_MAX)
//------------------------------------- FIRM_SVC_STACK
#define HW_FIRM_SVC_STACK (HW_FIRM_SVC_STACK_END-HW_FIRM_SVC_STACK_SIZE)
#define HW_FIRM_SVC_STACK_END (HW_WRAM_AREA_END - HW_PRV_WRAM_SYSRV_SIZE)

View File

@ -21,17 +21,22 @@
extern "C" {
#endif
//------------------------------------- FIRM
#define HW_FIRM HW_WRAM_EX
#define HW_FIRM_END (HW_FIRM + HW_FIRM_SIZE)
#define HW_FIRM_SIZE HW_WRAM_C_SIZE_MAX
//------------------------------------- FIRM_RESET_BUF
#define HW_FIRM_RESET_BUF HW_MAIN_MEM
#define HW_FIRM_RESET_BUF_END (HW_FIRM_RESET_BUF + HW_FIRM_RESET_BUF_SIZE)
//#define HW_FIRM_RESET_BUF_SIZE 0x400 // 12KB
#define HW_FIRM_RESET_BUF_SIZE 0x800000 // 8MB
//------------------------------------- FIRM_RSA_BUF
#define HW_FIRM_RSA_BUF (HW_FIRM_RSA_BUF_END - HW_FIRM_RSA_BUF_SIZE)
#define HW_FIRM_RSA_BUF_END HW_FIRM_ES_BUF
#define HW_FIRM_RSA_BUF_SIZE 0x3000 // 12KB
//------------------------------------- FIRM_ES_BUF
#define HW_FIRM_ES_BUF (HW_FIRM_ES_BUF_END - HW_FIRM_ES_BUF_SIZE)
#define HW_FIRM_ES_BUF_END HW_FIRM_FROM_BROM_BUF
#define HW_FIRM_ES_BUF_SIZE 0x1000 // 4KB
//------------------------------------- FIRM_FROM_BROM_BUF
#define HW_FIRM_FROM_BROM_BUF (HW_FIRM_FROM_BROM_BUF_END - HW_FIRM_FROM_BROM_BUF_SIZE)
#define HW_FIRM_FROM_BROM_BUF_END (HW_ITCM_END - 0x1000) // END - 4KB