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

IntegrityResultKryptografisk CMS- eller eldre PKCS#7-integritetsresultat for den valgte signereren
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidTrue bare når alle områder er avgrensede og den signerte revisjonen slutter ved sin egen %%EOF
ContentsGapValidTrue bare når de utelatte bytene er nøyaktig det valgte heksadesimale /Contents-tokenet
HasLaterRevisionsTrue når den valgte signaturen autentiserer en tidligere inkrementell revisjon og det finnes byte etterpå
SignedRevisionLengthBytelengden på revisjonen som autentiseres av den valgte signaturen
PermissionReportTolkede 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

ahsValidAtRequestedTimeIntegriteten og kjeden er gyldige uten tidsforskyvning
ahsValidAtProofTimeKjeden er gyldig på et klarert kontrolltidspunkt utledet fra et tidsstempel
ahsIntegrityInvalidDet valgte signatur- eller dokumenttidsstempelet klarer ikke integritets- eller ByteRange-validering
ahsNoTrustedProofIngen klarerte tidsstempler dekker den valgte signaturrevisjonen
ahsEvidenceNotArchivedTilbakekallingskontroll ble etterspurt, men intet klarert arkivtidsstempel for hele dokumentet forsegler valideringsmaterialet
ahsHistoricalTrustInvalidKlarerte 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