当设备不具有输入/输出能力时,对CyBLE的中央设备和外围设备进行身份认证 – KBA220286 (ZH)

Version: **

问题:当CyBLE的设备不具备输入/输出能力的时候,怎样对中央设备和外围设备进行身份认证?

答案:

考虑下面的应用逻辑。

要求如下:

  • 安全性:通过加密实现配对认证
  • 希望使用固定密码,但是不想显示,因为设备不具有显示功能

假设如下:

  1. 外围设备使用密码 (123456),并且具有显示功能
  2. 中央设备具有键盘功能

实现方法:

外围设备侧:

使用API CyBle_GapFixAuthPassKey()设置密码123456。调用CyBle_GapAuthReq(connHandle.bdHandle, &cyBle_authInfo);初始化身份验证请求或者配对。选择显示功能后,会触发事件CYBLE_EVT_GAP_KEYINFO_EXCHNGE_CMPLT由于不想显示真实的秘钥,不要在协议栈事件处理程序中为此事件添加任何代码。如果认证失败,会触发CYBLE_EVT_GAP_AUTH_FAILED事件。因此,在这个事件中添加一个断开的API(发送断开请求)。

 

中央设备侧:

发送认证请求。由于具有键盘功能,将触发秘钥输入请求。在认证回复中,对已知秘钥 (123456) 进行硬编码。因此,实际上认证是自动处理的。

这时,如果任何中央设备尝试连接,就会显示输入秘钥的提示。如果不显示,则中央设备无法输入秘钥。这时就会触发认证失败事件。