THotPDF.ValidatePDFMACChain Method

Waliduje każdą rewizję PDF MAC od najstarszej sekcji xref do rewizji aktywnej i zwraca diagnostykę integralności przypisaną do konkretnych rewizji

Deklaracja

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;

Model walidacji

Rekordy wyników

THPDFPDFMACChainValidationInfo raportuje RevisionCount, FirstMACRevisionIndex, ValidatedRevisionCount, FailureRevisionIndex, FailureXRefOffset, pokrycie uprawnień, stabilność soli, monotoniczność skrótu oraz po jednym rekordzie THPDFPDFMACRevisionValidation na rewizję

THPDFPDFMACChainFailure rozróżnia błędy granic rewizji, brakujące MAC, niepoprawne albo podmienione MAC, zmieniony KDFSalt, obniżenie siły skrótu i obniżenie uwierzytelnionych uprawnień

Implementacja wylicza łańcuch rewizji raz i aktualizuje jeden skumulowany stan xref, unikając tymczasowych kopii PDF i powtórnego indeksowania obiektów, zachowując przy tym niezależną weryfikację kryptograficzną każdej chronionej rewizji

Przykład 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 udostępnia ten sam wynik co PDFMACRevisionChain, pozwalając zautomatyzowanym workflow odróżnić poprawność rewizji aktywnej od poprawności całego łańcucha rewizji

Zobacz ValidatePDFMAC, gdy sprawdzana ma być tylko rewizja aktywna, albo Zwinność algorytmów PDF MAC i profile polityk dla semantyki polityk skrótów