ZHCAAD3A September 2020 – June 2026 F29H850DM , F29H850TU , F29H859TU-Q1 , F29P329SM-Q1 , F29P589DM-Q1 , F29P589DU-Q1 , TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137 , TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S , TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
hex2000 --cmac 签名流程与直接调用 OpenSSL AES-128-CMAC 命令之间仅存在唯一的行为差异,即围绕 AES 操作的两次 swapwords 变换。在两种情况下,底层密码算法、密钥编排和初始化向量完全相同。表 10-2 总结了两种流程之间的完整对应关系,以供参考。
| 方面 | C2000 | OpenSSL |
|---|---|---|
| 消息预处理 | 在 AES 之前应用 swapwords(masked_binary) | 原始字节流;不应用变换 |
| 签名区域屏蔽 | 字节偏移 0x4–0x13 替换为 0xFF | 调用 OpenSSL 前必须手动应用 |
| 密钥字节顺序 | MSB 在前 (CMACKEY0 || ... || CMACKEY3) | MSB 在前;顺序相同,无需转换 |
| AES-128-CMAC 算法 | NIST SP 800-38B (OMAC1) | NIST SP 800-38B (OMAC1);完全相同 |
| 初始化向量 | 全 0(在 CMAC 标准中隐式定义) | 全 0(在 CMAC 标准中隐式定义) |
| 标签后处理 | 嵌入前应用 swapwords(aes_tag) | 原始 AES 标签输出;必须手动应用 swapwords |
| 输出 | 嵌入了所存储标签的已签名二进制文件 | 16 字节原始 AES 标签;需进一步处理 |
swapwords 变换以 32 位组为单位操作,因此要求身份验证区域长度为 4 字节的倍数。16KB(0x4000 字节)的 C28x 主安全启动区域可满足此要求。当按照 节 7 所述对自定义闪存范围执行扩展身份验证时,起始和结束地址同样必须对齐到 128 位,才能使 CMAC 算法在无填充的情况下正确运行。