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
| IntegrityResult | Kryptografiskt CMS- eller äldre PKCS#7-integritetsresultat för den valda undertecknaren |
|---|---|
| CoverageStatus | scInvalid, scSignedRevision, or scWholeDocument |
| ByteRangeValid | Sant endast när alla intervall är avgränsade och den signerade revisionen slutar vid sin egen %%EOF |
| ContentsGapValid | Sant endast när de utelämnade bytena är exakt den valda hexadecimala /Contents-token |
| HasLaterRevisions | Sant när den valda signaturen autentiserar en tidigare inkrementell revision och senare byte finns |
| SignedRevisionLength | Bytelängden för den revision som den valda signaturen autentiserar |
| PermissionReport | Tolkade 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
ahsValidAtRequestedTime | Integriteten och kedjan är giltiga utan tidsglidning |
|---|---|
ahsValidAtProofTime | Kedjan är giltig vid en kontrolltid som härletts ur en betrodd tidsstämpel |
ahsIntegrityInvalid | Den valda signaturen eller dokumenttidsstämpeln underkänns i integritets- eller ByteRange-validering |
ahsNoTrustedProof | Ingen betrodd tidsstämpel täcker den valda signaturrevisionen |
ahsEvidenceNotArchived | Spärrkontroll begärdes, men ingen betrodd arkivtidsstämpel för hela dokumentet förseglar valideringsmaterialet |
ahsHistoricalTrustInvalid | Betrodda 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