<?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.38 (Ruby 3.2.3) -->
<?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-17" category="std" consensus="true" submissionType="IETF" updates="7516" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="Use of HPKE in JWE">Use of Hybrid Public Key Encryption (HPKE) with JSON Web Encryption (JWE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-jose-hpke-encrypt-17"/>
    <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 abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author fullname="Aritra Banerjee">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>London</city>
          <country>United Kingdom</country>
        </postal>
        <email>aritra.banerjee@nokia.com</email>
      </address>
    </author>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization>Tradeverifyd</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@or13.io</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="2026" month="May" day="12"/>
    <area>Security</area>
    <workgroup>JOSE</workgroup>
    <keyword>Hybrid Public Key Encryption</keyword>
    <keyword>HPKE</keyword>
    <keyword>JSON Web Encryption</keyword>
    <keyword>JWE</keyword>
    <keyword>JSON Object Signing and Encryption</keyword>
    <keyword>JOSE</keyword>
    <keyword>Hybrid</keyword>
    <abstract>
      <?line 111?>

<t>This specification defines how to use Hybrid Public Key Encryption (HPKE) with
JSON Web Encryption (JWE).
HPKE enables public key encryption
of arbitrary-sized plaintexts to a recipient's public key, and provides security
against adaptive chosen ciphertext attacks.
This specification chooses a specific subset of the HPKE features to use with JWE.</t>
      <t>This specification updates RFC 7516 (JWE) to enable use of
Integrated Encryption as a Key Management Mode.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-jose.github.io/draft-ietf-jose-hpke-encrypt/draft-ietf-jose-hpke-encrypt.html"/>.
        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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-jose/draft-ietf-jose-hpke-encrypt"/>.</t>
    </note>
  </front>
  <middle>
    <?line 123?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Hybrid Public Key Encryption (HPKE) <xref target="I-D.ietf-hpke-hpke"/> is a public key encryption
(PKE) scheme that provides encryption of arbitrary-sized plaintexts to a
recipient's public key.
This specification enables JSON Web Encryption (JWE) <xref target="RFC7516"/> to leverage HPKE,
bringing support for HPKE encryption and KEMs to JWE,
and the possibility of utilizing future HPKE algorithms.</t>
    </section>
    <section anchor="notational-conventions">
      <name>Notational Conventions</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="terminology">
      <name>Terminology</name>
      <t>This specification uses the following abbreviations and terms:</t>
      <ul spacing="normal">
        <li>
          <t>Content Encryption Key (CEK), Header Parameter, and JOSE Header,
as defined in <xref target="RFC7516"/>.</t>
        </li>
        <li>
          <t>Hybrid Public Key Encryption (HPKE), as defined in <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>pkR is the public key of the recipient, as defined in <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>skR is the private key of the recipient, as defined in <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Key Encapsulation Mechanism (KEM), per <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Key Derivation Function (KDF), per <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Authenticated Encryption with Associated Data (AEAD); see <xref target="I-D.ietf-hpke-hpke"/> and <xref target="RFC7516"/>.</t>
        </li>
        <li>
          <t>Additional Authenticated Data (AAD); see <xref target="I-D.ietf-hpke-hpke"/> and <xref target="RFC7516"/>.</t>
        </li>
      </ul>
      <t>This specification defines the following terms:</t>
      <dl>
        <dt>Key Management Mode</dt>
        <dd>
          <t>A method of determining whether a Content Encryption Key (CEK) value is used
and, if so, what CEK value to use.
Each method used for making these determinations uses a
specific Key Management Mode.
Key Management Modes employed by this specification are
Key Encryption,
Key Wrapping,
Direct Key Agreement,
Key Agreement with Key Wrapping,
Direct Encryption,
and
Integrated Encryption.
Of these, only Integrated Encryption is defined by this
specification; the remaining modes are defined in <xref target="RFC7516"/>
and are included here because this specification replaces the
Message Encryption and Message Decryption procedures
of <xref target="RFC7516"/> in their entirety.</t>
        </dd>
        <dt>Integrated Encryption</dt>
        <dd>
          <t>A Key Management Mode in which the plaintext is directly encrypted
without the use of a Content Encryption Key (CEK).
This mode corresponds to the Single-Shot API defined in
<xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>, which is used in
cases where applications encrypt only a single message to
a recipient's public key. This mode is appropriate when there is
exactly one recipient and no separate content encryption algorithm
is required.</t>
        </dd>
      </dl>
      <t>The definition of Key Management Mode above replaces the one in JWE <xref target="RFC7516"/>.</t>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>This specification defines the use of HPKE in JWE for two Key Management Modes:</t>
      <ul spacing="normal">
        <li>
          <t>Key Encryption, and</t>
        </li>
        <li>
          <t>Integrated Encryption.</t>
        </li>
      </ul>
      <t>It specifies the Integrated Encryption Key Management Mode and registers the
corresponding JWE algorithm identifiers for both modes. Distinct JWE algorithms
are defined for Key Encryption and Integrated Encryption
so that they are fully specified, as required by <xref target="RFC9864"/>.</t>
      <t>When the Key Management Mode is Integrated Encryption, HPKE is used to directly
encrypt the plaintext, and the "enc" header parameter <bcp14>MUST NOT</bcp14> be included.
This specification updates the definition of the "enc" header parameter in
<xref section="4.1.2" sectionFormat="of" target="RFC7516"/> to require that it be omitted when Integrated
Encryption is used.</t>
      <t>When the Key Management Mode is Key Encryption,
HPKE is used to encrypt the Content Encryption Key (CEK).
In this mode, the "enc" header parameter is used as specified in JWE <xref target="RFC7516"/>.
The HPKE AEAD encryption function used internally by HPKE
is distinct from the JWE AEAD algorithm specified in "enc".</t>
      <t>In both Key Management Modes,
the HPKE key encapsulation mechanism (KEM), key derivation function (KDF),
and authenticated encryption with additional data (AEAD) encryption function
utilized depend on the JWE algorithm used.</t>
      <t>HPKE supports two modes, which are described in Table 1 of <xref target="I-D.ietf-hpke-hpke"/>.
In this specification, both "mode_base" and "mode_psk" are supported
for both Key Management Modes.
When the "psk_id" header parameter is present, the HPKE mode is "mode_psk";
otherwise, the HPKE mode is "mode_base".</t>
      <t>JWE supports two kinds of serializations:</t>
      <ul spacing="normal">
        <li>
          <t>the JWE Compact Serialization described in <xref section="3.1" sectionFormat="of" target="RFC7516"/>, and</t>
        </li>
        <li>
          <t>the JWE JSON Serialization described in <xref section="3.2" sectionFormat="of" target="RFC7516"/>.</t>
        </li>
      </ul>
      <t>Certain JWE features are only supported in specific serializations.
For example, the JWE Compact Serialization does not support:</t>
      <ul spacing="normal">
        <li>
          <t>the additional authenticated data header parameter "aad",</t>
        </li>
        <li>
          <t>multiple recipients, and</t>
        </li>
        <li>
          <t>unprotected header parameters.</t>
        </li>
      </ul>
      <t>Key Encryption can be used with the "aad" header parameter
when using the JWE JSON Serialization.
Single recipient Key Encryption with no "aad" header parameter can be expressed
in the JWE Compact Serialization.</t>
      <section anchor="encapsulated-secrets">
        <name>Encapsulated Secrets</name>
        <t>HPKE encapsulated secret is defined in <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        <t>When using Integrated Encryption, the JWE Encrypted Key of the sole recipient
is the HPKE encapsulated secret.</t>
        <t>When using Key Encryption, each recipient's JWE Encrypted Key
is the encrypted content encryption key, and the value of header parameter "ek"
is the base64url encoding of the HPKE encapsulated secret.</t>
      </section>
    </section>
    <section anchor="integrated-encryption">
      <name>Integrated Encryption</name>
      <t>When using Integrated Encryption with HPKE:</t>
      <ul spacing="normal">
        <li>
          <t>The protected header <bcp14>MUST</bcp14> contain an "alg" value that is
an HPKE JWE algorithm using Integrated Encryption.</t>
        </li>
        <li>
          <t>The "enc" header parameter <bcp14>MUST NOT</bcp14> be present.
This is because no separate content encryption algorithm is used in this mode.</t>
        </li>
        <li>
          <t>The protected header parameter "psk_id" <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>The protected header parameter "ek" <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
        <li>
          <t>There <bcp14>MUST</bcp14> be exactly one recipient.</t>
        </li>
        <li>
          <t>The JWE Encrypted Key <bcp14>MUST</bcp14> be the encapsulated secret, as defined in <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>The JWE Initialization Vector and JWE Authentication Tag <bcp14>MUST</bcp14> be the empty octet sequence.</t>
        </li>
        <li>
          <t>The JWE AAD <bcp14>MAY</bcp14> be present when using the JWE JSON Serialization.</t>
        </li>
        <li>
          <t>The HPKE aad parameter <bcp14>MUST</bcp14> be set to the "Additional Authenticated Data encryption parameter" value specified in Step 15 of <xref target="encryption"/>.</t>
        </li>
        <li>
          <t>The HPKE info parameter defaults to the empty octet sequence;
mutually known private information (a concept also utilized in <xref target="NIST.SP.800-56Ar3"/>)
<bcp14>MAY</bcp14> be used instead so the application can include it during key derivation.</t>
        </li>
        <li>
          <t>The JWE Ciphertext is the ciphertext from the HPKE encryption,
as defined in <xref section="5.2" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
      </ul>
      <section anchor="int-algs">
        <name>Integrated Encryption Algorithms using HPKE</name>
        <t>The following JWE algorithms using HPKE are defined for use with
Integrated Encryption as the Key Management Mode:</t>
        <figure anchor="ciphersuite-int-algs">
          <name>Algorithms using HPKE for Integrated Encryption</name>
          <artwork><![CDATA[
+--------+------------------+-------------+------------------+
| "alg"  | HPKE KEM         | HPKE KDF    | HPKE AEAD        |
+--------+------------------+-------------+------------------+
| HPKE-0 | DHKEM(P-256,     | HKDF-SHA256 | AES-128-GCM      |
|        |   HKDF-SHA256)   |             |                  |
| HPKE-1 | DHKEM(P-384,     | HKDF-SHA384 | AES-256-GCM      |
|        |   HKDF-SHA384)   |             |                  |
| HPKE-2 | DHKEM(P-521,     | HKDF-SHA512 | AES-256-GCM      |
|        |   HKDF-SHA512)   |             |                  |
| HPKE-3 | DHKEM(X25519,    | HKDF-SHA256 | AES-128-GCM      |
|        |   HKDF-SHA256)   |             |                  |
| HPKE-4 | DHKEM(X25519,    | HKDF-SHA256 | ChaCha20Poly1305 |
|        |   HKDF-SHA256)   |             |                  |
| HPKE-5 | DHKEM(X448,      | HKDF-SHA512 | AES-256-GCM      |
|        |   HKDF-SHA512)   |             |                  |
| HPKE-6 | DHKEM(X448,      | HKDF-SHA512 | ChaCha20Poly1305 |
|        |   HKDF-SHA512)   |             |                  |
| HPKE-7 | DHKEM(P-256,     | HKDF-SHA256 | AES-256-GCM      |
|        |   HKDF-SHA256)   |             |                  |
+--------+------------------+-------------+------------------+
]]></artwork>
        </figure>
        <t>The HPKE KEM, KDF, and AEAD values are chosen from the IANA HPKE registry <xref target="IANA.HPKE"/>.</t>
      </section>
      <section anchor="compact-example">
        <name>JWE Compact Serialization Example</name>
        <t>Below is an example of a JWE using the Compact Serialization and Integrated Encryption with HPKE:</t>
        <artwork><![CDATA[
eyJhbGciOiJIUEtFLTAiLCJraWQiOiJ5Q25mYm1ZTVpjV3JLRHRfRGpOZWJS
Q0IxdnhWb3F2NHVtSjRXSzhSWWprIn0.BLAJX8adrFsDKaoJAc3iy2dq-6jE
H3Uv-bSgqIoDeREqpWglMoTS67XsXere1ZYxiQKEFU6MbWe8O7vmdlSmcUk..
NcN9ew5aijn8W7piLVRU8r2cOP0JKqxOF4RllVsJM4qsAfVXW5Ka6so9zdUmX
XNOXyCEk0wV_s8ICAnD4LbRa5TkhTeuhijIfAt9bQ2fMLOeyed3WyArs8yaMra
a9Zbh4i6SaHunM7jU_xoz_N2WbykSOSySmCO49H4mP3jLW9L_TYQfeVfYsrB8
clqokZ8h-3eQGNwmOPtkjWdpAfaHUsp4-HC9nRd6yrTU6mV65Nn2iYynu3Xkg
y2Lm-kQKDavIEW3PBpEeiw6mtPJE9o8sT-0lZ9kpWtqog2XbNGEfjSOjujvNe
1b0g4-FdNFMFO_fo0rxe902W1pGT7znv4Q-xBkIydK4ZwjiFN6dAXutnococ3
7A0Hr5esPLwHRTTrBFw.
]]></artwork>
        <t>Note: Line breaks are for display purposes only.</t>
        <t>The key used for this example is in <xref target="int-key"/>.</t>
      </section>
      <section anchor="flattened-example">
        <name>JWE JSON Serialization Example</name>
        <t>Below is an example of a JWE using the JWE JSON Serialization and Integrated Encryption with HPKE:</t>
        <artwork><![CDATA[
{
  "ciphertext": "LabI8_KIPDbymUSbyVctj8AfISXQ07sMt1xQ1lrS-0h
    eU2jjejpQIK75K1KXcvwn15E6Kil_tJ6LBcYCu02O1H8_aooJGuoLw1v
    EzQn16h498YX9e2SA2IcVrJTkcCjL7YpF9fsAF3JEzGfsmmrpZPPVdxCn
    7g8dkGRcyulnHrNvBu4BFtub-URtf-nYCFIJHZ4k-ul9fDddquicFzCxQ
    onx66-ZX5nbj6azHG65tAZntd6VFkRgihdxTvIpvTS4gfulQeKyShbiw-
    OCJNbzFdEnOKEMnsyqRjwG7iVrFEilFAMsvLJ14-lcuR5btIkUntIwlnsf
    Ua2Ytk33znCfAFN0wYukdDvJe-V0nnNUFlOeLyYV0eEGisgC9dQQ1kFu3g",
  "encrypted_key": "BAOlZ-VnbhQu4NOlTlDAVYwUJB-Q6YcWwnRNWK6Y
    LSiHHlW4rN0qUzBJ3Rc2_y8nkasn8nUVGBzdq7OhdKKiLq4",
  "aad": "VGhlIEZlbGxvd3NoaXAgb2YgdGhlIFJpbmc",
  "protected": "eyJhbGciOiJIUEtFLTAiLCJraWQiOiJ5Q25mYm1ZTVpj
    V3JLRHRfRGpOZWJSQ0IxdnhWb3F2NHVtSjRXSzhSWWprIn0"
}
]]></artwork>
        <t>Note: Line breaks are for display purposes only.</t>
        <t>The key used for this example is in <xref target="int-key"/>.</t>
      </section>
    </section>
    <section anchor="key-encryption">
      <name>Key Encryption</name>
      <t>When using the JWE JSON Serialization,
recipients using Key Encryption with HPKE can be added alongside other recipients
(e.g., those using "ECDH-ES+A128KW" or "RSA-OAEP-256"),
since HPKE is used to encrypt the Content Encryption Key (CEK).</t>
      <t>When using Key Encryption with HPKE:</t>
      <ul spacing="normal">
        <li>
          <t>The "alg" header parameter <bcp14>MUST</bcp14> be a HPKE JWE algorithm using Key Encryption.</t>
        </li>
        <li>
          <t>The header parameter "psk_id" <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>The header parameter "ek" <bcp14>MUST</bcp14> be present and contain the base64url-encoded HPKE encapsulated secret.</t>
        </li>
        <li>
          <t>The HPKE aad parameter defaults to the empty octet sequence.</t>
        </li>
        <li>
          <t>The HPKE info parameter is set to the value of the "Recipient_structure" defined below.</t>
        </li>
        <li>
          <t>THE HPKE plaintext <bcp14>MUST</bcp14> be set to the CEK.</t>
        </li>
        <li>
          <t>The recipient's JWE Encrypted Key is the ciphertext from the HPKE Encryption,
as defined in <xref section="5.2" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
      </ul>
      <section anchor="recipient_structure">
        <name>Recipient_structure</name>
        <t>The "Recipient_structure" used as the value of the HPKE info parameter
when performing Key Encryption with HPKE
provides context information used in key derivation.
To ensure compactness and interoperability,
this structure is encoded in a binary format.
The encoding is as follows:</t>
        <artwork><![CDATA[
Recipient_structure = ASCII("JOSE-HPKE rcpt") ||
                      BYTE(255) ||
                      ASCII(content_encryption_alg) ||
                      BYTE(255) ||
                      recipient_extra_info
]]></artwork>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t>ASCII("JOSE-HPKE rcpt"): A fixed ASCII string identifying the context of the structure.</t>
          </li>
          <li>
            <t>BYTE(255): A separator byte (0xFF) used to delimit fields.</t>
          </li>
          <li>
            <t>ASCII(content_encryption_alg): Identifies the content encryption algorithm
with which the HPKE-encrypted Content Encryption Key (CEK) is used.
Its value <bcp14>MUST</bcp14> be the "enc" (encryption algorithm) header parameter value
in the JOSE Header.
This field provides JWE context information to the HPKE key schedule,
which ensures that the encapsulated secret is bound to the selected content encryption algorithm.</t>
          </li>
          <li>
            <t>BYTE(255): A separator byte (0xFF) used to delimit fields.</t>
          </li>
          <li>
            <t>recipient_extra_info: An octet string containing additional context information
that the application includes in the key derivation.
Mutually known private information (a concept also utilized in <xref target="NIST.SP.800-56Ar3"/>) <bcp14>MAY</bcp14> be used in this input parameter.
If no additional context information is provided, this field <bcp14>MUST</bcp14> be the empty octet sequence.</t>
          </li>
        </ul>
        <t>Note that Integrated Encryption does not use the "Recipient_structure" because the JWE Protected Header and JWE AAD are included in the HPKE aad value, which binds these parameters to the ciphertext.</t>
        <section anchor="recipientstructure-example">
          <name>Recipient_structure Example</name>
          <t>The "Recipient_structure" encoded in binary as specified in <xref target="recipient_structure"/>, and using the field values
(content_encryption_alg = "A128GCM", recipient_extra_info = ""),
results in the following byte sequence:</t>
          <artwork><![CDATA[
"JOSE-HPKE rcpt\xffA128GCM\xff"
]]></artwork>
          <t>The corresponding hexadecimal representation is:</t>
          <artwork><![CDATA[
4a4f53452d48504b452072637074ff4131323847434dff
]]></artwork>
          <t>This value is used as the HPKE "info" parameter when performing Key Encryption with HPKE.</t>
        </section>
      </section>
      <section anchor="ke-algs">
        <name>Key Encryption Algorithms using HPKE</name>
        <t>The following JWE algorithms using HPKE are defined for use with
Key Encryption as the Key Management Mode:</t>
        <figure anchor="ciphersuite-ke-algs">
          <name>Algorithms using HPKE for Key Encryption</name>
          <artwork><![CDATA[
+-----------+------------------+-------------+------------------+
| "alg"     | HPKE KEM         | HPKE KDF    | HPKE AEAD        |
+-----------+------------------+-------------+------------------+
| HPKE-0-KE | DHKEM(P-256,     | HKDF-SHA256 | AES-128-GCM      |
|           |   HKDF-SHA256)   |             |                  |
| HPKE-1-KE | DHKEM(P-384,     | HKDF-SHA384 | AES-256-GCM      |
|           |   HKDF-SHA384)   |             |                  |
| HPKE-2-KE | DHKEM(P-521,     | HKDF-SHA512 | AES-256-GCM      |
|           |   HKDF-SHA512)   |             |                  |
| HPKE-3-KE | DHKEM(X25519,    | HKDF-SHA256 | AES-128-GCM      |
|           |   HKDF-SHA256)   |             |                  |
| HPKE-4-KE | DHKEM(X25519,    | HKDF-SHA256 | ChaCha20Poly1305 |
|           |   HKDF-SHA256)   |             |                  |
| HPKE-5-KE | DHKEM(X448,      | HKDF-SHA512 | AES-256-GCM      |
|           |   HKDF-SHA512)   |             |                  |
| HPKE-6-KE | DHKEM(X448,      | HKDF-SHA512 | ChaCha20Poly1305 |
|           |   HKDF-SHA512)   |             |                  |
| HPKE-7-KE | DHKEM(P-256,     | HKDF-SHA256 | AES-256-GCM      |
|           |   HKDF-SHA256)   |             |                  |
+-----------+------------------+-------------+------------------+
]]></artwork>
        </figure>
        <t>The HPKE KEM, KDF, and AEAD values are chosen from the IANA HPKE registry <xref target="IANA.HPKE"/>.</t>
      </section>
      <section anchor="general-example">
        <name>General JWE JSON Serialization Example</name>
        <t>Below is an example of a JWE using the General JSON Serialization and Key Encryption with HPKE:</t>
        <artwork><![CDATA[
{
  "ciphertext": "uF1XBbVZWhYm_pDbeJvI_fkuqFJiKd1WMP3O_BAGOP-L
    kpTLE3Et2VQNcOpPAIBfyx8rUzshGqiOFOWzcoWZ3mIwYuDvvAW3-P1RC
    S8Dtq70JRvahO5O8sAN1vzJg8_dyBPnwsQY6Cy3RhMD6sSSCjjSw0FYmm
    x67IiI2zJ6Wr8z69k0f34ZTh43k4C-pTwaUSvjl2XI_YrUgdDVYmY_MJ5
    vmlPTcceMaefP8Onz_fx5xOcGfnVBVz2gpMQPuQL8k5Rk5KJvPGfFfN6hr
    gWkK_LDzi4lrfnIrvNsk3BCBeZPpc-n19-u7W4-GQxLjAlVyMHeGk5K4tU
    6gHB8PnnQ4ND5ZTtyXrJWQW-Qr1iFev6g",
  "iv": "mLiHjYaQA42nPm1L",
  "recipients": [
    {
      "encrypted_key": "hU6b0hp4-y4ZoK1Qz8YWmDmqDmgTto3HW25-RyPhcLU",
      "header": {
        "alg": "HPKE-0-KE",
        "kid": "9CfUPiGcAcTp7oXgVbDStw2FEjka-_KHU_i-X3XMCEA",
        "ek": "BGWPWLoD5BUjFEDIjMS-yvtcCXBn5A-kuv2RjzUY_2hKUjg
          ZINqtEy1aHZ8dWxAiyApV5JafG76W8O_yZzy5T54"
      }
    }
  ],
  "tag": "K22C64ZhFABEu2S2F00PLg",
  "aad": "VGhlIEZlbGxvd3NoaXAgb2YgdGhlIFJpbmc",
  "protected": "eyJlbmMiOiJBMTI4R0NNIn0"
}
]]></artwork>
        <t>Note: Line breaks are for display purposes only.</t>
        <t>The key used for this example is in <xref target="ke-key"/>.</t>
      </section>
    </section>
    <section anchor="producing-and-consuming-jwes">
      <name>Producing and Consuming JWEs</name>
      <t>Sections 5.1 (Message Encryption) and 5.2 (Message Decryption) of <xref target="RFC7516"/>
are replaced by the following sections,
which add processing rules for using Integrated Encryption as the Key Management Mode.</t>
      <section anchor="encryption">
        <name>Message Encryption</name>
        <t>The message encryption process is as follows.
The order of the steps is not significant in cases where
there are no dependencies between the inputs and outputs of the steps.</t>
        <ol spacing="normal" type="1"><li>
            <t>Determine the Key Management Mode employed by the algorithm
used to determine the Content Encryption Key value.
(This is the algorithm recorded in the
"alg" (algorithm)
Header Parameter of the resulting JWE.)</t>
          </li>
          <li>
            <t>When Key Wrapping, Key Encryption,
or Key Agreement with Key Wrapping are employed,
generate a random CEK value to use for subsequent steps
unless one was already generated for a previously
processed recipient, in which case, let that be the one used
for subsequent steps.
See <xref target="RFC8937"/> for
considerations on generating random values.
The CEK <bcp14>MUST</bcp14> have a length equal to that
required for the content encryption algorithm.</t>
          </li>
          <li>
            <t>When Direct Key Agreement or Key Agreement with Key Wrapping
are employed, use the key agreement algorithm
to compute the value of the agreed upon key.
When Direct Key Agreement is employed,
let the CEK be the agreed upon key.
When Key Agreement with Key Wrapping is employed,
the agreed upon key will be used to wrap the CEK.</t>
          </li>
          <li>
            <t>When Key Wrapping, Key Encryption,
or Key Agreement with Key Wrapping are employed,
encrypt the CEK to the recipient and let the result be the
JWE Encrypted Key.</t>
          </li>
          <li>
            <t>When Direct Key Agreement or Direct Encryption are employed,
let the JWE Encrypted Key be the empty octet sequence.</t>
          </li>
          <li>
            <t>When Direct Encryption is employed,
let the CEK be the shared symmetric key.</t>
          </li>
          <li>
            <t>When Integrated Encryption is employed,
let the JWE Encrypted Key be as specified by the Integrated Encryption algorithm.</t>
          </li>
          <li>
            <t>Compute the encoded key value BASE64URL(JWE Encrypted Key).</t>
          </li>
          <li>
            <t>If the JWE JSON Serialization is being used, and
there are multiple recipients, repeat this process
(steps 1-8)
for each recipient.</t>
          </li>
          <li>
            <t>Generate a random JWE Initialization Vector of the correct size
for the content encryption algorithm (if required for the algorithm);
otherwise, let the JWE Initialization Vector be the empty octet sequence.</t>
          </li>
          <li>
            <t>Compute the encoded Initialization Vector value
BASE64URL(JWE Initialization Vector).</t>
          </li>
          <li>
            <t>If a "zip" parameter was included,
compress the plaintext using the specified compression algorithm
and let M be the octet sequence representing the compressed plaintext;
otherwise, let M be the octet sequence representing the plaintext.</t>
          </li>
          <li>
            <t>Create the JSON object(s) containing the desired set of Header Parameters,
which together comprise the JOSE Header: one or more of the JWE Protected
Header, the JWE Shared Unprotected
Header, and the JWE Per-Recipient Unprotected Header.</t>
          </li>
          <li>
            <t>Compute the Encoded Protected Header value
BASE64URL(UTF8(JWE Protected Header)).
If the JWE Protected Header is not present
(which can only happen when using the JWE JSON Serialization
and no "protected" member is present),
let this value be the empty string.</t>
          </li>
          <li>
            <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>
          </li>
          <li>
            <t>If Integrated Encryption is not being employed,
encrypt M using the CEK, the JWE Initialization Vector, and
the Additional Authenticated Data value
using the specified content encryption algorithm
to create the JWE Ciphertext value and the JWE Authentication Tag
(which is the Authentication Tag output from the encryption operation).</t>
          </li>
          <li>
            <t>If Integrated Encryption is being employed,
encrypt M
using the specified Integrated Encryption algorithm
to create the JWE Ciphertext value.
Let the JWE Authentication Tag be the empty octet sequence.</t>
          </li>
          <li>
            <t>Compute the encoded ciphertext value BASE64URL(JWE Ciphertext).</t>
          </li>
          <li>
            <t>Compute the encoded Authentication Tag value
BASE64URL(JWE Authentication Tag).</t>
          </li>
          <li>
            <t>If a JWE AAD value is present,
compute the encoded AAD value BASE64URL(JWE AAD).</t>
          </li>
          <li>
            <t>Create the desired serialized output.
The Compact Serialization of this result is the string
BASE64URL(UTF8(JWE Protected Header))
|| '.' || BASE64URL(JWE Encrypted Key)
|| '.' || BASE64URL(JWE Initialization Vector)
|| '.' || BASE64URL(JWE Ciphertext)
|| '.' || BASE64URL(JWE Authentication Tag).
The JWE JSON Serialization is described in <xref section="7.2" sectionFormat="of" target="RFC7516"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="decryption">
        <name>Message Decryption</name>
        <t>The message decryption process is the reverse of the
encryption process.
The order of the steps is not significant in cases where
there are no dependencies between the inputs and outputs of the steps.
If any of these steps fail, the encrypted content cannot be validated.</t>
        <t>When there are multiple recipients,
it is an application decision which of the recipients' encrypted content
must successfully validate for the JWE to be accepted.
In some cases, encrypted content for all recipients must successfully validate
or the JWE will be considered invalid.
In other cases, only the encrypted content for a single recipient
needs to be successfully validated.
However, in all cases, the encrypted content for at least one recipient
<bcp14>MUST</bcp14> successfully validate or the JWE <bcp14>MUST</bcp14> be considered invalid.</t>
        <ol spacing="normal" type="1"><li>
            <t>Parse the JWE representation to extract the serialized values
for the components of the JWE.
When using the JWE Compact Serialization,
these components are
the base64url-encoded representations of
the JWE Protected Header,
the JWE Encrypted Key,
the JWE Initialization Vector,
the JWE Ciphertext, and
the JWE Authentication Tag,
and when using the JWE JSON Serialization,
these components also include the base64url-encoded representation of
the JWE AAD and the unencoded
JWE Shared Unprotected Header and
JWE Per-Recipient Unprotected Header values.
When using the JWE Compact Serialization,
the JWE Protected Header,
the JWE Encrypted Key,
the JWE Initialization Vector,
the JWE Ciphertext, and
the JWE Authentication Tag
are represented as base64url-encoded values in that order,
with each value being separated from the next by a single period ('.') character,
resulting in exactly four delimiting period characters being used.
The JWE JSON Serialization
is described in <xref section="7.2" sectionFormat="of" target="RFC7516"/>.</t>
          </li>
          <li>
            <t>Base64url decode the encoded representations of
the JWE Protected Header,
the JWE Encrypted Key,
the JWE Initialization Vector,
the JWE Ciphertext,
the JWE Authentication Tag, and
the JWE AAD,
following the restriction that no line breaks, whitespace, or other additional characters have been used.</t>
          </li>
          <li>
            <t>Verify that the octet sequence resulting from decoding the encoded JWE Protected Header
is a UTF-8-encoded representation of
a completely valid JSON object
conforming to <xref target="RFC8259"/>;
let the JWE Protected Header be this JSON object.</t>
          </li>
          <li>
            <t>If using the JWE Compact Serialization, let the JOSE Header be the
JWE Protected Header.
Otherwise, when using the JWE JSON Serialization,
let the JOSE Header be the union of
the members of the JWE Protected Header,
the JWE Shared Unprotected Header and
the corresponding JWE Per-Recipient Unprotected Header,
all of which must be completely valid JSON objects.
During this step,
verify that the resulting JOSE Header does not contain duplicate
Header Parameter names.
When using the JWE JSON Serialization, this restriction includes
that the same Header Parameter name also <bcp14>MUST NOT</bcp14> occur in
distinct JSON object values that together comprise the JOSE Header.</t>
          </li>
          <li>
            <t>Verify that the implementation understands and can process
all fields that it is required to support,
whether required by this specification,
by the algorithms being used,
or by the "crit" Header Parameter value,
and that the values of those parameters are also understood and supported.</t>
          </li>
          <li>
            <t>Determine the Key Management Mode employed by the algorithm
specified by the
"alg" (algorithm) Header Parameter.</t>
          </li>
          <li>
            <t>If using Integrated Encryption, Direct Encryption or Direct Key Agreement,
verify that there is exactly one recipient.</t>
          </li>
          <li>
            <t>Verify that the JWE uses a key known to the recipient.</t>
          </li>
          <li>
            <t>When Direct Key Agreement or Key Agreement with Key Wrapping
are employed, use the key agreement algorithm
to compute the value of the agreed upon key.
When Direct Key Agreement is employed,
let the CEK be the agreed upon key.
When Key Agreement with Key Wrapping is employed,
the agreed upon key will be used to decrypt the JWE Encrypted Key.</t>
          </li>
          <li>
            <t>When Key Wrapping, Key Encryption,
or Key Agreement with Key Wrapping are employed,
decrypt the JWE Encrypted Key to produce the CEK.
The CEK <bcp14>MUST</bcp14> have a length equal to that
required for the content encryption algorithm.
Note that when there are multiple recipients,
each recipient will only be able to decrypt JWE Encrypted Key values
that were encrypted to a key in that recipient's possession.
It is therefore normal to only be able to decrypt one of the
per-recipient JWE Encrypted Key values to obtain the CEK value.
Also, see <xref section="11.5" sectionFormat="of" target="RFC7516"/> for security considerations
on mitigating timing attacks.</t>
          </li>
          <li>
            <t>When Direct Key Agreement or Direct Encryption are employed,
verify that the JWE Encrypted Key value is an empty octet sequence.</t>
          </li>
          <li>
            <t>When Direct Encryption is employed,
let the CEK be the shared symmetric key.</t>
          </li>
          <li>
            <t>If Integrated Encryption is not being employed,
record whether the CEK could be successfully determined for this recipient or not.</t>
          </li>
          <li>
            <t>If the JWE JSON Serialization is being used and
there are multiple recipients, repeat this process
(steps 4-13)
for each recipient contained in the representation.</t>
          </li>
          <li>
            <t>Compute the Encoded Protected Header value
BASE64URL(UTF8(JWE Protected Header)).
If the JWE Protected Header is not present
(which can only happen when using the JWE JSON Serialization
and no "protected" member is present),
let this value be the empty string.</t>
          </li>
          <li>
            <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>
          </li>
          <li>
            <t>If Integrated Encryption is not being employed,
decrypt the JWE Ciphertext using the CEK, the JWE Initialization Vector,
the Additional Authenticated Data value,
and the JWE Authentication Tag
(which is the Authentication Tag input to the calculation)
using the content encryption algorithm specified in the "enc" header parameter,
returning the decrypted plaintext and validating the JWE Authentication Tag
in the manner specified for the algorithm,
rejecting the input without emitting any decrypted output
if the JWE Authentication Tag is incorrect.</t>
          </li>
          <li>
            <t>If Integrated Encryption is being employed,
verify that no "enc" header parameter is present.</t>
          </li>
          <li>
            <t>If Integrated Encryption is being employed,
decrypt the JWE Ciphertext
using the specified Integrated Encryption algorithm,
returning the decrypted plaintext
in the manner specified for the algorithm,
rejecting the input without emitting any decrypted output
if the decryption fails.</t>
          </li>
          <li>
            <t>If a "zip" parameter was included,
uncompress the decrypted plaintext using the specified compression algorithm.</t>
          </li>
          <li>
            <t>If there was no recipient for which all of the decryption steps succeeded,
then the JWE <bcp14>MUST</bcp14> be considered invalid.
Otherwise, output the plaintext.
In the JWE JSON Serialization case, also return a result to the application
indicating for which of the recipients the decryption succeeded and failed.</t>
          </li>
        </ol>
        <t>Finally, note that it is an application decision which algorithms
may be used in a given context.
Even if a JWE can be successfully decrypted,
unless the algorithms used in the JWE are acceptable
to the application, it <bcp14>SHOULD</bcp14> consider the JWE to be invalid.</t>
      </section>
    </section>
    <section anchor="distinguishing">
      <name>Distinguishing Between JWS and JWE Objects</name>
      <t><xref section="9" sectionFormat="of" target="RFC7516"/> is updated to delete the last bullet, which says:</t>
      <ul spacing="normal">
        <li>
          <t>The JOSE Header for a JWS can also be distinguished from
the JOSE Header for a JWE by
determining whether an
"enc" (encryption algorithm) member exists.
If the "enc" member exists, it is a JWE;
otherwise, it is a JWS.</t>
        </li>
      </ul>
      <t>The deleted test no longer works when Integrated Encryption is used.</t>
      <t>The other methods of distinguishing between
JSON Web Signature (JWS) <xref target="RFC7515"/> and
JSON Web Encryption (JWE) <xref target="RFC7516"/> objects continue to work.</t>
    </section>
    <section anchor="jwk-representations-for-jwe-hpke-keys">
      <name>JWK Representations for JWE HPKE Keys</name>
      <t>The JSON Web Key (JWK) <xref target="RFC7517"/> representations for keys
used with the JWE algorithms defined in this specification are as follows.
The valid combinations of the
"alg", "kty", and "crv" in the JWK are shown in <xref target="ciphersuite-kty-crv"/>.</t>
      <figure anchor="ciphersuite-kty-crv">
        <name>JWK Types and Curves for JWE HPKE Ciphersuites</name>
        <artwork><![CDATA[
+--------------------------------------+-------+--------+
| "alg" values                         | "kty" | "crv"  |
+--------------------------------------+-------+--------+
| HPKE-0, HPKE-0-KE, HPKE-7, HPKE-7-KE | EC    | P-256  |
| HPKE-1, HPKE-1-KE                    | EC    | P-384  |
| HPKE-2, HPKE-2-KE                    | EC    | P-521  |
| HPKE-3, HPKE-3-KE, HPKE-4, HPKE-4-KE | OKP   | X25519 |
| HPKE-5, HPKE-5-KE, HPKE-6, HPKE-6-KE | OKP   | X448   |
+--------------------------------------+-------+--------+
]]></artwork>
      </figure>
      <section anchor="jwk-representation-of-key-using-jwe-hpke-ciphersuite">
        <name>JWK Representation of Key using JWE HPKE Ciphersuite</name>
        <t>The example below is a JWK representation of a public and private key
used with Integrated Encryption as the Key Management Mode:</t>
        <artwork><![CDATA[
{
  "kty": "OKP",
  "crv": "X25519",
  "x": "3pPHgcHYVYpOpB6ISwHdoPRB6jNgd8mM4nRyyj4H3aE",
  "d": "nWGxne0tAiV8Hk6kcy4rN0wMskjl9yND0N3Xeho9n6g",
  "kid": "recipient-key-1",
  "alg": "HPKE-3",
  "use": "enc"
}
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This specification uses HPKE and the security considerations of
<xref target="I-D.ietf-hpke-hpke"/> are therefore applicable.</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 provide proof of sender origin
as part of the HPKE KEM. PSK mode authenticates the sender
as a holder of the pre-shared key (see <xref section="9.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>).</t>
      <t>HPKE relies on a source of randomness being available on the device.
In Key Agreement with Key Wrapping mode, the CEK has to be randomly generated.
The guidance on randomness in <xref target="RFC8937"/> applies.</t>
      <section anchor="key-management">
        <name>Key Management</name>
        <t>A single key <bcp14>MUST NOT</bcp14> be used with multiple KEM algorithms.
Each key and its associated HPKE algorithm suite, comprising the KEM, KDF, and AEAD,
<bcp14>SHOULD</bcp14> be managed independently.
This separation prevents unintended interactions or vulnerabilities between algorithms,
ensuring the integrity and security guarantees of each algorithm are preserved.
Additionally, the same key <bcp14>SHOULD NOT</bcp14> be used for both
Key Encryption and Integrated Encryption.
While HPKE remains secure across parallel modes
(see <xref section="9.2.2" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>),
wrapping the same content encryption key under a weaker
alternative key agreement algorithm bound to the shared key
reduces the effective security of the protected content to that
weakest alternative.</t>
      </section>
      <section anchor="jwt-best-current-practices">
        <name>JWT Best Current Practices</name>
        <t>The guidance in <xref target="RFC8725"/> about encryption is also pertinent to this specification.</t>
        <t>RFC Editor Note: If draft-ietf-oauth-8725bis has been published as
an RFC by the time this document is processed, please update the
reference from <xref target="RFC8725"/> to the published RFC for
draft-ietf-oauth-8725bis.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <section anchor="json-web-signature-and-encryption-algorithms">
        <name>JSON Web Signature and Encryption Algorithms</name>
        <t>The following entries are added to the IANA "JSON Web Signature and Encryption Algorithms" registry <xref target="IANA.JOSE"/> established by <xref target="RFC7518"/>:</t>
        <section anchor="hpke-0">
          <name>HPKE-0</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-0</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF and 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): <xref target="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-1">
          <name>HPKE-1</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-1</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and 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): <xref target="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-2">
          <name>HPKE-2</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-2</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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): <xref target="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-3">
          <name>HPKE-3</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-3</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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): <xref target="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-4">
          <name>HPKE-4</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-4</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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): <xref target="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-5">
          <name>HPKE-5</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-5</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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): <xref target="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-6">
          <name>HPKE-6</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-6</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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): <xref target="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-7">
          <name>HPKE-7</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-7</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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): <xref target="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-0-ke">
          <name>HPKE-0-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-0-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF and 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): <xref target="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-1-ke">
          <name>HPKE-1-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-1-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and 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): <xref target="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-2-ke">
          <name>HPKE-2-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-2-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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): <xref target="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-3-ke">
          <name>HPKE-3-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-3-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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): <xref target="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-4-ke">
          <name>HPKE-4-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-4-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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): <xref target="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-5-ke">
          <name>HPKE-5-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-5-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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): <xref target="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-6-ke">
          <name>HPKE-6-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-6-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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): <xref target="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-7-ke">
          <name>HPKE-7-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-7-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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): <xref target="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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 IANA "JSON Web Key Parameters" registry <xref target="IANA.JOSE"/>:</t>
        <section anchor="ek">
          <name>ek</name>
          <ul spacing="normal">
            <li>
              <t>Header Parameter Name: "ek"</t>
            </li>
            <li>
              <t>Header Parameter Description: A base64url-encoded encapsulated secret, as defined in <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
            <li>
              <t>Header Parameter Usage Location(s): JWE</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="encapsulated-secrets"/> of [[ this specification ]]</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 base64url-encoded key identifier (kid) for the pre-shared key, as defined in <xref section="5.1.2" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
            <li>
              <t>Header Parameter Usage Location(s): JWE</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="overview"/> of [[ this specification ]]</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="summary-of-updates-to-rfc-7516-jwe">
      <name>Summary of Updates to RFC 7516 (JWE)</name>
      <t>This specification updates JSON Web Encryption (JWE) <xref target="RFC7516"/> as follows:</t>
      <ul spacing="normal">
        <li>
          <t>Adds the Integrated Encryption Key Management Mode and correspondingly
updates the Key Management Mode definition (<xref target="terminology"/>).</t>
        </li>
        <li>
          <t>Updates the "enc" header parameter to be absent when
Integrated Encryption is used in (<xref target="overview"/>).</t>
        </li>
        <li>
          <t>Replaces the Message Encryption procedure (<xref target="encryption"/>).</t>
        </li>
        <li>
          <t>Replaces the Message Decryption procedure (<xref target="decryption"/>).</t>
        </li>
        <li>
          <t>Updates the methods for distinguishing between JWS and JWE objects
(<xref target="distinguishing"/>).</t>
        </li>
      </ul>
    </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="I-D.ietf-hpke-hpke">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Karthikeyan Bhargavan" initials="K." surname="Bhargavan">
              <organization>Inria</organization>
            </author>
            <author fullname="Benjamin Lipp" initials="B." surname="Lipp">
              <organization>Inria</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
         </author>
            <date day="2" month="March" year="2026"/>
            <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 a variant that authenticates possession of a pre-shared key.
   HPKE works for any combination of an asymmetric Key Encapsulation
   Mechanism (KEM), key derivation function (KDF), and authenticated
   encryption with additional data (AEAD) encryption function.  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>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-hpke-hpke-03"/>
        </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="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="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="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="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </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 the Bundeswehr Munich</organization>
            </author>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Tradeverifyd</organization>
            </author>
            <author fullname="Ajitomi, Daisuke" initials="A." surname="Daisuke">
              <organization>bibital LLC</organization>
            </author>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <date day="7" month="April" year="2026"/>
            <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 is a general encryption framework utilizing an asymmetric key
   encapsulation mechanism (KEM), a key derivation function (KDF), and
   an Authenticated Encryption with Associated Data (AEAD) algorithm.

   This document defines the use of HPKE with COSE.  Authentication for
   HPKE in COSE is provided by COSE-native security mechanisms or by the
   pre-shared key authenticated variant of HPKE.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hpke-25"/>
        </reference>
        <reference anchor="IANA.HPKE" target="https://www.iana.org/assignments/hpke">
          <front>
            <title>Hybrid Public Key Encryption (HPKE)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.JOSE" target="https://www.iana.org/assignments/jose">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NIST.SP.800-56Ar3" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography, NIST Special Publication 800-56A Revision 3</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2018" month="April"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1103?>

<section anchor="keys-used-in-examples">
      <name>Keys Used in Examples</name>
      <section anchor="int-key">
        <name>Integrated Encryption Key</name>
        <t>This private key and its implied public key are used for
the Integrated Encryption example in <xref target="compact-example"/> and <xref target="flattened-example"/>:</t>
        <sourcecode type="text"><![CDATA[
{
  "kty": "EC",
  "use": "enc",
  "alg": "HPKE-0",
  "kid": "yCnfbmYMZcWrKDt_DjNebRCB1vxVoqv4umJ4WK8RYjk",
  "crv": "P-256",
  "x": "gixQJ0qg4Ag-6HSMaIEDL_zbDhoXavMyKlmdn__AQVE",
  "y": "ZxTgRLWaKONCL_GbZKLNPsW9EW6nBsN4AwQGEFAFFbM",
  "d": "g2DXtKapi2oN2zL_RCWX8D4bWURHCKN2-ZNGC05ZaR8"
}
]]></sourcecode>
      </section>
      <section anchor="ke-key">
        <name>Key Encryption Key</name>
        <t>This private key and its implied public key are used for
the Key Encryption example in <xref target="general-example"/>:</t>
        <sourcecode type="text"><![CDATA[
{
  "kty": "EC",
  "use": "enc",
  "alg": "HPKE-0-KE",
  "kid": "9CfUPiGcAcTp7oXgVbDStw2FEjka-_KHU_i-X3XMCEA",
  "crv": "P-256",
  "x": "WVKOswXQAgntIrLSYlwkyaU1dIE-FIhrbTEotFgMwIA",
  "y": "jpZT1WNmQH752Bh_pDK41IhLkiXLj-15wR4ZBZ-MWFk",
  "d": "MeCnMF65SaRVZ11Gf1Weacx3H9SdzO7MtWcDXvHWNv8"
}
]]></sourcecode>
      </section>
    </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
Richard Barnes,
Brian Campbell,
Matt Chanda,
Ilari Liusvaara,
Neil Madden,
Aaron Parecki,
Filip Skokan,
Deb Cooley,
and
Sebastian Stenzel
for their contributions to the specification.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-17</t>
      <ul spacing="normal">
        <li>
          <t>Clarified in Section 3 that only Integrated Encryption is newly
defined; other Key Management Modes are from <xref target="RFC7516"/>.</t>
        </li>
        <li>
          <t>Added explanation that Integrated Encryption corresponds to the
Single-Shot API in <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Renamed "Flattened JWE JSON Serialization Example" to
"JWE JSON Serialization Example".</t>
        </li>
        <li>
          <t>Added note explaining HPKE-7/HPKE-7-KE pairing rationale.</t>
        </li>
        <li>
          <t>Added qualifying clause to step 9 of Message Encryption and
step 13 of Message Decryption regarding multiple recipients.</t>
        </li>
        <li>
          <t>Updated authentication wording in Security Considerations to use
HPKE spec terminology "proof of sender origin".</t>
        </li>
        <li>
          <t>Replaced RFC4086 with <xref target="RFC8937"/>.</t>
        </li>
        <li>
          <t>Upgraded <bcp14>SHOULD NOT</bcp14> to <bcp14>MUST NOT</bcp14> for key reuse across Key
Encryption and Integrated Encryption modes.</t>
        </li>
        <li>
          <t>Added RFC Editor note regarding draft-ietf-oauth-8725bis.</t>
        </li>
        <li>
          <t>Updated Algorithm Analysis field in IANA registrations to point
to specific sections of <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Moved IANA.JOSE and IANA.HPKE to informative references.</t>
        </li>
      </ul>
      <t>-16</t>
      <ul spacing="normal">
        <li>
          <t>Change uses of Key Establishment Mode to Key Management Mode to align with JWE terminology.</t>
        </li>
      </ul>
      <t>-15</t>
      <ul spacing="normal">
        <li>
          <t>Defined the Integrated Encryption Key Establishment Mode
and updated JWE to enable its use.</t>
        </li>
        <li>
          <t>Specified distinct algorithms for use with Key Encryption and Integrated Encryption
so that they are fully-specified.</t>
        </li>
        <li>
          <t>Updated the Message Encryption and Message Decryption procedures from JWE.</t>
        </li>
        <li>
          <t>Said that JWS and JWE objects can no longer be distinguished by the presence of
an "enc" header parameter.</t>
        </li>
        <li>
          <t>Many editorial improvements.</t>
        </li>
      </ul>
      <t>-14</t>
      <ul spacing="normal">
        <li>
          <t>Added HPKE-7.</t>
        </li>
        <li>
          <t>Update to Recipient_structure.</t>
        </li>
        <li>
          <t>Removed text related to apu and apv.</t>
        </li>
        <li>
          <t>Updated description of mutually known private information.</t>
        </li>
      </ul>
      <t>-13</t>
      <ul spacing="normal">
        <li>
          <t>Removed orphan text about AKP kty field</t>
        </li>
        <li>
          <t>Fixed bug in "include-fold" syntax</t>
        </li>
        <li>
          <t>Switched reference from RFC 9180 to
draft-ietf-hpke-hpke</t>
        </li>
        <li>
          <t>Editorial improvements to abstract and
introduction.</t>
        </li>
        <li>
          <t>Removed Section 8.2 "Static Asymmetric
Authentication in HPKE"</t>
        </li>
      </ul>
      <t>-12</t>
      <ul spacing="normal">
        <li>
          <t>Added the Recipient_structure</t>
        </li>
      </ul>
      <t>-11</t>
      <ul spacing="normal">
        <li>
          <t>Fix too long lines</t>
        </li>
      </ul>
      <t>-10</t>
      <ul spacing="normal">
        <li>
          <t>Addressed WGLC review comments by Neil Madden and Sebastian Stenzel.</t>
        </li>
      </ul>
      <t>-09</t>
      <ul spacing="normal">
        <li>
          <t>Corrected examples.</t>
        </li>
      </ul>
      <t>-08</t>
      <ul spacing="normal">
        <li>
          <t>Use "enc":"int" for integrated encryption.</t>
        </li>
        <li>
          <t>Described reasons for excluding authenticated HPKE.</t>
        </li>
        <li>
          <t>Stated that mutually known private information <bcp14>MAY</bcp14> be used as the HPKE info value.</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Clarifications</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Remove auth mode and auth_kid from the specification.</t>
        </li>
        <li>
          <t>HPKE AAD for JOSE HPKE Key Encryption is now empty.</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Removed incorrect text about HPKE algorithm names.</t>
        </li>
        <li>
          <t>Fixed #21: Comply with NIST SP 800-227 Recommendations for Key-Encapsulation Mechanisms.</t>
        </li>
        <li>
          <t>Fixed #19: Binding the Application Context.</t>
        </li>
        <li>
          <t>Fixed #18: Use of apu and apv in Recipient context.</t>
        </li>
        <li>
          <t>Added new Section 7.1 (Authentication using an Asymmetric Key).</t>
        </li>
        <li>
          <t>Updated Section 7.2 (Key Management) to prevent cross-protocol attacks.</t>
        </li>
        <li>
          <t>Updated HPKE Setup info parameter to be empty.</t>
        </li>
        <li>
          <t>Added details on HPKE AEAD AAD, compression and decryption for HPKE Integrated Encryption.</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Fixed #8: Use short algorithm identifiers, per the JOSE naming conventions.</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Added new section 7.1 to discuss Key Management.</t>
        </li>
        <li>
          <t>HPKE Setup info parameter is updated to carry JOSE context-specific data for both modes.</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Fixed #4: HPKE Integrated Encryption "enc: dir".</t>
        </li>
        <li>
          <t>Updated text on the use of HPKE Setup info parameter.</t>
        </li>
        <li>
          <t>Added Examples in Sections 5.1, 5.2 and 6.1.</t>
        </li>
        <li>
          <t>Use of registered HPKE  "alg" value in the recipient unprotected header for Key Encryption.</t>
        </li>
      </ul>
      <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:
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
f9nwjT9SfhWMVf2VTw+0fOlIDx4125FvdNyQL/z46Nhnbgc6bx7B0FuXuWKl
mpWjw8i57lEdHsG3equbKxRrucPGmRz913CmavTtbfEo/Bf/FjSn0QuR0Uu1
8uro8EiMDj2/OTq8/bHRi5HRK8XC6uiVQvEDo8PbHxu9FIx+X6xUCnvZ3xTy
5feM3hhr8F9x59I2l4XSTuWnjV4JRy+Xa1nZ4DeCfPU9o7937R8effe9O+49
a38/5H+QXSC/+7qvfuJCwPUNj+UkC+bhO3/NJLNq5LSJDDYjWLdkfllkd1x7
Jk5HApqfLkVsSCB2MAiKt+PmSgftfUE4lxQo6efKFj9+ghgZ8N9z4kAKUzpg
IEjIRG3JYyq31GN3od6S3HGqATOmdyMw2fJ43D8cGBfGcee25bVPb+rGaePY
0XpX+KxyVaxMH6aFx5u72fNd6fj0+uh6eH04u3jsHXeVq53Oi26Ne/1Su3h+
dOd1n6/vu6/jbq83czrWTv7gtH58X9N0p+02TzT7uD4oGcui/iVXfW4pR6Xb
ea7fHX3p2E123foy643MM/umW929d+9BTS08PrwYVyet9m31rN9jtYvd+VQ3
u9PB7SSfV84H53tsUdGMZ6vW250Zp3fXtzWnOLi43Dk++fJy0S5fm+ade3xW
/uLWh3f3vcqJVnXtvVf9dnqv3J9f3C8brcnO4u7JrXUadatZPu1fa5WbyfiG
+WPjuTOse3v9q+Lw7PSCLZle6i3rjltbameOpmh7j/1x2ah2tSPfOtt9vn16
sV+fzou9/nLSveguu9PGRXnvqDy9LD2f9vZOn24erobsbvjgOgc1ZWB+sSeP
tXGuxK4OzxfTi0tv8tzTZ/WhdnTrzsq5o8aeda1Xl87NbXV6V62cW0XjYWn5
pfvJSFkWT6e5ydVJU5t3Wr3S5cGsxYxFdepdHrf27Jp7k9sxH/cms573xR4V
7/vnh63hc/fi2X+enzOl0N8ZlXNt/bx91r54Gto7zgvb2yn2CrPDm91Xa16+
yr0cTDpL/aT8uHg22udVvX7ve5Y9sAclZbe+c+RUmHt5uji6vrlxDtqLPFGR
cm5jKNkpRib0HaZN+H7BPacb7szUlurMd2YUKoUmmnwY3BL4Rel0JCkdD1uo
teHehreiWynBcBTuoyGcSOAsxvSP76SUvt+/lb6C1pkJtdPMvpo51fqd2tNJ
57LZX05vu/3l3cB7rtWHne791c6ue+YVXq4KptPN7Yx5iOxt8fmZPc+uOie7
lZPCyf1gvrAKlVb1xDCfvOPq6cHgoeHvFC8KR7UnzbaPD337dFGYU+PW65VV
qI7Le7WH+z1W7NaLncGdc3wzGTSeT3cfZu29oVtvl45br4dDdzp1Zo+Xl3f6
S4NHLu+Oavrk8Hqw9E3ryDmfH/jlg7bn93O316AlWw+Nduf46LE8yfnm3rCp
6198Y9B+bbxc8SBg66VazT3eV6z+c1V7PTqsVrz6o+Xp1bv25HpkjPWXm3ln
Nr/plkdD37xiJ8vuuG8seLzxReP4vP/a1lvWBTBgy11+uX5eHO4ad067ZZjt
+pk7Pz0ulHPmwL+u9L3O5NbyOgvTcnkg461WfPAmpdKr1RjW2+c7iwd/ojfn
xyx3t2NZ57dt84KdLh/udljr0HBHjT396qowafulUQZPCpnAlPIEpIZoO6hf
mI+5O6s/vvLL5xfmjdms3z0sbo8PclfVh0FvYV2f906qDzT6adc4OjJ7Zed8
58vt68Fx6XpQfFrWrInmWjXr9u7w4FX/snsx1k9OjNMvZT4kms5goLvDsdlp
PZr9w5e5Xjq3tfv6qF98GOn4vH08608H/P3gvI+tPsKzaYqrjPsNvp1Rvv2G
u3o1YyVqO0rfl9kwJNBNtKWF21NaJDUdffyYijFyDTh+krU8YoFVtlh+lEdj
H6xI9JlpNZpHuVb3L3VQf096GRWWlLnu1nMX9RbpTZntrAJvDtiak+79TqZ0
g2CCmYwf1pLNVrjIdGtYvGt5yP6o5WmDvSliXUGuKU13MetijqyLAKF0q2Kq
yeU9Jo5NJhL05ITWmsAsSqaba0kGT6DG+QP0KGTCkBOUINTzUYv3HEZZJNiB
AKtyGhtNuW9aNFo/x6KRsDYQlc76U6EJJwNDujfXYJcAau5qmDEHjUqbyFoJ
4oHJiIpWnoghShpOV81DN7i7XFyG0Jst5vLARXKb2jCwxmNw0bWJaA/Wbbiq
pEC0Kqt9w9JAbedjcu9sYP9GlcEVJh1XCPkkWP5VrXcbnc4W5ebl+HlgMPMy
2+qvvyrrhyD8d/Bw09qCE++GV3ifwrb8FBq3nmBf/1jPIeYB4I72hCDnDL+H
9mHy+aWsCEOQhsYLQI9eoIQ1hBSPwVhKni2RKT0kElQYpRvOEDsTRnT0kS49
pm7tvLTb22GgAzONqQHbwmCm7ubDiaWAZV/tyGgQN5xIenQO0WEYO0UH49Cx
sjEgMIhGUNUOsCS+I6I2ae5f2EoaeXudi1J7jBcSzrIwhDbwPhAQwgB6ZCdJ
m0YwocCdj9H3um8yZCF8qXzvuEEkS5ojrW/7li77c5nJHQ6bQPoT8JtEnNCR
Jfk8JzghWyh6OTS6J4ADU1HlMqN2aGGDdiXAV1mMqp79KwzlK2Zyrh4Z1sz3
Qlogkhqih2nz0nhcAFGDnuU9cRJ52zNCmh0HTPLZJvB480jINJkQxkpyPe0y
cEuJyPDAf4MRKtFQSwH2QMoT/ctYjT4FI/AI2dD5LSkxFJck3pLlmzgSbhJo
ETkgpMBq8M7Xr0lCkocyRDRUDnVuJ1JSWBMIiQzqkIeNs0w2kcjxDdQmYWeS
kiMgFHoUaANJHApxtMKg//fLcChGwY8ZztVvxtGoTexqDBq5DnOYAmU5TCht
kqhE12WtPKyUypWiXq5Vdsp9+LSzW6yWdnd2y8NhuVAqlIqlWnm3XCrrw6Ec
yXDjodJSY6ApZnCdmQjXe6+akFdIkVn5Oc0nA+rPz3LJrAYGvtsX8wMOEeGO
UX/YI/MDc+BOmRz0/YN+GfVHXTPxOXyXd2ZlDh930MTn8F0+GvUHzfWl6By+
01Oj/iAuyu+cwyafxY/OoRKbw/d5bdQfxEX1nXP4ABw+7r75wN58Jxy+w4nz
3RwmyY8j2Pbbbpw4U/6X+28OmQXnSfNt4/OIv/hx03MwQrL5eYNNKMXu7LcL
9wf9u8fe+GH6NGv22fG88zSc+F/ax8aJXuidXZYung7qhxeXuVM6JE5mN6et
Ussr3l2dDy5ml/XOwXD5UnNuX93x4Rfjon3Rex3YvcfStLN48Jvzeb1Xyl0W
rhvUultrel92d46v59r4onJRc+vnhfnr8aj2pC8PLq2Fe/VQbSxL1+OzZtXt
dhvPz93FTvthygs+vFR3O0an+Hpc7Tm11+reZGdYKj/ejMulSbmRm90stNvu
/Nks3neeHpzbkd68e5g+PJ0dV6j1fGpe3gwG7Exjw8vahfX6NHypvFwMDofW
3cHda3E0O7u69K9Oa5PK9aRycjy/PBy2h+fVsUPNR73JydNp89Uom87Q6jjz
c3dSOmgcsMfL2SBnFfZy/m6vnDu8ejl9rpt3y7MjdgjdlL1bal4dHR3ULi3r
qnzerDzeeMt757h31ctdOQWjzeZVYWE25oiV6alx9PygXdXLRetyWjjlv4UG
SHjn79TrV3FwX7dMj2+r/Z3xrJxblh/tk8LVa+2hN21OvzSnoxvPLh31ipXc
9fJyPDi9pd6pF37YhOZfA4MA6RjQXyDng7fht4lBZua9xvD20jgc1Ac3s137
fnTXb3a9RbHdep5ouaeTo9snI3dfuj9rtOrR1mxCJvTD3mXv1G5WDm6f261m
5/msm1vOvUHj/sCq1HMTf168fn69fXgqjk9un0cRS8Vj5/yL11oWtKPHmt57
qRvL+uyucqwND3ervdrF0/LxdVm5qZQzos03Rf7/HwRPT6OVnRSLjWr5cdyu
H7T8YrfY3tm5PB39HOu72Z+eoaX94OymU77eOT//LYzmExbYzJVPeNLS/YEs
0kSVVqZCx3UVRZgGXbWSL6hb63lq29QKDYdb69lq2ysZapQtI7KRRPpdVKt2
xVhZRQTa6zrPd3OJvzk+JuNzpTo9HDRdseY8OCHVjmKDZWgcB6LMAItG2vGZ
xG153M5nO3hCDUxUbEZvUZg31r/CeH8LD9zRPDSF54chRCxbZCXAaGhu6jNv
wUQsP53ouUXS9j36HB0H1lTIqwBynvzJUnNZ4hmdLGa7UiNWlGg/KVYrEoN5
arclg1ljXeKhFEEiz+ZKwCfUrdByRU9X077DjGhR74eKW2zzVZJzI5YompCD
ikVb3kowJahLiPBGXOJ66PZwANgg1lfTcInyqCQHnps9Dn8OPctEwsDg1wUW
zTBhs+rLoEu+EzX0aMwN23dNXiNG0BPTo+nfQQImUkpWNdEVgLYVYYPBIUTa
sJo4H46WLmVFi/JC377hm6LakYX+KkckPwI+xRxpe/FlcyWH93PDXRDcDDTW
5ggdk1kjACcMCmqGx5PY6OUgV43znc0W03wEo0lZwu9AIg0aQ2RgYkIWqAUt
46QOU0ZTv++xdf8DtdFVf8YD3zkQ0udouCtExNHFYSYwlt7lWzS61ntCd9DM
NAMrICxtAa1Dz9G/fNfEPJOwaGFXi+e4SqjwPS0AQ83X/FjvIYu1zPCEeckh
1x1lm42Zq4PHcwbfRLY71nADuMspMDNHVpYJe03NSP/A7GOWRcHMUyThymZr
RMheWiwnkp+rB/Vuq1q+vT7dWht2W3TQGW4Kb6GUBiQTpMWsyNVX1VDMJaYq
gTbAyKjOTdDIEblk4WK0kKttB8wuntIiJnW4xrjTcwDENicL5gCF8ysLOn+L
Y6lbxnCdx4Xi7Be+i7wgby6KxeTpvE2LSShL7kt6fdQVRCa+HUGopmZejVnM
kqq5gXE9K8TGlDKw4snBkVNnSJDy1VX3mBpwgrNAlsUWHBqPQ8/fVOR9hWMm
AvndPQbdSOiCnBbAJXq2qWbplrsddQrhrzpzCeuiGteq0uJyMAnvnz3iZUBo
/oZ0aYReuH2S4li+w3YCyRNzeUQ0ozBhrMt5y22Y1Bd7TaZoUUfMyQV+imiL
wA+4RlwtQVxrbpckurq9ade2kpw029tcvnUSFiU7FIqxQA3f61LlsXjW5Rjr
NFnvy6sJaAvTCMPTFSjwWBw3kvC6HeWtgW8htgW5R1BA51Rs349n4kCnNBT3
L6dBVoDqyF5g0TCqAKMFDq7A8bEJTGLuqCm+D1YCBDKnxvwXr1D99Vf1T/k/
4Z84T8LSPREWlCoVkU64SEnWOs6i0cutk+xmdhsTSW8sOqT6ZCa3MRSA65gR
3hJPPuK4je7X9ZS0KL7F6Sohb40fCEMjZGQ+FLhCOH8HnDfCOBUKbygd7wQE
3wWnEVmZsNDvE5SDVZjHqTCcyfaGThJmkyZq11+Nydm0vR3K2LWxg7fX98+6
CAuFFN/yTFoMIme5xBB/EkFUXYb0c0FvnBm+n/PTm2k7Pq5Obnw1WWHZ2CSC
yY3vJSJIwiZdq00pJrC7XkwgYl6KlGz6+klnKeYlnSWZl/hhCStZS/1AYWt2
qN/f8oRUbcncdVcOP9QMMxtlRxGGCZPhPB3J2sCKMNEaLBuOCYrhCd9HNPIG
4w5I0+SMcrWYnvun9SkoU9/F4gsDBCGvuCOnEuj0SAm8DqU2wIgcnGTHUl17
yoUtnFrWl0YmHtOMjK6mD6VERpIneGmbITKjF2lUHloshiWxnwxabmJyVwou
KBZjvLgWxpUmTQVGCVUQWReTBtswjge6g+Z68XRvhaxEyaCNrFeGFCWtl1ga
qNWROKCVmBKMhn6hcsIilCzgdSJoJn6cm85gilZIuVQpN7DAxPWlROYYWF7c
WHeaKHWPbdcDkuNzxsGDl5N4Zzb2a4xVxn9KVmtir4SsMK7uJLO/bKA9v0t/
TAMGBqzJTOz3QGQVIBTSJfQh3xJtAgPR+sEnEhIWvPXWmSdm1/ww9v/N8BaY
PgO48vCodcALlzXZ4TWPiwtxWkXzHllU5EmIu2B4JQo91CotVKD6kep4oFoa
tq5ugYyFkzJgB+Amew3t9oYVVIUY2r4jAzTxJ9FB0DRqOHpLIPMTzEeEMvKU
g6AkCcgMW4+rWf8e2/WtrbpOFvVmVrC7oG4pt7LS1R/ELRHnIOPN0IVIgZEe
c4HYsU6mIwRMND40RAuZ/PuMWbIyFsLyjm6FUINY2DWri6QAoiCCt5ybhHgS
WCViNRWUzFztDdahEQOCEyyTYiZqwpHODhkMCFKDu0OKlb1v335ZM7KunVz7
omhnpM9QlX8P4wi7Dw0/q5bv1VE56V+Exq0PMOX04YCjrrBcbhpxE01PiTT+
NgcOrKqxyopv8WQhfkDlgKlwHY50pj7biF3BxJu84IfIymAz3tt8hTojjsQI
aIKgZJlZpPtcrWTJXkm8tCRddiQgJThRBXtRhokLeInpudBx8nBcrAbVd+zB
wHd4MVM1LN4XgYpk9bzrt4yQKXvZQKhPg83mw8HAoXuH+DkATU9RIz2ijgfc
q7IAY6RKKW47UeZMGkj5pKJVLROq4tG7q27qmHNBOqzESxmQBF5mHYw8EjzQ
cYJVCkgR/dvxwHAUqjwAny/dBjmFbYNCcD/J4b7qwkl2ka8taZUJpRQZW/de
hX6ztWLMa3tG5DYll3RKJBseg0aXV6BDiac5rPoC/3D5/mtcvsKGkKyR/AY+
4I3j4wRnFGDEJJj+9aEF2CRMS1m8w7yALeLeRQ5maWenAp8RWK+vM3L85KPi
eOHxme6TQexJTTxWU9p2Xe4zE+4TaYRz2NAmK40z5RBJmw95lIYBIwEFOxeu
JG2y1GE/SKwN4l34JOomFqTn9fWldl0o5CvxErwUgyJuwFkJL+EUZamo9I94
iIlnkDoWXIPzc5z9qyI/Zb0yePa39vx/j4eDB1AFAlMONrB9U18z5QRBW5GQ
vxD78ARG+bgH/yc58Mu5QinNgy+1rzCJK67s/+Gn/MNP+f+zn3JVMkZ8Xx9y
XH7EaRlVd3/Mu8hzSWWmpGYORB3v7RWP4MagmVgSJOnqLKlWquR6nu9Egi4k
Cw9DTnBdwqgcJaGUJYohp3hnpxOZylrwjhwez1GyX758ecMFw6LyPEZ6GZkZ
d4zwwYYbpsNDr0Xc0Xd6ZKNiDplIIiAje/E7h0kn2u/1BL8Tub8byiJOOHRe
uR8LjvKtWHhUEtW+O1AqJqUdHk1s2RGBiWAQsfHcarIyfy5zSTtgeuQQEdbN
3uR+wZcj5icRXoAtI5FTJDetDdxbhC7TKZojna5QId+yt1bGVWBdp69oNAxW
uObOW1usXCaxBUQdHc/bBl12kEW2HF4M8ab3MHKnx1RbRjPrNXVkzPEiR1uA
oIXfAjkoagKtqGSCCrKKCA5fMWaEWfviDgJHehtRtVfW4ZTFRYj74STugtby
1jzpRvskrisZ+YY7RqgeCL/uca8bJNLzG7qxMroee/mbErl1Yy+u7mMqNt3k
IWsuMKGXmegO7MPasXozB6irLXnR/5sVuyR3VeJUEHREJzD7yCSE90FR10ya
smlL7WMQfeLtW0hSGytmCJWLvcCIriiREIqm2K9ZSTo4JtqNI6GH4S/d4D4e
k64sxAvByexuWyPkGbYzcVevI1nhxMK+jr1wgzy/64uMVHH0SB+9knBNLmgt
3fBSygq/BC39ntTY5VHCtkpUblg86wFnTuR03DtRr1fcJIgLxATPlmRLcc1k
MBoVOIGG4TCYirDqbMFeJtg4fu/ASoJ9pFpR8nVkayk53GoMXLYfXIkmDshk
ZcuqmYm3lJdSDpx5JtyNJ/zaDboQkpxLsdRSb5mD18mztJqmv+HfX1b+RtLz
xWE87d+vfKb4l6a5kjT70TF5ml42TMsXH3ezsWzgVoOPTfnA0ST6bCSZPnG2
YUtMp4+kvmcjKfBvtKwUC9GE9WyYuC4+lrOxPPKLk0tqyTPJIyne2TDVW3ys
ZmOZ10HLcrmm/hhsExORObXIRGSkrZvljHFresN35mxlHzXCxi6mI39K2nvy
ti+uVyS15VtR5v31g9xh6mzNoxZeustvNg7up4xsyu+sKE4ZxUi/+2oGYM2T
IJGO4TvHFn/0gg9Ks8uj0eDo4e5hdjE7qHa6iyPdvrw+qD6fj/Ta9KxsXS+X
z+WjksaTTDOURWn1Dl8stuPVjbva0aQ6GSyxgOLizJ08m3vL8+bOeemeje09
S6bQiqTUQLHAZMhcQeRzRpJZS/wRwICSNUE4yMTMT3itCLd5NeI2r9R7Unlx
EHEsS7GYoZMu7TJLuuNKGgSFXgCagrytSHNdfyoqVbkYz+WIbM/QtigVqg33
mZK44FX/UOhOtYnskhxSOAbh3c2DQLbQgUxBUehmxb4iPaPMcoy+TypeePET
5U7iTHldQ5SxoDV4qGpSIUUaa2DPWBCUKG8HlgvFG4DRkECXEQVuPFG8CP9C
Q7p7iGAA8mNkWAqQKajw8Zu0T1pnefWye8J7it65E4WiQpdgj20zEmYHuycn
7H241K24jXSPbitSkrC4LRfhMNOgpF0MqrB9Z0Dr5ekrVICOH8y0Oei0ZOq1
LaH8zg20VnbediWE14yh4XCsySAwPogZyU7k8hLUC11D/z0MFZmIvOlSJBIS
4TE3H9TQCXe9otRlgMhEXvEhrg0JuUhgQcRCNNG7q+l+U/LhYOk9j8hE3iEb
v+haJQaXlZ5NebJaL9eQVYS63KfzJEwT9QcZ7uiZwZ3fPOSFh1ayOZ00fAuP
OxZPYQUdUxNJ0Jho45uWLAoYDZkMV5NVqCxaeCpFzom7nRyJcuuPfBgVfuKO
SDKMhmvE7U5MGiQEICi0++C5JtiQCK/wyugA0vKasLWSQ2n1h/HqMDg8yfoV
eO+puNceDyUOcBA6AYNyb/Kb0JQ1mi+mV47czioLSZXB1JNvGuJeV9gUCwas
BzafSVfXeXD8SnPwrZSWC7alAn99eeclGw5xpvMI5w32srQFyhlJvxNNwcWR
gjnIytE3cJ6CX0B+O9jiksgDxlLiOynYO7tFUsX7ZJWIqf10+JkxBzTuYOxV
+QGjQidqC0gAEMtrAsCJRXe0oZcjYNvIvXI4TN9waa9TzA6xYzpNaa4CJy3s
RTijPWPK4vxVDc336FadYYAnE4c9UptB9ID4wXVRXE90ZQL44Xg4EuYcp82R
zhS8ZkpcfsJhFJ8KxWf9gIMknFi2a7VAF6zIMUStFl6tV0ySBs18pOvMWkkX
FI6wbKABTa5Y3s8Jp5zat2/7vJoc17Gx3G7Qm3oO1L8vf4n+0KSANhp8/60y
4ULzi5XsidXeIW4YLd+DVb44YwyLOiGTjE3hlmLST21Od1vu9j5XiOAl0gc6
8eiQa+6VxQfuvnox4xwKb3oHaT/i5QMcwAimvHVaN234pRtTjJqC9mgkXsuZ
qq19w935978nHfX+8Y/YjOsw4NKFt2RXrujrHRcFR3BUSMVR4WfhiMqNxeqG
xXCEZ6WI9AorLf2BJImkYiqSij8LSVSPLVZIK4YkrMX1B5I2IqmUiqTSz0GS
LBb3JrvL/sHvUrFUTsVS+XfB0lp5uz9QJVFVSUVV5SehiqoO/sH0fgBH1VQc
VX8HHP2xmVIRtZuKqN3fVhf/YzelIwmdEulnJvwxFVWp97b8R56XZHHqn4ih
1Pt1o4elTfgp/Az8/KeclX4nBBU3Iaj4MxD0n3JO+p0QVNqEoNKPI+g/6Iz0
O2GovAlD5d8cQ//2Kt3vhKbKJjRVfgKa/lPORr8Tfqqb8FP9jfHzxyZKORRt
QtLub6dv/7GLVhH0Dg/YWinC73WEISrDXtJ8XsKxxSZIMGv5tpxusGx70q8x
yqkn1Kpg63eHZdOvKkwFXMLQCXRz3Gt9PyFEZ5rjM32LKghu/D7MTbATN2Z+
F/wovVBeWueoWxND3w4C5+NBKxvgmi+ku/J/C9jac+bMDbZ4E55q159O8a4t
eO2W/NQU44K+Zwxp5SGuyQFZ4u33BcbGLm7MYQ4ODypItgslpYLzK0wj1RGo
AricRUoAHUePwSf19SsPdLZNe7TkgUS5cNGpaTWyjFWfblLFCGSMdt4Ug4zE
sBVFAh/qmtfs52MlVNCnyAGdQpBpd8hqZ5uaN1ly80ixtISFyrhocQtCQmB0
LMhdRDXDsrHneJw77z2Xg600mIjrg12gZw4FcRmLS4w4HddfP8kriAWpRcIn
g2AmLKuASR+RADnkxzJaR0knp+DqBopD5qVGglthKLwbnq9fVf6Nh1+qlFcT
jcFsNdaCGtfiHndiYZLLhjXsTx/OHgc956TpPTWfz1n/unFQmL/c2V/mZX96
XO6d1K4fniex6E5+p3EY3DkyXq6Od76MyvVRrnrUPdM6rebp02u/ObbvtfnZ
8sSc6tbTU/3qTgR30nwfX25G16c97eTivHH6dNh/PDk9v3R7e61e1Tpwz8v1
xdVhq11vt/tnkZDQUbF5751oM6NonxdfT5+uG737WrPc791eHzVOzou5x/PD
xk7lUbuuhTGda5fCcfSKyzJ+ELsrXcfQunrZz48hT97A8r13r6Thr3d3cuEu
7q/qI8vrOKfdB3MxWWq3Bb3TyrU7Y6d/07K99uhs0alH8Pc8e7wp9M6nV0e7
leLB+GnWPCkXOuPTiXF/+pwrVBbX5ceDx9xZrz2J4O+MNayzdrXS1a7vHguF
w2Ghx7TBS+lor6u/Xuyeeb1B835+1DufR/Cn1gdYeMJk+og0LQzGtnxM5mD6
XzNDzQSofUuUByZmtgJLctXw5uSvX/8nkIAD2w2vQe4xdUFp2KYxYSJazJoo
1wbWTdLVA82xmJtVDhxDs9QGYLTPTDOrnMEWJZGoa1mlY2qOoZ4avjvXgFdn
lXNmmCAAQD+zskpdc2BSIGHZYGJklbZhGjO1O7EnGvzYBHHVsG0Ti01htG6X
gSLg4VhdYAGvzFSExDccCmmTQbjBnZersWWfAgGsHgF/tJ1lCuByhV3M5mng
3GVGp9QaSjzPitJ909Nk2cLkWTukd/wiMl0SZJ+46CaIM5O1vP6M0hc1xReQ
J5aoCJh+9Wgoc+XqYfQuxajmumPbU+uXnbj2s8FDgaNfM6zMo6uZtuS4b1zl
lYFxkarfeCtcGeWs0fJ4VhM/hH0OUzNmmuHw2zr4aYaFbbFshrg5eWDyy1Rt
ygjkWVwJYpun+NMrhVL0nYhshoMA0DWFFK+n/+PgtyIhTItnvS5s3opTSVKw
vLhXBWZAZ0YkTDWi5lCafEI0d4ZjQlwiBNRR3qlV+dkzEqrMZwY0gZCJBMl6
kZpKIvcI1oPAEpGuQI4wo/eEzfJY2BD+kShNQmMIufQ4yBB8CYdGfhssAJDO
auJEFsJuZhuUcY9YFps6uEKJX7yURsdnoN/panCu40uUl9Vhf8HdwHNchgj8
xLDNXKFKTIDr9pTZIJJRWjIaMtRgoaMkxRZroZhwoOU4o/zFEOs0RgXHaIrj
yWZde31Yhae/yzxFkR8JOxcD6VFew6wRCN0gFzcopxXJOIve3boqvVMpAjeT
HRQi4WoAJYTmgsTfKMpTlGnsfpOS7HLOSLVMYRmaIUpbJei9lGEZZiKupVmK
cGCeD0RZCAS9lOMEkQ5mUzOicmBkqPs4QExTzgwAdWUl2A+caYULptPZ+i3I
fDtPiSRJ/jrMlBmm2synJWmzeRRwengURvKbvnm/Nk2tpERGsp0Z0DAfkEdm
108uVVC0+K6DN9t0OX3fJxaWEUnfOTgK6hnVXVqe9oLQB/rAW9HVlfBo5AV7
hdoO5/+R/R/sRGjcSgQjrbvv8iK3nEMbeITW/QFfSrgIKbZqcGTPdNHqNVDr
QQ0aaLhSiQAWgkjJIDSKIaKQBBIQg28VFA4JmBSnIqol6eJPO6IDcUdH7/C0
gVWr4dSIuRl8KUBfEdWGULmmsCBudvaIq/D6CCTg+eGLfqvhb3As41S5D6jw
MrQ/jXAPhmfOPLEOWRzUYZor00zZC6KQEmtixTP4tdCAS0/sSthLb5NU7P71
6NXUdAO3KKQEs48qTQOZJZbbqYbESNMRaUgWl6NPoLyHFVhXVLY/i6ua602e
O0j50SIJd60yyYLXjKGpVKIbIChHEd0DK6k2ouyh3AufioV9qsZjLjlfxHvp
1e6livfSF4u7SESEeT2S3AuTyrUCexkBTqaDRbsu7O2rB4YVlAqtRzL1GzLx
Pny7tk8UgbmLIYtA+g7rTQ7CVkK3AsoM68QW1K2V3cGN1kCY4RYStx+FnCda
Z3YrLty2ea0zyiBSSZfIYXaJPbDNsOJV2BOBuss8f8YpZtVoI9AmJ68zD2tT
YHpWeFE3loCNV5Kw9Fg5C4A/vZ2S9gM0UVZCqAqgumPbiWbYhDZFN4vJKmFW
PtAHaZu2hYtGlFOfJSUGczcCc6waYLgDnytaEegFZJ0IknjdgYHmOEs+A4Hk
XKAA6VgJR2ZASQ0N5lSMrLO8vwEqxGX2YZZOJiarcZPYPA3P55SXOt0Qa9KI
FDkr0U2aWboxE7EFJ468YG+YAkg6HlXloN6jKeJhjSxJ4X6kouo4LJAQZwO0
emLjuKVAvDGmo8GLs5cBlfDEqgq6HbDPS5FNKbkwbTPkUZQe7E44WDnzwUMN
vzc0oQyui1yVzCPD5arQpvXxbDKE1jMWfl3Tc6nyH3M9N2SW1I70SFoAP5BF
indwcUXbY+03gARJLX5rBvJAKrdEdQ6QkEeODcjEixdo91D9YhLdzljLPUsr
QE4IG+Tt/w/mmFZeV8AAAA==

-->

</rfc>
