TPDFlibSignatureVerifier
Sikkerhed og signaturer
Beskrivelse
Gennemløber PDF-signaturfelter og CMS-undertegnere, validerer en valgt underskrift uden at indlæse hele PDF-filen i hukommelsen og rapporterer den valgte underskrifts egen inkrementelle revision separat fra den aktuelle fil Verificatoren accepterer en fil, en stream ejet af den kaldende kode eller en ANSI-bytestreng via
OpenPDF, OpenPDFStream eller OpenPDFString
Markering
Count := Verifier.GetSignatureCount;
Verifier.GetSignatureFieldName(0, FieldName);
SignerCount := Verifier.GetSignerCount(0);
Result := Verifier.VerifySignatureByName(FieldName, 0, Report);
VerifySignatureByIndex vælger et PDF-felt med et nulbaseret indeks, mens VerifySignatureByName bruger det fuldt kvalificerede AcroForm-feltnavn, og begge metoder accepterer et nulbaseret indeks for CMS-undertegner
Signaturverifikationsrapport
| IntegrityResult | Kryptografisk CMS- eller ældre PKCS#7-integritetsresultat for den valgte undertegner |
|---|---|
| CoverageStatus | scInvalid, scSignedRevision, or scWholeDocument |
| ByteRangeValid | Sand kun, når alle intervaller er afgrænsede, og den underskrevne revision slutter ved sin egen %%EOF |
| ContentsGapValid | Sand kun, når de udeladte byte er præcis den valgte hexadecimale /Contents-token |
| HasLaterRevisions | Sand, når den valgte underskrift autentificerer en tidligere inkrementel revision, og der findes senere byte |
| SignedRevisionLength | Bytelængden af den revision, som den valgte underskrift autentificerer |
| PermissionReport | Fortolkede DocMDP- og FieldMDP-betingelser for den valgte underskrift |
Certificering og felttilladelser
GetSignaturePermissionInfo og GetSignaturePermissionInfoByName returnerer TPDFlibSignaturePermissionReport
Rapporten skelner en gyldig DocMDP-transform fra en tilsvarende
/Perms /DocMDP-reference i kataloget og kontrollerer, at en felts /Lock-ordbog matcher dens FieldMDP-transform, handling og listen over feltnavne
Certifikatkæde og tilbagekaldelse
VerifySignerCertificateChainByIndex og VerifySignerCertificateChainByName kører standard kædevalidering for en eksplicit valgt signatur og underskriver
VerifySignerCertificateChainEx og VerifySignerCertificateChainExByName accepterer srmNone, srmCacheOnly eller srmOnline plus en valgfri verifikationstid
TPDFlibSignatureChainReport adskiller TrustStatus, Windows-kæde- og politikfejl, DSS- eller VRI-dokasntal, præcis OCSP-tilskrivning, OCSP-status, tilbagekaldelsesårsag, friskhed og native fejl
Indlejrede certifikater og valideringsmateriale kan fuldføre en kæde, men konverterer ikke en utro rod til en tro rod
DSS- eller VRI-OCSP-dokas accepteres kun, når dets svartegnatur, udsteder- eller delegert svarer-anvendelse, CertID, status og friskhed matcher det valgte certifikat
Eksterne tillidskilder
Verifier.AddTrustAnchorDER(RootCertificateDER);
Verifier.AddTrustAnchorFromFile('BusinessRoot.cer');
AnchorCount := Verifier.GetTrustAnchorCount;
Verifier.ClearTrustAnchors;
AddTrustAnchorDER og AddTrustAnchorFromFile tilføjer validerede X.509-certifikater til et i hukommelsen, dubletfrit tillidsforankringssæt
Når sættet ikke er tomt, bygges hver underskriver- og tidsstempelkæde med en eksklusiv tillidsmotor, der bruger sættet til CA-rødder og eksplicitte certifikatfastgørelser uden at konsultere Windows Root- eller TrustedPeople-lagrene
Den eksklusive motor og den parsede rod-butik mellemlagres af verifikatoren og genbruges, indtil forankringssættet ændres
Denne isolation lader en applikation anvende en privat forretningstillidspolitik uden at installere certifikater eller arve ubeslægtet maskinetillid
Tillidsforankrings-medlemskab omgår ikke certifikatgyldighed, nøgleanvendelse, signatur eller anmodede tilbagekaldelseskontroller
ClearTrustAnchors frigiver sættet og gendanner standard Windows-systemtillidsmotoren for efterfølgende kontroller
RFC 3161-tidsstempler
Verifier.SetTrustSource(TrustSource);
Source := Verifier.GetTrustSource;
SetTrustSource tilknytter en ikke-ejende TPDFlibSignatureTrustSource, der kan levere tidsspecifikke forankringer og evaluere en vellykket bygget certifikatkæde
Kildeforankringer kombineres med manuelle tilpassede forankringer i den samme eksklusive kædemotor, som mellemlagres efter kilderevision og verifikationstid
Tildeling af en kilde slår tilbagefald på Windows-systemrødder fra, når ingen kilde- eller manuel forankring er tilgængelig
En vellykket kildeevaluering fylder TPDFlibSignatureChainReport.QualificationReport uden at svække certifikatkæde-, anvendelses-, gyldigheds-, signatur- eller tilbagekaldelseskontroller
TPDFlibEUTSLTrustSource implementerer denne kontrakt for signerede EU-LOTL- og nationale TSL-dokumenter
RFC 3161-tidsstempler
VerifyDocumentTimeStamp og VerifyDocumentTimeStampByName-familien gennemgår og validerer
GetSignatureTimeStampCount og VerifySignatureTimeStamp validerer først underskriftens integritet og undertegnerkæden på det ønskede UTC-tidspunkt
Hvis kæden på det ønskede tidspunkt er ugyldig, validerer verificatoren alle underskriftstidsstempler og alle dokumenttidsstempler, hvis underskrevne revision dækker målsignaturen, udleder det tidligste betroede underskriftstidspunkt og det seneste arkiveringstidspunkt for hele dokumentet og forsøger kæden igen på disse kontroltidspunkter for eksistensbevis
En id-aa-signatureTimeStampToken på nul vælger det aktuelle UTC-tidspunkt, mens en værdi forskellig fra nul sendes direkte videre til certifikatkædepolitikken som UTC-tid
signatureValue tillader, at et betroet underskriftstidsstempel eller et dækkende dokumenttidsstempel leverer det historiske kontroltidspunkt
VerifySignatureTimeStamp og VerifySignatureTimeStampByName kræver et betroet dokumenttidsstempel, der dækker det komplette aktuelle dokument, før aktuelle DSS-, VRI-, CRL- eller OCSP-data kan behandles som historiske beviser; ellers returnerer rapporten
Ex
Et tidsstempel angiver en øvre grænse for, hvornår de underskrevne byte eksisterede, ikke en udledt underskriftstid, så et undertegnercertifikat, der allerede var ugyldigt på det valgte bevistidspunkt, forbliver ugyldigt
VerifyDocumentTimeStampEx returnerer de ønskede og de effektive kæderapporter, de bedste underskrifts- og arkivtidspunkter, den valgte beviskilde, antal tidsstempler, tidsforskydningstilstand og en specifik historisk status
VerifyDocumentTimeStampExByName efterbehandler en sådan rapport og udfylder VerifySignatureTimeStampExVerifySignatureTimeStampExByName
TPDFlibTimeStampVerificationReport
AdES historisk validering
Result := Verifier.VerifyAdESHistoricalByName(
FieldName, 0, srmCacheOnly, ValidationTime, HistoricalReport);
VerifyAdESHistorical og VerifyAdESHistoricalByName validerer først signaturintegritet og underskrivarkæden på det anmodede UTC-tidspunkt
Hvis kæden på det anmodede tidspunkt er ugyldig, validerer verifikatoren hvert signaturtidsstempel og hvert dokumenttidsstempel, hvis signerede revision dækker målsignaturen, udleder det tidligste betroede signeringstidspunkt og det seneste heldokument-arkiveringstidspunkt og gentager kæden på de kontroltidspunkter for eksistensbevis
En nul ValidationTime vælger den aktuelle UTC-tid, mens en ikke-nul værdi sendes direkte til certifikatkædepolitikken som UTC
srmNone tillader et betroet signaturtidsstempel eller et dækkende dokumenttidsstempel at levere det historiske kontroltidspunkt
srmCacheOnly og srmOnline kræver et betroet dokumenttidsstempel, der dækker det komplette aktuelle dokument, før aktuelt DSS-, VRI-, CRL- eller OCSP-materiale kan behandles som historisk dokas; ellers returnerer rapporten ahsEvidenceNotArchived
Et tidsstempel leverer en øvre grænse for, hvornår de signerede bytes eksisterede, ikke en udledt signeringstid, så et underskrivercertifikat, der allerede var ugyldigt på det valgte dokastidspunkt, forbliver ugyldigt
TPDFlibAdESHistoricalValidationReport returnerer anmodede og effektive kæderapporter, de bedste signatur- og arkivtidspunkter, den valgte dokaskilde, tidsstempelantal, tidsforskydningstilstand og en specifik historisk status
DeriveBaselineProfile efterbehandler en sådan rapport og udfylder BaselineProfile fra signaturens subfilter sammen med tidsstempel- og DSS-dokas allerede indsamlet i rapporten
ahsValidAtRequestedTime | Integriteten og kæden er gyldige uden tidsforskydning |
|---|---|
ahsValidAtProofTime | Kæden er gyldig på et kontroltidspunkt udledt af et betroet tidsstempel |
ahsIntegrityInvalid | Den valgte signatur eller dokumenttidsstempel fejler integritets- eller ByteRange-validering |
ahsNoTrustedProof | Intet betroet tidsstempel dækker den valgte signaturrevision |
ahsEvidenceNotArchived | Tilbagekaldelseskontrol blev anmodet, men intet betroet heldokument-arkivtidsstempel forsegler valideringsmaterialet |
ahsHistoricalTrustInvalid | Betroede dokastidspunkter findes, men underskrivarkæden er ugyldig på hvert udledt kontroltidspunkt |
Kompatibilitetsmetoder
VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain
ByIndex, ByName, GetSignatureMetadataByIndex og GetSignatureMetadataByName forbliver tilgængelige og vælger felt 0 og undertegner 0
De tilsvarende GetSignerCertificateByIndex- og GetSignerCertificateByName-metoder (
Se også
TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken