可依條款定位的 PAdES 設定檔預檢

THotPDF.PreflightLoadedPAdES 針對一個累進的 PAdES baseline 或 extended 設定檔評估已載入的簽章,並傳回所有適用要求的結果(含通過的檢查),每項都附標準條款與 PDF 證據出處

支援的目標

baseline 目標是 palBaseline_B_B、palBaseline_B_T、palBaseline_B_LT 與 palBaseline_B_LTA;extended 目標是 palExtended_E_BES、palExtended_E_EPES 與 palExtended_E_LTV

通用的 palLegacy_adbePkcs7 值不是 PAdES 設定檔,作為目標會被拒絕

評估契約

串流多載會保留呼叫端的來源位置,檔案多載則重新開啟 LoadFromFile 所用的來源。函式回傳 True 代表評估已完成;符合與否要用 THPDFPAdESPreflightReport.Compliant 判斷

var
  Report: THPDFPAdESPreflightReport;
  Requirement: THPDFPAdESPreflightRequirement;
begin
  PDF.LoadFromFile('Signed.pdf');
  if not PDF.PreflightLoadedPAdES(0, palBaseline_B_LT, Report) then
    raise Exception.Create(string(Report.Issue));

  for Requirement in Report.Requirements do
    WriteLn(string(Requirement.RuleID), ': ',
      BoolToStr(Requirement.Passed, True), ' at ',
      string(Requirement.Clause), ' object ',
      Requirement.ObjectNumber, ' revision ',
      Requirement.RevisionIndex);
end;

檢查的證據

baseline 與 extended 檢查會檢視簽章字典、完整的 /ByteRange 涵蓋、CMS 簽章有效性、簽署屬性基數、內容類型、訊息摘要、簽署時間限制、/M、/Filter、/SubFilter、/Reason 以及被禁止的 /Cert 項目

ESS signing-certificate 與 signing-certificate-v2 檢查會對實際的簽署者憑證計算雜湊,並要求相符的 ESSCertID 參照,不接受只靠名稱存在的屬性

更高的層級還會檢視有效的簽章或文件時間戳記、DSS 憑證與撤銷陣列、引入驗證材料的修訂版,以及較晚的文件時間戳記是否涵蓋該 DSS 修訂版

結構化發現

每個 THPDFPAdESPreflightRequirement 都回報引入它的 Profile、規範性 Level、穩定的 RuleID、Clause、PDF Path、ObjectNumber、RevisionIndex、Passed 狀態與診斷 Message

FailedRequirementCount 統計未通過的 shall 級規則,WarningCount 統計未通過的 should 級指引。HighestConformingProfile 指出通過的最高累進設定檔,只有在 HasConformingProfile 為 true 時才有意義

參見 PAdES 簽章原則驗證、批次簽章驗證與 簽章證據取得