Other Parts Discussed in Thread: AM6442
器件型号: AM6442
AM6442 引导 ROM 是否支持将自定义 TLV /OID 值放入 X509 证书中。 具体来说、我想添加 ASCII 或 UTF8 版本字符串、任意内容最多可达 255 字节?
我不需要引导 ROM 就能实际解析版本字符串。 如果引导 ROM 中的 ASN1 DER 解码逻辑仅跳过未知的 OID 或类型值、则完全正常。 我只是希望它位于证书中、以便我的自定义 SBL 可以稍后阅读。
我的软件发布流程如下。
- 我在 Code Composer Studio 中选择六种构建配置中的每一种、并将其编译成 ELF 文件。
- 我运行一个自定义批处理文件...
- 为已发布的文件构建自定义目录结构。
- 调用 tiarmobjcopy 将 ELF 文件转换为.bin 文件。
- 调用 rom_image_gen.py、为某些文件创建已签名的二进制文件。
- 将某些二进制文件转换为头文件以供其他配置使用。
- 在同一发行包中的 PC 上运行的其他项目中复制
当我的批处理文件完成时、会有一组已签名的二进制文件、每个配置和发布日期都有唯一的名称。 到目前为止、这些都可以正常工作、不会出现任何问题。
我还有一个完全定制的 SBL、它具有用户可以通过以太网发送的命令来检索版本字符串。 我希望此版本字符串与我的批处理文件生成的发行文件名完全匹配。 我想避免在每次发布时都手动为每个配置定义 C 代码中的常量。
我被骗去了...
- 修改 rom_image_gen.py 以为版本字符串添加额外的命令行参数。
my_parser.add_argument('--version_string', type=str, help='Version String in X509 cert (up to 255 characters)')
- rom_image_gen.py 定义了一个名为 g_x509_template 的字符串、该字符串是 openssl x509 配置文件的模板。 然后将 version_string 参数添加到模板中。
g_x509_template = '''
...
[ v3_ca ]
...
#use nsComment OID for version info
2.16.840.1.113730.1.13 = ASN1:IA5STRING:{FIRMWARE_VERSION}
...
'''
- 在函数 get_cert 中、将参数修改为.format 命令、以便将--version_string 参数放入模板中。
ret_cert = g_x509_template.format(
...
VERSION_STRING = "my version",
)
然后、修改后的配置模板将被传递给 opn-SSL、该字段将被放入 X509 证书中。
我仍然需要弄清楚什么 OID 适合版本字符串。 但此时我只是想看看 AM6442 引导 ROM 是否允许我在这里放置版本字符串。