HASH 引擎是一個針對散列數(shù)列算法的運算加速器,用戶可以選擇不同的散列算法計算內(nèi)存中特定數(shù)據(jù)的散列 值。HASH 引擎相比軟件算法速度更快,配置也靈活,用戶也可以通過自定義初始向量,實現(xiàn)多線程HASH 運 算。HASH 引擎支持算法包括
使用 Hash HAL 驅(qū)動程序
Hash可以支持使用輪詢和中斷模式,它們可以調(diào)用不同的HASH接口。
Hash HAL 輪詢使用的示例:
#define SPLIT_THRESHOLD 256
static uint8_t g_temp[BUFFER_SIZE];
for (i = 0; i < length; i += SPLIT_THRESHOLD)
{
int last = (i + SPLIT_THRESHOLD >= length) ? 1 : 0;
if (i > 0)
{
}
HAL_HASH_run(&(g_hash_input[i]), last ? length - i : SPLIT_THRESHOLD, last);
}
Hash HAL 輪詢使用中斷的示例:
void AES_IRQHandler(void)
{
rt_interrupt_enter();
if (hwp_aes_acc->IRQ & HASH_DONE_STAT)
{
rt_sem_release(g_aes_sem);
}
rt_interrupt_leave();
}
....
static uint8_t g_temp[BUFFER_SIZE];
for (i = 0; i < length; i += SPLIT_THRESHOLD)
{
int last = (i + SPLIT_THRESHOLD >= length) ? 1 : 0;
if (i > 0)
{
}
HAL_HASH_run_IT(&(g_hash_input[i]), last ? length - i : SPLIT_THRESHOLD, last);
rt_sem_take(g_aes_sem, RT_TICK_PER_SECOND);
}
....
...