Verifying the scaner's identity

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
9 posts / 0 new
最后一篇
Hamiddhosseini
离线
Last seen:6个月3周前
加入:2020-05-12 12:04
Verifying the scaner's identity

你好呀,

有没有办法检测先前配对的设备?

I'm using thescan_request跟踪器示例和ble_app_securityand I'm able to print out the address of the device that has sent the scan request. However, I want to check this address and know when a device that has been paired and is disconnected, sends a scan request.

有没有办法验证设备是否先前是否配对?

Regards,

汉米德

设备:
PM_Dialog
离线
Last seen:7小时18分钟前
职员
加入:2018-02-08 11:03
嗨哈米德,

嗨哈米德,

请检查SDK的BLE_APP_SECURY示例。该示例使用SPI闪存或EEPROM来存储绑定数据。一旦设备配对,所有配对/绑定信息都存储在非易失性存储器中,因此如果设备先前已配对,则可以检查此处。

Thanks, PM_Dialog

Hamiddhosseini
离线
Last seen:6个月3周前
加入:2020-05-12 12:04
是的,I can see that the

是的,我可以看到该示例存储先前配对设备的数据。但是,我的问题是如何在扫描请求上检查这些数据,在那里我们只有扫描仪的地址?

PM_Dialog
离线
Last seen:7小时18分钟前
职员
加入:2018-02-08 11:03
嗨哈米德,

嗨哈米德,

获取对等设备的BD地址后,您应检查存储到非易失性存储器中的配对信息。你能告诉我你的要求是什么吗?您是否需要阻止从不配对的设备扫描?

Thanks, PM_Dialog

Hamiddhosseini
离线
Last seen:6个月3周前
加入:2020-05-12 12:04
你好呀,

你好呀,

为了提高服务质量,我们希望一旦配对的用户发送扫描请求,我们就想要触发事件。换句话说,我们不想阻止从其他设备扫描,一旦配对设备发送了扫描请求,我们才需要通知。
以下代码是我为此目的使用的是什么,但我不确定这是正确的方法。(特别是遗留配对)

bool user_check_bonding(struct bd_addr peer_addr,uint8_t addr_type){const struct app_sec_bond_data_env_tag * pbd = null;uint8_t bdaddr_type;//检查对等体的BD地址是公共或随机静态bdaddr_type = app_get_address_type(addr_type,peer_addr);如果((bdaddr_type == APP_PUBLIC_ADDR_TYPE)||(bdaddr_type == APP_RANDOM_STATIC_ADDR_TYPE)||(bdaddr_type == APP_ID_ADDR_TYPE)){如果(bdaddr_type == APP_ID_ADDR_TYPE){//搜索DB由对等的BD地址PBD = app_easy_security_bdb_search_entry(SEARCH_BY_ID_TYPE,(空隙*)peer_addr.addr,bd_addr_len);} else {//搜索db by peer的bd地址pbd = app_easy_security_bdb_search_entry(search_by_bda_type,(void *)peer_addr.addr,bd_addr_len);如果在DB(PBD){//存储设备绑定数据到安全环境//接受加密返回true;} //如果在DB else {//拒绝加密中未找到对等体,则断开连接返回false;检查对等体的BD地址是否是可解析的私有地址else others(bdaddr_type == app_random_private_resolv_addr_type){// start bd地址解析过程(!u​​ser_app_easy_security_resolve_bdaddr(peer_addr)){return false;} return true; } // Check if peer's BD address is non-Resolvable Private Address else { // Reject encryption, disconnect return false; } }

Do you think this would cover all the cases of pairing (we might have to change the pairing methods and security level and therefore I want this function to be more generic)?

Regards,

汉米德

Hamiddhosseini
离线
Last seen:6个月3周前
加入:2020-05-12 12:04
好的,现在我能搜索

好的,现在我能搜索设备,但我有一个新问题。如何识别扫描仪的地址类型?

PM_Dialog
离线
Last seen:7小时18分钟前
职员
加入:2018-02-08 11:03
嗨哈米德,

嗨哈米德,

Do you mean how to take the BD address of the peer device? Please see app_get_address_type() API as it returns the type of the BD address.

Thanks, PM_Dialog

Hamiddhosseini
离线
Last seen:6个月3周前
加入:2020-05-12 12:04
是的,我想知道

是的,我想知道扫描仪的地址类型。正如我们之前讨论的那样,我们可以在scan_request_track中拥有扫描仪的地址。但是,我应该如何确定地址类型。

我实际上尝试过使用此API,但我陷入了App_Get_address_type()的输入参数,因为我应该将地址类型传递给此函数。

enum app_addr_types app_get_address_type(uint8_t addr_type,struct bd_addr addr){typedef enum app_addr_types(* app_get_address_type_t)(uint8_t addr_type,struct bd_addr addr);if((addr_type == addr_rpa_public)||(addr_type == addr_rpa_rand)){return app_id_addr_type;} else {app_get_address_type_t f =(app_get_address_type_t)(app_get_address_type_rom);返回f(addr_type,addr);}}

当我想知道地址时,我应该为此地址类型提供什么?

PM_Dialog
离线
Last seen:7小时18分钟前
职员
加入:2018-02-08 11:03
嗨哈米德,

嗨哈米德,

为延迟道歉。中央使用是什么样的BD地址?这取决于中央BD地址。

Thanks, PM_Dialog