<?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.39 (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-18" 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-18"/>
    <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="25"/>
    <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 KEM key pair used with HPKE is intended for use with a
specific mode and HPKE algorithm suite. Using the same
KEM key pair with multiple modes or multiple HPKE algorithm
suites in parallel is <bcp14>NOT RECOMMENDED</bcp14>.</t>
        <t>In principle, such use could be supported by the HPKE key
schedule, since it takes both the suite_id variable, which
encodes the full ciphersuite, and the mode byte as inputs,
ensuring that cryptographically distinct keys are derived
for each combination of ciphersuite and mode. However, there
is no formal proof of security for this at the time of
writing; see <xref section="9.2.2" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        <t>Likewise,the same key <bcp14>SHOULD NOT</bcp14> be used with both HPKE and
non-HPKE algorithms (e.g., "ECDH-ES" or "ECDH-ES+A128KW").</t>
        <t>When using Key Encryption in a multi-recipient scenario, the
security of the content is limited by the weakest algorithm used
to encrypt the CEK.</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 1109?>

<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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
Un4VjFX9lU8PtHx5kB48arYj38jckC/8+OjYZ24XOm8ew9A7l7lipZqVo8PI
ud5xHR7Bt3qrlysUa7mjxrkc/ddwpmr07Y/iUfgX/xY0p9ELkdFLtfL66PBI
jA49vzk6vP1toxcjo1eKhfXRK4XiN4wOb3/b6KVg9PtipVLYz/6mkC+/Z/TG
WIP/iruXjrUqlHYrP230Sjh6uVzLyga/EeSr7xn9vWv/5tH33rvj3rP290P+
B9kF8rsvB+oHLgS8uemznGTBPHznr5lkVo2cNpHBZgTrlswvi+yOa8/E6UhA
c+tSxIYEYgeDoHg77q500d8XhHNJgZJuV7a4+QliROe/54RBClM6ZCBIyEVt
SzOVe+qxu1BvSe441YEZ07sRmGx1Mh4c6eaFedK5bfnts5u6edY4cbX+FT6r
XBUr04dp4fHmbvZ8Vzo5uz6+Hl4fzS4e+yc95Wq382LY4/6g1C52j+/83vP1
fe913Ov3Z27H3s0fntVP7mua4ba95qnmnNT1krkqGp9z1eeWcly6XeQGvdHn
jtNk163Ps/7IOnduetW9e+8e1NTC48OLeXXaat9Wzwd9VrvYW0wNqzfVbyf5
vNLVu/tsWdHMZ7vW35uZZ3fXtzW3qF9c7p6cfn65aJevLevOOzkvf/bqw7v7
fuVUq3rO/qtxO71X7rsX96tGa7K7vHvyap1G3W6WzwbXWuVmMr5h87H53BnW
/f3BVXF4fnbBVswo9Vd116uttHNXU7T9x8G4bFZ72vHcPt97vn16cV6fusX+
YDXpXfRWvWnjorx/XJ5elp7P+vtnTzcPV0N2N3zw3MOaolufncljbZwrsauj
7nJ6celPnvvGrD7Ujm+9WTl33Ni3r43qyr25rU7vqpWuXTQfVva8dD8ZKavi
2TQ3uTptaotOq1+6PJy1mLmsTv3Lk9a+U/NucrvW4/5k1vc/O6Pi/aB71Bo+
9y6e58+LLlMKg91ROdc2uu3z9sXT0Nl1X9j+brFfmB3d7L3ai/JV7uVw0lkZ
p+XH5bPZ7laN+v3ctx3d0UvKXn332K0w7/JseXx9c+Metpd5oiKl62Ao2RlG
Jgxcpk34fsE9Z5jezNJW6mzuzihUCl00+TC4JTgXJetIUjoaW6i14d6Gt6Jb
KcFxFO6jIVgkYIsx49t3Ukrf799KX0DrzITaaeZAzZxpg07t6bRz2Ryspre9
wepO959r9WGnd3+1u+ed+4WXq4Ll9nK7Yx4ie1t8fmbPs6vO6V7ltHB6ry+W
dqHSqp6a1pN/Uj071B8a893iReG49qQ5zsnR3DlbFhbUuPV6ZReq4/J+7eF+
nxV79WJHv3NPbiZ64/ls72HW3h969XbppPV6NPSmU3f2eHl5Z7w0eOTy3qhm
TI6u9dXcso/d7uJwXj5s+/NB7vYatGT7odHunBw/lie5ubU/bBrG57mpt18b
L1c8CNh+qVZzj/cVe/Bc1V6Pj6oVv/5o+0b1rj25Hplj4+Vm0Zktbnrl0XBu
XbHTVW88MJc83viicdIdvLaNln0BDNj2Vp+vn5dHe+ad226ZVrt+7i3OTgrl
nKXPrysDvzO5tf3O0rI9Hsh4qxUf/Emp9Go3hvV2d3f5MJ8YzcUJy93t2nb3
tm1dsLPVw90uax2Z3qixb1xdFSbteWmUQUshE7hSnoDUEG2H9QvrMXdnD8ZX
83L3wrqxmvW7h+XtyWHuqvqg95f2dbd/Wn2g0c965vGx1S+73d3Pt6+HJ6Vr
vfi0qtkTzbNr9u3d0eGr8XnvYmycnppnn8t8SHSdwUB3R2Or03q0BkcvC6PU
dbT7+mhQfBgZ+Lx9MhtMdf5+YO9jq2/h2TTFdcb9Bt/OKF9/w129nrES9R2l
78tsGBLoJfrSwu0pPZKagWf8mIox8kwwP8lbHvHAKjssP8qjsw9WJPrMtBrN
41yr95c6qL+n/YwKS8pc9+q5i3qL9KbMx6wCb+ps45Du/YdM6Q7BBDcZN9aS
3Va4yHRvWLxraWR/q+dpi78p4l1BrilddzHvYo68iwChdK9iqsvlPS6ObS4S
PMkJvTWBW5RcN9eSDJ5AjZvreKKQCUNOUIJQz8ct3nMYZZHgBwKsymlsdeW+
6dFo/RyPRsLaQFS6m0+FJpwMDHm8uQG7BFDzo4YZc9GptI2slSAemJyo6OWJ
OKKk43TdPXSDu8vDZQi92WYeD1ykY1MHBtZ4DC4ebSLag3WbniopEL3K6sC0
NVDb+Zj8dDbwf6PK4AmXjieEfBIs/6rWe41OZ4dy83LcHtBnfuaj+uuvyqYR
hH+HDzetHbB4t7zC+xS+5afQufUE+/rHeg4xDwB3tScEOWf4ffQP05lfyoow
BGlovgD06AVKWENI8RiMleTZEpnyhESCCqN0wxliZ8KJjmekK5+pO7sv7fbH
MNCBWebUhG1hMsvw8uHEUsByoHZkNIgXTiQ9OofoMIydIsM4PFjZGhAYRCOo
agdYEt8RUZ80P1/YSRr54yYXpfYYLyQOy8IQ2uD0gYAQBtAjO0naNIIJBcf5
GH1vzC2GLIQvle8dL4hkSTtIGzhz25D9ecziBw7bQPoT8JtEnNCRLfk8Jzgh
Wyh6OXS6J4ADU1HlMqN+aOGD9iTA11mMqp7/Kxzla25yrh6Z9mzuh7RAJDXE
E6btS+NxAUQNRpb3xEnk7ZMR0uw4YJJtm+DEm0dCpsmEMFaS62mXwbGUiAwP
zm8wQiUaainAHkh5on8ZqzGgYAQeIRsefktKDMUlibdk+SZMwm0CLSIHhBRY
D9758iVJSPJQhoiGyqHO/URKCmsCIZFBHfKocZ7JJhI5voHaJOxMUnIEhMIT
BdpAEodCHK0x6P/9MhyKUfBjhnP1m3E0ahO7GoNGbsAcpkBZLhNKmyQq0XVZ
Kw8rpXKlaJRrld3yAD7t7hWrpb3dvfJwWC6UCqViqVbeK5fKxnAoRzK9eKi0
1BhoihlcZybC9d6rJuQVUmTWfk47kwH152cdyawHBr77LOYHDkTEcYz6wycy
PzAHfiiTg75/8FxG/dGjmfgcvut0Zm0O335AE5/Dd53RqD/ori9F5/CdJzXq
D+Ki/M45bDuz+NE5VGJz+L5TG/UHcVF95xy+AQ7ffnzzDXvznXD4jkOc7+Yw
Sec4gm2/fYwTZ8r/8vObI2aDPWm97Xwe8Re/3fUcjJDsft7iE0rxO8/bhfvD
wd1jf/wwfZo1B+xk0XkaTuaf2yfmqVHon1+WLp4O60cXl7kzMhIns5uzVqnl
F++uuvrF7LLeORyuXmru7as3PvpsXrQv+q+6038sTTvLh3lzsaj3S7nLwnWD
WvdqTf/z3u7J9UIbX1Qual69W1i8noxqT8bq8NJeelcP1caqdD0+b1a9Xq/x
/Nxb7rYfprzgw0t1r2N2iq8n1b5be63uT3aHpfLjzbhcmpQbudnNUrvtLZ6t
4n3n6cG9HRnNu4fpw9P5SYVaL6bW5Y2us3ONDS9rF/br0/Cl8nKhHw3tu8O7
1+Jodn51Ob86q00q15PK6cni8mjYHnarY5eaj/qT06ez5qtZttyh3XEXXW9S
OmwcssfLmZ6zC/u5+V6/nDu6ejl7rlt3q/NjdgTdlP1bal4dHR/WLm37qtxt
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
FUnFn4Ukqg8XK+wVQxLWBvsDSVuRVEpFUunnIEkWr3uT3WX/4HepWCqnYqn8
u2Bpo9zeH6iSqKqkoqryk1BFVRD/YHo/gKNqKo6qvwOO/thMqYjaS0XU3m+r
i/+xm9KRhIck6TYT/piKqtR7ZP4j7SVZLPsnYij1vt+osbQNP4WfgZ//FFvp
d0JQcRuCij8DQf8pdtLvhKDSNgSVfhxB/0E20u+EofI2DJV/cwz926t0vxOa
KtvQVPkJaPpPsY1+J/xUt+Gn+hvj549NlGIUbUPS3m+nb/+xi9YR9I4TsI3S
iN97EIaoDHtJO/MSB1tsggSzkf/L6QbLyCf9GqOcekLtDLZ5l1k2/erEVMAl
DJ1ANyf91vcTQnSmOT7Tt6iC4Mbv59wGO3GD53fBj9Id5SV6rrozMY2PQSB/
PIhmC1zzhfRYgN8Cts6CuQuTLd+Ep9qbT6d49xe8dkvn1BRzg2fPGGLLQ26T
A8TE2+8L1I1dJJnDnCAeKZLsF0pKTedXqkaqNVBFcjmLlIA+jh6TT+rLFx54
7VjOaMUDm3LholPTfGRZrQHd7IoR0Rh9vS0mGolhJ4oEPtQ1v0OAj5VQ0Z8i
BwwKiabdIauvbWveZMnNI8XbEhYq47TFrQwJgdqxoHsRZQ3Lxp7jcfe891wO
tpI+EdcZe0DPHArichiPGHE6rr98kFciC1KLhHPye03xQrgphnEZ0YA95Mfy
1gglnZyCqyQoLpqXPgluqaFwc3i+eXX6Vx4OqlKeTzQmtNXYCLLciMPcjYVt
rhr2cDB9OH/U++5p039qPnfZ4LpxWFi83DmfF+X59KTcP61dPzxPYtGm/I7l
MNh0ZL5cnex+HpXro1z1uHeudVrNs6fXQXPs3GuL89WpNTXsp6f61Z0INqX5
Pr7cjK7P+trpRbdx9nQ0eDw96156/f1Wv2ofet1yfXl11GrX2+3BeSREdVRs
3vun2swsOt3i69nTdaN/X2uWB/3b6+PGabeYe+weNXYrj9p1LYwx3bikjqNX
XN7xg9hd6zqG1vXLh34MefJGmO+9CyYNf/270wtveX9VH9l+xz3rPVjLyUq7
LRidVq7dGbuDm5bjt0fny049gr/n2eNNod+dXh3vVYqH46dZ87Rc6IzPJub9
2XOuUFlelx8PH3Pn/fYkgr9z1rDP29VKT7u+eywUjoaFPtP0l9Lxfs94vdg7
9/t6835x3O8uIvhT6zoWwrCYMSJNC4PD7TkmlzDjr5mhZgHUvibKAwtD64Al
eWp4k/OXL/8TSEDd8cJouD5TlxSNaJkTJqom2BPl2sQ6ToZ6qLk287LKoWtq
ttoAjA6YZWWVc9iiJBINLat0LM011TNz7i004NVZpctMCwQA6Gd2VqlrLkwK
JCzTJ2ZWaZuWOVN7E2eiwY9NEFcNx7Gw+BXG1/UYKAI+jtUDFvDKLEVIfNOl
kDcZFBzcwbkeW/YhEMDqMfBHx12lAC5X2MPsogbOXWaYSq2hxOMfKf04PW2X
LS2eRUR6xy8i8yZB9omLd4I4M1lb7M8ofVFTfAF5IkImt1yFGspcuXoYvUdF
1XK9seOr9ctOXPvZckKBo18zrBRkqJm25LhvXC2WgXGRqt94K1wZ5dDR8niW
FTfCPoWpIhh8y28P4dYMC9tiGQ9xk7Nu8ctdHcpQ5FllCWKblxygVwql6DsR
2QyGANA1hThvliPAwW9FgpoWz8JdOrwVp5Kk4H1xzwvMgGxGJEw1ouZQ2n5C
dHmGY0JcagTUUd6tVbntGQmd5jMDmkDIREJV/UiNJ5ELBetBYGm663gekiPM
KA6kFPqiqOcQ/pEoTUJjCLn0OMgQfAlGI7+dFgBItpqwyELYzRyTKgAglmVE
t7zSiV8ElUbH56DfGWpg1/ElysvzsL/gruIFLkMEfmLYZq5QJSbAdXvKtBDJ
MS0ZDRlqsNBRkmKLtVksMGg5ziifMsQ6jVHBMZrCPNmua28Oq/B0fJk3KfI1
YediYD/Ka5g1AqEX5AYHQdqRGOVYyPz6XbJpFIGbiZfRwVlzNYASVHNBInIU
5SnKNHa/TUn2OGek2qqwDM0UpbYS9F7K+AwzIzfSPkU4MM9PoqwIgl6KOUGk
g9ndjKgcGBnqPi4Q05QzA0BdWQn2A2da4YLJOtu8lZlv5ymRJMlfl1ky41Wb
zWlJ2mwRBZwRmsJIftM37/umqZWUyEiOOwMa5gPyyOz66aU6weB53HXwZtt8
QQjNiYVlRBJ6DkxBI6N6K9vXXhD6QB+YeKCuhUcjL9gv1HY5/4/s/2AnQuNW
Ihhp3QOPF93lHNpEE9qY63wp4SKk2KqByZ7poddLV+tBTRxouFYZARaCSMkg
NIohopAEEhCDbxUUDgmYFKciqm3p4U+7ogNxZ0j/6KyBVbTBasSUBr4UoK+I
akOo3FBYEDe7+8RVeL0GEvDc+KLfavgbmGWcKg8AFX6G9qcZ7sHQ5swT65DF
Sl2meTLtlb0gCinRJ1bMg19TDbj0xa6EvfQ2ScXug49elU03govCTjD7qNKk
y6y13G41JEaaTpiLg9+eQHkPK8KuqWx/FldH15s8l5HytUVS8EallCWvYUNT
qUQ3QFAeI7oH1vKARBlGuRc+FAsHVB3IWnG+2O2AJO1dqrXd3VyxuIdERJg3
IsnGMKlcK/CXEeBkelq068L+gXpo2kHp0nqkckBDFgII364dEEVgLmXIIpC+
w/qXethK6FZAmWHd2oK6s7Y7uNMaCDPcQuI2ppDzROve7sSF20deew1sCRwc
dYkc1h1ydMcKK3CFPRGoe8yfzzjFrDttBNrk5A3mY60MTBcLLw7HkrTxyha2
ESuvAfCntxOlFdFEWQmhKoDqjR03mg0T+hS9LCarhFUCgD5I23RsXDSinPos
KTGYexGYYxUD09PnXNGKQC8g60SQxOsg6JrrrvgMBJJzgQJkYGUeXDelIQkN
DeZUjKyzfLAFKsRlDmCWbiYmq3GTODwtcM4pL3W6IdakEyliK9HNnlm6wROx
BRZHXrA3TEkkHY+qhFDv0ZT1sGaXpPB5pMLrOCzYEGcDtHpi47ilQLwxZqDD
i7MXnUqKYpUHwwnY56XI7pRcmLYZ8ihKV/YmIt2PmA8aNfwe04SyvB5yVXKP
DFfrQpvWRx0RtJ6xEO2GnkuVCJnneyGzpHakR9ICuEEWKSbCxRVtj43fABIk
tfgtHsgDqfwT1V1AQh65DiATL4Kg3UP1lEl0u2Mt9yy9ADkhbJC3/z/UdHjd
58AAAA==

-->

</rfc>
