工具/软件:
我必须添加一些源代码(用红色标记),然后哈希比较可能是正确的,如果不是哈希比较将是错误的。 我们启用缓存 (CacheP_ENABLE (CacheP_TYPE_ALL);)、然后我们使用 TI Clang v2.1.3.LTS。
#define Cur_Sig ADDR.INFO_BASEADDR 0x300000
define Cur_Sha 2Hash_IFBADDR (BATESO_BASEADDR + Cur_Sig)
UINT8 FOTA_void (Status_Copying_Manage)
{
SHA256_STATE sha2Cur;
静态 SHA256_STATE sha2Backup;
RET = ReadBackupSwAndCalcSHA2 (&sha2Backup);/*使用内核 0 软件执行哈希而不是 HSM 硬件*/
if (ret == E_OK)
{
memcpy (&(sha2Cur.h[0])、(void *)(Cur_Sha 2Hash_IFBADDR|0x60000000)、32);
Data[0]= sha2Backup.h[0]>> 24;
Data[1]= sha2Backup.h[0]>> 16;
Data[2]= sha2Backup.h[0]>> 8;
Data[3]= sha2Backup.h[0]>> 0;
Data[4]= sha2Cure.h[0]>> 24;
Data[5]= sha2Cur.h[0]>> 16;
Data[6]= sha2Cure.h[0]>> 8;
Data[7]= sha2Cur.h[0]>> 0;
RET = Compare_hash_value (sha2Cur、sha2Backup);
if (ret == E_NOT_OK)
{
DCM_FOTA_ErrCodeSet (ERR_CODE_SIGNATION);
}
}
}
UINT8 Compare_hash_value(SHA256_STATE 源、SHA256_STATE 目标)
{
uint8 ret = E_OK;
for (uint8 i = 0;i < 8;i++)
{
if (source.h[i]!= target.h[i])
{
RET = E_NOT_OK;
休息;
}
}
返回 ret;
}