Hi, DIALOG我想实现在蓝牙连接时有个认证身份的机制,避免所有的手机app都能连接我的DA14583,请问有什么机制可以实现?谢谢。
你好
有内置的安全管理机制,允许外部设备配对(pairing,可以进行单次连接)或者绑定(bonding,配对以后记录永久性的密钥),广播config选项里也可以设置针对白名单设备开放扫描或者连接,允许灵活性的身份认证
可以参考SDK里面DA1458x_SDK\5.0.x\projects\target_apps\ble_examples\ble_app_security的工程代码来了解相关功能。需要额外说明请参考软件开发者手册(UM-B-050)的8.38~8.49节里的指示和解说
你好,我使用的5.0.3的SDK 我们没有发现 DA1458x_SDK\5.0.x\projects\target_apps\ble_examples\ble_app_security 的工程啊。我只发现了有这些工程:ble_app_barebone ble_app_peripheral ble_app_profile prox_monitor_ext prox_reporter prox_reporter_ext prox_reporter_ext_spi
烦请下载目前最新release的 SDK5.0.4
你好我已经下了,但是我的项目已经在 5.0.3上完成了,我想在5.0.3上班添加 链接配对,可以吗?有没有例子?你的5.0.4在app_easy_security有比较大的改动直接移到 5.0.3上没编译通过。
这里给你一些操作步骤用于给SDK5.0.3里的ble_app_profile工程添加配对功能,希望对你的研发有帮助:
1. 在da1458x_config_basic.h里, 定义 CFG_APP_SECURITY
(改成 #define CFG_APP_SECURITY)
2. 在user_config.h里找到结构体security_configurationuser_security_configuration,按如下修改:
static const struct security_configuration user_security_configuration = {
.oob = GAP_OOB_AUTH_DATA_NOT_PRESENT,
.key_size = KEY_LEN,
.iocap = GAP_IO_CAP_DISPLAY_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={
.key={0x40,0xE2,0x01,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
},
.csrk={
.key={0xAB,0xAB,0x45,0x55,0x23,0x01,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
};
key的值为hex: 0x01E240 = 123456,这里为了示范使用固定密码来配对,实际使用是随机生成的,看下一步
3. 在 app_default_handlers.c 中将函数default_app_on_tk_exch_nomitm()的头两行conmment掉。这两行用于生成随机的配对码(函数app_sec_gen_tk())。如果有需要也可以不conmment这两行,添加打印输出这个随机码以便在配对时使用
void default_app_on_tk_exch_nomitm(uint8_t connection_idx, struct gapc_bond_req_ind const * param)
{
// uint32_t pin_code = app_sec_gen_tk();
// app_easy_security_set_tk( connection_idx, (uint8_t*) &pin_code, 4 );
app_easy_security_tk_exch( connection_idx);
}
4.在 user_config.h 中将 .security_request_scenario=DEF_SEC_REQ_NEVER
改成
.security_request_scenario=DEF_SEC_REQ_ON_CONNECT
#define EXCLUDE_DLG_SEC (0)
6.
static const struct app_callbacks user_app_callbacks = {
.app_on_connection = default_app_on_connection,
.app_on_disconnect = default_app_on_disconnect,
.app_on_update_params_rejected = NULL,
.app_on_update_params_complete = NULL,
.app_on_set_dev_config_complete = default_app_on_set_dev_config_complete,
.app_on_adv_undirect_complete = default_app_on_adv_undirect_complete,
.app_on_adv_direct_complete = NULL,
.app_on_db_init_complete = default_app_on_db_init_complete,
.app_on_scanning_completed = NULL,
.app_on_adv_report_ind = NULL,
.app_on_pairing_request = default_app_on_pairing_request,
.app_on_tk_exch_nomitm = default_app_on_tk_exch_nomitm,
.app_on_irk_exch = NULL,
.app_on_csrk_exch = default_app_on_csrk_exch,
.app_on_ltk_exch = default_app_on_ltk_exch,
.app_on_pairing_succeded = NULL,
.app_on_encrypt_ind = NULL,
.app_on_mitm_passcode_req = NULL,
.app_on_encrypt_req_ind = default_app_on_encrypt_req_ind,
以上代码修改仅用于测试配对功能,一次只能绑定一台设备且掉电后无法重连(绑定信息存在RAM里),需要绑定多台设备请参考support网站reference design里的keyboard,mouse等支持多设备连接绑定的工程代码。
你好,请问你的网站在什么地方可以提交问题?我怎么都找不到提交问题的入口了。
你好
有内置的安全管理机制,允许外部设备配对(pairing,可以进行单次连接)或者绑定(bonding,配对以后记录永久性的密钥),广播config选项里也可以设置针对白名单设备开放扫描或者连接,允许灵活性的身份认证
可以参考SDK里面DA1458x_SDK\5.0.x\projects\target_apps\ble_examples\ble_app_security的工程代码来了解相关功能。需要额外说明请参考软件开发者手册(UM-B-050)的8.38~8.49节里的指示和解说
你好,
我使用的5.0.3的SDK 我们没有发现 DA1458x_SDK\5.0.x\projects\target_apps\ble_examples\ble_app_security 的工程啊。
我只发现了有这些工程:ble_app_barebone ble_app_peripheral ble_app_profile prox_monitor_ext prox_reporter prox_reporter_ext prox_reporter_ext_spi
烦请下载目前最新release的 SDK5.0.4
你好
我已经下了,但是我的项目已经在 5.0.3上完成了,我想在5.0.3上班添加 链接配对,可以吗?有没有例子?你的5.0.4在app_easy_security有比较大的改动直接移到 5.0.3上没编译通过。
这里给你一些操作步骤用于给SDK5.0.3里的ble_app_profile工程添加配对功能,希望对你的研发有帮助:
1. 在da1458x_config_basic.h里, 定义 CFG_APP_SECURITY
(改成 #define CFG_APP_SECURITY)
2. 在user_config.h里找到结构体security_configurationuser_security_configuration,按如下修改:
static const struct security_configuration user_security_configuration = {
.oob = GAP_OOB_AUTH_DATA_NOT_PRESENT,
.key_size = KEY_LEN,
.iocap = GAP_IO_CAP_DISPLAY_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={
.key={0x40,0xE2,0x01,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
},
.csrk={
.key={0xAB,0xAB,0x45,0x55,0x23,0x01,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
},
};
key的值为hex: 0x01E240 = 123456,这里为了示范使用固定密码来配对,实际使用是随机生成的,看下一步
3. 在 app_default_handlers.c 中将函数default_app_on_tk_exch_nomitm()的头两行conmment掉。这两行用于生成随机的配对码(函数app_sec_gen_tk())。如果有需要也可以不conmment这两行,添加打印输出这个随机码以便在配对时使用
void default_app_on_tk_exch_nomitm(uint8_t connection_idx, struct gapc_bond_req_ind const * param)
{
// uint32_t pin_code = app_sec_gen_tk();
// app_easy_security_set_tk( connection_idx, (uint8_t*) &pin_code, 4 );
app_easy_security_tk_exch( connection_idx);
}
4.在 user_config.h 中将 .security_request_scenario=DEF_SEC_REQ_NEVER
改成
.security_request_scenario=DEF_SEC_REQ_ON_CONNECT
#define EXCLUDE_DLG_SEC (0)
6.
static const struct app_callbacks user_app_callbacks = {
.app_on_connection = default_app_on_connection,
.app_on_disconnect = default_app_on_disconnect,
.app_on_update_params_rejected = NULL,
.app_on_update_params_complete = NULL,
.app_on_set_dev_config_complete = default_app_on_set_dev_config_complete,
.app_on_adv_undirect_complete = default_app_on_adv_undirect_complete,
.app_on_adv_direct_complete = NULL,
.app_on_db_init_complete = default_app_on_db_init_complete,
.app_on_scanning_completed = NULL,
.app_on_adv_report_ind = NULL,
.app_on_pairing_request = default_app_on_pairing_request,
.app_on_tk_exch_nomitm = default_app_on_tk_exch_nomitm,
.app_on_irk_exch = NULL,
.app_on_csrk_exch = default_app_on_csrk_exch,
.app_on_ltk_exch = default_app_on_ltk_exch,
.app_on_pairing_succeded = NULL,
.app_on_encrypt_ind = NULL,
.app_on_mitm_passcode_req = NULL,
.app_on_encrypt_req_ind = default_app_on_encrypt_req_ind,
};
以上代码修改仅用于测试配对功能,一次只能绑定一台设备且掉电后无法重连(绑定信息存在RAM里),需要绑定多台设备请参考support网站reference design里的keyboard,mouse等支持多设备连接绑定的工程代码。
你好,请问你的网站在什么地方可以提交问题?我怎么都找不到提交问题的入口了。