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.

[参考译文] CC1354P10:TFM-AES CBC 无法在 cc1354p10-1 launchpad 板上工作。

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1316988/cc1354p10-tfm-aes-cbc-can-not-work-on-cc1354p10-1-launchpad-board

器件型号:CC1354P10

我想熟悉 TI AES 函数、示例路径为 C:\ti\simplelink_cc13xx_cc26xx_sdk_7_10_01_24\examples\nortos\lp_em_CC1354P10_1\drivers\tfm_aescbc

我使用的 IAR 版本是9.32。 是  LP_EM_CC1354P10_1。

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

    我不确定我是否理解您的电子邮件? 你有疑问吗?

    我导入并下载了代码、没有任何问题:

    Siri

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

    我无法调试代码,它在 power_init 被阻止。 我不知道为什么,我使用的调试器是 jlink

    下面是我使用的硬件。

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

    我单步执行了代码、看到了与您相同的东西。 同样在使用 CCS 进行测试时使用。

    对于 CCS、我遵循自述文件中的指南、然后能够逐步介绍整个代码(README.html (TI.com))

    问题是未提供关于如何在 IAR 中完成此操作的指南。

    我已经联系研发部门、要他们提供这样的指南。

    Br

    Siri

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

    我需要一个 aesccm 例程才能在1354p10-1开发板上运行。 您能帮助提供一个吗?
      AESCCM.h 文件参考(TI.com)中找到了"在阻塞返回模式下使用纯文本 CryptoKey 进行多步 CCM 加密+身份验证#" ,谢谢。

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

     当我在同一位置调试代码块时、我将一个 CCM 示例代码复制到项目"sha2hash_LP_EM_CC1354P10_1_nortos_IAR"。
    我在 systemconfig 中添加 aesccm、并向 encrypt.c 添加示例代码。
    我不知道为什么。
    我添加了一个函数:

    #包含
    #包含

    #define AES_BLOCK_SIZE 16 //字节


    void aesccm_test (void)
    {
    AESCM_Handle 句柄;
    CryptoKey cryptoKey;
    int_fast16_t encryptionResult、decktionResult;
    //下面的测试向量是来自 IETF 的 RFC 3610的数据包向量1。
    uint8_t keyingMaterial[16]={0xC0、0xC1、0xC2、0xC3、0xC4、 0xC5、0xC6、0xC7、
    0xC8、0xC9、0xCA、0xCB、0xCC、 0xCD、0xCE、0xCF
    };
    uint8_t aad[8]={0x00、0x01、0x02、0x03、0x04、 0x05、0x06、0x07};
    uint8_t plain text[23]={0x08、0x09、0x0A、0x0B、0x0C、 0x0D、0x0E、0x0F、
    0x10、0x11、0x12、0x13、0x14、 0x15、0x16、0x17、
    0x18、0x19、0x1A、0x1B、0x1C、 0x1D、0x1E
    };
    uint8_t nonce [13]={0x00、0x00、0x00、0x03、0x02、 0x01、0x00、0xA0、
    0xA1、0xA2、0xA3、0xA4、0xA5
    };
    uint8_t mac[8];
    uint8_t 密文[sizeof (明文)];
    //加密操作后的加密文本应如下所示:
    //{0x58、0x8C、0x97、0x9A、0x61、 0xC6、0x63、0xD2、
    // 0xF0、0x66、0xD0、0xC2、0xC0、 0xF9、0x89、0x80、
    // 0x6D、0x5F、0x6B、0x61、0xDA、 0xC3、0x84}
    句柄= AESCCM_OPEN (0、NULL);
    if (句柄== NULL)
    {
    //处理错误

    CryptoKeyPlaintext_initKey (&cryptoKey、keyingMaterial、sizeof (keyingMaterial));
    encryptionResult = AESCM_setupEncrypt (handle、&cryptoKey、sizeof (aad)、sizeof (明文)、sizeof (mac));
    if (decryptionResult!= AESCM_STATUS_SUCCESS)
    {
    //处理错误

    encryptionResult = AESCM_setNonce (handle、nonce、sizeof (nonce));
    if (encryptionResult!= AESCM_STATUS_SUCCESS)
    {
    //处理错误

    AESCM_SegmentedAADOperation 分段 AADOperation;
    AESCM_SegmentedAADOperation_init (&segmenedAADOperation);
    segmentedAADOperation.aad = aad;
    segmentedAADOperation.aadLength = sizeof (aad);
    encryptionResult = AESCM_addAAD (handle、&segmentedAADOperation);
    if (encryptionResult!= AESCM_STATUS_SUCCESS)
    {
    //处理错误

    AESCM_SegmentedDataOperation segmentedDataOperation;
    AESCM_SegmentedDataOperation_init (&segmenedDataOperation);
    segmentedDataOperation.input =纯文本;
    segmentedDataOperation.output =加密文本;
    //应该传入块大小为多个长度的数据
    //直到传入数据的最后一个段。
    //在这种情况下,输入长度只需要为非零值。
    segmentedDataOperation.inputLength = AES_BLOCK_SIZE;
    encryptionResult = AESCM_addData (handle、&segmentedDataOperation);
    if (encryptionResult!= AESCM_STATUS_SUCCESS)
    {
    //处理错误

    segmentedDataOperation.input =纯文本+ AES_BLOCK_SIZE;
    segmentedDataOperation.output =加密文本+ AES_BLOCK_SIZE;
    segmentedDataOperation.inputLength = sizeof (纯文本)- AES_BLOCK_SIZE;
    encryptionResult = AESCM_addData (handle、&segmentedDataOperation);
    if (encryptionResult!= AESCM_STATUS_SUCCESS)
    {
    //处理错误

    AESCM_SegmentedFinalizeOperation 段已定义 FinalizeOperation;
    AESCM_SegmentedFinalizeOperation_init (&segmentedFinalizeOperation);
    segmentedFinalizeOperation.input =纯文本;
    segmentedFinalizeOperation.output =加密文本;
    //您可以在没有新数据的情况下完成
    segmentedFinalizeOperation.inputLength = 0;
    segmentedFinalizeOperation.mac = mac;
    segmentedFinalizeOperation.macLength = sizeof (mac);
    encryptionResult = AESCM_finalizeEncrypt (handle、&segmentedFinalizeOperation);
    if (encryptionResult!= AESCM_STATUS_SUCCESS)
    {
    //处理错误

    AESCM_CLOSE (句柄);

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

    我将就本线程中有关  tfm_aescbc 示例的原始问题提供反馈。 对于与完全不同的示例相关的新问题、我强烈建议您使用 这些问题打开一个新主题、并相应地命名帖子。

    此外、我了解您已修改 sha2hash.c 文件。 除了在帖子中添加代码外、请附加您修改后的文件、以便我们可以尝试重现您遇到的问题。 通过这种方法、您还可以非常具体地确定代码中的哪一行会出现问题。

    关于 tfm_aescbc、这是研发的答案。

    在 IAR 中、你需要取消选中"Run to main"复选框。

    要 在一个特定的时刻加载额外的安全映像(C:/ti/simplelink_cc13xx_cc26xx_sdk_7_40_00_51_eng/tfm_s/build/cc26x4/production_full/Release/outputs/tfm_s.axf):使用_loadImage 系统宏并使用中描述的方法之一执行它、第423页。

    _loadImage ("C:/ti/simplelink_cc13xx_cc26xx_sdk_7_40_00_51_eng/tfm_s/build/cc26x4/production_full/Release/outputs/tfm_s.axf、0x0、0)

    注意使用正斜杠。

    导致此错误: elf/DWARF 错误:不受支持的.debug_info 格式版本:5

     现在问题似乎是 IAR 不支持安全映像使用的 DWARF 5。  

    研发没有解决这一问题的解决方案、需要进一步调查(如果安全映像可以在没有 DWARF 5的情况下构建。)

    目前建议的情况是、若要调试此示例、您将需要使用 CCS。

    您仍然可以使用 IAR 来构建应用、但调试需要使用 CCS 来完成。

    对于给您带来的不便、我深表歉意。

    Siri