10个员额/0个新员额
最后一篇文章
离线
最后一次见到:1个月1周前
加入:2016-06-02 20:58
安全培训05

你好

我目前正在接受您的05安全培训,并且已经按照步骤操作并能够连接到设备。
然而,经过一点测试后,我再也无法与LightBlue连接。我得到一个错误:外围设备在被审问时断开了连接。
然后,我用不同的手机测试连接,并能够正确连接和使用设备。
进一步调查我尝试使用在Xcode上开发的我自己的iPhone应用程序连接到设备,并且能够连接到设备,但是随时会立即断开未知错误。我试过上传不同的项目,我仍然无法与手机连接我正在测试。

有谁能告诉我解决这个问题的方向,或者了解更多关于使用安全性的信息吗?

设备:
MT_对话框
离线
最后一次见到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨,奥,

嗨,奥,

断开连接的原因可能是安全性,在您与设备配对后,如果您再次尝试配对,则断开连接后,设备将拒绝连接,因为它已配对。尝试从手机上解除设备的绑定并再次尝试连接,您还可以捕获断开连接的回调并检查断开连接的原因。考虑到您很快就会断开连接,您正在测试手机的应用程序是否实现了安全性?外围设备将发出安全请求,但主机负责启动配对过程,如果外围设备发出此类请求,而中央设备未回复,则外围设备将自动断开连接。您可以看看智能标记项目,它实现了安全性并处理配对过程检索到的密钥。

谢谢你的对话

谢浩然
离线
最后一次见到:2年12个月前
加入:2016-05-05 16:34
你好,先生,

你好,先生,

我有类似的问题作为AO,在尝试使用训练05中打开安全性之后,如果我关闭安全性,将重新连接。

断开连接的原因是0x16(本地主机的CO_错误\u CO_TERM_),这到底是什么意思?

完全是,我记得在第一次,它是以某种方式成功绑定和工作的,在重置DA14580开发套件后,它被断开。
在我忘记了我手机上的绑定设备(该设备运行的是iOS 9.3.2)后,它仍然无法与网络安全连接。

有什么线索吗?

离线
最后一次见到:1个月1周前
加入:2016-06-02 20:58
贺拉斯

贺拉斯
当我忘了手机上的设备时,我可以用DA14580重新启动。为了使用芯片,每次重新编程时,我总是不得不忘记设备。

谢浩然
离线
最后一次见到:2年12个月前
加入:2016-05-05 16:34
嗨,奥,

嗨,奥,

是的,我有着你的情况,你现在想要彻底解决它。

MT_对话框
离线
最后一次见到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨,霍拉赫,

嗨,霍拉赫,

您获取co_error_co_term_by_local_host的消息是因为设备是默认拒绝连接的。如果您已启用设备中的安全性,并且设备没有绑定数据,则它将接受配对请求和与该设备的联系。如果断开连接,则重新连接过程是不同的。要与绑定设备重新连接,中央应发送加密请求。加密请求的处理程序将从中央检查安全数据,如果数据不匹配,则设备将拒绝连接。您的手机记得连接的绑定数据,但如果您的循环或重新编程580所有绑定数据将丢失,并且加密请求用于重新连接时,580将拒绝它。

您可以在user_callback_config.h文件中的处理程序函数中捕获配对和加密事件(在配对请求消息中应调用默认的_app_on_pairing_request()函数,在断开连接和加密请求消息中应调用默认的_app_on_ecryption_req_ind()函数)顺序重新连接)。您可以使用模板示例来测试这一点,只需在user_config.h文件中做一点小修改,即可使用DEF_SEC_REQ_ON_CONNECT更改.security_request_场景,以请求连接的安全性,这将使您能够使用just works安全连接。

谢谢你的对话

谢浩然
离线
最后一次见到:2年12个月前
加入:2016-05-05 16:34
尊敬的MT,

尊敬的MT,

非常感谢您的回复。

这是我在user_config.h的适应

@@ -47,9 +47,15 @ const static sleep_state_t app_default_sleep_mode = arch_sleep_off;
static const struct security_configuration user_security_configuration = {
.oob = gap_oob_auth_data_not_present,
.key\u size=key\u LEN,
+#如果1
.iocap=间隙、IO、CAP、NO输入、NO输出,
.auth = gap_auth_req_no_mitm_bond,
- .sec_req = gap_no_sec,
+ .sec_req = gap_sec1_noauth_pair_enc,
+#else.
+.iocap=仅限间隙IO CAP KB,
+.auth=间隙认证要求最小保证,
+.sec_req=间隙_SEC1_认证对_ENC,
+#结束
.ikey_dist=GAP_KDIST_SIGNKEY,
.rkey_dist=间隙_KDIST_ENCKEY,
.tk={
@@-215,7+221,7@@static const struct default\u handlers\u configuration user\u default\u hnd\u conf={

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

#endif/\u用户\u配置\u H_

在您的指导下,我捕获了default_app_on_pairing_request()和default_app_on_ecryption_req_ind()函数,
但它只调用default_app_on_encryption_req_ind()。
我想这是因为外设之前已经和手机配对过了,不是吗?

void default_app_on_encrypt_req_ind(uint8_t connection_idx,struct gapc_encrypt_req_ind const * param)
==>
if(app_easy_security_validate_encrypt_req_against_env(connection_idx,param))
==>
BOOL APP_EASY_SECURY_VALIDATE_ENCRYPT_REQ_AGAINST_ENV(UINT8_T CONNECTION_IDX,STRUCT GAPC_ENCRYPT_REQ_IND CONST * PARAM)
{
如果((应用程序集环境[connection\u idx].auth&GAP\u auth\u BOND)!=0)
...
返回(真);
其他的
返回(false);-->变假。
}

connection_idx等于0,app_sec_env[0]用零填充

这是否意味着我必须将绑定信息保存在永久存储中
如第18页培训_05《多设备粘接材料》所述?

所以,以后可以在encrypt_req_ind中检查它,对吗?

谢浩然
离线
最后一次见到:2年12个月前
加入:2016-05-05 16:34
嗨对话支持,

嗨对话支持,

你能帮我回答第7题吗?非常感谢。

MT_对话框
离线
最后一次见到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨霍勒斯,

嗨霍勒斯,

正如我已经allready指出的,如果外围设备是allready绑定的,它将只触发加密请求功能,以检查中央设备用于连接的密钥是否有效。配对完成后,指定连接(connection_idx)的app_sec_env不应为零,但应具有配对过程中定义的密钥。如果设备断电,钥匙将不会保留(app_sec_env将设置为零),因为它们存储在RAM空间中,是的,您应该将它们存储在闪存中并自定义应用程序,以便检查闪存中的钥匙。

谢谢你的对话

谢浩然
离线
最后一次见到:2年12个月前
加入:2016-05-05 16:34
你好,MT,好的,收到了,谢谢!

你好,先生,

好的,明白了,谢谢!

主题锁定