mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
BondingOptionがARM9/ARM7の場合、署名チェックが失敗しても処理を続行するように変更。(TWL無線ファームウェア開発用)
acsignのテストコード削除。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@699 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
3d1a9325b4
commit
5955f2c920
@ -32,7 +32,6 @@
|
||||
|
||||
/* Index of public key for WLAN firm */
|
||||
#define WLANFIRM_PUBKEY_INDEX 1
|
||||
#define USE_ACSIGN 0 /* for experimental purpose */
|
||||
#define SIGN_LENGTH 128
|
||||
|
||||
#define FWBUFFER_SIZE 0x40000
|
||||
@ -48,6 +47,11 @@ static void nwmCallback(void* arg);
|
||||
static s32 readFirmwareBinary(u8 *buffer, s32 bufSize);
|
||||
static BOOL verifyWlanfirmSignature(u8* buffer, u32 length);
|
||||
|
||||
static inline u16 SCFG_GetBondingOption(void)
|
||||
{
|
||||
return (u16)(*(u8*)(HW_SYS_CONF_BUF+HWi_WSYS08_OFFSET) & HWi_WSYS08_OP_OPT_MASK);
|
||||
}
|
||||
|
||||
|
||||
void nwmCallback(void* arg)
|
||||
{
|
||||
@ -196,24 +200,23 @@ BOOL verifyWlanfirmSignature(u8* buffer, u32 length)
|
||||
OS_TPrintf("\n");
|
||||
|
||||
/* decrypt according to RSA security */
|
||||
#if ( USE_ACSIGN == 1)
|
||||
ACSign_SetAllocFunc( SYSM_Alloc, SYSM_Free );
|
||||
#else
|
||||
signHeap = SYSM_Alloc( SIGNHEAP_SIZE );
|
||||
SVC_InitSignHeap( &rctx, signHeap, SIGNHEAP_SIZE);
|
||||
#endif
|
||||
|
||||
MI_CpuClear8( signDigest, 0x80 );
|
||||
|
||||
#if ( USE_ACSIGN == 1)
|
||||
ACSign_Decrypto(signDigest, (void*)pSign, (void*)pPubkey);
|
||||
#else
|
||||
if (FALSE == SVC_DecryptSign( &rctx, signDigest, (const void*)pSign, (const void*)pPubkey ))
|
||||
{
|
||||
SYSM_Free(signHeap);
|
||||
return FALSE;
|
||||
OS_TPrintf("Wlan Firmware authentication has failed.\n");
|
||||
/* continue verifying process even though decryption fails
|
||||
in the case of bonding option = 0x01 (support ARM9/ARM7) */
|
||||
if (!( HWi_WSYS08_OP_OP0_MASK == SCFG_GetBondingOption() ))
|
||||
{
|
||||
SYSM_Free(signHeap);
|
||||
return FALSE;
|
||||
}
|
||||
OS_TPrintf("But installation continues.\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
SYSM_Free(signHeap);
|
||||
|
||||
@ -224,10 +227,17 @@ BOOL verifyWlanfirmSignature(u8* buffer, u32 length)
|
||||
}
|
||||
OS_TPrintf("\n");
|
||||
|
||||
/* verify digest */
|
||||
if (FALSE == SVC_CompareSHA1( (const void*)txtDigest, (const void*)signDigest ))
|
||||
/*
|
||||
skip comparing SHA1 digests in the case of bonding option = 0x01 (support ARM9/ARM7)
|
||||
this restriction is for debugging TWL wireless firmware.
|
||||
*/
|
||||
if (!( HWi_WSYS08_OP_OP0_MASK == SCFG_GetBondingOption() ))
|
||||
{
|
||||
return FALSE;
|
||||
/* verify digest */
|
||||
if (FALSE == SVC_CompareSHA1( (const void*)txtDigest, (const void*)signDigest ))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
#if (MEASURE_VERIFY_SIGN_TIME == 1)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user