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.

[参考译文] AM263P4:紧急!! 与 AM263P4 的 SDK 中的 HsmClient 函数相关的问题

Guru**** 2815985 points

Other Parts Discussed in Thread: AM263P4

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1623582/am263p4-urgent-issues-related-to-the-hsmclient-function-in-the-sdk-of-am263p4

器件型号: AM263P4

我研究了 HsmClient_getRandomNum AM263P4 SDK (MCU_PLUS_SDK_am263px_11_00_00_19) 中的实现。 从 HSM 接收到数据后、会 CacheP_inv 由于可缓存的属性、使用执行一致性操作。

image.png

CacheP_inv 函数的第二个参数是区域的大小、这对应于需要一致性管理的 RAM。 在中 HsmClient_getRandomNum、对齐通过 GET_CACHE_ALIGNED_SIZE 宏处理。 我的理解是传递给这个宏的参数应该代表需要一致性管理的区域的大小、如中所示 CacheP_inv((void *)HsmClient->RespMsg.args, GET_CACHE_ALIGNED_SIZE(sizeof(RNGReq_t)), CacheP_TYPE_ALL);

但是、根据示例代码、使用了以下行:
CacheP_inv((void *)((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr, GET_CACHE_ALIGNED_SIZE(((uint32_t)*(((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr))), CacheP_TYPE_ALL);
在此语句中、 ((uint32_t)*(((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr)) 检索存储在指针中的值、而不是指针指向的内存区域的大小。 这可能是示例中的错误吗? 我的假设是,它应该写为:
CacheP_inv((void *)((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr, GET_CACHE_ALIGNED_SIZE(sizeof(((uint32_t)*(((RNGReq_t *)HsmClient->RespMsg.args)->resultPtr)))), CacheP_TYPE_ALL);,加上了 sizeof正确的。? 虽然有问题的代码在测试过程中未引起任何问题、但是否存在潜在风险?

image.png

这个问题非常重要和紧迫。 非常感谢您的答复。

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

    这个问题是非常重要和紧迫的!!!专家可能需要紧急看一下。 非常感谢!!

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

    您好、

    很抱歉耽误响应。

    我从我的角度分析了这个问题、这看起来像是一个错误。 感谢您指出这一点。

    正确执行缓存大小的方法应该是 on  

    CacheP_inv (void *)((RNGREQ_t *) HsmClient->RespMsg.args)->resultPtr、 get_cache_aligned_size (((RNGREQ_t *) HsmClient->RespMsg.args)->resultLength) +、CacheP_TYPE_ALL);

    CacheP_inv (void *)((RNGREQ_t *) HsmClient->RespMsg.args)->sweyValue、 get_cache_aligned_size (((RNGREQ_t *) HsmClient->RespMsg.args)->
    幼苗 InDWords * 4) 、CacheP_TYPE_ALL);

    我在内部提出了此错误、这将在下一个版本中得到修复。

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

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

    1.您是否使用与 OOO TIFS SDK 中的 rng 示例相同的配置? 如果是、则 结果缓冲区 (val) 仅在堆栈上分配 32 个字节。 GET_CACHE_ALIGNED_SIZE 将四舍五入至高速缓存行边界。 无论随机字节值位于*resultPtr、缓存失效都会导致无效过少或过大—但由于缓冲区很小且已分配栈、因此无效几个额外的或更少的字节不会导致可见的故障。
    因此,这是不被抓住的。

    2.是的,这个 API 的每一个其他用法都使用 sizeof 或实际大小。

    3.是的。

    谢谢。此致、

    Nikhil Dasan