Bluetooth 主机能否通过蓝牙向控制器提供链接密钥?

Bluetooth 主机能否通过蓝牙向控制器提供链接密钥?,bluetooth,bluetooth-lowenergy,Bluetooth,Bluetooth Lowenergy,我想知道主机是否可以提供连接到控制器的链接密钥,以及BR/EDR蓝牙和蓝牙低能量(BLE)。(v4.2) 报告说: 7.1.10链路密钥请求应答命令 Link\u Key\u Request\u Reply命令用于回复链接键 从控制器请求事件,并指定存储的链接密钥 在主机上用作与的连接的链接键 BD\u ADDR指定的其他BR/EDR控制器。链接密钥请求 当BR/EDR控制器需要链接密钥时,将生成事件 连接 来源: 蓝牙核心规范v4.2 >第二卷:核心系统包[BR/EDR控制器卷] >>E部分:

我想知道主机是否可以提供连接到控制器的链接密钥,以及BR/EDR蓝牙和蓝牙低能量(BLE)。(v4.2)

报告说:

7.1.10链路密钥请求应答命令
Link\u Key\u Request\u Reply
命令用于回复链接键 从控制器请求事件,并指定存储的链接密钥 在主机上用作与的连接的链接键
BD\u ADDR
指定的其他BR/EDR控制器。链接密钥请求 当BR/EDR控制器需要链接密钥时,将生成事件 连接

来源:
蓝牙核心规范v4.2
>第二卷:核心系统包[BR/EDR控制器卷]
>>E部分:主机控制器接口功能规范
>>>7.1.10链路密钥请求应答命令

它似乎只适用于BR/EDR(经典蓝牙),而不适用于低能耗。然而,规范编写得不是很好,这可能是因为该部分没有更新以暗示与BLE的兼容性。此外,我不能简单地使用这个命令让主机向控制器发送一个链接键;控制器必须先发送
HCI\u链接\u键\u请求

因此,我的问题是:

  • 我可以让主机为BR/EDR和BLE提供控制器的链接密钥吗

主机无法向控制器提供链接密钥,在身份验证过程中,控制器将生成链接密钥并发送给主机(链接密钥是使用大量参数生成的,请检查BT规范)

您提到的HCI命令用于BR/EDR。这仅用于配对成功后的身份验证。因此,一旦两个设备配对,连接取决于安全模式(假设安全模式4级别4),进行相互身份验证,这涉及控制器向主机请求先前存储在主机中的链接密钥。您提到的HCI命令用于将存储在主机中的此linkkey提供给控制器。如果主机没有linkkey,则主机会发出HCI\u Link\u Key\u Request\u Negative\u Reply,这将导致启动器出现故障,并且密钥或PIN丢失错误代码

如果是HCI,长期密钥请求回复用于相同目的

关于您的问题,即它是否能够提供链接密钥而不被询问,对于BR/EDR,您可以使用HCI_Write_storage_Link_密钥,但这通常不是很有用,因为在关闭蓝牙时,控制器会忘记链接密钥。在LE上,似乎没有等效的HCI接口

Command                       OCF       Command Parameters       Return Parameters
HCI_Link_Key_Request_Reply    0x000B    BD_ADDR, Link_Key        Status, BD_ADDR