function ValidatePades: TPadesValidationResult;
Tolkar inbäddade signaturdictionaries från de ursprungliga inlästa byten, kontrollerar deras struktur mot PAdES-baseline och håller signaturförskjutningar skilda från den expanderade object-stream-vyn som används för uppslag i catalog och DSS
Obligatoriska signaturposter räknas bara på själva dictionary-nivån, så dubbletter av Contents, ByteRange, SubFilter, Filter eller Type kan inte gömmas bakom parsnerväljda värden, medan nycklar med samma namn i nästlade dictionaries och arrayer förblir oberoende
Signatursökningen använder en linjär lexikal skanning som hoppar över strömkroppar, strängar, hexadecimala värden och kommentarer, avkodar #xx-namnescapes och är oberoende av huruvida en nästlad dictionary kommer före eller efter signaturposterna
Det exkluderade /ByteRange-gapet måste motsvara den fullständiga direkta hexadecimala /Contents-tokenen, inklusive dess avgränsare, och varje täckt revision måste sluta vid en fullständig PDF-revisionsgräns
På Windows verifieras vanliga fristående CMS-signaturer direkt mot de två ursprungliga /ByteRange-segmenten, inklusive CMS-signerade attribut, det kryptografiska signaturvärdet och SHA-256-bindningen signing-certificate-v2
Varje signerare får dessutom en algoritmprofil tolkad ur CMS- och X.509-identifierare, med ISO/TS 32002-kontroller för NIST- och Brainpool-kurvor som stöds, Ed25519, Ed448, digest-överensstämmelse, namngivna kurvparametrar och SHAKE256-utdatalängd
Active är TrueTPadesValidationResult som redovisar den nådda PAdES-överensstämmelsenivån (B-B, B-T, B-LT, B-LTA) och mängden upptäckta valideringsproblemSourceStatus är pvssOriginalBytes när den ursprungliga filen, en buffrad minneskopia eller en egen ström granskades, pvssIncomplete för en ofärdig progressiv källa och pvssUnavailable när de ursprungliga bytena inte bevaratsIsCompliant och IsCompliantAt returnerar False såvida inte SourceStatus är pvssOriginalBytesIntegrityStatus aggregerar vanlig signaturintegritet medan Signatures redovisar varje ByteRange, CMS-signatur, algoritmpolicy, signerarcertifikatbindning, systemtillit, återkallning och tidsstämpeltillstånd var för sigAlgorithmInfo exponerar digest-, signatur-, publiknyckel- och namngivna kurv-OID:er, medan AlgorithmPolicyStatus skiljer mellan en giltig profil, en felformad kombination, en kurva eller algoritm som saknar stöd och otillgänglig certifikatbevisningid-shake256-lenppeiSignatureAlgorithmMismatch utlöses när en igenkänd kurva, digest, signatur-OID eller obligatorisk parameterkombination inte stämmer överensIsCryptographicallyValid returnerar True endast när ursprungliga bytes fanns tillgängliga, minst en vanlig signatur hittades och varje kontrollerad vanlig signatur klarade verifiering av fristående CMS och signerarcertifikatbindningCertificateTrustStatus använder en Windows-baserad systemtillitsbedömning enbart från cache; RevocationStatus och TimeStampStatus förblir pcsNotChecked eller pcsUnsupported tills dessa oberoende kontroller utförts%%EOF; senare inkrementella DSS-, tidsstämpel- eller signaturrevisioner gör inte det tidigare intervallet strukturellt ogiltigtFilter måste förekomma exakt en gång och ha ett namnvärde; en valfri vanlig signatur-Type måste vara Sig, medan en Document Time-stamp kräver exakt en Type /DocTimeStamp och SubFilter /ETSI.RFC3161Contents-värde, extra exkluderade bytes eller inkonsekventa värden för signaturtyp och subfilter hindrar uppryckning till PAdES B-BplUnknown; plNone är reserverat för dokument där ingen signaturdictionary upptäcktespcsUnsupported i stället för att härledas ur strukturella kontroller
var
Res: TPadesValidationResult;
begin
if not Pdf1.Active then Exit;
Res := Pdf1.ValidatePades;
if Res.IsCryptographicallyValid then
ShowMessage('PAdES signature integrity passed');
end;