安全通过培训05

10个帖子/ 0新
最后一篇
离线
最后一次露面:1个月1周前
加入:2016-06-02 20:58
安全通过培训05

你好,

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

有谁可以指出我的方向来解决这个问题或更多地了解有关使用安全性的更多信息?

mt_dialog.
离线
最后一次露面:6个月2个星期前
职员
加入:2015-06-08 11:34
嗨敖,

嗨敖,

断开连接的原因可能是安全性,在与设备配对之后,如果您再次尝试对设备进行断开连接,则自组配对以来将拒绝连接。尝试从手机中取消绑住设备并尝试再次连接,也可以捕捉断开回调并检查断开连接的原因。关于您对ManciDelly进行断开连接的事实,您是否正在测试您的手机实施安全性的应用程序?外围设备将进行安全请求,但是如果外设使此类请求和中央不回复外围设备将自动断开连接,则启动配对过程是担任主权。您可以查看智能标记项目,实现安全性并处理由配对过程中继的键。

谢谢mt_dialog.

Horace Hsieh.
离线
最后一次露面:2年12个月前
加入:2016-05-05 16:34
嗨MT,

嗨MT,

我和Ao有类似的问题,在培训05中,我按照指示尝试打开安全,如果我关闭安全,它会重新连接。

断开原因是0x16(co_error_co_term_by_local_host),这完全是含义吗?

准确的说,我记得,在第一次,它是成功的绑定和工作,不知怎么的,它断开后重置DA14580 Dev Kit。
在我从手机忘记绑定设备之后(使用iOS 9.3.2运行),它仍然无法与安全性连接。

任何线索?

离线
最后一次露面:1个月1周前
加入:2016-06-02 20:58
霍勒斯,

霍勒斯,
当我从手机忘记设备时,我能够使用DA14580绑定。为了与芯片一起使用,我每次重新编程时都不必忘记设备。

Horace Hsieh.
离线
最后一次露面:2年12个月前
加入:2016-05-05 16:34
嗨敖,

嗨敖,

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

mt_dialog.
离线
最后一次露面:6个月2个星期前
职员
加入:2015-06-08 11:34
豪拉,

豪拉,

得到CO_ERROR_CO_TERM_BY_LOCAL_HOST的消息是因为设备显式地拒绝连接。如果您已经在设备中启用了安全性,而该设备没有绑定数据,它将接受配对请求并与该设备绑定。如果断开连接,重新连接的过程是不同的。要重新连接绑定设备,中心应该发送加密请求。加密请求的处理程序将检查来自中央的安全数据,如果数据不匹配,设备将拒绝连接。你的手机会记住你连接的绑定数据,但如果你对580进行电源循环或重新编程,所有的绑定数据都会丢失,当一个重新连接的加密请求到来时,580会拒绝它。

您可以在User_callback_config.h文件中捕获配对和加密事件,在user_callback_config.h文件中(default_app_on_pairing_request()函数应在配对请求消息上调用,并且在verafault_app_on_ecryption_req_ind()函数中应在加密请求消息中调用断开和顺序重新核化)。您可以使用模板示例测试此功能,如user_config.h文件中的小修改,使用def_sec_req_on_connect更改.security_request_scenario才能请求连接的安全性,这将使您能够使用After Works安全连接。

谢谢mt_dialog.

Horace Hsieh.
离线
最后一次露面:2年12个月前
加入:2016-05-05 16:34
亲爱的,

亲爱的,

非常感谢您的回复。

这是我在user_config.h上的修改

@@ 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_size = key_len,
+#IF 1
.iocap = gap_cap_no_input_no_output,
.auth = GAP_AUTH_REQ_NO_MITM_BOND,
- .sec_req = GAP_NO_SEC,
+ .sec_req = GAP_SEC1_NOAUTH_PAIR_ENC,
+ #其他
+ .iocap = gap_cap_kb_only,
+ .auth = gap_auth_req_mitm_bond,
+ .sec_req = gap_sec1_auth_pair_enc,
+ # endif
.ikey_dist = gap_kdist_signkey,
.rkey_dist = gap_kdist_enckey,
.tk = {
@@ -215,7 +221,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()函数,
但是它只调用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_security_validate_encrypt_req_against_env (uint8_t connection_idx, struct gapc_encrypt_req_ind const *param)
{
if(((app_sec_env [connection_idx] .auth&gap_auth_bond)!= 0)
......
返回(真实);
别的
返回(false);- >走假。
}

connection_idx等于0,APP_SEC_ENV [0]填充零

这是否意味着我必须在永久商店中保存绑定信息
正如多个设备键合的Transtract_05材料的第18页中的描述?

那么,稍后,它可以在加密_req_ind中检查,正确?

Horace Hsieh.
离线
最后一次露面:2年12个月前
加入:2016-05-05 16:34
嗨对话框支持,

嗨对话框支持,

你能帮忙回答#7吗?谢谢!

mt_dialog.
离线
最后一次露面:6个月2个星期前
职员
加入:2015-06-08 11:34
嗨,霍勒斯,

嗨,霍勒斯,

正如我已经知道的那样,如果外设绑定,它将仅触发加密请求函数,以检查中央对连接的键是否有效。配对完成后,指定连接(Connection_idx)的app_sec_env不应为零,但应具有在配对过程中定义的键。如果设备失去电源,则不保留键(app_sec_env将设置为零),因为它们存储在RAM空间中,因此您应该将它们存储在闪存中并自定义应用程序以检查键的闪存。

谢谢mt_dialog.

Horace Hsieh.
离线
最后一次露面:2年12个月前
加入:2016-05-05 16:34
嗨,好吧,好吧,得到它,谢谢!

嗨MT,

好的,得到它,谢谢!

主题锁定