我想熟悉 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。
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.
我单步执行了代码、看到了与您相同的东西。 同样在使用 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