Z-Wave 700#固件Secure Boot+数字签名方案
参考芯科的相关文档:
UG162: Simplicity Commander Reference Guide
第一步: 生成支持secure boot的bootloader。
略
第二步:生成数字签名和密钥。
生成签名:
commander.exe gbl keygen –type ecc-p256 -0 vendor_sign.key
生成3个文件
vendor_sign.key //私钥
vendor_sign.key.pub //公钥
vendor_sign.key-tokens.txt //公钥的token形式
生成加密密钥:
commander.exe gbl keygen --type aes-ccm -o vendor_encrypt.key
生成1个文件
vendor_encrypt.key //加密密钥
第三步:签名Bootloader文件。
commander convert bootloader.s37 --secureboot --keyfile vendor_sign.key --outfile bootloader-signed.s37
第四步:签名应用程序文件。
commander convert app.s37 --secureboot --keyfile vendor_sign.key --outfile app-signed.s37
第五步:生成签名加密OTA文件。
commander gbl create app_signed.gbl --app app.hex --sign vendor_sign.key --encrypt vendor_encrypt.key --compress lz4
第六步:生成烧录文件。
合并bootloader和应用程序:
commander.exe convert --d ZGM130S037HGN1 bootloader-signed.s37 app-signed.s37 -o app_bootloader_signed.s37
合并KEY和签名:
commander.exe convert app_bootloader_signed.s37 --tokengroup znet --tokenfile vendor_encrypt.key --tokenfile vendor_sign.key-tokens.txt --device ZGM130S037HGN1 --outfile app_bootloader_signed_key.s37
第七步:烧录验证。
1. 烧录s37,运行正常,可以烧录不带签名的app.s37验证secureboot里否正常,如果不能正常启动,表示secureboot功能已经有作用。
2. OTA带签名的ota文件app_signed.gbl,和一个错误签名的ota文件验证ota的校验功能是否正常。