Other Parts Discussed in Thread: SHA-256, UNIFLASH, SYSCONFIG
器件型号: CC2745R7-Q1
主题中讨论的其他器件: SHA-256、 UNIFLASH、 SYSCONFIG
您好:
我们在 CC2745R7 上的 PSA 加密库时遇到问题。 我们能够成功初始化 PSA、 但当我们尝试计算 SHA-256 哈希时、该函数返回 0(表示无错误)、但生成的 256 位输出缓冲区完全用零填充。
您能否说明导致此行为的原因? 是否需要任何额外的初始化或配置步骤?
以下是我们代码的相关部分:
// Check PSA crypto status
status = KeyStore_PSA_init();
if(status == PSA_SUCCESS)
{
// PSA initialized
DEBUG(DL_INFO, "PSA crypto initialized");
int_fast16_t hukRet = HSMLPF3_provisionHUK();
if(hukRet == HSMLPF3_STATUS_SUCCESS)
{
DEBUG(DL_INFO, "HSMLPF3_provisionHUK initialized");
}
else
{
DEBUG(DL_ERROR, "HSMLPF3_provisionHUK failed. Status %d", hukRet);
}
bool dmaStatus = HWPAL_DMAResource_Init();
DEBUG(DL_INFO, "HWPAL_DMAResource_Init : status %d", dmaStatus);
uint8_t testData[8] = {0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65};
DEBUG(DL_INFO, "--------------------");
DEBUG(DL_INFO, "testData : %s", convertHex(testData, 8));
size_t hash_length;
static uint8_t hash[32];
memset(hash, 0xcc, 32);
DEBUG(DL_INFO, "hash1 : %s", convertHex(hash, 16));
DEBUG(DL_INFO, "hash2 : %s", convertHex(hash + 16, 16));
status = psa_hash_compute(PSA_ALG_SHA_256, testData, 8, hash, 32, &hash_length);
DEBUG(DL_INFO, "psa_hash_compute : status %d", status);
DEBUG(DL_INFO, "hash_len : %d", hash_length);
DEBUG(DL_INFO, "hash1 : %s", convertHex(hash, 16));
DEBUG(DL_INFO, "hash2 : %s", convertHex(hash + 16, 16));
And here are the logs after running:
0:00:00.037 I PSA crypto initialized
0:00:00.037 I HSMLPF3_provisionHUK initialized
0:00:00.037 I HWPAL_DMAResource_Init : status 1
0:00:02.036 I --------------------
0:00:02.037 I testData : 4869205468657265
0:00:02.037 I hash1 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0:00:02.037 I hash2 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0:00:02.037 I psa_hash_compute : status 0
0:00:02.037 I hash_len : 32
0:00:02.037 I hash1 : 00000000000000000000000000000000
0:00:02.037 I hash2 : 00000000000000000000000000000000
当我们将 keystore PSA_init () 函数更改为 PSA_CRrypto_init () 时,它的工作方式仍然相同。
为了进行测试、我们添加了以下代码以通过 PSA 加密模块生成随机数:
uint8_t randomBuffer[8];
memset(randomBuffer, 0xEE, 8);
status = psa_generate_random(randomBuffer, 8);
DEBUG(DL_INFO, "Random status: %d, %s", status, convertHex(randomBuffer, 8));
此代码在所有初始化后添加。 函数返回 0–成功、但缓冲区不变。 其中没有随机数据。
我还检查了 HSM 是否已加载 UniFlash、显示的是固件版本 v3.1.1。 我不知道有任何其他方法来检查 HSM 是否正确加载。 有什么问题吗? 是否有让 CC2745R7 使用 PSA 加密库的示例或手册?