<?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.21 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="pre5378Trust200902" docName="draft-ietf-cose-hpke-10" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="COSE HPKE">Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and Encryption (COSE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hpke-10"/>
    <author initials="H." surname="Tschofenig" 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 initials="O." surname="Steele" fullname="Orie Steele" role="editor">
      <organization>Transmute</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <author initials="D." surname="Ajitomi" fullname="Daisuke Ajitomi">
      <organization>bibital</organization>
      <address>
        <postal>
          <country>Japan</country>
        </postal>
        <email>dajiaji@gmail.com</email>
      </address>
    </author>
    <author initials="L." surname="Lundblade" fullname="Laurence Lundblade">
      <organization>Security Theory LLC</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>lgl@securitytheory.com</email>
      </address>
    </author>
    <date year="2025" month="January" day="18"/>
    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 62?>

<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.</t>
      <t>HPKE works for any combination of an asymmetric key encapsulation mechanism (KEM),
key derivation function (KDF), and authenticated encryption with
additional data (AEAD) function. Authentication for HPKE in COSE is
provided by COSE-native security mechanisms or by one of the authenticated
variants of HPKE.</t>
      <t>This document defines the use of the HPKE with COSE.</t>
    </abstract>
  </front>
  <middle>
    <?line 76?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Hybrid public-key encryption (HPKE) <xref target="RFC9180"/> is a scheme that 
provides public key encryption of arbitrary-sized plaintexts given a 
recipient's public key.</t>
      <t>This document defines the use of the HPKE with COSE (<xref target="RFC9052"/>, <xref target="RFC9053"/>).</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
      <t>This specification uses the following abbreviations and terms:</t>
      <ul spacing="normal">
        <li>
          <t>Content-encryption key (CEK), a term defined in CMS <xref target="RFC2630"/>.</t>
        </li>
        <li>
          <t>Hybrid Public Key Encryption (HPKE) is defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>pkR is the public key of the recipient, as defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>skR is the private key of the recipient, as defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Encapsulation Mechanism (KEM), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Derivation Function (KDF), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Authenticated Encryption with Associated Data (AEAD), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Additional Authenticated Data (AAD), see <xref target="RFC9180"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="hpke-for-cose">
      <name>HPKE for COSE</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>This specification supports two modes of HPKE in COSE, namely</t>
        <ul spacing="normal">
          <li>
            <t>HPKE Direct Encryption mode, where HPKE is used to encrypt the plaintext. This mode can only be used with a single recipient. <xref target="one-layer"/> provides the details.</t>
          </li>
          <li>
            <t>HPKE Key Encryption mode, where HPKE is used to encrypt a content encryption key (CEK) and the CEK is subsequently used to encrypt the plaintext. This mode supports multiple recipients. <xref target="two-layer"/> 
  provides the details.</t>
          </li>
        </ul>
        <t>In both cases a new COSE header parameter, called 'ek',
is used to convey the content of the enc structure defined in the HPKE
specification. "Enc" represents the serialized public key.</t>
        <t>For use with HPKE the 'ek' header parameter MUST
be present in the unprotected header parameter and MUST contain
the encapsulated key, which is output of the HPKE KEM, and it
is a bstr.</t>
        <section anchor="one-layer">
          <name>HPKE Direct Encryption Mode</name>
          <t>This mode is selected if COSE_Encrypt0 structure uses a COSE-HPKE algoritm.</t>
          <t>Because there are no recipients, COSE_Encrypt structure MUST NOT be used.</t>
          <t>Because COSE-HPKE supports header protection by definition, if 'alg' parameter is present, it MUST be in protected bucket, and SHALL be a COSE-HPKE algorithm.</t>
          <t>Although the use of the 'kid' parameter in COSE_Encrypt0 is
discouraged by RFC 9052, this documents RECOMMENDS the use of the 'kid' parameter
(or other parameters) to explicitly identify the static recipient public key
used by the sender. If the COSE_Encrypt0 contains the 'kid' then the recipient may
use it to select the appropriate private key.</t>
          <t>When encrypting, the inputs to the HPKE Seal operation are set as follows:</t>
          <ul spacing="normal">
            <li>
              <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>pkR: The recipient public key, converted into HPKE public key.</t>
            </li>
            <li>
              <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>info: empty string.</t>
            </li>
            <li>
              <t>aad: Canonical encoding of the Enc_structure from <xref target="RFC9052"/>).</t>
            </li>
            <li>
              <t>pt: The raw message plaintext.</t>
            </li>
          </ul>
          <t>The outputs are used as follows:</t>
          <ul spacing="normal">
            <li>
              <t>enc: MUST be placed raw into the 'ek' (encapsulated key) parameter in the unprotected bucket.</t>
            </li>
            <li>
              <t>ct: MUST be used as layer ciphertext. If not using detached content, this is directly placed as
ciphertext in COSE_Encrypt0 structure. Otherwise, it is transported separately and the ciphertext field is nil.
See Section 5 of <xref target="RFC9052"/> for a description of detached payloads.</t>
            </li>
          </ul>
          <t>When decrypting, the inputs to the HPKE Open operation are set as follows:</t>
          <ul spacing="normal">
            <li>
              <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>skR: The recipient private key, converted into HPKE private key.</t>
            </li>
            <li>
              <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>info: empty string.</t>
            </li>
            <li>
              <t>aad: Canonical encoding of the Enc_structure from <xref target="RFC9052"/>).</t>
            </li>
            <li>
              <t>enc: The contents of the layer 'ek' parameter.</t>
            </li>
            <li>
              <t>ct: The contents of the layer ciphertext.</t>
            </li>
          </ul>
          <t>The plaintext output is the raw message plaintext.</t>
          <t>The COSE_Encrypt0 MAY be tagged or untagged.</t>
          <t>An example is shown in <xref target="one-layer-example"/>.</t>
        </section>
        <section anchor="two-layer">
          <name>HPKE Key Encryption Mode</name>
          <t>This mode is selected if COSE_recipient structure uses a COSE-HPKE algorithm.</t>
          <t>In this approach the following layers are involved:</t>
          <ul spacing="normal">
            <li>
              <t>Layer 0 (corresponding to the COSE_Encrypt structure) contains the content (plaintext)
encrypted with the CEK. This ciphertext may be detached, and if not detached, then
it is included in the COSE_Encrypt structure.</t>
            </li>
            <li>
              <t>Layer 1 (corresponding to a recipient structure) contains parameters needed for 
HPKE to generate a shared secret used to encrypt the CEK. This layer conveys the 
encrypted CEK in the COSE_recipient structure using a COSE-HPKE algorithm.
The unprotected header MAY contain the kid parameter to identify the static recipient
public key the sender has been using with HPKE.</t>
            </li>
          </ul>
          <t>This two-layer structure is used to encrypt content that can also be shared with
multiple parties at the expense of a single additional encryption operation.
As stated above, the specification uses a CEK to encrypt the content at layer 0.</t>
          <section anchor="recipient-encryption">
            <name>Recipient Encryption</name>
            <t>This describes the Recipient_structure.
It serves instead of COSE_KDF_Context for COSE-HPKE recipients (and possibly other COSE algorithms defined outside this document).
It MUST be used for COSE-HPKE recipients as it provides the protection for recipient protected headers.
It is patterned after the Enc_structure in <xref target="RFC9052"/>, but is specifically for a COSE_recipient, never a COSE_Encrypt.
The COSE_KDF_Context MUST NOT be used in COSE-HPKE.</t>
            <artwork><![CDATA[
Recipient_structure = [ 
    context: "Recipient",
    next_layer_alg: int/tstr,
    recipient_protected_header: empty_or_serialize_map,
    recipient_aad: bstr
]
]]></artwork>
            <ul spacing="normal">
              <li>
                <t>"next_layer_alg" is the algorithm ID of the COSE layer for which the COSE_recipient is encrypting a key.
It is the algorithm that the key MUST be used with.
This value MUST match the alg parameter in the next lower COSE layer.
(This serves the same purpose as the alg ID in the COSE_KDF_Context.
It also mitigates attacks where a person-in-the-middle changes the following layer algorithm from an AEAD algorithm to one that is not foiling the protection of the following layer headers).</t>
              </li>
              <li>
                <t>"recipient_protected_header" contains the protected headers from the COSE_recipient CBOR-encoded deterministically with the "Core Deterministic Encoding Requirements", specified in Section 4.2.1 of RFC 8949 <xref target="STD94"/>.</t>
              </li>
              <li>
                <t>"recipient_aad" contains any additional context the application wishes to protect.
If none, it is a zero-length string.
This is distinct from the external_aad for the whole COSE encrypt.
It is per-recipient.
Since it is not a header, it may be secret data that is not transmitted.
It provides a means to convey many of the fields in COSE_KDF_Context.</t>
              </li>
            </ul>
          </section>
          <section anchor="cose-hpke-recipient-construction">
            <name>COSE-HPKE Recipient Construction</name>
            <t>Because COSE-HPKE supports header protection by definition, if 'alg' parameter is present, it MUST be in protected bucket, and SHALL be a COSE-HPKE algorithm.</t>
            <t>The unprotected header MAY contain the kid parameter to identify the static recipient public key the sender used.</t>
            <t>When encrypting, the inputs to the HPKE Seal operation are set as follows:</t>
            <ul spacing="normal">
              <li>
                <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
              </li>
              <li>
                <t>pkR: The recipient public key, converted into HPKE public key.</t>
              </li>
              <li>
                <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
              </li>
              <li>
                <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
              </li>
              <li>
                <t>info: empty string.</t>
              </li>
              <li>
                <t>aad: Canonical encoding of the Recipient_structure.</t>
              </li>
              <li>
                <t>pt: The raw key for the next layer down.</t>
              </li>
            </ul>
            <t>The outputs are used as follows:</t>
            <ul spacing="normal">
              <li>
                <t>enc: MUST be placed raw into the 'ek' (encapsulated key) parameter in the unprotected bucket.</t>
              </li>
              <li>
                <t>ct: MUST be placed raw in the ciphertext field in the COSE_recipient.</t>
              </li>
            </ul>
            <t>When decrypting, the inputs to the HPKE Open operation are set as follows:</t>
            <ul spacing="normal">
              <li>
                <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
              </li>
              <li>
                <t>skR: The recipient private key, converted into HPKE private key.</t>
              </li>
              <li>
                <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
              </li>
              <li>
                <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
              </li>
              <li>
                <t>info: empty string.</t>
              </li>
              <li>
                <t>aad: Canonical encoding of the Recipient_structure.</t>
              </li>
              <li>
                <t>enc: The contents of the layer 'ek' parameter.</t>
              </li>
              <li>
                <t>ct: The contents of the layer ciphertext field.</t>
              </li>
            </ul>
            <t>The plaintext output is the raw key for the next layer down.</t>
            <t>It is not necessary to fill in recipient_aad as HPKE itself covers the attacks that recipient_aad (and COSE_KDF_Context (and SP800-56A)) are used to mitigate.
COSE-HPKE use cases may use it for any purpose they wish, but it should generally be for small identifiers, context or secrets, not to protect bulk external data.
Bulk external data should be protected at layer 0 with external_aad.</t>
            <t>The COSE_recipient structure is repeated for each recipient.</t>
            <t>When encrypting the content at layer 0 then the instructions in
Section 5.3 of <xref target="RFC9052"/> MUST to be followed, which includes the
calculation of the authenticated data strcture.</t>
            <t>An example is shown in <xref target="two-layer-example"/>.</t>
          </section>
        </section>
      </section>
      <section anchor="key-representation">
        <name>Key Representation</name>
        <t>The COSE_Key with the existing key types can be used to represent KEM private
or public keys. When using a COSE_Key for COSE-HPKE, the following checks are made:</t>
        <ul spacing="normal">
          <li>
            <t>If the "kty" field is "AKP", then the public and private keys SHALL be raw HPKE public and private
keys (respectively) for the KEM used by the algorithm.</t>
          </li>
          <li>
            <t>Otherwise, the key MUST be suitable for the KEM used by the algorithm. In case the "kty" parameter
is "EC2" or "OKP", this means the value of "crv" parameter is suitable. For the algorithms defined in
this document, the valid combinations of the KEM, "kty" and "crv" are shown in  <xref target="ciphersuite-kty-crv"/>.</t>
          </li>
          <li>
            <t>If the "key_ops" field is present, it MUST include only "derive bits" for the private key
and MUST be empty for the public key.</t>
          </li>
        </ul>
        <t>Examples of the COSE_Key for COSE-HPKE are shown in <xref target="key-representation-example"/>.</t>
      </section>
    </section>
    <section anchor="ciphersuite-registration">
      <name>Ciphersuite Registration</name>
      <t>A ciphersuite is a group of algorithms, often sharing component algorithms
such as hash functions, targeting a security level.
A COSE-HPKE algorithm is composed of the following choices:</t>
      <ul spacing="normal">
        <li>
          <t>HPKE Mode</t>
        </li>
        <li>
          <t>KEM Algorithm</t>
        </li>
        <li>
          <t>KDF Algorithm</t>
        </li>
        <li>
          <t>AEAD Algorithm</t>
        </li>
      </ul>
      <t>The "KEM", "KDF", and "AEAD" values are chosen from the HPKE IANA
registry <xref target="HPKE-IANA"/>.</t>
      <t>For readability the algorithm ciphersuites labels are built according
to the following scheme:</t>
      <artwork><![CDATA[
HPKE-<Version>-<Mode>-<KEM>-<KDF>-<AEAD>
]]></artwork>
      <t>The "Mode" indicator may be populated with the following values from
Table 1 of <xref target="RFC9180"/>:</t>
      <ul spacing="normal">
        <li>
          <t>"Base" refers to "mode_base" described in Section 5.1.1 of <xref target="RFC9180"/>,
which only enables encryption to the holder of a given KEM private key.</t>
        </li>
        <li>
          <t>"PSK" refers to "mode_psk", described in Section 5.1.2 of <xref target="RFC9180"/>,
which authenticates using a pre-shared key.</t>
        </li>
        <li>
          <t>"Auth" refers to "mode_auth", described in Section 5.1.3 of <xref target="RFC9180"/>,
which authenticates using an asymmetric key.</t>
        </li>
        <li>
          <t>"Auth_Psk" refers to "mode_auth_psk", described in Section 5.1.4 of <xref target="RFC9180"/>,
which authenticates using both a PSK and an asymmetric key.</t>
        </li>
      </ul>
      <t>For a list of ciphersuite registrations, please see <xref target="IANA"/>. The following
table summarizes the relationship between the ciphersuites registered in this
document, which all use the "Base" mode and the values registered in the
HPKE IANA registry <xref target="HPKE-IANA"/>.</t>
      <artwork><![CDATA[
+--------------------------------------------------+------------------+
| COSE-HPKE                                        |      HPKE        |
| Cipher Suite Label                               | KEM | KDF | AEAD |
+--------------------------------------------------+-----+-----+------+
| HPKE-0                                           |0x10 | 0x1 | 0x1  |
| HPKE-1                                           |0x11 | 0x2 | 0x2  |
| HPKE-2                                           |0x12 | 0x3 | 0x2  |
| HPKE-3                                           |0x20 | 0x1 | 0x1  |
| HPKE-4                                           |0x20 | 0x1 | 0x3  |
| HPKE-5                                           |0x21 | 0x3 | 0x2  |
| HPKE-6                                           |0x21 | 0x3 | 0x3  |
+--------------------------------------------------+-----+-----+------+
]]></artwork>
      <t>As the list indicates, the ciphersuite labels have been abbreviated at least
to some extend to maintain the tradeoff between readability and length.</t>
      <t>The ciphersuite list above is a minimal starting point. Additional
ciphersuites can be registered into the already existing registry.
For example, once post-quantum cryptographic algorithms have been standardized
it might be beneficial to register ciphersuites for use with COSE-HPKE.
Additionally, ciphersuites utilizing the compact encoding of the public keys,
as defined in <xref target="I-D.irtf-cfrg-dnhpke"/>, may be standardized for use in
constrained environments.</t>
      <t>As a guideline for ciphersuite submissions to the IANA CoSE algorithm
registry, the designated experts must only register combinations of 
(KEM, KDF, AEAD) triple that consitute valid combinations for use with
HPKE, the KDF used should (if possible) match one internally used by the
KEM, and components should not be mixed between global and national standards.</t>
      <section anchor="cosekeys-for-cose-hpke-ciphersuites">
        <name>COSE_Keys for COSE-HPKE Ciphersuites</name>
        <t>The COSE-HPKE algorithm uniquely determines the KEM for which a COSE_Key is used.
The following mapping table shows the valid combinations
of the KEM used, COSE_Key type and its curve/key subtype.</t>
        <figure anchor="ciphersuite-kty-crv">
          <name>COSE_Key Types and Curves for COSE-HPKE Ciphersuites</name>
          <artwork><![CDATA[
+---------------------+--------------+
| HPKE KEM id         | COSE_Key     |
|                     | kty | crv    |
+---------------------+-----+--------+
| 0x0010, 0x0013      | EC2 | P-256  |
| 0x0011, 0x0014      | EC2 | P-384  |
| 0x0012, 0x0015      | EC2 | P-521  |
| 0x0020              | OKP | X25519 |
| 0x0021              | OKP | X448   |
+---------------------+-----+--------+
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section provides a set of examples that shows all COSE message types
(COSE_Encrypt0, COSE_Encrypt and COSE_MAC) to which the COSE-HPKE can be
applied, and also provides some examples of key representation for HPKE KEM.</t>
      <t>Each example of the COSE message includes the following information
that can be used to check the interoperability of COSE-HPKE implementations:</t>
      <ul spacing="normal">
        <li>
          <t>plaintext: Original data of the encrypted payload.</t>
        </li>
        <li>
          <t>external_aad: Externally supplied AAD.</t>
        </li>
        <li>
          <t>skR: A recipient private key.</t>
        </li>
        <li>
          <t>skE: An ephemeral sender private key paired with the encapsulated key.</t>
        </li>
      </ul>
      <section anchor="one-layer-example">
        <name>HPKE Direct Encryption Mode</name>
        <t>This example assumes that a sender wants to communicate an
encrypted payload to a single recipient in the most efficient way.</t>
        <t>An example of the HPKE Direct Encryption Mode is
shown in <xref target="hpke-example-one"/>. Line breaks and comments have been inserted
for better readability.</t>
        <t>This example uses the following:</t>
        <ul spacing="normal">
          <li>
            <t>alg: HPKE-0</t>
          </li>
          <li>
            <t>plaintext: "This is the content."</t>
          </li>
          <li>
            <t>external_aad: "COSE-HPKE app"</t>
          </li>
          <li>
            <t>skR: h'57c92077664146e876760c9520d054aa93c3afb04e306705db6090308507b4d3'</t>
          </li>
          <li>
            <t>skE: h'42dd125eefc409c3b57366e721a40043fb5a58e346d51c133128a77237160218'</t>
          </li>
        </ul>
        <figure anchor="hpke-example-one">
          <name>COSE_Encrypt0 Example for HPKE</name>
          <artwork><![CDATA[
16([
    / alg = HPKE-0 (Assumed: 35) /
    h'a1011823',
    {
        / kid /
        4: h'3031',
        / ek /
        -4: h'045df24272faf43849530db6be01f42708b3c3a9
              df8e268513f0a996ed09ba7840894a3fb946cb28
              23f609c59463093d8815a7400233b75ca8ecb177
              54d241973e',
    },
    / encrypted plaintext /
    h'35aa3d98739289b83751125abe44e3b977e4b9abbf2c8cfaade
      b15f7681eef76df88f096',
])
]]></artwork>
        </figure>
      </section>
      <section anchor="two-layer-example">
        <name>HPKE Key Encryption Mode</name>
        <t>In this example we assume that a sender wants to transmit a
payload to two recipients using the HPKE Key Encryption mode.
Note that it is possible to send two single-layer payloads, 
although it will be less efficient.</t>
        <section anchor="coseencrypt">
          <name>COSE_Encrypt</name>
          <t>An example of the COSE_Encrypt structure using the HPKE scheme is
shown in <xref target="hpke-example-cose-encrypt"/>. Line breaks and comments have been
inserted for better readability.</t>
          <t>This example uses the following:</t>
          <t>TODO: recompute this for Recipient_structure</t>
          <ul spacing="normal">
            <li>
              <t>Encryption alg: AES-128-GCM</t>
            </li>
            <li>
              <t>plaintext: "This is the content."</t>
            </li>
            <li>
              <t>detatched ciphertext: h'cc168c4e148c52a83010a75250935a47ccb8682deebcef8fce5d60c161e849f53a2dc664'</t>
            </li>
            <li>
              <t>kid:"01"
              </t>
              <ul spacing="normal">
                <li>
                  <t>alg: HPKE-0</t>
                </li>
                <li>
                  <t>external_aad: "COSE-HPKE app"</t>
                </li>
                <li>
                  <t>skR: h'57c92077664146e876760c9520d054aa93c3afb04e306705db6090308507b4d3'</t>
                </li>
                <li>
                  <t>skE: h'97ad883f949f4cdcb1301b9446950efd4eb519e16c4a3d78304eec832692f9f6'</t>
                </li>
              </ul>
            </li>
            <li>
              <t>kid:"02"
              </t>
              <ul spacing="normal">
                <li>
                  <t>alg: HPKE-4</t>
                </li>
                <li>
                  <t>external_aad: "COSE-HPKE app"</t>
                </li>
                <li>
                  <t>skR: h'bec275a17e4d362d0819dc0695d89a73be6bf94b66ab726ae0b1afe3c43f41ce'</t>
                </li>
                <li>
                  <t>skE: h'b8ed3f4df56c230e36fa6620a47f24d08856d242ea547c5521ff7bd69af8fd6f'</t>
                </li>
              </ul>
            </li>
          </ul>
          <figure anchor="hpke-example-cose-encrypt">
            <name>COSE_Encrypt Example for HPKE</name>
            <artwork><![CDATA[
96_0([
    / alg = AES-128-GCM (1) /
    h'a10101',
    {
        / iv /
        5: h'b3fb95dde18c6f90a9f0ae55',
    },
    / detached ciphertext /
    null,
    [
        [
            / alg = HPKE-0 (Assumed: 35) /
            h'a1011823',
            {
                / kid /
                4: h'3031',
                / ek /
                -4: h'04d97b79486fe2e7b98fb1bd43
                      c4faee316ff38d28609a1cf568
                      40a809298a91e601f1cc0c2ba4
                      6cb67b41f4651b769cafd9df78
                      e58aa7f5771291bd4f0f420ba6',
            },
            / ciphertext containing encrypted CEK /
            h'24450f54ae93375351467d17aa7a795cfede2
              c03eced1ad21fcb7e7c2fe64397',
        ],
        [
            / alg = HPKE-4 (Assumed: 42) /
            h'a101182a',
            {
                / kid /
                4: h'3032',
                / ek /
                -4: h'd1afbdc95b0e735676f6bca34f
                      be50f2822259ac09bfc3c500f1
                      4a05de9b2833',
            },
            / ciphertext containing encrypted CEK /
            h'079b443ec6dfcda6a5f8748aff3875146a8ed
              40359e1279b545166385d8d9b59',
        ],
    ],
])
]]></artwork>
          </figure>
          <t>To offer authentication of the sender the payload in <xref target="hpke-example-cose-encrypt"/>
is signed with a COSE_Sign1 wrapper, which is outlined in <xref target="hpke-example-sign"/>.
The payload in <xref target="hpke-example-sign"/> is meant to contain the content of
<xref target="hpke-example-cose-encrypt"/>.</t>
          <figure anchor="hpke-example-sign">
            <name>COSE_Encrypt Example for HPKE</name>
            <artwork><![CDATA[
18(
  [
    / protected / h'a10126' / {
            \ alg \ 1:-7 \ ECDSA 256 \
          } / ,
    / unprotected / {
          / kid / 4:'sender@example.com'
        },
    / payload /     h'AA19...B80C',
    / signature /   h'E3B8...25B8'
  ]
)
]]></artwork>
          </figure>
        </section>
        <section anchor="cosemac">
          <name>COSE_MAC</name>
          <t>An example of the COSE_MAC structure using the HPKE scheme is
shown in <xref target="hpke-example-cose-mac"/>.</t>
          <t>This example uses the following:</t>
          <ul spacing="normal">
            <li>
              <t>MAC alg: HMAC 256/256</t>
            </li>
            <li>
              <t>payload: "This is the content."</t>
            </li>
            <li>
              <t>kid:"01"
              </t>
              <ul spacing="normal">
                <li>
                  <t>alg: HPKE-0</t>
                </li>
                <li>
                  <t>external_aad: "COSE-HPKE app"</t>
                </li>
                <li>
                  <t>skR: h'57c92077664146e876760c9520d054aa93c3afb04e306705db6090308507b4d3'</t>
                </li>
                <li>
                  <t>skE: h'e5dd9472b5807636c95be0ba2575020ba91cbb3561b52be141da89678c664307'</t>
                </li>
              </ul>
            </li>
            <li>
              <t>kid:"02"
              </t>
              <ul spacing="normal">
                <li>
                  <t>alg: HPKE-4</t>
                </li>
                <li>
                  <t>external_aad: "COSE-HPKE app"</t>
                </li>
                <li>
                  <t>skR: h'bec275a17e4d362d0819dc0695d89a73be6bf94b66ab726ae0b1afe3c43f41ce'</t>
                </li>
                <li>
                  <t>skE: h'78a49d7af71b5244498e943f361aa0250184afc48b8098a68ae97ccd2cd7e56f'</t>
                </li>
              </ul>
            </li>
          </ul>
          <figure anchor="hpke-example-cose-mac">
            <name>COSE_MAC Example for HPKE</name>
            <artwork><![CDATA[
97_0([
    / alg = HMAC 256/256 (5) /
    h'a10105',
    {},
    / payload = 'This is the content.' /
    h'546869732069732074686520636f6e74656e742e',
    / tag /
    h'5cdcf6055fcbdb53b4001d8fb88b2a46b200ed28e1e
          d77e16ddf43fb3cac3a98',
    [
        [
            / alg = HPKE-0 (Assumed: 35) /
            h'a1011823',
            {
                / kid = '01' /
                4: h'3031',
                / ek /
                -4: h'043ac21632e45e1fbd733f002a
                      621aa4f3d94737adc395d5a7cb
                      6e9554bd1ad273aec991493786
                      d72616d9759bf8526e6e20c1ed
                      c41ba5739f2b2e441781aa0eb4',
            },
            / ciphertext containing encrypted MAC key /
            h'5cee2b4235a7ff695164f7a8d1e79ccf3ca3d
              e8b22f3592626020a95b2a8d3fb4d7aa7fe37
              432426ee70073a368f29d1',
        ],
        [
            / alg = HPKE-4 (Assumed: 42) /
            h'a101182a',
            {
                / kid = '02' /
                4: h'3032',
                / ek /
                -4: h'02cffacc60def3bb3d0a1c3661
                      227c9de8dc2b1d3939dd2c07d4
                      49ebb0bba324',
            },
            / ciphertext containing encrypted MAC key /
            h'3f5b8b60271d5234dbea554dc1461d0239e9f
              4589f6415e8563b061dbcb37795a616111b78
              2b4c589b534309327ffadc',
        ],
    ],
])
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="key-representation-example">
        <name>Key Representation</name>
        <t>Examples of private and public KEM key representation are shown below.</t>
        <section anchor="kem-public-key-for-hpke-0">
          <name>KEM Public Key for HPKE-0</name>
          <figure anchor="hpke-example-key-1">
            <name>Key Representation Example for HPKE-0</name>
            <artwork><![CDATA[
{
    / kty = 'EC2' /
    1: 2,
    / kid = '01' /
    2: h'3031',
    / alg = HPKE-0 (Assumed: 35) /
    3: 35,
    / crv = 'P-256' /
    -1: 1,
    / x /
    -2: h'65eda5a12577c2bae829437fe338701a10aaa375
              e1bb5b5de108de439c08551d',
    / y /
    -3: h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af
              7e0ca7ca7e9eecd0084d19c'
}
]]></artwork>
          </figure>
        </section>
        <section anchor="kem-private-key-for-hpke-0">
          <name>KEM Private Key for HPKE-0</name>
          <figure anchor="hpke-example-key-2">
            <name>Key Representation Example for HPKE-0</name>
            <artwork><![CDATA[
{
    / kty = 'EC2' /
    1: 2,
    / kid = '01' /
    2: h'3031',
    / alg = HPKE-0 (Assumed: 35) /
    3: 35,
    / key_ops = ['derive_bits'] /
    4: [8],
    / crv = 'P-256' /
    -1: 1,
    / x /
    -2: h'bac5b11cad8f99f9c72b05cf4b9e26d244dc189f7
              45228255a219a86d6a09eff',
    / y /
    -3: h'20138bf82dc1b6d562be0fa54ab7804a3a64b6d72
              ccfed6b6fb6ed28bbfc117e',
    / d /
    -4: h'57c92077664146e876760c9520d054aa93c3afb04
              e306705db6090308507b4d3',
}
]]></artwork>
          </figure>
        </section>
        <section anchor="kem-public-key-for-hpke-4">
          <name>KEM Public Key for HPKE-4</name>
          <figure anchor="hpke-example-key-3">
            <name>Key Representation Example for HPKE-4</name>
            <artwork><![CDATA[
{
    / kty = 'OKP' /
    1: 1,
    / kid = '11' /
    2: h'3131',
    / alg = HPKE-4 (Assumed: 42) /
    3: 42,
    / crv = 'X25519' /
    -1: 4,
    / x /
    -2: h'cb7c09ab7b973c77a808ee05b9bbd373b55c06eaa
              9bd4ad2bd4e9931b1c34c22',
}
]]></artwork>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>This specification is based on HPKE and the security considerations of
<xref target="RFC9180"/> are therefore applicable also to this specification.</t>
      <t>HPKE assumes the sender is in possession of the public key of the recipient and
HPKE COSE 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 relies on a source of randomness to be available on the device. Additionally, 
with the two layer structure the CEK is randomly generated and it MUST be
ensured that the guidelines in <xref target="RFC8937"/> for random number generations are followed.</t>
      <t>HPKE in Base mode does not offer authentication as part of the HPKE KEM. In this
case COSE constructs like COSE_Sign, COSE_Sign1, COSE_MAC, or COSE_MAC0 can be
used to add authentication. HPKE also offers modes that offer authentication.</t>
      <t>If COSE_Encrypt or COSE_Encrypt0 is used with a detached ciphertext then the
subsequently applied integrity protection via COSE_Sign, COSE_Sign1, COSE_MAC, 
or COSE_MAC0 does not cover this detached ciphertext. Implementers MUST ensure
that the detached ciphertext also experiences integrity protection. This is, for
example, the case when an AEAD cipher is used to produce the detached ciphertext
but may not be guaranteed by non-AEAD ciphers.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document requests IANA to add new values to the 'COSE Algorithms' and to 
the 'COSE Header Parameters' registries.</t>
      <section anchor="cose-algorithms-registry">
        <name>COSE Algorithms Registry</name>
        <ul spacing="normal">
          <li>
            <t>Name: HPKE-0</t>
          </li>
          <li>
            <t>Value: TBD1 (Assumed: 35)</t>
          </li>
          <li>
            <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Capabilities: [kty]</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference:  [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Recommended: Yes</t>
          </li>
          <li>
            <t>Name: HPKE-1</t>
          </li>
          <li>
            <t>Value: TBD3 (Assumed: 37)</t>
          </li>
          <li>
            <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-384, HKDF-SHA384) KEM, the HKDF-SHA384 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Capabilities: [kty]</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference:  [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Recommended: Yes</t>
          </li>
          <li>
            <t>Name: HPKE-2</t>
          </li>
          <li>
            <t>Value: TBD5 (Assumed: 39)</t>
          </li>
          <li>
            <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Capabilities: [kty]</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference:  [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Recommended: Yes</t>
          </li>
          <li>
            <t>Name: HPKE-3</t>
          </li>
          <li>
            <t>Value: TBD7 (Assumed: 41)</t>
          </li>
          <li>
            <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Capabilities: [kty]</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference:  [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Recommended: Yes</t>
          </li>
          <li>
            <t>Name: HPKE-4</t>
          </li>
          <li>
            <t>Value: TBD8 (Assumed: 42)</t>
          </li>
          <li>
            <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Capabilities: [kty]</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference:  [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Recommended: Yes</t>
          </li>
          <li>
            <t>Name: HPKE-5</t>
          </li>
          <li>
            <t>Value: TBD9 (Assumed: 43)</t>
          </li>
          <li>
            <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Capabilities: [kty]</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference:  [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Recommended: Yes</t>
          </li>
          <li>
            <t>Name: HPKE-6</t>
          </li>
          <li>
            <t>Value: TBD10 (Assumed: 44)</t>
          </li>
          <li>
            <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Capabilities: [kty]</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Reference:  [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Recommended: Yes</t>
          </li>
        </ul>
      </section>
      <section anchor="cose-header-parameters">
        <name>COSE Header Parameters</name>
        <ul spacing="normal">
          <li>
            <t>Name: ek</t>
          </li>
          <li>
            <t>Label: TBDX (Assumed: -4)</t>
          </li>
          <li>
            <t>Value type: bstr</t>
          </li>
          <li>
            <t>Value Registry: N/A</t>
          </li>
          <li>
            <t>Description: HPKE encapsulated key</t>
          </li>
          <li>
            <t>Reference: [[This specification]]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
          <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
            <front>
              <title>Concise Binary Object Representation (CBOR)</title>
              <author fullname="C. Bormann" initials="C." surname="Bormann"/>
              <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
              <date month="December" year="2020"/>
              <abstract>
                <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
                <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="94"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
          </reference>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="RFC2630">
          <front>
            <title>Cryptographic Message Syntax</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax. This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2630"/>
          <seriesInfo name="DOI" value="10.17487/RFC2630"/>
        </reference>
        <reference anchor="I-D.irtf-cfrg-dnhpke">
          <front>
            <title>Deterministic Nonce-less Hybrid Public Key Encryption</title>
            <author fullname="Dan Harkins" initials="D." surname="Harkins">
              <organization>Hewlett-Packard Enterprise</organization>
            </author>
            <date day="9" month="September" year="2024"/>
            <abstract>
              <t>   This document describes enhancements to the Hybrid Public Key
   Encryption standard published by CFRG.  These include use of "compact
   representation" of relevant public keys, support for key-wrapping,
   and two ways to address the use of HPKE on lossy networks: a
   determinstic, nonce-less AEAD scheme, and use of a rolling sequence
   number with existing AEAD schemes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-dnhpke-05"/>
        </reference>
        <reference anchor="HPKE-IANA" target="https://www.iana.org/assignments/hpke/hpke.xhtml">
          <front>
            <title>Hybrid Public Key Encryption (HPKE) IANA Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2023" month="October"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 771?>

<section anchor="contributors">
      <name>Contributors</name>
      <t>We would like thank the following individuals for their contributions
to the design of embedding the HPKE output into the COSE structure 
following a long and lively mailing list discussion:</t>
      <ul spacing="normal">
        <li>
          <t>Richard Barnes</t>
        </li>
        <li>
          <t>Ilari Liusvaara</t>
        </li>
      </ul>
      <t>Finally, we would like to thank Russ Housley and Brendan Moran for their
contributions to the draft as co-authors of initial versions.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We would like to thank John Mattsson, Mike Prorock, Michael Richardson,
and Goeran Selander for their review feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
