Table of Contents

Class MdocVerifierOptions

Namespace
Tessio.Verifier.Core.Mdoc
Assembly
Tessio.Verifier.Core.Mdoc.dll

Policy knobs for MdocVerifier.

public sealed class MdocVerifierOptions
Inheritance
MdocVerifierOptions
Inherited Members

Properties

CheckStatus

Whether to enforce the MSO's status element when present: the credential's entry in the MSO revocation list it references, a status list or an identifier list. Defaults to true, matching CheckStatus: a revoked credential fails verification, and so does one whose list cannot be fetched or validated. Turn off only where the list's host is unreachable by design.

public bool CheckStatus { get; set; }

Property Value

bool

Remarks

A list is trusted only through the credential that referenced it: the certificate its MSO reference names, or else the certificate that signed the credential's own Document Signer, which the trust seam must vouch for on the same anchor as the Document Signer. A seam that reports no TrustAnchorThumbprint, or that anchors on the Document Signer itself, cannot vouch for that certificate, so a credential whose MSO reference names no certificate fails with StatusUnresolvable. Anchor on IACA certificates, as for the Document Signer's own trust.

ClockSkew

Tolerated clock skew for the MSO validity window. Defaults to 5 minutes, matching ClockSkew.

public TimeSpan ClockSkew { get; set; }

Property Value

TimeSpan

RequireDeviceAuth

Whether device authentication (the holder's signature over the session transcript) is required. Defaults to true, matching RequireKeyBinding. When false, a present deviceSignature is still verified.

public bool RequireDeviceAuth { get; set; }

Property Value

bool

ResolveX5u

Fetches the Document Signer certificate an issuerAuth names by x5u when it carries no x5chain. Off by default: such an mdoc then fails with IssuerKeyUnresolvable, with a message saying x5u resolution is off.

public bool ResolveX5u { get; set; }

Property Value

bool

Remarks

The fetch goes to a URL the presented mdoc chooses, and it happens before trust is known, because the trust seam judges the chain the URL returns. It is HTTPS only and bounded in size and time; the default HTTP client also refuses internal addresses, which a client passed to MdocVerifier must do itself. Both the x5u and a SHA-256 x5t naming the certificate must be in the protected header, as CIR (EU) 2026/1731 Annex I has a PID carry them; otherwise the mdoc is refused. A resource is kept only for an mdoc that verified in full, keyed by URL and thumbprint, and reused for an hour from when it was fetched. The issuer whose URL it is learns when its credentials are verified, so turn this on only for a trust source whose issuers name their certificate this way.

StatusListCacheDuration

How long a validated MSO revocation list may be served from cache before refetching. This is the ceiling: the list's own ttl shortens it and its exp caps it. Defaults to 5 minutes, matching StatusListCacheDuration. Set to Zero to fetch on every verification.

public TimeSpan StatusListCacheDuration { get; set; }

Property Value

TimeSpan

ZkProofVerifier

Checks the proofs of zero knowledge presentations. Off by default: without one, a response made only of zero knowledge presentations fails with ZkPresentationUnsupported. With one, such a presentation is verified. Its timestamp must then lie within ClockSkew of the verifier's clock, because the proof establishes the credential's validity at that timestamp.

public IZkProofVerifier? ZkProofVerifier { get; set; }

Property Value

IZkProofVerifier

Remarks

Set CheckStatus to false beside it. A proof discloses no MSO, so its revocation status cannot be checked. While CheckStatus is true every zero knowledge presentation fails with CredentialStatusUnknown. That is stricter than for a plain presentation, which passes when its MSO names no status list: a proof cannot show whether its MSO names one. The age verification profile puts revocation out of scope (Annex A, A.3). To refuse a proof made with a circuit the request did not offer, set ZkRequest when verifying the answer.