630基线出包升级报错

问题描述

validate_sign.lua(375): string.format error: bad argument #2 to ‘?’ (number expected, got nil)

有人遇到过么,我推断和签名有关,但是我本地切基线后的manifest和430基线的签名相关配置是一样的,不懂这个报错是什么意思

答案内容由AI生成,仅供参考:
根据您提供的上下文信息,目前资料中没有直接解释 validate_sign.lua(375) 这一行报错 string.format error: bad argument #2 to '?' (number expected, got nil) 的具体含义。不过,上下文中有多处与固件签名验证失败相关的记录,可能对您排查问题有参考价值。


与签名验证相关的已知信息

  1. validate_sign.lua 是签名校验脚本
    在升级日志中可以看到该脚本参与签名验证流程,例如:

    • validate_sign.lua(261): get platform is community
    • validate_sign.lua(217): config cms sign enable:true
    • validate_sign.lua(138): the custom ca certificate is exist, load custom certificate
    • validate_sign.lua(159): verify signature successfully

    这说明该脚本在执行平台识别、读取签名配置、加载证书、验证签名等步骤。

  2. manifest.yml 签名配置缺失会导致签名任务失败
    上下文提到多个签名相关配置键缺失,例如:

    • base/signature/signserver
    • base/signature/sign_ko
    • base/signature/hpm_digest
    • base/signature/certificates

    这些键缺失时,构建任务 work.task_hpm_envir_prepare 会报错,使签名进程失败。您提到“本地切基线后的 manifest 和 430 基线的签名相关配置是一样的”,但如果当前基线所需的配置键在您本地 manifest 中确实缺失,仍可能触发签名相关错误。

  3. 社区整包签名配置的注意事项
    上下文明确指出:

    • 开发者本地出包不能使用 community_sign_webvnc_1711 配置整包,只能使用 community_unsign_webvnc_1711,否则会导致后续验签无法通过、升级失败。
    • 当前社区 manifest 默认配置的是 community_sign_webvnc_1711,使用这种包升级后会打开升级验签功能;本地出包需要改为 community_unsign_webvnc_1711
  4. 已知问题:需要更新 manifest 和 bingo
    上下文提到一个已知问题:“拉最新的 manifest 库编译出版本之后,升级 bmc 包之后再次升级 bmc 包就出错”,解决办法是更新最新的 manifest 以及最新的 bingo。如果您的基线切换后没有同步更新 manifest 和 bingo,可能会遇到社区签名验证失败。

  5. 历史版本签名算法兼容性问题
    上下文提到 V2 老版本的签名只支持 PKCS,不支持 PSS,导致无法直接升级到 V3;需要先升级到中间版本预埋。如果“630基线”涉及类似的签名算法变化,可能也存在兼容性问题。


建议排查方向

  • 确认当前基线 manifest.yml 中是否存在上文提到的缺失签名配置键(如 base/signature/signserver 等)。
  • 检查是否使用了 community_sign_webvnc_1711 整包,如果是开发者本地出包,建议改为 community_unsign_webvnc_1711
  • 尝试更新到最新的 manifest 和 bingo,因为社区签名验证失败是一个已知问题。
  • 如果涉及从 V2 等旧版本升级,确认签名算法(PKCS/PSS)是否兼容。

由于上下文没有针对 validate_sign.lua(375) 这一具体错误的详细说明,以上仅是基于已知故障场景的参考。建议您进一步提供完整的 app.log 日志,以便更准确地定位问题。