安全验签验证
Second Boot示例支持OTA固件安全验签功能,用户可根据自身使用场景,选择是否开启该验签功能。如开启该验签功能,可在Second Boot示例工程目录下的user_config.h中,设置BOOTLOADER_SIGN_ENABLE = 1。
在验签前,用户可先使用GProgrammer对应用固件进行加签,完整的加签和验签过程如下:
- 生成私钥和公钥Hash值
生成签名信息的具体操作请参考GProgrammer用户手册加密加签章节,原理可参考GR55xx固件加密及应用介绍数字签名技术章节。
通过GProgrammer生成的用于加密加签的文件如下:
- 加签固件
导入product.json文件和应用固件ble_tem_dfu_fw.bin,再点击Sign按钮,如图 10:
选择加签文件路径后,即可生成加签应用固件(文件名带有_sign,ble_tem_dfu_fw_sign.bin),如图 11所示:
- 将Public_key_hash.txt中的公钥Hash值复制到Second Boot工程user_config.h的public_key_hash数组后,重新编译Second Boot固件。
//Hash value of the signed public key static const uint8_t public_key_hash[] = { 0x08,0x57,0x41,0xDD,0x34,0x17,0x0C,0x01,0x43,0xFB,0xCA,0xA5,0x5C,0x51,0x81,0xF5 };
- 对加签固件进行验证
利用GProgrammer将重新编译生成的Second Boot固件second_boot_fw.bin和加签的ble_tem_dfu_fw_sign.bin下载至GR5515 SK板,并设置Second Boot固件作为Startup固件并运行。Second Boot固件会对ble_tem_dfu_sign.bin固件进行校验和验签,若验证成功,则跳转到该应用固件中运行,如图 12: