PDFium Delphi Component 文件

BuildPadesEvidenceReport 方法

组件: TPdf  ·  单元: PDFium
为保留的原始 PDF 中的每个 PAdES 签名和文档时间戳构建一份有界证据报告

语法

function BuildPadesEvidenceReport(const Options: TPadesEvidenceReportOptions): TPadesEvidenceReport;

说明

把 PDFium 签名事实与 CMS 算法和策略检查、证书信任与吊销状态、RFC 3161 时间戳状态、DSS/VRI 覆盖以及增量修订策略分析组合在一起

该方法保留一份不可变的源字节捕获,并在合规、信任、DSS 和修订阶段之间复用它,无需重新保存文档

签名者和有序证书路径标识以 SHA-256 值的形式输出,而不是把证书主体复制进报告

选项

结果

TPadesEvidenceReport 包含验证与修订摘要、经过哈希的 DSS 材料记录、VRI 引用图、PDFium 签名计数、截断状态,以及每个保留签名对应的一个 TPadesSignatureEvidence

ToJson 输出嵌套的证据文档,ToCsv 为每个保留的修订变更输出一行,当签名没有保留变更时输出一行摘要

TPadesSignatureEvidence.Validation 把签名的 RevocationReason 和 NativeRevocationError 与时间戳的 TimeStampRevocationReason 和 NativeTimeStampRevocationError 分开保留

吊销导出字段

signatures 中的每个 JSON 条目都包含 revocationReason、nativeRevocationError、timeStampSignatureStatus、timeStampTrustStatus、timeStampRevocationStatus、timeStampRevocationReason 和 nativeTimeStampRevocationError。现有成员及其含义不变;该 JSON 格式没有 schema 版本成员,使用方应按字段名读取并容忍新增成员

CSV 保留原有 40 列及其原顺序,并按上面列出的顺序追加同样 7 个字段,共 47 列。摘要行和修订变更行都包含这些诊断;现有列的位置不变。读取方应使用表头名称或容忍多出的尾随列,而不是严格要求恰好 40 列

reason 字符串为 none、certificateRevoked、crlExpired、crlNotYetValid、crlUnavailable、crlSignatureInvalid、crlInvalid、chainUntrusted 或 unknown。原生错误是后端相关的数值代码,例如 OpenSSL 的 X509 验证错误,或原始的 Windows 提供方 / GetLastError DWORD 值,0 表示没有原生诊断。Windows 的值原样导出,不得解读为聚合的链信任掩码或统一的 HRESULT 空间

请用 revocationStatus 和 timeStampRevocationStatus 判定结论。检查被禁用、未被执行或缺少详细后端诊断时,同样会出现 reason 为 none 或错误为 0 的情况;导出证据不会额外执行一次验证

备注

示例

var
  Options: TPadesEvidenceReportOptions;
  Report: TPadesEvidenceReport;
begin
  Options := TPadesEvidenceReportOptions.Default;
  Report := Pdf1.BuildPadesEvidenceReport(Options);
  TFile.WriteAllText('signature-evidence.json', Report.ToJson);
end;

参见

ValidatePadesTrust AnalyzeSignatureRevisions