THotPDF.ValidatePDFMACChain-Methode

Validiert jede PDF-MAC-Revision von der ältesten Cross-Reference-Section bis zur aktiven Revision und liefert revisionsspezifische Integritätsdiagnostik

Deklaration

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;

Validierungsmodell

Ergebnisdatensätze

THPDFPDFMACChainValidationInfo meldet RevisionCount, FirstMACRevisionIndex, ValidatedRevisionCount, FailureRevisionIndex, FailureXRefOffset, Permission-Abdeckung, Salt-Stabilität, Digest-Monotonie und je Revision einen THPDFPDFMACRevisionValidation-Datensatz

THPDFPDFMACChainFailure unterscheidet Revisionsgrenzfehler, fehlende MACs, ungültige oder ersetzte MACs, geändertes KDFSalt, Digest-Downgrade und authentifiziertes Permission-Downgrade

Die Implementierung enumeriert die Revisionskette einmal und pflegt einen kumulativen Cross-Reference-Zustand; das vermeidet temporäre PDF-Kopien und wiederholte Objektindizierung und bewahrt dennoch unabhängige kryptografische Verifikation für jede geschützte Revision

Delphi-Beispiel

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 legt dasselbe Ergebnis als PDFMACRevisionChain offen, sodass automatisierte Workflows die Gültigkeit der aktiven Revision von der Gültigkeit der vollständigen Revisionskette unterscheiden können

Siehe ValidatePDFMAC, wenn nur die aktive Revision geprüft werden muss, oder PDF MAC Algorithm Agility und Policy-Profile für die Digest-Policy-Semantik