句指定可能な PAdES プロファイル プリフライト

THotPDF.PreflightLoadedPAdES は読み込んだ署名を、ひとつの累積 PAdES base line または extended プロファイルに対して評価し、成功した検査を含む該当するすべての要件を、標準の clause と PDF の根拠の出典を伴って返す

対応するターゲット

Base line ターゲットは 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;

検査される根拠

Base line と extended の検査は、署名ディクショナリ、完全な /ByteRange の網羅、CMS 署名の有効性、署名属性の多重度、content type、message digest、署名時刻の制約、/M、/Filter、/SubFilter、/Reason、禁止されている /Cert エントリを検査する

ESS の signing-certificate と signing-certificate-v2 の検査は、実際の署名者証明書をハッシュし、一致する ESSCertID 参照を要求する。名義だけで属性を受け入れることはない

より高いレベルの検査ではさらに、有効な署名タイムスタンプまたは文書タイムスタンプ、DSS の証明書と失効情報の配列、検証マテリアルを導入した revision、そして後の文書タイムスタンプがその DSS revision を覆っているかどうかを検査する

構造化された検査結果

各 THPDFPAdESPreflightRequirement は、それを導入した Profile、規範的な Level、安定した RuleID、Clause、PDF の Path、ObjectNumber、RevisionIndex、Passed 状態、診断用の Message を報告する

FailedRequirementCount は失敗した shall レベル規則の数、WarningCount は失敗した should レベル指針の数を数える。HighestConformingProfile は合格した最も高い累積プロファイルを識別し、HasConformingProfile が true のときだけ意味を持つ

PAdES 署名ポリシー検証、バッチ署名検証、署名の根拠の取得 も参照