天天看点

SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明

SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机、32位ARM Cortex-M0处理器、128kB Flash存储器、以及丰富的数字接口。SYD8801片上集成了Balun无需阻抗匹配网络、高效率DCDC降压转换器,适合用于可穿戴、物联网设备等。具体可咨询:http://www.sydtek.com/

SYD8801密码加密配对

    SYD8801作为从机,按照规范说明可发起SecurityReq,然后主机将进入配对流程。

    SecurityReq函数定义如下:

    uint8_t SecurityReq(uint8_t flag, uint8_t mitm);

    其中flag和mitm属于规范中的内容,如下说明:

SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明

     这些都是协议栈的内容,一般不用关心,只要记得传入1,0即可。

    此篇博客是针对密码加密的情况,所以在配对过程中协议栈会上报一个事件来获取密码:

SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明

     这里设置密码为123456!

     加密成功后会进入上图的“else if(p_evt->evt_code == GAP_EVT_ENC_KEY)”分支!

如下为安卓手机的测试流程截图(注意这里有两次配对流程,第一次确认配对,第二次输入密码):

SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明

下面是IOS的配对流程:

SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明
SYD8801密码加密配对【安全参数的设置说明】安全参数的设置说明

这里上测试源代码:

http://download.csdn.net/download/chengdong1314/10237965

安全参数的设置说明

在ble_init协议栈初始化函数中会调用SetSecParams函数初始化安全参数,比如如下代码:

   struct smp_pairing_req sec_params;   

    sec_params.io = IO_NO_INPUT_OUTPUT;

    sec_params.oob = OOB_AUTH_NOT_PRESENT;

    sec_params.flags = AUTHREQ_BONDING;

    sec_params.mitm = 0;

    sec_params.max_enc_sz = 16;

    sec_params.init_key = 0;

    sec_params.rsp_key = (SMP_KEY_MASTER_IDEN |SMP_KEY_ADDR_INFO);

    SetSecParams(&sec_params);

    其中smp_pairing_req结构体定义如下:

struct smp_pairing_req{

    uint8_t io;

    uint8_t oob;

    uint8_t flags:2;

    uint8_t mitm:1;

    uint8_t rsvd:5;

    uint8_t max_enc_sz;

    uint8_t init_key;

    uint8_t rsp_key;

};

继续阅读