THotPDF.ValidatePDFMACChain Method
Valideert elke PDF MAC-revisie van de oudste kruisverwijssectie tot de actieve revisie en geeft revisiespecifieke integriteitsdiagnostiek terug
Declaratie
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;
Validatiemodel
- Revisie-indices hebben nulbasis en zijn geordend van de oorspronkelijke revisie tot de actieve revisie
- De eerste revisie die
AuthCodebevat wordt het ketenanker, en elke latere revisie moet een geldige PDF MAC bevatten - Elke MAC wordt geverifieerd tegen de exacte byte-prefix eindigend op de bijpassende grens
startxrefen%%EOFvan die revisie - De validator wijst een vervangen historische MAC af zelfs wanneer een nieuwere actieve-revisie-MAC geldig blijft
KDFSaltmoet stabiel blijven na het anker, en digeststerkte mag niet afnemen tussen gevalideerde MAC-revisies- Geauthenticeerde waarden
/Pen/Permsworden per revisie gecontroleerd, inclusief de PDF MAC-vereisttoestemming-bit
Resultaattrecords
THPDFPDFMACChainValidationInfo rapporteert RevisionCount, FirstMACRevisionIndex, ValidatedRevisionCount, FailureRevisionIndex, FailureXRefOffset, toestemmingsdekking, zoutstabiliteit, digestmonotoniciteit en één record THPDFPDFMACRevisionValidation per revisie
THPDFPDFMACChainFailure onderscheidt revisiegrens fouten, ontbrekende MAC's, ongeldige of vervangen MAC's, gewijzigde KDFSalt, digest downgrade en geauthenticeerde toestemmingsdowngrade
De implementatie somt de revisieketen één keer op en werkt één cumulatieve kruisverwijstoestand bij, waarbij tijdelijke PDF-kopieën en herhaalde objectindexering worden vermeden terwijl onafhankelijke cryptografische verificatie voor elke beschermde revisie behouden blijft
Delphi-voorbeeld
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 stelt hetzelfde resultaat bloot als PDFMACRevisionChain, waardoor geautomatiseerde workflows actieve-revisiegeldigheid kunnen onderscheiden van volledige revisieketen-geldigheid
Zie ValidatePDFMAC wanneer alleen de actieve revisie hoeft te worden gecontroleerd, of PDF MAC-algoritmeagiliteit en beleidsprofielen voor digestbeleid-semantiek