vlrsign.md 3.2 KB

vlrsign

vlrsign是针对8910平台的签名工具,需要在命令行窗口中运行。

以前版本的vlrsign.exe在Windows下既支持命令行模式,也支持直接双击的图形界面模式, 现在的版本只支持命令行模式,不再支持图形界面模式。

选项说明:

-v, --version   显示版本信息
--pw    是使用rsakeygen生成签名秘钥时输入的密码,该密码是读取签名秘钥的口令。
--pn    是使用rsakeygen生成签名秘钥时输入的产品名称,用于检索签名秘钥。
--plen  是针对要签名的对象填充的长度。针对8910平台只有boot.img签名时需要填充,而且填充长度是固定的0xbce0。
--ha    是签名中使用何种hash算法,针对8910平台固定使用Blake2。
--img   指定签名的文件路径和文件名。
--out   指定签名完成后的输出文件路径和文件名。

例子:

vlrsign --pw 12345678 --pn test --plen 0xbce0 --ha Blake2 --img boot.img --out boot.sign.img
vlrsign --pw 12345678 --pn test --ha Blake2 --img fdl2.img --out fdl2.sign.img
vlrsign --pw 12345678 --pn test --ha Blake2 --img ap.img --out ap.sign.img

vlrsign在执行时需要访问和执行程序相同目录的key.db文件,这个文件是由rsakeygen生成的, 包含有签名需要的公私钥对的信息。随工具发布的key.db只是一个例子,不能在实际产品中使用。在 这个例子中,产品名称是test,访问这个产品的公私钥对信息的密码是12345678。在实际使用中, 需要把上面例子中的12345678替换成实际的密码,test替换成实际的产品名。

vlrsign产生的签名对于相同的输入和相同的选项,生成的签名是相同的。因此相同的目录执行多次, 生成的带签名的文件是相同的。

rsakeygen

rsakeygen是签名秘钥生成工具,需要在命令行窗口中运行。

以前版本的rsakeygen.exe在Windows下既支持命令行模式,也支持直接双击的图形界面模式, 现在的版本只支持命令行模式,不再支持图形界面模式。

选项说明:

-v, --version   显示版本信息
-pw     输入口令,8位ASCII码,以后vlrsign根据读取签名秘钥时回去校验口令是否正确。
-pn     输入产品名称,不超过49个ASCII码,以后vlrsign根据输入的产品名称检索相应的签名秘钥。

rsakeygen即使输入参数相同,每次产生的公私钥对都是不一样的,产生的key.db是不同的。 没有办法产生公钥相同的公私钥对。在实际的产品中,生成的公钥(public key)会烧写到终端 的EFUSE中。

rsakeygen生成的公私钥对以加密的方式保存到和执行程序相同的目录下的key.db文件,这个 文件包含有敏感信息,因此不能泄露,不能丢失。

  • 如果泄露后,其他人可以通过泄露的key.db对固件签名,由于公钥和终端EFUSE中的公钥是 相同的,可以通过secure boot检查;
  • 如果丢失后,没有办法再次产生公钥相同的公私钥对,因此就无法对后续的固件进行签名。

key.db已经存在时,rsakeygen可以对不同的产品生成公私钥对,但不能对已有的产品再次 生成公私钥对。