[RT-117x]Signing image with the HSM (SignServer)
最后更新于
最后更新于
在本文档中介绍如何使用sign server来对X-NAV的image进行签名。
根据NXP-RT1176的secure boot的文档,
需要角色为:
root CA (用于公钥的认证) 对应PKI体系图中的CA
Level 1:Sign Server (在NXP中叫做SRK, super root key,二级证书)对应SRK1
Level 2: CSF signer(用于对CSF header签名)
Level2: IMAGE signer(用于对IMAGE签名)
需要给到车端的证书:
ca.crt文件 (1个)
srk.crt文件 (4个)
csf.crt文件(4个)
img.crt文件(4个)
其中4个srk.crt文件要组成列表计算hash放入eFUSE中,其中csf.crt和img.crt文件需要放入boot image的header中,其中ca.crt和srk.crt需要组成证书链用于image和csf的验签过程。
使用SHA2_256作为digest,接口要求(抽象为下面的伪代码接口):
sign_request(srk_number, csf_or_img_signer, origin_sign_data):
输入参数:
srk_number: srk序列号(只有4个),在PKI体系图中对应SRK1-4
csf_or_img_signer:signer选择(只有2种),CSF signer或者IMAGE signer
original_sign_data:签名的二进制数据的原始数据,几个字节到几十兆不等,通常低于1MB。
输出参数:
注意CMS生成的二进制flags:
CMS_DETACHED | CMS_NOCERTS | CMS_NOSMIMECAP | CMS_BINARY;
这里有个sign的示例可以在这个工具中:
如何运行?
make
make sign
这里面分别有sign之前的数据和sign之后的数据。
提供签名的验证工具,可以帮助你初步的快速的验证签名的数据。
make verify
以下为使用openssl命令行模拟NXP签名格式的测试用例(请注意参数):
关于Key和Cert的生成要求,参见:
签名使用CMS_sign,参考:
CMS blob格式的签名二进制文件(DER格式)参考: