PHY6212增加配对绑定功能【源码示例】

本文介绍了蓝牙设备中配对和绑定的重要性和工作原理,以PHY6212为例阐述如何设置安全参数。通过调整IO能力、配对模式、MITM保护和绑定功能,增强BLE蓝牙的数据安全性。在初始化函数中配置这些参数,例如设置不同的IO Capabilities、PIN码、配对模式等,可以实现更安全的连接。移植示例代码到wrist_aptm工程中,以确保蓝牙设备在连接时启用安全配对和绑定流程。
摘要由CSDN通过智能技术生成
摘要

在BLE蓝牙设计中很多时候属于直接连接后使用某个服务直接传输数据;该模式优点是连接方便,缺点是数据传输容易被监控,造成通讯数据泄露的风险。故,为了更加安全的数据通信,需要使用配对和绑定的机制来实现。配对和绑定过程刚开始会触发连接,连接后进入配对流程。

PHY6212中可以参考HIDKeyboard例程实现,本文简述修改某些关键参数实现绑定中相关模式的设置;


内容

初始化函数中图示红色框中是绑定相关配置参数

请添加图片描述

参数设置说明:

  • ioCap:表示蓝牙设备有哪些输入输出资源,据此选择合适的密码验证方式,5种取值情况,映射出3种密码验证模式,以下说明默认主机具备输入输出功能(有键盘和显示屏);
    1. GAPBOND_IO_CAP_DISPLAY_ONLY:只能显示,此处需要显示配对密码,以便主机输入密码可以连接;
    2. GAPBOND_IO_CAP_DISPLAY_YES_NO:可以显示,并且可以选择“是/否”;
    3. GAPBOND_IO_CAP_KEYBOARD_ONLY:仅有键盘,配对时需要写入主机显示的PIN码;
    4. GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT:无键盘和显示,justwork模式,主机可以直连;也可以使用静态密码方式,提高加密等级;
    5. GAPBOND_IO_CAP_KEYBOARD_DISPLAY:有键盘和显示能力,均可以发起配对连接,显示一致的PIN码后输入确定连接;
  • passKey:PIN码,取值范围:0-999999,配对密码,该例程默认的是静态模式;
  • pairMode:
    1. GAPBOND_PAIRING_MODE_NO_PAIRING:不允许配对;
    2. GAPBOND_PAIRING_MODE_WAIT_FOR_REQ:等待请求配对;
    3. GAPBOND_PAIRING_MODE_INITIATE:不等待,直接发起配对请求;
  • mitm:man in the middle,中间人攻击。意思是防止中介接入监听和篡改信息,如果要让通信具有MITM保户,不能使用justwork模式;
  • bonding:使能绑定功能,是能后会记录配对信息,下次再配对时不用验证过程;

了解上述参数功能后移植就很方便了;


移植

移植工程为wrist_aptm;

  1. 打开OSAL_wrist.c文件,osalInitTasks()中添加 GAPBondMgr_Init(taskID++);tasksArr[]中添加GAPBondMgr_ProcessEvent
    请添加图片描述请添加图片描述

  2. 打开app_wrist.c文件,appWristInit( uint8 task_id )中添加以下代码即可;

    // Setup the GAP Bond Manager
      {
    // Default passcode
    #define DEFAULT_PASSCODE                      0
    
    // Default GAP pairing mode
    //#define DEFAULT_PAIRING_MODE                  GAPBOND_PAIRING_MODE_INITIATE
    #define DEFAULT_PAIRING_MODE                  GAPBOND_PAIRING_MODE_WAIT_FOR_REQ
    
    // Default MITM mode (TRUE to require passcode or OOB when pairing)
    #define DEFAULT_MITM_MODE                     FALSE
    
    // Default bonding mode, TRUE to bond
    #define DEFAULT_BONDING_MODE                  TRUE
    
    // Default GAP bonding I/O capabilities
    #define DEFAULT_IO_CAPABILITIES               GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT
    	uint32 passkey = DEFAULT_PASSCODE;
        uint8 pairMode = DEFAULT_PAIRING_MODE;
        uint8 mitm = DEFAULT_MITM_MODE;
        uint8 ioCap = DEFAULT_IO_CAPABILITIES;
        uint8 bonding = DEFAULT_BONDING_MODE;
        GAPBondMgr_SetParameter( GAPBOND_DEFAULT_PASSCODE, sizeof( uint32 ), &passkey );
        GAPBondMgr_SetParameter( GAPBOND_PAIRING_MODE, sizeof( uint8 ), &pairMode );
        GAPBondMgr_SetParameter( GAPBOND_MITM_PROTECTION, sizeof( uint8 ), &mitm );
        GAPBondMgr_SetParameter( GAPBOND_IO_CAPABILITIES, sizeof( uint8 ), &ioCap );
        GAPBondMgr_SetParameter( GAPBOND_BONDING_ENABLED, sizeof( uint8 ), &bonding );
      }
    
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值