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

IntegrityResultKryptografisk CMS- eller ældre PKCS#7-integritetsresultat for den valgte undertegner
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidSand kun, når alle intervaller er afgrænsede, og den underskrevne revision slutter ved sin egen %%EOF
ContentsGapValidSand kun, når de udeladte byte er præcis den valgte hexadecimale /Contents-token
HasLaterRevisionsSand, når den valgte underskrift autentificerer en tidligere inkrementel revision, og der findes senere byte
SignedRevisionLengthBytelængden af den revision, som den valgte underskrift autentificerer
PermissionReportFortolkede 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

ahsValidAtRequestedTimeIntegriteten og kæden er gyldige uden tidsforskydning
ahsValidAtProofTimeKæden er gyldig på et kontroltidspunkt udledt af et betroet tidsstempel
ahsIntegrityInvalidDen valgte signatur eller dokumenttidsstempel fejler integritets- eller ByteRange-validering
ahsNoTrustedProofIntet betroet tidsstempel dækker den valgte signaturrevision
ahsEvidenceNotArchivedTilbagekaldelseskontrol blev anmodet, men intet betroet heldokument-arkivtidsstempel forsegler valideringsmaterialet
ahsHistoricalTrustInvalidBetroede 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