TPDFlibSignatureVerifier
Sikkerhet og signaturer
Beskrivelse
Går gjennom PDF-signaturfelt og CMS-signerere, validerer en valgt signatur uten å laste hele PDF-filen inn i minnet, og rapporterer den valgte signaturens egen inkrementelle revisjon atskilt fra den gjeldende filen Verifikatoren godtar en fil, en strøm som eies av kalleren, eller en ANSI-bytestreng via
OpenPDF, OpenPDFStream eller OpenPDFString
Utvalg
Count := Verifier.GetSignatureCount;
Verifier.GetSignatureFieldName(0, FieldName);
SignerCount := Verifier.GetSignerCount(0);
Result := Verifier.VerifySignatureByName(FieldName, 0, Report);
VerifySignatureByIndex velger et PDF-felt etter 0-basert indeks, mens VerifySignatureByName bruker det fullt kvalifiserte AcroForm-feltnavnet, og begge metoder godtar en 0-basert CMS-signererindeks
Signaturverifiseringsrapport
| IntegrityResult | Kryptografisk CMS- eller eldre PKCS#7-integritetsresultat for den valgte signereren |
|---|---|
| CoverageStatus | scInvalid, scSignedRevision, or scWholeDocument |
| ByteRangeValid | True bare når alle områder er avgrensede og den signerte revisjonen slutter ved sin egen %%EOF |
| ContentsGapValid | True bare når de utelatte bytene er nøyaktig det valgte heksadesimale /Contents-tokenet |
| HasLaterRevisions | True når den valgte signaturen autentiserer en tidligere inkrementell revisjon og det finnes byte etterpå |
| SignedRevisionLength | Bytelengden på revisjonen som autentiseres av den valgte signaturen |
| PermissionReport | Tolkede DocMDP- og FieldMDP-begrensninger for den valgte signaturen |
Sertifisering og felttillatelser
GetSignaturePermissionInfo og GetSignaturePermissionInfoByName returnerer TPDFlibSignaturePermissionReport
Rapporten skiller en gyldig DocMDP-transformasjon fra en samsvarende
/Perms /DocMDP-referanse i katalogen, og kontrollerer at en /Lock-ordliste på feltet samsvarer med sin FieldMDP-transformasjon, handling og feltnavnliste
Sertifikatkjede og tilbakekalling
VerifySignerCertificateChainByIndex og VerifySignerCertificateChainByName kjører standard kjedevalidering for en eksplisitt valgt signatur og en eksplisitt valgt signerer
VerifySignerCertificateChainEx og VerifySignerCertificateChainExByName legger validerte X.509-sertifikater til et duplikatfritt sett med klareringsankre i minnet
Når settet ikke er tomt, bygges hver signerer- og tidsstempelkjede med en eksklusiv klareringsmotor som bruker settet til CA-røtter og eksplisitt festede sertifikater, uten å konsultere Windows-lagrene srmNone eller srmCacheOnly
Den eksklusive motoren og det analyserte rotlageret hurtigbufres av verifikatoren og gjenbrukes til ankersettet endres
Denne isolasjonen lar en applikasjon bruke en privat forretningsklarering uten å installere sertifikater eller arve maskinens urelaterte klarering
Medlemskap i klareringsankersetten omgår ikke kontrollene av sertifikatgyldighet, nøkkelbruk, signatur eller etterspurt tilbakekalling
srmOnline frigjør settet og gjenoppretter Windows' standard klareringsmotor for påfølgende kontroller
TPDFlibSignatureChainReportTrustStatus
Eksterne tillitskilder
Verifier.AddTrustAnchorDER(RootCertificateDER);
Verifier.AddTrustAnchorFromFile('BusinessRoot.cer');
AnchorCount := Verifier.GetTrustAnchorCount;
Verifier.ClearTrustAnchors;
AddTrustAnchorDER knytter til en AddTrustAnchorFromFile uten eierskap, som kan levere tidsbestemte ankre og vurdere en vellykket bygget sertifikatkjede
Ankre fra kilden kombineres med manuelle egendefinerte ankre i samme eksklusive kjedemotor, som hurtigbufres etter kilderevisjon og verifiseringstidspunkt
Tilordning av en kilde deaktiverer tilbakefall til Windows' systemrøtter når ingen kilde eller manuelt anker er tilgjengelig
En vellykket kildevurdering fyller
Root uten å svekke kontrollene av sertifikatkjede, bruk, gyldighet, signatur eller tilbakekalling
TrustedPeople implementerer denne kontrakten for signerte EU-LOTL- og nasjonale TSL-dokumenter
ClearTrustAnchors
RFC 3161-tidsstempler
Verifier.SetTrustSource(TrustSource);
Source := Verifier.GetTrustSource;
SetTrustSource (signaturindeks) og TPDFlibSignatureTrustSource (feltnavn) validerer et dokumenttidsstempel mot signaturens ByteRange-data
TPDFlibSignatureChainReport.QualificationReport
TPDFlibEUTSLTrustSource
VerifyDocumentTimeStamp og VerifyDocumentTimeStampByName-familien lister opp og validerer
GetSignatureTimeStampCount og VerifySignatureTimeStamp validerer først signaturintegriteten og signererkjeden på det etterspurte UTC-tidspunktet
Hvis kjeden på det etterspurte tidspunktet er ugyldig, validerer verifikatoren hvert signaturtidsstempel og hvert dokumenttidsstempel hvis signerte revisjon dekker målsignaturen, utleder det tidligste klarerte signaturtidspunktet og det seneste arkivtidspunktet for hele dokumentet, og prøver kjeden på nytt ved disse kontrolltidspunktene for eksistensbevis
En id-aa-signatureTimeStampToken på null velger gjeldende UTC-tid, mens en verdi ulik null sendes rett videre til sertifikatkjedepolicyen som UTC
signatureValue tillater at et klarert signaturtidsstempel eller et dekkende dokumenttidsstempel leverer det historiske kontrolltidspunktet
VerifySignatureTimeStamp og VerifySignatureTimeStampByName krever et klarert dokumenttidsstempel som dekker hele det gjeldende dokumentet, før gjeldende DSS-, VRI-, CRL- eller OCSP-materiale kan behandles som historisk bevis; ellers returnerer rapporten
Ex
Et tidsstempel gir en øvre grense for når de signerte bytene fantes, ikke en utledet signeringstid, så et signerersertifikat som allerede var ugyldig på det valgte bevistidspunktet, forblir ugyldig
VerifyDocumentTimeStampEx returnerer etterspurte og faktiske kjederapporter, de beste signatur- og arkivtidspunktene, den valgte beviskilden, antall tidsstempler, tidsforskyvningstilstanden og en spesifikk historisk status
VerifyDocumentTimeStampExByName etterbehandler en slik rapport og fyller VerifySignatureTimeStampExVerifySignatureTimeStampExByName
TPDFlibTimeStampVerificationReport
Result := Verifier.VerifyAdESHistoricalByName(
FieldName, 0, srmCacheOnly, ValidationTime, HistoricalReport);
VerifyAdESHistoricalVerifyAdESHistoricalByName
ValidationTime
srmNone
srmCacheOnlysrmOnlineahsEvidenceNotArchived
TPDFlibAdESHistoricalValidationReport
DeriveBaselineProfileBaselineProfile
ahsValidAtRequestedTime | Integriteten og kjeden er gyldige uten tidsforskyvning |
|---|---|
ahsValidAtProofTime | Kjeden er gyldig på et klarert kontrolltidspunkt utledet fra et tidsstempel |
ahsIntegrityInvalid | Det valgte signatur- eller dokumenttidsstempelet klarer ikke integritets- eller ByteRange-validering |
ahsNoTrustedProof | Ingen klarerte tidsstempler dekker den valgte signaturrevisjonen |
ahsEvidenceNotArchived | Tilbakekallingskontroll ble etterspurt, men intet klarert arkivtidsstempel for hele dokumentet forsegler valideringsmaterialet |
ahsHistoricalTrustInvalid | Klarerte bevistidspunkter finnes, men signererkjeden er ugyldig på hvert utledede kontrolltidspunkt |
Kompatibilitetsmetoder
VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain
ByIndex, ByName, GetSignatureMetadataByIndex og GetSignatureMetadataByName forblir tilgjengelige og velger felt 0 og signereren med indeks 0
De tilsvarende GetSignerCertificateByIndex- og GetSignerCertificateByName-metodene (
Se også
TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken