你好,
我正在研究心率传感器应用程序,我汇集了一个运行的应用程序。即,我能够使用任何标准的Android BLE应用程序连接和查看HR。
我正在使用基本的开发工具包作为此目的的外设从站。
现在,我想添加一些安全性,以便只有具有PIN的用户只能连接到外围设备。我知道这很容易受到蛮力攻击,但这没关系。
这些是我对同样的变化。
void app_sec_init_func(void)
{
#if(ble_app_sec)
app_sec_env.auth =(gap_auth_req_mitm_bond);
#万一
}
void app_send_pairing_rsp_func(struct gapc_bond_req_ind * param)
{
struct gapc_bond_cfm * cfm = ke_msg_alloc(gapc_bond_cfm,ke_build_id(task_gapc,app_env.conidx),task_app,gapc_bond_cfm);
cfm->请求= gapc_pairing_rsp;
cfm->接受= true;
// OOB信息
cfm-> data.pairing_feat.oob = gap_oob_auth_data_not_present;
//加密密钥大小
cfm-> data.pairing_feat.key_size = key_len;
// IO能力
cfm-> data.pairing_feat.iocap = gap_cap_display_only;
//身份验证要求
cfm-> data.pairing_feat.auth = gap_auth_req_mitm_bond;
//安全要求
cfm-> data.pairing_feat.sec_req = gap_sec1_auth_pair_enc;
//启动器密钥分发
cfm-> data.pairing_feat.ikey_dist = gap_kdist_engkey;
//响应者密钥分布
cfm-> data.pairing_feat.rkey_dist = gap_kdist_enckey;
KE_MSG_SEND(CFM);
}
由于CFM-> Data.pairing_feat.iocap = gap_cap_display_only;,Android设备应该弹出键盘时配对时输入引脚。
收到绑定请求时,应调用app_send_tk_exch_func()将设置静态引脚。
现在,Android当我尝试配对使用Android设备时,Android设备只是说钥匙不匹配没有键盘弹出。此外,我不会为此案例获取GAPC_TK_EXCH请求GAPC_BOND_REQ_IND_HANDLER()。
只要检查到CFM-> Data.pairing_feat.iocap = gap_cap_kb_only时;然后,当配对android设备显示应在外围设备(按预期上输入的随机配对代码时。但是,这不是我需要的。
你能告诉我什么是错的吗?
提前致谢。
你好,
任何有任何信息的人?
问候,
ashwin
嗨Ashwin,其中一支球队将开始为明天看看这个。BR JE_DIALOG.
嗨Ashwin Rao.
如果我正确理解,您想通过使用主机键盘(电话)输入的密码来连接到您的设备。好吧,您可以尝试将主机的IO_Capabils更改为“仅限键盘”以便完成类似的东西。由于设备不会有任何按钮,因此设备的IO功能应该是NoInput / NoOutput,并且PIN号将是固定的。您提到的“显示功能”您不认为将强制Android设备显示键盘。
谢谢mt_dialog.
你好,
谢谢你的回应。
根据
https://developer.bluetooth.org/technologyoverview/pages/le-security.aspx.
我提到的设置是正确的。
在您的帖子中,您提到的“设备的IO功能应该是noinput / nooutput,因为设备不会有任何按钮,并且PIN数将是固定的。”
但根据上面的链接,如果完成,那么只需使用工作身份验证模式,这不是我需要的。
嗨Ashwin Rao.
我要离线寄给你一些东西,请看看,我希望它会帮助你。
谢谢mt_dialog.
我正在阅读这篇文章,寻求帮助/提示我如何能够做到这样的事情:
- “外设”,按一个按钮,然后按下一次2秒,广播并允许从扫描的任何Android设备的连接(寻找我的服务的UUID)。
- 即可建立债券,关闭Braodcasting,现在在未来,只允许该Android设备在没有按钮的情况下重新连接。
- 这似乎非常简单,但我找不到关于如何做到这一点的良好建议。
- 我已经在外设工作中拥有其他一切,只想添加它。
我应该在对话中提到你们的人,如果可能的情况,如果可能的情况下,如果可能的情况,您可能会更有帮助,并且可以在论坛中完全回答问题。我在这里读过的大部分帖子都没有得到答复,最终帖子来自对话主持人,他们说的是“我要脱机送你的东西......”我意识到有时候没有容易的答案对于你们所获得的许多问题,但它让我们遇到了一堆死胡同。
嗨Klim,谢谢你的反馈。我同意离线采取东西不是理想的:有时它是必要的(因为问题的长度/复杂性意味着它不能在这里处理),但总体而言,您的情绪是正确的,非常感谢:在线更好。我将有一个团队展望您的要求,我们会反馈。
谢谢&br je_dialog
谢谢Je_Dialog,我很高兴你没有看到这是一个负面评论,并不意味着。我会密切关注这个帖子,看看你们是否有一些东西会指向正确的方向。
嗨Klim9531,我们最初的想法是:
您是否需要区分Android和IOS设备?
这可以从键盘参考设计(剥离)构建。我们有一个关于我们可以分享的白名单的内部注意事项(这表明如何将设备添加到白名单中,有效地将制作已知连接列表,并且仅连接到白名单的那些)。
BR JE_DIALOG.
嗨je_dialog,
感谢输入,这里有一些澄清:
- 它是否无论客户端设备是否是Android或iOS(我当前拥有完全运行的Android应用程序到与设备接口,我打算很快建立IOS应用程序)。Android应用程序扫描广告设备,如果它找到一个我的名字/服务,我开始数据传输。该设计基于串行端口服务应用程序。
你的想法。在DA14580中获取设备的蓝牙地址并在DA14580中与我的需求有关。这是我想要的序列:
1. DA14580电源打开,从未连接到对等设备(Android或iOS)。
2.用户按DA14580上的按钮(重置白名单,但第一次上电时,此列表)。
3.用户启动Android / iOS应用程序,2.5秒内应用程序开始扫描任何BT设备,找到我的命名服务,并开始双向通信(此部分当前正在工作)。
4. DA14580查询Android / IOS设备并获取BD地址,然后在白名单中存储该地址。
5.通信继续,直到DA14580断电。
6.重新启动DA14580后,它现在只允许与白名单中的设备进行通信。
7.如果再次按下DA14580上的按钮,则清除白名单中的Android / IOS设备,DA14580重复上述#2。
如果您可以发布对话框的内部注意事项的链接 - 如何查询设备,然后将其BD地址添加到白名单 - 然后可以帮助我对此进行排序。
我会等你的回复,同时这样做,看看键盘参考设计。
谢谢你的帮助,klim9531
je_dialog,
这正是我对SPS做的事情。你能评论这是如何解决的?
谢谢,
富有的
嗨理查德,
请检查您以前的帖子,我相信它将涵盖您的问题。
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
谢谢mt_dialog.