<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-spice-sd-cwt-01" category="std" consensus="true" submissionType="IETF" updates="RFC8392" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title>SPICE SD-CWT</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-spice-sd-cwt-01"/>
    <author fullname="Michael Prorock">
      <organization>mesur.io</organization>
      <address>
        <email>mprorock@mesur.io</email>
      </address>
    </author>
    <author fullname="Orie Steele">
      <organization>Transmute</organization>
      <address>
        <email>orie@transmute.industries</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>Rohan Mahy Consulting Services</organization>
      <address>
        <email>rohan.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="20"/>
    <area>Security</area>
    <workgroup>Secure Patterns for Internet CrEdentials</workgroup>
    <keyword>cose</keyword>
    <keyword>cwt</keyword>
    <keyword>selective disclosure</keyword>
    <abstract>
      <?line 65?>

<t>This document describes a data minimization technique for use with CBOR Web Token (CWT).
The approach is based on Selective Disclosure JSON Web Token (SD-JWT), with changes to align with CBOR Object Signing and Encryption (COSE).</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 71?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document updates the CBOR Web Token (CWT) specification <xref target="RFC8392"/>, enabling the holder of a CWT to disclose or redact special claims marked disclosable by the issuer of a CWT.
The approach is modeled after 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"/>.
This specification enables Holders of CWT based credentials to prove the integrity and authenticity of selected attributes asserted by an Issuer about a Subject to a Verifier.
Although techniques such as one time use and batch issuance can improve the confidentiality and security characteristics of CWT based credential protocols, CWTs remain traceable.
Selective Disclosure CBOR Web Tokens (SD-CWTs) are CWTs and can be deployed in protocols that are already using CWTs, even if they contain no optional to disclose claims.
Credential types are distinguished by their attributes, for example a license to operate a vehicle and a license to import a product will contain different attributes.
The specification of credential types is out of scope for this document, and the examples used in this document are informative.
SD-CWT operates on CWT Claims Sets as described in <xref target="RFC8392"/>.
CWT Claims Sets contain Claim Keys and Claim Values.
SD-CWT enables Issuers to mark certain Claim Keys or Claim Values mandatory or optional for a holder of a CWT to disclose.
A verifier who does not understand optional to disclose Claims in an SD-CWT can still process the mandatory to disclose attributes.
Claim Keys and Claim Values which are not understood remain ignored as described in <xref section="3" sectionFormat="of" target="RFC8392"/>.</t>
      <section anchor="high-level-flow">
        <name>High level flow</name>
        <t>Figure 1: High level SD-CWT Issuance and Presentation Flow</t>
        <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 280,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="344" y="84">Key</text>
                <text x="376" y="84">Gen</text>
                <text x="120" y="100">Request</text>
                <text x="180" y="100">SD-CWT</text>
                <text x="424" y="148">Request</text>
                <text x="480" y="148">Nonce</text>
                <text x="120" y="164">Receive</text>
                <text x="180" y="164">SD-CWT</text>
                <text x="424" y="212">Receive</text>
                <text x="480" y="212">Nonce</text>
                <text x="356" y="244">Redact</text>
                <text x="412" y="244">Claims</text>
                <text x="376" y="308">Demonstrate</text>
                <text x="368" y="324">Posession</text>
                <text x="424" y="356">Present</text>
                <text x="484" y="356">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>
        <t>This diagram captures the essential details necessary to issue and present an SD-CWT.
The parameters necessary to support these processes can be obtained using transports or protocols which are out of scope for this specification.
However the following guidance is generally recommended, regardless of protocol or transport.</t>
        <ol spacing="normal" type="1"><li>
            <t>The issuer <bcp14>SHOULD</bcp14> confirm the holder controls all confirmation material before issuing credentials using the <tt>cnf</tt> claim.</t>
          </li>
          <li>
            <t>To protect against replay attacks, the verifier <bcp14>SHOULD</bcp14> provide a nonce, and reject requests that do not include an acceptable an nonce (cnonce). This guidance can be ignored in cases where replay attacks are mitigated at another layer.</t>
          </li>
        </ol>
      </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>This document uses terms from CWT <xref target="RFC8392"/>, and COSE <xref target="RFC9052"/>
        <xref target="RFC9053"/>.</t>
      <t>The terms Claim Name, Claim Key and Claim Value are defined in <xref target="RFC8392"/>.</t>
      <t>This document 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 to an SD-CWT.</t>
        </dd>
        <dt>Issuer:</dt>
        <dd>
          <t>An entity that produces a Selective Disclosure CBOR Web Token.</t>
        </dd>
        <dt>Holder:</dt>
        <dd>
          <t>An entity that presents a Selective Disclosure CBOR Web Token which includes a Selective Disclosure Key Binding Token.</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 (all claims are marked mandatory to disclose 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>Digested Salted Disclosed Claim / 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 which 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>
      <section anchor="a-cwt-without-selective-disclosure">
        <name>A CWT without Selective Disclosure</name>
        <t>Below is the payload of a standard CWT without selective disclosure.
It consists of standard CWT claims, the holder confirmation key, and five specific custom claims. The payload is shown below in CBOR Extended Diagnostic
Notation (EDN) <xref target="I-D.ietf-cbor-edn-literals"/>. Note that some of the CWT claim map keys shown in the examples have been invented for this example and do not have registered integer keys.</t>
        <sourcecode type="cbor-diag"><![CDATA[
{
    / iss / 1  : "https://issuer.example",
    / sub / 2  : "WRQ2RbY5RYJCIxfDQL9agl9fFSCYVu4Xocqb6zerc1M",
    / 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 : {
        / alg: ES256 /  3: -7,
        / kty: EC2   /  1: 2,
        / crv: P-256 / -1: 1,
        / x / -2: b64'hVTrJ13Nb70cesZBqiyQ2SAi_Q0wJLWvGMfMYa1Sei0',
        / y / -3: b64'TceuLGd-ltDMgll2Vc6S1VA_VCk9h4ddHnnOR3AZQ0M'
      }
    },
    / name /  170 : "Alice Smith",
    / age_at_least_18 /  500 : true,
    / age_at_least_21 /  501 : false,
    / swversion / 271 : [
      "3.5.5",
      "4.1.7"
    ],
    / address /  187 : {
        "country"   : "us",          / United States /
        "region"    : "ca",          / California /
        "locality"  : "San Francisco",
        "postal_code" : "94188"
    }
}
]]></sourcecode>
        <t>The custom claims consist of the Holder's name (Alice Smith), that she is at least 18 years old but not yet 21, that her client supports software versions 3.5.5 and 4.1.7, and her address is in San Francisco.</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 (custom) claims to different verifiers.
(For brevity, we will leave out the name and locality claims.) Note that some of the claims may not be selectively disclosable
(Alice's country and her oldest supported software version in this example).
First she requests an SD-CWT from her issuer. The issuer generates an SD-CWT as follows:</t>
        <sourcecode type="cbor-diag"><![CDATA[
/ cose-sign1 / 18([
  / protected / << {
    / alg / 1  : -35, / ES384 /
    / typ / 16 : "application/sd+cwt",
    / kid / 4  : 'https://issuer.example/cwk3.cbor'
  } >>,
  / unprotected / {
    / sd_claims / 17 : / these are all the disclosures /
    <<[
        <<[
            /salt/   h'8d5c15fa86265d8ff77a0e92720ca837',
            /claim/  500,  / age_at_least_18 /
            /value/  true
        ]>>,
        <<[
            /salt/   h'd84c364fad31e0075213141ca7d1408f',
            /claim/  501,  / age_at_least_21 /
            /value/  false
        ]>>,
        <<[
            /salt/   h'30eef86edeaa197df7bd3d17dd89cd87',
            /claim/  "region",
            /value/  "ca" /California/
        ]>>,
        <<[
            /salt/   h'284538c4a1881fac49b2edc550c1913e',
            /claim/  "postal_code",
            /value/  "94188"
        ]>>,
        <<[
            /salt/   h'86c84b9c3614ba27073c7e5a475a2a13',
            /value/  "4.1.7"
        ]>>
    ]>>
  },
  / payload / << {
    / iss / 1  : "https://issuer.example",
    / sub / 2  : "WRQ2RbY5RYJCIxfDQL9agl9fFSCYVu4Xocqb6zerc1M",
    / 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 : {
        / alg: ES256 /  3: -7,
        / kty: EC2   /  1: 2,
        / crv: P-256 / -1: 1,
        / x / -2: h'hVTrJ13Nb70cesZBqiyQ2SAi_Q0wJLWvGMfMYa1Sei0',
        / y / -3: h'TceuLGd-ltDMgll2Vc6S1VA_VCk9h4ddHnnOR3AZQ0M'
      }
    },
    / sd_alg /  12       : -16, / SHA-256 /
    / redacted_claim_keys / 65556 : [
        / redacted age_at_least_18 /
        h'7e6e350907d0ba3aa7ae114f8da5b360' +
        h'601c0bb7995cd40049b98e4f58fb6ec0',
        / redacted age_at_least_21 /
        h'1e7275bcda9bc183079cd4515c5c0282' +
        h'a2a0e9105b660933e2e68f9a3f40974b'
    ],
    / swversion / 271 : [
      "3.5.5",
      / redacted version "4.1.7" /
      {
        / redacted_claim_element / 65555:
        h'a0f74264a8c97655c958aff3687f1390' +
        h'ed0ab6f64cd78ba43c3fefee0de7b835'
      }
    ],
    "address": {
        "country" : "us",            / United States /
        / redacted_claim_keys / 65556 : [
            / redacted region /
            h'c47e3b047c1cd6d9d1e1e01514bc2ec9' +
            h'ed010ac9ae1c93403ec72572bb1e00e7',
            / redacted postal_code /
            h'0b616e522a05d8d134a834979710120d' +
            h'41ac1522b056d5f9509cf7e850047302'
        ]
    }
  } >>,
  / signature / h'3337af2e66959614' /TODO: fix /
])
]]></sourcecode>
        <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> key.
For example, the <tt>age_at_least_18</tt> claim is a Salted Disclosed Claim, consisting of a per-disclosure random salt, the claim name, and claim value.</t>
        <sourcecode type="cbor-diag"><![CDATA[
<<[
    /salt/   h'8d5c15fa86265d8ff77a0e92720ca837',
    /claim/  500,  / age_at_least_18 /
    /value/  true
]>>,
]]></sourcecode>
        <t>The SHA-256 hash (the hash algorithm identified in the <tt>sd_hash</tt> field in the payload) of that bytes string is the Digested Salted Disclosed Claim (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 (ex: for a redacted claim element of <tt>swversion</tt>).</t>
        <artwork><![CDATA[
7e6e350907d0ba3aa7ae114f8da5b360601c0bb7995cd40049b98e4f58fb6ec0
]]></artwork>
      </section>
    </section>
    <section anchor="holder-prepares-an-sd-cwt-for-a-verifier">
      <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> in the unprotected header.</t>
      <t>For example, Alice decides to disclosure to a verifier the <tt>age_at_least_18</tt> claim (true), the <tt>region</tt> claim (California), and the other element in the <tt>swversion</tt> array (4.1.7).</t>
      <sourcecode type="cbor-diag"><![CDATA[
/ sd_claims / 17 : /just the disclosures chosen by the Holder/
<<[
        <<[
                /salt/   h'8d5c15fa86265d8ff77a0e92720ca837',
                /claim/  500,  / age_at_least_18 /
                /value/  true
        ]>>,
        <<[
                /salt/   h'30eef86edeaa197df7bd3d17dd89cd87',
                /claim/  "region",
                /value/  "ca" /California/
        ]>>,
        <<[
                /salt/   h'86c84b9c3614ba27073c7e5a475a2a13',
                /value/  "4.1.7"
        ]>>
]>>
]]></sourcecode>
      <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 draft-ietf-httpbis-unprompted-auth-12.</t>
      <t>Finally, the Holder generates a Selective Disclosure Key Binding Token (SD-KBT) that ties together any disclosures, the Verifier nonce and target audience, and proof of possession of the Holder's private key.</t>
      <artwork><![CDATA[
/ sd_kbt    / 18 : << 18([
  / protected / << {
          / alg / 1 : -7 / ES256 /,
          / typ / 16 : "application/kb+cwt"
  } >>,
  / unprotected / {},
  / payload / << {
        / cnonce / 39    : h'8c0f5f523b95bea44a9a48c649240803',
        / aud     / 3    : "https://verifier.example/app",
        / iat     / 6    : 1725283443, / 2024-09-02T06:24:03Z /
        / sd_alg  / 12 : -16,  /SHA-256/
        / sd_hash / 11 :
        /hash of sd_claims in target SD-CWT using hash in sd_alg/
    h'4287237578266d07a3a2909fab6579ce9b4ab8f61b67afa00f6724b9b952557b'
  } >>,
  / signature / h'1237af2e678945'  / TODO: fix /
]) >>
]]></artwork>
      <t>Finally, the unprotected part of the SD-CWT received from the Holder is replaced with the <tt>sd_claims</tt> and <tt>sd_kbt</tt> fields generated by the Holder.</t>
      <t>Together the digests in protected parts of the issued SD-CWT, and the disclosures hashed in the SW-KBT are used by the Verifier to confirm the disclosed claims.</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 and COSE. An SD-CWT <bcp14>MUST</bcp14> include the protected header parameter <tt>typ</tt> <xref target="RFC9596"/> with the value "application/sd-cwt" in the SD-CWT.</t>
      <t>An SD-CWT is a CWT containing the "blinded claim hash" of at least one blinded claim in the CWT payload.
Optionally the salted claim values (and often claim names) for the corresponding Blinded Claim Hash are actually disclosed in the <tt>sd_claims</tt> claim in the unprotected header of the CWT (the disclosures).</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="types-of-blinded-claims">
        <name>Types of blinded claims</name>
        <t>Salted Disclosed Claims for named claims are structured as a 128-bit salt, the name of the redacted element, and the disclosed value.
For Salted Disclosed Claims of items in an array, the name is omitted.</t>
        <sourcecode type="cddl"><![CDATA[
salted = salted-claim / salted-element / decoy
salted-claim = [
  bstr .size 16,     ; 128-bit salt
  (int / text),      ; claim name
  any                ; claim value
]
salted-element = [
  bstr .size 16,     ; 128-bit salt
  any                ; claim value
]
decoy = [
  bstr .size 16,     ; 128-bit salt
]

; a collection of Salted Disclosed Claims
salted-array = [ +bstr .cbor salted ]
]]></sourcecode>
        <t>When a blinded claim is a key in a map, its blinded claim hash is added to a <tt>redacted_values</tt> array claim in the CWT payload that is at the same level of hierarchy as the key being blinded.</t>
        <t>When blinding an individual item in an array, the value of the item is replaced with a CBOR map containing only the special key "...".</t>
        <sourcecode type="cddl"><![CDATA[
redacted_element = { "...": any }
]]></sourcecode>
        <t>Blinded claims can be nested. For example, both individual keys in the <tt>address</tt> claim, and the entire <tt>address</tt> element can be separately blinded.
An example nested claim is shown in <strong>TODO iref</strong>.</t>
        <t>Finally, an issuer may create "decoy digests" which look like a blinded claim hash but have only a salt.
Decoy digests are discussed in <strong>TODO iref</strong>.</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 of 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 an SD-CWT communicated between a Holder and a Verifier in the next section.</t>
      <t>The unprotected header <bcp14>MUST</bcp14> contain an <tt>sd_claims</tt> section with a Salted Disclosed Claim for <em>every</em> blinded claim hash present anywhere in the payload.
The payload <bcp14>MUST</bcp14> also include a key confirmation element (<tt>cnf</tt>) <xref target="RFC8747"/> for the Holder's public key, and an <tt>sd_alg</tt> claim identifying the algorithm used to hash the Salted Disclosed Claims.</t>
      <section anchor="issuer-generation">
        <name>Issuer generation</name>
        <t>The Issuer follows all the requirements of generating a valid CWT.
The Issuer <bcp14>MUST</bcp14> implement COSE_Sign1 using an appropriate asymmetric signature algorithm / curve combination (for example ES256/P-256 or EdDSA/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>SHOULD</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;</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 in <tt>sd-alg</tt> 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 which violate its privacy policies;</t>
          </li>
          <li>
            <t>every blinded claim hash has a corresponding Salted Disclosed Claim, and vice versa;</t>
          </li>
          <li>
            <t>all the Salted Disclosed Claims are correct in their unblinded context in the payload.</t>
          </li>
        </ul>
        <t>The following informative CDDL is provided to describe the syntax for an SD-CWT issuance. A complete CDDL schema is in <xref target="cddl"/>.</t>
        <sourcecode type="cddl"><![CDATA[
sd-cwt-issued = #6.18([
   protected: bstr .cbor sd-protected,
   unprotected-issued,
   payload: bstr .cbor sd-payload,
   signature: bstr
])

sd-protected = {
   &(typ: 16) ^ => "application/sd+cwt",
   &(alg: 1) ^ => int,
   * key => any
}

unprotected-issued = {
   &(sd_claims: 17) ^ => bstr .cbor salted-array,
   * key => any
}

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) ^ => int,  ; 1883000000
    ? &(nbf: 5) ^ => int,  ; 1683000000
      &(iat: 6) ^ => int,  ; 1683000000
      &(cnf: 8) ^ => { * key => any }, ; key confirmation
    ? &(cnonce: 39) ^ => bstr,
    ;
    ; sd-cwt new claims
      &(sd_alg: 12) ^ => int,            ; -16 for sha-256
    ? &(redacted_keys: 65556) ^ => [ * bstr ],
    * key => any
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="sd-cwt-presentation">
      <name>SD-CWT Presentation</name>
      <t>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 claims, it includes those Salted Disclosed Claims in the <tt>sd_claims</tt> claim of the unprotected header.</t>
      <sourcecode type="cddl"><![CDATA[
sd-cwt-presentation = #6.18([
   protected: bstr .cbor sd-protected,
   unprotected-presentation,
   payload: bstr .cbor sd-payload,
   signature: bstr
])

unprotected-presentation = {
   &(sd_kbt: 18) ^ => bstr .cbor kbt-cwt,
   ? &(sd_claims: TBD1) ^ => bstr .cbor salted-array,
   * key => any
}
]]></sourcecode>
      <t>As described in the CDDL above, a SD-CWT presentation to a Verifier has the same syntax as an SD-CWT issued to a Holder, except for its unprotected header.
Since the unprotected header is not included in the signature, it will contain all the Salted Disclosed Claims when sent from the Issuer to the Holder.
By comparison, the unprotected header will include a Key Binding Token and contain none, some, or all of these Claims when sent from the Holder to the Verifier.</t>
      <section anchor="kbt">
        <name>Creating a Key Binding Token</name>
        <t>Regardless if it discloses any claims, the Holder <bcp14>MUST</bcp14> include a Holder key binding (SD_KBT) <xref target="kbt"/> in a <tt>sd_kbt</tt> claim in the unprotected header in every presentation of an SD-CWT by a Holder to a Verifier.
(The <tt>sd_kbt</tt> claim is absent when the Issuer is providing the SD-CWT to the Holder.) An SD-KBT is itself a type of CWT.
The protected header of the SD-KBT <bcp14>MUST</bcp14> include the <tt>typ</tt> header parameter with the value <tt>application/sd-kbt</tt>.</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>the Holder's disclosure is linked to the creation time (<tt>iat</tt>) of the key binding.</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 RFC 8747, using the <tt>cnf</tt> claim in the payload of the SD-CWT.</t>
        <t>Using the algorithm established in <tt>sd_alg</tt> in the payloads of both the SD-CWT and the SD-KBT, the Holder constructs the hash of all the Salted Disclosed Claims it will share with the Verifier.
This is the hash of the entire <tt>sd_claims</tt> array in the unprotected header of the SD-CWT.
This composite hash is included in the <tt>sd_hash</tt> claim in the payload of the SD-KBT.</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>
        <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)^ => "application/kb+cwt",
   &(alg: 1)^ => int,
   * key => any
}

kbt-unprotected = {
   * key => any
}

kbt-payload = {
      &(aud: 3) ^ => tstr, ; "https://verifier.example"
    ? &(exp: 4) ^ => int,  ; 1883000000
    ? &(nbf: 5) ^ => int,  ; 1683000000
      &(iat: 6) ^ => int,  ; 1683000000
    ? &(cnonce: 39) ^ => bstr,
      ; matches the hash of sd_claims in the presentation token
      &(sd_hash: 11) ^ => bstr,
    * key => any
}
]]></sourcecode>
        <t>The <tt>cnonce</tt> is a <tt>bstr</tt> and <bcp14>MUST</bcp14> be treated as opaque to the Holder.</t>
      </section>
    </section>
    <section anchor="sd-cwt-validation">
      <name>SD-CWT Validation</name>
      <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.
First the Verifier must validate the SD-CWT as described in <xref section="7.2" sectionFormat="of" target="RFC8392"/>.
After validation, the SD-KBT <bcp14>MUST</bcp14> be extracted from the unprotected header, and validated as described in <xref section="7.2" sectionFormat="of" target="RFC8392"/>.
The Verifier <bcp14>MUST</bcp14> confirm that the <tt>sd_alg</tt> in the SD-KBT and the <tt>sd_alg</tt> in the SD-CWT are identical, and that the <tt>sd_hash</tt> claim of the validated SD-CWT-KBT matches the hash of the <tt>sd_claims</tt> member of the unprotected header, using the hash algorithm obtained from the validated <tt>sd_alg</tt> claim.
Next, the Verifier <bcp14>MUST</bcp14> extract and decode the disclosed claims from the <tt>sd_claims</tt> in the unprotected header.
The decoded <tt>sd_claims</tt> are converted to an intermediate data structure called a Digest To Disclosed Claim Map which is used to transform the Presented Disclosed Claimset, into a Validated Disclosed Claimset.
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 Claimset.
One possible concrete representation of the intermediate data structure for the Digest To Disclosed Claim Map could be:</t>
      <sourcecode type="cddl-ish"><![CDATA[
{
  &(digested-salted-disclosed-claim) => salted
}
]]></sourcecode>
      <t>The Verifier constructs an empty cbor map called the Validated Disclosed Claimset, and initializes it with all mandatory to disclose claims from the verified Presented Disclosed Claimset.
Next the Verifier performs a breadth first or depth first traversal of the Presented Disclosed Claimset, Validated Disclosed Claimset, using the Digest To Disclosed Claim Map to insert claims into the Validated Disclosed Claimset when they appear in the Presented Disclosed Claimset.
By performing these steps, the recipient can cryptographically verify the integrity of the protected claims and verify they have not been tampered with.
If there remain unused Digest To Disclosed Claim Map at the end of this procedure the SD-CWT <bcp14>MUST</bcp14> be considered invalid, as if the signature had failed to verify.
Otherwise the SD-CWT is considered valid, and the Validated Disclosed Claimset is now a CWT Claimset with no claims marked for redaction.
Further validation logic can be applied to the Validated Disclosed Claimset, as it might normally be applied to a validated CWT claimset.</t>
    </section>
    <section anchor="decoy-digests">
      <name>Decoy Digests</name>
      <t><strong>TODO</strong></t>
    </section>
    <section anchor="credential-types">
      <name>Credential Types</name>
      <t>This specification defines the CWT claim vct (for verifiable credential type). The vct value <bcp14>MUST</bcp14> be a case-sensitive StringOrURI (see <xref target="RFC7519"/>) value serving as an identifier for the type of the SD-CWT claimset. The vct value <bcp14>MUST</bcp14> be a Collision-Resistant Name as defined in Section 2 of <xref target="RFC7515"/>.</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>
      <t>Profiles built on this specification are also encouraged to use more specific media types, as described in <xref target="RFC9596"/>.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t><strong>TODO</strong> - Provide more examples</t>
      <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>An EDN Example</name>
          <artwork><![CDATA[
/ cose-sign1 / 18([
  / protected / << {
    / alg / 1  : -35, / ES384 /
    / typ / 16 : "application/sd+cwt",
    / kid / 4  : 'https://issuer.example/cwt-key3'
  } >>,
  / unprotected / {
    / sd_claims / 17 : <<[  /these are the three disclosures/
        <<[
            /salt/   h'c93c7ff572c71e26',
            /claim/  "age_over_18",
            /value/  true
        ]>>,
        <<[
            /salt/   h'399c641e2aa18c1e',
            /claim/  "region",
            /value/  "ca" /California/
        ]>>,
        <<[
            /salt/   h'82501bb46c655f32',
            /value/  "4.1.7"
        ]>>
    ]>>,
    / sd_kbt    / 18 : << 18([
      / protected / << {
          / alg / 1 : -35 / ES384 /,
          / typ / 16 : "application/kb+cwt"
      } >>,
      / unprotected / {},
      / payload / << {
        / cnonce / 39    : h'e0a156bb3f',
        / aud     / 3    : "https://verifier.example",
        / iat     / 6    : 1783000000,
        / sd_alg  / 12 : -16,  /SHA-256/ 
        / sd_hash / 11 : h'c341bb4a5f3f'  /hash of sd_claims   /
                                            /using hash in sd_alg/
      } >>,
      / signature / h'1237af2e678945'
    ]) >>
  },
  / payload / << {
    / iss / 1   : "https://issuer.example",
    / sub / 2   : "https://device.example",
    / aud / 3   : "https://verifier.example",
    / exp / 4   : 1883000000,
    / iat / 6   : 1683000000,
    / cnf / 8   : {
      / cose key / 1 : {
        / alg: ES256 /  3: 35,
        / kty: EC2   /  1: 2,
        / crv: P-256 / -1: 1,
        / x / -2: h'768ed88626',
        / y / -3: h'6a48ccfd5d'
      }
    },
    / cnonce / 39 : h'12345678',
    / sd_hash / 11       : h'abcdef12',
    / sd_alg /  12       : -16, / SHA-256 /
    / redacted_keys / 13 : [ 
        h'abbdefef',  / redacted age_over_18 /
        h'132d75e7'  / redacted age_over_21 /
    ],
    / swversion / 271 : [
      "3.5.5",
      { "...": h'45dd87af'  /redacted version element/ }
    ],
    "address": {
        "country" : "us",            / United States /
        /redacted_keys/ 13 : [
            h'adb7060403da225b',  / redacted region /
            h'e04bdfc44d3d40bc'   / redacted post_code /
        ]
    }
  } >>,
  / signature / h'3337af2e66959614'
])
]]></artwork>
        </figure>
      </section>
      <section anchor="nested-example">
        <name>Nested example</name>
        <t><strong>TODO</strong></t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to 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 spent to verify the information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a catalog of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="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 draft.</t>
        <t>Maturity: Prototype</t>
        <t>Coverage: The current version ('main') implements functionality similar to that described in this document, 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 proof of concept, but is not yet production ready.</t>
        <t>Contact: Orie Steele (orie@transmute.industries)</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security considerations from COSE {(RFC9052)} and CWT <xref target="RFC8392"/> apply to this specification.</t>
      <section anchor="random-numbers">
        <name>Random Numbers</name>
        <t>Each salt used to protect disclosed claims <bcp14>MUST</bcp14> be generated independently from the salts of other claims. The salts <bcp14>MUST</bcp14> be generated from a source of entropy that is acceptable to the issuer.
Poor choice of salts can lead to brute force attacks that can reveal redacted claims.</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 CWT claims registry (https://www.iana.org/assignments/cose/cose.xhtml#header-parameters).</t>
        <section anchor="sdclaims">
          <name>sd_claims</name>
          <t>The following completed registration template per RFC8152 is provided:</t>
          <t>Name: sd_claims
Label: TBD9 (requested assignment 17)
Value Type: bstr
Value Registry: (empty)
Description: A list of selectively disclosed claims, which were originally redacted, then later disclosed at the discretion of the sender.
Reference: RFC XXXX</t>
        </section>
        <section anchor="sdkbt">
          <name>sd_kbt</name>
          <t>The following completed registration template per RFC8152 is provided:</t>
          <t>Name: sd_kbt
Label: TBD8 (requested assignment 18)
Value Type: bstr
Value Registry: (empty)
Description: Key binding token for disclosed claims
Reference: RFC XXXX</t>
        </section>
      </section>
      <section anchor="cbor-web-token-cwt-claims">
        <name>CBOR Web Token (CWT) Claims</name>
        <t>IANA is requested to add the following entries to the CWT claims registry (https://www.iana.org/assignments/cwt/cwt.xhtml).</t>
        <!-- https://datatracker.ietf.org/doc/html/draft-ietf-oauth-selective-disclosure-jwt-12#name-json-web-token-claims-regis -->

<section anchor="redactedclaimkeys">
          <name>redacted_claim_keys</name>
          <t>The following completed registration template per RFC8392 is provided:</t>
          <t>Claim Name: redacted_claim_keys
Claim Description: Redacted Claim Keys in a map.
JWT Claim Name: _sd
Claim Key: TBD5 (request assignment 65556)
Claim Value Type(s): array of bstr
Change Controller: IETF
Specification Document(s): RFC XXXX</t>
        </section>
        <section anchor="redactedclaimelement">
          <name>redacted_claim_element</name>
          <t>The following completed registration template per RFC8392 is provided:</t>
          <t>Claim Name: redacted_claim_element
Claim Description: Redacted element of an array
JWT Claim Name: ...
Claim Key: TBD6 (request assignment 65555)
Claim Value Type(s): array of bstr
Change Controller: IETF
Specification Document(s): RFC XXXX</t>
        </section>
        <section anchor="sdalg">
          <name>sd_alg</name>
          <t>The following completed registration template per RFC8392 is provided:</t>
          <t>Claim Name: sd_alg
Claim Description: Hash algorithm used for selective disclosure
JWT Claim Name: _sd_alg
Claim Key: TBD4 (request assignment 12)
Claim Value Type(s): integer
Change Controller: IETF
Specification Document(s): RFC XXXX</t>
        </section>
        <section anchor="sdhash">
          <name>sd_hash</name>
          <t>The following completed registration template per RFC8392 is provided:</t>
          <t>Claim Name: sd_hash
Claim Description: Hash of encoded disclosed claims
JWT Claim Name: sd_hash
Claim Key: TBD3 (request assignment 11)
Claim Value Type(s): bstr
Change Controller: IETF
Specification Document(s): RFC XXXX</t>
        </section>
        <section anchor="vct">
          <name>vct</name>
          <t>The following completed registration template per RFC8392 is provided:</t>
          <t>Claim Name: vct
Claim Description: Verifiable credential type
JWT Claim Name: vct
Claim Key: TBD7 (request assignment 15)
Claim Value Type(s): bstr
Change Controller: IETF
Specification Document(s): RFC XXXX</t>
        </section>
      </section>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>This section requests the registration of new media types in https://www.iana.org/assignments/media-types/media-types.xhtml.</t>
        <section anchor="applicationsdcwt">
          <name>application/sd+cwt</name>
          <t>IANA is requested to add the following entry to the media types registry in accordance with RFC6838, RFC4289, and RFC6657.</t>
          <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: See the Security Considerations section
of RFC XXXX, and <xref target="RFC8392"/></t>
            </li>
            <li>
              <t>Interoperability considerations: n/a</t>
            </li>
            <li>
              <t>Published specification: RFC XXXX</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:
    Magic number(s): n/a
    File extension(s): n/a
    Macintosh file type code(s): n/a</t>
            </li>
            <li>
              <t>Person &amp; email address to contact for further information:
Michael Prorock, mprorock@mesur.io</t>
            </li>
            <li>
              <t>Intended usage: COMMON</t>
            </li>
            <li>
              <t>Restrictions on usage: none</t>
            </li>
            <li>
              <t>Author: Michael Prorock, mprorock@mesur.io</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>IANA is requested to add the following entry to the media types registry in accordance with RFC6838, RFC4289, and RFC6657.</t>
          <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: See the Security Considerations section
of RFC XXXX, and <xref target="RFC8392"/></t>
            </li>
            <li>
              <t>Interoperability considerations: n/a</t>
            </li>
            <li>
              <t>Published specification: RFC XXXX</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:
    Magic number(s): n/a
    File extension(s): n/a
    Macintosh file type code(s): n/a</t>
            </li>
            <li>
              <t>Person &amp; email address to contact for further information:
Orie Steele, orie@transmute.industries</t>
            </li>
            <li>
              <t>Intended usage: COMMON</t>
            </li>
            <li>
              <t>Restrictions on usage: none</t>
            </li>
            <li>
              <t>Author: Orie Steele, orie@transmute.industries</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Provisional registration?  No</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="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="RFC8949">
          <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <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="I-D.ietf-cbor-edn-literals">
          <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="1" month="September" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation (CBOR) (STD 94, RFC 8949) 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.

   In addition to the binary interchange format, CBOR from the outset
   (RFC 7049) defined a text-based "diagnostic notation" in order to be
   able to converse about CBOR data items without having to resort to
   binary data.  RFC 8610 extended this into what is known as Extended
   Diagnostic Notation (EDN).

   This document consolidates the definition of EDN, sets forth a
   further step of its evolution, and is intended to serve as a single
   reference target in specifications that use EDN.

   It specifies an extension point for adding application-oriented
   extensions to the diagnostic notation.  It then defines two such
   extensions that enhance EDN with text representations of epoch-based
   date/times and of IP addresses and prefixes (RFC 9164).

   A few further additions close some gaps in usability.  The document
   modifies one extension originally specified in Appendix G.4 of RFC
   8610 to enable further increasing usability.  To facilitate tool
   interoperation, this document specifies a formal ABNF grammar, and it
   adds media types.


   // The present revision -12 reflects the branch "roll-up" in the
   // repository, an attempt to contain the entire specification of EDN
   // in this document, instead of describing updates to the existing
   // documents RFC 8949 and RFC 8610.  While the WG hasn't taken a
   // decision to follow this updated editorial approach, the feedback
   // has been sufficiently positive that the author believes it is not
   // misleading to make this revision available as the current WG
   // Internet-Draft as well.  That said, this is still a snapshot.  The
   // editorial work on the branch "roll-up" is not complete.  Content
   // will continue to move between sections.  The exact reflection of
   // this document being a replacement for both Section 8 of RFC 8949
   // and Appendix G of RFC 8610 needs to be recorded in the metadata
   // and in abstract and introduction.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-12"/>
        </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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="18" month="October" year="2024"/>
            <abstract>
              <t>   This specification defines a mechanism for the selective disclosure
   of individual elements of a JSON-encoded 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-13"/>
        </reference>
        <reference anchor="I-D.draft-ietf-oauth-sd-jwt-vc">
          <front>
            <title>SD-JWT-based Verifiable 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="18" month="September" year="2024"/>
            <abstract>
              <t>   This specification describes data formats as well as validation and
   processing rules to express Verifiable Credentials with JSON payloads
   with and without selective disclosure based on the SD-JWT
   [I-D.ietf-oauth-selective-disclosure-jwt] format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-sd-jwt-vc-05"/>
        </reference>
      </references>
    </references>
    <?line 935?>

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

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

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

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

sd-protected = {
   &(typ: 16) ^ => "application/sd+cwt",
   &(alg: 1) ^ => int, 
   * key => any   
}

kbt-protected = {
   &(typ: 16)^ => "application/kb+cwt",
   &(alg: 1)^ => int, 
   * key => any   
}

salted-array = [ +bstr .cbor salted ]

unprotected-presentation = {
   &(sd_kbt: TBD2) ^ => bstr .cbor kbt-cwt,
   ? &(sd_claims: TBD1) ^ => bstr .cbor salted-array,
   * key => any   
}

unprotected-issued = {
   ? &(sd_claims: TBD1) ^ => bstr .cbor salted-array,
   * key => any   
}

kbt-unprotected = {
   * key => any   
}

sd-payload = {
    ; standard claims
      &(iss: 1) ^ => tstr, ; "https://issuer.example"
      &(sub: 2) ^ => tstr, ; "https://device.example"
      &(aud: 3) ^ => tstr, ; "https://verifier.example"
    ? &(exp: 4) ^ => int,  ; 1883000000
    ? &(nbf: 5) ^ => int,  ; 1683000000
      &(iat: 6) ^ => int,  ; 1683000000
      &(cnf: 8) ^ => { * key => any }, ; key confirmation
    ? &(cnonce: 39) ^ => bstr,
    ;
    ; sd-cwt new claims
      &(sd_hash: TBD3) ^ => bstr, 
      &(sd_alg: TBD4) ^ => int,            ; -16 for sha-256
    ? &(redacted_keys: TBD5) ^ => [ * bstr ],
    * key => any   
}

kbt-payload = {
      &(aud: 3) ^ => tstr, ; "https://verifier.example"
    ? &(exp: 4) ^ => int,  ; 1883000000
    ? &(nbf: 5) ^ => int,  ; 1683000000
      &(iat: 6) ^ => int,  ; 1683000000
      &(cnonce: 39) ^ => bstr,
      &(sd_hash: TBD3) ^ => bstr,
    * key => any   
}

;redacted_element = { "...": bstr }
salted = salted-claim / salted-element
salted-claim = [
  bstr ;.size 16,     ; 128-bit salt
  (int / text),      ; claim name
  any                ; claim value
]
salted-element = [
  bstr ;.size 16,     ; 128-bit salt
  any                ; claim value
]

key = int / text
TBD1 = 17
TBD2 = 18
TBD3 = 11
TBD4 = 12
TBD5 = 13
]]></artwork>
      </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 and COSE.</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>
      </section>
      <section anchor="redaction-claims">
        <name>Redaction Claims</name>
        <t>The COSE equivalent of <tt>_sd</tt> is TBD5 (requested assignment 65556).</t>
        <t>The COSE equivalent of <tt>...</tt> is TBD6 (requested assignment 65555).</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, with the exception that a Key Binding Token is <bcp14>REQUIRED</bcp14>.</t>
      </section>
      <section anchor="validation">
        <name>Validation</name>
        <t>The validation process for SD-JWT 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 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>Hodler 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 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="document-history">
      <name>Document History</name>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial working group version based on draft-prorock-spice-cose-sd-cwt-01.</t>
        </li>
      </ul>
    </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 Jones.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
JgzwkMX/A9LOclHxqwAA

-->

</rfc>
