加密加签
点击左侧功能导航栏的图标 ,进入Encrypt & Sign(加密加签)页面。

芯片支持安全模式和非安全模式,由写入eFuse的产品信息中的Security Mode决定。在安全模式开启的情况下,固件需加密加签后才可以下载至Flash运行。
eFuse设置
eFuse是芯片内部的一个具有随机访问接口的一次性可编程存储器。eFuse中存放着产品配置信息、安全模式控制信息以及用于加密加签的各种密钥信息等。
用户可通过指定产品的Name、ID、Firmware Key、Security Mode和SWD接口生成存储在eFuse中的相关文件。

- Firmware Key可使用软件自动生成的随机Key,也可使用用户自己选择添加的Key文件。
- Security Mode选择Open将启用芯片安全模式,该模式开启后不能被关闭。
- SWD选择Close将关闭SWD功能,但用户依然可以通过DFU对固件进行升级。
- RSA、ECDSA签名算法选择:若芯片为GR551x、GR5526系列,默认使用RSA(页面无选项配置);;若芯片为GR533x系列,仅可选择ECDSA 。
另外,GProgrammer还支持通过设置Batch eFuse选项批量生成多个Encrypt_key_info.bin文件,且生成的各文件具有唯一性,以保证一机一密。例如,勾选Batch eFuse选项并在文本框中设置文件数量为3,则会生成3个Encrypt_key_info.bin文件:Encrypt_key_info.bin,2_Encrypt_key_info.bin,3_Encrypt_key_info.bin。
生成的文件包括:

- efuse.json:临时文件。
- Encrypt_key_info.bin、2_Encrypt_key_info.bin、3_Encrypt_key_info.bin:eFuse下载文件,包含产品及加密加签信息。此文件需下载至eFuse。
- firmware.key:用于加密固件的私钥。
- Mode_control.bin:eFuse下载文件,包含Security Mode和SWD信息。此文件需下载至eFuse。
- product.json:产品信息文件。当固件加密加签时,需导入此文件。
- sign.key:用于生成签名的私钥。
- sign_pub.key:用于验证签名的公钥。
- Public_key_hash.txt:用于验证签名的公钥Hash。
以上文件请用户妥善保存,切忌泄露、丢失。后续的eFuse下载和固件加密加签操作需使用这些文件。
为了方便用户下载文件至eFuse或加密加签固件,生成的Encrypt_key_info.bin和Mode_control.bin文件的路径将自动被添加到Download区域,产品信息文件product.json的路径将自动被添加到Encrypt and Sign的Product Info栏中,如图 29所示。

不要修改eFuse中生成的任何文件,否则可能造成固件加密加签失败。
eFuse下载
若用户先执行Generate eFuse File操作生成了Encrypt_key_info.bin和Mode_control.bin文件,则可直接勾选Encrypt Key Info和Mode Control选项,点击Download to eFuse按钮将文件下载至eFuse。
否则,用户需先手动选择添加Encrypt_key_info.bin和Mode_control.bin文件,然后才可下载。

-
eFuse不能重复下载。
- GR533x芯片不支持eFuse下载功能。
固件加密加签
GProgrammer可对固件(.hex/.bin格式)进行加密加签或者仅加签的操作,允许用户使用同一套产品信息和同一个Random Number操作一个或者多个固件文件。
- Random Number:选择Using Random Number将使用软件自动生成的随机数进行加签,用户也可以点击Select Number选择自定义的数字bin文件进行加签。
- Firmware:此栏中导入非加密固件。GProgrammer支持.hex格式和.bin格式的非加密固件导入,输出的加密加签或者仅加签的固件格式为.bin格式。添加多个固件时,各固件的路径之间用;隔开,如下图所示。
图 31 添加多个固件 - Encrypt:如果勾选此复选框,则操作按钮变成Encrypt and Sign,点击操作按钮后将生成加密加签固件(.bin格式);如果不勾选此复选框,则操作按钮变成Sign,点击操作按钮后将生成仅加签固件(.bin格式)。
- 加密加签后生成的文件包括:
图 32 加密加签生成的文件 - 仅加签后生成的文件包括:
图 33 仅加签生成的文件 说明:软件随机生成的Random Number是一个用于加密算法的随机数。执行加密加签操作后,随机数文件(random.bin)会与加密加签后的固件文件保存在同一目录下。若用户需再次使用该随机数加密加签,则可浏览添加之前保存的随机数文件。
- 加密加签后生成的文件包括: