<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-jose-hpke-encrypt-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title abbrev="Use of HPKE in JOSE">Use of Hybrid Public Key Encryption (HPKE) with JSON Object Signing and Encryption (JOSE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-jose-hpke-encrypt-02"/>
    <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>Self-Issued Consulting</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>michael_b_jones@hotmail.com</email>
        <uri>https://self-issued.info/</uri>
      </address>
    </author>
    <date year="2024" month="November" day="03"/>
    <area>Security</area>
    <workgroup>JOSE</workgroup>
    <keyword>HPKE</keyword>
    <keyword>JOSE</keyword>
    <keyword>PQC</keyword>
    <keyword>Hybrid</keyword>
    <abstract>
      <?line 92?>

<t>This specification defines Hybrid Public Key Encryption (HPKE) for use with
JSON 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-ietf-jose-hpke-encrypt/"/>.
      </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 106?>

<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.</t>
      <t>This specification enables JSON Web Encryption (JWE) to leverage HPKE,
bringing support for KEMs and the possibility of Post Quantum or Hybrid KEMs to JWE.</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), is defined in <xref target="RFC7517"/>.</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>
      </ul>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>This specification describes two modes of use for HPKE in JWE:</t>
      <ul spacing="normal">
        <li>
          <t>HPKE JWE Integrated Encryption, where HPKE is used to encrypt the plaintext.</t>
        </li>
        <li>
          <t>HPKE JWE Key Encryption, where HPKE is used to encrypt a content encryption key (CEK) and the CEK is subsequently used to encrypt the plaintext.</t>
        </li>
      </ul>
      <t>When "alg" and "enc" are both present in a protected header and when "iv" and "tag" are empty, the mode is HPKE JWE Integrated Encryption.</t>
      <t>When "enc" is present in a protected header and "alg" is absent, the mode is HPKE JWE Key Encryption when a valid HPKE "alg" value is present in the unprotected headers.</t>
      <t>HPKE supports several modes, which are described in Table 1 of <xref target="RFC9180"/>.</t>
      <t>In JWE, the use of specific HPKE modes such as "mode_base" or "mode_auth_psk" is determined by the presence of the header parameters "psk_id" and "auth_kid".</t>
      <t>JWE supports different serializations, including Compact JWE Serialization as described in Section 3.1 of <xref target="RFC7516"/>, General JWE JSON Serialization as described in Section 3.2 of <xref target="RFC7516"/>.</t>
      <t>Certain JWE features are only supported in specific serializations.</t>
      <t>For example Compact JWE Serialization does not support the following:</t>
      <ul spacing="normal">
        <li>
          <t>additional authenticated data</t>
        </li>
        <li>
          <t>multiple recipients</t>
        </li>
        <li>
          <t>unprotected headers</t>
        </li>
      </ul>
      <t>HPKE JWE Key Encryption can be used with "aad" but only when not expressed with Compact JWE Serialization.</t>
      <t>Single recipient HPKE JWE Key Encryption with no "aad" can be expressed in Compact JWE Serialization, so long as the recipient and sender use the same HPKE Setup process as described in { Section 5 of RFC9180 }.</t>
      <section anchor="auxiliary-authenticated-application-information">
        <name>Auxiliary Authenticated Application Information</name>
        <t>HPKE has two places at which applications can specify auxiliary authenticated information as described in { Section 8.1 of RFC9180 }.</t>
        <t>HPKE algorithms are not required to process "apu" and "apv" as described in Section 4.6.1 of <xref target="RFC7518"/>, despite appearing to be similar to key agreement algorithms (such as "ECDH-ES").</t>
        <t>The "aad parameter" for Open() and Seal() <bcp14>MUST</bcp14> be used with both HPKE JWE Integrated Encryption and HPKE JWE Key Encryption.</t>
        <t>To avoid confusion between JWE AAD and HPKE AAD, this document uses the term "HPKE AEAD AAD" to refer the "aad parameter" for Open() and Seal().</t>
        <t>The HPKE AEAD AAD <bcp14>MUST</bcp14> be set to the "JWE Additional Authenticated Data encryption parameter" defined in Step 14 of Section 5.1 of <xref target="RFC7516"/> which is repeated here for clarity:</t>
        <t>Let the Additional Authenticated Data encryption parameter be ASCII(Encoded Protected Header).
However, if a JWE AAD value is present (which can only be the case when using the JWE JSON Serialization), instead let the Additional Authenticated Data encryption parameter be ASCII(Encoded Protected Header || '.' || BASE64URL(JWE AAD)).</t>
      </section>
      <section anchor="encapsulated-keys">
        <name>Encapsulated Keys</name>
        <t>Encapsulated keys <bcp14>MUST</bcp14> be the base64url encoded encapsulated key as defined in Section 5.1.1 of <xref target="RFC9180"/>.</t>
        <t>In HPKE JWE Integrated Encryption, JWE Encrypted Key is the encapsulated key.</t>
        <t>In HPKE JWE Key Encryption, each recipient JWE Encrypted Key is the encrypted content encryption key, and the encapsulated key (ek) is found in the recipient header.</t>
      </section>
    </section>
    <section anchor="integrated-encryption">
      <name>Integrated Encryption</name>
      <t>In HPKE JWE Integrated Encryption:</t>
      <ul spacing="normal">
        <li>
          <t>The protected header <bcp14>MUST</bcp14> contain an "alg" that starts with "HPKE".</t>
        </li>
        <li>
          <t>The protected header <bcp14>MUST</bcp14> contain an "enc" and it <bcp14>MUST</bcp14> be set to the value "dir". It updates Section 4.1.2 of <xref target="RFC7516"/> to clarify that in case where HPKE JWE Integrated Encryption is used, setting "enc" set to "dir" is appropriate, as both the derivation of the CEK and the encryption of the plaintext are fully handled within the HPKE encryption.</t>
        </li>
        <li>
          <t>The protected header parameters "psk_id" and "auth_kid" <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>The protected header parameters "ek" <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
        <li>
          <t>The "encrypted_key" <bcp14>MUST</bcp14> be the base64url encoded encapsulated key as defined in Section 5.1.1 of <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>The "iv", "tag" and "aad" members <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
        <li>
          <t>The "ciphertext" <bcp14>MUST</bcp14> be the base64url encoded ciphertext as defined in Section 5.2 of <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>The HPKE Setup info parameter <bcp14>MAY</bcp14> be used, and its values are not constrained by this specification. By default, it is empty unless apu or apv are present, in which case it will carry the JOSE context-specific data as defined in Section 4.6.2 of <xref target="RFC7518"/>.</t>
        </li>
      </ul>
      <section anchor="compact-example">
        <name>Compact Example</name>
        <t>A Compact JWE or JSON Web Token:</t>
        <artwork><![CDATA[
eyJhbGciOiJIUEtFLVAyNTYtU0hBMjU2LUExMjhHQ00iLCJlbmMiOiJkaXIiLCJraWQiOiJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6andrLXRodW1icHJpbnQ6c2hhLTI1Njp2b2RIQ3FjVVdFbV83NUpWcXlhTjhaS1FVMjF3VEFSYzhkRzhuVU1jZlBVIn0.BCsvYxTHM4CO_OwQxL3lkJDdlw3UDjx2xN9MIXnbVzfTgFJmo_Es2xdH-fYs9EXfH_V53JgMWfUm7rBD_oE5efU..7_va6cnwClMsw7h7lqpm2tCrH9NkciM-g9UabdPWcOeIRmAf01NLYG7Wn8fFoohHlcGgd0nh7Jmo9nvHFi7sH6kOX7pplBnvLUoPrqeyW4TdXo_X8YThNKf9BFyWGyF6fjelbic5jSYClFaenMkTnjpHxFW1sWuiuZVmO1EOzrlNttWy.
]]></artwork>
        <t>After verification:</t>
        <artwork><![CDATA[
{
  "protectedHeader": {
    "alg": "HPKE-P256-SHA256-A128GCM",
    "enc": "dir",
    "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:vodHCqcUWEm_75JVqyaN8ZKQU21wTARc8dG8nUMcfPU"
  },
  "payload": {
    "urn:example:claim": true,
    "iss": "urn:example:issuer",
    "aud": "urn:example:audience",
    "iat": 1729785491,
    "exp": 1729792691
  }
}
]]></artwork>
      </section>
      <section anchor="json-example">
        <name>JSON Example</name>
        <t>A JSON Encoded JWE:</t>
        <artwork><![CDATA[
{
  "protected": "eyJhbGciOiJIUEtFLVAyNTYtU0hBMjU2LUExMjhHQ00iLCJlbmMiOiJkaXIiLCJraWQiOiJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6andrLXRodW1icHJpbnQ6c2hhLTI1NjpTNkFYZmRVXzZZZnp2dTBLRERKYjBzRnV3bklXUGs2TE1URXJZaFBiMzJzIiwicHNrX2lkIjoib3VyLXByZS1zaGFyZWQta2V5LWlkIiwiYXV0aF9raWQiOiJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6andrLXRodW1icHJpbnQ6c2hhLTI1NjpTNkFYZmRVXzZZZnp2dTBLRERKYjBzRnV3bklXUGs2TE1URXJZaFBiMzJzIn0",
  "encrypted_key": "BD7QVodtG-FwYASgb36zuTzUCc80aiYwS6JOOE-6_heUGyAZt-cU0818e4oYqP7ebBuW3KTM9EQA0vM5fWp6hj0",
  "ciphertext": "ZxqtYoomgVQGctnv1I_EBVI1NIeJ7qJw2iVtqwUw3fXa8FK-",
  "aad": "8J-PtOKAjeKYoO-4jyBiZXdhcmUgdGhlIGFhZCE"
}
]]></artwork>
        <t>After verification:</t>
        <artwork><![CDATA[
{
  "protectedHeader": {
    "alg": "HPKE-P256-SHA256-A128GCM",
    "enc": "dir",
    "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:S6AXfdU_6Yfzvu0KDDJb0sFuwnIWPk6LMTErYhPb32s",
    "psk_id": "our-pre-shared-key-id",
    "auth_kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:S6AXfdU_6Yfzvu0KDDJb0sFuwnIWPk6LMTErYhPb32s"
  },
  "plaintext": "🖤 this plaintext!",
  "additionalAuthenticatedData": "🏴‍☠️ beware the aad!"
}
]]></artwork>
      </section>
    </section>
    <section anchor="key-encryption">
      <name>Key Encryption</name>
      <t>HPKE based recipients can be added alongside existing <tt>ECDH-ES+A128KW</tt> or <tt>RSA-OAEP-384</tt> recipients because HPKE is only used to encrypt the content encryption key, and because the protected header used in content encryption is passed to HPKE as Additional Authenticated Data.</t>
      <t>In HPKE JWE Key Encryption:</t>
      <ul spacing="normal">
        <li>
          <t>The protected header <bcp14>MUST NOT</bcp14> contain an "alg".</t>
        </li>
        <li>
          <t>The protected header <bcp14>MUST</bcp14> contain an "enc" that is registered in both the IANA HPKE AEAD Identifiers Registry, and the IANA JSON Web Signature and Encryption Algorithms Registry.</t>
        </li>
        <li>
          <t>The recipient unprotected header parameters "psk_id" and "auth_kid" <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>The recipient unprotected header parameter "ek" <bcp14>MUST</bcp14> be present.</t>
        </li>
        <li>
          <t>The recipient unprotected header <bcp14>MUST</bcp14> contain a registered HPKE "alg" value.</t>
        </li>
        <li>
          <t>The "encrypted_key" <bcp14>MUST</bcp14> be the base64url encoded content encryption key as described in Step 15 in { Section 5.1 of RFC7516 }.</t>
        </li>
        <li>
          <t>The recipient "encrypted_key" is as described in { Section 7.2.1 of RFC7516 } .</t>
        </li>
        <li>
          <t>The "iv", "tag" JWE members <bcp14>MUST</bcp14> be present.</t>
        </li>
        <li>
          <t>The "aad" JWE member <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>The "ciphertext" <bcp14>MUST</bcp14> be the base64url encoded ciphertext as described in Step 19 in { Section 5.1 of RFC7516 }.</t>
        </li>
        <li>
          <t>The HPKE Setup info parameter <bcp14>MAY</bcp14> be used, and its values are not constrained by this specification. By default, it is empty unless apu or apv are present, in which case it will carry the JOSE context-specific data as defined in Section 4.6.2 of <xref target="RFC7518"/>.</t>
        </li>
      </ul>
      <section anchor="multiple-recipients">
        <name>Multiple Recipients</name>
        <t>For example:</t>
        <artwork><![CDATA[
{
  "protected": "eyJlbmMiOiJBMTI4R0NNIn0",
  "iv": "ZL0HDvZJizA6vyTV",
  "ciphertext": "Oq26x9vppULrGNzCn2jaB_Sl-Swjv7e0AcgnhUR5AtrjEf2v6jee09WN-Ne-HIGXBgQpgJPchg0eWNmgv4Ozi5I",
  "tag": "ULnlOiJRYfCzM_r5j9sLEQ",
  "aad": "cGF1bCBhdHJlaWRlcw",
  "recipients": [
    {
      "encrypted_key": "G3HmlpOgA4H1i_RQhT44Nw7svDwUqvNR",
      "header": {
        "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:cxQC_lWt22BIjH5AWSLHCZk_f-mU3-W4Ztcu5-ZbwTk",
        "alg": "ECDH-ES+A128KW",
        "epk": {
          "kty": "EC",
          "crv": "P-256",
          "x": "JnGWSQ90hlt0H7bfcgfaw2DZE-qqv_cwA4_Dn_CkLzE",
          "y": "6jw1AC5q9-qewwBh9DK5YzUHLOogToGDSpoYAJdNo-E"
        }
      }
    },
    {
      "encrypted_key": "pn6ED0ijngCiWF8Hd_PzTyayd2OmRF7QarTVfuWj6dw",
      "header": {
        "alg": "HPKE-P256-SHA256-A128GCM",
        "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:S6AXfdU_6Yfzvu0KDDJb0sFuwnIWPk6LMTErYhPb32s",
        "psk_id": "our-pre-shared-key-id",
        "auth_kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:S6AXfdU_6Yfzvu0KDDJb0sFuwnIWPk6LMTErYhPb32s",
        "ek": "BI41YDnhTTI6jSd7T62rLwzCCt_tBqN5LFooiZ7eXJsh01O0-h-BQ6JToKX9UXDw_3ylbXTiYWmPXl2fNmr4BeQ"
      }
    }
  ]
}
]]></artwork>
        <t>After verification:</t>
        <artwork><![CDATA[
{
  "plaintext": "🎵 My lungs taste the air of Time Blown past falling sands 🎵",
  "protectedHeader": {
    "enc": "A128GCM"
  },
  "unprotectedHeader": {
    "alg": "HPKE-P256-SHA256-A128GCM",
    "enc": "dir",
    "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:S6AXfdU_6Yfzvu0KDDJb0sFuwnIWPk6LMTErYhPb32s",
    "psk_id": "our-pre-shared-key-id",
    "auth_kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:S6AXfdU_6Yfzvu0KDDJb0sFuwnIWPk6LMTErYhPb32s",
    "ek": "BI41YDnhTTI6jSd7T62rLwzCCt_tBqN5LFooiZ7eXJsh01O0-h-BQ6JToKX9UXDw_3ylbXTiYWmPXl2fNmr4BeQ"
  },
  "additionalAuthenticatedData": "paul atreides"
}
]]></artwork>
      </section>
    </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 anchor="plaintext-compression">
        <name>Plaintext Compression</name>
        <t>Implementers are advised to review Section 3.6 of <xref target="RFC8725"/>, which states:
Compression of data <bcp14>SHOULD NOT</bcp14> be done before encryption, because such compressed data often reveals information about the plaintext.</t>
      </section>
      <section anchor="header-parameters">
        <name>Header Parameters</name>
        <t>Implementers are advised to review Section 3.10 of <xref target="RFC8725"/>, which comments on application processing of JWE Protected Headers.
Additionally, Unprotected Headers can contain similar information which an attacker could leverage to mount denial of service, forgery or injection attacks.</t>
      </section>
      <section anchor="ensure-cryptographic-keys-have-sufficient-entropy">
        <name>Ensure Cryptographic Keys Have Sufficient Entropy</name>
        <t>Implementers are advised to review Section 3.5 of <xref target="RFC8725"/>, which provides comments on entropy requirements for keys.
This guidance is relevant to both public and private keys used in both Key Encryption and Integrated Encryption.
Additionally, this guidance is applicable to content encryption keys used in Key Encryption mode.</t>
      </section>
      <section anchor="validate-cryptographic-inputs">
        <name>Validate Cryptographic Inputs</name>
        <t>Implementers are advised to review Section 3.4 of <xref target="RFC8725"/>, which provides comments on the validation of cryptographic inputs.
This guidance is relevant to both public and private keys used in both Key Encryption and Integrated Encryption, specifically focusing on the structure of the public and private keys.
These inputs are crucial for the HPKE KEM operations.</t>
      </section>
      <section anchor="use-appropriate-algorithms">
        <name>Use Appropriate Algorithms</name>
        <t>Implementers are advised to review Section 3.2 of <xref target="RFC8725"/>, which comments on the selection of appropriate algorithms.
This is guidance is relevant to both Key Encryption and Integrated Encryption.
When using Key Encryption, the strength of the content encryption algorithm should not be significantly different from the strengh of the Key Encryption algorithms used.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document adds entries to <xref target="JOSE-IANA"/>.</t>
      <section anchor="ciphersuite-registration">
        <name>Ciphersuite Registration</name>
        <t>This specification registers a number of ciphersuites for use with HPKE.
A ciphersuite is a group of algorithms, often sharing component algorithms such as hash functions, targeting a security level.
An HPKE ciphersuite, is composed of the following choices:</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 chosen from the HPKE IANA registry <xref target="HPKE-IANA"/>.</t>
        <t>For readability the algorithm ciphersuites labels are built according to the following scheme:</t>
        <artwork><![CDATA[
HPKE-<KEM>-<KDF>-<AEAD>
]]></artwork>
        <t>The "HPKE Mode" is described in 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>Implementations detect the use of modes by inspecting header parameters.</t>
      </section>
      <section anchor="json-web-signature-and-encryption-algorithms">
        <name>JSON Web Signature and Encryption Algorithms</name>
        <t>The following entries are added to the "JSON Web Signature and Encryption Algorithms" registry:</t>
        <section anchor="hpke-p256-sha256-a128gcm">
          <name>HPKE-P256-SHA256-A128GCM</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-P256-SHA256-A128GCM</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: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): TODO</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-p384-sha384-a256gcm">
          <name>HPKE-P384-SHA384-A256GCM</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-P384-SHA384-A256GCM</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: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): TODO</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-p521-sha512-a256gcm">
          <name>HPKE-P521-SHA512-A256GCM</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-P521-SHA512-A256GCM</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: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): TODO</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-x25519-sha256-a128gcm">
          <name>HPKE-X25519-SHA256-A128GCM</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-X25519-SHA256-A128GCM</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: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): TODO</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-x25519-sha256-chacha20poly1305">
          <name>HPKE-X25519-SHA256-ChaCha20Poly1305</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-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, enc"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Optional</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): TODO</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-x448-sha512-a256gcm">
          <name>HPKE-X448-SHA512-A256GCM</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-X448-SHA512-A256GCM</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: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): TODO</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-x448-sha512-chacha20poly1305">
          <name>HPKE-X448-SHA512-ChaCha20Poly1305</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-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: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): TODO</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="json-web-signature-and-encryption-header-parameters">
        <name>JSON Web Signature and Encryption Header Parameters</name>
        <t>The following entries are added to the "JSON Web Key Parameters" registry:</t>
        <section anchor="ek">
          <name>ek</name>
          <ul spacing="normal">
            <li>
              <t>Header Parameter Name: "ek"</t>
            </li>
            <li>
              <t>Header Parameter Description: An encapsulated key as defined in { Section 5.1.1 of RFC9180 }</t>
            </li>
            <li>
              <t>Header Parameter Usage Location(s): JWE</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
          </ul>
        </section>
        <section anchor="pskid">
          <name>psk_id</name>
          <ul spacing="normal">
            <li>
              <t>Header Parameter Name: "psk_id"</t>
            </li>
            <li>
              <t>Header Parameter Description: A key identifier (kid) for the pre-shared key as defined in { Section 5.1.2 of RFC9180 }</t>
            </li>
            <li>
              <t>Header Parameter Usage Location(s): JWE</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</t>
            </li>
          </ul>
        </section>
        <section anchor="authkid">
          <name>auth_kid</name>
          <ul spacing="normal">
            <li>
              <t>Header Parameter Name: "auth_kid"</t>
            </li>
            <li>
              <t>Header Parameter Description: A key identifier (kid) for the asymmetric key as defined in { Section 5.1.3 of RFC9180 }</t>
            </li>
            <li>
              <t>Header Parameter Usage Location(s): JWE</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s):   RFCXXXX</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="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>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="JOSE-IANA" target="https://www.iana.org/assignments/jose/jose.xhtml">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </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="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.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">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Ajitomi, Daisuke" initials="A." surname="Daisuke">
              <organization>bibital</organization>
            </author>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <date day="12" month="July" year="2024"/>
            <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-09"/>
        </reference>
      </references>
    </references>
    <?line 532?>

<section anchor="keys-used-in-examples">
      <name>Keys Used In Examples</name>
      <t>This private key and it implied public key are used the examples:</t>
      <sourcecode type="text"><![CDATA[
{
  "kid": "S6AXfdU_6Yfzvu0KDDJb0sFuwnIWPk6LMTErYhPb32s",
  "alg": "HPKE-P256-SHA256-A128GCM",
  "kty": "EC",
  "crv": "P-256",
  "x": "wt36K06T4T4APWfGtioqDBXCvRN9evqkZjNydib9MaM",
  "y": "eupgedeE_HAmVJ62kpSt2_EOoXb6e0y2YF1JPlfr1-I",
  "d": "O3KznUTAxw-ov-9ZokwNaJ289RgP9VxQc7GJthaXzWY"
}
]]></sourcecode>
      <t>This pre shared key is used in the examples:</t>
      <sourcecode type="text"><![CDATA[
{
  "kty": "oct",
  "kid": "our-pre-shared-key-id",
  "k": "anVnZW11anVnZW11Z29rb3Vub3N1cmlraXJla2FpamE"
}
]]></sourcecode>
    </section>
    <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, Aaron Parecki and Filip Skokan for their feedback.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Apply feedback from call for adoption.</t>
        </li>
        <li>
          <t>Provide examples of auth and psk modes for JSON and Compact Serializations</t>
        </li>
        <li>
          <t>Simplify description of HPKE modes</t>
        </li>
        <li>
          <t>Adjust IANA registration requests</t>
        </li>
        <li>
          <t>Remove HPKE Mode from named algorithms</t>
        </li>
        <li>
          <t>Fix AEAD named algorithms</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Created initial working group version from draft-rha-jose-hpke-encrypt-07</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+0823IqSXLvfEUv87DnjAUHEEJCsZ4drgIkQBIgkDY2mKK7
gIamu9XVDUJnteEfsPfN4Tfvgz/BjvCzP8U/YH+CM6uqbwjpSDNxdmfXOzFx
RDdVmVl5z6osUqlUwtVdg54qyQGjijVVGtuJo2vKpTcxdFU5p1ulZqrO1nZ1
y1Q+NC7Pax+Vje7OlVav21G6kwVVXaWnz0zdnCnE1GLDW91e7WMyQSYTh64j
OACKopsKfp1MqMSlM8vZnirM1RIJzVJNsgKKNIdM3ZRO3WlqYTGamttLmqIC
esqAScxNMG+y0hkDZO7WhjnNWr+eML3VhDqnCQ3GnCZUy2TUZB47VVzHowmg
4zBBHEqAnh5VPUd3t8nExnKWM8fybHgryFrSLbzUThNKihOMf/Eb/Ht5VeGv
Oa8SiTU1PcCkKD4EpDcJz4Ko5BCAI3vO8Gt8vyK6IYd9jwtMW84M3xNHncP7
ueva7PTTJxyGr/Q1TfvDPuGLTxPH2jD6CQF8SiYSCeYC68fEsEzAt6UsYeun
ym9cSz1QmOW4Dp0y+LRdyQ+uo6vugaJaqxU1XXgDTF8R2wYif5tIEM+dWw4u
HEhSlKlnGEIifd3xVsSgbEMc5Zpq2pYPAKqIqT8SlPmp0rGWOuHvVeDsqVIm
5gwIcyh/59AZH3VOHJO4ZClHWp7pogY0TU1OppJHS8vUXN35fobPaaAYlvuM
sAYxTcqUPlPn1pSa+iwOteThiuNw53xK2g2mAIaHtEndffBLoCQOwaVQZ0Hp
G1bd9kxdncfJOKPOipjbGBmEQ05PJOTvTYQTX6Zugup200rPpdQQuAVVXUen
0bdxivoOMdnKc2kUnwVTvnf9b9K6qXHWgMLEKB2Yuks1gI1WFieknVZaoGUs
QkcbVkqooZSjX8WJ6VFjmmoy5gHUChikZ7iga1HKVgLIeDJeIIzv55brS5wP
Azs9VXzDYAhO5+BgDVPr06vkmxbw3QUjQhO9rldy2WxRfjzJHuflx2L2JCM/
Hh9lC+HHk/DjsT/tOHeEH9EfpJqlTumUE6AEliP/AyaATsP34o10tdxzDumE
u03ieg7ddZwlAxwiONkVkxOJM6NuuP7NZpPWiUmEQwD/NzO5IQuHgP+kH+bu
ykgkkDvx1Z8UD2EZ8Bmd2vuJf0t8wEngH2Y66Nb2nStAL8//kSvgs7knV7qq
a4FjV3KZ3GEiBaErgf8qZAJoiOrCY3+uM4XZVNWnuspVT9HoVEff8Ba6gVWK
ByEK41vizfEtLeKZNZ1ShylEWYNNE9OFFwlbYINQotBwGkRA4kzQ7p1tiumP
oKq2QXTTpQ8u40QQ8JOqbuvAESWEkU4kOCaMVXKcuUUnPtFNEkA2FQKOfkXR
x/uYiQ0WJ4asKNiZqbOV8uG81v54gHEOmOToa/H91DNVsbjzav3jAV8yagaQ
giwFWiMr4YkA0TQdn4iBciKJD6VaqfoxAJQG9xtM5xiA8GgGoIDMbMda6xoA
n2wT3KhMrrIKkwE6JJuBXsIoBZwELhcg75An2c/8RCMt1QJCnIcqFmgETvVY
AEWwlmc2QEBa6NZK1zTwrolvIDK5jqV5fEkghzdo0+fP0qs8PeESiQKhhq4o
ICNuQi6YKT9GRWbAGhBzIlCSX7K4muyxA2qSCUTu0PnE9HgI9LqWYtA1dchM
MOMgAWs0Z6j3zLNtSCO46EBrGNcKZJptgelOdANFBDRfWsxVrjxgv7dCOUk2
8SkAHtCkkZcQAdYoMAgEHFIVJcJ1iCHtlHMDky+mJNuDXj95IP4qnS7/fF27
GjSva1X83GuULi6CDwk5otfoDi6q4adwZqXbbtc6VTEZ3iqxV4lku3SbFFqf
7F72m91O6SKJmurGdAjyR1zQhCooE8d2KKoeYQkQqeroE3iAOeXK5X/9MZsH
TfiFDDugCuIBAw88bEBxBTbLNLbyERi7TUA2RiHLAijEMBSwYN0lBmRqBAQ7
tzamMqcOBW5++xvkzG9PlV9NVDub/06+wAXHXvo8i73kPHv+5tlkwcQ9r/ag
CbgZe7/D6Ti9pdvYs8/3yMtf/doAm1VS2ZNff5fYp0J9yK100zKs2Xav+oOh
C4ufWoZhbbgz51WJTkIgIMkVg9iYQvAuyjliJGjkHyq1c/CJqAnciXApczvH
5ODpKZ1IvSnQ7AEgHAUCsJfXOICbV+gcpJcKTJ5rwstAWAQI9+30x0CR1EfC
R3snfICHpvtmVcOIUt+JKHtmlGIevLYTYEqMWarOv6pCgFFEgNkPKIxFcZhy
4v55oE9dcHxrnW5eyCGEUQM/N5aystBvAycxeMSC2bDGE6tvRW6Fzxg26MzZ
WdYBGrojQw5gA0AauhMZAITUfHef3oEY16gvgSKQHwhVjkSXpa/KgR+HB5wN
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
UkBUCqji7i4do23AMA+/sES4+MA+noodq4T40RIlLmyIN2F2e6p0bZFh4sVH
KOdnlN9/dEBA1JG/qZJSerF4VJWBjmPivyswgv9iJJUA4paBd/LHMj643612
owI6PMnjcvEPrvlVAe0Z+5UEBChCAcHDHgHBWxTQQUxCqDt/bRI6ymVxvUfZ
3JcltGfsV5IQYAolBPj2SAje/r+Q0Ch3dJQtvtXN7R/9VaQkUL3R0x38tbu6
OOMBPfyfy1xaxjZ7mDl6o7yeTfs5CW6XuLdL7wATyL8AEebzJ2/1hfvGfh1h
AaK/ucLnTH+7hb026ecjsh9vXT9jub2hctizrf7uAgK3d0IAz2oFuuQ7DjuI
pI7gOea+b2PaUDK/dN3m8/OiOriTuw/8Hlm2hrWfLhy+YHFa/Nqi5XnylxfO
l6oHbYvKh6WufQz2N+PV96ssyf15WeKfjL/GlOD0/KeyZec3ul5jy+Gfjy34
E1gToi5lozHDTWncy/VvOfiH5dGfmJGHizp8r+PPVoUnx2ie4mAV7+dJCGLH
S8FDNNEHInsT3ttu8Kb+jJ1mqudNVKJ5auMeFs4zhX6+ny9dDqdnwKP7anlU
WV93inR9v7xbdLaaPim2iQTLgVLPnlGN1saN0uqmVcgt7Z6bG9e61mhSoJlt
7raebV0aUyebkl1yfJ3dw/NHc9AvPWxS1jpVvLOWmw5p5U6K17PL4s3DlXp8
1oIIMnoc3ga9C5LnVIkYlh6edLzOXsEBS3UlR77UM5LkTRzEvDHvhtms//cu
V3Qmhzfe5LCTVVeGQ0Ytg+TqNlnVIi0WJXVpWhuDajPu+BOfT+XmNdX+Pjkl
BqPJp73b3f7JIuOUi/3Zz59/3UxV+Q+hplT/B2GfntLg35WNOI/EA37u+om5
VNrEdbkFaORAaeI1VeVC99iagN0cKCXiAB6wIaouda60dd3QbaW3tJbE9O1U
d5QppRraAD8C8A1FaUD0sJztCytKZbKJxLf8ZyC2AQCxCjxQEr/dp1nyEORb
PLVdi358ITW+aerhDh4eKLGl3Imb+pf58LV/yS92I50BsB43velWbiQGd2DD
34NB0rSFx9zYVrd/0HDvUebimGu6stY03IcXC8Df/NQiJwMwsK4/iB34Z98B
JzLIiYpD5S9W6C6efm3kL+KK0wiQNT+95/DFz/46c7LnV38zx4n/A4WeShWz
WAAA

-->

</rfc>
