This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6442:AM6442 引导 ROM 是否支持将自定义 TLV /OID/扩展值放入 X509 证书中?

Guru**** 2905440 points

Other Parts Discussed in Thread: AM6442

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1647839/am6442-does-the-am6442-boot-rom-support-the-ability-to-put-custom-tlv-oid-extension-values-in-the-x509-certificate

器件型号: AM6442

AM6442 引导 ROM 是否支持将自定义 TLV /OID 值放入 X509 证书中。 具体来说、我想添加 ASCII 或 UTF8 版本字符串、任意内容最多可达 255 字节?  

我不需要引导 ROM 就能实际解析版本字符串。  如果引导 ROM 中的 ASN1 DER 解码逻辑仅跳过未知的 OID 或类型值、则完全正常。  我只是希望它位于证书中、以便我的自定义 SBL 可以稍后阅读。

我的软件发布流程如下。

  1. 我在 Code Composer Studio 中选择六种构建配置中的每一种、并将其编译成 ELF 文件。
  2. 我运行一个自定义批处理文件...
    • 为已发布的文件构建自定义目录结构。
    • 调用 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 是否允许我在这里放置版本字符串。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有一个由 ROM/TIFS 支持的预定义 OID 扩展列表。
    是的、可以让客户的 OID 包含在 x.509 证书中、并且在 ROM 解析过程中忽略任何不支持的扩展。
    此致、
    - Hong

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您回答我的原始问题。

    作为跟进、是否 为 TIFS 保留了 OID 的公共列表/文档?

    更具体地说、 这些 OID 中是否有任何要用作(或适合用作)SBL 或客户 应用程序的版本字符串?

    如果是、您能告诉我这些 OID 号中的一个、以便我可以使用它吗?

    如果已经有了新的 OID、我不会再去办理预约手续。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    TIFS 中支持的 OID 扩展列表
    https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/sec_cert_format.html
    此致、
    - Hong

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我测试了全部、结果如下...

    我修改了 rom_image_gen.py 以加入 OID  2.16.840.1.113730.1.13 (nsComment) extension into the X.509 certificate.

    The python script ran without any errors.

    I verified with openssl that my version string was indeed in the nsComment extension.

    openssl x509 -in my_rom_image.rom -noout -text

    I then flashed the image into eMMC in boot partition 0 at block address 0x00000000.

    I cycled power and my My HS-FS device was able to boot with the nsComment extension in the image.

    So overall it was a success.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的更新、并且很高兴知道 x.509 证书中的客户 OID 扩展可以正常工作。
    此致、
    - Hong