<?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.5 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rha-jose-hpke-encrypt-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="Use of HPKE in JOSE">Use of Hybrid Public-Key Encryption (HPKE) with Javascript Object Signing and Encryption (JOSE)</title>
    <seriesInfo name="Internet-Draft" value="draft-rha-jose-hpke-encrypt-03"/>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author fullname="Hannes Tschofenig">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author fullname="Aritra Banerjee">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Munich</city>
          <country>Germany</country>
        </postal>
        <email>aritra.banerjee@nokia.com</email>
      </address>
    </author>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization>Transmute</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <author initials="M." surname="Jones" fullname="Michael B. Jones">
      <organization>independent</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>michael_b_jones@hotmail.com</email>
      </address>
    </author>
    <date year="2024" month="February" day="05"/>
    <area>Security</area>
    <workgroup>JOSE</workgroup>
    <keyword>HPKE</keyword>
    <keyword>JOSE</keyword>
    <keyword>PQC</keyword>
    <keyword>Hybrid</keyword>
    <abstract>
      <?line 86?>

<t>This specification defines Hybrid public-key encryption (HPKE) for use with 
Javascript Object Signing and Encryption (JOSE). HPKE offers a variant of
public-key encryption of arbitrary-sized plaintexts for a recipient public key.</t>
      <t>HPKE works for any combination of an asymmetric key encapsulation mechanism (KEM),
key derivation function (KDF), and authenticated encryption with additional data 
(AEAD) function. Authentication for HPKE in JOSE is provided by 
JOSE-native security mechanisms or by one of the authenticated variants of HPKE.</t>
      <t>This document defines the use of the HPKE with JOSE.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rha-jose-hpke/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        jose Working Group mailing list (<eref target="mailto:jose@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/jose/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/jose/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 101?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Hybrid public-key encryption (HPKE) <xref target="RFC9180"/> is a scheme that 
provides public key encryption of arbitrary-sized plaintexts given a 
recipient's public key. HPKE utilizes a non-interactive ephemeral-static 
Diffie-Hellman exchange to establish a shared secret. The motivation for
standardizing a public key encryption scheme is explained in the introduction
of <xref target="RFC9180"/>.</t>
      <t>The HPKE specification provides a variant of public key encryption of
arbitrary-sized plaintexts for a recipient public key. It also
includes three authenticated variants, including one that authenticates
possession of a pre-shared key, one that authenticates possession of
a key encapsulation mechanism (KEM) private key, and one that
authenticates possession of both a pre-shared key and a KEM private key.</t>
      <t>This specification utilizes HPKE as a foundational building block and
carries the output to JOSE (<xref target="RFC7516"/>, <xref target="RFC7518"/>).</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>This specification uses the following abbreviations and terms:</t>
      <ul spacing="normal">
        <li>
          <t>Content-encryption key (CEK), a term defined in CMS <xref target="RFC2630"/>.</t>
        </li>
        <li>
          <t>Hybrid Public Key Encryption (HPKE) is defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>pkR is the public key of the recipient, as defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>skR is the private key of the recipient, as defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Encapsulation Mechanism (KEM), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Derivation Function (KDF), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Authenticated Encryption with Associated Data (AEAD), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Additional Authenticated Data (AAD), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Type (kty), see <xref target="RFC7517"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="hpke-for-jose">
      <name>HPKE for JOSE</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The JSON Web Algorithms (JWA) <xref target="RFC7518"/> in Section 4.6 defines two ways using the key agreement result 
(a) Direct Key Agreement (b) Key Agreement with Key Wrapping.</t>
        <t>This specification supports two uses of HPKE in JOSE, namely</t>
        <ul spacing="normal">
          <li>
            <t>HPKE in a single recipient setup referred to as Integrated Encryption mode. In this case, the shared secret established through the HPKE will generate the content encryption key (CEK) and encrypts the plaintext.</t>
          </li>
          <li>
            <t>HPKE in a multiple recipient setup referred to as Key Encryption mode. In this case, the shared secret established through the HPKE will wrap the CEK.</t>
          </li>
        </ul>
        <t>In both modes, the existing JOSE header parameter, called 'epk', is used to convey the content of the "encapsulated key" structure defined in the HPKE specification. The "encapsulated key" structure represents the serialized form of a public key.</t>
        <t>When the alg value is set to any of algorithms registered by this specification then the 'epk' header parameter <bcp14>MUST</bcp14> be present, and it <bcp14>MUST</bcp14> be a JSON Web Key as defined in <xref target="EK"/> of this document.</t>
        <t>In both modes, the header parameter 'epk' will contain the 'ek' member. The "ek" member will contain the base64url encoded "enc" value produced by the encapsulate operation of the HPKE KEM.</t>
        <t>In both JWE Compact Serialization and the JWE JSON Serialization, "ct" and "enc" will be base64url encoded (see Section 7.1 and 7.2 of <xref target="RFC7518"/>), since JSON lacks a way to directly represent arbitrary octet sequences.</t>
        <t>The two modes (Integrated Encryption, and Key Encryption) can be distinguished by determining whether an "enc" member is present in the protected header.</t>
        <t>If the "enc" member exists, it is a Key Encryption mode; otherwise, it is a Integrated Encryption mode.</t>
      </section>
      <section anchor="hpke-encryption-with-sealbase">
        <name>HPKE Encryption with SealBase</name>
        <t>The message encryption process is as follows.</t>
        <ol spacing="normal" type="1"><li>
            <t>The sending HPKE context is created by invoking invoking SetupBaseS() (Section 5.1.1 of <xref target="RFC9180"/>) with the recipient's public key "pkR" and "info". The HPKE specification defines the "info" parameter as a context information structure that is used to ensure that the derived keying material is bound to the context of the transaction. The SetupBaseS function will be called with the default value of an empty string for the 'info' parameter. This yields the context "sctxt" and an encapsulation key "enc".</t>
          </li>
          <li>
            <t>If "zip" parameter is present, compression is applied to the plaintext "pt" using the specified compression algorithm. Encrypt plaintext "pt" by invoking the Seal() method (Section 5.2 of <xref target="RFC9180"/>) on "sctxt" with "aad", yielding ciphertext "ct".  </t>
            <t>
Two cases of plaintext need to be distinguished:  </t>
            <ul spacing="normal">
              <li>
                <t>In Integrated Encryption mode, the plaintext "pt" passed into Seal
is the content to be encrypted.  Hence, there is no intermediate
layer utilizing a CEK.</t>
              </li>
              <li>
                <t>In Key Encryption mode, the plaintext "pt" passed into
Seal is the CEK. The CEK is a random byte sequence of length
appropriate for the encryption algorithm. For example, AES-128-GCM 
requires a 16 byte key and the CEK would therefore be 16 bytes long.</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
      <section anchor="hpke-decryption-with-openbase">
        <name>HPKE Decryption with OpenBase</name>
        <t>The recipient will create the receiving HPKE context by invoking SetupBaseR() (Section 5.1.1 of <xref target="RFC9180"/>) with "skR", "enc" (output of base64url decoded 'ek'), and "info" (empty string). This yields the context "rctxt". The receiver then decrypts "ct" by invoking the Open() method on "rctxt" (Section 5.2 of <xref target="RFC9180"/>) with "aad", yielding "pt" or an error on failure.</t>
        <t>The Open function will, if successful, decrypts "ct".  When decrypted, the result will be either the CEK (when Key Encryption mode is used), or the content (if Integrated Encryption mode is used).  The CEK is the symmetric key used to decrypt the ciphertext. If a "zip" parameter was included, the recipient will uncompress the decrypted plaintext using the specified compression algorithm.</t>
      </section>
      <section anchor="EK">
        <name>Encapsulated JSON Web Keys</name>
        <t>An encapsulated key can be represented as JSON Web Key as described in { Section 4 of RFC7515 }.</t>
        <t>The "kty" parameter <bcp14>MUST</bcp14> be "EK".</t>
        <t>The "ek" parameter <bcp14>MUST</bcp14> be present, and <bcp14>MUST</bcp14> be the base64url encoded output of the encap operation defined for the HPKE KEM.</t>
        <t>As described in { Section 4 of RFC7515 }, additional members can be present in the JWK; if not understood by implementations encountering them, they <bcp14>MUST</bcp14> be ignored.</t>
        <t>This example demonstrates the representaton of an encapsulated key as a JWK.</t>
        <artwork><![CDATA[
{
   "kty": "EK",
   "ek": "BHpP-u5JKziyUpqxNQqb0apHx1ecH2UzcRlhHR4ngJVS__gNu21DqqgPweuPpjglnXDnOuQ4kt9tHCs3PUzPxQs"
}
]]></artwork>
        <section anchor="integrated-encryption">
          <name>Integrated Encryption</name>
          <t>In Integrated Encryption mode, HPKE is employed to directly encrypt the (compressed) plaintext, and the resulting ciphertext is included in the JWE ciphertext.</t>
          <t>In this mode, JWE Compact serialization <bcp14>MUST</bcp14> be used. The sender <bcp14>MUST</bcp14> specify the 'epk' and 'alg' parameters in the protected header to indicate the use of HPKE. Optionally, the protected header <bcp14>MAY</bcp14> contain the 'kid' parameter used to identify the static recipient public key used by the sender.</t>
          <t>The Single-Shot APIs specified in Section 6 of <xref target="RFC9180"/> for encryption and decryption cannot be used. This is because they require an 'aad' parameter, which takes the Encoded Protected Header comprising of 'ek' as input.</t>
          <t>In Integrated Encryption mode, HPKE is employed to directly encrypt the plaintext, and the resulting ciphertext is included in the JWE ciphertext.</t>
          <t>In Integrated Encryption mode:</t>
          <ul spacing="normal">
            <li>
              <t>The JWE Ciphertext <bcp14>MUST</bcp14> be the base64url encoded 'ct' value.</t>
            </li>
            <li>
              <t>The JWE Initialization Vector value <bcp14>MUST</bcp14> be empty.</t>
            </li>
            <li>
              <t>The JWE Authentication Tag <bcp14>MUST</bcp14> be empty.</t>
            </li>
            <li>
              <t>The JWE Encrypted Key <bcp14>MUST</bcp14> be empty.</t>
            </li>
            <li>
              <t>The "aad" parameter <bcp14>MUST</bcp14> take the Additional Authenticated Data encryption parameter defined in Step 14 of<br/>
Section 5.1 of <xref target="RFC7516"/> as input.</t>
            </li>
          </ul>
          <t>In this setup, the 'enc' (Encryption Algorithm) parameter <bcp14>MUST NOT</bcp14> be present because the ciphersuite (KEM, KDF, AEAD) is fully-specified in the 'alg' parameter itself.</t>
          <t>This is a deviation from the rule in Section 4.1.2 of <xref target="RFC7516"/>.</t>
          <t>This example demonstrates the use of an encapsulated key with JSON Web Encryption Integrated Encryption and Compact Serialization:</t>
          <figure anchor="compact-example">
            <name>Integrated Encryption Encryption</name>
            <artwork align="left"><![CDATA[
eyJhbGciOiJIUEtFLUJhc2UtUDI1Ni1TSEEyNTYtQUVTMTI4R0NNIiwiZXBrIjp7Imt0eSI6IkVLIiwiZWsiOiJCQU9TeWV3M05JLUkwNEd2WU1MT3Y0cDBEVG5WMWZjWnBFVW10dGs0YkRTdDAtakxzY0FDN3h3MjdORTFHZ0VuMUgtM3ZXSFA5eW1BOHl4aFRmVDBkYjQifX0...afBw3T1hUNjci4qq3ZZ-9KxnttB0iCEO_GUqbIStqYqB5DgRDpyYSuvoH1mMA31qKPqB41ld5mSP34yUys6WJM7nstDJ1-4nqUdhRpgfkGTECA.
]]></artwork>
          </figure>
        </section>
        <section anchor="key-encryption">
          <name>Key Encryption</name>
          <t>In Key Encryption mode, HPKE is used to encrypt the     Content Encryption Key (CEK), and the resulting ciphertext is included in the JWE ciphertext. The (compressed) plaintext will be encrypted using the CEK as explained in Step 15 of Section 5.1 of <xref target="RFC7516"/>.</t>
          <t>In this mode, JWE JSON serialization <bcp14>MUST</bcp14> be used. The sender <bcp14>MUST</bcp14> place the 'epk' and 'alg' parameters in the per-recipient unprotected header to indicate the use of HPKE. Optionally, the per-recipient unprotected header <bcp14>MAY</bcp14> contain the 'kid' parameter used to identify the static recipient public key used by the sender. The 'enc' (Encryption Algorithm) parameter <bcp14>MUST</bcp14> be present to identify the content encryption algorithm used to perform encryption on the plaintext to produce the ciphertext. The "enc" Header Parameter <bcp14>MUST</bcp14> occur only within the JWE Protected Header.</t>
          <t>In Key Encryption mode: 
- The JWE Encrypted Key <bcp14>MUST</bcp14> be the base64url encoded 'ct' value.
- The JWE Initialization Vector <bcp14>MUST</bcp14> be produced as described in { Section 5.1 of RFC7516 }
- The JWE Authentication Tag <bcp14>MUST</bcp14> be produced as described in { Section 5.1 of RFC7516 }</t>
          <t>In JWE JSON Serialization, the following mechanisms <bcp14>MUST</bcp14> be selected to provide protection against an attacker who manipulates the encryption algorithm in the 'enc' parameter in the protected header. The attack is discussed in <xref target="I-D.draft-ietf-lamps-cms-cek-hkdf-sha256"/>:</t>
          <ul spacing="normal">
            <li>
              <t>The "aad" parameter <bcp14>MUST</bcp14> take the Additional Authenticated Data encryption parameter defined in Step 14 of 
Section 5.1 of <xref target="RFC7516"/> as input to encrypt the CEK. If the attacker changes encrytion algorithm in the 'enc' parameter prior to delivery to the recipient, then the recipient will derive a different authentication tag, leading to decryption failure and resulting in an OpenError.</t>
            </li>
          </ul>
          <t>This example demonstrates the use of an encapsulated key with a JSON Web Encryption with Key Encryption as described in this document.</t>
          <figure anchor="json-example">
            <name>Key Encryption Example</name>
            <artwork align="left"><![CDATA[
{
  "protected": "eyJlbmMiOiJBMTI4R0NNIn0",
  "ciphertext": "S0qqrM3xXPUavbmL9LQkgUKRBu8BZ7DQWoT-mdNIZVU-ip_V-fbMokiGwp2aPM57DX3cXCK3TKHqdhZ8rSNduUja",
  "iv": "AzaXpooLg3ZxEASQ",
  "aad": "8J-SgCBhYWQ",
  "tag": "S0omWw35S0H7tyEHsmGLDw",
  "recipients": [
    {
      "encrypted_key": "yDVZLsO7-ecy_GCgEluwn9U723TCHNAzeYRRQPOfpHM",
      "header": {
        "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:adjwW6fyyZ94ZBjGjx_OpDEKHLGfd1ELkug_YmRAjCk",
        "alg": "HPKE-Base-P256-SHA256-AES128GCM",
        "epk": {
          "kty": "EK",
          "ek": "BHpP-u5JKziyUpqxNQqb0apHx1ecH2UzcRlhHR4ngJVS__gNu21DqqgPweuPpjglnXDnOuQ4kt9tHCs3PUzPxQs"
        }
      }
    },
    {
      "encrypted_key": "iS73TFqJ61gkmh4DHAXADx4wyftA7pnY",
      "header": {
        "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:D2FKlj9MTIQma5bwdOVXk5Zh3_d60knzlbmD-SyMNAI",
        "alg": "ECDH-ES+A128KW",
        "epk": {
          "kty": "EC",
          "crv": "P-256",
          "x": "nX6Y3DWC0olVe5H7-NkCzVDghsYSa_L9da3jzkHYkV8",
          "y": "wDshQdcaY0J08wx25V3ystQSNe_qjsCaaFeeRWJqcE0"
        }
      }
    }
  ]
}
]]></artwork>
          </figure>
          <t>In the above example, the JWE Protected Header value is:</t>
          <artwork><![CDATA[
{
   "enc": "A128GCM"
}
]]></artwork>
        </section>
      </section>
      <section anchor="example-hybrid-key-agreement-computation">
        <name>Example Hybrid Key Agreement Computation</name>
        <t>This example uses HPKE-Base-P256-SHA256-AES128GCM which corresponds
to the following HPKE algorithm combination:</t>
        <ul spacing="normal">
          <li>
            <t>KEM: DHKEM(P-256, HKDF-SHA256)</t>
          </li>
          <li>
            <t>KDF: HKDF-SHA256</t>
          </li>
          <li>
            <t>AEAD: AES-128-GCM</t>
          </li>
          <li>
            <t>Mode: Base</t>
          </li>
          <li>
            <t>payload: "This is the content"</t>
          </li>
          <li>
            <t>aad: ""</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="ciphersuite-registration">
      <name>Ciphersuite Registration</name>
      <t>This specification registers a number of ciphersuites for use with HPKE.
A ciphersuite is thereby a combination of several algorithm configurations:</t>
      <ul spacing="normal">
        <li>
          <t>HPKE Mode</t>
        </li>
        <li>
          <t>KEM algorithm</t>
        </li>
        <li>
          <t>KDF algorithm</t>
        </li>
        <li>
          <t>AEAD algorithm</t>
        </li>
      </ul>
      <t>The "KEM", "KDF", and "AEAD" values are conceptually taken from the HPKE IANA
registry <xref target="HPKE-IANA"/>. Hence, JOSE-HPKE cannot use an algorithm combination
that is not already available with HPKE.</t>
      <t>For better readability of the algorithm combination ciphersuites labels are
build according to the following scheme:</t>
      <artwork><![CDATA[
HPKE-<Mode>-<KEM>-<KDF>-<AEAD>
]]></artwork>
      <t>The "Mode" indicator may be populated with the following values from
Table 1 of <xref target="RFC9180"/>:</t>
      <ul spacing="normal">
        <li>
          <t>"Base" refers to "mode_base" described in Section 5.1.1 of <xref target="RFC9180"/>,
which only enables encryption to the holder of a given KEM private key.</t>
        </li>
        <li>
          <t>"PSK" refers to "mode_psk", described in Section 5.1.2 of <xref target="RFC9180"/>,
which authenticates using a pre-shared key.</t>
        </li>
        <li>
          <t>"Auth" refers to "mode_auth", described in Section 5.1.3 of <xref target="RFC9180"/>,
which authenticates using an asymmetric key.</t>
        </li>
        <li>
          <t>"Auth_Psk" refers to "mode_auth_psk", described in Section 5.1.4 of <xref target="RFC9180"/>,
which authenticates using both a PSK and an asymmetric key.</t>
        </li>
      </ul>
      <t>For a list of ciphersuite registrations, please see <xref target="IANA"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This specification is based on HPKE and the security considerations of
<xref target="RFC9180"/> are therefore applicable also to this specification.</t>
      <t>HPKE assumes the sender is in possession of the public key of the recipient and
HPKE JOSE makes the same assumptions. Hence, some form of public key distribution
mechanism is assumed to exist but outside the scope of this document.</t>
      <t>HPKE in Base mode does not offer authentication as part of the HPKE KEM. In this case 
JOSE constructs like JWS and JSON Web Tokens (JWTs) can be used to add authentication. 
HPKE also offers modes that offer authentication.</t>
      <t>HPKE relies on a source of randomness to be available on the device. In Key Agreement 
with Key Wrapping mode, CEK has to be randomly generated and it <bcp14>MUST</bcp14> be
ensured that the guidelines in <xref target="RFC8937"/> for random number generations are followed.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>The following is added to the "JSON Web Key Types" registry:</t>
      <ul spacing="normal">
        <li>
          <t>"kty" Parameter Value: "EK"</t>
        </li>
        <li>
          <t>Key Type Description: HPKE</t>
        </li>
        <li>
          <t>JOSE Implementation Requirements: Optional</t>
        </li>
        <li>
          <t>Change Controller: IESG</t>
        </li>
        <li>
          <t>Specification Document(s): [[TBD: This RFC]]</t>
        </li>
      </ul>
      <t>The following is added to the "JSON Web Key Parameters" registry:</t>
      <ul spacing="normal">
        <li>
          <t>Parameter Name: "ek"</t>
        </li>
        <li>
          <t>Parameter Description: Encapsulated Key</t>
        </li>
        <li>
          <t>Parameter Information Class: Public</t>
        </li>
        <li>
          <t>Used with "kty" Value(s): "EK"</t>
        </li>
        <li>
          <t>Specification Document(s): [[TBD: This RFC]]</t>
        </li>
      </ul>
      <t>This document requests IANA to add new values to the 'JOSE Algorithms' and to 
the 'JOSE Header Parameters' registries in the 'Standards Action 
With Expert Review category'.</t>
      <section anchor="jose-algorithms-registry-direct-key-agreement">
        <name>JOSE Algorithms Registry (Direct Key Agreement)</name>
        <ul spacing="normal">
          <li>
            <t>Algorithm Name: HPKE-Base-P256-SHA256-AES128GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-P384-SHA384-AES256GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-384, HKDF-SHA384) KEM, the HKDF-SHA384 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-P521-SHA512-AES256GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X25519-SHA256-AES128GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X25519-SHA256-ChaCha20Poly1305</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X448-SHA512-AES256GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X448-SHA512-ChaCha20Poly1305</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
        </ul>
      </section>
      <section anchor="jose-algorithms-registry-key-agreement-with-key-wrapping">
        <name>JOSE Algorithms Registry (Key Agreement with Key Wrapping)</name>
        <ul spacing="normal">
          <li>
            <t>Algorithm Name: HPKE-Base-P256-SHA256-AES128GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and Key wrapping with the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-P384-SHA384-AES256GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-384, HKDF-SHA384) KEM, the HKDF-SHA384 KDF, and Key wrapping with the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-P521-SHA512-AES256GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and Key wrapping with the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X25519-SHA256-AES128GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and Key wrapping with the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X25519-SHA256-ChaCha20Poly1305KW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and Key wrapping with the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X448-SHA512-AES256GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and Key wrapping with the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X448-SHA512-ChaCha20Poly1305KW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and Key wrapping with the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
        </ul>
      </section>
      <section anchor="jose-header-parameters">
        <name>JOSE Header Parameters</name>
        <section anchor="authentication-using-a-pre-shared-key">
          <name>Authentication Using a Pre-Shared Key</name>
          <ul spacing="normal">
            <li>
              <t>Parameter Name: "psk_id"</t>
            </li>
            <li>
              <t>Parameter Description: A key identifier (kid) for the pre-shared key as defined in { Section 5.1.1 of RFC9180 }</t>
            </li>
            <li>
              <t>Parameter Information Class: Public</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): [[This specification]]</t>
            </li>
          </ul>
        </section>
        <section anchor="authentication-using-an-asymmetric-key">
          <name>Authentication Using an Asymmetric Key</name>
          <ul spacing="normal">
            <li>
              <t>Parameter Name: "auth_kid"</t>
            </li>
            <li>
              <t>Parameter Description: A key identifier (kid) for the asymmetric key as defined in { Section 5.1.4 of RFC9180 }</t>
            </li>
            <li>
              <t>Parameter Information Class: Public</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Specification Document(s): [[This specification]]</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="RFC7516">
          <front>
            <title>JSON Web Encryption (JWE)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Hildebrand" initials="J." surname="Hildebrand"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Encryption (JWE) represents encrypted content 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 IANA registries defined by that specification. Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7516"/>
          <seriesInfo name="DOI" value="10.17487/RFC7516"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="RFC2630">
          <front>
            <title>Cryptographic Message Syntax</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax. This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2630"/>
          <seriesInfo name="DOI" value="10.17487/RFC2630"/>
        </reference>
        <reference anchor="HPKE-IANA" target="https://www.iana.org/assignments/hpke/hpke.xhtml">
          <front>
            <title>Hybrid Public Key Encryption (HPKE) IANA Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2023" month="October"/>
          </front>
        </reference>
        <reference anchor="I-D.draft-ietf-lamps-cms-cek-hkdf-sha256">
          <front>
            <title>Encryption Key Derivation in the Cryptographic Message Syntax (CMS) using HKDF with SHA-256</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="29" month="January" year="2024"/>
            <abstract>
              <t>   This document specifies the derivation of the content-encryption key
   or the content-authenticated-encryption key in the Cryptographic
   Message Syntax (CMS).  The use of this mechanism provides protection
   against where the attacker manipulates the content-encryption
   algorithm identifier or the content-authenticated-encryption
   algorithm identifier.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-cek-hkdf-sha256-00"/>
        </reference>
        <reference anchor="I-D.ietf-cose-hpke">
          <front>
            <title>Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Ajitomi, Daisuke" initials="A." surname="Daisuke">
         </author>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <date day="22" month="October" year="2023"/>
            <abstract>
              <t>   This specification defines hybrid public-key encryption (HPKE) for
   use with CBOR Object Signing and Encryption (COSE).  HPKE offers a
   variant of public-key encryption of arbitrary-sized plaintexts for a
   recipient public key.

   HPKE works for any combination of an asymmetric key encapsulation
   mechanism (KEM), key derivation function (KDF), and authenticated
   encryption with additional data (AEAD) function.  Authentication for
   HPKE in COSE is provided by COSE-native security mechanisms or by one
   of the authenticated variants of HPKE.

   This document defines the use of the HPKE with COSE.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hpke-07"/>
        </reference>
      </references>
    </references>
    <?line 541?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This specification leverages text from <xref target="I-D.ietf-cose-hpke"/>. We would like to thank Matt Chanda, Ilari Liusvaara and Aaron Parecki for their feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Kzl15sXlq9v1q3wWPLGtzLaJibPxtj/GUt+ULbsZUgt02qtOGTuDDhWxSp0x
KEP97EBmbFemWPd+wfmQpmZDDKCNlXp70DtUrgxxbcqPBsLkSAlSIh1roC68
BSf2Nlu9mY1tE+J3PtEK1NRm5CyhVEtRiqTIJsMLGFK1gCw5GJvy7yesv7d8
Po0U1eG7et1uCvl56/rWDN+qDKecWX6At0upvF/CuYBrKhGK4VFkA1ilqxbu
w7t8tDA5M7cZB9Lkd5ZOo/hk0XcgY+koz1ess0l2AiBTceqEwmcV8gMYwGai
wGy95D2IayITGftA9cyiVnDXfMtWMrxIqtiri7jjnU7Gp2REWvNZRjYoPV4Q
FNlRYw/jbOw4gB2x2WleyikY7Z43KswOpXCGSbma8gArvrNhwwDyAZLAyBH5
gnolXyiCgydAnnRN2jAtc0iq2yCOLDLEWS6+qBlLy2M15dDE/HA82DftU/vw
oNcM9457h2NzvRf2GgeVE7vS7TSb85PuVXjeu+y2uwcbF2snJwf2zL7+uBMc
3PpbB9NwTXQO3h9MLo9pvC8R1u5570NX9C+r7bXNw+PeZHbStNb7vUq7W71a
Mxs7zcv9zX67f33bd3f2LvuVNWtfrl1NLrpWow5y+PDpam2vcVIdV9u31ulF
d691vXYZtXujsF29/tjZq2+KfmXntOVs8L2L6WVjZ3J1e24PP66Vy2U+3JlV
u5Vx7+TWtDfu7qrX16UPRw9uGO6s2bvN05v93t3goBPeXd3tbDZGFw1/ftWJ
7r1WZdquVyt3R2d3OxsVx9qcds6qG/PeXL7vH7a3gD+Nw0ppw73rWeMLfzSc
7Hebu/WyCgtq7I2pqFyKmQqUHrnfFxwxhNifeqK+LyznUfqx8EW5+XyETtqx
NJeNbWVa20nNI/6n7w6zC48yd4e/0Wp2n4wY0vwjsUVpHI45Al9o4VBGYxOF
/mmDUV4WRpAqfE0MAbua4rURhAhKqeuO3N8YUbwE7Q+JMLpfaVozZnVx6yVX
W0k6lSALp6aLlGwvjbtQhcFp6h7gUWIY398U4uDiLI+eZ5pRoFsWYN+MqC6G
JWX2+L+nVKvGXnSov93pp+TVVyBP54haGbQqsC+vCw1+DWAkyFM3JmGuaSHT
XhdvCC5SUVwxFJur4jiahGMEDJchdRyGITcnmOOPPTYFMD75OPlkmSzxyyS6
Gb/81C0F0kftQr0NtjQjXeUDm/Lvg1KjrBrwsf+85IDNliVzCv8Xk9J4Yg2x
eWl9E6xOXP78A+MmQ9cgX4ycFm0+lSr15UxCYdWTJ9XE1xEVoncvUOUaB8tl
87j2nenSCONry4WajLpPwOjIxv5WuunKi2jIR0XmAJvII3jZHEUXxcgop24J
L79dqpA1sXpW1qr722IovjSKShoUsjHUgvbkb1JZWhkoJFKI9QAIrZzBtI3h
0E4SOrlrVDMopCYOp3bW7u6CdvXh41mP3w+mxx+Ozyej3tHFTrS9c73VOO97
3dLUOjm4vuyVbP/msjQctL2JvT/z1/lZe3Or8bFqftw9qnaPWnfW+Ho76JxY
Ue+Wq73se9yj/ol/9D3veFS9fmjWO+fqOxRo+HL7sNQZ7e6Mr/p6HHikEPOm
/Vl1s7PW2grnzZac7h83ZmpKwncJM38imf2sK9aFxO/f4G07AJo3Lq+P5elW
SZjzm/3dUdOJZu6H3tZ6tbvbOql/ElcXF+dnp0O/1VZFFYSiVBmWx3Cx9mIT
wlHg1lBzayS0suahjNVuZ5NSOI6mAxBgN6yBCpdAh2vcup313w/n8+sPG9c7
t/u3DzenfqN51DreH1qV5vEkGt1cTS/qt7uTZHOkjUM0oPZ3rGqXzgBYqdOq
4496s1NZ397fbWdXQECRw/ZxrSiZ+W1LRvE+X4zszy/FF7hkd7aq3b27w/eV
0WQ63mi06h/rjYeN2XwY1rd89+r3Z01jfe/Iuf0A+nE+5ZuDmXV6+XGyeT2u
3ljv1ybuJ9CgRqkzb5/UD5awprnbaJWanX/WgRVH/VdyYjfPCTMg9ThDdPLf
POC4+/H9VbXR313znEux2doqnUx2P102RmN51eE3xx8sXr39NGldTS6386tp
s1lDjs8tk1+tHa5tzx7WNy+rcxmed07Ezd2t3OV8T4iL/uGd2Vx7kmnw78+6
Boh5xq303GeTjAXr1VRTC1909AyLBh52c8c3Tk/FS0lvS41li58Yi6E50dKf
VifjneJ2w3znFyahkSrhLlhuau96Qcl07cn0AvAKvuda0tAeKY1HVLtw4toy
rxyofgOpf401WvBjhXgN2dNRY0/vtIoTGnu17Bj27jXrjVr2Sg7G2hQe0o1Z
CVzm3PG4BfSIqwKZuLgAEzh9WaA+0UwhQr95yZIjf+sfdw1RHz69+0Nnlqll
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

-->

</rfc>
