<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-birkholz-did-x509-03" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="did:x509">The did:x509 Decentralized Identifier (DID) Method</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-did-x509-03"/>
    <author initials="M." surname="Riechert" fullname="Maik Riechert">
      <organization>Microsoft</organization>
      <address>
        <email>Maik.Riechert@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft</organization>
      <address>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="A." surname="Chamayou" fullname="Amaury Chamayou">
      <organization>Microsoft</organization>
      <address>
        <email>Amaury.Chamayou@microsoft.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="30"/>
    <keyword>DID</keyword>
    <keyword>X.509</keyword>
    <abstract>
      <?line 142?>

<t>This document defines the did:x509 decentralized identifier (DID) method, a flexible issuer identifier format for messages that transport or refer to X.509 certificates, including CBOR Object Signing and Encryption (COSE) messages using RFC 9360. The did:x509 identifier format implements a direct, resolvable binding between a certificate chain and a compact issuer string (DID string). It combines the fingerprint of a certification authority (CA) certificate in the chain with one or more predicates on the leaf certificate's subject name, subject alternative names, extended key usage, or Fulcio issuer. The identifier can be conveyed as an issuer value in a COSE Header CBOR Web Token (CWT) Claims map as defined in RFC 9597, in JSON Object Signing and Encryption (JOSE) and JSON Web Token (JWT) messages, such as in the "iss" claim defined in RFC 7519, or through other protocol-specific mechanisms that associate the identifier with the certificate chain. The did:x509 method lets existing X.509 solutions and DID-based systems interoperate where a full transition to DIDs is not achievable or desired. This issuer identifier is convenient for references and policy evaluation, for example in the context of transparency ledgers.</t>
      <t>This Informational document is published as an Independent Submission to describe the method as implemented by Microsoft. It is neither a standard nor a product of the IETF.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/henkbirkholz/draft-birkholz-did-x509"/>.</t>
    </note>
  </front>
  <middle>
    <?line 148?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document aims to define an interoperable and flexible issuer identifier format, based on decentralized identifiers (DIDs) <xref target="DID"/>, for messages that transport or refer to X.509 certificates (<xref target="RFC5280"/>), including CBOR Object Signing and Encryption (COSE) messages using <xref target="RFC9360"/>.
The did:x509 identifier format implements a direct, resolvable binding between a certificate chain and a compact issuer string.
It can be conveyed as an issuer value in a COSE Header CBOR Web Token (CWT) Claims map as defined in <xref target="RFC9597"/>, in JSON Object Signing and Encryption (JOSE) and JSON Web Token (JWT) messages, such as in the <tt>iss</tt> claim defined in <xref target="RFC7519"/>, or through other protocol-specific mechanisms that associate the identifier with the certificate chain.</t>
      <t>The RWOT11 workshop outlined the need for hybrid solutions that combine X.509 certificates with DIDs (<xref target="RWOT11"/>).
The did:x509 method relies on X.509 chain validation and matches elements contained in the DID to certificate properties within the chain.</t>
      <t>The main difference from other DID methods is that did:x509 requires a certificate chain to be passed using a new DID resolution option (<xref target="DID"/>), <tt>x509chain</tt>, while resolving a DID.</t>
      <t>Including a certificate chain directly in configuration or in policy is often impractical.
This is due to its size, and to the frequency at which some elements, particularly the leaf, are refreshed.
Relying on a partial certificate chain (e.g., a root certificate and some intermediate certificates) is similarly unwieldy.
While stable, the level of granularity afforded by a partial certificate chain may not be sufficient to distinguish several identities that are not equivalent for the purpose of policy.</t>
      <t>Combining authority pinning with certificate predicates is a precise and stable way of capturing identities as a constrained set of certificates.
Their representation as compact and durable identifier strings enables the formulation of readable policy (e.g., "request.issuer == 'did:x509...'"), for example, in the Registration Policies of Transparency Services <xref target="RFC9943"/>.</t>
      <section anchor="interoperability">
        <name>Interoperability Between X.509 and DIDs</name>
        <t>The did:x509 method lets existing X.509 solutions and DID-based systems interoperate without changes to either:</t>
        <ul spacing="normal">
          <li>
            <t>The X.509 side is unchanged.
Certification authorities, public or private, issue ordinary certificates, signers keep their keys, and did:x509 identifiers are created locally from certificate chains (<xref target="create"/>).</t>
          </li>
          <li>
            <t>The evidence travels with the message.
Resolution needs only the DID and the certificate chain that signed messages already carry, for example in the <tt>x5chain</tt> (<xref target="RFC9360"/>) or <tt>x5c</tt> (<xref section="4.1.6" sectionFormat="of" target="RFC7515"/>) header parameters, so any resolver that accepts the chain derives the same DID Document, without a registry lookup (<xref target="resolution"/>).</t>
          </li>
          <li>
            <t>X.509 keys work in DID-based protocols.
The DID Document exposes the leaf certificate's public key as a verification method, with verification relationships that follow its key usage (<xref target="did-document"/>), so these protocols need not handle certificates.</t>
          </li>
          <li>
            <t>X.509 trust is expressed as a DID.
The certification authority (CA) fingerprint and the predicates let DID-based policies capture an X.509 identity rather than individual certificates.</t>
          </li>
        </ul>
        <t>A single signed message can therefore serve both kinds of relying party (<xref target="fig-interop"/>).
An X.509-only verifier validates the certificate chain with its trust store and ignores the issuer, while a DID-aware verifier resolves the issuer against the same chain and applies its DID-based policy.
Neither needs the other's infrastructure.</t>
        <figure anchor="fig-interop">
          <name>One Signed Message for X.509 and DID Verifiers</name>
          <artwork><![CDATA[
+------+  issues   +--------+
|  CA  |---------->| Signer |
+------+           +--------+
                        |
                        | signed message with the certificate
                        | chain and a did:x509 issuer
                        |
           +------------+------------+
           |                         |
           v                         v
+---------------------+   +----------------------+
| X.509-only verifier |   | DID-aware verifier   |
| validates the chain |   | resolves the issuer  |
| with its trust      |   | against the chain,   |
| store               |   | applies DID policy   |
+---------------------+   +----------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="relationship">
        <name>Relationship to the did:x509 Method Specification</name>
        <t>The did:x509 method is registered in the W3C DID Methods registry (<xref target="DID-METHODS"/>), whose entry points to the did:x509 Method Specification maintained in the microsoft/did-x509 repository (<xref target="DID-X509-SPEC"/>).
This document is aligned with <xref target="DID-X509-SPEC"/>, and much of its text, including the ABNF, the Rego policy, and the DID resolution procedure, is adapted from it; the authors of <xref target="DID-X509-SPEC"/> are also authors of this document.
The authors intend to keep this document and <xref target="DID-X509-SPEC"/> synchronized as both evolve.</t>
        <t>Microsoft has implemented did:x509 in a range of libraries and systems.
Its internal and external signing services, such as Artifact Signing, derive did:x509 identifiers from their existing issuing CAs and extended key usages (EKUs), and use them as the issuer of the COSE envelopes they produce, which include Supply Chain Integrity, Transparency, and Trust (SCITT) Signed Statements <xref target="RFC9943"/>.
Relying parties' policies pin the accepted did:x509 issuers, together with subjects, to decide which Transparent Statements to accept, and for which purpose.</t>
      </section>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>In this document, the Concise Data Definition Language (CDDL) <xref target="RFC8610"/> is used to describe the
data formats, and ABNF (<xref target="RFC5234"/>, <xref target="RFC7405"/>) to describe identifiers.</t>
        <t>This document uses the terms "DID", "DID URL", "DID Document", "DID subject", "DID resolution", "verification method", and "controller" as defined in <xref target="DID"/>, and the terms "certification path" and "trust anchor" as defined in <xref target="RFC5280"/>.
A "relying party" is an entity that relies on a resolved did:x509 identifier, for example, to authorize the signer of a message.</t>
        <t>Rego (<xref target="REGO"/>) is a declarative policy language.
This document uses Rego, rather than pseudo-code, to define DID syntax validation and predicate validation for did:x509 identifiers, so that the logic is precise and unambiguous and can be evaluated automatically.
The Rego code snippets provided in this document can be evaluated using any Rego v1 runtime, but there is no expectation that implementations use the Rego language.</t>
        <t>Per <xref target="RFC8792"/>, line breaks may be present in the figures of this document
to stay within the line-length limits of this document's format.</t>
        <t>Examples in this document abbreviate long base64url values, such as CA fingerprints, to their first and last two characters with two dots in between (for example, <tt>WE..jk</tt>) to avoid visual clutter otherwise caused by line size restrictions.
Abbreviated values are not syntactically valid.</t>
      </section>
    </section>
    <section anchor="identifier-syntax">
      <name>Identifier Syntax</name>
      <t>The DID method name is <tt>x509</tt>.
A did:x509 DID starts with <tt>did:x509:</tt> and binds a CA fingerprint to one or more certificate predicates.</t>
      <t>The did:x509 ABNF below uses the syntax defined in <xref target="RFC5234"/>, with case-sensitive string literals written as <tt>%s"..."</tt> per <xref target="RFC7405"/>, and the core rules <tt>ALPHA</tt>, <tt>DIGIT</tt>, and <tt>HEXDIG</tt> from <xref section="B.1" sectionFormat="of" target="RFC5234"/>.
<xref target="DID"/> contains the definitions for <tt>idchar</tt> and <tt>pct-encoded</tt> in Section 3.1.</t>
      <sourcecode type="abnf"><![CDATA[
idchar             = ALPHA / DIGIT / "." / "-" / "_" / pct-encoded
pct-encoded        = "%" HEXDIG HEXDIG
]]></sourcecode>
      <figure anchor="fig-core-def">
        <name>ABNF Definition of Core did:x509 Syntax</name>
        <sourcecode type="abnf"><![CDATA[
did-x509           = %s"did:x509:" method-specific-id
method-specific-id = version ":" ca-fingerprint-alg ":"
                     ca-fingerprint
                     1*("::" predicate-name ":" predicate-value)
version            = 1*DIGIT
ca-fingerprint-alg = %s"sha256" / %s"sha384" / %s"sha512"
ca-fingerprint     = base64url
predicate-name     = %s"subject" / %s"san" / %s"eku" /
                     %s"fulcio-issuer"
predicate-value    = *(1*idchar ":") 1*idchar
base64url          = 1*(ALPHA / DIGIT / "-" / "_")
]]></sourcecode>
      </figure>
      <t>The <tt>version</tt> value <bcp14>MUST</bcp14> be <tt>0</tt>.</t>
      <t><tt>ca-fingerprint-alg</tt> is one of <tt>sha256</tt>, <tt>sha384</tt>, or <tt>sha512</tt>.
<tt>ca-fingerprint</tt> is a base64url-encoded digest of a non-leaf certificate in the certificate chain, that is, <tt>chain[i].fingerprint[ca-fingerprint-alg]</tt> with i &gt; 0: either an intermediate or root CA certificate.
In this document, <tt>chain</tt> refers to the certificate chain mapped to the JSON data model defined in <xref target="json-model"/>.
The <tt>::</tt> separator introduces each predicate.
Each predicate has a <tt>predicate-name</tt> and a predicate-specific <tt>predicate-value</tt>.</t>
      <t>The method-specific identifier has three parts:</t>
      <ol spacing="normal" type="1"><li>
          <t>A version number.</t>
        </li>
        <li>
          <t>A certification authority fingerprint algorithm and value.</t>
        </li>
        <li>
          <t>One or more predicates that match fields in the leaf certificate.</t>
        </li>
      </ol>
      <t>The DID subject is the logical identity selected by the CA fingerprint and sequence of predicates.
It is not necessarily the X.509 subject name; <tt>subject</tt> is only one predicate type.</t>
      <t>did:x509 does not define any DID URL path or query semantics.
A did:x509 DID URL <bcp14>MUST NOT</bcp14> include a path or query component.
Fragment identifiers remain valid for identifying resources within a resolved DID Document, for example <tt>&lt;DID&gt;#0</tt>.</t>
      <t>Example:</t>
      <t><tt>did:x509:0:sha256:WE..jk::subject:C:US:ST:Texas:L:Austin:O:Example</tt></t>
      <t>In this example, the identifier pins to a certification authority using a SHA-256 certificate hash and uses the <tt>subject</tt> predicate to express criteria that a leaf certificate subject must fulfil.
This identifier will match certificate chains with matching leaf certificate subject fields and a matching intermediate or root CA certificate.</t>
      <t>The following sections define the predicates and their predicate-specific syntax.</t>
      <t>The inputs to the resolution process are the DID string itself and the <tt>x509chain</tt> DID resolution option, which carries a comma-separated base64url-encoded X.509 certificate chain.
To evaluate the reference Rego code shown below, the DID and certificate chain have to be passed to a Rego runtime as a JSON document: <tt>{"did": "&lt;DID&gt;", "chain": &lt;CertificateChain&gt;}</tt>, where <tt>did</tt> is the DID string and <tt>chain</tt> is the parsed representation of the certificate chain derived from the <tt>x509chain</tt> resolution option.</t>
      <t>Core Rego policy:</t>
      <figure anchor="fig-validate-core">
        <name>Core Rego Validation Rule</name>
        <sourcecode type="rego" name="core-validation.rego"><![CDATA[
package did_x509

import future.keywords.if
import future.keywords.in

idchars := `([A-Za-z0-9._-]|%[0-9A-Fa-f]{2})+`

predicate_pattern := sprintf(
    `::(subject|san|eku|fulcio-issuer):%s(:%s)*`,
    [idchars, idchars])

did_pattern := sprintf(
    `^did:x509:0:(sha256|sha384|sha512):[A-Za-z0-9_-]+(%s)+$`,
    [predicate_pattern])

parse_did(did) :=
  [ca_fingerprint_alg, ca_fingerprint, predicates] if {
    prefix := "did:x509:0:"
    regex.match(did_pattern, did)
    rest := trim_prefix(did, prefix)
    parts := split(rest, "::")
    [ca_fingerprint_alg, ca_fingerprint] := split(parts[0], ":")
    predicates_raw := array.slice(parts, 1, count(parts))
    predicates := [y |
        some i
        s := predicates_raw[i]
        j := indexof(s, ":")
        y := [substring(s, 0, j), substring(s, j+1, -1)]
    ]
}

valid if {
    [ca_fingerprint_alg,
     ca_fingerprint,
     predicates] := parse_did(input.did)
    count(predicates) > 0
    ca := [c | some i; i != 0; c := input.chain[i]]
    ca[_].fingerprint[ca_fingerprint_alg] == ca_fingerprint
    valid_predicates := [i |
        some i
        [name, value] := predicates[i]
        validate_predicate(name, value)
    ]
    count(valid_predicates) == count(predicates)
}
]]></sourcecode>
      </figure>
      <t>The overall Rego policy is assembled by concatenating the core Rego policy with the Rego policy fragments in the following sections, each one defining a <tt>validate_predicate</tt> function.</t>
      <section anchor="percent-encoding">
        <name>Percent-Encoding</name>
        <t>Some of the predicates that are defined in subsequent sections require values to be percent-encoded. Percent-encoding is specified in <xref section="2.1" sectionFormat="of" target="RFC3986"/>. Characters are encoded as UTF-8 (<xref target="RFC3629"/>) before percent-encoding. All characters that are not in the allowed set defined below <bcp14>MUST</bcp14> be percent-encoded:</t>
        <figure anchor="fig-allowed-def">
          <name>ABNF Definition of Characters That Do Not Need to Be Percent-Encoded</name>
          <sourcecode type="abnf"><![CDATA[
allowed = ALPHA / DIGIT / "-" / "." / "_"
]]></sourcecode>
        </figure>
        <t>Note that most libraries implement percent-encoding in the context of URLs and do not encode <tt>~</tt> (<tt>%7E</tt>).</t>
        <t>Resolution fails if a percent-decoded value is not valid UTF-8.</t>
      </section>
      <section anchor="subject-predicate">
        <name>"subject" Predicate</name>
        <figure anchor="fig-subject-def">
          <name>ABNF Definition of the "subject" Predicate</name>
          <sourcecode type="abnf"><![CDATA[
predicate-name  = %s"subject"
predicate-value = key ":" value *(":" key ":" value)
key             = label / oid
value           = 1*idchar
label           = %s"CN" / %s"L" / %s"ST" / %s"O" / %s"OU" /
                  %s"C" / %s"STREET"
oid             = 1*DIGIT *("." 1*DIGIT)
]]></sourcecode>
        </figure>
        <t><tt>&lt;key&gt;:&lt;value&gt;</tt> are the subject name fields in <tt>chain[0].subject</tt> in any order. Key repetitions are not allowed. Values <bcp14>MUST</bcp14> be percent-encoded.</t>
        <t>Example:</t>
        <t><tt>did:x509:0:sha256:WE..jk::subject:C:US:ST:Texas:L:Austin:O:Example</tt></t>
        <t>Rego policy:</t>
        <figure anchor="fig-validate-subject">
          <name>Rego Function Validating the "subject" Predicate</name>
          <sourcecode type="rego" name="subject-predicate.rego"><![CDATA[
validate_predicate(name, value) := true if {
    name == "subject"
    items := split(value, ":")
    count(items) % 2 == 0
    keys := {k | some i; i % 2 == 0; k := items[i]}
    count(keys) == count(items) / 2
    subject := {k: v |
        some i
        i % 2 == 0
        k := items[i]
        v := urlquery.decode(items[i+1])
    }
    count(subject) >= 1
    object.subset(input.chain[0].subject, subject) == true
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="san-predicate">
        <name>"san" Predicate</name>
        <figure anchor="fig-san-def">
          <name>ABNF Definition of the "san" Predicate</name>
          <sourcecode type="abnf"><![CDATA[
predicate-name  = %s"san"
predicate-value = san-type ":" san-value
san-type        = %s"email" / %s"dns" / %s"uri"
san-value       = 1*idchar
]]></sourcecode>
        </figure>
        <t><tt>san-type</tt> is the subject alternative name (SAN) type and <bcp14>MUST</bcp14> be one of <tt>email</tt>, <tt>dns</tt>, or <tt>uri</tt>. Note that <tt>dn</tt> is not supported.</t>
        <t><tt>san-value</tt> is the SAN value, percent-encoded.</t>
        <t>The pair <tt>[&lt;san_type&gt;, &lt;san_value&gt;]</tt> is one of the items in <tt>chain[0].extensions.san</tt>.</t>
        <t>Example:</t>
        <t><tt>did:x509:0:sha256:WE..jk::san:email:bob%40example.com</tt></t>
        <t>Rego policy:</t>
        <figure anchor="fig-validate-san">
          <name>Rego Function Validating the "san" Predicate</name>
          <sourcecode type="rego" name="san-predicate.rego"><![CDATA[
validate_predicate(name, value) := true if {
    name == "san"
    [san_type, san_value_encoded] := split(value, ":")
    san_value := urlquery.decode(san_value_encoded)
    [san_type, san_value] == input.chain[0].extensions.san[_]
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="eku-predicate">
        <name>"eku" Predicate</name>
        <figure anchor="fig-eku-def">
          <name>ABNF Definition of the "eku" Predicate</name>
          <sourcecode type="abnf"><![CDATA[
predicate-name  = %s"eku"
predicate-value = eku
eku             = oid
oid             = 1*DIGIT *("." 1*DIGIT)
]]></sourcecode>
        </figure>
        <t><tt>eku</tt> is one of the OIDs within <tt>chain[0].extensions.eku</tt>.</t>
        <t>Example:</t>
        <t><tt>did:x509:0:sha256:WE..jk::eku:1.3.6.1.4.1.311.10.3.13</tt></t>
        <t>Rego policy:</t>
        <figure anchor="fig-validate-eku">
          <name>Rego Function Validating the "eku" Predicate</name>
          <sourcecode type="rego" name="eku-predicate.rego"><![CDATA[
validate_predicate(name, value) := true if {
    name == "eku"
    value == input.chain[0].extensions.eku[_]
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="fulcio-issuer-predicate">
        <name>"fulcio-issuer" Predicate</name>
        <figure anchor="fig-fulcio-issuer-def">
          <name>ABNF Definition of the "fulcio-issuer" Predicate</name>
          <sourcecode type="abnf"><![CDATA[
predicate-name   = %s"fulcio-issuer"
predicate-value  = fulcio-issuer
fulcio-issuer    = 1*idchar
]]></sourcecode>
        </figure>
        <t><tt>fulcio-issuer</tt> is <tt>chain[0].extensions.fulcio_issuer</tt>, without leading <tt>https://</tt>, percent-encoded.</t>
        <t>The <tt>fulcio_issuer</tt> extension <bcp14>MUST</bcp14> be present on <tt>chain[0]</tt> when this predicate is used; resolution fails if it is absent.
The extension <bcp14>MUST NOT</bcp14> be marked critical.</t>
        <t>Example:</t>
        <t><tt>did:x509:0:sha256:WE..jk::fulcio-issuer:accounts.example.com::san:email:bob%40example.com</tt></t>
        <t>Example 2:</t>
        <t><tt>did:x509:0:sha256:WE..jk::fulcio-issuer:issuer.example.com::san:uri:https%3A%2F%2Fexample.com%2Focto-org%2Focto-automation%2Fworkflows%2Foidc.yml%40refs%2Fheads%2Fmain</tt></t>
        <t>Rego policy:</t>
        <figure anchor="fig-validate-fulcio-issuer">
          <name>Rego Function Validating the "fulcio-issuer" Predicate</name>
          <sourcecode type="rego" name="fulcio-issuer-predicate.rego"><![CDATA[=============== NOTE: '\' line wrapping per RFC 8792 ================

validate_predicate(name, value) := true if {
    name == "fulcio-issuer"
    suffix := urlquery.decode(value)
    concat("", ["https://", suffix]) == input.chain[0].extensions.\
                                                        fulcio_issuer
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="x509chain">
        <name>DID Resolution Options</name>
        <t>This DID method introduces a new DID resolution option called <tt>x509chain</tt>:</t>
        <t>Name: <tt>x509chain</tt></t>
        <t>Value type: string</t>
        <t>The value is constructed as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Encode each certificate <tt>C</tt> that is part of the chain as the string <tt>b64url(DER(C))</tt>, where <tt>DER(C)</tt> is the DER encoding (<xref target="X.690"/>) of <tt>C</tt> and <tt>b64url</tt> is base64url encoding (<xref section="5" sectionFormat="of" target="RFC4648"/>).</t>
          </li>
          <li>
            <t>Concatenate the resulting strings in order, separated by comma <tt>","</tt>.</t>
          </li>
        </ol>
        <t>The chain is ordered leaf first and root or trust anchor last:</t>
        <figure anchor="fig-x509chain">
          <name>Structure of the x509chain Resolution Option Value</name>
          <artwork><![CDATA[
x509chain = b64url(DER(leaf)) ","
            b64url(DER(intermediate)) ","
            b64url(DER(root))
]]></artwork>
        </figure>
        <t>Each comma-separated item is the DER encoding of one complete X.509 certificate, not a public key, fingerprint, or DER encoding of the whole chain.</t>
      </section>
    </section>
    <section anchor="verifiable-data-registry-and-trust-model">
      <name>Verifiable Data Registry and Trust Model</name>
      <t>did:x509 does not define a persistent registry of DID Documents.
Resolution uses the DID string and the <tt>x509chain</tt> resolution option (<xref target="x509chain"/>).</t>
      <t>Trust is established by validating the certificate chain, matching the CA fingerprint, and validating the predicates against the leaf certificate.
Applications can add revocation, certificate transparency, signing time, or endorsement checks.</t>
    </section>
    <section anchor="did-document">
      <name>DID Document</name>
      <t>Resolving a did:x509 identifier produces a DID Document (<xref target="DID"/>) with a <tt>JsonWebKey</tt> verification method derived from the leaf certificate public key.</t>
      <t>The DID Document is self-controlled: verification methods use the DID itself as <tt>controller</tt>.</t>
      <t>If the leaf certificate has the key usage bit for <tt>digitalSignature</tt>, or is missing the key usage extension, the DID Document includes <tt>authentication</tt> and <tt>assertionMethod</tt>.
If the leaf certificate has the key usage bit for <tt>keyAgreement</tt>, or is missing the key usage extension, the DID Document includes <tt>keyAgreement</tt>.
If the leaf certificate includes the key usage extension but has neither <tt>digitalSignature</tt> nor <tt>keyAgreement</tt>, resolution fails.</t>
      <t>The registered media type for a DID Document is <tt>application/did</tt>.
Resolvers may also support <tt>application/did+ld+json</tt> or <tt>application/did+json</tt> for compatibility with DID Core 1.0 tooling.
The media type is selected by the resolution request, not by the DID string.</t>
      <t>The JSON for Linking Data (JSON-LD) <xref target="JSON-LD"/> <tt>@context</tt> <bcp14>MUST</bcp14> define every term used.
The example below uses the Controlled Identifiers v1 context <tt>https://www.w3.org/ns/cid/v1</tt> (<xref target="CID"/>).</t>
      <t>This illustrates what a typical DID Document, describing the DID subject and the methods it can use to authenticate itself, can look like once resolved:</t>
      <figure anchor="fig-did-document-example">
        <name>Example DID Document</name>
        <sourcecode type="json"><![CDATA[
{
  "@context": "https://www.w3.org/ns/cid/v1",
  "id": "did:x509:0:sha256:hH..GE::subject:CN:Example",
  "verificationMethod": [
    {
      "id": "did:x509:0:sha256:hH..GE::subject:CN:Example#0",
      "type": "JsonWebKey",
      "controller": "did:x509:0:sha256:hH..GE::subject:CN:Example",
      "publicKeyJwk": {
        "kty": "EC",
        "crv": "P-256",
        "x": "usNb0QXAk6R76GPFvKT5a46LC0_qRpxNoLn9WAX8K0I",
        "y": "dTtI2j8aV0Mdk5fNWP9rCJvFIo6QfLjCm8V5v10J4Xg"
      }
    }
  ],
  "authentication": [
    "did:x509:0:sha256:hH..GE::subject:CN:Example#0"
  ],
  "assertionMethod": [
    "did:x509:0:sha256:hH..GE::subject:CN:Example#0"
  ],
  "keyAgreement": [
    "did:x509:0:sha256:hH..GE::subject:CN:Example#0"
  ]
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="json-model">
      <name>CDDL for a JSON Data Model for X.509 Certificate Chains</name>
      <t>For predicate evaluation, the resolver maps the certificate chain to a limited JSON (<xref target="STD90"/>) data model.
This model contains only the fields did:x509 matches on; it does not replace X.509 parsing or <xref target="RFC5280"/> path validation.</t>
      <t>The model is a JSON array with at least two certificate objects.
The leaf certificate is first, followed by issuer certificates, with the root or trust anchor last.</t>
      <t>The <tt>fingerprint</tt> member of a certificate object contains base64url-encoded (<xref section="5" sectionFormat="of" target="RFC4648"/>) SHA-256, SHA-384, and SHA-512 (<xref target="FIPS180-4"/>) hashes of the DER-encoded certificate.
The <tt>issuer</tt> and <tt>subject</tt> members contain the X.509 issuer and subject names, each represented as an object of name attributes.
Name objects use the <xref target="RFC4514"/> labels <tt>CN</tt>, <tt>L</tt>, <tt>ST</tt>, <tt>O</tt>, <tt>OU</tt>, <tt>C</tt>, and <tt>STREET</tt> for common attributes.
Other attributes use dotted OID strings as keys.
Repeated attributes are not supported.
Values are converted to UTF-8 strings.
The <tt>extensions</tt> member can contain the Extended Key Usage OIDs (<xref section="4.2.1.12" sectionFormat="of" target="RFC5280"/>), the Subject Alternative Name entries (<xref section="4.2.1.6" sectionFormat="of" target="RFC5280"/>), and the Fulcio issuer extension value (<xref target="FULCIO"/>).</t>
      <figure anchor="fig-json-model-cddl">
        <name>CDDL Definition of did:x509 JSON Data Model</name>
        <sourcecode type="cddl"><![CDATA[
; leaf first, followed by issuer certificates,
; with the root or trust anchor last
CertificateChain = [2*Certificate]

Certificate = {
    fingerprint: {
        ; base64url-encoded hashes of the DER-encoded certificate
        sha256: base64url,     ; FIPS 180-4, SHA-256
        sha384: base64url,     ; FIPS 180-4, SHA-384
        sha512: base64url      ; FIPS 180-4, SHA-512
    },
    issuer: Name,              ; RFC 5280, Section 4.1.2.4
    subject: Name,             ; RFC 5280, Section 4.1.2.6
    extensions: {
        ? eku: [+OID],         ; RFC 5280, Section 4.2.1.12
        ? san: [+SAN],         ; RFC 5280, Section 4.2.1.6
        ? fulcio_issuer: tstr  ; Fulcio issuer extension
    }
}

; X.509 Name as an object of attributes
; Repeated attribute types are not supported
; Common attribute types have human-readable labels (see below)
; Other attribute types use dotted OIDs
; Values are converted to UTF-8
Name = {
    ; See RFC 4514, Section 3, for meaning of common attribute types
    ? CN: tstr,
    ? L: tstr,
    ? ST: tstr,
    ? O: tstr,
    ? OU: tstr,
    ? C: tstr,
    ? STREET: tstr,
    * OID => tstr
}

; base64url-encoded data, see RFC 4648, Section 5
base64url = tstr

; ASN.1 Object Identifier
; Dotted string, for example "1.2.3"
OID = tstr

; X.509 Subject Alternative Name
; Strings are converted to UTF-8
SAN = rfc822Name / DNSName / URI / DirectoryName
rfc822Name = ["email", tstr] ; e.g., ["email", "user@example.com"]
DNSName = ["dns", tstr]      ; e.g., ["dns", "example.com"]
URI = ["uri", tstr]          ; e.g., ["uri", "https://example.com"]
DirectoryName = ["dn", Name] ; e.g., ["dn", {CN: "Example"}]
]]></sourcecode>
      </figure>
      <t>Example certificate chain mapped to the JSON data model:</t>
      <figure anchor="fig-chain-example">
        <name>Example Certificate Chain in the did:x509 JSON Data Model</name>
        <sourcecode type="json"><![CDATA[
[
  {
    "fingerprint": {
      "sha256": "leaf-sha256",
      "sha384": "leaf-sha384",
      "sha512": "leaf-sha512"
    },
    "issuer": {
      "CN": "Example CA"
    },
    "subject": {
      "CN": "Example"
    },
    "extensions": {
      "eku": ["1.3.6.1.4.1.311.10.3.13"],
      "san": [
        ["email", "user@example.com"],
        ["dns", "example.com"],
        ["uri", "https://example.com"],
        [
          "dn",
          {
            "CN": "Example"
          }
        ]
      ],
      "fulcio_issuer": "https://issuer.example.com"
    }
  },
  {
    "fingerprint": {
      "sha256": "ca-sha256",
      "sha384": "ca-sha384",
      "sha512": "ca-sha512"
    },
    "issuer": {
      "CN": "Example Root CA"
    },
    "subject": {
      "CN": "Example CA"
    },
    "extensions": {}
  }
]
]]></sourcecode>
      </figure>
    </section>
    <section anchor="method-operations">
      <name>Method Operations</name>
      <section anchor="create">
        <name>Create</name>
        <t>Creating a did:x509 identifier is a local operation.
The DID <bcp14>MUST</bcp14> be constructed according to the syntax rules in this specification.
No registration action is required, and no registry authorization is checked.</t>
        <t>When constructing a did:x509 identifier, determine what constitutes a logical identity within a given certification authority.
Concretely, determine which certificate fields the authority uses to uniquely represent an identity.
After that, choose one or more matching predicates that express such an identity as faithfully as possible.</t>
        <t>As an example, a certification authority may use email addresses as a way to separate identities and use the SAN extension to store the email address.
In that case, the did:x509 identifier should be constructed using the <tt>san</tt> predicate, for example, <tt>did:x509:0:sha256:&lt;ca-fingerprint&gt;::san:email:bob%40example.com</tt>.</t>
        <t>In other cases, an authority may not include email addresses at all and instead rely on a specific set of subject fields to separate identities.
In that case, the <tt>subject</tt> predicate should be used.</t>
        <t>In yet other cases, authorities may assign unique numbers or other types of stable identifiers to logical identities.
Typically, this is done to have a stable reference even if a person changes their name or email address.</t>
        <t>In all cases, the goal is to craft a did:x509 identifier that is stable yet not too loose in its predicates.
An example of a loose did:x509 identifier may be to use the <tt>subject</tt> predicate and only include the <tt>O</tt> field without location fields like country (<tt>C</tt>) or state/locality (<tt>ST</tt>).</t>
        <t>Whether a did:x509 identifier should pin to an intermediate CA instead of a root CA depends on whether there is value in distinguishing between them.
Pinning to an intermediate CA typically means that the lifetime of the did:x509 identifier will be shorter, since intermediate CA certificates usually have a shorter validity period than root CA certificates.</t>
      </section>
      <section anchor="read-resolve">
        <name>Read / Resolve</name>
        <t>The Read operation is DID resolution.
The operation takes as input a DID to resolve, together with the <tt>x509chain</tt> DID resolution option (<xref target="x509chain"/>).</t>
        <t>The DID resolver uses the DID, the certificate chain, and the process in <xref target="resolution"/> to generate a DID Document.
No caller authorization is required; authenticity is checked by certificate chain validation, CA fingerprint matching, and predicate validation.</t>
      </section>
      <section anchor="update">
        <name>Update</name>
        <t>This DID method does not support updating the DID Document, assuming a fixed certificate chain.
There is no update authorization operation.</t>
        <t>However, the public key included in the DID Document varies depending on the certificate chain that was used as input to the DID resolution process.
Typically, multiple chains, in particular leaf certificates, are valid for a given did:x509 identifier.</t>
      </section>
      <section anchor="deactivate">
        <name>Deactivate</name>
        <t>This DID method does not support deactivating the DID.
There is no deactivation authorization operation.</t>
        <t>However, if the certification authority revokes all certificates for the matching DID, or they expire, and does not issue new certificates matching the same DID, then this can be considered equivalent to deactivation of the DID.
There is no technical guarantee in this case and the certification authority can revert its decision.</t>
      </section>
    </section>
    <section anchor="resolution">
      <name>DID Resolution</name>
      <t>If the DID to resolve is given as a DID URL, its fragment, if any, is removed first, and <tt>&lt;DID&gt;</tt> below refers to the result.
Resolution fails if the DID URL has a path or query component.</t>
      <t>The following steps <bcp14>MUST</bcp14> be used to generate a corresponding DID Document:</t>
      <ol spacing="normal" type="1"><li>
          <t>Decode the <tt>x509chain</tt> resolution option value into individual certificates by splitting the string on <tt>","</tt> and base64url-decoding each resulting string.
The result is a list of DER-encoded certificates that can be loaded in standard libraries.
Fail if the list contains fewer than two certificates.</t>
        </li>
        <li>
          <t>Check whether the list of certificates forms a valid certificate chain using certification path validation procedures (<xref section="6" sectionFormat="of" target="RFC5280"/>) with the last certificate in the chain as trust anchor.
Implementations <bcp14>MUST</bcp14> perform <xref target="RFC5280"/> certification path validation.
Additionally, fail if any certificate in the chain contains a critical extension that is neither (a) one of the extensions represented in the JSON data model (<tt>eku</tt>, <tt>san</tt>), nor (b) one of the following standard <xref target="RFC5280"/> extensions: <tt>basicConstraints</tt>, <tt>keyUsage</tt>, <tt>nameConstraints</tt>, <tt>policyConstraints</tt>, <tt>policyMappings</tt>, <tt>certificatePolicies</tt>, <tt>inhibitAnyPolicy</tt>.  </t>
          <t>
The <tt>fulcio_issuer</tt> extension is deliberately not on that list.
Fulcio does not mark it critical; for example, a dump of a Fulcio-issued certificate (<xref target="GITSIGN-TIMESTAMP"/>) shows its <tt>critical</tt> field as <tt>BOOL ABSENT</tt>.
Issuers <bcp14>MUST NOT</bcp14> mark it critical: it is an unrecognized extension for the purposes of <xref target="RFC5280"/> certification path validation, so marking it critical may cause the chain to be rejected.  </t>
          <t>
Instead of using the current time as specified in <xref section="6.1.3" sectionFormat="of" target="RFC5280"/> when validating the chain, applications may choose a context-relevant point in time.
For example, applications handling signed documents may choose to use the signing time instead, which might come from a CWT <tt>iat</tt> claim (<xref target="RFC8392"/>) or JWT <tt>iat</tt> claim (<xref target="RFC7519"/>).
Such a claim is not trusted time by itself and needs to be integrity protected and accepted by application policy.</t>
        </li>
        <li>
          <t>If required by the application, check whether any certificate in the chain is revoked using certificate revocation lists (CRLs) <xref target="RFC5280"/>, the Online Certificate Status Protocol (OCSP) <xref target="RFC6960"/>, or other mechanisms.</t>
        </li>
        <li>
          <t>Apply any further application-specific checks, for example disallowing insecure certificate signature algorithms.</t>
        </li>
        <li>
          <t>Map the certificate chain to the JSON data model (<xref target="json-model"/>).</t>
        </li>
        <li>
          <t>Check whether the DID is valid against the certificate chain in the JSON data model according to the Rego policy or equivalent rules defined in this document.</t>
        </li>
        <li>
          <t>Extract the public key of the first certificate in the chain.</t>
        </li>
        <li>
          <t>Convert the public key to a JSON Web Key (JWK) <xref target="RFC7517"/>.</t>
        </li>
        <li>
          <t>Create the following partial DID Document:  </t>
          <sourcecode type="json"><![CDATA[
{
  "@context": "https://www.w3.org/ns/cid/v1",
  "id": "<DID>",
  "verificationMethod": [{
    "id": "<DID>#0",
    "type": "JsonWebKey",
    "controller": "<DID>",
    "publicKeyJwk": {
      "kty": "<JWK key type>"
    }
  }]
}
]]></sourcecode>
        </li>
        <li>
          <t>If the first certificate in the chain has the key usage bit position for <tt>digitalSignature</tt> set or is missing the key usage extension, add the following to the DID Document:  </t>
          <sourcecode type="json"><![CDATA[
{
  "authentication": ["<DID>#0"],
  "assertionMethod": ["<DID>#0"]
}
]]></sourcecode>
        </li>
        <li>
          <t>If the first certificate in the chain has the key usage bit position for <tt>keyAgreement</tt> set or is missing the key usage extension, add the following to the DID Document:  </t>
          <sourcecode type="json"><![CDATA[
{
  "keyAgreement": ["<DID>#0"]
}
]]></sourcecode>
        </li>
        <li>
          <t>If the first certificate in the chain includes the key usage extension but has neither <tt>digitalSignature</tt> nor <tt>keyAgreement</tt> set as key usage bits, fail.</t>
        </li>
        <li>
          <t>Return the complete DID Document.</t>
        </li>
      </ol>
    </section>
    <section removeInRFC="true" anchor="implementation-status">
      <name>Implementation Status</name>
      <t>(Boilerplate as per <xref section="2.1" sectionFormat="of" target="RFC7942"/>:)</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -22?>
      </t>
      <t>The information in this section was last updated in September 2026.</t>
      <section anchor="microsoft">
        <name>Microsoft</name>
        <t>The implementations below are the ones that Microsoft publishes as open source.
Microsoft also has internal implementations, which are not listed here.
For all of them, the organization is Microsoft and the contact is the authors of this document.</t>
        <section anchor="did-x509">
          <name>did-x509</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/microsoft/did-x509"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>The repository of the upstream specification (<xref target="DID-X509-SPEC"/>), with a Python reference resolver and the test vectors (<xref target="TEST-VECTORS"/>).</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>DID resolution as specified in this document, including certification path validation, all four predicates, and DID Document creation.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Reference implementation; no tagged releases.</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
          </dl>
        </section>
        <section anchor="didx509cpp">
          <name>didx509cpp</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/microsoft/didx509cpp"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A header-only C++ library that resolves did:x509 identifiers against PEM-encoded certificate chains and returns the DID Document.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>All four predicates and certification path validation with OpenSSL. Certificate validity periods can optionally be ignored.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release 0.99.0 (June 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
            <dt>Used by:</dt>
            <dd>
              <t>CCF and scitt-ccf-ledger.</t>
            </dd>
          </dl>
        </section>
        <section anchor="didx509go">
          <name>didx509go</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/microsoft/didx509go"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A Go library that resolves did:x509 identifiers against certificate chains.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>All four predicates and certification path validation.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Tagged versions; latest v0.0.3 (February 2024).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
            <dt>Used by:</dt>
            <dd>
              <t>cosesign1go and hcsshim.</t>
            </dd>
          </dl>
        </section>
        <section anchor="cosesign1go">
          <name>cosesign1go</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/microsoft/cosesign1go"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A Go library and command-line tool (sign1util) for COSE_Sign1 documents. It creates did:x509 identifiers from a certificate chain, and checks that the did:x509 issuer of a document matches the certificate chain that signed it.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Creation, and resolution using didx509go.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release v1.7.0 (September 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
            <dt>Used by:</dt>
            <dd>
              <t>hcsshim and the Azure CLI confcom extension.</t>
            </dd>
          </dl>
        </section>
        <section anchor="cosesigntool">
          <name>CoseSignTool</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/microsoft/CoseSignTool"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A C# command-line tool and set of libraries for signing and validating COSE_Sign1 messages. When signing with a certificate, it derives a did:x509 issuer for the CWT Claims from the certificate chain.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Creation, with the "subject" predicate by default, or with the "eku" predicate when the leaf certificate has a Microsoft-specific EKU.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release v1.8.1 (September 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
          </dl>
        </section>
        <section anchor="scitt-ccf-ledger">
          <name>scitt-ccf-ledger</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/microsoft/scitt-ccf-ledger"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A SCITT Transparency Service application built on CCF. It registers signed statements whose CWT issuer is a did:x509 identifier, resolving the identifier against the statement's certificate chain, and its Registration Policies can match on the issuer. Its Python command-line tool creates signed statements with did:x509 issuers.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Creation, and resolution using didx509cpp.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release 0.20.1 (September 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
          </dl>
        </section>
        <section anchor="ccf">
          <name>CCF</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/microsoft/CCF"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>The Confidential Consortium Framework. It resolves the did:x509 issuers of COSE-signed endorsements, such as utility VM endorsements for confidential containers, against their certificate chains.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Resolution using didx509cpp.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release 7.0.17 (September 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>Apache-2.0</t>
            </dd>
          </dl>
        </section>
        <section anchor="hcsshim">
          <name>hcsshim</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/microsoft/hcsshim"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>The Host Compute Service shim. Its security policy enforcement for confidential containers checks that the did:x509 issuer of a signed policy fragment matches the fragment's certificate chain.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Resolution using cosesign1go and didx509go.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release v0.14.1 (April 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
          </dl>
        </section>
        <section anchor="azure-cli-confcom-extension">
          <name>Azure CLI confcom Extension</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/Azure/azure-cli-extensions"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>An extension, in the src/confcom directory, that generates security policies for confidential containers. The policies name the did:x509 issuers of trusted policy fragments, and the extension signs fragments with the sign1util tool from cosesign1go.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Use of did:x509 identifiers as the issuers of signed policy fragments, relying on cosesign1go.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release 2.2.0 (September 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="nuts-foundation">
        <name>Nuts Foundation</name>
        <t>The Nuts Foundation maintains open-source software for exchanging healthcare data in the Netherlands.
For all of the implementations below, both the organization and the contact are the Nuts Foundation (<eref target="https://nuts.nl"/>).</t>
        <section anchor="nuts-node">
          <name>nuts-node</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/nuts-foundation/nuts-node"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>The reference implementation of the Nuts specification, a decentralized identity network based on W3C Verifiable Credentials and DIDs. It has its own did:x509 resolver, and its DID Documents for did:x509 identifiers include the certificate chain.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Resolution, except for the "eku" predicate. It also supports a "san" predicate with the otherName type, which this document does not define.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release v6.2.13 (September 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>GPL-3.0</t>
            </dd>
          </dl>
        </section>
        <section anchor="go-didx509-toolkit">
          <name>go-didx509-toolkit</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/nuts-foundation/go-didx509-toolkit"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A Go toolkit and command-line tool that creates did:x509 identifiers from certificate chains, and issues X509Credential Verifiable Credentials with them. It follows the did:x509 specification published by the Trust Over IP Foundation, extended with a "san" predicate for the otherName type, which certificates from the Dutch healthcare UZI register require.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Creation, including the otherName extension.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>Released; latest release v1.3.0 (April 2026).</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>GPL-3.0</t>
            </dd>
          </dl>
        </section>
        <section anchor="uzi-did-x509-issuer-java">
          <name>uzi-did-x509-issuer-java</name>
          <dl>
            <dt>Link:</dt>
            <dd>
              <t><eref target="https://github.com/nuts-foundation/uzi-did-x509-issuer-java"/></t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A Java library that issues UziServerCertificateCredentials, which are Verifiable Credentials for server certificates from the Dutch healthcare UZI register, with a did:x509 issuer.</t>
            </dd>
            <dt>Coverage:</dt>
            <dd>
              <t>Creation.</t>
            </dd>
            <dt>Maturity:</dt>
            <dd>
              <t>No tagged releases.</t>
            </dd>
            <dt>Licensing:</dt>
            <dd>
              <t>MIT</t>
            </dd>
          </dl>
        </section>
      </section>
    </section>
    <section anchor="secconsec">
      <name>Security Considerations</name>
      <section anchor="identifier-ambiguity">
        <name>Identifier Ambiguity</name>
        <t>This DID method maps characteristics of X.509 certificate chains to identifiers. It allows a single identifier to map to multiple certificate chains, giving the identifier stability across the expiry of individual chains. However, if the predicates used in the identifier are chosen too loosely, the identifier may match too wide a set of certificate chains. This may have security implications as it may authorize an identity for actions it was not meant to be authorized for.</t>
        <t>To mitigate this issue, the certification authority should publish its expected usage of certificate fields and indicate which ones constitute a unique identity, versus any additional fields that may be of an informational nature. This will help users create an appropriate did:x509 identifier as well as consumers of signed content to decide whether it is appropriate to trust a given did:x509 identifier.</t>
      </section>
      <section anchor="x509-trust-stores">
        <name>X.509 Trust Stores</name>
        <t>Resolution validates the supplied certificate chain with the last certificate in <tt>x509chain</tt> as the path-validation trust anchor.
This checks the chain and DID predicates, but does not decide whether the CA or DID is acceptable to a relying party.</t>
        <t>Relying parties make that trust decision by policy, for example through a CA trust store, an allowlist of DIDs or CA fingerprints, or other application-specific rules.</t>
      </section>
      <section anchor="use-of-identifier-contents">
        <name>Use of Identifier Contents</name>
        <t>While it is acceptable to use a did:x509 identifier as an opaque handle to implement a relying-party policy, implementers <bcp14>MUST NOT</bcp14> parse or interpret individual components of the identifier string for authorization decisions unless the identifier has been resolved against a verified certificate chain.</t>
        <t>Specifically, extracting and relying upon subject names, organizational information, or other embedded values directly from the identifier string, without performing full resolution and chain validation, is insecure. An attacker could craft a syntactically valid did:x509 identifier containing arbitrary values that do not correspond to any legitimate certificate chain. Only after successful resolution, which includes verification of the CA fingerprint against the provided chain and validation of all predicates, can the identifier be considered authentic. Systems that bypass this resolution process and instead parse identifier components directly are vulnerable to impersonation and privilege escalation attacks.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The did:x509 identifier can contain certificate subject names, subject alternative names, extended key usage values, Fulcio issuer values, and a certification authority fingerprint.
These values can reveal personal names, email addresses, domain names, organizational affiliations, credential issuers, or other identifying information.
DID creators should choose predicates that are specific enough for relying-party policy but disclose no more certificate attributes than necessary.</t>
      <t>The <tt>x509chain</tt> resolution option carries the certificate chain used as resolution evidence.
Certificates can contain additional metadata beyond the predicates encoded in the DID, including subject attributes, SAN entries, validity periods, certificate policies, and extension values.
Resolvers and verifiers should treat certificate chains as potentially identifying data, avoid unnecessary logging or redistribution, and apply data minimization when retaining resolution inputs or outputs.</t>
      <t>Stable did:x509 identifiers can enable correlation across transactions, transparency logs, ledgers, and verifiable credentials (<xref target="VC"/>).
If unlinkability is required, relying parties should avoid reusing the same did:x509 identifier across contexts, and issuers should prefer predicates based on role- or service-specific identifiers rather than human-identifying certificate fields.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.
The did:x509 method is registered in the W3C DID Methods registry (<xref target="DID-METHODS"/>), as described in <xref target="relationship"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="STD90">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC7405">
          <front>
            <title>Case-Sensitive String Support in ABNF</title>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
            <date month="December" year="2014"/>
            <abstract>
              <t>This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitive manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7405"/>
          <seriesInfo name="DOI" value="10.17487/RFC7405"/>
        </reference>
        <reference anchor="DID" target="https://www.w3.org/TR/2022/REC-did-core-20220719/">
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author initials="M." surname="Sporny" fullname="Manu Sporny">
              <organization/>
            </author>
            <author initials="A." surname="Guy" fullname="Amy Guy">
              <organization/>
            </author>
            <author initials="M." surname="Sabadello" fullname="Markus Sabadello">
              <organization/>
            </author>
            <author initials="D." surname="Reed" fullname="Drummond Reed">
              <organization/>
            </author>
            <date year="2022" month="July" day="19"/>
          </front>
          <seriesInfo name="W3C" value="REC-did-core-20220719"/>
        </reference>
        <reference anchor="RFC4514">
          <front>
            <title>Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names</title>
            <author fullname="K. Zeilenga" initials="K." role="editor" surname="Zeilenga"/>
            <date month="June" year="2006"/>
            <abstract>
              <t>The X.500 Directory uses distinguished names (DNs) as primary keys to entries in the directory. This document defines the string representation used in the Lightweight Directory Access Protocol (LDAP) to transfer distinguished names. The string representation is designed to give a clean representation of commonly used distinguished names, while being able to represent any distinguished name. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4514"/>
          <seriesInfo name="DOI" value="10.17487/RFC4514"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="FIPS180-4" target="https://csrc.nist.gov/publications/detail/fips/180/4/final">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="180-4"/>
        </reference>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.690"/>
        </reference>
        <reference anchor="JSON-LD" target="https://www.w3.org/TR/2020/REC-json-ld11-20200716/">
          <front>
            <title>JSON-LD 1.1: A JSON-based Serialization for Linked Data</title>
            <author initials="G." surname="Kellogg" fullname="Gregg Kellogg">
              <organization/>
            </author>
            <author initials="P.-A." surname="Champin" fullname="Pierre-Antoine Champin">
              <organization/>
            </author>
            <author initials="D." surname="Longley" fullname="Dave Longley">
              <organization/>
            </author>
            <date year="2020" month="July" day="16"/>
          </front>
          <seriesInfo name="W3C" value="REC-json-ld11-20200716"/>
        </reference>
        <reference anchor="CID" target="https://www.w3.org/TR/cid-1.0/">
          <front>
            <title>Controlled Identifiers v1.0</title>
            <author>
              <organization/>
            </author>
            <date year="2025" month="May" day="15"/>
          </front>
        </reference>
        <reference anchor="REGO" target="https://www.openpolicyagent.org/docs/policy-language">
          <front>
            <title>Policy Language</title>
            <author>
              <organization>Open Policy Agent</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9943">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9943"/>
          <seriesInfo name="DOI" value="10.17487/RFC9943"/>
        </reference>
        <reference anchor="RFC6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <author fullname="R. Ankney" initials="R." surname="Ankney"/>
            <author fullname="A. Malpani" initials="A." surname="Malpani"/>
            <author fullname="S. Galperin" initials="S." surname="Galperin"/>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents. This document obsoletes RFCs 2560 and 6277. It also updates RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6960"/>
          <seriesInfo name="DOI" value="10.17487/RFC6960"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="RFC9360">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to keys in general. For some algorithms, additional properties are defined that carry parameters relating to keys as needed. The COSE Key structure is used for transporting keys outside of COSE messages. This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9360"/>
          <seriesInfo name="DOI" value="10.17487/RFC9360"/>
        </reference>
        <reference anchor="RFC9597">
          <front>
            <title>CBOR Web Token (CWT) Claims in COSE Headers</title>
            <author fullname="T. Looker" initials="T." surname="Looker"/>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document describes how to include CBOR Web Token (CWT) claims in the header parameters of any CBOR Object Signing and Encryption (COSE) structure. This functionality helps to facilitate applications that wish to make use of CWT claims in encrypted COSE structures and/or COSE structures featuring detached signatures, while having some of those claims be available before decryption and/or without inspecting the detached payload. Another use case is using CWT claims with payloads that are not CWT Claims Sets, including payloads that are not CBOR at all.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9597"/>
          <seriesInfo name="DOI" value="10.17487/RFC9597"/>
        </reference>
        <reference anchor="DID-METHODS" target="https://www.w3.org/TR/2026/NOTE-did-extensions-methods-20260926/">
          <front>
            <title>DID Methods</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="September" day="26"/>
          </front>
        </reference>
        <reference anchor="DID-X509-SPEC" target="https://github.com/microsoft/did-x509/blob/d065856f18d7e1d426bf6b8e1f169132b7ed1891/specification.md">
          <front>
            <title>did:x509 Method Specification</title>
            <author initials="M." surname="Riechert" fullname="Maik Riechert">
              <organization>Microsoft</organization>
            </author>
            <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
              <organization>Microsoft</organization>
            </author>
            <date year="2026" month="September" day="29"/>
          </front>
        </reference>
        <reference anchor="VC" target="https://www.w3.org/TR/2022/REC-vc-data-model-20220303/">
          <front>
            <title>Verifiable Credentials Data Model v1.1</title>
            <author>
              <organization/>
            </author>
            <date year="2022" month="March" day="03"/>
          </front>
        </reference>
        <reference anchor="RWOT11" target="https://github.com/WebOfTrustInfo/rwot11-the-hague/blob/master/advance-readings/hybrid_wallet_solutions_x509_DIDs_VCs.md">
          <front>
            <title>Analysis of hybrid wallet solutions - Implementation options for combining x509 certificates with DIDs and VCs</title>
            <author initials="C." surname="Stoecker" fullname="Carsten Stoecker">
              <organization/>
            </author>
            <author initials="C." surname="Wirrig" fullname="Christiane Wirrig">
              <organization/>
            </author>
            <date year="2022" month="July" day="20"/>
          </front>
        </reference>
        <reference anchor="FULCIO" target="https://github.com/sigstore/fulcio">
          <front>
            <title>Fulcio</title>
            <author>
              <organization>Sigstore</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="GITSIGN-TIMESTAMP" target="https://github.com/sigstore/gitsign/blob/44f5e17fac6944fdde71c94d2e77ab075c9dca9f/docs/timestamp.md#L102-L107">
          <front>
            <title>Gitsign: Timestamping</title>
            <author>
              <organization>Sigstore</organization>
            </author>
            <date year="2026" month="July" day="29"/>
          </front>
        </reference>
        <reference anchor="TEST-VECTORS" target="https://github.com/microsoft/did-x509/blob/d065856f18d7e1d426bf6b8e1f169132b7ed1891/test-vectors.json">
          <front>
            <title>did:x509 Test Vectors</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date year="2026" month="September" day="29"/>
          </front>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 1150?>

<section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>The machine-readable certificate chains, DIDs, expected resolution outcomes, and expected DID Documents are maintained in <xref target="TEST-VECTORS"/>.
The file is an array of independent input/output test cases.
Each input embeds its certificate chain as an array of unpadded base64url-encoded DER certificates in leaf-first order.
Each output contains either the expected DID Document or an expected error pattern.
Certificate validity periods are not checked by these vectors.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8V961YbR7rofz1FbflkBRKpQYCxkePMEIFjEgzeIMfZ24tj
taSW6CB1a/oCUWzPs5xnOU92vlvdWi2MM5N9smYS1F1VXZfvfqt2u9247ard
RqOIi1nUVc3+daTG8bj7++PtA3UUjaKkyMJZ/Ec0Vidj+BFP4ihTG0cnR5vq
VVRcp+NmIxwOswiGaeqOzcY4HSXhHAYcZ+GkaA/j7OY6nf3RhhZtbNHe3m2M
wiKaptmyq+JkkjbycjiP8zxOk/5yEeHDcbSIEvxooxEvsq4qsjIvdra3D7Z3
GjfR8i7Nxl31TsFcWurXAEZtXTUaeREm4/fhLE1gjGWUN/J5mBXv/1GmRZR3
VZI2FjH0KtJRS+VpVmTRJIe/lnP8A/qHJSwq6zZUW/EKXoXxjbqIo9F1lBUN
pVSaTcMk/iMsYKrwOh5laZ5O6FU0D+MZdwl0l7/PdYtglM7tuIdJkcZJBJs8
i6dJWLRPw9uwHD/sC2FSjGfrRn4ZJTfqB9ny1fFeZGGZXKcTOMfLk74z6DX0
C/RR/T2OigmMmxThqHBmPQ/LbKl61+E8XKblw2bLnQLdqTLvRpJmc+h9G8Gu
q4sXvd2Dp/tdVWYx/LzsHx1s43Ol2l31W54m9PfzLjZ8uvP4gLs83e9sd9Vo
PJ7x78c7u3uwS8Nkwr+f7G0/xlEAVniwIsymUQFrLopF3t3auru7C+52A1jL
Vv9ia2d7Z2fr4rhH8DpKs6iNT7afdA62uDdjyzr8yAlB8k112wm2qYOBKvrH
glZSqstFmiXLypvD+VL9WFafvgqzmzJXl+EwHEezWVp5fZSV83majNVFFBEc
qTzK4ihH9NKffrvbg62rWxk1GANOdhU+am8/aXdkd/ced/bkbPb295529R4/
pZN5cfL6svN0u71Xv7OjPBsFSZwXwTS93VqUw1k8IljJt8ZRAfCxNYkX+RaM
sLUHfybhzN3iy2hUZpF6GebX6hJRO8zGauPy5eVmzb7C6XXVGQ0eztRJksMg
ZRGpdGL65oA6Y9UH1EzSWTpdrtkmXFNX0aq8fek8bm8/FSjd3zmQnXjyuPME
//w12NfAWgdfMJkgToqtLBpt9dt4CNTBXW7zBCZB2JAmqjCzhCM+vDwLOipK
Ruk4TqYqK2dIzi4X0QhAjjcU1/lDmMcjdaybXWAztfHD8cVmS/XCJE2g7Wzl
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
GC8dW+mUgyiYW/KZBo3/B68/R4DJvwAA

-->

</rfc>
