You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Web-Eid适配比利时eID时签名失败的技术求助

适配比利时eID修改Web-Eid原生中间件的方案

问题根源

Web-Eid原生中间件的签名校验逻辑默认仅支持SHA-384(48字节)和SHA-512(64字节)哈希,但比利时eID使用SHA-256(32字节)作为签名哈希算法,因此触发了sign.cpp中第154行的长度校验错误。

修改步骤

1. 调整哈希长度校验逻辑

打开src/controller/command-handlers/sign.cpp,定位到validateAndStoreDocHashAndHashAlgo函数,修改哈希长度校验分支,添加SHA-256的支持:

void SignCommandHandler::validateAndStoreDocHashAndHashAlgo(const json &params) {
    // ... 原有代码 ...
    const std::string hashAlgo = params.at("hashAlgo").get<std::string>();
    const std::vector<uint8_t> hash = params.at("hash").get<std::vector<uint8_t>>();

    if (hashAlgo == "SHA-256" && hash.size() != 32) {
        throw CommandHandlerError(ERR_WEBEID_NATIVE_FATAL, "SHA-256 hash must be 32 bytes long, but is " + std::to_string(hash.size()));
    } else if (hashAlgo == "SHA-384" && hash.size() != 48) {
        throw CommandHandlerError(ERR_WEBEID_NATIVE_FATAL, "SHA-384 hash must be 48 bytes long, but is " + std::to_string(hash.size()));
    } else if (hashAlgo == "SHA-512" && hash.size() != 64) {
        throw CommandHandlerError(ERR_WEBEID_NATIVE_FATAL, "SHA-512 hash must be 64 bytes long, but is " + std::to_string(hash.size()));
    }

    this->hash = hash;
    this->hashAlgo = hashAlgo;
    // ... 原有代码 ...
}

同时检查项目中定义哈希算法的头文件(如src/model/HashAlgorithm.hpp或类似文件),确保SHA-256已被加入支持列表。

2. 适配比利时eID签名算法

比利时eID证书采用RSA-SHA256签名算法,需确保中间件调用智能卡签名时使用对应算法:

  • 找到签名执行的核心代码(如src/service/SignatureService.cpp),在选择签名哈希算法的逻辑中,添加判断逻辑:当检测到比利时eID证书时,指定使用SHA256而非默认的SHA512。
  • 可通过证书的OID或颁发者信息识别比利时eID证书(比利时eID证书颁发者通常包含"Belgian Government"标识)。

3. 编译与验证

  • 按照Web-Eid项目的官方编译指南,重新编译原生中间件应用。
  • 替换浏览器扩展关联的原生中间件程序,启动ASP.NET示例,使用比利时eID测试签名流程,确认哈希长度错误不再出现。

可行性说明

该方案完全可行:Web-Eid的架构设计具备模块化特性,签名校验和算法选择逻辑均为可修改的独立模块。比利时eID与爱沙尼亚eID同属PKI智能卡体系,核心认证/签名流程一致,仅哈希算法和证书策略存在差异,通过针对性修改校验逻辑和算法选择即可完成适配。

额外注意事项

  • 确保ASP.NET示例中的签名请求生成的是SHA256哈希,与中间件的修改保持一致。
  • 验证比利时eID的根证书已正确导入系统信任存储,避免后续证书链验证失败。
  • 可参考比利时eID官方开发文档,确认签名流程的具体细节要求。

内容的提问来源于stack exchange,提问作者Rikako

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 03:03:38