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

iText7-dotnet 8.0.2:无TimeStampToken的Pkcs7引发未知PdfException

iText7 .NET 8.0.2:Pkcs7未签名属性无TimeStampToken时触发Unknown PdfException异常

问题现象

  • 使用iText7-dotnet 8.0.2版本,当Pkcs7的未签名属性段中不存在TimeStampToken属性时,调用PdfPKCS7构造函数会抛出Unknown PdfException异常。
  • 异常堆栈信息:
iText.Kernel.Exceptions.PdfException
HResult=0x80131500
Message=Unknown PdfException.
Source=itext.sign
StackTrace:
    at iText.Signatures.SignatureUtil.ReadSignatureData(String signatureFieldName)
    ...

    This exception was originally thrown at this call stack:
        iText.Bouncycastle.Asn1.Cms.AttributeBC.GetAttrValues()
        iText.Signatures.PdfPKCS7.PdfPKCS7(byte[], iText.Kernel.Pdf.PdfName)

合规性说明

PAdES规范并未强制要求SignerInfo结构包含未签名属性时必须附带TimeStampToken属性。例如仅在未签名属性中添加带自定义信息的UnstructuredName时,ETSI在线验证器仅会给出警告:

An unknown attribute, defined by OID 1.2.840.113549.1.9.2 has been reached. Its contents and their processing are unknown to the AdESCC. No further checks will be done to this component

问题根源

通过分析iText7-dotnet源码定位到问题:

  1. 解析未签名属性段时,代码会尝试提取OID为1.2.840.113549.1.9.16.2.14(id-aa-timeStampToken)的属性
  2. itext7.bouncy-castle-adapter库的IAttributeTable.Get(IDerObjectIdentifier oid)方法未检查目标OID是否存在于属性表中,反而直接返回一个传入null值的AttributeBC实例
  3. 后续PdfPKCS7构造函数调用该空实例的GetAttrValues()方法时触发异常

另外,对比iText7 Java版本的对应代码逻辑,推测该问题在Java版本中同样存在,但未做实际测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:12:27