THotPDF.ValidatePDFMACChain Method

Zvaliduje každou revizi PDF MAC od nejstarší cross-reference sekce po aktivní revizi a vrátí diagnostiku integrity specifickou pro revize

Deklarace

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;

Validační model

Záznamy výsledku

THPDFPDFMACChainValidationInfo hlásí RevisionCount, FirstMACRevisionIndex, ValidatedRevisionCount, FailureRevisionIndex, FailureXRefOffset, pokrytí permission, stabilitu soli, monotonii digestu a jeden záznam THPDFPDFMACRevisionValidation na revizi

THPDFPDFMACChainFailure rozliší chyby hranic revizí, chybějící MAC, neplatné či vyměněné MAC, změněný KDFSalt, downgrade digestu i downgrade autentizovaných permission

Implementace enumeruje řetězec revizí jednou a aktualizuje jeden kumulativní cross-reference stav, takže se vyhne dočasným kopiím PDF a opakovanému indexování objektů, při zachování nezávislé kryptografické verifikace každé chráněné revize

Příklad pro 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;

Preflight

CreatePreflightReport vystaví tentýž výsledek jako PDFMACRevisionChain, takže automatizovaná workflow rozliší platnost aktivní revize od platnosti kompletního řetězce revizí

Viz ValidatePDFMAC, když je třeba zkontrolovat jen aktivní revizi, nebo PDF MAC Algorithm Agility and Policy Profiles pro sémantiku digest politiky