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

IText7 .NET:CertIDBC.MatchesIssuer方法实现正确性核查

IText7 .NET 中 CertIDBC.MatchesIssuer 方法的实现问题

CertIDBC中的当前实现:

public virtual bool MatchesIssuer(IX509Certificate issuerCert) {
    return new CertIDBC(
        certificateID.HashAlgorithm.Algorithm.Id, 
        issuerCert, 
        new BigIntegerBC(certificateID.SerialNumber.Value)
    ).GetCertID().Equals(certificateID);
}

正确的实现是否应为如下形式?

public virtual bool MatchesIssuer(IX509Certificate issuerCert) {
    return new CertIDBC(
        certificateID.HashAlgorithm, 
        issuerCert, 
        new BigIntegerBC(certificateID.SerialNumber.Value)
    ).GetCertID().Equals(certificateID);
}

当前实现会导致两个证书的相等性检查出现问题:原始CertID不存在parameters字段,但从签发者创建的CertID带有该字段。这是因为CertIDBC构造函数在创建AlgorithmIdentifier时传入了DerNull.Instance。

对比可见,Java实现传递的是完整的AlgorithmIdentifier对象,而非仅提取其Id属性。从OCSP响应的ASN.1结构也能观察到这种差异:通过签发者生成的CertID包含额外的parameters字段,而原始CertID没有。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:20:56