Table of Contents

Class SignatureValidationResult

Namespace
SimpleSign.Core.Validation
Assembly
SimpleSign.Core.dll

Complete result of a PDF signature validation.

public sealed class SignatureValidationResult
Inheritance
SignatureValidationResult
Inherited Members

Properties

ChainValidationMetadata

Additional metadata extracted during country-specific chain validation. Keys and values are provider-defined. Null if no provider matched.

public IReadOnlyDictionary<string, string>? ChainValidationMetadata { get; init; }

Property Value

IReadOnlyDictionary<string, string>

ChainValidationRegion

The region code of the IChainValidationProvider that validated this signature. For example, "BR" for ICP-Brasil, "EU" for eIDAS. Null if no country-specific provider matched.

public string? ChainValidationRegion { get; init; }

Property Value

string

DigestAlgorithmName

Friendly name of the digest algorithm (e.g., "SHA-256").

public string? DigestAlgorithmName { get; }

Property Value

string

DigestAlgorithmOid

OID of the digest algorithm used in the signature (e.g., "2.16.840.1.101.3.4.2.1" = SHA-256).

public string? DigestAlgorithmOid { get; init; }

Property Value

string

EmbeddedCertificates

All certificates embedded in the CMS signature (signer + intermediaries).

public IReadOnlyList<X509Certificate2> EmbeddedCertificates { get; init; }

Property Value

IReadOnlyList<X509Certificate2>

Errors

Errors found during validation.

public IReadOnlyList<string> Errors { get; init; }

Property Value

IReadOnlyList<string>

FieldName

Validated signature field.

public string FieldName { get; init; }

Property Value

string

HasValidTimestamp

The timestamp (if present) is valid.

public bool? HasValidTimestamp { get; init; }

Property Value

bool?

IsCertificateChainValid

The certificate chain is valid and trusted.

public bool IsCertificateChainValid { get; init; }

Property Value

bool

IsChainTrustWarning

True when this is a document timestamp whose TSA chain could not be built to a trusted root, but whose cryptographic integrity and signature are valid. In this case the archive timestamp is still considered cryptographically sound — the chain issue is advisory (the TSA root is simply not present in the local trust store). Also used for regular signatures when a country-specific IChainValidationProvider overrides the standard PKI chain result.

public bool IsChainTrustWarning { get; init; }

Property Value

bool

IsDocumentTimestamp

Whether this result represents a document timestamp (SubFilter = ETSI.RFC3161) rather than a regular user signature. Document timestamps are infrastructure — they provide long-term archival proof. Callers should render them differently.

public bool IsDocumentTimestamp { get; init; }

Property Value

bool

IsIntegrityValid

The document integrity is intact (hash matches).

public bool IsIntegrityValid { get; init; }

Property Value

bool

IsNotRevoked

The certificate was not revoked at the time of signing.

public bool IsNotRevoked { get; init; }

Property Value

bool

IsSignatureValid

The cryptographic signature is mathematically valid.

public bool IsSignatureValid { get; init; }

Property Value

bool

IsValid

Indicates whether the signature is considered valid as a whole.

public bool IsValid { get; }

Property Value

bool

PolicyLevel

The policy / assurance level determined by the country-specific chain validation provider. For example, "A3" (ICP-Brasil), "Gold" (Gov.br), "QCP-w" (eIDAS). Null if no country-specific provider matched.

public string? PolicyLevel { get; init; }

Property Value

string

RevocationSource

How the revocation status was determined.

public RevocationSource RevocationSource { get; init; }

Property Value

RevocationSource

SignerCertificate

Signer certificate.

public X509Certificate2? SignerCertificate { get; init; }

Property Value

X509Certificate2

SignerId

The signer's national identifier extracted from the certificate by the country-specific provider. For example, a CPF or CNPJ number (Brazil), codice fiscale (Italy), NIF (Portugal). Null if no provider extracted an ID or no country-specific provider matched.

public string? SignerId { get; init; }

Property Value

string

SignerIdType

The type of national identifier extracted (SignerId). For example, "CPF", "CNPJ", "NIF", "CF". Null if no identifier was extracted.

public string? SignerIdType { get; init; }

Property Value

string

SignerName

Human-readable signer name (CN from the certificate).

public string? SignerName { get; init; }

Property Value

string

SigningTime

Signing date/time (from SigningTime or from the timestamp).

public DateTimeOffset? SigningTime { get; init; }

Property Value

DateTimeOffset?

SubFilter

SubFilter of the signature field (e.g., "adbe.pkcs7.detached", "ETSI.CAdES.detached").

public string? SubFilter { get; init; }

Property Value

string

Warnings

Non-blocking warnings.

public IReadOnlyList<string> Warnings { get; init; }

Property Value

IReadOnlyList<string>

Methods

ToString()

Returns a string that represents the current object.

public override string ToString()

Returns

string

A string that represents the current object.