第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

(1)Master Link Key Command(没见用过)

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

使用这个命令可以强制使网络中的master设备使用自己的临时link key或者非永久性的link key,临时link key是用来加密广播消息的,非永久性link key是两个设备点对点进行数据交互时用来加密的。

如果网络中的所有slave都支持AES-CCM加密,但是Key_Flag设置的是使用临时key,此时会返回error:Command Disallowed (0x0C);

注意:如果网络中有至少一个设备不支持AES-CCM加密,Controller和Host都支持Secure Connections的设备是收不到加密广播消息的

如果网络中所有设备都支持AES-CCM加密,此时广播数据包是不加密的,所有的设备都可以接收到

参数说明:

Key_Flag(1 Octet):0x00表示使用非永久性link key,0x01表示使用临时link key

举例说明:(暂时没有)

(2)Master Link Key Complete Event(没见用过)

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

这个event表示Master的Link Key已经发生了改变

参数说明:

Status(1 Octet):0x00表示成功,其他值表示失败

Connection_Handle(2 Octet):表示ACL连接

Key_Flag(1 Octet):0x00表示使用非永久性link key,0x01表示使用临时link key

举例说明:(暂时没有)

(3)Read PIN Type Command

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

这个命令可以获取PIN_Type(可变的PIN code或者固定的PIN code)的配置

参数说明:

Status(1 Octet):0x00表示成功,其他值表示失败

PIN_Type(1 Octet):0x00表示可变的PIN code,0x01表示固定的PIN code

举例说明:(暂时没有)

(4)Write PIN Type Command

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

这个命令可以配置PIN Type

参数说明:

PIN_Type(1 Octet):0x00表示可变的PIN code,0x01表示固定的PIN code

返回参数说明:

Status(1 Octet):0x00表示成功,其他值表示失败

举例说明:(暂时没有)

(5)Read Stored Link Key Command

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

这个命令可以获取存储在BR/EDR Controller里面的link key

参数说明:

BD_ADDR(6 Octet):表示要获取那个远端设备对应的link key,如果Read_All_Flag=0x01时,表示获取所有的link key,此时这个地址可以忽略

Read_All_Flag(1 Octet):0x00表示获取BD_ADDR对应的link key,0x01表示获取所有的link key

返回参数说明:

Status(1 Octet):0x00表示成功,其他值表示失败

Max_Num_Keys(2 Octet):BR/EDR Controller里面存储的link key的总数

Num_Keys_Read(2 Octet):从BR/EDR Controller里面获取的link key的数量

注意:这个命令发出后,会返回>=0个Return Link Keys event,之后会返回Command Complete event

举例说明:(暂时没有)

(6)Return Link Keys Event(不懂为什么返回的link key是全0)

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

BR/EDR Controller收到Read_Stored_Link_Key command以后,如果BR/EDR Controller内有存储的link key,则BR/EDR Controller会使用Return Link Keys event向Host发送event中包含link key的数量以及BD_ADDR,但是link key不会返回具体的link key值,而是全0

注意:Read_Stored_Link_Key command以后,BR/EDR Controller可能会发送0个或者多个Return Link Keys event

参数说明:

Num_Keys(1 Octet):表示event中包含link key的数量

BD_ADDR[i](6 * Num_Keys Octet):表示存储的link key对应的远端设备地址

Link_Key[i](16 * Num_Keys Octet):全0

举例说明:(暂时没有)

(7)Write Stored Link Key Command

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

这个命令可以将1个或者多个link key存入BR/EDR Controller(存储数量是有限的,空间不足则不会存储,存储的顺序按照link key数组的顺序,数组开始的link key先存储)

参数说明:

参数说明:

Num_Keys_To_Write(1 Octet):表示想要存储的link key的数量

BD_ADDR[i](6 * Num_Keys Octet):表示存储的link key对应的远端设备地址

Link_Key[i](16 * Num_Keys Octet):表示与BD_ADDR相关的具体的link key值

返回参数说明:

Status(1 Octet):0x00表示成功,其他值表示失败

Num_Keys_Written(1 Octet):表示成功存储的link key的数量

注意:当设置为Secure Connections Only Mode时,不能存储link key

举例说明:(暂时没有)

(8)Delete Stored Link Key Command

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

这个命令可以删除存储在BR/EDR Controller里面的一个或者多个link key

参数说明:

BD_ADDR(6 Octet):表示删除与BD_ADDR相关的link key

Delete_All_Flag(1 Octet): 0x00表示只删除与BD_ADDR相关的link key,0x01表示删除所有的link key

返回参数说明:

Status(1 Octet):0x00表示成功,其他值表示失败

Num_Keys_Deleted(1 Octet):表示删除的link key的数量

举例说明:(暂时没有)

(9)Create New Unit Key Command

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

这个命令会产生一个新的unit key,所有新的连接会使用这个新的unit key,但是在之前已经建立的连接中还是会使用旧的unit key

返回参数说明:

Status(1 Octet):0x00表示成功,其他值表示失败

举例说明:(暂时没有)

(10)Refresh Encryption Key Command

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

Host可以使用这个命令来刷新encryption key,这个command使用时会暂停并重新开始加密

参数说明:

Connection_Handle(2 Octet):表示ACL连接

举例说明:(暂时没有)

(11)Encryption Key Refresh Complete Event

第一部分:HCI协议(八)具体的HCI command和event(16、AUTHENTICATION AND ENCRYPTION 三)

这个event表示Connection_Handle表示的ACL连接上Encryption Key已经刷新

注意:如果是伴随着change connection link key程序刷新link key,则这个event应该在Change Connection Link Key Complete event.之前;

如果是伴随着role switch程序刷新link key,则这个event应该在Role Change event之前

参数说明:

Status(1 Octet):0x00表示成功,其他值表示失败

Connection_Handle(2 Octet):表示ACL连接

举例说明:(暂时没有)

相关文章:

  • 2021-06-07
  • 2021-04-16
  • 2021-08-18
  • 2021-10-12
  • 2021-11-25
  • 2021-10-07
  • 2021-09-29
  • 2021-10-11
猜你喜欢
  • 2022-01-04
  • 2021-04-02
  • 2021-04-21
  • 2021-04-04
  • 2021-11-20
  • 2021-09-19
  • 2021-07-16
相关资源
相似解决方案