DA14581中央安全

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support。我们将在未来几天修复bug /优化搜索和标记。
3个帖子/ 0个新
最后发表
Andrzej里歇尔
离线
最后看到:11个月2周之前
加入:2017-04-21个身子
DA14581中央安全

你好,
我试图实现DA14581作为中心设备与安全连接,有问题。
我的DA中心连接到外围设备,然后请求安全性(我尝试了app_easy_security_request()、app_security_request_op()或default_app_on_connection()),但没有成功。
在我的user_process_catch()(它处理应用程序事件)消息GAPC_CMP_EVT,对于GAPC_SECURITY_REQ操作,我总是得到状态0x42 -(我猜它是GAP_ERR_NOT_SUPPORTED),和安全进程没有启动(没有回调…)。
我测试了我的外围设备(与DA芯片或其他)与其他中央(不是DA芯片)的安全连接成功。
中心项目配置:

#定义CFG_APP_SECURITY

struct security_configuration
.iocap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT,
.oob = GAP_OOB_AUTH_DATA_NOT_PRESENT,
.auth = GAP_AUTH_REQ_NO_MITM_BOND,
.sec_req = GAP_SEC1_NOAUTH_PAIR_ENC,
.key_size = KEY_LEN,
.ikey_dist = GAP_KDIST_ENCKEY |
.rkey_dist = GAP_KDIST_ENCKEY |

struct gapm_configuration
.role = GAP_CENTRAL_MST,
.flags = 0

struct default_handlers_configuration
.security_request_scenario = DEF_SEC_REQ_ON_CONNECT

struct central_configuration
.code = GAPM_CONNECTION_DIRECT,
.addr_src = GAPM_PUBLIC_ADDR,

回调函数配置:
静态const struct app_callbacks
.app_on_connection = user_on_connection,
.app_on_disconnect = user_on_disconnect,
.app_on_update_params_rejected =零,
.app_on_update_params_complete =零,
.app_on_set_dev_config_complete = user_on_set_dev_config_complete,
.app_on_adv_undirect_complete =零,
.app_on_adv_direct_complete =零,
.app_on_adv_nonconn_complete =零,
.app_on_db_init_complete = default_app_on_db_init_complete,
.app_on_scanning_completed = user_on_scanning_completed,
.app_on_adv_report_ind = user_on_adv_report_ind,
.app_on_pairing_request = user_on_pairing_request,
.app_on_tk_exch_nomitm = default_app_on_tk_exch_nomitm,
.app_on_irk_exch =零,
.app_on_csrk_exch = default_app_on_csrk_exch,
.app_on_ltk_exch = default_app_on_ltk_exch,
.app_on_pairing_succeded = user_on_pairing_succeeded,
.app_on_encrypt_ind = user_on_encrypt_ind,
.app_on_mitm_passcode_req = user_on_mitm_passcode_req,
.app_on_encrypt_req_ind = user_on_encrypt_req_ind,
.app_on_security_req_ind = user_on_security_req_ind,
};

有提示吗?

亲切的问候,
Andrzej

设备:
MT_dialog
离线
最后看到:3个月1周前
工作人员
加入:2015-06-08 34
嗨Andrzej里歇尔,

嗨Andrzej里歇尔,

由于您是一个中心,您不能从外设请求安全性。如果外围设备实现了安全,中央将通过以下方式理解它:

  • 当它尝试读、写或订阅一个它的特征时,外围设备将响应一个错误,该错误将表明该特征需要安全性才能被读,然后堆栈将启动配对过程。
  • 外设将表明它在连接时要求安全性(您试图从中央发送的消息)。这个消息通过app_easy_security_request()发送到堆栈,它发送了一个不支持的GAPC_SECURITY_CMD,因为你的设备是作为中央运行的。

所以你必须删除它从连接序列(为了不让GAP_ERROR_NOT_SUPPORTED消息),既然你已经安全机构的回调,堆栈的安全请求从外设将ping应用程序层通过GAPC_SECURITY_IND这意味着外围发送安全请求,之后,中央应该发送一个GAPC_BOND_CMD来初始化配对过程。

由于MT_dialog

Andrzej里歇尔
离线
最后看到:11个月2周之前
加入:2017-04-21个身子
谢谢你的解释

谢谢您的解释,当外设发送安全请求时它工作。