THotPDF.ValidatePDFMACChain メソッド

最古の cross-reference セクションからアクティブなリビジョンまで、すべての PDF MAC リビジョンを検証し、リビジョン固有の整合性診断を返します

宣言

function ValidatePDFMACChain(const FileName: TFileName; const Password: AnsiString; out ValidationInfo: THPDFPDFMACChainValidationInfo): boolean; overload;
function ValidatePDFMACChain(const FileName: TFileName; const Password: AnsiString; const Options: THPDFPDFMACOptions; out ValidationInfo: THPDFPDFMACChainValidationInfo): boolean; overload;

検証モデル

結果レコード

THPDFPDFMACChainValidationInfo は、RevisionCount、FirstMACRevisionIndex、ValidatedRevisionCount、FailureRevisionIndex、FailureXRefOffset、permission カバー、salt の安定性、digest の単調性、リビジョンごとの THPDFPDFMACRevisionValidation レコードを報告します

THPDFPDFMACChainFailure は、リビジョン境界のエラー、欠落 MAC、無効または置き換えられた MAC、変更された KDFSalt、digest のダウングレード、認証済み permission のダウングレードを区別します

実装はリビジョン連鎖を 1 回列挙し、累積の cross-reference 状態を 1 つ更新します。テンポラリの PDF コピーと反復的なオブジェクトインデックスを避けながら、保護された各リビジョンの独立した暗号学的検証は保たれます

Delphi の例

var
  ChainInfo: THPDFPDFMACChainValidationInfo;
begin
  if not PDF.ValidatePDFMACChain('authenticated.pdf', 'user-password',
    ChainInfo) then
    raise Exception.CreateFmt('Revision %d at xref %d failed: %s',
      [ChainInfo.FailureRevisionIndex, ChainInfo.FailureXRefOffset,
       ChainInfo.Message]);
end;

プリフライト

CreatePreflightReport は同じ結果を PDFMACRevisionChain として公開するため、自動化されたワークフローはアクティブリビジョンの有効性と完全なリビジョン連鎖の有効性を区別できます

アクティブなリビジョンだけを確認すればよい場合は ValidatePDFMAC を、digest ポリシーのセマンティクスについては PDF MAC Algorithm Agility and Policy Profiles を参照してください