CH579 CH573 CH582 蓝牙从机设置白名单
1. 白名单机制
- 白名单(white list)是BLE协议中最简单、直白的一种安全机制。
- 所谓的白名单,就是一组蓝牙地址。
- 通过白名单,可以只允许特定的蓝牙设备(白名单中列出的)扫描(Scan)、连接(connect)我们。
- 也可以只扫描、连接特定的蓝牙设备(白名单中列出的)。
2.2 LE Clear White List Command,将controller中的白名单清空
/*******************************************************************************
 * @fn          LL_ClearWhiteList
 *
 * @brief       Clear white list
 *
 * input parameters
 *
 * @param       None
 *
 * output parameters
 *
 * @param       None.
 *
 * @return      Command Status.
 */
extern bStatus_t LL_ClearWhiteList( void );
该命令的格式为:
| OCF | Command parameters | Return Parameters | 
| 0x0010 | 
 | Status | 
Status,命令执行的结果,0为success。
2.3 LE Add Device To White List Command,将指定的设备添加到白名单
/*******************************************************************************
 * @fn          LL_AddWhiteListDevice
 *
 * @brief       Add a device address into white list ( support 16 MAX )
 *
 * input parameters
 *
 * @param       addrType - Type of device address
 * @param       devAddr  - first address of device address
 *
 * output parameters
 *
 * @param       None.
 *
 * @return      Command Status.
 */
extern bStatus_t LL_AddWhiteListDevice( u8 addrType, u8 *devAddr );
该命令的格式为:
| OCF | Command parameters | Return Parameters | 
| 0x0011 | Address_type(1 byte) | Status | 
Address_type,设备的地址类型[1],0为Public Device Address,1为Random Device Address。
Address,设备的地址。
Status,命令执行的结果,0为success。
2.4 LE Remove Device From White List Command,将指定的设备从白名单中移除的命令
/*******************************************************************************
 * @fn          LL_RemoveWhiteListDevice API
 *
 * @brief       Remove a device address from white list
 *
 * input parameters
 *
 * @param       addrType - Type of device address
 * @param       devAddr  - first address of device address
 *
 * output parameters
 *
 * @param       None.
 *
 * @return      Command Status.
 */
extern bStatus_t LL_RemoveWhiteListDevice( u8 addrType, u8 *devAddr);
该命令的格式为:
| OCF | Command parameters | Return Parameters | 
| 0x0012 | Address_type(1 byte) | Status | 
Address_type,设备的地址类型[1],0为Public Device Address,1为Random Device Address。
Address,设备的地址。
Status,命令执行的结果,0为success。
最后需要说明的是,当controller处于以下三个状态的时候,以上命令除"LE Read Resolving List Size Command"外,均不能执行:
正在advertising;
正在scanning;
正在connecting。
3. 白名单使用策略有关的命令
BLE设备在发起Advertising、Scanning或者Connecting操作的时候,可以通过Set Advertising Parameters、Set Scan Parameters或者LE Create Connection Command,设置Advertising、Scanning或者Connecting的过滤策略(Filter_Policy),具体如下:
3.1 Advertising时的白名单策略
LE Set Advertising Parameters Command的命令格式为:
| OCF | Command parameters | Return Parameters | 
| 0x0006 | … | Status | 
该命令的其它参数请参考[2],Advertising_Filter_Policy的含义如下:
0x00,禁用白名单机制,允许任何设备连接和扫描。
0x01,允许任何设备连接,但只允许白名单中的设备扫描(scan data中有敏感信息?)。
0x02,允许任何设备扫描,但只允许白名单中的设备连接。
0x03,只允许白名单中的设备扫描和连接。
代码中添加白名单,在void HidEmu_Init( ) 设备初始化中
 uint8 mac0[6]={0x9d,0xa4, 0xe3, 0x7a, 0xac, 0x6d};//指定mac地址
  uint8 macType=1;                                //指定地址类型
  LL_AddWhiteListDevice(macType,mac0);            //添加白名单mac
  uint8 filter_policy = GAP_FILTER_POLICY_WHITE_CON;//允许任何设备扫描,但只允许白名单中的设备连接。
  GAPRole_SetParameter( GAPROLE_ADV_FILTER_POLICY, sizeof( uint8 ), &filter_policy );//设置白名单
测试效果,仅白名单的mac地址主机可以搜索连接该从机,其他BLE主机只能扫描,无法连接。
 参数选择还有如下几种可以,默认是不开白名单的
3.2 Scanning时的白名单策略(未写实现实例)
LE Set Scan Parameters Command的命令格式为:
| OCF | Command parameters | Return Parameters | 
| 0x000B | … | Status | 
Scanning_Filter_Policy的含义如下:
0x00,禁用白名单机制,接受所有的广播包(除了那些不是给我的directed advertising packets)。
0x01,只接受在白名单中的那些设备发送的广播包(除了那些不是给我的directed advertising packets)。
0x02,和白名单无关,不再介绍。
0x03,接受如下的广播包:在白名单中的那些设备发送的广播包;广播者地址为resolvable private address的directed advertising packets;给我的给我的directed advertising packets。
注3:Scanning时的白名单策略有点奇怪,既然是主动发起的,要白名单的意义就不大了吧?
3.3 Connecting时的白名单策略(未写实现实例)
LE Create Connection Command的命令格式为:
| OCF | Command parameters | Return Parameters | 
| 0x000D | … | Status | 
Initiator_Filter_Policy的含义如下:
0x00,禁用白名单机制,使用Peer_Address_Type and Peer_Address指定需要连接的设备。
0x01,连接那些在白名单中的设备,不需要提供Peer_Address_Type and Peer_Address参数。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号