Hi Dialog ,
我有两个设备BLE中央和外设由DA14583交换连接数据.I希望实现绑定,因此我在Tutorial_5 BLE_Security_example.pdf中提出的外围方面的更改。但在中央方面,我找不到实施绑定的过程。我也经过SPS_HOST榜样但没有实现。通过RW-BLE-GAP-IS.PDF我知道需要使用命令从主侧发起绑定程序:GAPC_BOND_CMD。我通过GAPC_SECURITY_CMD请求外设的安全性,并成功接收主站的指示GAPC_SECURY_IND .I需要帮助编写一个过程从安全请求中从主设备启动绑定程序。
谢谢,
Regards,
Dhiraj.
设备:
嗨Dhirajp15,
不幸的是,没有一个示例,它将通过中央的安全过程来指导您,但由于文档指示您需要发出GAPC_BOND_CMD以启动该过程,因此您可以立即发送GAPC_BOND_CMDrapc_security_ind被触发。因此,您可以创建一个回调,该回调将发送GAPC_BOND_CMD,就像下面一样:
struct gapc_bond_cmd * msg;
msg =(struct gapc_bond_cmd *)ke_msg_alloc(gapc_bond_cmd,task_gapc,task_app,gapc_bond_cmd);
然后在.app_on_security_req_ind挂钩中附加回调。
Thansk mt_dialog.
嗨mt_dialog,
我正在使用jortworks安全级别与flowning配置绑定:
static const struct security_configuration user_security_configuration = {
.oob = gap_oob_auth_data_not_present,
.key_size = key_len,
.iocap = gap_cap_no_input_no_output,
.auth = GAP_AUTH_REQ_NO_MITM_BOND,
.sec_req = gap_sec1_noauth_pair_enc,
.ikey_dist = gap_kdist_signkey,
.rkey_dist = gap_kdist_enckey,
.tk={
.key = {0x0,0x0,0x0,0x0.0x0.0x0,0x0,0x0.0x0,0x0,0x0,0x0.0x0.0x0,0x0,0.0x0,0x0},
},
.csrk = {
xab。key = {0, 0 xab 0 x45 0 x55 0 x23 0 x01, 0 x0, 0 x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
},
};
我如图所示在umast_catch_rest处理程序cb上实现了uper_catch_rest handler cb中的gapc_bond_cmd。因此,外围设备获取配对请求,它提供了一个配对响应。在中央设备上获取App_On_Pairing_Succeded回调.I在这里接收MSG_PON-> INFO == GAPC_LTK_EXCH上的GAPC_BOND_CMD发送先前收到的长期密钥.Further我收到app_on_encryption_ind回调后跟msg_param->操作== gapc_encrypt和msg_param-> status = 00,指示加密完成,没有错误.is在中央设备上实现绑定的正确方法是有没有更多的命令我缺少?
谢谢 ,
regards,
Dhiraj.
嗨Dhirajp15,
如果我正确理解您描述的序列是什么,当GAPC_BOND_IND附带GAPC_LTK_EXCH时,它意味着设备获取LTK密钥,当您收到该密钥时,您应该存储它,而不是启动GAPC_ENCRYPT_CMD(分布了什么样的键在空中取决于应用程序)。GAPC_ENCRYPT命令是为了在绑定过程结束后加密链路,并且配对已成功,如果您想加密与LTK而不是TK(这是链接的当前加密)加密链接(这是链接的当前加密),然后您可以发送加密命令。例如,您可以在app_on_pairing_succeded中发送encryption命令。
谢谢mt_dialog.
嗨mt_dialog,
谢谢您的帮助。我做了建议的变化,并能够成功完成绑定过程。现在在重新连接时,如果我不想重复判决程序(假设我有绑定数据显示 - LTK,EDIV,RANDNB),则RW_BLE_GAP_IS.PDF建议:
“当接收到安全请求指示时,链接的主机可以决定启动配对或加密
according to its bond data". --page 95.
因此,如果我收到gapc_security_ind,则在主侧,我应该保留是否发布eapc_bond_cmd或gapc_encrypt_cmd(以前的绑定)??
谢谢 ,
regards,
Dhiraj.
嗨Dhirajp15,
由于键合完成,然后断开设备,这意味着两个设备都被绑定并保留其键合数据,因此不需要再次执行键合过程以便重新连接安全性。因此,当设备绑定时,中央应发出ECRYPORTION命令才能加密链接,因此是肯定的主机应检查其绑定是否键入键合命令或加密命令。
谢谢mt_dialog.
嗨mt_dialog,
谢谢您的帮助!
Regards,
Dhiraj.