<?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.31 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-spice-sd-cwt-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="SD-CWT">Selective Disclosure CBOR Web Tokens (SD-CWT)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-spice-sd-cwt-07"/>
    <author fullname="Michael Prorock">
      <organization>mesur.io</organization>
      <address>
        <email>mprorock@mesur.io</email>
      </address>
    </author>
    <author fullname="Orie Steele">
      <organization>Tradeverifyd</organization>
      <address>
        <email>orie@or13.io</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="R." surname="Mahy" fullname="Rohan Mahy">
      <organization/>
      <address>
        <email>rohan.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>Security</area>
    <workgroup>Secure Patterns for Internet CrEdentials</workgroup>
    <keyword>cose</keyword>
    <keyword>cwt</keyword>
    <keyword>selective disclosure</keyword>
    <abstract>
      <?line 84?>

<t>This specification describes a data minimization technique for use with CBOR Web Tokens (CWTs).
The approach is inspired by the Selective Disclosure JSON Web Token (SD-JWT), with changes to align with CBOR Object Signing and Encryption (COSE) and CWTs.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-spice.github.io/draft-ietf-spice-sd-cwt/draft-ietf-spice-sd-cwt.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-spice-sd-cwt/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Secure Patterns for Internet CrEdentials Working Group mailing list (<eref target="mailto:spice@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spice/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spice/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-spice/draft-ietf-spice-sd-cwt"/>.</t>
    </note>
  </front>
  <middle>
    <?line 90?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification creates a new format based on the CBOR Web Token (CWT) specification <xref target="RFC8392"/>.
It enables the Holder of a CWT to disclose or withhold special claims marked as selectively disclosable by the Issuer of a CWT, when presenting those claims to a Verifier.
The approach is inspired by SD-JWT <xref target="I-D.draft-ietf-oauth-selective-disclosure-jwt"/>, with changes to align with conventions from CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/> and CWT.
Holders of SD-CWT credentials can prove the integrity and authenticity of Holder-chosen attributes asserted by an Issuer to a Verifier.
The Holder also proves possession of the confirmation method (defined in <xref target="RFC8747"/>) to prevent copy and paste attacks.</t>
      <t>SD-CWTs provide privacy improvements compared to regular CWTs, but remain traceable.
Techniques such as one-time use and batch issuance can improve the confidentiality and security characteristics of CWT-based credential protocols.</t>
      <t>This document defines a generic container format, not a specific credential type.
For example, a license to operate a vehicle and a license to import a product will contain different attributes.</t>
      <section anchor="high-level-flow">
        <name>High-Level Flow</name>
        <figure anchor="fig-high-level-flow">
          <name>High-level SD-CWT Issuance and Presentation Flow</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="584" viewBox="0 0 584 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 24,48 L 24,384" fill="none" stroke="black"/>
                <path d="M 288,48 L 288,384" fill="none" stroke="black"/>
                <path d="M 320,64 L 320,96" fill="none" stroke="black"/>
                <path d="M 320,224 L 320,256" fill="none" stroke="black"/>
                <path d="M 320,288 L 320,320" fill="none" stroke="black"/>
                <path d="M 560,48 L 560,384" fill="none" stroke="black"/>
                <path d="M 288,64 L 320,64" fill="none" stroke="black"/>
                <path d="M 296,96 L 320,96" fill="none" stroke="black"/>
                <path d="M 32,112 L 288,112" fill="none" stroke="black"/>
                <path d="M 24,144 L 280,144" fill="none" stroke="black"/>
                <path d="M 288,160 L 552,160" fill="none" stroke="black"/>
                <path d="M 296,192 L 560,192" fill="none" stroke="black"/>
                <path d="M 288,224 L 320,224" fill="none" stroke="black"/>
                <path d="M 296,256 L 320,256" fill="none" stroke="black"/>
                <path d="M 288,288 L 320,288" fill="none" stroke="black"/>
                <path d="M 296,320 L 320,320" fill="none" stroke="black"/>
                <path d="M 288,368 L 552,368" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="560,368 548,362.4 548,373.6" fill="black" transform="rotate(0,552,368)"/>
                <polygon class="arrowhead" points="560,160 548,154.4 548,165.6" fill="black" transform="rotate(0,552,160)"/>
                <polygon class="arrowhead" points="304,320 292,314.4 292,325.6" fill="black" transform="rotate(180,296,320)"/>
                <polygon class="arrowhead" points="304,256 292,250.4 292,261.6" fill="black" transform="rotate(180,296,256)"/>
                <polygon class="arrowhead" points="304,192 292,186.4 292,197.6" fill="black" transform="rotate(180,296,192)"/>
                <polygon class="arrowhead" points="304,96 292,90.4 292,101.6" fill="black" transform="rotate(180,296,96)"/>
                <polygon class="arrowhead" points="288,144 276,138.4 276,149.6" fill="black" transform="rotate(0,280,144)"/>
                <polygon class="arrowhead" points="40,112 28,106.4 28,117.6" fill="black" transform="rotate(180,32,112)"/>
                <g class="text">
                  <text x="28" y="36">Issuer</text>
                  <text x="292" y="36">Holder</text>
                  <text x="548" y="36">Verifier</text>
                  <text x="360" y="84">Key Gen</text>
                  <text x="148" y="100">Request SD-CWT</text>
                  <text x="448" y="148">Request Nonce</text>
                  <text x="148" y="164">Receive SD-CWT</text>
                  <text x="448" y="212">Receive Nonce</text>
                  <text x="384" y="244">Redact Claims</text>
                  <text x="376" y="308">Demonstrate</text>
                  <text x="368" y="324">Posession</text>
                  <text x="452" y="356">Present SD-CWT</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Issuer                           Holder                         Verifier
  |                                |                                 |
  |                                +---+                             |
  |                                |   | Key Gen                     |
  |        Request SD-CWT          |<--+                             |
  |<-------------------------------+                                 |
  |                                |                                 |
  +------------------------------->|             Request Nonce       |
  |        Receive SD-CWT          +-------------------------------->|
  |                                |                                 |
  |                                |<--------------------------------+
  |                                |             Receive Nonce       |
  |                                +---+                             |
  |                                |   | Redact Claims               |
  |                                |<--+                             |
  |                                |                                 |
  |                                +---+                             |
  |                                |   | Demonstrate                 |
  |                                |<--+ Posession                   |
  |                                |                                 |
  |                                |             Present SD-CWT      |
  |                                +-------------------------------->|
  |                                |                                 |
]]></artwork>
          </artset>
        </figure>
        <t>This diagram captures the flow to issue and present an SD-CWT.</t>
        <t>The parameters necessary to support these processes can be obtained using transports or protocols that are out of scope for this specification.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</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>The CBOR examples in this document are shown in CBOR Extended Diagnostic Notation (EDN) <xref target="I-D.ietf-cbor-edn-literals"/>.
EDN resembles JSON, but it can contain comments, and it can represent all native CBOR types, including byte strings, tagged values, and CBOR simple values.</t>
      <t>Data model constraints are described using the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>.</t>
      <t>This specification uses terms from CWT <xref target="RFC8392"/>, COSE <xref target="RFC9052"/> <xref target="RFC9053"/>
and JWT <xref target="RFC7519"/>.</t>
      <t>The terms Claim Name, Claim Key, and Claim Value are defined in <xref target="RFC8392"/>.</t>
      <t>This specification defines the following new terms:</t>
      <dl>
        <dt>Selective Disclosure CBOR Web Token (SD-CWT):</dt>
        <dd>
          <t>A CWT with claims enabling selective disclosure with key binding.</t>
        </dd>
        <dt>Selective Disclosure Key Binding Token (SD-CWT-KBT):</dt>
        <dd>
          <t>A CWT used to demonstrate possession of a confirmation method, associated with an SD-CWT.</t>
        </dd>
        <dt>Assertion Key:</dt>
        <dd>
          <t>A key used by the Issuer to sign a Claim Values.</t>
        </dd>
        <dt>Confirmation Key:</dt>
        <dd>
          <t>A key used by the Holder to sign a Selected Salted Disclosed Claims.</t>
        </dd>
        <dt>Issuer:</dt>
        <dd>
          <t>An entity that produces a Selective Disclosure CBOR Web Token by signing a Claim Values with an Assertion Key.</t>
        </dd>
        <dt>Holder:</dt>
        <dd>
          <t>An entity that presents a Selective Disclosure Key Binding Token, containing a Selective Disclosure CBOR Web Token and Selected Salted Disclosed Claims signed with a Confirmation Key.</t>
        </dd>
        <dt>Verifier:</dt>
        <dd>
          <t>An entity that validates a Partial or Full Disclosure by a Holder.</t>
        </dd>
        <dt>Partial Disclosure:</dt>
        <dd>
          <t>When a subset of the original claims, protected by the Issuer, are disclosed by the Holder.</t>
        </dd>
        <dt>Full Disclosure:</dt>
        <dd>
          <t>When the full set of claims protected by the Issuer is disclosed by the Holder. An SD-CWT with no blinded claims (when no claims are blinded by the Issuer) is considered a Full Disclosure.</t>
        </dd>
        <dt>Salted Disclosed Claim:</dt>
        <dd>
          <t>A salted claim disclosed in the unprotected header of an SD-CWT.</t>
        </dd>
        <dt>Blinded Claim Hash:</dt>
        <dd>
          <t>A hash digest of a Salted Disclosed Claim.</t>
        </dd>
        <dt>Blinded Claim:</dt>
        <dd>
          <t>Any Redacted Claim Key or Redacted Claim Element that has been replaced in the
CWT payload by a Blinded Claim Hash.</t>
        </dd>
        <dt>Redacted Claim Key:</dt>
        <dd>
          <t>The hash of a claim redacted from a map data structure.</t>
        </dd>
        <dt>Redacted Claim Element:</dt>
        <dd>
          <t>The hash of an element redacted from an array data structure.</t>
        </dd>
        <dt>Presented Disclosed Claims Set:</dt>
        <dd>
          <t>The CBOR map containing zero or more Redacted Claim Keys or Redacted Claim Elements.</t>
        </dd>
        <dt>Validated Disclosed Claims Set:</dt>
        <dd>
          <t>The CBOR map containing all mandatory to disclose claims signed by the Issuer, all selectively disclosed claims presented by the Holder, and omitting all undisclosed instances of Redacted Claim Keys and Redacted Claim Element claims that are present in the original SD-CWT.</t>
        </dd>
      </dl>
    </section>
    <section anchor="overview-of-selective-disclosure-cwt">
      <name>Overview of Selective Disclosure CWT</name>
      <t>SD-CWT operates on CWT Claims Sets as described in <xref target="RFC8392"/>.
CWT Claims Sets contain Claim Keys and Claim Values.
Issuers choose which Claim Keys and Claim Values to blind or not blind.
Holders choose to disclose none, some, or all of the blinded Claim Keys and Claim Values, and whether to present an issued SD-CWT at all.
Holders present an SD-CWT and any disclosures to Verifiers in a Key Binding Token (KBT) that proves the Holder's control of the private key corresponding to the SD-CWT confirmation (public) key.</t>
      <t>Selective Disclosure CBOR Web Tokens (SD-CWTs) can be deployed in protocols that are already using CWTs with minor changes, even if they contain no optional-to-disclose claims.
A Verifier that does not understand selective disclosure at all can only act on unblinded claims sent by the Holder; it will ignore Blinded Claims representing array items, and will fail to process any SD-CWT containing Blinded Claims that represent map keys.
Optional Claim Keys, whether they are disclosed or not, can only be processed by a Verifier that understands this specification.
However, Claim Keys and Claim Values that are not understood remain ignored, as described in <xref section="3" sectionFormat="of" target="RFC8392"/>.</t>
      <t>The following diagram explains the relationships between the terminology used in this specification.</t>
      <figure anchor="f-role-inputs">
        <name>Inputs provided to each Role</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="656" width="488" viewBox="0 0 488 656" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,128 L 8,208" fill="none" stroke="black"/>
              <path d="M 8,352 L 8,480" fill="none" stroke="black"/>
              <path d="M 8,608 L 8,640" fill="none" stroke="black"/>
              <path d="M 24,32 L 24,64" fill="none" stroke="black"/>
              <path d="M 24,256 L 24,288" fill="none" stroke="black"/>
              <path d="M 24,528 L 24,560" fill="none" stroke="black"/>
              <path d="M 32,384 L 32,448" fill="none" stroke="black"/>
              <path d="M 72,64 L 72,120" fill="none" stroke="black"/>
              <path d="M 72,208 L 72,248" fill="none" stroke="black"/>
              <path d="M 72,288 L 72,344" fill="none" stroke="black"/>
              <path d="M 72,480 L 72,520" fill="none" stroke="black"/>
              <path d="M 72,560 L 72,600" fill="none" stroke="black"/>
              <path d="M 120,32 L 120,64" fill="none" stroke="black"/>
              <path d="M 144,528 L 144,560" fill="none" stroke="black"/>
              <path d="M 152,256 L 152,288" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,96" fill="none" stroke="black"/>
              <path d="M 192,528 L 192,560" fill="none" stroke="black"/>
              <path d="M 200,256 L 200,304" fill="none" stroke="black"/>
              <path d="M 296,144 L 296,208" fill="none" stroke="black"/>
              <path d="M 352,544 L 352,560" fill="none" stroke="black"/>
              <path d="M 352,624 L 352,640" fill="none" stroke="black"/>
              <path d="M 376,272 L 376,304" fill="none" stroke="black"/>
              <path d="M 416,400 L 416,448" fill="none" stroke="black"/>
              <path d="M 432,368 L 432,480" fill="none" stroke="black"/>
              <path d="M 480,48 L 480,96" fill="none" stroke="black"/>
              <path d="M 24,32 L 120,32" fill="none" stroke="black"/>
              <path d="M 168,32 L 464,32" fill="none" stroke="black"/>
              <path d="M 128,48 L 168,48" fill="none" stroke="black"/>
              <path d="M 24,64 L 120,64" fill="none" stroke="black"/>
              <path d="M 168,96 L 480,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 280,128" fill="none" stroke="black"/>
              <path d="M 8,176 L 296,176" fill="none" stroke="black"/>
              <path d="M 8,208 L 296,208" fill="none" stroke="black"/>
              <path d="M 24,256 L 152,256" fill="none" stroke="black"/>
              <path d="M 200,256 L 360,256" fill="none" stroke="black"/>
              <path d="M 160,272 L 200,272" fill="none" stroke="black"/>
              <path d="M 24,288 L 152,288" fill="none" stroke="black"/>
              <path d="M 200,304 L 376,304" fill="none" stroke="black"/>
              <path d="M 8,352 L 416,352" fill="none" stroke="black"/>
              <path d="M 32,384 L 400,384" fill="none" stroke="black"/>
              <path d="M 32,416 L 416,416" fill="none" stroke="black"/>
              <path d="M 32,448 L 416,448" fill="none" stroke="black"/>
              <path d="M 8,480 L 432,480" fill="none" stroke="black"/>
              <path d="M 24,528 L 144,528" fill="none" stroke="black"/>
              <path d="M 192,528 L 336,528" fill="none" stroke="black"/>
              <path d="M 152,544 L 192,544" fill="none" stroke="black"/>
              <path d="M 24,560 L 144,560" fill="none" stroke="black"/>
              <path d="M 192,560 L 352,560" fill="none" stroke="black"/>
              <path d="M 8,608 L 336,608" fill="none" stroke="black"/>
              <path d="M 8,640 L 352,640" fill="none" stroke="black"/>
              <path d="M 464,32 C 472.83064,32 480,39.16936 480,48" fill="none" stroke="black"/>
              <path d="M 280,128 C 288.83064,128 296,135.16936 296,144" fill="none" stroke="black"/>
              <path d="M 360,256 C 368.83064,256 376,263.16936 376,272" fill="none" stroke="black"/>
              <path d="M 416,352 C 424.83064,352 432,359.16936 432,368" fill="none" stroke="black"/>
              <path d="M 400,384 C 408.83064,384 416,391.16936 416,400" fill="none" stroke="black"/>
              <path d="M 336,528 C 344.83064,528 352,535.16936 352,544" fill="none" stroke="black"/>
              <path d="M 336,608 C 344.83064,608 352,615.16936 352,624" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="168,272 156,266.4 156,277.6" fill="black" transform="rotate(180,160,272)"/>
              <polygon class="arrowhead" points="160,544 148,538.4 148,549.6" fill="black" transform="rotate(180,152,544)"/>
              <polygon class="arrowhead" points="136,48 124,42.4 124,53.6" fill="black" transform="rotate(180,128,48)"/>
              <polygon class="arrowhead" points="80,600 68,594.4 68,605.6" fill="black" transform="rotate(90,72,600)"/>
              <polygon class="arrowhead" points="80,520 68,514.4 68,525.6" fill="black" transform="rotate(90,72,520)"/>
              <polygon class="arrowhead" points="80,344 68,338.4 68,349.6" fill="black" transform="rotate(90,72,344)"/>
              <polygon class="arrowhead" points="80,248 68,242.4 68,253.6" fill="black" transform="rotate(90,72,248)"/>
              <polygon class="arrowhead" points="80,120 68,114.4 68,125.6" fill="black" transform="rotate(90,72,120)"/>
              <g class="text">
                <text x="76" y="52">Issuer</text>
                <text x="252" y="52">Holder Public Key,</text>
                <text x="244" y="68">Full Claims Set,</text>
                <text x="324" y="84">Pre-issuance blinding/decoy requests</text>
                <text x="152" y="148">Issuer-Signed: Plaintext Claims +</text>
                <text x="108" y="164">Blinded Claim Hashes</text>
                <text x="128" y="196">All Salted Disclosed Claims</text>
                <text x="84" y="276">Holder</text>
                <text x="288" y="276">Holder Private Key,</text>
                <text x="284" y="292">Chosen Disclosures</text>
                <text x="148" y="372">Holder-Signed: Key Binding Token</text>
                <text x="220" y="404">Issuer-Signed: Claims + Blinded Claim Hashes</text>
                <text x="204" y="436">Holder-Selected: Salted Disclosed Claims</text>
                <text x="76" y="548">Verifier</text>
                <text x="272" y="548">Issuer Public Key</text>
                <text x="136" y="628">Validated Disclosed Claim Set</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
  +-----------+     +-------------------------------------.
  |   Issuer  |<----+ Holder Public Key,                   |
  +-----+-----+     | Full Claims Set,                     |
        |           | Pre-issuance blinding/decoy requests |
        |           +--------------------------------------+
        v
+----------------------------------.
| Issuer-Signed: Plaintext Claims + |
|  Blinded Claim Hashes             |
+-----------------------------------+
| All Salted Disclosed Claims       |
+-------+---------------------------+
        |
        v
  +---------------+     +--------------------.
  |    Holder     |<----+ Holder Private Key, |
  +-----+---------+     | Chosen Disclosures  |
        |               +---------------------+
        |
        v
+---------------------------------------------------.
| Holder-Signed: Key Binding Token                   |
|  +----------------------------------------------.  |
|  | Issuer-Signed: Claims + Blinded Claim Hashes  | |
|  +-----------------------------------------------+ |
|  | Holder-Selected: Salted Disclosed Claims      | |
|  +-----------------------------------------------+ |
|                                                    |
+-------+--------------------------------------------+
        |
        v
  +--------------+     +------------------.
  |  Verifier    |<----+ Issuer Public Key |
  +-----+--------+     +-------------------+
        |
        v
+-----------------------------------------.
| Validated Disclosed Claim Set            |
+------------------------------------------+
]]></artwork>
        </artset>
      </figure>
      <t>This diagram relates the terminology specific to selective disclosure and redaction.</t>
      <figure anchor="f-roundtrip-claim">
        <name>Round trip journey of a blinded claim</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1008" width="440" viewBox="0 0 440 1008" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
              <path d="M 8,272 L 8,304" fill="none" stroke="black"/>
              <path d="M 8,368 L 8,400" fill="none" stroke="black"/>
              <path d="M 8,464 L 8,592" fill="none" stroke="black"/>
              <path d="M 8,640 L 8,672" fill="none" stroke="black"/>
              <path d="M 8,752 L 8,784" fill="none" stroke="black"/>
              <path d="M 8,848 L 8,880" fill="none" stroke="black"/>
              <path d="M 8,960 L 8,992" fill="none" stroke="black"/>
              <path d="M 32,512 L 32,560" fill="none" stroke="black"/>
              <path d="M 56,64 L 56,152" fill="none" stroke="black"/>
              <path d="M 56,192 L 56,264" fill="none" stroke="black"/>
              <path d="M 56,304 L 56,360" fill="none" stroke="black"/>
              <path d="M 56,400 L 56,456" fill="none" stroke="black"/>
              <path d="M 56,592 L 56,632" fill="none" stroke="black"/>
              <path d="M 56,672 L 56,744" fill="none" stroke="black"/>
              <path d="M 56,784 L 56,840" fill="none" stroke="black"/>
              <path d="M 56,880 L 56,952" fill="none" stroke="black"/>
              <path d="M 104,32 L 104,64" fill="none" stroke="black"/>
              <path d="M 104,160 L 104,192" fill="none" stroke="black"/>
              <path d="M 104,640 L 104,672" fill="none" stroke="black"/>
              <path d="M 104,752 L 104,784" fill="none" stroke="black"/>
              <path d="M 312,528 L 312,560" fill="none" stroke="black"/>
              <path d="M 352,288 L 352,304" fill="none" stroke="black"/>
              <path d="M 352,384 L 352,400" fill="none" stroke="black"/>
              <path d="M 352,480 L 352,592" fill="none" stroke="black"/>
              <path d="M 352,864 L 352,880" fill="none" stroke="black"/>
              <path d="M 352,976 L 352,992" fill="none" stroke="black"/>
              <path d="M 8,32 L 104,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 104,64" fill="none" stroke="black"/>
              <path d="M 8,160 L 104,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 104,192" fill="none" stroke="black"/>
              <path d="M 8,272 L 336,272" fill="none" stroke="black"/>
              <path d="M 8,304 L 352,304" fill="none" stroke="black"/>
              <path d="M 8,368 L 336,368" fill="none" stroke="black"/>
              <path d="M 8,400 L 352,400" fill="none" stroke="black"/>
              <path d="M 8,464 L 336,464" fill="none" stroke="black"/>
              <path d="M 32,512 L 296,512" fill="none" stroke="black"/>
              <path d="M 32,560 L 312,560" fill="none" stroke="black"/>
              <path d="M 8,592 L 352,592" fill="none" stroke="black"/>
              <path d="M 8,640 L 104,640" fill="none" stroke="black"/>
              <path d="M 8,672 L 104,672" fill="none" stroke="black"/>
              <path d="M 8,752 L 104,752" fill="none" stroke="black"/>
              <path d="M 8,784 L 104,784" fill="none" stroke="black"/>
              <path d="M 8,848 L 336,848" fill="none" stroke="black"/>
              <path d="M 8,880 L 352,880" fill="none" stroke="black"/>
              <path d="M 8,960 L 336,960" fill="none" stroke="black"/>
              <path d="M 8,992 L 352,992" fill="none" stroke="black"/>
              <path d="M 336,272 C 344.83064,272 352,279.16936 352,288" fill="none" stroke="black"/>
              <path d="M 336,368 C 344.83064,368 352,375.16936 352,384" fill="none" stroke="black"/>
              <path d="M 336,464 C 344.83064,464 352,471.16936 352,480" fill="none" stroke="black"/>
              <path d="M 296,512 C 304.83064,512 312,519.16936 312,528" fill="none" stroke="black"/>
              <path d="M 336,848 C 344.83064,848 352,855.16936 352,864" fill="none" stroke="black"/>
              <path d="M 336,960 C 344.83064,960 352,967.16936 352,976" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="64,952 52,946.4 52,957.6" fill="black" transform="rotate(90,56,952)"/>
              <polygon class="arrowhead" points="64,840 52,834.4 52,845.6" fill="black" transform="rotate(90,56,840)"/>
              <polygon class="arrowhead" points="64,744 52,738.4 52,749.6" fill="black" transform="rotate(90,56,744)"/>
              <polygon class="arrowhead" points="64,632 52,626.4 52,637.6" fill="black" transform="rotate(90,56,632)"/>
              <polygon class="arrowhead" points="64,456 52,450.4 52,461.6" fill="black" transform="rotate(90,56,456)"/>
              <polygon class="arrowhead" points="64,360 52,354.4 52,365.6" fill="black" transform="rotate(90,56,360)"/>
              <polygon class="arrowhead" points="64,264 52,258.4 52,269.6" fill="black" transform="rotate(90,56,264)"/>
              <polygon class="arrowhead" points="64,152 52,146.4 52,157.6" fill="black" transform="rotate(90,56,152)"/>
              <g class="text">
                <text x="52" y="52">Holder</text>
                <text x="176" y="100">1. Communicates public key,</text>
                <text x="212" y="116">Optionally communicates Claim,</text>
                <text x="264" y="132">Optionally communicates Blinding preference</text>
                <text x="52" y="180">Issuer</text>
                <text x="200" y="228">2. Creates Salted Disclosed Claim</text>
                <text x="164" y="244">[salt, value, key]</text>
                <text x="108" y="292">Salted Disclosed Claim</text>
                <text x="144" y="340">3. Hashes to create</text>
                <text x="92" y="388">Blinded Claim Hash</text>
                <text x="180" y="436">4. Replaces Claim Value with</text>
                <text x="140" y="484">Blinded Claim (in CWT payload)</text>
                <text x="172" y="532">Original Claim Value is replaced</text>
                <text x="136" y="548">with Blinded Claim Hash</text>
                <text x="52" y="660">Holder</text>
                <text x="148" y="708">5. Presents selected</text>
                <text x="184" y="724">Salted Disclosed Claims</text>
                <text x="52" y="772">Verifier</text>
                <text x="196" y="820">6. Hashes Salted Disclosed Claim</text>
                <text x="136" y="868">Blinded Claim Hash (computed)</text>
                <text x="192" y="916">7. Matches with hash in payload</text>
                <text x="168" y="932">to recover original</text>
                <text x="112" y="980">Claim Value (recovered)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+-----------+
|  Holder   |
+-----+-----+
      |
      | 1. Communicates public key,
      |    Optionally communicates Claim,
      |    Optionally communicates Blinding preference
      v
+-----------+
|  Issuer   |
+-----+-----+
      |
      | 2. Creates Salted Disclosed Claim
      |    [salt, value, key]
      v
+-----------------------------------------.
| Salted Disclosed Claim                   |
+-----+------------------------------------+
      |
      | 3. Hashes to create
      v
+-----------------------------------------.
| Blinded Claim Hash                       |
+-----+------------------------------------+
      |
      | 4. Replaces Claim Value with
      v
+-----------------------------------------.
| Blinded Claim (in CWT payload)           |
|                                          |
|  +---------------------------------.     |
|  | Original Claim Value is replaced |    |
|  | with Blinded Claim Hash          |    |
|  +----------------------------------+    |
|                                          |
+-----+------------------------------------+
      |
      v
+-----------+
|  Holder   |
+-----+-----+
      |
      | 5. Presents selected
      |    Salted Disclosed Claims
      v
+-----------+
| Verifier  |
+-----+-----+
      |
      | 6. Hashes Salted Disclosed Claim
      v
+-----------------------------------------.
| Blinded Claim Hash (computed)            |
+-----+------------------------------------+
      |
      | 7. Matches with hash in payload
      |    to recover original
      v
+-----------------------------------------.
| Claim Value (recovered)                  |
+------------------------------------------+
]]></artwork>
        </artset>
      </figure>
      <section anchor="a-cwt-without-selective-disclosure">
        <name>A CWT without Selective Disclosure</name>
        <t>Below is the payload, or claims set, of a standard CWT not using selective disclosure.
It consists of standard CWT claims, the Holder confirmation key, and five fictitious example claims.
The payload is shown below in EDN <xref target="I-D.ietf-cbor-edn-literals"/>.
Note that the fictitious map keys shown in the examples do not have IANA registered integer keys.</t>
        <figure anchor="fig-cwt-claimset">
          <name>CWT Claims Set Without Selective Disclosure</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
    / iss / 1  : "https://issuer.example",
    / sub / 2  : "https://device.example",
    / exp / 4  : 1725330600, /2024-09-02T19:30:00Z/
    / nbf / 5  : 1725243840, /2024-09-01T19:25:00Z/
    / iat / 6  : 1725244200, /2024-09-01T19:30:00Z/
    / cnf / 8  : {
      / cose key / 1 : {
        / kty /  1: 2,  / EC2   /
        / crv / -1: 1,  / P-256 /
        / x /   -2: h'8554eb275dcd6fbd1c7ac641aa2c90d9
                      2022fd0d3024b5af18c7cc61ad527a2d',
        / y /   -3: h'4dc7ae2c677e96d0cc82597655ce92d5
                      503f54293d87875d1e79ce4770194343'
      }
    },
    /most_recent_inspection_passed/ 500: true,
    /inspector_license_number/ 501: "ABCD-123456",
    /inspection_dates/ 502 : [
        1549560720,   / 2019-02-07T17:32:00 /
        1612498440,   / 2021-02-04T20:14:00 /
        1674004740,   / 2023-01-17T17:19:00 /
    ],
    /inspection_location/ 503: {
        "country": "us",            / United States /
        "region": "ca",             / California /
        "postal_code": "94188"
    }
}
]]></sourcecode>
        </figure>
        <t>The fictitious claims deal with attributes of an inspection of the subject: the pass/fail result, the inspection location, the license number of the inspector, and a list of dates when the subject was inspected.</t>
      </section>
      <section anchor="holder-gets-an-sd-cwt-from-the-issuer">
        <name>Holder gets an SD-CWT from the Issuer</name>
        <t>Alice would like to selectively disclose some of these claims to different Verifiers.
Note that some of the claims may not be selectively disclosable.
In our next example, the pass/fail status of the inspection, the most recent inspection date, and the country of the inspection will be claims that are always present in the SD-CWT.
After the Holder requests an SD-CWT from the Issuer, the Issuer generates the following SD-CWT:</t>
        <figure anchor="basic-issuer-cwt">
          <name>Issued SD-CWT with all disclosures</name>
          <sourcecode type="cbor-diag"><![CDATA[
/ cose-sign1 / 18([  / issuer SD-CWT /
  / CWT protected / << {
    / alg /    1  : -35, / ES384 /
    / kid /    4  : 'https://issuer.example/cose-key3',
    / typ /    16 : 293, # application/sd-cwt
    / sd_alg / 170 : -16  / SHA256 /
  } >>,
  / CWT unprotected / {
    / sd_claims / 17 : [ / these are all the disclosures /
        <<[
            /salt/   h'bae611067bb823486797da1ebbb52f83',
            /value/  "ABCD-123456",
            /claim/  501   / inspector_license_number /
        ]>>,
        <<[
            /salt/   h'8de86a012b3043ae6e4457b9e1aaab80',
            /value/  1549560720   / inspected 7-Feb-2019 /
        ]>>,
        <<[
            /salt/   h'7af7084b50badeb57d49ea34627c7a52',
            /value/  1612560720   / inspected 4-Feb-2021 /
        ]>>,
        <<[
            /salt/   h'ec615c3035d5a4ff2f5ae29ded683c8e',
            /value/  "ca",
            /claim/  "region"   / region=California /
        ]>>,
        <<[
            /salt/   h'37c23d4ec4db0806601e6b6dc6670df9',
            /value/  "94188",
            /claim/  "postal_code"
        ]>>,
    ]
  },
  / CWT payload / << {
    / iss / 1   : "https://issuer.example",
    / sub / 2   : "https://device.example",
    / exp / 4   : 1725330600,  /2024-09-03T02:30:00+00:00Z/
    / nbf / 5   : 1725243900,  /2024-09-02T02:25:00+00:00Z/
    / iat / 6   : 1725244200,  /2024-09-02T02:30:00+00:00Z/
    / cnf / 8   : {
      / cose key / 1 : {
        / kty /  1: 2,  / EC2   /
        / crv / -1: 1,  / P-256 /
        / x /   -2: h'8554eb275dcd6fbd1c7ac641aa2c90d9
                      2022fd0d3024b5af18c7cc61ad527a2d',
        / y /   -3: h'4dc7ae2c677e96d0cc82597655ce92d5
                      503f54293d87875d1e79ce4770194343'
      }
    },
    /most_recent_inspection_passed/ 500: true,
    /inspection_dates/ 502 : [
        / redacted inspection date 7-Feb-2019 /
        60(h'1b7fc8ecf4b1290712497d226c04b503
             b4aa126c603c83b75d2679c3c613f3fd'),
        / redacted inspection date 4-Feb-2021 /
        60(h'64afccd3ad52da405329ad935de1fb36
             814ec48fdfd79e3a108ef858e291e146'),
        1674004740,   / 2023-01-17T17:19:00 /
    ],
    / inspection_location / 503 : {
        "country" : "us",            / United States /
        / redacted_claim_keys / simple(59) : [
            / redacted region /
            h'0d4b8c6123f287a1698ff2db15764564
              a976fb742606e8fd00e2140656ba0df3'
            / redacted postal_code /
            h'c0b7747f960fc2e201c4d47c64fee141
              b78e3ab768ce941863dc8914e8f5815f'
      ]
    },
    / redacted_claim_keys / simple(59) : [
        / redacted inspector_license_number /
        h'af375dc3fba1d082448642c00be7b2f7
          bb05c9d8fb61cfc230ddfdfb4616a693'
    ]
  } >>,
  / CWT signature / h'536b3797c8f396d6dc4fedfa54fa605f
                      be897df02267ede5b40b257cba5eb2b3
                      cbf7d4f5733e0ca2e77783d860b8d74a
                      2b98878930be6c8e3d1de63df909d484
                      2a800f9d377fa41e9bd5f72743c06cfb
                      1e5d59892fac51a806cd4caf6cb30cce'
])
]]></sourcecode>
        </figure>
        <t>Some of the claims are <em>redacted</em> in the payload. The corresponding <em>disclosure</em> is communicated in the unprotected header in the <tt>sd_claims</tt> header parameter.
For example, the <tt>inspector_license_number</tt> claim is a Salted Disclosed Claim, consisting of a per-disclosure random salt, the Claim Key, and Claim Value.</t>
        <figure>
          <name>CBOR extended diagnostic notation representation of inspector_license_number disclosure</name>
          <sourcecode type="cbor-diag"><![CDATA[
        <<[
            /salt/   h'bae611067bb823486797da1ebbb52f83',
            /value/  "ABCD-123456",
            /claim/  501   / inspector_license_number /
        ]>>,
]]></sourcecode>
        </figure>
        <t>This is represented in CBOR pretty-printed format as follows (with end-of-line comments and spaces inserted for clarity):</t>
        <figure>
          <name>CBOR encoding of inspector_license_number disclosure</name>
          <sourcecode type="cbor-pretty"><![CDATA[
83                                     # array(3)
   50                                  # bytes(16)
      bae611067bb823486797da1ebbb52f83 # 16-byte salt
   6b                                  # text(11)
      414243442d313233343536           # "ABCD-123456"
   19 01f5                             # unsigned(501)
]]></sourcecode>
        </figure>
        <t>The cryptographic hash, using the hash algorithm identified by the <tt>sd_alg</tt> header parameter in the protected headers, of that byte string is the Blinded Claim Hash (shown in hex).
The digest value is included in the payload in a <tt>redacted_claim_keys</tt> field for a Redacted Claim Key (in this example), or in a named array for a Redacted Claim Element (for example, for the redacted claim element of <tt>inspection_dates</tt>).</t>
        <figure>
          <name>SHA-256 hash of inspector_license_number disclosure</name>
          <artwork><![CDATA[
d9df03da474fcb3c65771748e2e0608cf437504ecc24f450aaeacd40dd552b3f
]]></artwork>
        </figure>
        <t>Finally, since this redacted claim is a map key and value, the Blinded Claim Hash is placed in a <tt>redacted_claim_keys</tt> array in the SD-CWT payload at the same level of hierarchy as the original claim.</t>
        <figure>
          <name>redacted inspector_license_number claim in the issued CWT payload</name>
          <sourcecode type="cbor-diag"><![CDATA[
  / redacted_claim_keys / simple(59) : [
      / redacted inspector_license_number /
      h'd9df03da474fcb3c65771748e2e0608c
        f437504ecc24f450aaeacd40dd552b3f',
      / ... next redacted claim at the same level would go here /  ],
]]></sourcecode>
        </figure>
        <t>Redacted claims that are array elements are handled slightly differently, as described in <xref target="blinded-claims"/>.</t>
        <t>The Issuer <bcp14>SHOULD</bcp14> confirm the Holder controls all confirmation material before issuing credentials using the <tt>cnf</tt> claim.</t>
      </section>
    </section>
    <section anchor="sd-cwt-preparation">
      <name>Holder prepares an SD-CWT for a Verifier</name>
      <t>When the Holder wants to send an SD-CWT and disclose none, some, or all of the redacted values, it makes a list of the values to disclose and puts them in <tt>sd_claims</tt> header parameter in the unprotected header.
If the Holder does not disclose any claims, it <bcp14>MUST</bcp14> omit the <tt>sd_claims</tt> header parameter.</t>
      <t>For example, Alice decides to disclose to a Verifier the <tt>inspector_license_number</tt> claim (ABCD-123456), the <tt>region</tt> claim (California), and the earliest date element in the <tt>inspection_dates</tt> array (7-Feb-2019).</t>
      <figure anchor="edn-chosen-disclosures">
        <name>The Holder's choice of the disclosures to present</name>
        <sourcecode type="cbor-diag"><![CDATA[
    / sd_claims / 17 : [ / these are the disclosures /
        <<[
            /salt/   h'bae611067bb823486797da1ebbb52f83',
            /value/  "ABCD-123456",
            /claim/  501   / inspector_license_number /
        ]>>,
        <<[
            /salt/   h'8de86a012b3043ae6e4457b9e1aaab80',
            /value/  1549560720   / inspected 7-Feb-2019 /
        ]>>,
        <<[
            /salt/   h'ec615c3035d5a4ff2f5ae29ded683c8e',
            /value/  "ca",
            /claim/  "region"   / region=California /
        ]>>,
    ]
]]></sourcecode>
      </figure>
      <t>The Holder <bcp14>MAY</bcp14> fetch a nonce from the Verifier to prevent replay, or obtain a nonce acceptable to the Verifier through a process similar to the method described in <xref target="I-D.ietf-httpbis-unprompted-auth"/>.</t>
      <t>Finally, the Holder generates a Selective Disclosure Key Binding Token (SD-KBT) that ties together the SD-CWT generated by the Issuer (with the disclosures the Holder chose for the Verifier in its unprotected header), the Verifier target audience and optional nonces, and proof of possession of the Holder's private key.</t>
      <t>The issued SD-CWT is placed in the <tt>kcwt</tt> (Confirmation Key CWT) protected header field (defined in <xref target="RFC9528"/>).</t>
      <figure anchor="edn-elided-kbt">
        <name>Elided example of a Key Binding Token</name>
        <sourcecode type="cbor-diag"><![CDATA[
/ cose-sign1 / 18( / sd_kbt / [
  / KBT protected / << {
    / alg /    1:  -7, / ES256 /
    / kcwt /  13:  ...
           /  *** SD-CWT from Issuer goes here      /
           /  with Holder's choice of disclosures   /
           /  in the SD-CWT unprotected header  *** /,
    / end of issuer SD-CWT /
    / typ /   16:  294   # application/kb+cwt,
  } >>,     / end of KBT protected header /
  / KBT unprotected / {},
  / KBT payload / << {
    / aud    /  3    : "https://verifier.example/app",
    / iat    /  6    : 1725244237, / 2024-09-02T02:30:37+00:00Z /
    / cnonce / 39    : h'8c0f5f523b95bea44a9a48c649240803'
  } >>,      / end of KBT payload /
  / KBT signature / h'67116f888eab35fe82c171db146262c9
                      922fb3d4fd769641c80569e3c6010f90
                      251fa2b1dd335bc6bd8314603f57fd03
                      af7ddb5eb4cce1e59ac07d11dfdce742'
])   / end of kbt /
]]></sourcecode>
      </figure>
      <t>The digests in protected parts of the issued SD-CWT and the disclosures hashed in unprotected header of the <tt>issuer_sd_cwt</tt> are used together by the Verifier to confirm the disclosed claims.
Since the unprotected header of the included SD-CWT is covered by the signature in the SW-KBT, the Verifier has assurance that the Holder included the sent list of disclosures.</t>
    </section>
    <section anchor="sd-cwt-definition">
      <name>SD-CWT Definition</name>
      <t>SD-CWT is modeled after SD-JWT, with adjustments to align with conventions in CBOR, COSE, and CWT.
An SD-CWT <bcp14>MUST</bcp14> declare its content type, by including the protected header parameter <tt>typ</tt> <xref target="RFC9596"/> with one of the following values:</t>
      <ul spacing="normal">
        <li>
          <t>the string content type value <tt>application/sd-cwt</tt>,</t>
        </li>
        <li>
          <t>the unsigned integer Constrained Application Protocol (CoAP) <xref target="RFC7252"/> content-format value 293,</t>
        </li>
        <li>
          <t>or a value declaring that the object is a more specific kind of SD-CWT, such as a content type value using the <tt>+sd-cwt</tt> structured suffix.</t>
        </li>
      </ul>
      <t>The Issuer <bcp14>SHOULD</bcp14> use the value 293 instead of <tt>application/sd-cwt</tt>, as the CBOR representation is considerably smaller (3 bytes versus of 19).</t>
      <t>An SD-CWT is a format based on CWT, but it allows some additional types in maps to indicate values that were or should be redacted, and includes some additional constraints to improve robustness.
Unlike CWT, SD-CWT requires key binding.</t>
      <t>An SD-CWT can contain blinded claims (each expressed as a Blinded Claim Hash), at the root level or in any arrays or maps inside that claim set.
It is not required to contain any blinded claims.</t>
      <t>Optionally the salted Claim Values (and Claim Keys) for the corresponding Blinded Claim Hash are disclosed in the <tt>sd_claims</tt> header parameter in the unprotected header of the CWT (the disclosures).
If there are no disclosures (and when no Blinded Claims Hash is present in the payload) the <tt>sd_claims</tt> header parameter is not present in the unprotected header.</t>
      <t>Any party with a Salted Disclosed Claim can generate its hash, find that hash in the CWT payload, and unblind the content.
However, a Verifier with the hash cannot reconstruct the corresponding blinded claim without disclosure of the Salted Disclosed Claim.</t>
      <section anchor="blinded-claims">
        <name>Types of Blinded Claims</name>
        <t>Salted Disclosed Claims for Claim Keys are structured as a 128-bit salt, the disclosed value, and the map key (the claim "name") of the redacted element.
For Salted Disclosed Claims of Claim Values (items in an array), the "name" of the claim is omitted.</t>
        <figure anchor="cddl-salted-disclosed">
          <name>CDDL of Salted Disclosed Claims</name>
          <sourcecode type="cddl"><![CDATA[
; an array of bstr-encoded Salted Disclosed Claims
salted-array = [ +bstr-encoded-salted ]

bstr-encoded-salted = bstr .cbor salted-entry
salted-entry = salted-claim / salted-element / decoy
salted-claim = [
  bstr .size 16,     ; 128-bit salt
  any,               ; Claim Value
  (int / text)       ; Claim Key
]
salted-element = [
  bstr .size 16,     ; 128-bit salt
  any                ; Claim Value
]
decoy = [
  bstr .size 16      ; 128-bit salt
]

]]></sourcecode>
        </figure>
        <t>When a blinded claim is a key in a map, its blinded claim hash is added to a <tt>redacted_claim_keys</tt> array claim in the CWT payload that is at the same level of hierarchy as the key being blinded.
The <tt>redacted_claim_keys</tt> key is the CBOR simple value 59 registered for that purpose.
CBOR "simple values" <xref section="3.3" sectionFormat="of" target="RFC8949"/> are values (like <tt>false</tt> or <tt>undefined</tt>) that do need any additional content.
In this specification a simple value of 59 is used as the content of a map key to indicate that one or more map key/value pairs was blinded in this CBOR map.
The simple value 59 is represented in examples using the syntax <tt>simple(59)</tt>.
The simple value 59 in CDDL is represented using the syntax <tt>#7.59</tt>.</t>
        <t>When blinding an individual item in an array, the value of the item is replaced with the digested salted hash as a CBOR byte string, wrapped with the CBOR tag 60.
CBOR tags <xref section="3.4" sectionFormat="of" target="RFC8949"/> annotate other values.
The tag 60 is represented in examples as <tt>60(</tt> <em>tagged value</em> <tt>)</tt>.
The tag 60 is represented in CDDL as <tt>#6.60(</tt> <em>tagged value</em> <tt>)</tt>.</t>
        <figure anchor="cddl-blinded">
          <name>CDDL of Blinded Claim Keys and Blinded Claim Elements</name>
          <sourcecode type="cddl"><![CDATA[
; redacted_claim_keys is used as a map key. The corresponding value is
; an array of Blinded Claim Hashes whose corresponding unblinded map
; keys and values are in the same map.
redacted_claim_keys = #7.59  ; CBOR simple value 59

; CBOR tag for wrapping a redacted element in an array
REDACTED_ELEMENT_TAGNUM = 60

; redacted_claim_element is used in CDDL payloads that contain
; array elements that are meant to be redacted.
redacted_claim_element = #6.<REDACTED_ELEMENT_TAGNUM>( bstr )
]]></sourcecode>
        </figure>
        <t>Blinded claims can be nested. For example, both individual keys in the <tt>inspection_location</tt> claim, and the entire <tt>inspection_location</tt> element can be separately blinded.
An example nested claim is shown in <xref target="nesting"/>.</t>
        <t>Finally, an Issuer <bcp14>MAY</bcp14> create decoy digests, which look like blinded claim hashes but have only a salt.
Decoy digests are discussed in <xref target="decoys"/>.</t>
      </section>
    </section>
    <section anchor="cwt-diffs">
      <name>Differences from the CBOR Web Token Specification</name>
      <t>The following subsections discuss differences between CWT and SD-CWT or clarify ambiguities in CWT.
Some of these changes are necessary to enable the new functionality of SD-CWT, while some constraints were made in the interest of more robustness.</t>
      <ul empty="true">
        <li>
          <t>Variability in serialization can also be exploited to impact privacy.
See <xref target="security"/> for more details on the privacy impact of serialization and profiling.</t>
        </li>
      </ul>
      <section anchor="definite-length-cbor-required">
        <name>Definite Length CBOR Required</name>
        <t>Encoders of SD-CWT and SD-KBT <bcp14>MUST NOT</bcp14> send indefinite length CBOR.
Decoders of SD-CWT and SD-KBT <bcp14>MUST</bcp14> reject any SD-CWT or SD-KBT received containing indefinite length CBOR.</t>
      </section>
      <section anchor="finite-values-for-standard-date-claims">
        <name>Finite values for standard date claims</name>
        <t>The standard CWT claims <tt>exp</tt>, <tt>nbf</tt>, and <tt>iat</tt> <bcp14>MUST</bcp14> be finite numbers.
For the avoidance of doubt, not a number (NaN) values and positive and negative infinity are not acceptable in those claims.</t>
        <ul empty="true">
          <li>
            <t>In <xref target="RFC8392"/>, these three claims are of type <tt>NumericDate</tt>.
Section 2 of the same spec refers to <tt>NumericDate</tt> as a JWT <tt>NumericDate</tt>, "except that it is represented as [an untagged] CBOR numeric date (from <xref section="2.4.1" sectionFormat="of" target="RFC7049"/>) instead of a JSON number".
In CBOR, a NumericDate can be represented as an unsigned integer, a negative integer, or a floating point value.
CBOR (both <xref target="RFC7049"/> and <xref target="RFC8949"/>) refer to floating-point values to include NaNs, and floating-point numbers that include finite and infinite numbers.
Neither JSON <xref target="RFC8259"/> nor JWT <xref target="RFC7519"/> can represent infinite values.</t>
          </li>
        </ul>
        <t>As IEEE double-precision floating point numbers smaller than -(2^53) and larger than 2^53 are no longer as precise as CBOR integers, use of floating point numbers smaller than -(2^53) and larger than 2^53 is FORBIDDEN.</t>
      </section>
      <section anchor="allowed-types-of-cbor-map-keys">
        <name>Allowed types of CBOR map keys</name>
        <t>According to Section 1.1 of the CBOR Web Token Specification <xref target="RFC8392"/>, "CBOR uses text strings, negative integers, and unsigned integers as map keys."
Section 1.5 of CBOR Object Signing and Encryption (COSE): Structures and Process <xref target="RFC9052"/> states: "In COSE, we use text strings, negative integers, and unsigned integers as map keys."
While a CBOR map key can contain any CBOR type, this statement implies that CWT map keys only contain those types.</t>
        <t>An SD-CWT payload is typically its COSE payload.
<xref target="RFC9597"/> also defines the <tt>CWT Claims</tt> COSE Header Parameter (value 15) that can appear in the protected headers; if it exists, it contains a CBOR map with additional claims that are treated as if they were in the SD-CWT payload.
Both of these maps are described as SD-CWT Claims Maps.</t>
        <ul empty="true">
          <li>
            <t>Note that <tt>CWT Claims</tt> is a separate CBOR map from the COSE payload and can contain the same Claim Keys as the COSE payload CBOR map.</t>
          </li>
        </ul>
        <t>The same valid CWT claim keys could be present in both SD-CWT Claims Maps, but if so, they <bcp14>MUST</bcp14> have the same unblinded value.
Neither, one, or both could be redacted.
If both are redacted they would have different disclosures, salts, and Blinded Claim Hashes.</t>
        <t>In addition to map keys that are valid in CWT, SD-CWT Claims Maps <bcp14>MAY</bcp14> contain the CBOR simple value registered in this specification in <xref target="simple59"/>.
In SD-CWTs exchanged between the Holder and the Issuer prior to issuance, map keys <bcp14>MAY</bcp14> also consist of the To Be Redacted tag (defined in <xref target="tbr-tag"/>), containing an integer or text string; or a To Be Decoy tag (defined in <xref target="tb-decoy-tag"/>), containing a positive integer.
These two tags provide a way for the Holder to indicate specific claims to be redacted or decoys to be inserted.</t>
        <t>The following list summarizes the map key constraints on SD-CWTs and SD-KBTs:</t>
        <ul spacing="normal">
          <li>
            <t>The SD-KBT protected headers <tt>kcwt</tt> Header Parameter exclusively contains:
            </t>
            <ul spacing="normal">
              <li>
                <t>a single valid SD-CWT</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The SD-KBT protected headers <bcp14>MUST NOT</bcp14> contain a <tt>CWT Claims</tt> Header Parameter.</t>
          </li>
          <li>
            <t>The SD-KBT payload map; unprotected headers map; and protected headers map (excluding the <tt>kcwt</tt> Header Parameter) exclusively contain map keys (at any level of depth) with the following map key types:
            </t>
            <ul spacing="normal">
              <li>
                <t>unsigned integers</t>
              </li>
              <li>
                <t>negative integers</t>
              </li>
              <li>
                <t>text strings with a length no greater than 255 octets</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The SD-CWT unprotected headers map; and the protected headers map (excluding the <tt>CWT Claims</tt> Header Parameter) exclusively contain map keys (at any level of depth) with the following map key types:
            </t>
            <ul spacing="normal">
              <li>
                <t>unsigned integers</t>
              </li>
              <li>
                <t>negative integers</t>
              </li>
              <li>
                <t>text strings with a length no greater than 255 octets</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The SD-CWT Claims Maps at any level of depth, exclusively contain map keys with the following map key types:
            </t>
            <ul spacing="normal">
              <li>
                <t>unsigned integers;</t>
              </li>
              <li>
                <t>negative integers;</t>
              </li>
              <li>
                <t>text strings with a length no greater than 255 octets;</t>
              </li>
              <li>
                <t>the simple value 59; or</t>
              </li>
              <li>
                <t>when disclosable claims are communicated to the Issuer, prior to issuance:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>the To Be Decoy tag 62 <xref target="tb-decoy-tag"/> containing a positive integer, or</t>
                  </li>
                  <li>
                    <t>the To Be Redacted tag 58 <xref target="tbr-tag"/> containing:
                    </t>
                    <ul spacing="normal">
                      <li>
                        <t>an unsigned integer,</t>
                      </li>
                      <li>
                        <t>a negative integer, or</t>
                      </li>
                      <li>
                        <t>a text strings with a length no greater than 255 octets.</t>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>In other words, there are exactly three places that can contain map keys (including values that might contain nested maps) with the SD-CWT values that are not allowed in a CWT:</t>
        <ul spacing="normal">
          <li>
            <t>in the payload Claims Map of an SD-CWT</t>
          </li>
          <li>
            <t>in the <tt>CWT Claims</tt> Header Parameter Claims Map in the protected headers of an SD-CWT</t>
          </li>
          <li>
            <t>in the <tt>kcwt</tt> Header Parameter of an SD-KBT (in one of the embedded SD-CWT Claims Maps).</t>
          </li>
        </ul>
        <t>All the other Header Parameters, and the KBT payload need to contain values valid in a CWT.
These values are represented by the <tt>safe-value</tt> CDDL type.</t>
        <figure anchor="cddl-legal-values">
          <name>CDDL of Safe Values in SD-CWTs</name>
          <sourcecode type="cddl"><![CDATA[
; CWT claim legal values only
safe_map = { * label => safe_value }

safe_value =
  int / tstr / bstr /
  [ * safe_value ] /
  safe_map /
  #6.<safe_tag>(safe_value) / #7.<safe_simple> / float


; legal values in issued SD-CWT
issued_sd_cwt_map = {
    ? redacted_claim_keys ^ => [ * bstr ],
    * label => issued_sd_cwt_value
}

issued_array_element = redacted_claim_element / issued_sd_cwt_value

issued_sd_cwt_value =
  int / tstr / bstr /
  [ * issued_array_element ] /
  issued_sd_cwt_map /
  #6.<safe_tag>(issued_sd_cwt_value) / #7.<safe_simple> / float


; legal values in claim set sent to Issuer
preissuance_label = label /
                    #6.<TO_BE_REDACTED_TAGNUM>(label) /
                    #6.<TO_BE_DECOY_TAGNUM>(uint .gt 0)

preissuance_map = { * preissuance_label => preissuance_value }

preissuance_value =
  int / tstr / bstr /
  [ * preissuance_value ] /
  preissuance_map /
  #6.<safe_tag>(preissuance_value) / #7.<safe_simple> / float

; CBOR tag number for wrapping to-be-redacted keys or elements
TO_BE_REDACTED_TAGNUM = 58
; CBOR tag number for indicating a decoy value is to be inserted here
TO_BE_DECOY_TAGNUM = 62

label = int / tstr .size (1..255)
safe_tag = uint .ne (TO_BE_REDACTED_TAGNUM /
                     TO_BE_DECOY_TAGNUM /
                     REDACTED_ELEMENT_TAGNUM)

; exclude reserved simple values (24 through 31) from Table 4 of
; RFC 8949, and redacted keys array
safe_simple =  0..23 / 32..58 / 60..255
secs = int / float53
float53 = -9007199254740992.0..9007199254740992.0 ; from 2^53 to 2^53

]]></sourcecode>
        </figure>
        <t>Note that Holders presenting to a Verifier that does not support this specification would need to present a CWT without tagged map keys or simple value map keys.</t>
        <t>Tagged keys are not registered in the CBOR Web Token Claims IANA registry.
Instead, the tag provides additional information about the tagged Claim Key and the corresponding (untagged) value.
Multiple levels of tags in a map key are not permitted.</t>
      </section>
      <section anchor="duplicate-map-key-detection">
        <name>Duplicate map key detection</name>
        <t>Implementations <bcp14>MUST NOT</bcp14> send multiple map keys inside the same CBOR map having the same CBOR Preferred Encoding (see <xref section="4.1" sectionFormat="of" target="RFC8949"/>).
This applies to any map anywhere in an SD-CWT or an SD-KBT.</t>
        <ul empty="true">
          <li>
            <t>Note that it is not necessary to actually encode the map keys using Preferred Encoding to satisfy this requirement.</t>
          </li>
        </ul>
        <t>Likewise, a single SD-CWT claim set <bcp14>MUST NOT</bcp14> contain a map (at any level of depth) with both a map key <tt>k</tt>, and <tt>k</tt> tagged with the To Be Redacted tag (see <xref target="tbr-tag"/>).
Map keys and their To Be Redacted tagged verison are considered duplicate map keys for the purposes of this specification.</t>
        <t>For example, if the map below is contained inside a payload, it is invalid because the map key 500 and the map key 58(500) cannot both be present.</t>
        <figure anchor="edn-duplicate-map-key">
          <name>EDN Example considered a duplicate map key</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  500: "ABCD-123456",     # map key 500
  58(500): "DEFG-456789"  # to be redacted tag containing 500
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="level-of-nesting-of-claims">
        <name>Level of Nesting of Claims</name>
        <t>Selective disclosure of deeply nested structures (exceeding a depth of 16 levels), is <bcp14>NOT RECOMMENDED</bcp14> as it could lead to resource exhaustion vulnerabilities.</t>
        <t>The individual map key / value pairs in a Claim Set are defined as the "top level", or level 1.
For each value that is an array, a map, or a tagged item, each of the elements of the array, each value corresponding to each map key in the map, and the tagged item are at the next level of depth.</t>
        <t>For example, considering the following abbreviated document, the following table shows the level of depth of the corresponding values:</t>
        <table anchor="_table-depth-levels">
          <name>Levels of Depth in Below Example</name>
          <thead>
            <tr>
              <th align="left">Level</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">https://issuer.example</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">1549560720</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">DCBA-101777</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">us</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">27315</td>
            </tr>
          </tbody>
        </table>
        <figure anchor="edn-depth-levels">
          <name>EDN Example to demonstrate levels of depth</name>
          <sourcecode type="cbor-diag"><![CDATA[
{                                   # contents are level 1
  1: "https://issuer.example",
  ...
  502: 1(1549560720),               # tagged value is level 2
  504: [                            # contents are level 2
    {                               # contents are level 3
      ...
      501: "DCBA-101777",
      503: {                        # contents are level 4
        1: "us",
        ...
      },
      505: 4(                       # decimal fraction tag
        [                           #   273.15
          -2,
          27315                     # level 5
        ]
      )
    },
    ...
  ]
}
]]></sourcecode>
        </figure>
        <t>The contents of the top-level claims map are level 1.
The contents of the array for map key 504 are level 2.
The contents of the map inside that array are level 3 (ex: the value of map key 505).
The value of tag 4 is at level 4.
The values in the array inside tag 4 are at level 5.</t>
      </section>
      <section anchor="use-of-structured-suffixes">
        <name>Use of Structured Suffixes</name>
        <t>Any type which contains the <tt>+sd-cwt</tt> structured suffix <bcp14>MUST</bcp14> be a legal SD-CWT.
A type that is a legal CWT and does not contain any blinded claims <bcp14>SHOULD</bcp14> use the <tt>+cwt</tt> structure suffix instead, unless the CBOR map being secured contains claim keys with different semantics than those registered in the CBOR Web Token Claims IANA registry.</t>
      </section>
    </section>
    <section anchor="sd-cwt-issuance">
      <name>SD-CWT Issuance</name>
      <t>How the Holder communicates to the Issuer to request a CWT or an SD-CWT is out of scope for this specification.
Likewise, how the Holder determines which claims to blind or to always disclose is a policy matter, which is not discussed in this specification.
This specification defines the format of an SD-CWT communicated between an Issuer and a Holder in this section, and describes the format of a Key Binding Token containing that SD-CWT communicated between a Holder and a Verifier in <xref target="sd-cwt-presentation"/>.</t>
      <t>The protected header <bcp14>MAY</bcp14> contain the <tt>sd_alg</tt> header parameter identifying the algorithm (from the COSE Algorithms registry) used to hash the Salted Disclosed Claims.
If no <tt>sd_alg</tt> header parameter is present, the default hash function SHA-256 is used.</t>
      <t>If any Salted Disclosed Claims or Decoys are present, the unprotected header <bcp14>MUST</bcp14> contain the <tt>sd_claims</tt> header parameter with a Salted Disclosed Claim for every blinded claim hash present anywhere in the payload, and any decoys (see <xref target="decoys"/>).
If there are no disclosures, the <tt>sd_claims</tt> header parameter value is omitted.
The payload also <bcp14>MUST</bcp14> include a key confirmation element (<tt>cnf</tt>) <xref target="RFC8747"/> for the Holder's public key.</t>
      <t>The following table describes the claim requirements for an SD-CWT:</t>
      <table anchor="sd-cwt-claims">
        <name>SD-CWT Claim Requirements</name>
        <thead>
          <tr>
            <th align="left">Claim</th>
            <th align="left">Requirement</th>
            <th align="left">Mandatory to Disclose</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>sub</tt> / 2</td>
            <td align="left">
              <bcp14>MUST</bcp14> be present (disclosed or redacted)</td>
            <td align="left">No</td>
          </tr>
          <tr>
            <td align="left">
              <tt>iss</tt> / 1</td>
            <td align="left">
              <bcp14>SHOULD</bcp14> (see note)</td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>aud</tt> / 3</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14></td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>exp</tt> / 4</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14></td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>nbf</tt> / 5</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14></td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>iat</tt> / 6</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14></td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>cti</tt> / 7</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14></td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>cnf</tt> / 8</td>
            <td align="left">
              <bcp14>MUST</bcp14></td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>cnonce</tt> / 39</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14></td>
            <td align="left">Yes</td>
          </tr>
        </tbody>
      </table>
      <t>The <tt>iss</tt> claim <bcp14>SHOULD</bcp14> be present unless the protected header contains a certificate or certificate-like entity that fully identifies the Issuer.</t>
      <t>The following table describes the claim requirements for an SD-KBT:</t>
      <table anchor="sd-kbt-claims">
        <name>SD-KBT Claim Requirements</name>
        <thead>
          <tr>
            <th align="left">Claim</th>
            <th align="left">Requirement</th>
            <th align="left">Mandatory to Disclose</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>sub</tt> / 2</td>
            <td align="left">
              <bcp14>MUST NOT</bcp14> be present</td>
            <td align="left">N/A</td>
          </tr>
          <tr>
            <td align="left">
              <tt>iss</tt> / 1</td>
            <td align="left">
              <bcp14>MUST NOT</bcp14> be present</td>
            <td align="left">N/A</td>
          </tr>
          <tr>
            <td align="left">
              <tt>aud</tt> / 3</td>
            <td align="left">
              <bcp14>MUST</bcp14></td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>iat</tt> / 6</td>
            <td align="left">
              <bcp14>MUST</bcp14> (unless <tt>cti</tt> present)</td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>cti</tt> / 7</td>
            <td align="left">
              <bcp14>MUST</bcp14> (unless <tt>iat</tt> present)</td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">
              <tt>cnonce</tt> / 39</td>
            <td align="left">
              <bcp14>OPTIONAL</bcp14></td>
            <td align="left">Yes</td>
          </tr>
        </tbody>
      </table>
      <t>Any claims not addressed in the tables above are <bcp14>OPTIONAL</bcp14> and <bcp14>MAY</bcp14> be redacted in an SD-CWT, unless specified differently by a profile or more specific media type.</t>
      <t>To further reduce the size of the SD-CWT, a COSE Key Thumbprint (ckt) <xref target="RFC9679"/> <bcp14>MAY</bcp14> be used in the <tt>cnf</tt> claim.</t>
      <section anchor="issuer-generation">
        <name>Issuer Generation</name>
        <t>The Issuer follows all the requirements of generating a valid SD-CWT, largely a CWT extended by <xref target="cwt-diffs"/>.
The Issuer <bcp14>MUST</bcp14> implement COSE_Sign1 using an appropriate fully-specified asymmetric signature algorithm (for example, ESP256 or Ed25519).</t>
        <t>The Issuer <bcp14>MUST</bcp14> generate a unique cryptographically random salt with at least 128-bits of entropy for each Salted Disclosed Claim.
If the client communicates a client-generated nonce (<tt>cnonce</tt>) when requesting the SD-CWT, the Issuer <bcp14>MUST</bcp14> include it in the payload.</t>
      </section>
      <section anchor="holder-validation">
        <name>Holder Validation</name>
        <t>Upon receiving an SD-CWT from the Issuer with the Holder as the subject, the
Holder verifies the following:</t>
        <ul spacing="normal">
          <li>
            <t>the issuer (<tt>iss</tt>) and subject (<tt>sub</tt>) are correct;</t>
          </li>
          <li>
            <t>if an audience (<tt>aud</tt>) is present, it is acceptable;</t>
          </li>
          <li>
            <t>the CWT is valid according to the <tt>nbf</tt> and <tt>exp</tt> claims, if present;</t>
          </li>
          <li>
            <t>a public key under the control of the Holder is present in the <tt>cnf</tt> claim;</t>
          </li>
          <li>
            <t>the hash algorithm identified by the <tt>sd_alg</tt> header parameter in the protected headers is supported by the Holder;</t>
          </li>
          <li>
            <t>if a <tt>cnonce</tt> is present, it was provided by the Holder to this Issuer and is still fresh;</t>
          </li>
          <li>
            <t>there are no unblinded claims about the subject that violate its privacy policies;</t>
          </li>
          <li>
            <t>any place where the cardinality of claims needs to be protected have sufficient decoys (<xref target="decoys"/>);</t>
          </li>
          <li>
            <t>every blinded claim hash (some of which may be nested as in <xref target="nesting"/>) has a corresponding Salted Disclosed Claim, and vice versa;</t>
          </li>
          <li>
            <t>the values of the Salted Disclosed Claims when placed in their unblinded context in the payload are acceptable to the Holder.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>A Holder <bcp14>MAY</bcp14> choose to validate the appropriateness or correctness of some or all of the information in a token, should it have the ability to do so, and it <bcp14>MAY</bcp14> choose to not present information to a Verifier that it deems to be incorrect.</t>
          </li>
        </ul>
        <t>The following informative CDDL is provided to describe the syntax for SD-CWT issuance. A complete CDDL schema is in <xref target="cddl"/>.</t>
        <figure anchor="cddl-issued-sd-cwt">
          <name>CDDL describing issued SD-CWT syntax</name>
          <sourcecode type="cddl"><![CDATA[
sd-cwt-issued = #6.18([
   protected: bstr .cbor sd-protected,
   sd-unprotected,
   payload: bstr .cbor sd-payload,
   signature: bstr
])

sd-protected = {
   &(typ: 16) ^ => 293 / "application/sd-cwt",
   &(alg: 1) ^ => int,
   ? &(kid: 4) ^ => bstr,
   ? &(CWT_Claims: 15) ^ => issued_sd_cwt_map,
   ? &(sd_alg: 170) ^ => int,        ; -16 for sha-256
   ? &(sd_aead: 172) ^ => uint .size 2,
   * label => safe_value
}

sd-unprotected = {
   ? &(sd_claims: 17) ^ => salted-array,
   ? &(sd_aead_encrypted_claims: 171) ^ => aead-encrypted-array,
   * label => safe_value
}

sd-payload = {
    ; standard claims
      &(iss: 1) ^ => tstr, ; "https://issuer.example"
    ? &(sub: 2) ^ => tstr, ; "https://device.example"
    ? &(aud: 3) ^ => tstr, ; "https://verifier.example/app"
    ? &(exp: 4) ^ => secs, ; 1883000000
    ? &(nbf: 5) ^ => secs, ; 1683000000
    ? &(iat: 6) ^ => secs, ; 1683000000
    ? &(cti: 7) ^ => bstr,
      &(cnf: 8) ^ => safe_map, ; key confirmation
    ? &(vct: 11) ^ => bstr,
    ? &(cnonce: 39) ^ => bstr,
    ;
    ? redacted_claim_keys ^ => [ * bstr ],
    * label => issued_sd_cwt_value
}

]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="sd-cwt-presentation">
      <name>SD-CWT Presentation</name>
      <t>When issuing an SD-CWT to a Holder, the Issuer includes all the Salted Disclosed Claims in the unprotected header.</t>
      <t>By contrast, when a Holder presents an SD-CWT to a Verifier, it can disclose none, some, or all of its blinded claims.
If the Holder wishes to disclose any blinded claims, it includes that subset of its Salted Disclosed Claims in the <tt>sd_claims</tt> header parameter of the unprotected header.
If there is nothing to be disclosed, the <tt>sd_claims</tt> header parameter is omitted.</t>
      <t>The Holder has flexibility in determining the order of disclosures when making presentations.
The order can be sorted, randomized, or optimized for performance based on the Holder's needs.</t>
      <t>An SD-CWT presentation to a Verifier has the same syntax as an SD-CWT issued to a Holder, except the Holder chooses the subset of disclosures included in the <tt>sd_claims</tt> header parameter.</t>
      <ul empty="true">
        <li>
          <t>Since the unprotected header is not included in the Issuer's signature, the list of disclosed claims can differ without invalidating the corresponding signature.</t>
        </li>
      </ul>
      <t>Finally, the SD-CWT used for presentation to a Verifier is included in a key binding token, as discussed in the next section.</t>
      <section anchor="kbt">
        <name>Creating a Key Binding Token</name>
        <t>Regardless if it discloses any claims, the Holder sends the Verifier a unique Holder key binding (SD-KBT) <xref target="kbt"/> for every presentation of an SD-CWT to a different Verifier.</t>
        <t>An SD-KBT is itself a type of CWT, signed using the private key corresponding to the key in the <tt>cnf</tt> claim in the presented SD-CWT.
The SD-KBT contains the SD-CWT, including the Holder's choice of presented disclosures, in the <tt>kcwt</tt> protected header field in the SD-KBT.</t>
        <t>The Holder is conceptually both the subject and the Issuer of the Key Binding Token.
Therefore, the <tt>sub</tt> and <tt>iss</tt> of an SD-KBT are implied from the <tt>cnf</tt> claim in the included SD-CWT, and <bcp14>MUST NOT</bcp14> be present in the SD-KBT.
(Profiles of this specification <bcp14>MAY</bcp14> define additional semantics.)</t>
        <t>The <tt>aud</tt> claim <bcp14>MUST</bcp14> be included and <bcp14>MUST</bcp14> correspond to the Verifier.
The SD-KBT payload <bcp14>MUST</bcp14> contain either the <tt>iat</tt> (issued at) claim, or the <tt>cti</tt> (CWT ID) claim.
If the Holder has access to an accurate clock, use of the <tt>iat</tt> is preferred.</t>
        <t>The protected header of the SD-KBT <bcp14>MUST</bcp14> include the <tt>typ</tt> header parameter with the value <tt>application/kb+cwt</tt> or the unsigned integer value of 294.
The Holder <bcp14>SHOULD</bcp14> use the value 294 instead of <tt>application/kb+cwt</tt>, as the CBOR representation is considerably smaller (3 bytes versus of 19).</t>
        <t>The SD-KBT <bcp14>MUST NOT</bcp14> be valid for any time period when its contained SD-CWT is invalid.</t>
        <t>The SD-KBT provides the following assurances to the Verifier:</t>
        <ul spacing="normal">
          <li>
            <t>the Holder of the SD-CWT controls the confirmation method chosen by the Issuer;</t>
          </li>
          <li>
            <t>the Holder's disclosures have not been tampered with since confirmation occurred;</t>
          </li>
          <li>
            <t>the Holder intended to address the SD-CWT to the Verifier specified in the audience (<tt>aud</tt>) claim;</t>
          </li>
          <li>
            <t>if there are any time claims, the Holder's disclosure is linked to the creation time (<tt>iat</tt>) of the key binding; otherwise the Holder's disclosure is linked to a CWT ID (<tt>cti</tt>), which is expected to be unique per KBT.</t>
          </li>
        </ul>
        <t>The SD-KBT prevents an attacker from copying and pasting disclosures, or from adding or removing disclosures without detection.
Confirmation is established according to <xref target="RFC8747"/>, using the <tt>cnf</tt> claim in the payload of the SD-CWT.</t>
        <t>The Holder signs the SD-KBT using the key specified in the <tt>cnf</tt> claim in the SD-CWT. This proves possession of the Holder's private key.</t>
        <figure anchor="cddl-kbt">
          <name>CDDL describing KBT syntax</name>
          <sourcecode type="cddl"><![CDATA[
kbt-cwt = #6.18([
   protected: bstr .cbor kbt-protected,
   kbt-unprotected,
   payload: bstr .cbor kbt-payload,
   signature: bstr
])

kbt-protected = {
   &(typ: 16) ^ => 294 / "application/kb+cwt",
   &(alg: 1) ^ => int,
   &(kcwt: 13) ^ => sd-cwt-issued,
   * label => safe_value
}

kbt-unprotected = {
   * label => safe_value
}

kbt-payload = {
      &(aud: 3) ^ => tstr,  ; "https://verifier.example/app"
      time-or-cti-claims,
    ? &(cnonce: 39) ^ => bstr,
    * label => safe_value
}

time-or-cti-claims = (
  ; Requires either time claims that include an iat OR a cti claim.
  ; Note that in CDDL, the // operator has very low precedence (see
  ; Section 2.2.2 of RFC 8610)
  ;
  ; It is possible to have both a cti and time claims, but
  ; time-or-cti-claims insures at least cti or iat is present
  ? &(exp: 4) ^ => secs,
  ? &(nbf: 5) ^ => secs,
    &(iat: 6) ^ => secs  //
    &(cti: 7) ^ => bstr
)
]]></sourcecode>
        </figure>
        <t>The SD-KBT payload <bcp14>MAY</bcp14> include a <tt>cnonce</tt> claim.
If included, the <tt>cnonce</tt> is a <tt>bstr</tt> and <bcp14>MUST</bcp14> be treated as opaque to the Holder.
All other claims are <bcp14>OPTIONAL</bcp14> in an SD-KBT.</t>
      </section>
    </section>
    <section anchor="binding-validation">
      <name>SD-KBT and SD-CWT Verifier Validation</name>
      <t>To protect against replay attacks, the Verifier <bcp14>SHOULD</bcp14> provide a nonce, and reject requests that do not include an acceptable nonce (cnonce). This guidance can be ignored in cases where replay attacks are mitigated at another layer.</t>
      <t>The exact order of the following steps <bcp14>MAY</bcp14> be changed, as long as all checks are performed before deciding if an SD-CWT is valid.</t>
      <ol spacing="normal" type="1"><li>
          <t>First the Verifier must open the protected headers of the SD-KBT and find the Issuer SD-CWT present in the <tt>kcwt</tt> field.</t>
        </li>
        <li>
          <t>Next, the Verifier must validate the SD-CWT as described in <xref section="7.2" sectionFormat="of" target="RFC8392"/>. Validators <bcp14>MUST</bcp14> treat an <tt>sd_claims</tt> or <tt>sd_aead_encrypted_claims</tt> unprotected Header Parameter with an empty array as invalid.</t>
        </li>
        <li>
          <t>The Verifier checks the time claims in the SD-CWT as follows:</t>
        </li>
      </ol>
      <ul spacing="normal">
        <li>
          <t><tt>nbf</tt> &lt;= <tt>iat</tt> (if both exist)</t>
        </li>
        <li>
          <t><tt>nbf</tt> &lt;  <tt>exp</tt> (if both exist)</t>
        </li>
        <li>
          <t><tt>iat</tt> &lt;  <tt>exp</tt> (if both exist)</t>
        </li>
      </ul>
      <ol spacing="normal" type="1" start="4"><li>
          <t>The Verifier extracts the confirmation key from the <tt>cnf</tt> claim in the SD-CWT payload.</t>
        </li>
        <li>
          <t>Using the confirmation key, the Verifier validates the SD-KBT as described in <xref section="7.2" sectionFormat="of" target="RFC8392"/>.</t>
        </li>
        <li>
          <t>The Verifier checks the time claims in the SD-KBT to enforce the following logical constraints:</t>
        </li>
      </ol>
      <ul spacing="normal">
        <li>
          <t>if no <tt>cti</tt> claim is present in the SD-KBT, there <bcp14>MUST</bcp14> be an <tt>iat</tt> in the SD-KBT;</t>
        </li>
        <li>
          <t>if there is no <tt>iat</tt> claim in the SD-KBT, there <bcp14>MUST NOT</bcp14> be an <tt>exp</tt> claim or an <tt>nbf</tt> claim in the SD-KBT;</t>
        </li>
        <li>
          <t><tt>nbf</tt> in the SD-KBT &lt;= <tt>iat</tt> in the SD-KBT (if both exist)</t>
        </li>
        <li>
          <t><tt>iat</tt> in the SD-KBT &lt;  <tt>exp</tt> in the SD-KBT (if both exist)</t>
        </li>
        <li>
          <t><tt>nbf</tt> in the SD-CWT &lt;= <tt>iat</tt> in the SD-CWT (if both exist)</t>
        </li>
        <li>
          <t><tt>iat</tt> in the SD-CWT &lt;  <tt>exp</tt> in the SD-CWT (if both exist)</t>
        </li>
        <li>
          <t><tt>nbf</tt> in the SD-CWT &lt;  <tt>exp</tt> in the SD-CWT (if both exist)</t>
        </li>
        <li>
          <t><tt>exp</tt> in the SD-KBT &lt;= <tt>exp</tt> in the SD-CWT (if both exist)</t>
        </li>
        <li>
          <t><tt>nbf</tt> in the SD-KBT &gt;= <tt>nbf</tt> in the SD-CWT (if both exist)</t>
        </li>
        <li>
          <t><tt>iat</tt> in the SD-KBT &gt;= <tt>iat</tt> in the SD-CWT (if both exist)</t>
        </li>
        <li>
          <t><tt>nbf</tt> in the SD-KBT &lt;  <tt>exp</tt> in the SD-CWT (if both exist)</t>
        </li>
        <li>
          <t><tt>iat</tt> in the SD-KBT &lt;  <tt>exp</tt> in the SD-CWT (if both exist)</t>
        </li>
        <li>
          <t><tt>iat</tt> in the SD-KBT &gt;= <tt>nbf</tt> in the SD-CWT (if both exist)</t>
        </li>
      </ul>
      <ol spacing="normal" type="1" start="7"><li>
          <t>The Verifier <bcp14>MUST</bcp14> extract and decode the disclosed claims from the <tt>sd_claims</tt> header parameter in the unprotected header of the SD-CWT.
Each decoded disclosure is treated as if it is a claim key or claim element at the location corresponding to its Blinded Claim Hash in the payload.
If there are any disclosures that do not have a corresponding Blinded Claim Hash, the entire SD-CWT is invalid.
If any decoded Redacted Claim Key duplicates another claim key in the same position, the entire SD-CWT is invalid.  </t>
          <ul empty="true">
            <li>
              <t>Note: A Verifier <bcp14>MUST</bcp14> be prepared to process disclosures in any order. When disclosures are nested, a disclosed value could appear before the disclosure of its parent.</t>
            </li>
          </ul>
        </li>
      </ol>
      <ol spacing="normal" type="1" start="8"><li>
          <t>A Verifier <bcp14>MUST</bcp14> reject the SD-CWT if the audience claim in either the SD-CWT or the SD-KBT contains a value that does not correspond to the intended recipient.</t>
        </li>
        <li>
          <t>Otherwise, the SD-CWT is considered valid.
Once any remaining redacted elements (either redacted claims or decoys) are deleted, the Validated Disclosed Claims Set is now a CWT Claims Set with no claims marked for redaction.  </t>
          <ul empty="true">
            <li>
              <t>Note: Undisclosed Redacted Claim Elements will be removed from the Validated Disclosed Claims Set, changing the length of the array.
If the semantics of the position of items in the array is important, the issuer should instead disclose or redact the entire array.</t>
            </li>
          </ul>
        </li>
      </ol>
      <ol spacing="normal" type="1" start="10"><li>
          <t>Further validation logic can be applied to the Validated Disclosed Claims Set, just as it might be applied to a validated CWT Claims Set.</t>
        </li>
      </ol>
      <t>By performing these steps, the recipient can cryptographically verify the integrity of the protected claims and verify they have not been tampered with.</t>
    </section>
    <section anchor="decoys">
      <name>Decoy Digests</name>
      <t>An Issuer <bcp14>MAY</bcp14> add additional digests to the SD-CWT payload (including nested maps and arrays within the payload) that are not associated with any unblinded claim.
The purpose of such "decoy" digests is to make it more difficult for an adversarial Verifier to infer private information based on the number of Redacted Claim Keys or Redacted Claim Elements.</t>
      <t>The list of disclosures sent by the Issuer to the Holder contains one disclosure for each decoy digest.
Each disclosure contains a single element array with a per-decoy salt.
Each salt <bcp14>MUST</bcp14> be unique.</t>
      <figure anchor="edn-decoy-disc">
        <name>EDN showing a sample decoy salt</name>
        <sourcecode type="cbor-diag"><![CDATA[
<<[ h'C1069BC056E234D64F58BAFF8A7B776B' ]>>
]]></sourcecode>
      </figure>
      <t>The Blinded Claim Hash for each disclosure is calculated using the same algorithm for decoys as for Redacted Claim Keys and Redacted Claim Elements.
An example issued SD-CWT containing decoy digests is shown below.</t>
      <figure anchor="edn-decoys">
        <name>EDN showing a SD-CWT containing decoys</name>
        <sourcecode type="cbor-diag"><![CDATA[
/ cose-sign1 / 18([  / issuer SD-CWT /
  / CWT protected / << {
    / alg /    1  : -35, / ES384 /
    / kid /    4  : 'https://issuer.example/cose-key3',
    / typ /    16 : 293, # application/sd-cwt
    / sd_alg / 170 : -16  / SHA256 /
  } >>,
  / CWT unprotected / {
    / sd_claims / 17 : [ / these are all the disclosures /
        <<[
            /salt/   h'2bfeab9315829fe0c82a15b2c57a47b2',
            /value/  "fr"   / France /
        ]>>,
        <<[
            /salt/   h'c1069bc056e234d64f58baff8a7b776b',
        ]>>,
        <<[
            /salt/   h'b0392772caefd08178218f86f3e2b3a9',
            /value/  true,
            /claim/  500   / inspection result /
        ]>>,
        <<[
            /salt/   h'89c41c270dd06cd3517d371c9ddf2bab',
        ]>>,
    ]
  },
  / CWT payload / << {
    / iss / 1   : "https://issuer.example",
    / sub / 2   : "https://device.example",
    / exp / 4   : 1725330600,  /2024-09-03T02:30:00+00:00Z/
    / nbf / 5   : 1725243900,  /2024-09-02T02:25:00+00:00Z/
    / iat / 6   : 1725244200,  /2024-09-02T02:30:00+00:00Z/
    / cnf / 8   : {
      / cose key / 1 : {
        / kty /  1: 2,  / EC2   /
        / crv / -1: 1,  / P-256 /
        / x /   -2: h'8554eb275dcd6fbd1c7ac641aa2c90d9
                      2022fd0d3024b5af18c7cc61ad527a2d',
        / y /   -3: h'4dc7ae2c677e96d0cc82597655ce92d5
                      503f54293d87875d1e79ce4770194343'
      }
    },
    /countries array/ 98: [
        /redacted country == "fr" /
        60(h'dc5f753b66acd89d78481039934a86cc
             14f9959c64c4037dea3f872b9a8453f1')
        /decoy country #1 /
        60(h'3f80963a1246b412d6567f2a5ca446fd
             19a01dd8cfc291bed69e8c575c5abfb8')
    ],
    / redacted_claim_keys / simple(59) : [
        / redacted claim 500 (== true) /
        h'bd0fd88127b3071ff5433eef59a5e3c5
          f18341f25c5bd119c41fd34802a9797b'
        / decoy claim #2 /
        h'eeec970897a5b9108f24f44751baedab
          b53a1f3d241ab6b60c9f309f114ecf88'
    ]
  } >>,
  / CWT signature / h'fd0b7edae0fa5bd429f07809762a32c5
                      c160c089091a5c3abbee91710fa388d8
                      3c1ad6a5a3d219c4265b9f89aef1f511
                      ff362cbbea6f46bae08978822b672aa5
                      75cd6fc519394af2a883c394faf16ac1
                      781afb01f626bdd6fee1205a29dcc203'
])
]]></sourcecode>
      </figure>
      <t>As with regular Blinded Claims, the Holder needs to receive the disclosure for every decoy so it can be sure the Issuer is not communicating unwanted information to Verifiers (see <xref target="disclosure-of-decoys"/>).</t>
    </section>
    <section anchor="tags-used-before-sd-cwt-issuance">
      <name>Tags Used Before SD-CWT Issuance</name>
      <t>This section describes the semantics of two CBOR tags that are (optionally) only used to convey information to the Issuer about disclosures to create.</t>
      <section anchor="tbr-tag">
        <name>To Be Redacted Tag Definition</name>
        <t>In order to indicate specific claims that the Holder would like to be redacted in a Claim Set, this specification defines a new CBOR tag "To Be Redacted".
The tag can be used by a library to automatically convert a Claim Set with "To Be Redacted" tags into a) a new Claim Set containing Redacted Claim Keys and Redacted Claim Elements replacing the tagged claim keys or claim elements, and b) a set of corresponding Salted Disclosed Claims.</t>
        <t>When used on an element in an array, the value to be redacted is present inside the tag.
When used on a map key and value, the tag is placed around the map key, while the map value remains.</t>
        <t>Examples in this draft use the To Be Redacted tag in order to distinguish their pre-issued, post-issued, and post-presented representations in EDN and CDDL.
The snippet of EDN shown below shows one mechanism to communicate to the Issuer to redact the inspector license number claim, and two of the inspection dates in our primary example.</t>
        <figure anchor="edn-to-be-blinded">
          <name>EDN example requesting blinding of license number and two inspection dates</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  ...
  58(501): "ABCD-123456",   # redact inspector license number claim
  /inspection dates/ 502: [
    58(1549560720),         # redact 07-Feb-2019
    58(1612560720),         # redact 04-Feb-2021
    1674004740              # don't redact 17-Jan-2023
  ]
  ...
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="tb-decoy-tag">
        <name>To Be Decoy</name>
        <t>In order to indicate a location that should contain a decoy digest <xref target="decoys"/> in the issued SD-CWT, this specification defines a new CBOR tag "To Be Decoy".
This tag can be used by a library to automatically a) add a decoy digest at a particular location in an array, or at a particular level in a map; and b) create the corresponding Salted Disclosed Claims.
The value inside is a positive integer that <bcp14>MUST</bcp14> be unique for each decoy location within the SD-CWT.
The integer could be used to look up the salt for the decoy deterministically, but does not impose any ordering.
When a decoy digest is requested in a map, the map <em>value</em> is always <tt>null</tt>.</t>
        <ul empty="true">
          <li>
            <t>Note: Requiring an integer that is unique per decoy within the entire CWT simplifies the implementation of SD-CWT libraries. Issuers that receive To Be Decoy tags with duplicate values inside the same CWT <bcp14>MUST NOT</bcp14> issue an SD-CWT based on the preissued Claims Set.</t>
          </li>
        </ul>
        <t>In the example fragment below, the transit countries claim contains an array of countries.
The Claim Elements array contains Germany (de) and the Philippines (ph).
The Holder wants to redact each country, but add decoys to obfuscate the number of component origin countries.
The example fragment also shows two decoy digests in the same map.</t>
        <figure anchor="edn-to-be-decoy">
          <name>EDN example requesting two decoys</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
  ...
  /component origin countries/ 607: [
    58("de"),
    58("ph"),
    62(1),      # add two decoys in this array
    62(2)
  ],
  62(3): null,  # add a decoy in this map
  62(4): null,  # add a second decoy in the same map
  ...
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="encrypted-disclosures">
      <name>Encrypted Disclosures</name>
      <t>The RATS architecture <xref target="RFC9334"/> defines a model where the Verifier is split into separate entities, with an initial verifier called an Attester, and a target entity called a Relying Party.
Other protocols have a similar type of internal structure for the Verifier.</t>
      <t>In some of these use cases, there is existing usage of AES-128 GCM and other Authenticated Encryption with Additional Data (AEAD) <xref target="RFC5116"/> algorithms.</t>
      <t>This section describes how to use AEADs to encrypt disclosures to a target entity, while enabling a initial verifier to confirm the authenticity of the presentation from the Holder.</t>
      <t>In these systems, an appropriate symmetric key and its context are provided completely out-of-band.</t>
      <t>The entire SD-CWT is included in the protected header of the SD-KBT, which secures the entire Issuer-signed SD-CWT including its unprotected headers that include its disclosures.</t>
      <t>When encrypted disclosures are present, they <bcp14>MUST</bcp14> be in the unprotected headers of the Issuer-signed SD-CWT, before the SD-KBT can be generated by the Holder.</t>
      <t>The initial Verifier of the key binding token might not be able to decrypt encrypted disclosures and <bcp14>MAY</bcp14> decide to forward them to an inner Verifier that can decrypt them.</t>
      <section anchor="aead">
        <name>AEAD Encrypted Disclosures Mechanism</name>
        <t>This section defines two new COSE Header Parameters.
If present in the protected headers, the first header parameter (<tt>sd_aead</tt>) specifies an Authenticated Encryption with Additional Data (AEAD) algorithm <xref target="RFC5116"/> registered in the <eref target="https://www.iana.org/assignments/aead-parameters/aead-parameters.xhtml">IANA AEAD Algorithms registry</eref> .
(Guidance on specific algorithms is discussed in <xref target="aead-choice"/>.)
The second header parameter (<tt>sd_aead_encrypted_claims</tt>), if present, contains a non-empty list of AEAD encrypted disclosures.
Taking the first example disclosure from above:</t>
        <figure anchor="edn-aead-disclosure">
          <name>EDN example of an encrypted disclosure</name>
          <sourcecode type="cbor-diag"><![CDATA[
        <<[
            /salt/   h'bae611067bb823486797da1ebbb52f83',
            /value/  "ABCD-123456",
            /claim/  501   / inspector_license_number /
        ]>>,
]]></sourcecode>
        </figure>
        <t>The corresponding bstr is encrypted with an AEAD algorithm <xref target="RFC5116"/>.
If present, the algorithm of the <tt>sd_aead</tt> protected header field is used, or AEAD_AES_128_GCM if no algorithm was specified. The bstr is encrypted with a unique, random 16-octet nonce.
The AEAD ciphertext consists of its encryption algorithm's ciphertext and its authentication tag.
(For example, in AEAD_AES_128_GCM the authentication tag is 16 octets.)
The nonce (<tt>nonce</tt>), the encryption algorithm's ciphertext (<tt>ciphertext</tt>) and authentication tag (<tt>tag</tt>) are put in an array.
The resulting array is placed in the <tt>sd_aead_encrypted_claims</tt> header parameter in the unprotected headers of the SD-CWT.</t>
        <t>Given the AEAD encryption key (in hexadecimal):</t>
        <artwork><![CDATA[
a061c27a3273721e210d031863ad81b6
]]></artwork>
        <t>A valid AEAD encrypted disclosure for that first disclosure is:</t>
        <figure anchor="edn-aead-claim">
          <name>EDN Example of an AEAD Encrypted Claim</name>
          <sourcecode type="cbor-diag"><![CDATA[
/ sd_aead_encrypted_claims / 171 : [ / AEAD encrypted disclosures /
[
    / nonce /      h'95d0040fe650e5baf51c907c31be15dc',
    / ciphertext / h'2e9a9570254916fd81db30a4126381c4
                     dc8221a2d95e85a7191747e12f68b2fd
                     9cfae5',
    / tag /        h'799147ab37efe19d2b14ff330bfff08b'
],
    ...
]
]]></sourcecode>
        </figure>
        <t>The blinded claim hash is still over the unencrypted disclosure.
The receiver of an AEAD encrypted disclosure locates the appropriate key by looking up the authentication tag.
If the Verifier is able to decrypt and verify an encrypted disclosure, the decrypted disclosure is then processed as if it were in the <tt>sd_claims</tt> header parameter in the unprotected headers of the SD-CWT.</t>
        <t>Details of key management are left to profiles of the specific protocols that make use of AEAD encrypted disclosures.</t>
        <t>The CDDL for AEAD encrypted disclosures is below.</t>
        <figure anchor="cddl-aead">
          <name>CDDL describing syntax of AEAD Encrypted disclosures</name>
          <sourcecode type="cddl"><![CDATA[
aead-encrypted-array = [ +aead-encrypted ]
aead-encrypted = [
  bstr .size 16,     ; 128-bit nonce
  bstr,              ; the encryption ciphertext output of a
                     ;   bstr-encoded-salted
  bstr               ; the corresponding authentication tag
]

]]></sourcecode>
        </figure>
        <ul empty="true">
          <li>
            <t>Note: Because the encryption algorithm is in a registry that contains only AEAD algorithms, an attacker cannot replace the algorithm or the message, without a decryption verification failure.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="cred-types">
      <name>Credential Types</name>
      <t>This specification defines the CWT claim <tt>vct</tt> (for Verifiable Credential Type).
The <tt>vct</tt> value is an identifier for the type of the SD-CWT Claims Set.
Like the <tt>typ</tt> header parameter <xref target="RFC9596"/>, its value can be either a string or an integer.
For size reasons, it is <bcp14>RECOMMENDED</bcp14> that the numeric representation be used.</t>
      <t>If its value is a string, it is a case-sensitive StringOrURI, as defined in <xref target="RFC7519"/>.
In this case, the <tt>vct</tt> string <bcp14>MUST</bcp14> either be registered in the
IANA "Verifiable Credential Type Identifiers" registry
established in <xref target="vct-registry"/>,
or be a Collision-Resistant Name, as defined in Section 2 of <xref target="RFC7515"/>.</t>
      <t>If its value is an integer, it is either a value in the range 0-64999 registered in
the IANA "Verifiable Credential Type Identifiers" registry
established in <xref target="vct-registry"/>
or an  Experimental Use value in the range 65000-65535,
which is not to be used in operational deployments.</t>
      <t>This claim is defined for COSE-based verifiable credentials, similar to the JOSE-based verifiable credentials claim (<tt>vct</tt>) described in Section 3.2.2.1.1 of <xref target="I-D.draft-ietf-oauth-sd-jwt-vc"/>.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <section anchor="minimal-spanning-example">
        <name>Minimal Spanning Example</name>
        <t>The following example contains claims needed to demonstrate redaction of key-value pairs and array elements.</t>
        <figure anchor="example-edn">
          <name>A minimal, full EDN Example</name>
          <sourcecode type="cbor-diag"><![CDATA[
/ cose-sign1 / 18( / sd_kbt / [
  / KBT protected / << {
    / alg /    1:  -7, / ES256 /
    / kcwt /  13:  18([  / issuer SD-CWT /
      / CWT protected / << {
        / alg /    1  : -35, / ES384 /
        / kid /    4  : 'https://issuer.example/cose-key3',
        / typ /    16 : 293, # application/sd-cwt
        / sd_alg / 170 : -16  / SHA256 /
      } >>,
      / CWT unprotected / {
        / sd_claims / 17 : [ / these are the disclosures /
            <<[
                /salt/   h'bae611067bb823486797da1ebbb52f83',
                /value/  "ABCD-123456",
                /claim/  501   / inspector_license_number /
            ]>>,
            <<[
                /salt/   h'8de86a012b3043ae6e4457b9e1aaab80',
                /value/  1549560720   / inspected 7-Feb-2019 /
            ]>>,
            <<[
                /salt/   h'ec615c3035d5a4ff2f5ae29ded683c8e',
                /value/  "ca",
                /claim/  "region"   / region=California /
            ]>>,
        ]
      },
      / CWT payload / << {
        / iss / 1   : "https://issuer.example",
        / sub / 2   : "https://device.example",
        / exp / 4   : 1725330600,  /2024-09-03T02:30:00+00:00Z/
        / nbf / 5   : 1725243900,  /2024-09-02T02:25:00+00:00Z/
        / iat / 6   : 1725244200,  /2024-09-02T02:30:00+00:00Z/
        / cnf / 8   : {
          / cose key / 1 : {
            / kty /  1: 2,  / EC2   /
            / crv / -1: 1,  / P-256 /
            / x /   -2: h'8554eb275dcd6fbd1c7ac641aa2c90d9
                          2022fd0d3024b5af18c7cc61ad527a2d',
            / y /   -3: h'4dc7ae2c677e96d0cc82597655ce92d5
                          503f54293d87875d1e79ce4770194343'
          }
        },
        /most_recent_inspection_passed/ 500: true,
        /inspection_dates/ 502 : [
            / redacted inspection date 7-Feb-2019 /
            60(h'1b7fc8ecf4b1290712497d226c04b503
                 b4aa126c603c83b75d2679c3c613f3fd'),
            / redacted inspection date 4-Feb-2021 /
            60(h'64afccd3ad52da405329ad935de1fb36
                 814ec48fdfd79e3a108ef858e291e146'),
            1674004740,   / 2023-01-17T17:19:00 /
        ],
        / inspection_location / 503 : {
            "country" : "us",            / United States /
            / redacted_claim_keys / simple(59) : [
                / redacted region /
                h'0d4b8c6123f287a1698ff2db15764564
                  a976fb742606e8fd00e2140656ba0df3'
                / redacted postal_code /
                h'c0b7747f960fc2e201c4d47c64fee141
                  b78e3ab768ce941863dc8914e8f5815f'
          ]
        },
        / redacted_claim_keys / simple(59) : [
            / redacted inspector_license_number /
            h'af375dc3fba1d082448642c00be7b2f7
              bb05c9d8fb61cfc230ddfdfb4616a693'
        ]
      } >>,
      / CWT signature / h'536b3797c8f396d6dc4fedfa54fa605f
                          be897df02267ede5b40b257cba5eb2b3
                          cbf7d4f5733e0ca2e77783d860b8d74a
                          2b98878930be6c8e3d1de63df909d484
                          2a800f9d377fa41e9bd5f72743c06cfb
                          1e5d59892fac51a806cd4caf6cb30cce'
    ]),
    / end of issuer SD-CWT /
    / typ /   16:  294   # application/kb+cwt,
  } >>,     / end of KBT protected header /
  / KBT unprotected / {},
  / KBT payload / << {
    / aud    /  3    : "https://verifier.example/app",
    / iat    /  6    : 1725244237, / 2024-09-02T02:30:37+00:00Z /
    / cnonce / 39    : h'8c0f5f523b95bea44a9a48c649240803'
  } >>,      / end of KBT payload /
  / KBT signature / h'67116f888eab35fe82c171db146262c9
                      922fb3d4fd769641c80569e3c6010f90
                      251fa2b1dd335bc6bd8314603f57fd03
                      af7ddb5eb4cce1e59ac07d11dfdce742'
])   / end of kbt /
]]></sourcecode>
        </figure>
      </section>
      <section anchor="nesting">
        <name>Nested Example</name>
        <t>Instead of the structure from the previous example, imagine that the payload contains an inspection history log with the following structure. It could be blinded at multiple levels of the claims set hierarchy.</t>
        <figure anchor="edn-nested-unblinded">
          <name>EDN example of Nested Claims Set before blinding</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
    / iss / 1  : "https://issuer.example",
    / sub / 2  : "https://device.example",
    / exp / 4  : 1725330600, /2024-09-02T19:30:00Z/
    / nbf / 5  : 1725243840, /2024-09-01T19:25:00Z/
    / iat / 6  : 1725244200, /2024-09-01T19:30:00Z/
    / cnf / 8  : { ... },
    504: [                      / inspection history log /
        {
            500: True,          / inspection passed /
            502: 1549560720,    / 2019-02-07T17:32:00 /
            501: "DCBA-101777", / inspector license /
            503: {
                1: "us",        / United States /
                2: "co",        / region=Colorado /
                3: "80302"      / postcode /
            }
        },
        {
            500: True,          / inspection passed /
            502: 1612560720,    / 2021-02-04T20:14:00 /
            501: "EFGH-789012", / inspector license /
            503: {
                1: "us",        / United States /
                2: "nv",        / region=Nevada /
                3: "89155"      / postcode /
            }
        },
        {
            500: True,          / inspection passed /
            502: 17183928,      / 2023-01-17T17:19:00 /
            501: "ABCD-123456", / inspector license /
            503: {
                1: "us",        / United States /
                2: "ca",        / region=California /
                3: "94188"      / postcode /
            }
        },
    ]
}
]]></sourcecode>
        </figure>
        <t>For example, looking at the nested disclosures below, the first disclosure unblinds the entire January 2023 inspection record.
However, when the record is disclosed, the inspector license number and inspection location are redacted inside the record.
The next disclosure unblinds the inspector_license_number, and the next
disclosure unblinds the inspection location record, but the region and postcode claims inside the location record are also individually blinded.
The fourth disclosure unblinds the inspection region.</t>
        <t>The fifth disclosure unblinds the earliest inspection record, and the last disclosure unblinds the inspector_license_number for that record.</t>
        <t>Verifiers start unblinding claims for which they have blinded claim hashes. They continue descending until there are no blinded claim hashes at any level of the hierarchy for which they have a corresponding disclosure.</t>
        <figure anchor="edn-nested-blinded">
          <name>EDN Example of SD-CWT with Nested Blinded Claims</name>
          <sourcecode type="cbor-diag"><![CDATA[
/ sd_claims / 17 : [ / these are the disclosures /
    <<[
        /salt/   h'cd99b3858f1d659f9d16039abf8c5fba',
        /value/  {
                     500: true,
                     502: 1674004740,
                     simple(59): [
                     h'af375dc3fba1d082448642c00be7b2f7
                       bb05c9d8fb61cfc230ddfdfb4616a693',
                     h'9d151abeb800adcc11ff10ff61fbd3d7
                       5944c134b40a24abef1787d3ae6583aa'
                 ]
                 }   / inspection 17-Jan-2023 /
    ]>>,
    <<[
        /salt/   h'bae611067bb823486797da1ebbb52f83',
        /value/  "ABCD-123456",
        /claim/  501   / inspector_license_number /
    ]>>,
    <<[
        /salt/   h'483e4b3c194df6073a9c41ca9f274067',
        /value/  {
                     1: "us",
                     simple(59): [
                         h'2470fb9175b062c347ab3c3a19776d02
                           476112a17cd7cfc9416664bc058c220b',
                         h'cf397a08917528624ca3b332c9edcc54
                           a72c9411dd5983f68017ce160f709f52'
                     ]
                 },
        /claim/  503   / San Francisco location /
    ]>>,
    <<[
        /salt/   h'52da9de5dc61b33775f9348b991d3d78',
        /value/  "ca",
        /claim/  2   / region=California /
    ]>>,
    <<[
        /salt/   h'2df7d2c105b5bf3acf9c698f3658552f',
        /value/  {
                     500: true,
                     502: 1549560720,
                     simple(59): [
                         h'7257a8697dfa40221079b00fb65fe587
                           c310e6ca3da1aa33b090335de66ec810',
                         h'c24c646b52fecd773c6ea01c6caa5a73
                           422b85d3afa5900fa998336d83a88025'
                     ]
                 }   / inspection 7-Feb-2019 /
    ]>>,
    <<[
        /salt/   h'591eb2081b05be2dcbb6f8459cc0fe51',
        /value/  "DCBA-101777",
        /claim/  501   / inspector_license_number /
    ]>>,
    <<[
        /salt/   h'c23a4d192be75dbd583be570482de8dd',
        /value/  {
                     1: "us",
                     simple(59): [
                         h'1b89717167f39d51eec08b13baeda570
                           eff5d0aedaa1d7d0821185c33634a5a0',
                         h'49412884fa1e3787c17d1320bdd48f6e
                           0e5365da010cde0571d4a7effd13cc2a'
                     ]
                 },
        /claim/  503   / Denver location /
    ]>>,
]
]]></sourcecode>
        </figure>
        <t>After applying the disclosures of the nested structure above, the disclosed Claims Set visible to the Verifier would look like the following:</t>
        <figure anchor="edn-validated">
          <name>EDN of validated nested claims</name>
          <sourcecode type="cbor-diag"><![CDATA[
{
    / iss / 1  : "https://issuer.example",
    / sub / 2  : "https://device.example",
    / exp / 4  : 1725330600, /2024-09-02T19:30:00Z/
    / nbf / 5  : 1725243840, /2024-09-01T19:25:00Z/
    / iat / 6  : 1725244200, /2024-09-01T19:30:00Z/
    / cnf / 8  : { ... },
    504: [                      / inspection history log /
        {
            500: True,          / inspection passed /
            501: "DCBA-101777", / inspector license /
            502: 1549560720,    / 2019-02-07T17:32:00 /
            503: {
                1: "us"         / United States /
            }
        },
        {
            500: True,          / inspection passed /
            501: "ABCD-123456", / inspector license /
            502: 17183928,      / 2023-01-17T17:19:00 /
            503: {
                1: "us",        / United States /
                2: "ca"         / region=California /
            }
        }
    ]
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>This section describes the privacy considerations in accordance with the recommendations from <xref target="RFC6973"/>.
Many of the topics discussed in <xref target="RFC6973"/> apply to SD-CWT, but are not repeated here.</t>
      <section anchor="correlation">
        <name>Correlation</name>
        <t>Presentations of the same SD-CWT to multiple Verifiers can be correlated by matching on the signature component of the COSE_Sign1.
That is, SD-CWT does not naturally provide Verifier-Verifier unlinkability.
Signature based linkability can be mitigated by issuing multiple single-use tokens, at a credential management complexity cost.</t>
        <t>Any presentation of an SD-CWT can be correlated with its issuance if an Issuer and Verifier cooperate.
That is, SD-CWT cannot provide Verifier-Issuer unlinkability.</t>
        <t>Any Claim Value that pertains to a sufficiently small set of subjects can be used to facilitate tracking the subject.
For example, a high precision issuance time might match the issuance of only a few credentials for a given Issuer, and as such, any presentation of a credential issued at that time can be determined to be associated with the set of credentials issued at that time, for those subjects.</t>
      </section>
      <section anchor="determinism">
        <name>Determinism</name>
        <t>It is possible to encode additional information through the choices made during the serialization stage of producing an SD-CWT, for example, by adjusting the order of CBOR map keys, or by choosing different numeric encodings for certain data elements.
<xref target="I-D.draft-ietf-cbor-cde"/> provides guidance for constructing application profiles that constrain serialization optionality beyond CBOR Common Deterministic Encoding rulesets (CDE).
The construction of such profiles has a significant impact on the privacy properties of a credential type.</t>
      </section>
      <section anchor="audience">
        <name>Audience</name>
        <t>If the audience claim is present in both the SD-CWT and the SD-KBT, they are not required to be the same.
SD-CWTs with audience claims that do not correspond to the intended recipients <bcp14>MUST</bcp14> be rejected, to protect against accidental disclosure of sensitive data.</t>
      </section>
      <section anchor="credential-types">
        <name>Credential Types</name>
        <t>The privacy implications of selective disclosure vary significantly across different credential types due to their inherent characteristics and intended use cases.
The mandatory and optional-to-disclose data elements in an SD-CWT must be carefully chosen based on the specific privacy risks associated with each credential type.</t>
        <t>For example, a passport credential contains highly sensitive personal information where even partial disclosure can have significant privacy implications:</t>
        <ul spacing="normal">
          <li>
            <t>Revealing citizenship status may expose an individual to discrimination</t>
          </li>
          <li>
            <t>Date of birth combined with any other attribute enables age-based profiling</t>
          </li>
          <li>
            <t>Biometric data, even if selectively disclosed, presents irreversible privacy risks</t>
          </li>
          <li>
            <t>The mere possession of a passport from certain countries can be sensitive information</t>
          </li>
        </ul>
        <t>In contrast, a legal entity certificate has fundamentally different privacy considerations:</t>
        <ul spacing="normal">
          <li>
            <t>The entity's legal name and registration number are often public information</t>
          </li>
          <li>
            <t>Business addresses and contact details may already be in public registries</t>
          </li>
          <li>
            <t>Authorized signatories' names might be required for legal validity</t>
          </li>
          <li>
            <t>The primary concern is often business confidentiality rather than personal privacy</t>
          </li>
        </ul>
        <t>These differences mean that:</t>
        <ul spacing="normal">
          <li>
            <t>Passport credentials should minimize mandatory disclosures and maximize holder control over optional elements</t>
          </li>
          <li>
            <t>Legal entity certificates might reasonably require disclosure of more fields to establish business legitimacy</t>
          </li>
          <li>
            <t>The granularity of selective disclosure should match the credential type's privacy sensitivity</t>
          </li>
          <li>
            <t>Default disclosure sets must be carefully calibrated to each credential's risk profile</t>
          </li>
        </ul>
        <t>Several distinct credential types might be applicable to a given use case, each with unique privacy trade-offs.
Issuers <bcp14>MUST</bcp14> perform a comprehensive privacy and confidentiality assessment for each credential type they intend to issue, considering:</t>
        <ul spacing="normal">
          <li>
            <t>The sensitivity spectrum of contained attributes</t>
          </li>
          <li>
            <t>Likely disclosure scenarios and their privacy impacts</t>
          </li>
          <li>
            <t>Correlation risks when attributes are combined</t>
          </li>
          <li>
            <t>Long-term privacy implications of disclosed information</t>
          </li>
          <li>
            <t>Cultural and jurisdictional privacy expectations</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Security considerations from COSE <xref target="RFC9052"/> and CWT <xref target="RFC8392"/> apply to this specification.</t>
      <section anchor="issuer-key-compromise">
        <name>Issuer Key Compromise</name>
        <t>Verification of an SD-CWT requires that the Verifier have access to a verification key (public key) associated with the Issuer.
Compromise of the Issuer's signing key would enable an attacker to forge credentials for any subject, potentially undermining the entire trust model of the credential system.
Beyond key compromise, attacks targeting the provisioning and binding between issuer names and their cryptographic key material pose significant risks.
An attacker who can manipulate these bindings could substitute their own keys for legitimate issuer keys, enabling credential forgery while appearing to be a trusted issuer.</t>
      </section>
      <section anchor="disclosure-coercion">
        <name>Disclosure Coercion and Over-identification</name>
        <t>The Security Considerations from <xref section="10.2" sectionFormat="of" target="I-D.draft-ietf-oauth-selective-disclosure-jwt"/> apply, with additional attention to disclosure coercion risks.
Holders face risks of being coerced into disclosing more claims than necessary. This threat warrants special attention because:</t>
        <ol spacing="normal" type="1"><li>
            <t>Verifier Trust: Holders <bcp14>MUST</bcp14> be able to verify that a Verifier will handle disclosed claims appropriately and only for stated purposes.</t>
          </li>
          <li>
            <t>Elevated Risk: Claims from trusted authorities (e.g., government-issued credentials) carry higher misuse potential due to their inherent legitimacy.</t>
          </li>
          <li>
            <t>Irreversibility: Disclosed claims cannot be withdrawn. This permanent exposure risk <bcp14>MUST</bcp14> be considered in any disclosure decision.</t>
          </li>
        </ol>
        <t>Mitigation Measures:</t>
        <ol spacing="normal" type="1"><li>
            <t>Verifiers <bcp14>SHOULD</bcp14> demonstrate eligibility to receive claims</t>
          </li>
          <li>
            <t>Holders <bcp14>MUST</bcp14> conduct risk assessments when Verifier eligibility cannot be established</t>
          </li>
          <li>
            <t>Trust lists maintained by trusted parties can help identify authorized Verifiers</t>
          </li>
        </ol>
        <t>Without proper safeguards (such as Verifier trust lists), Holders remain vulnerable to over-identification and long-term misuse of their disclosed information.</t>
        <t>Implementers deploying SD-CWT in credential systems should review <xref target="W3CTAG-Credential-Abuse"/>,
which discusses broader risks of credential abuse including surveillance, exclusion, and overuse.</t>
      </section>
      <section anchor="disclosure-of-decoys">
        <name>Disclosure of Decoys</name>
        <t>Issuers control the claimset and may include decoy digests to obscure the number of claims in a credential.
Unless all decoy disclosures are made available to Holders, an Issuer could use this mechanism to hide claims from Holders without their knowledge.
A Holder receiving a credential with undisclosed decoys cannot distinguish between a digest that conceals a real claim and one that is genuinely a decoy.
This creates a severe privacy risk: an Issuer could embed hidden claims — such as behavioral flags, risk scores, or sensitive attributes — that Verifiers can later be given selective access to, without the Holder's awareness or consent.</t>
      </section>
      <section anchor="random-numbers">
        <name>Random Numbers</name>
        <t>Each salt used to protect disclosed claims <bcp14>MUST</bcp14> be generated independently.
Identical salt values, or values that can be correlated, might allow a Verifier to recover blinded values that were not disclosed.</t>
        <t>The salts <bcp14>MUST</bcp14> be generated using fresh randomness or from a source that has outputs cannot be predicted by any potential Verifier.
Poor choice of salts can lead to brute force attacks that can reveal redacted claims.</t>
      </section>
      <section anchor="binding-the-kbt-and-the-cwt">
        <name>Binding the KBT and the CWT</name>
        <t>The "iss" claim in the SD-CWT is self-asserted by the Issuer.</t>
        <t>Because confirmation is mandatory, the subject claim of an SD-CWT, when present, is always related directly to the confirmation claim.
There might be many subject claims and many confirmation keys that identify the same entity or that are controlled by the same entity, while the identifiers and keys are distinct values.
Reusing an identifier or key enables correlation, but <bcp14>MUST</bcp14> be evaluated in terms of the confidential and privacy constraints associated with the credential type.
Conceptually, the Holder is both the Issuer and the subject of the SD-KBT, even if the "iss" or "sub" claims are not present.
If they are present, they are self-asserted by the Holder.
All three are represented by the confirmation (public) key in the SD-CWT.</t>
        <t>As with any self-assigned identifiers, Verifiers need to take care to verify that the SD-KBT "iss" and "sub" claims match the subject in the SD-KBT, and are a valid representation of the Holder and correspond to the Holder's confirmation key.
Extra care should be taken in case the SD-CWT subject claim is redacted.
Likewise, Holders and Verifiers <bcp14>MUST</bcp14> verify that the "iss" claim of the SD-CWT corresponds to the Issuer and the key described in the protected header of the SD-CWT.</t>
        <t>Finally, the Verifier <bcp14>MUST</bcp14> verify that the time claims in both the SD-CWT and SD-KBT are self-consistent and that the SD-KBT is not valid for any period of time when the SD-CWT is not.
Specific tests for time claims are described in steps 3 and 6 of <xref target="binding-validation"/>.
Likewise, if there is a notion of SD-CWT revocation, an SD-KBT containing a revoked SD-CWT is not valid.</t>
      </section>
      <section anchor="covert-channels">
        <name>Covert Channels</name>
        <t>Any data element that is supplied by the Issuer, and that appears random to the Holder might be used to produce a covert channel between the Issuer and the Verifier.
The ordering of claims, and precision of timestamps can also be used to produce a covert channel.
This is more of a concern for SD-CWT than typical CWTs, because the Holder is usually considered to be aware of the Issuer claims they are disclosing to a Verifier.</t>
      </section>
      <section anchor="nested-disclosure-ordering">
        <name>Nested Disclosure Ordering</name>
        <t>The Holder has flexibility in determining the order of nested disclosures when making presentations.
The order can be sorted, randomized, or optimized for performance based on the Holder's needs.
This ordering choice has no security impact on encrypted disclosures.
However, the order can affect the runtime of the verification process.</t>
      </section>
      <section anchor="aead-choice">
        <name>Choice of AEAD algorithms</name>
        <t>The AEAD encrypted disclosures mechanism discussed in <xref target="aead"/> can refer to any AEAD alogithm in the <eref target="https://www.iana.org/assignments/aead-parameters/aead-parameters.xhtml">IANA AEAD Algorithms registry</eref> .</t>
        <t>When choosing an AEAD algorithm, the tag length is critical for the integrity of encrypted disclosures in SD-CWT.
As such, implementations <bcp14>MUST NOT</bcp14> use any AEAD algorithm with a tag length less than 16 octets.</t>
        <t>Algorithms using AES-CCM are <bcp14>NOT RECOMMENDED</bcp14>.</t>
        <t>As of this writing, implementations <bcp14>MUST NOT</bcp14> use algorithms 3 through 14, 18, 19, 21, 22, 24, 25, 27, or 28.
Implementations using the AEGIS algorithms containing an X <bcp14>MUST</bcp14> only use the 256-bit tag variant.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="cose-header-parameters">
        <name>COSE Header Parameters</name>
        <t>IANA is requested to add the following entries to the <eref target="https://www.iana.org/assignments/cose/cose.xhtml#header-parameters">IANA "COSE Header Parameters" registry</eref>:</t>
        <section anchor="sdclaims">
          <name>sd_claims</name>
          <t>The following completed registration template per RFC8152 is provided:</t>
          <ul spacing="normal">
            <li>
              <t>Name: sd_claims</t>
            </li>
            <li>
              <t>Label: 17</t>
            </li>
            <li>
              <t>Value Type: <tt>[ +bstr ]</tt></t>
            </li>
            <li>
              <t>Value Registry: (empty)</t>
            </li>
            <li>
              <t>Description: A list of selectively disclosed claims, which were originally redacted, then later disclosed at the discretion of the sender.</t>
            </li>
            <li>
              <t>Reference: <xref target="sd-cwt-preparation"/> of this specification</t>
            </li>
          </ul>
        </section>
        <section anchor="sdalg">
          <name>sd_alg</name>
          <t>The following completed registration template per RFC8152 is provided:</t>
          <ul spacing="normal">
            <li>
              <t>Name: sd_alg</t>
            </li>
            <li>
              <t>Label: 170</t>
            </li>
            <li>
              <t>Value Type: <tt>int</tt></t>
            </li>
            <li>
              <t>Value Registry: IANA COSE Algorithms</t>
            </li>
            <li>
              <t>Description: The hash algorithm used for redacting disclosures.</t>
            </li>
            <li>
              <t>Reference: <xref target="sd-cwt-issuance"/> of this specification</t>
            </li>
          </ul>
        </section>
        <section anchor="sdaeadencryptedclaims">
          <name>sd_aead_encrypted_claims</name>
          <t>The following completed registration template per RFC8152 is provided:</t>
          <ul spacing="normal">
            <li>
              <t>Name: sd_aead_encrypted_claims</t>
            </li>
            <li>
              <t>Label: 171</t>
            </li>
            <li>
              <t>Value Type: <tt>[ +[bstr,bstr,bstr] ]</tt></t>
            </li>
            <li>
              <t>Value Registry: (empty)</t>
            </li>
            <li>
              <t>Description: A list of AEAD encrypted selectively disclosed claims, which were originally redacted, then later disclosed at the discretion of the sender.</t>
            </li>
            <li>
              <t>Reference: <xref target="aead"/> of this specification</t>
            </li>
          </ul>
        </section>
        <section anchor="sdaead">
          <name>sd_aead</name>
          <t>The following completed registration template per RFC8152 is provided:</t>
          <ul spacing="normal">
            <li>
              <t>Name: sd_aead</t>
            </li>
            <li>
              <t>Label: 172</t>
            </li>
            <li>
              <t>Value Type: <tt>uint .size 2</tt></t>
            </li>
            <li>
              <t>Value Registry: IANA AEAD Algorithm number</t>
            </li>
            <li>
              <t>Description: The AEAD algorithm used for encrypting disclosures.</t>
            </li>
            <li>
              <t>Reference: <xref target="aead"/> of this specification</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="simple59">
        <name>CBOR Simple Values</name>
        <t>IANA is requested to add the following entry to the <eref target="https://www.iana.org/assignments/cbor-simple-values#simple">IANA "CBOR Simple Values" registry</eref>:</t>
        <ul spacing="normal">
          <li>
            <t>Value: 59</t>
          </li>
          <li>
            <t>Semantics: This value as a map key indicates that the Claim Value is an array of redacted Claim Keys at the same level as the map key.</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="blinded-claims"/> of this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="cbor-tags">
        <name>CBOR Tags</name>
        <t>IANA is requested to add the following entries to the <eref target="https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml#tags">IANA "CBOR Tags" registry</eref>:</t>
        <section anchor="to-be-redacted-tag">
          <name>To Be Redacted Tag</name>
          <t>The array claim element, or map key and value inside the "To be redacted" tag is intended to be redacted using selective disclosure.</t>
          <ul spacing="normal">
            <li>
              <t>Tag: 58</t>
            </li>
            <li>
              <t>Data Item: (any)</t>
            </li>
            <li>
              <t>Semantics: An array claim element intended to be redacted, or a map key whose key and value are intended to be redacted.</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="tbr-tag"/> of this specification</t>
            </li>
          </ul>
        </section>
        <section anchor="redacted-claim-element-tag">
          <name>Redacted Claim Element Tag</name>
          <t>The byte string inside the tag is a selective disclosure redacted claim element of an array.</t>
          <ul spacing="normal">
            <li>
              <t>Tag: 60</t>
            </li>
            <li>
              <t>Data Item: byte string</t>
            </li>
            <li>
              <t>Semantics: A selective disclosure redacted (array) claim element.</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="blinded-claims"/> of this specification</t>
            </li>
          </ul>
        </section>
        <section anchor="to-be-decoy-tag">
          <name>To Be Decoy Tag</name>
          <t>The positive integer inside the tag is a unique number to indicate a specific decoy instance among all the instances in the document.</t>
          <ul spacing="normal">
            <li>
              <t>Tag: 62 (requested)</t>
            </li>
            <li>
              <t>Data Item: <tt>uint .gt 0</tt></t>
            </li>
            <li>
              <t>Semantics: A marker of a location in a map or an array where a decoy is intended to be inserted.</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="tb-decoy-tag"/> of this specification</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="cbor-web-token-cwt-claims">
        <name>CBOR Web Token (CWT) Claims</name>
        <t>IANA is requested to add the following entry to the <eref target="https://www.iana.org/assignments/cwt/cwt.xhtml#claims-registry">IANA "CWT Claims" registry</eref>:</t>
        <section anchor="vct">
          <name>vct</name>
          <t>The following completed registration template per RFC8392 is provided:</t>
          <ul spacing="normal">
            <li>
              <t>Claim Name: vct</t>
            </li>
            <li>
              <t>Claim Description: Verifiable credential type</t>
            </li>
            <li>
              <t>JWT Claim Name: vct</t>
            </li>
            <li>
              <t>Claim Key: 11</t>
            </li>
            <li>
              <t>Claim Value Type(s): bstr</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="cred-types"/> of this specification</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>IANA is requested to add the following entries to the IANA "Media Types" registry (https://www.iana.org/assignments/media-types/media-types.xhtml#application):</t>
        <section anchor="applicationsd-cwt">
          <name>application/sd-cwt</name>
          <t>The following completed registration template is provided:</t>
          <ul spacing="normal">
            <li>
              <t>Type name: application</t>
            </li>
            <li>
              <t>Subtype name: sd-cwt</t>
            </li>
            <li>
              <t>Required parameters: n/a</t>
            </li>
            <li>
              <t>Optional parameters: n/a</t>
            </li>
            <li>
              <t>Encoding considerations: binary</t>
            </li>
            <li>
              <t>Security considerations: <xref target="security"/> of this specification and <xref target="RFC8392"/></t>
            </li>
            <li>
              <t>Interoperability considerations: n/a</t>
            </li>
            <li>
              <t>Published specification: <xref target="sd-cwt-definition"/> of this specification</t>
            </li>
            <li>
              <t>Applications that use this media type: TBD</t>
            </li>
            <li>
              <t>Fragment identifier considerations: n/a</t>
            </li>
            <li>
              <t>Additional information:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Magic number(s): n/a</t>
                </li>
                <li>
                  <t>File extension(s): n/a</t>
                </li>
                <li>
                  <t>Macintosh file type code(s): n/a</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Person &amp; email address to contact for further information:
  SPICE WG mailing list (spice@ietf.org) or
  IETF Security Area (saag@ietf.org)</t>
            </li>
            <li>
              <t>Intended usage: COMMON</t>
            </li>
            <li>
              <t>Restrictions on usage: none</t>
            </li>
            <li>
              <t>Author: See Author's Addresses section</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Provisional registration?  No</t>
            </li>
          </ul>
        </section>
        <section anchor="applicationkbcwt">
          <name>application/kb+cwt</name>
          <t>The following completed registration template is provided:</t>
          <ul spacing="normal">
            <li>
              <t>Type name: application</t>
            </li>
            <li>
              <t>Subtype name: kb+cwt</t>
            </li>
            <li>
              <t>Required parameters: n/a</t>
            </li>
            <li>
              <t>Optional parameters: n/a</t>
            </li>
            <li>
              <t>Encoding considerations: binary</t>
            </li>
            <li>
              <t>Security considerations: <xref target="security"/> of this specification and <xref target="RFC8392"/></t>
            </li>
            <li>
              <t>Interoperability considerations: n/a</t>
            </li>
            <li>
              <t>Published specification: <xref target="kbt"/> of this specification</t>
            </li>
            <li>
              <t>Applications that use this media type: TBD</t>
            </li>
            <li>
              <t>Fragment identifier considerations: n/a</t>
            </li>
            <li>
              <t>Additional information:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Magic number(s): n/a</t>
                </li>
                <li>
                  <t>File extension(s): n/a</t>
                </li>
                <li>
                  <t>Macintosh file type code(s): n/a</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Person &amp; email address to contact for further information:
  SPICE WG mailing list (spice@ietf.org) or
  IETF Security Area (saag@ietf.org)</t>
            </li>
            <li>
              <t>Intended usage: COMMON</t>
            </li>
            <li>
              <t>Restrictions on usage: none</t>
            </li>
            <li>
              <t>Author: See Author's Addresses section</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Provisional registration?  No</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="structured-syntax-suffix">
        <name>Structured Syntax Suffix</name>
        <t>IANA is requested to add the following entry to the <eref target="https://www.iana.org/assignments/media-type-structured-suffix/media-type-structured-suffix.xhtml#structured-syntax-suffix">IANA "Structured Syntax Suffix" registry</eref>:</t>
        <ul spacing="normal">
          <li>
            <t>Name: SD-CWT</t>
          </li>
          <li>
            <t>+suffix: +sd-cwt</t>
          </li>
          <li>
            <t>References: <xref target="sd-cwt-definition"/> of this specification</t>
          </li>
          <li>
            <t>Encoding considerations: binary</t>
          </li>
          <li>
            <t>Interoperability considerations: n/a</t>
          </li>
          <li>
            <t>Fragment identifier considerations: n/a</t>
          </li>
          <li>
            <t>Security considerations: <xref target="security"/> of this specification</t>
          </li>
          <li>
            <t>Contact: See Author's Addresses section</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
        </ul>
      </section>
      <section anchor="content-formats">
        <name>Content-Formats</name>
        <t>IANA is requested to register the following entries in the <eref target="https://www.iana.org/assignments/core-parameters/core-parameters.xhtml#content-formats">IANA "CoAP Content-Formats" registry</eref>:</t>
        <table align="left">
          <name>New CoAP Content Formats</name>
          <thead>
            <tr>
              <th align="left">Content-Type</th>
              <th align="left">Content Coding</th>
              <th align="left">ID</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">application/sd-cwt</td>
              <td align="left">-</td>
              <td align="left">293</td>
              <td align="left">
                <xref target="sd-cwt-definition"/> of this specification</td>
            </tr>
            <tr>
              <td align="left">application/kb+cwt</td>
              <td align="left">-</td>
              <td align="left">294</td>
              <td align="left">
                <xref target="kbt"/> of this specification</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="vct-registry">
        <name>Verifiable Credential Type Identifiers</name>
        <t>This specification establishes the Verifiable Credential Type Identifiers registry, under the <eref target="https://www.iana.org/assignments/cwt/cwt.xhtml">IANA "CBOR Web Token (CWT) Claims" group registry heading</eref>.
It registers identifiers for the type of the SD-CWT Claims Set.</t>
        <t>It enables short integers in the range 0-65535 to be used as <tt>vct</tt> Claim Values, similarly to how CoAP Content-Formats (<xref section="12.3" sectionFormat="of" target="RFC7252"/>) enable short integers to be used as <tt>typ</tt> header parameter <xref target="RFC9596"/> values.</t>
        <t>The registration procedures for numbers in specific ranges are as described below:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedure from RFC8126</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-9999</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">10000-64999</td>
              <td align="left">First Come First Served</td>
            </tr>
            <tr>
              <td align="left">65000-65535</td>
              <td align="left">Experimental Use (no operational use)</td>
            </tr>
          </tbody>
        </table>
        <t>Values in the Specification Required <xref target="RFC8126"/> range are registered
after a two-week review period on the spice-ext-review@ietf.org
mailing list, on the advice of one or more Designated Experts.
To allow for the allocation of values prior to publication
of the final version of a specification,
the Designated Experts may approve registration once they are satisfied
that the specification will be completed and published.
However, if the specification is not completed and published
in a timely manner, as determined by the Designated Experts,
the Designated Experts may request that IANA withdraw the registration.</t>
        <t>Registration requests sent to the mailing list for review should use
an appropriate subject
(e.g., "Request to register VCT value").</t>
        <t>Within the review period, the Designated Experts will either approve or deny
the registration request, communicating this decision to the review list and IANA.
Denials should include an explanation and, if applicable,
suggestions as to how to make the request successful.
The IANA escalation process can be initiated by the party requesting registration
when the Designated Experts are not responsive within 14 days.</t>
        <t>Criteria that should be applied by the Designated Experts includes
determining whether the proposed registration duplicates existing functionality,
determining whether it is likely to be of general applicability
or whether it is useful only for a single application,
and whether the registration makes sense.</t>
        <t>IANA must only accept registry updates from the Designated Experts and should direct
all requests for registration in the Specification Required range
to the review mailing list.</t>
        <t>It is suggested that multiple Designated Experts be appointed who are able to represent the perspectives of different applications using this specification, in order to enable broadly-informed review of registration decisions.
In cases where a registration decision could be perceived as creating a conflict of interest for a particular Expert, that Expert should defer to the judgment of the other Experts.</t>
        <section anchor="registration-template">
          <name>Registration Template</name>
          <dl>
            <dt>Verifiable Credential Type Identifier String:</dt>
            <dd>
              <t>String identifier for use as a JWT <tt>vct</tt> or CWT <tt>vct</tt> Claim Value.  It is a StringOrURI value.</t>
            </dd>
            <dt>Verifiable Credential Type Identifier Number:</dt>
            <dd>
              <t>Integer in the range 0-64999 for use as a CWT <tt>vct</tt> Claim Value.  (Integers in the range 65000-65535 are not to be registered.)</t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>Brief description of the verifiable credential type</t>
            </dd>
            <dt>Change Controller:</dt>
            <dd>
              <t>For IETF stream RFCs, use "IETF".
For others, give the name of the responsible party.
Other details (e.g., postal address, e-mail address, home page URI) may also be included.</t>
            </dd>
            <dt>Specification Document(s):</dt>
            <dd>
              <t>Reference to the document or documents that specify the values to be registered, preferably including URLs that can be used to retrieve the documents.
An indication of the relevant sections may also be included, but is not required.</t>
            </dd>
          </dl>
        </section>
        <section anchor="initial-registry-contents">
          <name>Initial Registry Contents</name>
          <t>No initial values are provided for the registry.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8949" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <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>
        <referencegroup anchor="BCP205" target="https://www.rfc-editor.org/info/bcp205">
          <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
        <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="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
        <reference anchor="I-D.ietf-cbor-edn-literals" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-cbor-edn-literals.xml">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="16" month="October" year="2025"/>
            <abstract>
              <t>This document formalizes and consolidates the definition of the Extended Diagnostic Notation (EDN) of the Concise Binary Object Representation (CBOR), addressing implementer experience. Replacing EDN's previous informal descriptions, it updates RFC 8949, obsoleting its Section 8, and RFC 8610, obsoleting its Appendix G. It also specifies and uses registry-based extension points, using one to support text representations of epoch-based dates/times and of IP addresses and prefixes. // (This cref will be removed by the RFC editor:) The present -19 // includes the definition of the cri'' application- extension. cri'' // was previously defined in draft-ietf-core-href; however the latter // document overtook the present document in the approval process. // As the definition of cri'' is dependent on the present document // (and conversely has essentially no dependency on the technical // content of draft-ietf-core-href beyond its mere existence), the // text (including IANA considerations) has been moved here. -19 is // intended for use at the CBOR WG meeting at IETF 124.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-19"/>
        </reference>
        <reference anchor="RFC8610" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
          <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="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </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="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
        <reference anchor="RFC9596">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) "typ" (type) Header Parameter</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This specification adds the equivalent of the JSON Object Signing and Encryption (JOSE) "typ" (type) header parameter to CBOR Object Signing and Encryption (COSE). This enables the benefits of explicit typing (as defined in RFC 8725, "JSON Web Token Best Current Practices") to be brought to COSE objects. The syntax of the COSE type header parameter value is the same as the existing COSE content type header parameter.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9596"/>
          <seriesInfo name="DOI" value="10.17487/RFC9596"/>
        </reference>
        <reference anchor="RFC9679">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Key Thumbprint</title>
            <author fullname="K. Isobe" initials="K." surname="Isobe"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="December" year="2024"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a CBOR Object Signing and Encryption (COSE) Key. It specifies which fields within the COSE Key structure are included in the cryptographic hash computation, the process for creating a canonical representation of these fields, and how to hash the resulting byte sequence. The resulting hash value, referred to as a "thumbprint", can be used to identify or select the corresponding key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9679"/>
          <seriesInfo name="DOI" value="10.17487/RFC9679"/>
        </reference>
        <reference anchor="RFC5116" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5116.xml">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <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="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="I-D.draft-ietf-oauth-selective-disclosure-jwt">
          <front>
            <title>Selective Disclosure for JWTs (SD-JWT)</title>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete</organization>
            </author>
            <author fullname="Kristina Yasuda" initials="K." surname="Yasuda">
              <organization>Keio University</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="29" month="May" year="2025"/>
            <abstract>
              <t>   This specification defines a mechanism for the selective disclosure
   of individual elements of a JSON data structure used as the payload
   of a JSON Web Signature (JWS).  The primary use case is the selective
   disclosure of JSON Web Token (JWT) claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-selective-disclosure-jwt-22"/>
        </reference>
        <reference anchor="I-D.draft-ietf-oauth-sd-jwt-vc">
          <front>
            <title>SD-JWT-based Verifiable Digital Credentials (SD-JWT VC)</title>
            <author fullname="Oliver Terbu" initials="O." surname="Terbu">
              <organization>MATTR</organization>
            </author>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete Inc.</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="26" month="February" year="2026"/>
            <abstract>
              <t>   This specification describes data formats as well as validation and
   processing rules to express Verifiable Digital Credentials with JSON
   payloads with and without selective disclosure based on the SD-JWT
   [RFC9901] format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-sd-jwt-vc-15"/>
        </reference>
        <reference anchor="I-D.draft-ietf-cbor-cde">
          <front>
            <title>CBOR Common Deterministic Encoding (CDE)</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="13" month="October" year="2025"/>
            <abstract>
              <t>   CBOR (STD 94, RFC 8949) defines the concept of "Deterministically
   Encoded CBOR" in its Section 4.2, determining one specific way to
   encode each particular CBOR value.  This definition is instantiated
   by "core requirements", providing some flexibility for application
   specific decisions; this makes it harder than necessary to offer
   Deterministic Encoding as a selectable feature of generic CBOR
   encoders.

   The present specification documents the Best Current Practice for
   CBOR _Common Deterministic Encoding_ (CDE), which can be shared by a
   large set of applications with potentially diverging detailed
   application requirements.

   The document also discusses the desire for partial implementations,
   which can be another reason for constraining CBOR encoders, and
   singles out the encoding constraint "definite-length-only" as a
   likely constraint to be used in application protocol and media type
   definitions.

   This specification updates RFC 8949 in that it provides
   clarifications and definitions of additional terms as well as more
   examples and explanatory text; it does not make technical changes to
   RFC 8949.


   // This revision -13 merges all active pull requests in preparation
   // for the 2025-cbor-17 interim on 2025-10-15.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cde-13"/>
        </reference>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="I-D.draft-ietf-keytrans-protocol">
          <front>
            <title>Key Transparency Protocol</title>
            <author fullname="Brendan McMillion" initials="B." surname="McMillion">
         </author>
            <author fullname="Felix Linker" initials="F." surname="Linker">
         </author>
            <date day="19" month="October" year="2025"/>
            <abstract>
              <t>   While there are several established protocols for end-to-end
   encryption, relatively little attention has been given to securely
   distributing the end-user public keys for such encryption.  As a
   result, these protocols are often still vulnerable to eavesdropping
   by active attackers.  Key Transparency is a protocol for distributing
   sensitive cryptographic information, such as public keys, in a way
   that reliably either prevents interference or detects that it
   occurred in a timely manner.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-keytrans-protocol-03"/>
        </reference>
        <reference anchor="t-Closeness" target="https://ieeexplore.ieee.org/document/4221659">
          <front>
            <title>t-Closeness: Privacy Beyond k-Anonymity and l-Diversity</title>
            <author>
              <organization/>
            </author>
            <date year="2007" month="June" day="04"/>
          </front>
        </reference>
        <reference anchor="W3CTAG-Credential-Abuse" target="https://w3ctag.github.io/prevent-credential-abuse/">
          <front>
            <title>Preventing the Abuse of Digital Credentials</title>
            <author>
              <organization>W3C Technical Architecture Group</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-httpbis-unprompted-auth">
          <front>
            <title>The Concealed HTTP Authentication Scheme</title>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="David Oliver" initials="D." surname="Oliver">
              <organization>Guardian Project</organization>
            </author>
            <author fullname="Jonathan Hoyland" initials="J." surname="Hoyland">
              <organization>Cloudflare Inc.</organization>
            </author>
            <date day="19" month="September" year="2024"/>
            <abstract>
              <t>   Most HTTP authentication schemes are probeable in the sense that it
   is possible for an unauthenticated client to probe whether an origin
   serves resources that require authentication.  It is possible for an
   origin to hide the fact that it requires authentication by not
   generating Unauthorized status codes, however that only works with
   non-cryptographic authentication schemes: cryptographic signatures
   require a fresh nonce to be signed.  Prior to this document, there
   was no existing way for the origin to share such a nonce without
   exposing the fact that it serves resources that require
   authentication.  This document defines a new non-probeable
   cryptographic authentication scheme.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-unprompted-auth-12"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7049">
          <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="October" year="2013"/>
            <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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7049"/>
          <seriesInfo name="DOI" value="10.17487/RFC7049"/>
        </reference>
        <reference anchor="RFC8259">
          <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="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="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
      </references>
    </references>
    <?line 2119?>

<section anchor="cddl">
      <name>Complete CDDL Schema</name>
      <figure anchor="cddl-schema">
        <name>A complete CDDL description of SD-CWT</name>
        <sourcecode type="cddl"><![CDATA[
sd-cwt-types = sd-cwt-issued / kbt-cwt / sd-cwt-preissued

sd-cwt-issued = #6.18([
   protected: bstr .cbor sd-protected,
   sd-unprotected,
   payload: bstr .cbor sd-payload,
   signature: bstr
])

sd-protected = {
   &(typ: 16) ^ => 293 / "application/sd-cwt",
   &(alg: 1) ^ => int,
   ? &(kid: 4) ^ => bstr,
   ? &(CWT_Claims: 15) ^ => issued_sd_cwt_map,
   ? &(sd_alg: 170) ^ => int,        ; -16 for sha-256
   ? &(sd_aead: 172) ^ => uint .size 2,
   * label => safe_value
}

sd-unprotected = {
   ? &(sd_claims: 17) ^ => salted-array,
   ? &(sd_aead_encrypted_claims: 171) ^ => aead-encrypted-array,
   * label => safe_value
}

sd-payload = {
    ; standard claims
      &(iss: 1) ^ => tstr, ; "https://issuer.example"
    ? &(sub: 2) ^ => tstr, ; "https://device.example"
    ? &(aud: 3) ^ => tstr, ; "https://verifier.example/app"
    ? &(exp: 4) ^ => secs, ; 1883000000
    ? &(nbf: 5) ^ => secs, ; 1683000000
    ? &(iat: 6) ^ => secs, ; 1683000000
    ? &(cti: 7) ^ => bstr,
      &(cnf: 8) ^ => safe_map, ; key confirmation
    ? &(vct: 11) ^ => bstr,
    ? &(cnonce: 39) ^ => bstr,
    ;
    ? redacted_claim_keys ^ => [ * bstr ],
    * label => issued_sd_cwt_value
}

kbt-cwt = #6.18([
   protected: bstr .cbor kbt-protected,
   kbt-unprotected,
   payload: bstr .cbor kbt-payload,
   signature: bstr
])

kbt-protected = {
   &(typ: 16) ^ => 294 / "application/kb+cwt",
   &(alg: 1) ^ => int,
   &(kcwt: 13) ^ => sd-cwt-issued,
   * label => safe_value
}

kbt-unprotected = {
   * label => safe_value
}

kbt-payload = {
      &(aud: 3) ^ => tstr,  ; "https://verifier.example/app"
      time-or-cti-claims,
    ? &(cnonce: 39) ^ => bstr,
    * label => safe_value
}

time-or-cti-claims = (
  ; Requires either time claims that include an iat OR a cti claim.
  ; Note that in CDDL, the // operator has very low precedence (see
  ; Section 2.2.2 of RFC 8610)
  ;
  ; It is possible to have both a cti and time claims, but
  ; time-or-cti-claims insures at least cti or iat is present
  ? &(exp: 4) ^ => secs,
  ? &(nbf: 5) ^ => secs,
    &(iat: 6) ^ => secs  //
    &(cti: 7) ^ => bstr
)
sd-cwt-preissued = #6.18([
   protected: bstr .cbor sd-protected,
   sd-unprotected,
   payload: bstr .cbor preissuance_map,
   signature: bstr
])

; CWT claim legal values only
safe_map = { * label => safe_value }

safe_value =
  int / tstr / bstr /
  [ * safe_value ] /
  safe_map /
  #6.<safe_tag>(safe_value) / #7.<safe_simple> / float


; legal values in issued SD-CWT
issued_sd_cwt_map = {
    ? redacted_claim_keys ^ => [ * bstr ],
    * label => issued_sd_cwt_value
}

issued_array_element = redacted_claim_element / issued_sd_cwt_value

issued_sd_cwt_value =
  int / tstr / bstr /
  [ * issued_array_element ] /
  issued_sd_cwt_map /
  #6.<safe_tag>(issued_sd_cwt_value) / #7.<safe_simple> / float


; legal values in claim set sent to Issuer
preissuance_label = label /
                    #6.<TO_BE_REDACTED_TAGNUM>(label) /
                    #6.<TO_BE_DECOY_TAGNUM>(uint .gt 0)

preissuance_map = { * preissuance_label => preissuance_value }

preissuance_value =
  int / tstr / bstr /
  [ * preissuance_value ] /
  preissuance_map /
  #6.<safe_tag>(preissuance_value) / #7.<safe_simple> / float

; CBOR tag number for wrapping to-be-redacted keys or elements
TO_BE_REDACTED_TAGNUM = 58
; CBOR tag number for indicating a decoy value is to be inserted here
TO_BE_DECOY_TAGNUM = 62

label = int / tstr .size (1..255)
safe_tag = uint .ne (TO_BE_REDACTED_TAGNUM /
                     TO_BE_DECOY_TAGNUM /
                     REDACTED_ELEMENT_TAGNUM)

; exclude reserved simple values (24 through 31) from Table 4 of
; RFC 8949, and redacted keys array
safe_simple =  0..23 / 32..58 / 60..255
secs = int / float53
float53 = -9007199254740992.0..9007199254740992.0 ; from 2^53 to 2^53

salted-array = [ +bstr-encoded-salted ]

bstr-encoded-salted = bstr .cbor salted-entry
salted-entry = salted-claim / salted-element / decoy
salted-claim = [
  bstr .size 16,     ; 128-bit salt
  any,               ; Claim Value
  (int / text)       ; Claim Key
]
salted-element = [
  bstr .size 16,     ; 128-bit salt
  any                ; Claim Value
]
decoy = [
  bstr .size 16      ; 128-bit salt
]

aead-encrypted-array = [ +aead-encrypted ]
aead-encrypted = [
  bstr .size 16,     ; 128-bit nonce
  bstr,              ; the encryption ciphertext output of a
                     ;   bstr-encoded-salted
  bstr               ; the corresponding authentication tag
]

; redacted_claim_keys is used as a map key. The corresponding value is
; an array of Blinded Claim Hashes whose corresponding unblinded map
; keys and values are in the same map.
redacted_claim_keys = #7.59  ; CBOR simple value 59

; CBOR tag for wrapping a redacted element in an array
REDACTED_ELEMENT_TAGNUM = 60

; redacted_claim_element is used in CDDL payloads that contain
; array elements that are meant to be redacted.
redacted_claim_element = #6.<REDACTED_ELEMENT_TAGNUM>( bstr )
]]></sourcecode>
      </figure>
    </section>
    <section anchor="comparison-to-sd-jwt">
      <name>Comparison to SD-JWT</name>
      <t>SD-CWT is modeled after SD-JWT, with adjustments to align with conventions in CBOR, COSE, and CWT.</t>
      <section anchor="media-types-1">
        <name>Media Types</name>
        <t>The COSE equivalent of <tt>application/sd-jwt</tt> is <tt>application/sd-cwt</tt>.</t>
        <t>The COSE equivalent of <tt>application/kb+jwt</tt> is <tt>application/kb+cwt</tt>.</t>
        <t>The COSE equivalent of the <tt>+sd-jwt</tt> structured suffix is <tt>+sd-cwt</tt>.</t>
      </section>
      <section anchor="redaction-claims">
        <name>Redaction Claims</name>
        <t>The COSE equivalent of <tt>_sd</tt> is a CBOR Simple Value (requested assignment 59). The following value is an array of the redacted Claim Keys.</t>
        <t>The COSE equivalent of <tt>...</tt> is a CBOR tag (requested assignment 60) of the digested salted claim.</t>
        <t>In SD-CWT, the order of the fields in a disclosure is salt, value, key.
In SD-JWT the order of fields in a disclosure is salt, key, value.
This choice ensures that the second element in the CBOR array is always the value, which makes parsing faster and more efficient in strongly-typed programming languages.</t>
        <t>In SD-CWT, all decoy digests are disclosed between the Issuer and the Holder.
In SD-JWT, no disclosure is sent for a decoy digest.</t>
      </section>
      <section anchor="issuance">
        <name>Issuance</name>
        <t>The issuance process for SD-CWT is similar to SD-JWT, with the exception that a confirmation claim is <bcp14>REQUIRED</bcp14>.</t>
      </section>
      <section anchor="presentation">
        <name>Presentation</name>
        <t>The presentation process for SD-CWT is similar to SD-JWT, except that a Key Binding Token is <bcp14>REQUIRED</bcp14>.
The Key Binding Token then includes the issued SD-CWT, including the Holder-selected disclosures.
Because the entire SD-CWT is included as a claim in the SD-KBT, the disclosures are covered by the Holder's signature in the SD-KBT, but not by the Issuer's signature in the SD-CWT.</t>
      </section>
      <section anchor="validation">
        <name>Validation</name>
        <t>The validation process for SD-CWT is similar to SD-JWT, however, JSON Objects are replaced with CBOR Maps, which can contain integer keys and CBOR Tags.</t>
      </section>
    </section>
    <section anchor="keys-used-in-the-examples">
      <name>Keys Used in the Examples</name>
      <section anchor="subject-holder">
        <name>Subject / Holder</name>
        <t>Holder COSE key pair in EDN format</t>
        <sourcecode type="cbor-diag"><![CDATA[
{
  /kty/  1 : 2, /EC/
  /alg/  3 : -7, /ES256/
  /crv/ -1 : 1, /P-256/
  /x/   -2 : h'8554eb275dcd6fbd1c7ac641aa2c90d9
               2022fd0d3024b5af18c7cc61ad527a2d',
  /y/   -3 : h'4dc7ae2c677e96d0cc82597655ce92d5
               503f54293d87875d1e79ce4770194343',
  /d/   -4 : h'5759a86e59bb3b002dde467da4b52f3d
               06e6c2cd439456cf0485b9b864294ce5'
}
]]></sourcecode>
        <t>The fields necessary for the COSE Key Thumbprint <xref target="RFC9679"/>
in EDN format:</t>
        <sourcecode type="cbor-diag"><![CDATA[
{
  /kty/  1 : 2, /EC/
  /crv/ -1 : 1, /P-256/
  /x/   -2 : h'8554eb275dcd6fbd1c7ac641aa2c90d9
               2022fd0d3024b5af18c7cc61ad527a2d',
  /y/   -3 : h'4dc7ae2c677e96d0cc82597655ce92d5
               503f54293d87875d1e79ce4770194343'
}
]]></sourcecode>
        <t>The same map in CBOR pretty printing</t>
        <sourcecode type="cbor-pretty"><![CDATA[
A4                                      # map(4)
   01                                   # unsigned(1)
   02                                   # unsigned(2)
   20                                   # negative(0)
   01                                   # unsigned(1)
   21                                   # negative(1)
   58 20                                # bytes(32)
      8554EB275DCD6FBD1C7AC641AA2C90D92022FD0D3024B5AF18C7CC61AD527A2D
   22                                   # negative(2)
   58 20                                # bytes(32)
      4DC7AE2C677E96D0CC82597655CE92D5503F54293D87875D1E79CE4770194343
]]></sourcecode>
        <t>The COSE thumbprint (in hexadecimal)--SHA256 hash of the thumbprint fields:</t>
        <artwork><![CDATA[
8343d73cdfcb81f2c7cd11a5f317be8eb34e4807ec8c9ceb282495cffdf037e0
]]></artwork>
        <t>Holder key pair in JWK format</t>
        <artwork><![CDATA[
{
  "kty": "EC",
  "alg": "ES256",
  "kid": "WRQ2RbY5RYJCIxfDQL9agl9fFSCYVu4Xocqb6zerc1M",
  "crv": "P-256",
  "x": "hVTrJ13Nb70cesZBqiyQ2SAi_Q0wJLWvGMfMYa1Sei0",
  "y": "TceuLGd-ltDMgll2Vc6S1VA_VCk9h4ddHnnOR3AZQ0M",
  "d": "V1moblm7OwAt3kZ9pLUvPQbmws1DlFbPBIW5uGQpTOU"
}
]]></artwork>
        <t>Input to Holder public JWK thumbprint (ignore line breaks)</t>
        <artwork><![CDATA[
{"crv":"P-256","kty":"EC","x":"hVTrJ13Nb70cesZBqiyQ2SAi_Q0wJLWvGMfMYa1S
ei0","y":"TceuLGd-ltDMgll2Vc6S1VA_VCk9h4ddHnnOR3AZQ0M"}
]]></artwork>
        <t>SHA-256 of the Holder public JWK input string (in hex)</t>
        <artwork><![CDATA[
59143645b6394582422317c340bf5a825f5f15209856ee17a1ca9beb37ab7353
]]></artwork>
        <t>Holder public JWK thumbprint</t>
        <artwork><![CDATA[
WRQ2RbY5RYJCIxfDQL9agl9fFSCYVu4Xocqb6zerc1M
]]></artwork>
        <t>Holder public key in PEM format</t>
        <artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhVTrJ13Nb70cesZBqiyQ2SAi/Q0w
JLWvGMfMYa1Sei1Nx64sZ36W0MyCWXZVzpLVUD9UKT2Hh10eec5HcBlDQw==
-----END PUBLIC KEY-----
]]></artwork>
        <t>Holder private key in PEM format</t>
        <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgV1moblm7OwAt3kZ9
pLUvPQbmws1DlFbPBIW5uGQpTOWhRANCAASFVOsnXc1vvRx6xkGqLJDZICL9DTAk
ta8Yx8xhrVJ6LU3HrixnfpbQzIJZdlXOktVQP1QpPYeHXR55zkdwGUND
-----END PRIVATE KEY-----
]]></artwork>
      </section>
      <section anchor="issuer">
        <name>Issuer</name>
        <t>Issuer COSE key pair in Extended Diagnostic Notation (EDN)</t>
        <sourcecode type="cbor-diag"><![CDATA[
{
  /kty/  1 : 2, /EC/
  /kid/  2 : "https://issuer.example/cwk3.cbor",
  /alg/  3 : -51, /ESP384/
  /crv/ -1 : 2, /P-384/
  /x/   -2 : h'c31798b0c7885fa3528fbf877e5b4c3a6dc67a5a5dc6b307
               b728c3725926f2abe5fb4964cd91e3948a5493f6ebb6cbbf',
  /y/   -3 : h'8f6c7ec761691cad374c4daa9387453f18058ece58eb0a8e
               84a055a31fb7f9214b27509522c159e764f8711e11609554',
  /d/   -4 : h'71c54d2221937ea612db1221f0d3ddf771c9381c4e3be41d
               5aa0a89d685f09cfef74c4bbf104783fd57e87ab227d074c'
}
]]></sourcecode>
        <t>The fields necessary for the COSE Key Thumbprint <xref target="RFC9679"/>
in EDN format:</t>
        <sourcecode type="cbor-diag"><![CDATA[
{
  /kty/  1 : 2, /EC/
  /crv/ -1 : 2, /P-384/
  /x/   -2 : h'c31798b0c7885fa3528fbf877e5b4c3a6dc67a5a5dc6b307
               b728c3725926f2abe5fb4964cd91e3948a5493f6ebb6cbbf',
  /y/   -3 : h'8f6c7ec761691cad374c4daa9387453f18058ece58eb0a8e
               84a055a31fb7f9214b27509522c159e764f8711e11609554'
}
]]></sourcecode>
        <t>The same map in CBOR pretty printing</t>
        <sourcecode type="cbor-pretty"><![CDATA[
A4                                      # map(5)
   01                                   # unsigned(1)
   02                                   # unsigned(2)
   20                                   # negative(0)
   02                                   # unsigned(2)
   21                                   # negative(1)
   58 30                                # bytes(48)
      C31798B0C7885FA3528FBF877E5B4C3A6DC67A5A5DC6B307
      B728C3725926F2ABE5FB4964CD91E3948A5493F6EBB6CBBF
   22                                   # negative(2)
   58 30                                # bytes(48)
      8F6C7EC761691CAD374C4DAA9387453F18058ECE58EB0A8E
      84A055A31FB7F9214B27509522C159E764F8711E11609554
]]></sourcecode>
        <t>The COSE thumbprint (in hexadecimal)--SHA256 hash of the thumbprint fields:</t>
        <artwork><![CDATA[
554550a611c9807b3462cfec4a690a1119bc43b571da1219782133f5fd6dbcb0
]]></artwork>
        <t>Issuer key pair in JWK format</t>
        <artwork><![CDATA[
{
"kty": "EC",
"alg": "ES384",
"kid": "https://issuer.example/cwk3.cbor",
"crv": "P-384",
"x":"wxeYsMeIX6NSj7-HfltMOm3GelpdxrMHtyjDclkm8qvl-0lkzZHjlIpUk_brtsu_",
"y":"j2x-x2FpHK03TE2qk4dFPxgFjs5Y6wqOhKBVox-3-SFLJ1CVIsFZ52T4cR4RYJVU",
"d":"ccVNIiGTfqYS2xIh8NPd93HJOBxOO-QdWqConWhfCc_vdMS78QR4P9V-h6sifQdM"
}
]]></artwork>
        <t>Input to Issuer JWK thumbprint (ignore line breaks)</t>
        <artwork><![CDATA[
{"crv":"P-384","kty":"EC","x":"wxeYsMeIX6NSj7-HfltMOm3GelpdxrMHtyjDclkm
8qvl-0lkzZHjlIpUk_brtsu_","y":"j2x-x2FpHK03TE2qk4dFPxgFjs5Y6wqOhKBVox-3
-SFLJ1CVIsFZ52T4cR4RYJVU"}
]]></artwork>
        <t>SHA-256 of the Issuer JWK input string (in hex)</t>
        <artwork><![CDATA[
18d4ddb7065d945357e3972dee76af4eddc7c285fb42efcfa900c6a4f8437850
]]></artwork>
        <t>Issuer JWK thumbprint</t>
        <artwork><![CDATA[
GNTdtwZdlFNX45ct7navTt3HwoX7Qu_PqQDGpPhDeFA
]]></artwork>
        <t>Issuer public key in PEM format</t>
        <artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEwxeYsMeIX6NSj7+HfltMOm3GelpdxrMH
tyjDclkm8qvl+0lkzZHjlIpUk/brtsu/j2x+x2FpHK03TE2qk4dFPxgFjs5Y6wqO
hKBVox+3+SFLJ1CVIsFZ52T4cR4RYJVU
-----END PUBLIC KEY-----
]]></artwork>
        <t>Issuer private key in PEM format</t>
        <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDBxxU0iIZN+phLbEiHw
0933cck4HE475B1aoKidaF8Jz+90xLvxBHg/1X6HqyJ9B0yhZANiAATDF5iwx4hf
o1KPv4d+W0w6bcZ6Wl3Gswe3KMNyWSbyq+X7SWTNkeOUilST9uu2y7+PbH7HYWkc
rTdMTaqTh0U/GAWOzljrCo6EoFWjH7f5IUsnUJUiwVnnZPhxHhFglVQ=
-----END PRIVATE KEY-----
]]></artwork>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to the RFC Editor: Please remove this section as well as references to <xref target="BCP205"/> before AUTH48.</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="BCP205"/>.
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 made 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="BCP205"/>, "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".</t>
      <section anchor="transmute-prototype">
        <name>Transmute Prototype</name>
        <t>Organization: Transmute Industries Inc</t>
        <t>Name: <eref target="https://github.com/transmute-industries/sd-cwt">github.com/transmute-industries/sd-cwt</eref></t>
        <t>Description: An open-source implementation of this specification.</t>
        <t>Maturity: Prototype</t>
        <t>Coverage: The current version ('main') implements functionality similar to that described in this specification, and will be revised, with breaking changes to support the generation of example data to support this specification.</t>
        <t>License: Apache-2.0</t>
        <t>Implementation Experience: No interop testing has been done yet. The code works as a proof of concept, but is not yet production ready.</t>
        <t>Contact: Orie Steele (orie.steele@tradeverifyd.com)</t>
      </section>
      <section anchor="rust-prototype">
        <name>Rust Prototype</name>
        <t>Organization: SimpleLogin</t>
        <t>Name: <eref target="https://github.com/beltram/esdicawt">github.com/beltram/esdicawt</eref></t>
        <t>Description: An open-source Rust implementation of this specification in Rust.</t>
        <t>Maturity: Prototype</t>
        <t>Coverage: The current version is close to the spec with the exception of <tt>redacted_claim_keys</tt> using a CBOR SimpleValue as label instead of a tagged key. Not all of the verifications have been implemented yet.</t>
        <t>License: Apache-2.0</t>
        <t>Implementation Experience: No interop testing has been done yet. The code works as a proof of concept, but is not yet production ready.</t>
        <t>Contact: Beltram Maldant (beltram.ietf.spice@pm.me)</t>
      </section>
      <section anchor="python-prototype">
        <name>Python Prototype</name>
        <t>Organization: Tradeverifyd</t>
        <t>Name: <eref target="https://github.com/tradeverifyd/sd-cwt">github.com/tradeverifyd/sd-cwt</eref></t>
        <t>Description: An open-source Python implementation of this specification.</t>
        <t>Maturity: Prototype</t>
        <t>Coverage: The current version does not implement decoys, but does verify the test vectors in draft-ietf-spice-sd-cwt-05.</t>
        <t>License: Apache-2.0</t>
        <t>Implementation Experience: No interop testing has been done yet. The code works as a proof of concept, but is not yet production ready.</t>
        <t>Contact: Orie Steele (orie.steele@tradeverifyd.com)</t>
      </section>
    </section>
    <section anchor="relationship-between-rats-architecture-and-verifiable-credentials">
      <name>Relationship between RATS Architecture and Verifiable Credentials</name>
      <t>This appendix describes the relationship between the Remote ATtestation procedureS (RATS) architecture defined in <xref target="RFC9334"/> and the three-party model used in verifiable credentials.</t>
      <section anchor="three-party-verifiable-credentials-model">
        <name>Three-Party Verifiable Credentials Model</name>
        <t>The verifiable credentials model involves three distinct parties:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Issuer</strong>: Creates and signs credentials containing claims about a subject</t>
          </li>
          <li>
            <t><strong>Holder</strong>: Controls the credential and presents it to verifiers (the holder is typically the subject of the credential)</t>
          </li>
          <li>
            <t><strong>Verifier</strong>: Receives and validates presented credentials to make authorization or access decisions. In this appendix we refer to this role as a <strong>Credential Verifier</strong></t>
          </li>
        </ul>
        <t>In SD-CWT, these roles are explicitly represented: the Issuer signs claims using an Assertion Key (<xref target="terminology"/>), the Holder controls the credential and creates presentations using a Confirmation Key, and the Verifier validates both the Issuer's signature over the credential and the Holder's signature over the presentation (key binding token).</t>
      </section>
      <section anchor="rats-architecture-roles">
        <name>RATS Architecture Roles</name>
        <t>The RATS architecture defines the following key roles:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Attester</strong>: Produces Evidence about its own trustworthiness and operational state</t>
          </li>
          <li>
            <t><strong>Endorser</strong>: Provides Endorsements about an Attester (typically a manufacturer)</t>
          </li>
          <li>
            <t><strong>Reference Value Provider</strong>: Supplies Reference Values used by Verifiers to evaluate Evidence</t>
          </li>
          <li>
            <t><strong>Verifier</strong>: Appraises Evidence and produces Attestation Results. In this appendix we refer to this role as a <strong>RATS Verifier</strong></t>
          </li>
          <li>
            <t><strong>Relying Party</strong>: Consumes Attestation Results to make authorization decisions</t>
          </li>
        </ul>
      </section>
      <section anchor="role-mappings-in-the-three-party-model">
        <name>Role Mappings in the Three-Party Model</name>
        <t>The mapping between RATS roles and verifiable credential roles can be understood as follows:</t>
        <section anchor="verifiable-credential-issuer-as-rats-endorser">
          <name>Verifiable Credential Issuer as RATS Endorser</name>
          <t>A verifiable credential Issuer functions as a RATS Endorser. The Endorser role in RATS produces Endorsements - secure statements about an Attester's capabilities, identity, or trustworthiness. Similarly, a credential Issuer produces signed credentials containing claims about a subject (the Holder). Both roles:</t>
          <ul spacing="normal">
            <li>
              <t>Make authoritative statements about another party's attributes or capabilities</t>
            </li>
            <li>
              <t>Use cryptographic signatures to ensure integrity and authenticity</t>
            </li>
            <li>
              <t>Are typically trusted third parties in their respective ecosystems</t>
            </li>
            <li>
              <t>Provide information that enables downstream authorization decisions</t>
            </li>
          </ul>
          <t>The credential issued by the Issuer serves the same function as an Endorsement in RATS: it is a signed assertion about the Holder's attributes that can be used by Credential Verifiers to make trust decisions.</t>
        </section>
        <section anchor="verifiable-credential-holder-as-rats-verifier">
          <name>Verifiable Credential Holder as RATS Verifier</name>
          <t>A verifiable credential Holder functions as a RATS Verifier. The RATS Verifier appraises Evidence and Endorsements and produces Attestation Results. In the credentials model, the Holder:</t>
          <ul spacing="normal">
            <li>
              <t>Receives credentials (analogous to Endorsements) from Issuers</t>
            </li>
            <li>
              <t>Evaluates which credentials to present and which claims to disclose</t>
            </li>
            <li>
              <t>Produces presentations (analogous to Attestation Results) that are sent to Credential Verifiers</t>
            </li>
            <li>
              <t>Uses their Confirmation Key to create key binding tokens that prove control</t>
            </li>
          </ul>
          <t>The Holder's presentation, which includes the Issuer's credential plus the Holder's signature over selected disclosures, functions as an Attestation Result - a processed, signed assertion derived from the original credential (Endorsement).</t>
        </section>
        <section anchor="verifiable-credential-verifier-as-rats-relying-party">
          <name>Verifiable Credential Verifier as RATS Relying Party</name>
          <t>A verifiable credential Credential Verifier functions as a RATS Relying Party. The Relying Party:</t>
          <ul spacing="normal">
            <li>
              <t>Consumes Attestation Results (credential presentations) to make authorization decisions</t>
            </li>
            <li>
              <t>Validates the cryptographic integrity of received assertions</t>
            </li>
            <li>
              <t>Makes access control or authorization decisions based on the claims received</t>
            </li>
            <li>
              <t>Does not directly interact with the original Endorsement source (the Issuer)</t>
            </li>
          </ul>
          <t>The Credential Verifier appraises the Holder's presentation in the same way a Relying Party appraises Attestation Results from a RATS Verifier.</t>
        </section>
        <section anchor="all-parties-can-be-attesters">
          <name>All Parties Can Be Attesters</name>
          <t>Importantly, any of these parties - Issuer, Holder, or Credential Verifier - can simultaneously function as a RATS Attester. The Attester role in RATS is about producing Evidence about one's own trustworthiness:</t>
          <ul spacing="normal">
            <li>
              <t>An <strong>Issuer</strong> may be an Attester when it needs to prove its own integrity, platform state, or authorization to issue certain credential types. For example, an Issuer might provide Evidence about its secure enclave or certified infrastructure when establishing trust with Holders or during credential issuance.</t>
            </li>
            <li>
              <t>A <strong>Holder</strong> may be an Attester when presenting credentials, particularly when the presentation itself requires proof of the Holder's platform integrity. For example, a Holder might provide Evidence about their device's secure boot state, firmware version, or trusted execution environment alongside their credential presentation.</t>
            </li>
            <li>
              <t>A <strong>Credential Verifier</strong> may be an Attester when it needs to prove its own trustworthiness to Holders or to upstream systems. For example, a Credential Verifier might provide Evidence about its data protection capabilities, compliance certifications, or secure processing environment before Holders agree to disclose sensitive claims.</t>
            </li>
          </ul>
          <t>The Attester role is orthogonal to the three primary roles - it represents the ability to produce evidence about one's own state, while the Issuer/Holder/Credential Verifier roles represent the flow of credentials and claims about subjects.</t>
        </section>
      </section>
      <section anchor="comparison-with-rats-interaction-models">
        <name>Comparison with RATS Interaction Models</name>
        <t>RATS defines two interaction models:</t>
        <t><strong>Passport Model</strong>: The Attester sends Evidence to a RATS Verifier, receives Attestation Results, and presents these results to Relying Parties. This maps to the three-party credentials model where the Holder obtains credentials from Issuers and presents them to Credential Verifiers.</t>
        <t><strong>Background-Check Model</strong>: The Attester sends Evidence to a Relying Party, which forwards it to a RATS Verifier. The RATS Verifier returns results directly to the Relying Party. This is a two-party model from the Attester's perspective and does not map well to the three-party credentials model, as it lacks Holder mediation and control over presentations.</t>
      </section>
      <section anchor="roles-that-dont-map-to-the-three-party-model">
        <name>Roles That Don't Map to the Three-Party Model</name>
        <t>The <strong>Reference Value Provider</strong> role from RATS does not have a direct equivalent in the three-party verifiable credentials model. This role supplies reference values (known-good measurements or configurations) that RATS Verifiers use to appraise Endorsements and Evidence. In credentials systems, equivalent functionality might be provided through:</t>
        <ul spacing="normal">
          <li>
            <t>Trust registries that list authorized Issuers</t>
          </li>
          <li>
            <t>Schema registries, or lists of valid claims that define credential formats</t>
          </li>
          <li>
            <t>Governance frameworks that specify validation rules</t>
          </li>
          <li>
            <t>Revocation registries</t>
          </li>
        </ul>
        <t>However, these are typically considered part of the trust infrastructure rather than a distinct party in the presentation protocol. The Reference Value Provider role is primarily relevant in scenarios where raw Evidence must be evaluated against known-good values - a pattern more common in the two-party background-check model than in the three-party credentials model where Issuers have already performed evaluation and produced credentials.</t>
      </section>
      <section anchor="application-to-sd-cwt">
        <name>Application to SD-CWT</name>
        <t>When applying RATS concepts to SD-CWT:</t>
        <ul spacing="normal">
          <li>
            <t>SD-CWT credentials function as Endorsements about the Holder (subject)</t>
          </li>
          <li>
            <t>The Holder's key binding token and selective disclosure act as the RATS Verifier's appraisal and production of Attestation Results</t>
          </li>
          <li>
            <t>The Credential Verifier consumes these presentations as a Relying Party consumes Attestation Results</t>
          </li>
          <li>
            <t>Any party can additionally provide Evidence about their own platform or operational state (act as an Attester)</t>
          </li>
          <li>
            <t>The three-party model with selective disclosure maps naturally to the RATS passport model</t>
          </li>
          <li>
            <t>Reference Value Provider functionality is addressed through trust infrastructure and out-of-band mechanisms rather than protocol-level roles</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sample-disclosure-matching-algorithm-for-verifier">
      <name>Sample Disclosure Matching Algorithm for Verifier</name>
      <t>The Verifier of an SD-CWT needs to decode disclosed claims match them with their redacted versions.
The following example algorithm describes a way to accomplish this.</t>
      <ol spacing="normal" type="1"><li>
          <t>The decoded <tt>sd_claims</tt> are converted to an intermediate data structure called a Digest To Disclosed Claim Map that is used to transform the Presented Disclosed Claims Set into a Validated Disclosed Claims Set.</t>
        </li>
        <li>
          <t>The Verifier <bcp14>MUST</bcp14> compute the hash of each Salted Disclosed Claim (<tt>salted</tt>), in order to match each disclosed value to each entry of the Presented Disclosed Claims Set.</t>
        </li>
      </ol>
      <ul empty="true">
        <li>
          <t>One possible concrete representation of the intermediate data structure for the Digest To Disclosed Claim Map is a CBOR map with the hash of the <tt>bstr-encoded-salted</tt> data structure (from the CDDL) as the map key and its value as the contents of the corresponding <tt>salted-entry</tt> data structure.</t>
        </li>
      </ul>
      <ol spacing="normal" type="1" start="3"><li>
          <t>The Verifier constructs an empty CBOR map called the Validated Disclosed Claims Set, and initializes it with all mandatory to disclose claims from the verified Presented Disclosed Claims Set.</t>
        </li>
        <li>
          <t>Next, the Verifier performs a depth-first traversal of the Presented Disclosed Claims Set and Validated Disclosed Claims Set, using the Digest To Disclosed Claim Map to insert claims into the Validated Disclosed Claims Set when they appear in the Presented Disclosed Claims Set.</t>
        </li>
        <li>
          <t>The Verifier repeats the fourth step if the previous iteration resulted in any new Presented Disclosed Claims.</t>
        </li>
        <li>
          <t>If there remain unused claims in the Digest To Disclosed Claim Map at the end of this procedure the SD-CWT <bcp14>MUST</bcp14> be considered invalid.
Likewise, if this algorithm results in any duplicate CBOR map keys, the entire SD-CWT <bcp14>MUST</bcp14> be considered invalid.</t>
        </li>
      </ol>
      <ul empty="true">
        <li>
          <t>Note: If there are remaining digests without corresponding disclosures, this means that either the holder intentionally did not disclose a claim, or that the digest is a decoy digest <xref target="decoys"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>Note: RFC Editor, please remove this entire section on publication.</t>
      <section anchor="draft-ietf-spice-sd-cwt-06">
        <name>draft-ietf-spice-sd-cwt-06</name>
        <ul spacing="normal">
          <li>
            <t>Refactored deterministic draft generation code (PR#152).</t>
          </li>
          <li>
            <t>Added pointer to a Python implementation (PR#155).</t>
          </li>
          <li>
            <t>Added decoy digests (PR#157).</t>
          </li>
          <li>
            <t>Addressed early IANA feedback about the escalation process (PR#160).</t>
          </li>
          <li>
            <t>Used the CoAP Content Type in the examples instead of the text strings "application/sd-cwt" and "application/kb+cwt" (PR#162).</t>
          </li>
          <li>
            <t>Added a section on specific CBOR encoding and data model considerations (PR#163).</t>
          </li>
          <li>
            <t>Swapped the order of Sections 5 and 6 (PR#167).</t>
          </li>
          <li>
            <t>Split the CDDL definitions for payload maps in Issued CWT and pre-issued (PR#168).</t>
          </li>
          <li>
            <t>Used the IANA early assigned values in the draft (PR#169).</t>
          </li>
          <li>
            <t>Defined the To Be Decoy tag (PR#171).</t>
          </li>
          <li>
            <t>Made use of the CoAP Content Type a <bcp14>SHOULD</bcp14> (PR#172).</t>
          </li>
          <li>
            <t>Made the draft generation code agnostic to hash algorithm (PR#173)</t>
          </li>
          <li>
            <t>Added time claim verification rules and security considerations (PR#175)</t>
          </li>
          <li>
            <t>Instead of an empty array, <tt>sd_claims</tt> is now omitted if empty (PR#176)</t>
          </li>
          <li>
            <t>Update the COSE header values to use their newly assigned values (also PR#176)</t>
          </li>
          <li>
            <t>Fix some kramdown-xml bracket errors (PR#177)</t>
          </li>
          <li>
            <t>Add IANA Considerations for To Be Decoy tag (PR#180)</t>
          </li>
          <li>
            <t>Clarify that remaining redacted claims are removed in validated claim set (PR#181)</t>
          </li>
          <li>
            <t>Restrict floating point dates to -2^53 to 2^53 (PR#182)</t>
          </li>
          <li>
            <t>Rename CDDL production using a standard prelude name (PR#183)</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-spice-sd-cwt-05">
        <name>draft-ietf-spice-sd-cwt-05</name>
        <ul spacing="normal">
          <li>
            <t>Added this change log (PR#150)</t>
          </li>
          <li>
            <t>Moved non-normative validation algorithm to an appendix (PR#149)</t>
          </li>
          <li>
            <t>Added appendix describing mapping to RATS concepts (#147)</t>
          </li>
          <li>
            <t>Provided guidance on choice of AEAD algorithm (#148)</t>
          </li>
          <li>
            <t>Fixed algorithm in COSE key examples (#145)</t>
          </li>
          <li>
            <t>Updated contact information (PR#142, PR #150)</t>
          </li>
          <li>
            <t>Removed SPICE from the title of the document (PR#139)</t>
          </li>
          <li>
            <t>Made clear extent to which verifiers cannot process unknown claims (PR#138)</t>
          </li>
          <li>
            <t>Sorted CBOR map keys in examples to facilitate use as test vectors (PR#135)</t>
          </li>
          <li>
            <t>Consistently use term "tag" in context of AEAD algorithms (PR#134)</t>
          </li>
          <li>
            <t>Improved AASVG diagram in Terminology section (PR#129)</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-spice-sd-cwt-04">
        <name>draft-ietf-spice-sd-cwt-04</name>
        <ul spacing="normal">
          <li>
            <t>Place value before claim name in disclosures</t>
          </li>
          <li>
            <t>Use CBOR simple value 59 for the redacted_key_claims</t>
          </li>
          <li>
            <t>Greatly improved text around AEAD encrypted disclosures</t>
          </li>
          <li>
            <t>Applied clarifications and corrections suggested by Mike Jones.</t>
          </li>
          <li>
            <t>Do not update CWT <xref target="RFC8392"/>.</t>
          </li>
          <li>
            <t>Use <tt>application/sd-cwt</tt> media type and define <tt>+sd-cwt</tt> structured suffix.</t>
          </li>
          <li>
            <t>Made SHA-256 be the default <tt>sd_alg</tt> value.</t>
          </li>
          <li>
            <t>Created Verifiable Credential Type Identifiers registry.</t>
          </li>
          <li>
            <t>Corrected places where Claim Name was used when what was meant was Claim Key.</t>
          </li>
          <li>
            <t>Defined the To Be Redacted CBOR tag</t>
          </li>
          <li>
            <t>In the SD-KBT, <tt>iss</tt> and <tt>sub</tt> are now forbidden</t>
          </li>
          <li>
            <t>Clarified text about <tt>aud</tt></t>
          </li>
          <li>
            <t>Described Trust Lists</t>
          </li>
          <li>
            <t>EDN Examples are now in deterministic order</t>
          </li>
          <li>
            <t>Expressed some validation steps as a list</t>
          </li>
          <li>
            <t>Clarified handling of nested claims</t>
          </li>
          <li>
            <t>Fixed the handling of the to be registered items in the CDDL; made CDDL self consistent</t>
          </li>
          <li>
            <t>Fixed some references</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-spice-sd-cwt-03">
        <name>draft-ietf-spice-sd-cwt-03</name>
        <ul spacing="normal">
          <li>
            <t>remove bstr encoding from sd_claims array (but not the individual disclosures)</t>
          </li>
          <li>
            <t>clarify which claims are optional/mandatory</t>
          </li>
          <li>
            <t>correct that an SD-CWT may have zero redacted claims</t>
          </li>
          <li>
            <t>improve the walkthrough of computing a disclosure</t>
          </li>
          <li>
            <t>clarify that duplicate map keys are not allowed, and how tagged keys are represented.</t>
          </li>
          <li>
            <t>added security considerations section (#42) and text about privacy and linkability risks (#43)</t>
          </li>
          <li>
            <t>register SD-CWT and SD-KBT as content formats in CoAP registry (#39)</t>
          </li>
          <li>
            <t>updated media types registrations to have more useful contacts (#44)</t>
          </li>
          <li>
            <t>build most of the values (signatures/salts/hashes/dates) in the examples automatically using a script that implements SD-CWT</t>
          </li>
          <li>
            <t>regenerate all examples with correct signatures</t>
          </li>
          <li>
            <t>add nested example</t>
          </li>
          <li>
            <t>add optional encrypted disclosures</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-spice-sd-cwt-02">
        <name>draft-ietf-spice-sd-cwt-02</name>
        <ul spacing="normal">
          <li>
            <t>KBT now includes the entire SD-CWT in the Confirmation Key CWT (<tt>kcwt</tt>) existing COSE protected header. Has algorithm now specified in new <tt>sd_alg</tt> COSE protected header. No more <tt>sd_hash</tt> claim. (PR #34, 32)</t>
          </li>
          <li>
            <t>Introduced tags for redacted and to-be-redacted claim keys and elements. (PR#31, 28)</t>
          </li>
          <li>
            <t>Updated example to be a generic inspection certificate. (PR#33)</t>
          </li>
          <li>
            <t>Add section saying SD-CWT updates the CWT spec (RFC8392). (PR#29)</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-spice-sd-cwt-01">
        <name>draft-ietf-spice-sd-cwt-01</name>
        <ul spacing="normal">
          <li>
            <t>Added Overview section</t>
          </li>
          <li>
            <t>Rewritten the main normative section</t>
          </li>
          <li>
            <t>Made redacted_claim_keys use an unlikely to collide claim key integer</t>
          </li>
          <li>
            <t>Make cnonce optional (it now says <bcp14>SHOULD</bcp14>)</t>
          </li>
          <li>
            <t>Made most standard claims optional.</t>
          </li>
          <li>
            <t>Consistently avoid use of bare term "key" - to make crypto keys and map keys clear</t>
          </li>
          <li>
            <t>Make clear issued SD-CWT can contain zero or more redactions; presented SD-CWT can disclose zero, some, or all redacted claims.</t>
          </li>
          <li>
            <t>Clarified use of sd_hash for issuer to holder case.</t>
          </li>
          <li>
            <t>Lots of editorial cleanup</t>
          </li>
          <li>
            <t>Added Rohan as an author and Brian Campbell to Acknowledgements</t>
          </li>
          <li>
            <t>Updated implementation status section to be BCP205-compatible</t>
          </li>
          <li>
            <t>Updated draft metadata</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-spice-sd-cwt-00">
        <name>draft-ietf-spice-sd-cwt-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial working group version based on draft-prorock-spice-cose-sd-cwt-01.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank those that have worked on similar items for
providing selective disclosure mechanisms in JSON, especially:
Brent Zundel, Roy Williams, Tobias Looker, Kristina Yasuda, Daniel Fett,
Brian Campbell, Oliver Terbu, and Michael B. Jones.</t>
      <t>The authors would like to thank the following individuals for their contributions to this specification:
Michael B. Jones.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="M." surname="Jones" fullname="Michael B. Jones">
        <organization>Self-Issued Consulting</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>michael_b_jones@hotmail.com</email>
          <uri>https://self-issued.info/</uri>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
03ZQXib2nyUZw5npCwKVZMx3qDCPGGDOpYABQinDYJNAEfowYs9sGl5NHul0
nCgMrmbu7S1dZ7rh1cK9ovAlQ2ommiPjQhr4LRSdtBbbRqFnadkVEOAkJaYg
VFeAZi0xmrVL5CeoKpoLSN3sG6g1WBIHgsV2pBAjkYGTGLD9EXTcVeg3LOJ0
cHKxd0qoGK+QGizGhFEMIwYo1otbwZWrmhGaW+HocaheomKsZvURShZXgQGc
VGfuowvGZVAs+CInHaZhY7oGmk/AqNhx89U1D6/YaSA/xSGzAuxJSENp2DQB
92ZerlQheIlEmIYm8NKaF7S9/qAxpXg4Yoyplw/GtQpBend2dGgfCaWVoLpN
XE/h19HMO3DvdCY/Xq3JgqvzJbWboZOLCX+EcqQvohgxTDgxGYXkTPDNNkVM
loBMsynEA+w7l6CObWSw48DbLFrKzZv546ZtV+wt2ynYm4Mebp423ckVfFiF
D4tN/PTMqTfoC292v2kX8ekKfH5cVJ8/IE9r0YHPr39o1eu1YOggE7nfGA39
itd0vUat4rqO1y777bRH6ZQdZ+SX/WrZqQ3r7qjS8pqe16i4ft1pug6Tu24+
Ug1VqqHmQ5GB4zWazaDd8Mue13Lq7WajXveCtuPX0zXUy9VRvea0q36r2YJ2
VYJm2wtqzWa50q5Va0zyvelTDTWqod6st91WI6i3h8PqsFx2fD+oNZq+W0Oa
36qfrqHcCBqe4/m1artWb3ijcq1VH7aHSL/ernlB/QfhGeRsHDb3GtBbX1zS
2OG8Pb+G3fjdDPcxEhnaaLa/fbMSw5lJM5o9nv+PDpspVOWRK18Nzex8jvxY
IEXC/NLC4m+sTi1za7Py5xUWm6vhEbZNdMbPv7AIGY0xV+G3nO97y6G3nPKL
3goDxAu/D3LlP9FC52Vv6br4rXrrBY18RRntUa7KvYI/qGmDLmhav9dvbHf7
lV6z0wNN63ScXrvcb6NmbffLfdSsbr2zXWn1mr1eo9Lpg2Z1nD41+GUi1Q12
/kyDa31o4cDpgeIO2o1+uddTitsbtJ1+HRR1mxS1T4rarwya7d4gVtRYS2mG
z+PZnRsjKPqDi9FPt+4kXyye7XZgdjLyjuLwjJ9n08Ez32pB0X6z6vkjb9iq
jByYf36l4tZH1UpzGLSCYbUW1FrlZuC1PJg4Q6fl1Np1bzTyR+VqMyhzs2Td
MJeMdx/fm0sGGZYNMCwbW/bGoEd3dhuwRNCvuDTwJzdjHz/5eHrinA4/1U8/
vevtPYz6J/tt92rSHm2f9T59WNR+nnpfh43fgplXOeD3wDjhe2SV+JMH/P36
w/nsXaV6OGyWwU5+7n4dP544Z53xl5Py8t3+x/udg9HBJ7dyFozL/BY179wL
Fvs7fnEy7x9cTSbOB69xVvnQ+fKhd9O+rvn+bhgenVY7n0/KUju1+UPldjqc
3DaPlp159eZz+27/4v74ZHi7jCr9yfbwuLv3sb7YObk7P7rYUEZnL8QjEo0+
rpiiUHaJAb4K0X+ejEMMmgvcmygvQuWOq36zfEm82P8Xd9+i/mPnv6vv0gnQ
Nqw+hc1qdGVMvRT8C9FW6UC9XalVG7X6sIGLHuiW44DiedVaeTiquzBDRvVR
pe6U2616IwgqTbfiue0haGXTHTar9WpC/TKlx/V8h0JlFSnwuceDg4ROU3pC
d7Czd2gfX3T393r2+8En+tA62L5ZDpafdt9PP+/99mu51zn5tCc/9zsnXv/k
qjNYNzybMDxWUj0rhw+NWvS52vhYPnjsffz584ff7vY/XPTbF+/Pnd3rSjkI
vPqu1530T5Zv33LDBof9lWYl+obgyfPgJZ073fvQOR8Yvdvb2e1cDToH3YOd
7uPXnbODWht+3+n15OflYLe7U166y71u5+TkKj03rPWT4+P1aeew1+mcbX84
isKfvcr9/elD4+Fm5+v+u/7nvd5+u3/eubHmbuvTQ+vhevbhXWP/oro7Gz+E
o7vhyW977z77k5+PbuYfTo4rJ3fHn4Ldn0/r9d9u/OXOxWHfEE26UyQbzVyk
CAsynOEHSRntg8MUTomk83Aqe7Ec+Fb5lztVYO/gQ2c9mfumt7yp0nE5mRrT
q65XyK0+rrZqKQfNIQdNfW46aB7MrnZrWPaarVZ95FbrTms0HLXAmaoPa17V
bfjgWbl1Fxy4xrBabqbdqWHTaXnVJqxcTmPkuMOgPhrW2o2a57crAUzhlluv
taujRjAcNrzhcLTqwLVGDQ9Wk2aj0mjDZParzZpX8123XW01a/UquIDlegu8
WvhnWHZbQboFrZpbrtfdamU0bI7aTqWG7ma5XXccr1JvB81GDbpTqQSVSgM+
rddW/fJmxavXfMdxKm1YwdxGxfGHFfhtBH6o74+a8D00puLVguowqFVW/PS6
60LD2n4DJFhue6NghF2AzlbKtWarOvLrzaAF9slxmn4Zvvq38dv/Ty0MtfhX
+v31/xS//4/V9Uf9/uqL3ehaS7nRPdLUbrmHmrrdQU3d7m6Dpg7q3Vqv2mn0
wcPu1DuwL2h0Y03tgoL2REG3nU53UN/uooL2+u3KABW0gwq63Rh0u41et7v9
p7YHf6Rfre1Grznosf73On3Q/16t3+mI/m+T/g96A/inW+60Buq1WgfUvlOt
bHeb26j2XaX2PVD7Aaj9Nqr9QKn9P2kXASXDBgZMKZhO2CzApqHhgGH0am6j
XXYrlUp76NWqw3qz4rsVsLvNllOpwsZ85Df8oTeUXcSe5n17YheR2EPEOwiw
avi77B9esJbGWwZ5FR3m5UPwKToI9n5uHJ792izujibzg6Pb6k4wufMfZge7
88df+97k5rb19X5SLE9ufvu8++tk7+7i5stwNo8WX7Ac9KJ/dR6KD8723e77
cvV84Hy9qfnbxw9X279G9U+N5dej6/fdD9OHYrV4tr3/rtL7sBdtf6475zXv
tAYe6ocLLAc6suF5Hw73xjvno6+fzpyHvevW4bHfru6+O+o+HB0VT/yPX3vT
8OP1qOd9ufcPzpqtk9PacftD8boRjUcn/sHqRkNk/Ad2GCSm9A7jpQKz1kvs
uwRmrZVY9mbE6O4Tu5BKy4etDbjhjboP25AqLODVdtPxA1g33FEt8H3YFjst
XNScYOSN3Ha57DVcWFJq1WarnlTfrO3HzuG5P1+CY7p9+HOt7s2boXt/Pq/u
Lqc/N08WX46/nvR37o6v+8F2J1HWH99+7H5aDjqJ7cf2+9pg0Ont9T/B1iM5
bm9Wxs0yNf2NOW6bNG6bMGBvnhowi0fsTfXNmgF7Zo+iBPCn9igO71E6iT1K
92zR7XY64+7eTgDPDOGzbrfffXi4KI/3Ph++ubveHw7Gu0ur3K5WPe+mtjuo
Nevdijt9P/bd7da73960yw/79w/d3avNys+N3a+P79rd8uP1587huNM572/X
x8uH2vXImlbeH9/X/Dcfy8vG0Pvc+Dip7kTLoPr+4PDx49nw8eubn5tnH88P
b4Kji/Hk7Ly9WDiPzTfHw93m7qePN541O/cPzt2v59fli82dzsej3ya/znrT
xmC6/fHX3eaovncRhRfvLsbLD2H4+fj6Yfd6+2ry4eTtc5scRCZPwJ/bZ8Rb
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

-->

</rfc>
