Class StaticTrustListResolver
Trust resolver backed by a fixed set of trusted issuer identifiers, plus optional trust-anchor certificates for issuers that present an X.509 chain. Suitable for development, tests and small deployments. Load the identifier set from a JSON file or URL with TrustListLoader.
public sealed class StaticTrustListResolver : ITrustListResolver
- Inheritance
-
StaticTrustListResolver
- Implements
- Inherited Members
Remarks
The trust mechanism depends on how the key was resolved. A key resolved from issuer metadata is
trusted exactly when its issuer identifier is on the configured list, proven by control of the
issuer's HTTPS origin. A key resolved from an x5c (or x5chain) header is trusted when
its chain anchors on one of trustAnchors (or the leaf itself is a pinned anchor); the
identifier is not required to be on the list, because anyone can put any name in a
certificate, so the X.509 chain is the proof. This is the only mechanism ISO mdoc has, where the
issuer identifier is a Document Signer subject DN that no list enumerates. Binding the certificate
to a claimed issuer, where that applies, is the caller's concern: SD-JWT VC ties iss to a
certificate SAN before this point. Without configured anchors, x5c credentials are rejected.
This is the open-source end of the trust seam. Production EU trust (LOTL, national lists, WRPAC) is a separate concern behind the same ITrustListResolver interface.
Constructors
StaticTrustListResolver(IEnumerable<string>, string, IEnumerable<X509Certificate2>?)
Creates a resolver trusting exactly the given issuer identifiers.
public StaticTrustListResolver(IEnumerable<string> trustedIssuers, string source = "static", IEnumerable<X509Certificate2>? trustAnchors = null)
Parameters
trustedIssuersIEnumerable<string>Issuer identifiers (iss values or certificate subjects).
sourcestringOptional label reported as TrustListSource.
trustAnchorsIEnumerable<X509Certificate2>Root or pinned certificates that x5c chains must anchor on. Credentials presenting an x5c chain are rejected when this is empty.
Methods
ResolveAsync(string, ReadOnlyMemory<byte>[], CancellationToken)
public Task<IssuerTrustStatus> ResolveAsync(string issuer, ReadOnlyMemory<byte>[] x5c, CancellationToken ct = default)
Parameters
issuerstringIssuer identifier from the credential (e.g., an HTTPS URI for JWT VC Issuer Metadata).
x5cReadOnlyMemory<byte>[]Optional X.509 chain from the credential header (DER-encoded, leaf first).
ctCancellationTokenCancellation token.