[讨论] 谁用过TI蓝牙协议栈的加密解密函数?

littleshrimp   2015-10-21 10:41 楼主
想使用CC254X的硬件AES加密功能来加密数据,看到有一个函数HCI_LE_EncryptCmd,但不知道怎么用,可以输入key和明文数据,执行完不知道数据输出到什么地方了。
  1. extern hciStatus_t HCI_LE_EncryptCmd( uint8 *key,
  2.                                       uint8 *plainText );


虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复评论 (6)

  1. /*******************************************************************************
  2. * @fn          LL_EXT_Decrypt API
  3. *
  4. * [url=home.php?mod=space&uid=159083]@brief[/url]       This API is called by the HCI to request the LL to decrypt the
  5. *              data in the command using the key given in the command.
  6. *
  7. *              Note: The parameters are byte ordered MSO to LSO.
  8. *
  9. * input parameters
  10. *
  11. * @param       *key           - A 128 bit key to be used to calculate the
  12. *                               session key.
  13. * @param       *encryptedData - A 128 bit block that is encrypted.
  14. *
  15. * output parameters
  16. *
  17. * @param       *plaintextData - A 128 bit block that is to be encrypted.
  18. *
  19. * @param       None.
  20. *
  21. * @return      LL_STATUS_SUCCESS
  22. */
  23. extern llStatus_t LL_EXT_Decrypt( uint8 *key,
  24.                                   uint8 *encryptedData,
  25.                                   uint8 *plaintextData );



  1. /*******************************************************************************
  2. * @fn          LL_Encrypt API
  3. *
  4. * @brief       This API is called by the HCI to request the LL to encrypt the
  5. *              data in the command using the key given in the command.
  6. *
  7. *              Note: The parameters are byte ordered MSO to LSO.
  8. *
  9. * input parameters
  10. *
  11. * @param       *key           - A 128 bit key to be used to calculate the
  12. *                               session key.
  13. * @param       *plaintextData - A 128 bit block that is to be encrypted.
  14. *
  15. * output parameters
  16. *
  17. * @param       *encryptedData - A 128 bit block that is encrypted.
  18. *
  19. * @param       None.
  20. *
  21. * @return      LL_STATUS_SUCCESS
  22. */
  23. extern llStatus_t LL_Encrypt( uint8 *key,
  24.                               uint8 *plaintextData,
  25.                               uint8 *encryptedData );
自己解答
虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2015-12-9 10:23

建议不要使用这个文件里面的加解密API。
试试AES.C里面的。
点赞  2015-12-31 16:58
引用: chuck_pz 发表于 2015-12-31 16:58
建议不要使用这个文件里面的加解密API。
试试AES.C里面的。

你说的是“hal_aes.c”文件吗?
现在这种加解密会有哪些问题?
虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2015-12-31 17:14
引用: littleshrimp 发表于 2015-12-31 17:14
你说的是“hal_aes.c”文件吗?
现在这种加解密会有哪些问题?

我使用的是hal_aes.c里面的加密,不过CCM模式是自己写的,其他模式应该都是可以直接用的。
HCI层的加解密函数目前没有用,不过不建议使用。
点赞  2015-12-31 17:21
引用: littleshrimp 发表于 2015-12-31 17:14
你说的是“hal_aes.c”文件吗?
现在这种加解密会有哪些问题?

看这个API的名字貌似是协议栈调用的,你如果直接使用的话,协议栈调用的时候可以与你调用的时候存在冲突。
点赞  2015-12-31 17:27
引用: chuck_pz 发表于 2015-12-31 17:27
看这个API的名字貌似是协议栈调用的,你如果直接使用的话,协议栈调用的时候可以与你调用的时候存在冲突 ...

的确这个函数同样有其它代码调用,你的意思是他对推荐用户调用?或者协议栈没有对这部份代码做“线程锁”处理?
虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2015-12-31 17:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复