我正在寻找如何在 CC32XX 上使用 AES-CCM 加密/解密模式的文档或示例代码。
通过浏览 driverlib 源代码和文档、可以清楚地看到附加数据位于明文之前、但我找不到关于如何处理 nonce 的任何提及。 根据 TRM (swru543a.pdf)、我假设这应该按照 NIST 800-38c 进行格式化。 因此、我按如下方式构建了 B0和 B1、并以明文开头:
- Block0:标志(1字节)、nonce (12字节)、Pad (1字节)、lengthOfClearText (2字节)//总共16字节
- Block1:lengthOfAdditionalData (2字节)、additionalData (13字节)、pad0 (1字节) //总共16字节
加密参数设置如下:
params.AES.keysize = CryptoCC32XX_AES_KEY_SIZE_128位;
params.AES.pkey =服务器 WriteKey;
params.AES.PIV = serverIV;
params.aes.aadParams.input.pKey2 = serverWriteKey;
params.aes.aadParams.input.key2Size = CryptoCC32XX_AES_KEY_SIZE_128bit;
params.aes.aadParams.input.len = AES128_BLOCK_SIZE * 2; // 32字节
CryptoCC32XX_encrypt 返回 CryptoCC32XX_STATUS_SUCCESS、但结果与已知良好的软件实现方式相比不正确。
平台:CC3235MODASF
SDK:4.30.0.6
我们非常感谢您的帮助。