This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EK-TM4C1294XL:使用预处理密钥时 HMAC-SHA256卡在处理中

Guru**** 1791630 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/570195/ek-tm4c1294xl-hmac-sha256-stuck-in-process-when-using-pre-processed-key

器件型号:EK-TM4C1294XL

您好!

我将测试从简单的 UINT32矢量和固定的512位密钥中发出的 HMAC 计算模块 gerating 哈希的速度。

当我直接使用我拥有的密钥(使用 SHAMD5HMACKeySet)时、一切都正常、并且散列会按应有的方式生成。

问题是当我尝试使用 SHAMD5HMACPPKeyGenerate 来预处理密钥时。 它确实可以将密钥处理到另一个变量中、但当我使用 SHAMD5HMACProcess 函数时、它会卡住。 外设永远不会返回结果。

到目前为止、我一直在使用这样的代码:

SysCtlPeripheralEnable (SYSCTL_Periph_CCM0);
while (!SysCtlPeripheralReady (SYSCTL_Periph_CCM0));

bzero (g_ui32PPHMACKey、64); SHAMD5Reset (SHAMD5_base); SHAMD5ConfigSet (SHAMD5_base、SHAMD5_算法 HMAC_SHA256); SHAMD5HMACPPKeyGenerate (SHAMD5_base、 G_ui32HMACKey、 G_ui32PPHMACKey); SHAMD5HMACPPKeySet (SHAMD5_base、g_ui32PPHMACKey); SHAMD5HMACProcess (SHAMD5_base、password、 16、话题结果);

密钥是一个初始化了16个位置(512位)的 uint32向量、预处理的密钥是一个类似的向量、但在所有位置上初始化为0。 这个在 KeyGenerate 函数之后确实会获得值、但执行会卡在 Process 函数上。

我应该如何使用该函数? 我的目标是使器件更快地工作

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 Leonardo

    请查看 DK-TM4C129x 示例中的 SHA1_HMAC 示例、了解如何预处理密钥并散列数据
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我检查了该示例、只需在每个计算器之前使用"ROM_SHAMD5Reset"即可使我的项目正常运行。
    我发现非常奇怪的是、UDMA 版本比正常版本慢得多。 使用预处理的密钥、我能够在大约400个周期内获得256。 对 UDMA 执行同样的操作、我在2319个周期内得到了结果。

    我认为这是因为对于 uDMA、我始终需要为输入和输出调用 ROM_uDMAChannelTransferSet 和 ROM_uDMAChannelEnable 等几个函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 Leonardo

    是的、没错。 UDMA 需要内务处理功能。 但是、从 DMA 请求被置为有效到 DONE 中断被置为有效、将提供真正的周期计数。