10个帖子/ 0个新帖子
最后发表
ao
离线
最后看到:1个月1个星期前
加入:2016-06-02 20:58
安全培训05

你好,

我目前正在通过您的05安全培训,并遵循了步骤,已经能够连接到设备。
然而,经过一段时间的测试,我不再能够连接到LightBlue。我得到的错误:外设断开时被询问。
然后,我测试了与其他手机的连接,并能够正确连接和使用该设备。
进一步调查,我已经尝试用自己在xcode上开发的iPhone应用程序连接到该设备,并且能够连接到该设备,但随后由于未知错误而立即断开连接。我尝试上传不同的项目,但仍然无法连接到我正在测试的手机。

谁能告诉我如何解决这个问题或者学习更多使用安全系统的方法?

设备:
MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 34
嗨ao,

嗨ao,

断开连接的原因可能是安全,当你与设备配对后,如果你尝试再次配对,设备将拒绝连接,因为它已经配对。尝试解除设备与手机的绑定,并尝试再次连接,您也可以捕捉到断开回拨,并检查断开的原因。关于立即断开连接的事实,您正在测试您的手机的应用程序是否实现了安全性?外围设备会发出安全请求,但启动配对过程是主程序的责任,如果外围设备发出这样的请求,而中心设备没有回应,外围设备就会自动断开连接。您可以查看实现安全性并处理配对过程检索的密钥的Smart Tag项目。

由于MT_dialog

贺拉斯谢长廷
离线
最后看到:2年12个月前
加入:2016-05-05 16:34
嗨太,

嗨太,

我与Ao有类似的问题,在尝试按照培训05中的说明打开安全后,如果我关闭安全,它将重新连接。

断开原因是0x16 (CO_ERROR_CO_TERM_BY_LOCAL_HOST),它的确切含义是什么?

确切地说,我记得,在第一次,它成功地被绑定并工作,不知何故,它在重置DA14580开发工具包后被断开。
在我的手机上忘记绑定设备(运行的是iOS 9.3.2)后,它仍然无法连接到安全。

有线索吗?

ao
离线
最后看到:1个月1个星期前
加入:2016-06-02 20:58
霍勒斯,

霍勒斯,
当我忘记手机上的设备时,我能够重新绑定DA14580。为了与芯片一起工作,我不得不经常忘记设备,每次我重新编程。

贺拉斯谢长廷
离线
最后看到:2年12个月前
加入:2016-05-05 16:34
嗨Ao,

嗨Ao,

是的,我和你有同样的情况,现在想彻底解决它。

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 34
嗨Horach,

嗨Horach,

由于设备明确拒绝连接,因此您收到本地主机发出的CO_ERROR_CO_TERM_消息。如果您在设备中启用了安全性,但设备没有绑定数据,则该设备将接受配对请求并与该设备绑定。如果断开连接,则重新连接程序不同。要重新连接到绑定设备,中央处理器应发送加密请求。加密请求的处理程序将检查来自中心的安全数据,如果数据不匹配,设备将拒绝连接。您的手机会记住连接的连接数据,但如果您关闭电源或重新编程580,则所有连接数据都将丢失,并且当收到重新连接的加密请求时,580将拒绝该数据。

你可以抓住的配对和加密事件处理程序函数在user_callback_config.h文件(default_app_on_pairing_request()函数应该在配对请求消息和default_app_on_ecryption_req_ind调用()函数应该调用的请求消息加密,以防断开顺序reconnetion)。您可以通过使用模板示例进行测试,就像在user_config.h文件中使用DEF_SEC_REQ_ON_CONNECT更改.security_request_scenario以请求连接的安全性一样,这将使您能够使用一个工作安全连接。

由于MT_dialog

贺拉斯谢长廷
离线
最后看到:2年12个月前
加入:2016-05-05 16:34
亲爱的太,

亲爱的太,

非常感谢您的回复。

这是我在user_config.h上的修改

@@-47,9+47,15@@const static sleep\u state\u t app\u default\u sleep\u mode=ARCH\u sleep\u OFF;
静态常量结构安全配置用户安全配置={
.oob=间隙\u oob\u验证\u数据\u不存在,
.key_size = KEY_LEN,
+ #如果1
.iocap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT,
.auth=间隙认证要求无限制债券,
-.sec_req=间隙_否_sec,
+.sec_req=间隙_SEC1_NOAUTH_PAIR_ENC,
+#否则
+ .iocap = GAP_IO_CAP_KB_ONLY,
+ .auth = GAP_AUTH_REQ_MITM_BOND,
+ .sec_req = GAP_SEC1_AUTH_PAIR_ENC,
+#恩迪夫
.ikey_dist = GAP_KDIST_SIGNKEY,
.rkey_dist = GAP_KDIST_ENCKEY,
.tk = {
@@ - 21,7 + 22,7 @@ static const struct default_handlers_configuration user_default_hnd_conf= {

//配置默认处理程序的安全启动操作
//如果启用了安全性(CFG_APP_SECURITY)
- .security_request_scenario = DEF_SEC_REQ_NEVER
+ .security_request_scenario = DEF_SEC_REQ_ON_CONNECT
};

# endif / / _USER_CONFIG_H_

按照您的指导,我捕获了default_app_on_pairing_request()和default_app_on_ecryption_req_ind()函数,
但它只调用了默认的\u-app\u-on\u-encryption\u-req\u-ind()。
我想这是因为外设以前和手机配对过,不是吗?

在加密请求索引上无效默认应用(uint8连接idx,结构gapc加密请求索引常量*参数)
= = >
如果(应用程序轻松安全验证加密请求针对环境(连接idx,参数))
= = >
bool应用程序轻松安全验证加密请求(uint8连接idx,结构gapc加密请求索引常量*参数)

如果(((app_sec_env [connection_idx]。& GAP_AUTH_BOND) != 0)
...
返回(真正的);
其他的
返回(假);——>假。

Connection_idx = 0, app_sec_env[0]用0填充

这是否意味着我必须将绑定信息保存在永久存储中
如第18页training_05 material for multiple device bonding?

因此,稍后,可以在encrypt_req_ind中检查它,对吗?

贺拉斯谢长廷
离线
最后看到:2年12个月前
加入:2016-05-05 16:34
嗨,对话支持,

嗨,对话支持,

你能帮忙回答第7个问题吗?谢谢你!

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 34
嗨,霍勒斯,

嗨,霍勒斯,

正如我已经指出的,如果外设已经绑定,它将只触发加密请求函数,以检查中央为连接所拥有的密钥是否有效。配对完成后,指定连接(connection_idx)的app_sec_env不应该为零,而是应该具有配对过程中定义的键。如果设备断电,密钥不会被保留(app_sec_env将被设置为0),因为它们存储在RAM空间中,是的,你应该将它们存储在flash中,并自定义应用程序,以便检查flash中的密钥。

由于MT_dialog

贺拉斯谢长廷
离线
最后看到:2年12个月前
加入:2016-05-05 16:34
嗨,MT,好的,知道了,谢谢!

嗨太,

好的,知道了,谢谢!

主题锁定