TPDFlibSignatureVerifier
Beveiliging en handtekeningen
Beschrijving
Somt PDF-handtekeningvelden en CMS-ondertekenaars op, valideert een geselecteerde handtekening zonder de volledige PDF in het geheugen te laden en rapporteert de eigen incrementele revisie van de geselecteerde handtekening apart van het huidige bestand De verificateur accepteert een bestand, een stream die de aanroeper beheert of een ANSI-bytestring via
OpenPDF, OpenPDFStream of OpenPDFString
Selectie
Count := Verifier.GetSignatureCount;
Verifier.GetSignatureFieldName(0, FieldName);
SignerCount := Verifier.GetSignerCount(0);
Result := Verifier.VerifySignatureByName(FieldName, 0, Report);
VerifySignatureByIndex selecteert een PDF-veld op basis van een index beginnend bij 0, terwijl VerifySignatureByName de volledig gekwalificeerde AcroForm-veldnaam gebruikt; beide methoden accepteren een CMS-ondertekenaarsindex beginnend bij 0
Handtekeningverificatierapport
| IntegrityResult | Cryptografisch CMS- of legacy PKCS#7-integriteitsresultaat voor de geselecteerde ondertekenaar |
|---|---|
| CoverageStatus | scInvalid, scSignedRevision, or scWholeDocument |
| ByteRangeValid | Alleen True wanneer alle bereiken begrensd zijn en de ondertekende revisie eindigt op zijn eigen %%EOF |
| ContentsGapValid | Alleen True wanneer de weggelaten bytes exact het geselecteerde hexadecimale /Contents-token zijn |
| HasLaterRevisions | True wanneer de geselecteerde handtekening een eerdere incrementele revisie authenticeert en er latere bytes bestaan |
| SignedRevisionLength | Bytelengte van de revisie die door de geselecteerde handtekening wordt geauthenticeerd |
| PermissionReport | Geparseerde DocMDP- en FieldMDP-beperkingen voor de geselecteerde handtekening |
Certificering en veldmachtigingen
GetSignaturePermissionInfo en GetSignaturePermissionInfoByName geven TPDFlibSignaturePermissionReport terug
/Perms /DocMDP en controleert dat een /Lock-woordenboek van een veld overeenkomt met zijn FieldMDP-transformatie, actie en lijst met veldnamen
Certificaatketen en intrekking
VerifySignerCertificateChainByIndex en VerifySignerCertificateChainByName voeren de standaardketenvalidatie uit voor een expliciet geselecteerde handtekening en ondertekenaar
VerifySignerCertificateChainEx en VerifySignerCertificateChainExByName accepteren srmNone, srmCacheOnly of srmOnline, plus een optionele verificatietijd
TPDFlibSignatureChainReport splitst TrustStatus, Windows-keten- en beleidsfouten, DSS- of VRI-bewijsaantallen, exacte OCSP-toeschrijving, OCSP-status, intrekkingsreden, versheid en native fouten
Ingebedde certificaten en validatiemateriaal kunnen een keten voltooien, maar maken geen onvertrouwde root tot een vertrouwde root
DSS- of VRI-OCSP-bewijs wordt alleen geaccepteerd wanneer de handtekening van de responder, het gebruik door uitgever of gedelegeerde responder, CertID, status en versheid overeenkomen met het geselecteerde certificaat
Externe vertrouwensbronnen
Verifier.AddTrustAnchorDER(RootCertificateDER);
Verifier.AddTrustAnchorFromFile('BusinessRoot.cer');
AnchorCount := Verifier.GetTrustAnchorCount;
Verifier.ClearTrustAnchors;
AddTrustAnchorDER en AddTrustAnchorFromFile voegen gevalideerde X.509-certificaten toe aan een in-memory, duplicaatvrije set vertrouwensankers
Root zonder de controles op certificaatketen, gebruik, geldigheid, handtekening of intrekking te verzwakken
TrustedPeople implementeert dit contract voor ondertekende EU-LOTL- en nationale TSL-documenten
De exclusieve machine en de geparseerde rootopslag worden door de verifier gecacht en hergebruikt totdat de ankerset verandert
Deze isolatie laat een toepassing een privé-bedrijfsvertrouwensbeleid toepassen zonder certificaten te installeren of ongerelateerd machinevertrouwen te erven
Lidmaatschap van de vertrouwensankerset omzeilt geen controles van certificaatgeldigheid, sleutelgebruik, handtekening of gevraagde intrekking
ClearTrustAnchors geeft de set vrij en herstelt de standaard Windows-systeemvertrouwensmachine voor volgende controles
RFC 3161-tijdstempels
Verifier.SetTrustSource(TrustSource);
Source := Verifier.GetTrustSource;
SetTrustSource (handtekeningindex) en TPDFlibSignatureTrustSource (veldnaam) valideren een documenttijdstempel tegen de ByteRange-gegevens van de handtekening
Bronankers worden gecombineerd met handmatige aangepaste ankers in dezelfde exclusieve ketenmachine, die wordt gecacht op bronrevisie en verificatietijdstip
Een bron toewijzen schakelt terugval naar Windows-systeemroots uit wanneer geen bron of handmatig anker beschikbaar is
Een geslaagde bronbeoordeling vult TPDFlibSignatureChainReport.QualificationReport zonder controles van certificaatketen, gebruik, geldigheid, handtekening of intrekking te verzwakken
TPDFlibEUTSLTrustSource implementeert dit contract voor ondertekende EU-LOTL- en nationale TSL-documenten
RFC 3161-tijdstempels
VerifyDocumentTimeStamp en de VerifyDocumentTimeStampByName-familie sommen
GetSignatureTimeStampCount en de VerifySignatureTimeStamp-familie enummeren en valideren id-aa-signatureTimeStampToken-attributen tegen de signatureValue van de gekozen CMS-ondertekenaar; VerifySignatureTimeStamp selecteert de handtekening op index en VerifySignatureTimeStampByName op veldnaam
De Ex-varianten (VerifyDocumentTimeStampEx, VerifyDocumentTimeStampExByName, VerifySignatureTimeStampEx, VerifySignatureTimeStampExByName) accepteren ook intrekkingsmodus, verwacht beleids-OID en verwachte nonce
TPDFlibTimeStampVerificationReport meldt onafhankelijk de geldigheid van de tokensignatuur, de geldigheid van de message imprint, TSA EKU en naambinding, beleid, nonce, generatietijdstip, ketenresultaat en vertrouwensstatus
AdES-historische validatie
Result := Verifier.VerifyAdESHistoricalByName(
FieldName, 0, srmCacheOnly, ValidationTime, HistoricalReport);
VerifyAdESHistorical en VerifyAdESHistoricalByName valideren eerst de handtekeningintegriteit en de ondertekenaarsketen op de gevraagde UTC-tijd
Als de keten op de gevraagde tijd ongeldig is, valideert de verifier elke handtekeningtijdstempel en elke documenttijdstempel waarvan de ondertekende revisie de doelhooftekening dekt, leidt de vroegste vertrouwde handtekeningtijd en de laatste archieftijd van het hele document af en herhaalt de keten op die controle tijdstippen van bestaanbewijs
Een ValidationTime van nul kiest de huidige UTC-tijd, terwijl een niet-nul waarde rechtstreeks als UTC naar het certificaatketenbeleid wordt doorgegeven
srmNone staat toe dat een vertrouwde handtekeningtijdstempel of dekkende documenttijdstempel de historische controletijd levert
srmCacheOnly en srmOnline vereisen een vertrouwde documenttijdstempel die het volledige huidige document dekt voordat actuele DSS-, VRI-, CRL- of OCSP-materiaal als historisch bewijs mag gelden; anders geeft het rapport ahsEvidenceNotArchived terug
Een tijdstempel levert een bovengrens voor wanneer de ondertekende bytes bestonden, geen afgeleide ondertekentijd, dus een ondertekenaarscertificaat dat al ongeldig was op de gekozen proeftijd blijft ongeldig
TPDFlibAdESHistoricalValidationReport geeft de gevraagde en effectieve ketenrapporten, de beste handtekening- en archieftijden, de gekozen bewijsbron, tijdstempelaantallen, tijdsverschuivingstoestand en een specifieke historische status terug
DeriveBaselineProfile verwerkt zo'n rapport naderhand en vult BaselineProfile vanuit het handtekening-subfilter samen met de tijdstempel- en DSS-bewijzen die al in het rapport zijn verzameld
ahsValidAtRequestedTime | De integriteit en de keten zijn geldig zonder tijdverschuiving |
|---|---|
ahsValidAtProofTime | De keten is geldig op een vertrouwde, uit een tijdstempel afgeleide controletijd |
ahsIntegrityInvalid | De geselecteerde handtekening of documenttijdstempel slaagt niet voor de integriteits- of ByteRange-validatie |
ahsNoTrustedProof | Geen enkele vertrouwde tijdstempel bestrijkt de geselecteerde handtekeningrevisie |
ahsEvidenceNotArchived | Intrekkingscontrole is aangevraagd, maar geen enkele vertrouwde archiveringstijdstempel voor het hele document verzegelt het validatiemateriaal |
ahsHistoricalTrustInvalid | Er bestaan vertrouwde bewijstijden, maar de ondertekenaarsketen is op elke afgeleide controletijd ongeldig |
Compatibiliteitsmethoden
VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain
ByIndex, ByName, GetSignatureMetadataByIndex en GetSignatureMetadataByName blijven beschikbaar en selecteren veld 0 en ondertekenaar 0
De bijbehorende GetSignerCertificateByIndex- en GetSignerCertificateByName-methoden (
Zie ook
TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken