<?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.18 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-spice-sd-cwt-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title>SPICE SD-CWT</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-spice-sd-cwt-00"/>
    <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>
    <date year="2024" month="August" day="22"/>
    <area>Security</area>
    <workgroup>Secure Patterns for Internet CrEdentials</workgroup>
    <keyword>cose</keyword>
    <keyword>cwt</keyword>
    <keyword>selective disclosure</keyword>
    <abstract>
      <?line 56?>

<t>This document describes a data minimization technique for use with CBOR Web Token (CWT) <xref target="RFC8392"/>.
The approach is based on SD-JWT <xref target="I-D.ietf-oauth-selective-disclosure-jwt"/>, with changes to align with CBOR Object Signing and Encryption (COSE).
This document updates <xref target="RFC8392"/>.</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 63?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document updates 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, with changes to align with conventions from CBOR Object Signing and Encryption (COSE).
The ability to minimize disclosure of sensitive identity attributes, while demonstrating possession of key material and enabling a verifier to confirm the attributes have been unaltered by the issuer, is an important building block for many digital credential use cases.
This specification brings selective disclosure capabilities to CWT, enabling application profiles to impose additional security criteria beyond the minimum security requirements this specification requires.
Specific use cases are out of scope for this document.
However, feedback has been gathered from a wide range of stakeholders, some of which is reflected in the examples provided in the appendix.</t>
      <section anchor="overview">
        <name>Overview</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>The terminology used in this document is inherited from RFC8392, RFC9052 and RFC9053.</t>
      <t>This document defines the following new terms related to concepts originally described in SD-JWT.</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>Salted Disclosed Claims</dt>
        <dd>
          <t>The salted claims disclosed via an SD-CWT.</t>
        </dd>
        <dt>Digested Salted Disclosed Claim</dt>
        <dd>
          <t>A hash digest of a Salted Disclosed Claims.</t>
        </dd>
        <dt>Redacted keys</dt>
        <dd>
          <t>The hashes of claims redacted from a map data structure.</t>
        </dd>
        <dt>Redacted elements</dt>
        <dd>
          <t>The hashes of elements redacted from an array data structure.</t>
        </dd>
        <dt>Presented Disclosed Claimset</dt>
        <dd>
          <t>The CBOR map containing zero or more Redacted keys or Redacted elements.</t>
        </dd>
        <dt>Validated Disclosed Claimset</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 ommiting all instances of redacted_keys and redacted_element claims that are present in the original 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>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.</t>
        </dd>
        <dt>Verifier</dt>
        <dd>
          <t>An entity that validates a Partial or Full Disclosure by a holder.</t>
        </dd>
      </dl>
    </section>
    <section anchor="sd-cwt-issuance">
      <name>SD-CWT Issuance</name>
      <t>SD-CWT is modeled after SD-JWT, with adjustments to align with conventions in CBOR and COSE.</t>
      <t>An SD-CWT is a CWT containing the hash digest (the "blinded claim hash") of each blinded claim in <tt>redacted_values</tt> in the payload, and optionally the salted claim values (and often claim names) for the values that are actually disclosed in the <tt>sd_claims</tt> claim in the unprotected header. When blinding an individual item in an array, the value of the item is replaced with a dict containing only the special key "...".</t>
      <sourcecode type="cddl"><![CDATA[
redacted_element = { "...": bstr }
]]></sourcecode>
      <t>A Holder key binding CWT (#kbt) <bcp14>MUST</bcp14> be present in a <tt>sd_kbt</tt> claim in the unprotected header when presenting an SD-CWT to a Verifier.
The <tt>sd_kbt</tt> claim can only be absent when the Issuer is providing the
SD-CWT to the Holder.</t>
      <t>An SD-CWT is a CWT containing zero or more Digested Salted Disclosed Claim, and zero or more Salted Disclosed Claims.
The salt acts as a blinding factor, preventing a Verifier of an SD-CWT from learning claims that were not intentionally disclosed by a Holder.</t>
      <t>The following informative CDDL is provided to explain the syntax for an
SD-CWT presentation. A complete CDDL schema is in (#cddl).</t>
      <t>Please note this example contains claims for demonstration of the disclosure syntax, such as <tt>swversion</tt>, <tt>address</tt>, and ``.</t>
      <sourcecode type="cddl"><![CDATA[
sd-cwt-presentation = #6.18([
   protected: bstr .cbor sd-protected,
   unprotected-presentation,
   payload: bstr .cbor sd-payload,
   signature: bstr
])

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

unprotected-presentation = {
   &(sd_kbt: TBD2) ^ => bstr .cbor kbt-cwt,
   ? &(sd_claims: TBD1) ^ => bstr .cbor [ + bstr .cbor salted ],
   * 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_alg: TBD4) ^ => int,            ; -16 for sha-256
    ? &(redacted_values: TBD5) ^ => [ * bstr ],
    * key => any
}
]]></sourcecode>
      <t>Disclosures for named claims are structured as a 32 bit salt, the name of the redacted element, and the disclosed value. For disclosures of items in an array, the name is ommitted.</t>
      <sourcecode type="cddl"><![CDATA[
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
]
]]></sourcecode>
      <section anchor="kbt">
        <name>Creating a Key Binding Token</name>
        <sourcecode type="cddl"><![CDATA[
digested-salted-disclosed-claim = bstr;
salted-disclosed-claim = 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
]
sd-cwt-cnf = COSE_Key / Encrypted_COSE_Key / kid
sd-cwt = [
  protected,
  unprotected: {
    ?(sd_claims: TBD1): bstr .cbor [ + salted-disclosed-claim ],
    ?(sd_kbt: TBD2): bstr .cbor sd-cwt-kbt,
  },
  payload :  bstr .cbor {
    ?(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) => sd-cwt-cnf,  ; 1683000000

    ?(sd_alg: TBD4) => int,             ; -16 for sha-256
    ?(redacted_keys: TBD5) => [         ; redacted map keys
      digested-salted-disclosed-claim
    ],

    ; redaction in an example map value that is an array
    &(example-array-key: -65537) => [
      123,
      { ; redacted array element
        &(redacted_element: TBD6) =>
        digested-salted-disclosed-claim
      },
      789,
      { ; redacted array element
        &(redacted_element: TBD6) =>
        digested-salted-disclosed-claim
      },
    ]
  }
  signature : bstr,
]
]]></sourcecode>
        <t>As described above, an SD-CWT is a CWT with claims that require confirmation and support selective disclosure.
Confirmation mitigates risks associated with bearer token theft.
Note that new confirmation methods might be registered and used after this document is published.
Selective disclosure enables data minimization.
The mechanism through which map keys and array elements are disclosed is different, see SD-CWT Validation for details.
CWT Claims which are not explictly marked redactable by the Issuer are mandatory to disclose by the Holder.
A detailed privacy and security analysis of all mandatory and optionally disclosed claims <bcp14>SHOULD</bcp14> be performed prior to issuance.</t>
      </section>
    </section>
    <section anchor="sd-cwt-presentation">
      <name>SD-CWT Presentation</name>
      <t>Presentations of an SD-CWT by a Holder to a Verifier require the Holder to issue an SD-CWT-KBT.</t>
      <t>The SD-CWT-KBT is essential to assuring the Verifier:</t>
      <ul spacing="normal">
        <li>
          <t>a) the Holder of the SD-CWT controls the confirmation method chosen by the Issuer.</t>
        </li>
        <li>
          <t>b) the Holder's disclosures have not been tampered with since confirmation occured.</t>
        </li>
      </ul>
      <t>The SD-CWT-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.
The Digested Salted Disclosed Claim are included in the <tt>sd_hash</tt> claim in the payload of the SD-CWT-KBT.</t>
      <t>The proof of possession associated with the confirmation claim in an SD-CWT is called the SD-CWT-KBT.
As noted above, SD-CWT Issuance, <tt>sd_kbt</tt> <bcp14>SHALL</bcp14> be present in every presentation of an SD-CWT by a Holder to a Verifier.</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: TBD3) ^ => bstr,
    * key => any
}
]]></sourcecode>
      <t>Note that <tt>sd_hash</tt> is the digest using <tt>sd_alg</tt> of the <tt>sd_claims</tt> which are either Partially or Fully Redacted in the Presented SD-CWT.</t>
      <t>The <tt>cnonce</tt> and <tt>audience</tt> are essential to assure the Verifier that the Holder is currently in control of the associated confirmation method, and that the holder intended to disclose the SD-CWT to the Verifier.</t>
      <t>Note that <tt>cnonce</tt> is a <tt>bstr</tt> and <bcp14>MUST</bcp14> be treated as opaque to the Holder.</t>
      <t>The details associated with these protocol parameters are out of scope for this document.</t>
    </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.</t>
      <t>First the Verifier must validate the SD-CWT as described in <xref section="7.2" sectionFormat="of" target="RFC8392"/>.</t>
      <t>After validation, the SD-CWT-KBT <bcp14>MUST</bcp14> be extracted from the unprotected header, and validated as described in <xref section="7.2" sectionFormat="of" target="RFC8392"/>.</t>
      <t>The Verifier <bcp14>MUST</bcp14> confirm 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 of the SD-CWT.</t>
      <t>Next, the Verifier <bcp14>MUST</bcp14> extract and decode the disclosed claims from the <tt>sd_claims</tt> in the unprotected header.</t>
      <t>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.</t>
      <t>The Verifier <bcp14>MUST</bcp14> compute the hash of each <tt>salted-disclosed-claim</tt>, in order to match each disclosed value to each entry of the Presented Disclosed Claimset.</t>
      <t>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-disclosed-claim
}
]]></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.</t>
      <t>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 siganture 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 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 COSE based verifiable credentials, similar to the JOSE based verifiable credentials described in Section 3.2.2.1.1 of SD-JWT-VC.</t>
        <t>Profiles built on this specifiation are also encouraged to use more specific media types, as described in <eref target="https://datatracker.ietf.org/doc/draft-ietf-cose-typ-header-parameter/">draft-ietf-cose-typ-header-parameter</eref>.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>TBD - 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>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security considerations from COSE {RFC9052} and CWT {RFC8392} apply to this specificaton.</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: TBD1 (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: TBD2 (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>
        <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="redactedvalues">
          <name>redacted_values</name>
          <t>The following completed registration template per RFC8392 is provided:</t>
          <t>Claim Name: redacted_values
Claim Description: Redacted claims in a map.
JWT Claim Name: redacted_keys
Claim Key: TBD5 (request assignment 13)
Claim Value Type(s): array of bstr
Change Controller: IETF
Specification Document(s): RFC XXXX</t>
        </section>
        <section anchor="redactedelement">
          <name>redacted_element</name>
          <t>The following completed registration template per RFC8392 is provided:</t>
          <t>Claim Name: redacted_element
Claim Description: Redacted element of an array
JWT Claim Name: redacted_element
Claim Key: TBD (request assignment TBD6)
Claim Value Type(s): array of 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: TBD (request assignment TBD7)
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>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.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="22" month="August" year="2024"/>
            <abstract>
              <t>   This specification defines a mechanism for selective disclosure of
   individual elements of a JSON object used as the payload of a JSON
   Web Signature (JWS) structure.  It can be used for multiple
   applications, including but not limited to the selective disclosure
   of JSON Web Token (JWT) claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-selective-disclosure-jwt-11"/>
        </reference>
      </references>
    </references>
    <?line 666?>

<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   
}

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

unprotected-issued = {
   ? &(sd_claims: TBD1) ^ => [ +bstr .cbor salted ],
   * 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.</t>
        <t>The COSE equivalent of <tt>...</tt> is TBD6.</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="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: https://github.com/transmute-industries/sd-cwt</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 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,
Oliver Terbu, and Michael Jones.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
LSi29G7RUKtASns6BbMT7Dh0MZCuYrToBDRSCZlb4hKc2DCKJ/Fo7hGxofWO
MR4tam++v7jEeBP+Fqdn9Pn8+N+/Pzk/PsLPF68OXr/OP3imBWOk+FT0PDx7
8+b49Ig7w1NReuTV3hz8VGPM1c7eXp6cnR68rrGR6DpwuCogfsQCBo6AZ2h1
2rMuL6EFvOz/+e/2NviJ/waeXqfd3r+/N3/02nvb8AegLOLZ4gholf8E9Mw9
NEhlgqMQcckZOhGw8WAX63F8GwlENqDv83eImfd98dXAn7W3vzYPcMGlhxZn
pYeEs8UnC50ZiUseLZkmx2bpeQXTZXgPfir9bfHuPPzqOTg4SjTavedfA8kQ
kaQF1aC7ESzuEnwOI8BTmFr/IXe44cP+050OoZ4/d5uL4YshTKorUiZStzQ1
ehcTImp2I5F/UKqBuxeR4CmRAnvVMMVF7tYdFW5dNebBgnfL64sDigCw181m
R+7tLXUQqSWyzyCM0BtdNSMa5C+4SXnSxncvnIkJrxh/cLR72dGWFcGn0nEc
IJnq2A8tehxd4l2gPx1YWOATm1MwJW6q5rdmrUHe6AZcVHeUo3AE4gxeLB+O
FgA+5BjdbzSqCdIVU8NwbNnBE0CdBQW7K9ITBprENjKu6FTOOKwFiMl8VLXu
SIB1cpgXRrMvquMBpycJSM6FIY31sQRylZrRiYAQHgozhhSA+UUlMWq2KSqg
0gLx6QKcMNEPchIG8qMnQgE1BUaSacw2QR6tMojToCoWAyjYLadh5Jd8TtNt
lq/b9GS1a+TlFLWKmR1VJKomwq9F68+0VNaB5olZq52AdCGKcmvzmGCAZWKh
g58xHO4Z/x2pKhImHkWdZxTiowDnIxgbBmI/f9lABMEjB7IRDtbfKzstMDkS
k0zICiyaATA/gt6BQXQ2gJ1GHJawkG8HmSTFdpzYjUyUs3nmJS8UJnyZTZbN
RkI1IxJIHR5bOUmoH5gjD48s4PXGkDTiyC4dqL8CFA4oDXmhSQI2SSXEA3KL
HzwcL5XBnzOdmkDZypgpkBntJ9ImhkVhygMr2yiuSLLX4bDUCBArzTbxQQ3V
QGDZhd7XtkjAYFy3/BJmvMq5AHACtuCVpfaZnE9iGRi2mnGEcMIYdsWx4H5i
k9rB2iPzHPMnessY68o2y5kLJs1YIeb7Z2a+Qv6ifb8q4MQXWVTQwVhJ3BWm
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
2wKi838BtDsKTtp0AAA=

-->

</rfc>
