PDFVerifier Class
Properties Methods Events Configuration Settings Errors
The PDFVerifier class verifies signatures over PDF documents.
Syntax
secureblackbox.Pdfverifier
Remarks
Use PDFVerifier to validate electronic signatures over PDF documents. Generic and PAdES signatures are supported.
PDFVerifier validates each signature from two perspectives: the integrity and validity of the signature itself (i.e. its correspondence to the document data it covers), and the validity and trustworthiness of the signing certificate chain. These two signature aspects are generally independent of each other: the signature may be valid but the chain may not be trusted, or, the other way round, the chain may be trusted, but the integrity of the signature may be violated. Under normal circumstances both the signature and the chain must be valid for the signature to be considered good.
To initiate the validation, assign the path to the signed PDF file to the InputFile property (alternatively, you can provide it in a memory buffer via InputBytes property), and call Verify method. For every signature located in the document, PDFVerifier will fire the SignatureFound event. This event lets you specify whether you want PDFVerifier to validate the signature, the chain, or both.
Note: it does not mean that any of the two is optional. This API lets you be flexible in how you validate documents in your code in accordance with the specifics of your application and its usage scenarios. For example, if your trust environment relies on certificate pinning, validating the chain by PDFVerifier internally may cause unnecessary burden on the system, in which case it may be reasonable to disable it in the event handler.
Once SignatureFound returns, PDFVerifier proceeds to the signature validation routine in accordance with the provided settings. Upon completion of the validation, SignatureValidated event is fired, and the validation results are separately provided via SignatureValidationResult and ChainValidationResult properties. Other information about the signature can be accessed via the Signature property.
PDF format uses incremental updates to introduce changes to the document. This implies that a signature may cover not the whole document but, rather, a certain revision of it. Strictly speaking, every signature in a PDF document apart from, perhaps, the last one covers just some part of the document. In most cases that part matches the revision of the document that existed before all the subsequent signatures had been added.
Because of this specifics of PDF format it is crucially important to understand what part of the document is covered by a specific signature. Use the CoverageEndsAt to establish the scope of a signature. The revision of the document covered by that specific signature ranges from byte 0 to CoverageEndsAt. Alternatively, you can use the GetSignedVersion method to extract the signed revision to a file.
Useful settings and properties
The following properties of PDFVerifier may be handy when working with this component:
- OfflineMode lets you validate the document without contacting online revocation sources. Paired with switched off system trust settings, it can be used to establish the long-term validity of the document and the completeness of validation material included in it.
- RevocationCheck lets you adjust the revocation checking preferences.
- ValidatedSigningTime returns the signing time as recorded in the embedded signature timestamp. This is in contrast to ClaimedSigningTime, which returns the signing time as specified by the signer.
- ValidationLog is a great way to find out the details of chain validation failures. This property returns a comprehensive validation log that reports all the issues encountered during the validation.
- If the document is encrypted (in addition to being signed), DecryptionInfoNeeded event will fire, asking you for the decryption certificate or password.
By default, PDFVerifier uses the system trust settings to establish certificate chain validity. You can configure it to use your own, custom validation environment by providing the necessary trust elements via KnownCertificates, TrustedCertificates, KnownCRLs, and other similar properties.
Property List
The following is the full list of the properties of the class with short descriptions. Click on the links for further details.
AllSignaturesValid | The cumulative validity of all signatures. |
BlockedCertificates | The certificates that must be rejected as trust anchors. |
Certificates | A collection of certificates included in the electronic signature. |
ChainValidationDetails | The details of a certificate chain validation outcome. |
ChainValidationResult | The general outcome of a certificate chain validation routine. Use ChainValidationDetails to get information about the reasons that contributed to the validation result. |
ClaimedSigningTime | Returns a signature's claimed signing time. |
CRLs | A collection of certificate revocation lists embedded into the signature by the signer. |
DecryptionCertificate | A decryption certificate. |
DecryptionCertificates | A collection of decryption certificates. |
Encrypted | Indicates if the PDF document is encrypted. |
EncryptionAlgorithm | The symmetric algorithm used to encrypt the document. |
EncryptionType | The document encryption type. |
IgnoreChainValidationErrors | Makes the class tolerant to chain validation errors. |
InputBytes | Use this property to pass the input to class in the byte array form. |
InputFile | A path to the signed PDF file. |
InputStream | A stream containing the PDF document to be verified. |
KnownCertificates | Additional certificates for chain validation. |
KnownCRLs | Additional CRLs for chain validation. |
KnownOCSPs | Additional OCSP responses for chain validation. |
MetadataEncrypted | Indicates if the document metadata is encrypted. |
OCSPs | A collection of OCSP responses embedded into the signature. |
OfflineMode | Switches the class to the offline mode. |
Password | The decryption password. |
Permissions | Contains the document permissions associated with the encryption. |
Profile | Specifies a pre-defined profile to apply when creating the signature. |
Proxy | The proxy server settings. |
Qualified | Indicates a qualified electronic signature. |
RevocationCheck | Specifies the kind(s) of revocation check to perform. |
Signature | Contains the details of the signature that is currently being validated. |
Signatures | Provides details of all signatures found in the PDF document. |
SignatureValidationResult | The signature validation result. |
SigningCertificate | The certificate of the signature creator. |
SocketSettings | Manages network connection settings. |
Timestamp | Contains the timestamp which is being validated. |
Timestamped | Indicates whether or not the signature is timestamped. |
TLSClientChain | The TLS client certificate chain. |
TLSServerChain | The TLS server's certificate chain. |
TLSSettings | Manages TLS layer settings. |
TrustedCertificates | A list of trusted certificates for chain validation. |
TSACertificate | The certificate of the Time Stamping Authority. |
ValidatedSigningTime | Contains the certified signing time. |
ValidationLog | Contains the complete log of the certificate validation routine. |
ValidationMoment | The time point at which signature validity is to be established. |
Method List
The following is the full list of the methods of the class with short descriptions. Click on the links for further details.
Config | Sets or retrieves a configuration setting. |
GetSignedVersion | Returns the part of the document that is covered by the signature. |
Verify | Verifies a signed PDF document. |
Event List
The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.
ChainValidated | Reports the completion of a certificate chain validation. |
DecryptionInfoNeeded | Requests decryption information during decryption, signing, or validation. |
Error | Information about errors during signing/validation. |
Notification | This event notifies the application about an underlying control flow event. |
RecipientFound | Provides recipient certificate details to the application. |
SignatureFound | Signifies the start of signature validation. |
SignatureValidated | Marks the completion of the signature validation routine. |
TimestampFound | Signifies the start of a timestamp validation routine. |
TimestampValidated | Reports the completion of the timestamp validation routine. |
TLSCertValidate | This event is fired upon receipt of the TLS server's certificate, allowing the user to control its acceptance. |
Configuration Settings
The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.
CustomTSLs | Specifies the custom TSLs. |
EmptySignatureFieldAddRevInfo[Index] | Specifies if revocation checking should be performed. |
EmptySignatureFieldAlternateName[Index] | Contains an alternate field name. |
EmptySignatureFieldCount | The number of empty signature form fields. |
EmptySignatureFieldFlags[Index] | The field flags of the signature form field. |
EmptySignatureFieldHeight[Index] | The Height of the empty signature form field. |
EmptySignatureFieldInvisible[Index] | The visibility status of the field. |
EmptySignatureFieldLegalAttestations[Index] | Specifies the legal attestations that are associated with the signature. |
EmptySignatureFieldMappingName[Index] | The mapping name to be used when exporting form field data from the document. |
EmptySignatureFieldName[Index] | Textual field name. |
EmptySignatureFieldOffsetX[Index] | The field's offset from the left page border. |
EmptySignatureFieldOffsetY[Index] | The field's offset from the bottom page border. |
EmptySignatureFieldPage[Index] | The index of the form field's page in the document. |
EmptySignatureFieldRequiredAllowedChanges[Index] | Specifies the changes allowed by the signature. |
EmptySignatureFieldRequiredConstraints[Index] | Specifies the required Seed Value Dictionary (SVD) constraints. |
EmptySignatureFieldRequiredDigestAlgorithms[Index] | Specifies the required digest algorithms. |
EmptySignatureFieldRequiredFilter[Index] | Specifies the required filter. |
EmptySignatureFieldRequiredLockAction[Index] | Indicates which set of fields shall be locked. |
EmptySignatureFieldRequiredLockFields[Index] | Indicates the fields that shall be locked on signing. |
EmptySignatureFieldRequiredReasons[Index] | Specifies the required reasons. |
EmptySignatureFieldRequiredSubfilters[Index] | Specifies the required subfilters. |
EmptySignatureFieldTimestampRequired[Index] | Specifies if the signature should be time-stamped. |
EmptySignatureFieldTSPURL[Index] | URL for a TSP server. |
EmptySignatureFieldWidth[Index] | The Width of the empty signature form field. |
EncryptionHandlerName | Specifies the custom security handler PDF-name. |
ForceCompleteChainValidation | Whether to check issuer (CA) certificates when the signing certificate is invalid. |
ForceCompleteChainValidationForTrusted | Whether to continue with the full validation up to the root CA certificate for mid-level trust anchors. |
GracePeriod | Specifies a grace period to apply during revocation information checks. |
HardenedKeyGeneration | Specifies if hardened Key generation should be used. |
IgnoreOCSPNoCheckExtension | Whether OCSP NoCheck extension should be ignored. |
IgnoreSystemTrust | Whether trusted Windows Certificate Stores should be treated as trusted. |
ImplicitlyTrustSelfSignedCertificates | Whether to trust self-signed certificates. |
PageInfoCount | The number of pages. |
PageInfoCropBoxEmpty[Index] | Check if the page's crop box is empty or not. |
PageInfoCropLLX[Index] | Defines the X coordinate of the lower left corner of the crop box. |
PageInfoCropLLY[Index] | Defines the Y coordinate of the lower left corner of the crop box. |
PageInfoCropURX[Index] | Defines the X coordinate of the upper right corner of the crop box. |
PageInfoCropURY[Index] | Defines the Y coordinate of the upper right corner of the crop box. |
PageInfoHeight[Index] | The Height of the page. |
PageInfoMediaLLX[Index] | Defines the X coordinate of the lower left corner of the media box. |
PageInfoMediaLLY[Index] | Defines the Y coordinate of the lower left corner of the media box. |
PageInfoMediaURX[Index] | Defines the X coordinate of the upper right corner of the media box. |
PageInfoMediaURY[Index] | Defines the Y coordinate of the upper right corner of the media box. |
PageInfoRotate[Index] | The Rotate value of the page. |
PageInfoUserUnit[Index] | Defines the size of default user space units. |
PageInfoWidth[Index] | The Width of the page. |
PromoteLongOCSPResponses | Whether long OCSP responses are requested. |
PSSUsed | Whether RSASSA-PSS mode was used. |
QualifiedStatus | Indicates a qualified electronic signature. |
RC4KeyBits | Specifies the number of key bits used for RC4 algorithm. |
TolerateMinorChainIssues | Whether to tolerate minor chain issues. |
TSLDistributionPoints | Contains XML content of distribution points of the TSL used. |
TSLDistributionPoints[Idx] | Contains distribution point of the specified index of the TSL used. |
TSLHistoricalInformationPeriod | Contains historical information period of the TSL used. |
TSLLegalNotices | Contains XML content of legal notices of the TSL used. |
TSLLegalNotices[lang] | Contains legal notices for the specified language of the TSL used. |
TSLListIssueDateTime | Contains list issue date and time of the TSL used. |
TSLNextUpdate | Contains next update date and time of the TSL used. |
TSLPolicies | Contains XML content of policies of the TSL used. |
TSLPolicies[lang] | Contains policies for the specified language of the TSL used. |
TSLSchemeExtensions | Contains XML content of scheme extensions of the TSL used. |
TSLSchemeExtensions[Idx] | Contains XML content of scheme extension of the specified index of the TSL used. |
TSLSchemeInformationURI | Contains XML content of scheme information URI of the TSL used. |
TSLSchemeInformationURI[lang] | Contains scheme information URI for the specified language of the TSL used. |
TSLSchemeName | Contains XML content of scheme name of the TSL used. |
TSLSchemeName[lang] | Contains scheme name for the specified language of the TSL used. |
TSLSchemeOperatorAddress | Contains XML content of scheme operator address of the TSL used. |
TSLSchemeOperatorName | Contains XML content of scheme operator name of the TSL used. |
TSLSchemeOperatorName[lang] | Contains scheme operator name for the specified language of the TSL used. |
TSLSchemeTerritory | Contains scheme territory of the TSL used. |
TSLSchemeTypeCommunityRules | Contains XML content of scheme type/community/rules of the TSL used. |
TSLSchemeTypeCommunityRules[lang] | Contains scheme type/community/rules for the specified language of the TSL used. |
TSLSequenceNumber | Contains sequence number of the TSL used. |
TSLsRetrieveLog | Contains the complete log of the TSLs retrieve. |
TSLStatusDeterminationApproach | Contains status determination approach of the TSL used. |
TSLsValidationLog | Contains the complete log of the TSLs validation. |
TSLTSPAdditionalServiceInformation | Contains addtional service information of the TSP service used. |
TSLTSPAddress | Contains XML content of the address of the TSP used. |
TSLTSPHistoryInstance | Indicates that TSP service history instance used. |
TSLTSPHistoryInstanceAdditionalServiceInformation | Contains addtional service information of the TSP service history instance used. |
TSLTSPHistoryInstanceQualifiers | Contains list of qualifiers of the TSP service history instance used. |
TSLTSPHistoryInstanceServiceInformationExtensions | Contains XML content of information extensions of the TSP service history instance used. |
TSLTSPHistoryInstanceServiceInformationExtensions[Idx] | Contains XML content of information extension of the specified index of the TSP service history instance used. |
TSLTSPHistoryInstanceServiceName | Contains XML content of name of the TSP service history instance used. |
TSLTSPHistoryInstanceServiceName[lang] | Contains name for the specified language of the TSP service history instance used. |
TSLTSPHistoryInstanceServiceStatus | Contains status of the TSP service history instance used. |
TSLTSPHistoryInstanceServiceStatusStartingTime | Contains status starting time of the TSP service history instance used. |
TSLTSPHistoryInstanceServiceTypeIdentifier | Contains type identifier of the TSP service history instance used. |
TSLTSPHistoryInstanceXML | Contains XML content of the TSP service history instance used. |
TSLTSPInformationExtensions | Contains XML content of information extensions of the TSP used. |
TSLTSPInformationExtensions[Idx] | Contains XML content of information extension of the specified index of the TSP used. |
TSLTSPInformationURI | Contains XML content of information URI of the TSP used. |
TSLTSPInformationURI[lang] | Contains information URI for the specified language of the TSP used. |
TSLTSPName | Contains XML content of name of the TSP used. |
TSLTSPName[lang] | Contains name for the specified language of the TSP used. |
TSLTSPSchemeServiceDefinitionURI | Contains XML content of scheme service definition URI of the TSP service used. |
TSLTSPSchemeServiceDefinitionURI[lang] | Contains scheme service definition URI for the specified language of the TSP service used. |
TSLTSPServiceDefinitionURI | Contains XML content of definition URI of the TSP service used. |
TSLTSPServiceDefinitionURI[lang] | Contains definition URI for the specified language of the TSP service used. |
TSLTSPServiceInformationExtensions | Contains XML content of information extensions of the TSP service used. |
TSLTSPServiceInformationExtensions[Idx] | Contains XML content of information extension of the specified index of the TSP service used. |
TSLTSPServiceName | Contains XML content of name of the TSP service used. |
TSLTSPServiceName[lang] | Contains name for the specified language of the TSP service used. |
TSLTSPServiceQualifiers | Contains list of qualifiers of the TSP service used. |
TSLTSPServiceStatus | Contains status of the TSP service used. |
TSLTSPServiceStatusStartingTime | Contains status starting time of the TSP service used. |
TSLTSPServiceSupplyPoints | Contains XML content of the supply points of the TSP service used. |
TSLTSPServiceTypeIdentifier | Contains type identifier of the TSP service used. |
TSLTSPServiceXML | Contains XML content of the TSP service used. |
TSLTSPTradeName | Contains XML content of trade name of the TSP used. |
TSLTSPTradeName[lang] | Contains trade name for the specified language of the TSP used. |
TSLTSPXML | Contains XML content of the TSP used. |
TSLType | Contains TSL type of the TSL used. |
TSLVersionIdentifier | Contains version identifier of the TSL used. |
TSLXML | Contains XML content of the TSL used. |
UseDefaultTSLs | Enables or disables the use of the default TSLs. |
UseMicrosoftCTL | Enables or disables automatic use of Microsoft online certificate trust list. |
UseSystemCertificates | Enables or disables the use of the system certificates. |
CheckKeyIntegrityBeforeUse | Enables or disable private key integrity check before use. |
CookieCaching | Specifies whether a cookie cache should be used for HTTP(S) transports. |
Cookies | Gets or sets local cookies for the class (supported for HTTPClient, RESTClient and SOAPClient only). |
DefDeriveKeyIterations | Specifies the default key derivation algorithm iteration count. |
EnableClientSideSSLFFDHE | Enables or disables finite field DHE key exchange support in TLS clients. |
GlobalCookies | Gets or sets global cookies for all the HTTP transports. |
HttpUserAgent | Specifies the user agent name to be used by all HTTP clients. |
LogDestination | Specifies the debug log destination. |
LogDetails | Specifies the debug log details to dump. |
LogFile | Specifies the debug log filename. |
LogFilters | Specifies the debug log filters. |
LogFlushMode | Specifies the log flush mode. |
LogLevel | Specifies the debug log level. |
LogMaxEventCount | Specifies the maximum number of events to cache before further action is taken. |
LogRotationMode | Specifies the log rotation mode. |
MaxASN1BufferLength | Specifies the maximal allowed length for ASN.1 primitive tag data. |
MaxASN1TreeDepth | Specifies the maximal depth for processed ASN.1 trees. |
OCSPHashAlgorithm | Specifies the hash algorithm to be used to identify certificates in OCSP requests. |
UseOwnDNSResolver | Specifies whether the client classes should use own DNS resolver. |
UseSharedSystemStorages | Specifies whether the validation engine should use a global per-process copy of the system certificate stores. |
UseSystemOAEPAndPSS | Enforces or disables the use of system-driven RSA OAEP and PSS computations. |
UseSystemRandom | Enables or disables the use of the OS PRNG. |