TPDFlibSignatureVerifier

Säkerhet och signaturer

Beskrivning

Räknar upp PDF-signaturfält och CMS-undertecknare, validerar en vald signatur utan att läsa in hela PDF-filen i minnet och redogör för den valda signaturens egen inkrementella revision separat från den aktuella filen Verifieraren tar emot en fil, en ström som anroparen äger eller en ANSI-bytesträng 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äljer ett PDF-fält via nollbaserat index, medan VerifySignatureByName använder det fullständigt kvalificerade AcroForm-fältnamnet, och båda metoderna tar emot ett nollbaserat CMS-undertecknarindex

Signaturverifieringsrapport

IntegrityResultKryptografiskt CMS- eller äldre PKCS#7-integritetsresultat för den valda undertecknaren
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidSant endast när alla intervall är avgränsade och den signerade revisionen slutar vid sin egen %%EOF
ContentsGapValidSant endast när de utelämnade bytena är exakt den valda hexadecimala /Contents-token
HasLaterRevisionsSant när den valda signaturen autentiserar en tidigare inkrementell revision och senare byte finns
SignedRevisionLengthBytelängden för den revision som den valda signaturen autentiserar
PermissionReportTolkade DocMDP- och FieldMDP-begränsningar för den valda signaturen

Certifiering och fälträttigheter

GetSignaturePermissionInfo och GetSignaturePermissionInfoByName returnerar TPDFlibSignaturePermissionReport Rapporten skiljer en giltig DocMDP-transform från en motsvarande katalogreferens

/Perms /DocMDP och kontrollerar att ett fälts /Lock-ordlista matchar dess FieldMDP-transform, åtgärd och lista över fältnamn

Certifikatkedja och spärrning

VerifySignerCertificateChainByIndex och VerifySignerCertificateChainByName kör standardvalideringen av kedjan för en explicit vald signatur och undertecknare

VerifySignerCertificateChainEx och VerifySignerCertificateChainExByName lägger validerade X.509-certifikat till en minnesintern uppsättning förtroendeankare utan dubbletter När uppsättningen inte är tom byggs varje undertecknar- och tidsstämpelkedja med en exklusiv förtroendemotor som använder uppsättningen för CA-rötter och explicita certifikatfästningar, utan att konsultera Windows-arkiven srmNone eller srmCacheOnly Den exklusiva motorn och det tolkade rotarkivet cachas av verifieraren och återanvänds tills ankaruppsättningen ändras Denna isolering låter ett program tillämpa en privat affärsinriktad förtroendepolicy utan att installera certifikat eller ärva orelaterat maskinförtroende Medlemskap bland förtroendeankare kringgår inte kontroller av certifikatgiltighet, nyckelanvändning, signatur eller begärd spärrning srmOnline frigör uppsättningen och återställer Windows standardmotor för systemförtroende vid efterföljande kontroller

TPDFlibSignatureChainReportTrustStatus

Inbäddade certifikat och valideringsmaterial kan komplettera en kedja men gör inte en otillförlitlig rot till en tillförlitlig rot

DSS- eller VRI-OCSP-bevis godtas bara när dess respondersignatur, utfärdar- eller delegerad responder-användning, CertID, status och färskhet matchar det valda certifikatet

Externa förtroendekällor

Verifier.AddTrustAnchorDER(RootCertificateDER);
Verifier.AddTrustAnchorFromFile('BusinessRoot.cer');
AnchorCount := Verifier.GetTrustAnchorCount;
Verifier.ClearTrustAnchors;

AddTrustAnchorDER knyter en icke ägande AddTrustAnchorFromFile som kan leverera tidsspecifika ankare och utvärdera en framgångsrikt uppbyggd certifikatkedja Källankare kombineras med manuella egna ankare i samma exklusiva kedjemotor, som cachas per källrevision och verifieringstid Att knyta en källa inaktiverar återgången till Windows systemrötter när varken källa eller manuellt ankare är tillgängligt En lyckad källutvärdering fyller

Root utan att försvaga kontrollerna av certifikatkedja, användning, giltighet, signatur eller spärrning TrustedPeople implementerar detta kontrakt för signerade EU-LOTL- och nationella TSL-dokument

Den exklusiva motorn och det tolkade rotlagret cachas av verifieraren och återanvänds tills ankarmängden ändras

Denna isolering låter ett program tillämpa en privat affärstillförlitpolicy utan att installera certifikat eller ärva orelaterad maskintillförlit

Medlemskap i tillförlitliga ankare kringgår inte kontroller av certifikatgiltighet, nyckelanvändning, signatur eller begärd spärrning

ClearTrustAnchors

RFC 3161-tidsstämplar

Verifier.SetTrustSource(TrustSource);
Source := Verifier.GetTrustSource;

SetTrustSource (signaturindex) och TPDFlibSignatureTrustSource (fältnamn) validerar en dokumenttidsstämpel mot signaturens ByteRange-data

Källankare kombineras med manuella egna ankare i samma exklusiva kedjemotor, som cachas efter källrevision och verifieringstid

Att tilldela en källa inaktiverar reserven mot Windows-systemrötter när ingen källa eller ett manuellt ankare är tillgängligt

TPDFlibSignatureChainReport.QualificationReport

TPDFlibEUTSLTrustSource

RFC 3161-tidsstämplar

VerifyDocumentTimeStamp och familjen VerifyDocumentTimeStampByName räknar upp och validerar attribut av typen

GetSignatureTimeStampCount och VerifySignatureTimeStamp validerar först signaturintegriteten och undertecknarkedjan vid den begärda UTC-tiden Om kedjan vid den begärda tiden är ogiltig validerar verifieraren varje signaturtidsstämpel och varje dokumenttidsstämpel vars signerade revision täcker målsignaturen, härleder den tidigaste betrodda signaturtiden och den senaste arkivtiden för hela dokumentet och prövar kedjan igen vid de där kontrolltiderna för existensbevis Ett nollställt id-aa-signatureTimeStampToken väljer aktuell UTC-tid, medan ett värde skilt från noll skickas rakt igenom till certifikatkedjepolicyn som UTC signatureValue tillåter att en betrodd signaturtidsstämpel eller en täckande dokumenttidsstämpel lämnar den historiska kontrolltiden VerifySignatureTimeStamp och VerifySignatureTimeStampByName kräver en betrodd dokumenttidsstämpel som täcker hela det aktuella dokumentet innan aktuellt DSS-, VRI-, CRL- eller OCSP-material kan behandlas som historisk bevisning; annars returnerar rapporten

Ex En tidsstämpel ger en övre gräns för när de signerade bytena existerade, inte en härledd signeringstid, så ett undertecknarcertifikat som redan var ogiltigt vid den valda bevestiden förblir ogiltigt VerifyDocumentTimeStampEx returnerar kedjerapporter för begärd och effektiv tid, de bästa signatur- och arkivtiderna, den valda beviskällan, antal tidsstämplar, tidsglidningstillstånd och en specifik historisk status VerifyDocumentTimeStampExByName efterbearbetar en sådan rapport och fyller VerifySignatureTimeStampExVerifySignatureTimeStampExByName

TPDFlibTimeStampVerificationReport

AdES historisk validering

Result := Verifier.VerifyAdESHistoricalByName(
  FieldName, 0, srmCacheOnly, ValidationTime, HistoricalReport);

VerifyAdESHistoricalVerifyAdESHistoricalByName

Om kedjan vid den begärda tiden är ogiltig validerar verifieraren varje signaturtidsstämpel och varje dokumenttidsstämpel vars signerade revision täcker målsignaturen, härleder den tidigaste tillförlitliga signeringstiden och den senaste arkivtiden för hela dokumentet och prövar kedjan igen vid de kontrolltiderna för existensbevis

ValidationTime

srmNone

srmCacheOnlysrmOnlineahsEvidenceNotArchived

En tidsstämpel ger en övre gräns för när de signerade bytena existerade, inte en härledd signeringstid, så ett signeringscertifikat som redan var ogiltigt vid den valda bevisstiden förblir ogiltigt

TPDFlibAdESHistoricalValidationReport

DeriveBaselineProfileBaselineProfile

ahsValidAtRequestedTimeIntegriteten och kedjan är giltiga utan tidsglidning
ahsValidAtProofTimeKedjan är giltig vid en kontrolltid som härletts ur en betrodd tidsstämpel
ahsIntegrityInvalidDen valda signaturen eller dokumenttidsstämpeln underkänns i integritets- eller ByteRange-validering
ahsNoTrustedProofIngen betrodd tidsstämpel täcker den valda signaturrevisionen
ahsEvidenceNotArchivedSpärrkontroll begärdes, men ingen betrodd arkivtidsstämpel för hela dokumentet förseglar valideringsmaterialet
ahsHistoricalTrustInvalidBetrodda bevestider finns, men undertecknarkedjan är ogiltig vid varje härledd kontrolltid

Kompatibilitetsmetoder

VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain

ByIndex, ByName, GetSignatureMetadataByIndex och GetSignatureMetadataByName finns kvar och väljer fält 0 och undertecknare 0 De motsvarande metoderna GetSignerCertificateByIndex och GetSignerCertificateByName (

Se även

TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken