<?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.19 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-birkholz-did-x509-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="did:x509">x509 Decentralized Identifier</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-did-x509-00"/>
    <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="2025" month="October" day="20"/>
    <area>Security</area>
    <keyword>DID</keyword>
    <keyword>X.509</keyword>
    <abstract>
      <?line 66?>

<t>Some abstract</t>
    </abstract>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document aims to define an interoperable and flexible issuer identifier format for COSE messages that transport or refer to X.509 certificates 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 used in a COSE Header CWT Claims map as defined in <xref target="RFC9597"/>.
This issuer identifier is convenient for references and policy evaluation, for example in the context of transparency ledgers.</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, CDDL (<xref target="RFC8610"/>, <xref target="RFC9165"/>) is used to describe the
data formats, and ABNF (defined in <xref target="RFC5234"/>) to describe identifiers.</t>
      <t>The reader is assumed to be familiar with the vocabulary and concepts
defined in <xref target="I-D.ietf-scitt-architecture"/>.</t>
    </section>
    <section anchor="identifier-syntax">
      <name>Identifier Syntax</name>
      <t>The did:x509 ABNF definition defined below uses the syntax defined in <xref target="RFC5234"/> and the corresponding definitions for <tt>ALPHA</tt> and <tt>DIGIT</tt>.
The <xref target="DIDV1"/> contains the definition for <tt>idchar</tt>.</t>
      <sourcecode type="abnf"><![CDATA[
did-x509           = "did:" method-name ":" method-specific-id
method-name        = "x509"
method-specific-id = version ":" ca-fingerprint-alg ":" ca-fingerprint 1*("::" policy-name ":" policy-value)
version            = 1*DIGIT
ca-fingerprint-alg = "sha256" / "sha384" / "sha512"
ca-fingerprint     = base64url
policy-name        = 1*ALPHA
policy-value       = *(1*idchar ":") 1*idchar
base64url          = 1*(ALPHA / DIGIT / "-" / "_")
]]></sourcecode>
      <t>In this draft, version is <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 <tt>chain[i].fingerprint[ca-fingerprint-alg]</tt> with i &gt; 0, that is, either an intermediate or root CA certificate.
<tt>policy-name</tt> is a policy name and <tt>policy-value</tt> is a policy-specific value.
<tt>::</tt> is used to separate multiple policies from each other.</t>
      <t>The following sections define the policies and their policy-specific syntax.</t>
      <t>Validation of policies is formally defined using <xref target="REGO"/> policies, though there is no expectation that implementations use Rego.</t>
      <t>The input to the Rego engine is the JSON document <tt>{"did": "&lt;DID&gt;", "chain": &lt;CertificateChain&gt;}</tt>.</t>
      <t>Core Rego policy:</t>
      <sourcecode type="rego"><![CDATA[
parse_did(did) := [ca_fingerprint_alg, ca_fingerprint, policies] if {
    prefix := "did:x509:0:"
    startswith(did, prefix) == true
    rest := trim_prefix(did, prefix)
    parts := split(rest, "::")
    [ca_fingerprint_alg, ca_fingerprint] := split(parts[0], ":")
    policies_raw := array.slice(parts, 1, count(parts))
    policies := [y |
        some i
        s := policies_raw[i]
        j := indexof(s, ":")
        y := [substring(s, 0, j), substring(s, j+1, -1)]
    ]
}

valid if {
    [ca_fingerprint_alg, ca_fingerprint, policies] := parse_did(input.did)
    ca := [c | some i; i != 0; c := input.chain[i]]
    ca[_].fingerprint[ca_fingerprint_alg] == ca_fingerprint
    valid_policies := [i |
        some i
        [name, value] := policies[i]
        validate_policy(name, value)
    ]
    count(valid_policies) == count(policies)
}
]]></sourcecode>
      <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_policy</tt> function.</t>
      <section anchor="percent-encoding">
        <name>Percent-encoding</name>
        <t>Some of the policies 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"/>. All characters that are not in the allowed set defined below must be percent-encoded:</t>
        <sourcecode type="abnf"><![CDATA[
allowed = ALPHA / DIGIT / "-" / "." / "_"
]]></sourcecode>
        <t>Note that most libraries implement percent-encoding in the context of URLs and do NOT encode <tt>~</tt> (<tt>%7E</tt>).</t>
      </section>
      <section anchor="subject-policy">
        <name>"subject" policy</name>
        <sourcecode type="abnf"><![CDATA[
policy-name     = "subject"
policy-value    = key ":" value *(":" key ":" value)
key             = label / oid
value           = 1*idchar
label           = "CN" / "L" / "ST" / "O" / "OU" / "C" / "STREET"
oid             = 1*DIGIT *("." 1*DIGIT)
]]></sourcecode>
        <t><tt>&lt;key&gt;:&lt;value&gt;</tt> are the subject name fields in <tt>chain[0].subject</tt> in any order. Field repetitions are not allowed. Values must be percent-encoded.</t>
        <t>Example:</t>
        <t><tt>did:x509:0:sha256:WE4P5dd8DnLHSkyHaIjhp4udlkF9LqoKwCvu9gl38jk::subject:C:US:ST:California:L:San%20Francisco:O:GitHub%2C%20Inc.</tt></t>
        <t>Rego policy:</t>
        <sourcecode type="rego"><![CDATA[
validate_policy(name, value) := true if {
    name == "subject"
    items := split(value, ":")
    count(items) % 2 == 0
    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>
      </section>
      <section anchor="san-policy">
        <name>"san" policy</name>
        <sourcecode type="abnf"><![CDATA[
policy-name     = "san"
policy-value    = san-type ":" san-value
san-type        = "email" / "dns" / "uri"
san-value       = 1*idchar
]]></sourcecode>
        <t><tt>san-type</tt> is the SAN type and must 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:WE4P5dd8DnLHSkyHaIjhp4udlkF9LqoKwCvu9gl38jk::san:email:bob%40example.com</tt></t>
        <t>Rego policy:</t>
        <sourcecode type="rego"><![CDATA[
validate_policy(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>
      </section>
      <section anchor="eku-policy">
        <name>"eku" policy</name>
        <sourcecode type="abnf"><![CDATA[
policy-name  = "eku"
policy-value = eku
eku          = oid
oid          = 1*DIGIT *("." 1*DIGIT)
]]></sourcecode>
        <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:WE4P5dd8DnLHSkyHaIjhp4udlkF9LqoKwCvu9gl38jk::eku:1.3.6.1.4.1.311.10.3.13</tt></t>
        <t>Rego policy:</t>
        <sourcecode type="rego"><![CDATA[
validate_policy(name, value) := true if {
    name == "eku"
    value == input.chain[0].extensions.eku[_]
}
]]></sourcecode>
      </section>
      <section anchor="fulcio-issuer-policy">
        <name>"fulcio-issuer" policy</name>
        <sourcecode type="abnf"><![CDATA[
policy-name   = "fulcio-issuer"
policy-value  = fulcio-issuer
fulcio-issuer = 1*idchar
]]></sourcecode>
        <t><tt>fulcio-issuer</tt> is <tt>chain[0].extensions.fulcio_issuer</tt> without leading <tt>https://</tt>, percent-encoded.</t>
        <t>Example:</t>
        <t><tt>did:x509:0:sha256:WE4P5dd8DnLHSkyHaIjhp4udlkF9LqoKwCvu9gl38jk::fulcio-issuer:accounts.google.com::san:email:bob%40example.com</tt></t>
        <t>Example 2:</t>
        <t><tt>did:x509:0:sha256:WE4P5dd8DnLHSkyHaIjhp4udlkF9LqoKwCvu9gl38jk::fulcio-issuer:token.actions.githubusercontent.com::san:uri:https%3A%2F%2Fgithub.com%2Focto-org%2Focto-automation%2F.github%2Fworkflows%2Foidc.yml%40refs%2Fheads%2Fmain</tt></t>
        <t>Rego policy:</t>
        <sourcecode type="rego"><![CDATA[
validate_policy(name, value) := true if {
    name == "fulcio-issuer"
    suffix := urlquery.decode(value)
    concat("", ["https://", suffix]) == input.chain[0].extensions.fulcio_issuer
}
]]></sourcecode>
      </section>
      <section anchor="did-resolution-options">
        <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>.</t>
          </li>
          <li>
            <t>Concatenate the resulting strings in order, separated by comma <tt>","</tt>.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="example-controller-document">
      <name>Example Controller Document</name>
      <t>The illustrates what a typical Controller document can look like once resolved:</t>
      <figure anchor="fig-controller-placeholder">
        <name>JSON controller document example</name>
        <artwork type="json" align="left"><![CDATA[
{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:x509:0:sha256:hH32p4SXlD8n_HLrk_mmNzIKArVh0KkbCeh6eAftfGE::subject:CN:Microsoft%20Corporation",
  "verificationMethod": [
    {
      "id": "did:x509:0:sha256:hH32p4SXlD8n_HLrk_mmNzIKArVh0KkbCeh6eAftfGE::subject:CN:Microsoft%20Corporation#key-1",
      "type": "JsonWebKey2020",
      "controller": "did:x509:0:sha256:hH32p4SXlD8n_HLrk_mmNzIKArVh0KkbCeh6eAftfGE::subject:CN:Microsoft%20Corporation",
      "publicKeyJwk": {
        "kty": "RSA",
        "n": "s9HduD2rvmO-SGksB4HR-qvSK379St8NnUZBH8xBiQvt2zONOLUHWQibeBW4NLUfHfzMaOM77RhNlqPNiDRKhChlG1aHqEHSAaQBGrmr0ULGIzq-1YvqQufMGYBFfq0sc10UdvWqT0RjwkPQTu4bjg37zSYF9OcGxS9uGnPMdWRM0ThOsYUcDmMoCaJRebsLUBpMmYXkcUYXJrcSGAaUNd0wjhwIpEogOD-AbWW_7TPZOl-JciMj40a78EEXIc2p06lWHfe5hegQ7uGIlSAPG6zDzjhjNkzE63_-GoqJU-6QLazbL5_y27ZDUAEYJokbb305A-dOp930CjTar3BvWQ",
        "e": "AQAB"
      }
    }
  ],
  "assertionMethod": [
    "did:x509:0:sha256:hH32p4SXlD8n_HLrk_mmNzIKArVh0KkbCeh6eAftfGE::subject:CN:Microsoft%20Corporation#key-1"
  ],
  "keyAgreement": [
    "did:x509:0:sha256:hH32p4SXlD8n_HLrk_mmNzIKArVh0KkbCeh6eAftfGE::subject:CN:Microsoft%20Corporation#key-1"
  ]
}
]]></artwork>
      </figure>
    </section>
    <section anchor="cddl-for-a-json-data-model-for-x509-certification-paths">
      <name>CDDL for a JSON Data Model for X.509 Certification Paths</name>
      <figure anchor="fig-cddl-placeholder">
        <name>CDDL definition of did:x.509 JSON Data Model</name>
        <artwork type="cddl" align="left"><![CDATA[
CertificateChain = [2*Certificate]  ; leaf is first

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  ; http://oid-info.com/get/1.3.6.1.4.1.57264.1.1
    }
}

; 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] ; Example: ["email", "bill@microsoft.com"]
DNSName = ["dns", tstr]      ; Example: ["dns", "microsoft.com"]
URI = ["uri", tstr]          ; Example: ["uri", "https://microsoft.com"]
DirectoryName = ["dn", Name] ; Example: ["dn", {CN: "Microsoft"}]
]]></artwork>
      </figure>
    </section>
    <section anchor="privconsec">
      <name>Privacy Considerations</name>
      <t>Some considerations</t>
    </section>
    <section anchor="secconsec">
      <name>Security Consideration</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 policies 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 certificate authority should publish their 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 as well as consumers of signed content to decide whether it is appropriate to trust a given did:x509.</t>
        <section anchor="x509-trust-stores">
          <name>X.509 trust stores</name>
          <t>Typically, a verifier trusts an X.509 certificate by applying chain validation defined in <xref section="6" sectionFormat="of" target="RFC5280"/> using a set of certificate authority (CA) certificates as trust store, together with additional application-specific policies.</t>
          <t>This DID method does not require an X.509 trust anchor store but rather relies on verifiers either trusting an individual DID directly or using third-party endorsements for a given DID, like <xref target="VC"/>, to establish trust.</t>
          <t>By layering this DID method on top of X.509, verifiers are free to use traditional chain validation (for example, verifiers unaware of DID), or rely on DID as an ecosystem to establish trust.</t>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t><cref anchor="rfced">RFC Editor:</cref> Please replace "RFCthis" with the RFC number assigned to this document.</t>
      <t><cref anchor="rfced_1">RFC Editor:</cref> Some considerations</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="RFC9165">
          <front>
            <title>Additional Control Operators for the Concise Data Definition Language (CDDL)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, provides "control operators" as its main language extension point.</t>
              <t>The present document defines a number of control operators that were not yet ready at the time RFC 8610 was completed:.plus,.cat, and.det for the construction of constants;.abnf/.abnfb for including ABNF (RFC 5234 and RFC 7405) in CDDL specifications; and.feature for indicating the use of a non-basic feature in an instance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9165"/>
          <seriesInfo name="DOI" value="10.17487/RFC9165"/>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="BCP26">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </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="DIDV1" target="https://www.w3.org/TR/2022/REC-did-core-20220719/">
          <front>
            <title>W3C DID v1.0 specification</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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="VC" target="https://www.w3.org/TR/vc-data-model/">
          <front>
            <title>W3C Verifiable Credentials</title>
            <author>
              <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="I-D.ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
            <date day="10" month="October" year="2025"/>
            <abstract>
              <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures 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, interoperability between different
   transparency services, and compliance with various auditing
   procedures and regulatory requirements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
        </reference>
        <reference anchor="REGO" target="https://www.openpolicyagent.org/docs/latest/policy-language/">
          <front>
            <title>Rego</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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>
      </references>
    </references>
    <?line 422?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank
<em>list</em>
for their reviews and suggestions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
PoYdwFLgH0/9L3oB7WNcNgAA

-->

</rfc>
