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

IntegrityResultCryptografisch CMS- of legacy PKCS#7-integriteitsresultaat voor de geselecteerde ondertekenaar
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidAlleen True wanneer alle bereiken begrensd zijn en de ondertekende revisie eindigt op zijn eigen %%EOF
ContentsGapValidAlleen True wanneer de weggelaten bytes exact het geselecteerde hexadecimale /Contents-token zijn
HasLaterRevisionsTrue wanneer de geselecteerde handtekening een eerdere incrementele revisie authenticeert en er latere bytes bestaan
SignedRevisionLengthBytelengte van de revisie die door de geselecteerde handtekening wordt geauthenticeerd
PermissionReportGeparseerde 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

ahsValidAtRequestedTimeDe integriteit en de keten zijn geldig zonder tijdverschuiving
ahsValidAtProofTimeDe keten is geldig op een vertrouwde, uit een tijdstempel afgeleide controletijd
ahsIntegrityInvalidDe geselecteerde handtekening of documenttijdstempel slaagt niet voor de integriteits- of ByteRange-validatie
ahsNoTrustedProofGeen enkele vertrouwde tijdstempel bestrijkt de geselecteerde handtekeningrevisie
ahsEvidenceNotArchivedIntrekkingscontrole is aangevraagd, maar geen enkele vertrouwde archiveringstijdstempel voor het hele document verzegelt het validatiemateriaal
ahsHistoricalTrustInvalidEr 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