mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ROMヘッダのフラグに応じてSSLクライアント証明書用のAES鍵をスロットAにセットするよう変更。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1821 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
98c93bf1f1
commit
0f29497332
@ -33,6 +33,11 @@ void SYSMi_SetAESKeysForAccessControlCore( ROM_Header *pROMH, u8 *pDst, BOOL *pI
|
|||||||
// static variable-------------------------------------------------------------
|
// static variable-------------------------------------------------------------
|
||||||
// const data------------------------------------------------------------------
|
// const data------------------------------------------------------------------
|
||||||
|
|
||||||
|
static const u8 dev_sslClientCert[] = {
|
||||||
|
0x79, 0xf9, 0x51, 0xbc, 0x3b, 0xb7, 0xe4, 0xca,
|
||||||
|
0x18, 0x8f, 0xaf, 0x91, 0x8d, 0x89, 0xd3, 0x46,
|
||||||
|
};
|
||||||
|
|
||||||
// dev_commonKeyはベタで持っていい。
|
// dev_commonKeyはベタで持っていい。
|
||||||
static const u8 dev_commonKey[] = {
|
static const u8 dev_commonKey[] = {
|
||||||
0xA1, 0x60, 0x4A, 0x6A, 0x71, 0x23, 0xB5, 0x29,
|
0xA1, 0x60, 0x4A, 0x6A, 0x71, 0x23, 0xB5, 0x29,
|
||||||
@ -73,19 +78,21 @@ static const u8 dev_jpegEncodeKeyForNormal[] = {
|
|||||||
|
|
||||||
void SYSMi_SetAESKeysForAccessControl( BOOL isNtrMode, ROM_Header *pROMH )
|
void SYSMi_SetAESKeysForAccessControl( BOOL isNtrMode, ROM_Header *pROMH )
|
||||||
{
|
{
|
||||||
|
BOOL isClearSlotA = TRUE;
|
||||||
BOOL isClearSlotB = TRUE;
|
BOOL isClearSlotB = TRUE;
|
||||||
BOOL isClearSlotC = TRUE;
|
BOOL isClearSlotC = TRUE;
|
||||||
|
|
||||||
// 鍵のセット
|
// 鍵のセット
|
||||||
MI_CpuClearFast( (void *)HW_LAUNCHER_DELIVER_PARAM_BUF, HW_LAUNCHER_DELIVER_PARAM_BUF_SIZE );
|
MI_CpuClearFast( (void *)HW_LAUNCHER_DELIVER_PARAM_BUF, HW_LAUNCHER_DELIVER_PARAM_BUF_SIZE );
|
||||||
if( !isNtrMode ) {
|
if( !isNtrMode ) {
|
||||||
|
SYSMi_SetAESKeysForSSLClientCert( pROMH, &isClearSlotA );
|
||||||
SYSMi_SetAESKeysForSignJPEG( pROMH, &isClearSlotB, &isClearSlotC );
|
SYSMi_SetAESKeysForSignJPEG( pROMH, &isClearSlotB, &isClearSlotC );
|
||||||
SYSMi_SetAESKeysForAccessControlCore( pROMH, (u8 *)HW_LAUNCHER_DELIVER_PARAM_BUF, &isClearSlotB, &isClearSlotC );
|
SYSMi_SetAESKeysForAccessControlCore( pROMH, (u8 *)HW_LAUNCHER_DELIVER_PARAM_BUF, &isClearSlotB, &isClearSlotC );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ブートするアプリに応じて、AESキースロットのクリアを行う。
|
// ブートするアプリに応じて、AESキースロットのクリアを行う。
|
||||||
{
|
{
|
||||||
AESi_ResetAesKeyA();
|
if( isClearSlotA ) AESi_ResetAesKeyA();
|
||||||
if( isClearSlotB ) AESi_ResetAesKeyB();
|
if( isClearSlotB ) AESi_ResetAesKeyB();
|
||||||
if( isClearSlotC ) AESi_ResetAesKeyC();
|
if( isClearSlotC ) AESi_ResetAesKeyC();
|
||||||
|
|
||||||
@ -100,6 +107,24 @@ void SYSMi_SetAESKeysForAccessControl( BOOL isNtrMode, ROM_Header *pROMH )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SYSMi_SetAESKeysForSSLClientCert( ROM_Header *pROMH, BOOL *pIsClearSlotA )
|
||||||
|
{
|
||||||
|
if ( pROMH->s.access_control.hw_aes_slot_A_SSLClientCert == TRUE ) {
|
||||||
|
void *pAESKey = ( SCFG_GetBondingOption() == SCFG_OP_PRODUCT ) ?
|
||||||
|
&( OSi_GetFromFirmAddr()->aes_key[ 3 ] ) : (void *)dev_sslClientCert;
|
||||||
|
|
||||||
|
if( pIsClearSlotA ) {
|
||||||
|
*pIsClearSlotA = FALSE;
|
||||||
|
}
|
||||||
|
// AESスロットのデフォルト値セット
|
||||||
|
AES_Lock();
|
||||||
|
AES_SetKeyA( pAESKey );
|
||||||
|
AES_Unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SYSMi_SetAESKeysForSignJPEG( ROM_Header *pROMH, BOOL *pIsClearSlotB, BOOL *pIsClearSlotC )
|
void SYSMi_SetAESKeysForSignJPEG( ROM_Header *pROMH, BOOL *pIsClearSlotB, BOOL *pIsClearSlotC )
|
||||||
{
|
{
|
||||||
void *pAESKey;
|
void *pAESKey;
|
||||||
|
|||||||
@ -137,6 +137,8 @@ void SYSMi_SendKeysToARM7( void )
|
|||||||
MI_SetWramBank(MI_WRAM_ARM9_ALL);
|
MI_SetWramBank(MI_WRAM_ARM9_ALL);
|
||||||
// DS互換BlowfishテーブルをARM7へ渡す
|
// DS互換BlowfishテーブルをARM7へ渡す
|
||||||
MI_CpuCopyFast( &((OSFromFirm9Buf *)HW_FIRM_FROM_FIRM_BUF)->ds_blowfish, (void *)&GetDeliverBROM9KeyAddr()->ds_blowfish, sizeof(BLOWFISH_CTX) );
|
MI_CpuCopyFast( &((OSFromFirm9Buf *)HW_FIRM_FROM_FIRM_BUF)->ds_blowfish, (void *)&GetDeliverBROM9KeyAddr()->ds_blowfish, sizeof(BLOWFISH_CTX) );
|
||||||
|
// AES鍵0をARM7へ渡す
|
||||||
|
// MI_CpuCopyFast( &((OSFromFirm9Buf *)HW_FIRM_FROM_FIRM_BUF)->aes_key[ 0 ], (void *)&GetDeliverBROM9KeyAddr()->aes_key[ 0 ], AES_KEY_SIZE );
|
||||||
DC_FlushRange( (void *)HW_WRAM_0, sizeof(DeliverBROM9Key) );
|
DC_FlushRange( (void *)HW_WRAM_0, sizeof(DeliverBROM9Key) );
|
||||||
MI_SetWramBank(MI_WRAM_ARM7_ALL);
|
MI_SetWramBank(MI_WRAM_ARM7_ALL);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,6 +76,9 @@ void SYSMi_CheckRTC( void );
|
|||||||
// AES鍵設定
|
// AES鍵設定
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
// SSLクライアント証明書用
|
||||||
|
void SYSMi_SetAESKeysForSSLClientCert( ROM_Header *pROMH, BOOL *pIsClearSlotA );
|
||||||
|
|
||||||
// JPEG署名用(ランチャー、アプリブート共用)
|
// JPEG署名用(ランチャー、アプリブート共用)
|
||||||
void SYSMi_SetAESKeysForSignJPEG( ROM_Header *pROMH, BOOL *pIsClearSlotB, BOOL *pIsClearSlotC );
|
void SYSMi_SetAESKeysForSignJPEG( ROM_Header *pROMH, BOOL *pIsClearSlotB, BOOL *pIsClearSlotC );
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user