<?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.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-hpke-hpke-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="HPKE">Hybrid Public Key Encryption</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-hpke-hpke-00"/>
    <author initials="R." surname="Barnes" fullname="Richard L. Barnes">
      <organization>Cisco</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <author initials="K." surname="Bhargavan" fullname="Karthik Bhargavan">
      <organization>Inria</organization>
      <address>
        <email>karthikeyan.bhargavan@inria.fr</email>
      </address>
    </author>
    <author initials="B." surname="Lipp" fullname="Benjamin Lipp">
      <organization>Inria</organization>
      <address>
        <email>ietf@benjaminlipp.de</email>
      </address>
    </author>
    <author initials="C." surname="Wood" fullname="Christopher A. Wood">
      <organization>Apple</organization>
      <address>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2025" month="June" day="01"/>
    <workgroup>HPKE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 238?>

<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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/hpkewg/hpke"/>.</t>
    </note>
  </front>
  <middle>
    <?line 254?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Encryption schemes that combine asymmetric and symmetric algorithms have been
specified and practiced since the early days of public key cryptography, e.g.,
<xref target="RFC1421"/>. Combining the two yields the key management advantages of asymmetric
cryptography and the performance benefits of symmetric cryptography. The traditional
combination has been "encrypt the symmetric key with the public key." "Hybrid"
public key encryption (HPKE) schemes, specified here, take a different approach:
"generate the symmetric key and its encapsulation with the public key."
Specifically, encrypted messages convey an encryption key encapsulated with a
public key scheme, along with one or more arbitrary-sized ciphertexts encrypted
using that key. This type of public key encryption has many applications in
practice, including Messaging Layer Security <xref target="I-D.ietf-mls-protocol"/> and
TLS Encrypted ClientHello <xref target="I-D.ietf-tls-esni"/>.</t>
      <t>Currently, there are numerous competing and non-interoperable standards and
variants for hybrid encryption, mostly variants on the Elliptic Curve Integrated Encryption Scheme (ECIES), including ANSI X9.63
(ECIES) <xref target="ANSI"/>, IEEE 1363a <xref target="IEEE1363"/>, ISO/IEC 18033-2 <xref target="ISO"/>, and SECG SEC 1
<xref target="SECG"/>.  See <xref target="MAEA10"/> for a thorough comparison.  All these existing
schemes have problems, e.g., because they rely on outdated primitives, lack
proofs of indistinguishable (adaptive) chosen-ciphertext attack (IND-CCA2) security, or fail to provide test vectors.</t>
      <t>This document defines an HPKE scheme that provides a subset
of the functions provided by the collection of schemes above but
specified with sufficient clarity that they can be interoperably
implemented. The HPKE construction defined herein is secure against (adaptive)
chosen ciphertext attacks (IND-CCA2-secure) under classical assumptions about
the underlying primitives <xref target="HPKEAnalysis"/> <xref target="ABHKLR20"/>. A summary of
these analyses is in <xref target="sec-properties"/>.</t>
      <t>This document represents the consensus of the Crypto Forum Research Group (CFRG).</t>
    </section>
    <section anchor="requirements-notation">
      <name>Requirements Notation</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.
<?line -6?>
      </t>
    </section>
    <section anchor="notation">
      <name>Notation</name>
      <t>The following terms are used throughout this document to describe the
operations, roles, and behaviors of HPKE:</t>
      <ul spacing="normal">
        <li>
          <t><tt>(skX, pkX)</tt>: A key encapsulation mechanism (KEM) key pair used in role X,
where X is one of S, R, or E as sender, recipient, and ephemeral, respectively;
<tt>skX</tt> is the private key and <tt>pkX</tt> is the public key.</t>
        </li>
        <li>
          <t><tt>pk(skX)</tt>: The KEM public key corresponding to the KEM private key <tt>skX</tt>.</t>
        </li>
        <li>
          <t>Sender (S): Role of entity that sends an encrypted message.</t>
        </li>
        <li>
          <t>Recipient (R): Role of entity that receives an encrypted message.</t>
        </li>
        <li>
          <t>Ephemeral (E): Role of a fresh random value meant for one-time use.</t>
        </li>
        <li>
          <t><tt>I2OSP(n, w)</tt>: Convert non-negative integer <tt>n</tt> to a <tt>w</tt>-length,
big-endian byte string, as described in <xref target="RFC8017"/>.</t>
        </li>
        <li>
          <t><tt>OS2IP(x)</tt>: Convert byte string <tt>x</tt> to a non-negative integer, as
described in <xref target="RFC8017"/>, assuming big-endian byte order.</t>
        </li>
        <li>
          <t><tt>concat(x0, ..., xN)</tt>: Concatenation of byte strings.
<tt>concat(0x01, 0x0203, 0x040506) = 0x010203040506</tt>.</t>
        </li>
        <li>
          <t><tt>random(n)</tt>: A pseudorandom byte string of length <tt>n</tt> bytes</t>
        </li>
        <li>
          <t><tt>xor(a,b)</tt>: XOR of byte strings; <tt>xor(0xF0F0, 0x1234) = 0xE2C4</tt>.
It is an error to call this function with two arguments of unequal
length.</t>
        </li>
      </ul>
    </section>
    <section anchor="base-crypto">
      <name>Cryptographic Dependencies</name>
      <t>HPKE variants rely on the following primitives:</t>
      <ul spacing="normal">
        <li>
          <t>A key encapsulation mechanism (KEM):
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>GenerateKeyPair()</tt>: Randomized algorithm to generate a key pair <tt>(skX, pkX)</tt>.</t>
            </li>
            <li>
              <t><tt>DeriveKeyPair(ikm)</tt>: Deterministic algorithm to derive a key pair
<tt>(skX, pkX)</tt> from the byte string <tt>ikm</tt>, where <tt>ikm</tt> SHOULD have at
least <tt>Nsk</tt> bytes of entropy (see <xref target="derive-key-pair"/> for discussion).</t>
            </li>
            <li>
              <t><tt>SerializePublicKey(pkX)</tt>: Produce a byte string of length <tt>Npk</tt> encoding the
public key <tt>pkX</tt>.</t>
            </li>
            <li>
              <t><tt>DeserializePublicKey(pkXm)</tt>: Parse a byte string of length <tt>Npk</tt> to recover a
public key. This function can raise a <tt>DeserializeError</tt> error upon <tt>pkXm</tt>
deserialization failure.</t>
            </li>
            <li>
              <t><tt>Encap(pkR)</tt>: Randomized algorithm to generate an ephemeral,
fixed-length symmetric key (the KEM shared secret) and
a fixed-length encapsulation of that key that can be decapsulated
by the holder of the private key corresponding to <tt>pkR</tt>. This function
can raise an <tt>EncapError</tt> on encapsulation failure.</t>
            </li>
            <li>
              <t><tt>Decap(enc, skR)</tt>: Deterministic algorithm using the private key <tt>skR</tt>
to recover the ephemeral symmetric key (the KEM shared secret) from
its encapsulated representation <tt>enc</tt>. This function can raise a
<tt>DecapError</tt> on decapsulation failure.</t>
            </li>
            <li>
              <t><tt>AuthEncap(pkR, skS)</tt> (optional): Same as <tt>Encap()</tt>, and the outputs
encode an assurance that the KEM shared secret was generated by the
holder of the private key <tt>skS</tt>.</t>
            </li>
            <li>
              <t><tt>AuthDecap(enc, skR, pkS)</tt> (optional): Same as <tt>Decap()</tt>, and the recipient
is assured that the KEM shared secret was generated by the holder of
the private key <tt>skS</tt>.</t>
            </li>
            <li>
              <t><tt>Nsecret</tt>: The length in bytes of a KEM shared secret produced by this KEM.</t>
            </li>
            <li>
              <t><tt>Nenc</tt>: The length in bytes of an encapsulated key produced by this KEM.</t>
            </li>
            <li>
              <t><tt>Npk</tt>: The length in bytes of an encoded public key for this KEM.</t>
            </li>
            <li>
              <t><tt>Nsk</tt>: The length in bytes of an encoded private key for this KEM.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>A key derivation function (KDF):
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>Extract(salt, ikm)</tt>: Extract a pseudorandom key of fixed length <tt>Nh</tt> bytes
from input keying material <tt>ikm</tt> and an optional byte string
<tt>salt</tt>.</t>
            </li>
            <li>
              <t><tt>Expand(prk, info, L)</tt>: Expand a pseudorandom key <tt>prk</tt> using
optional string <tt>info</tt> into <tt>L</tt> bytes of output keying material.</t>
            </li>
            <li>
              <t><tt>Nh</tt>: The output size of the <tt>Extract()</tt> function in bytes.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>An AEAD encryption algorithm <xref target="RFC5116"/>:
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>Seal(key, nonce, aad, pt)</tt>: Encrypt and authenticate plaintext
<tt>pt</tt> with associated data <tt>aad</tt> using symmetric key <tt>key</tt> and nonce
<tt>nonce</tt>, yielding ciphertext and tag <tt>ct</tt>. This function
 can raise a <tt>MessageLimitReachedError</tt> upon failure.</t>
            </li>
            <li>
              <t><tt>Open(key, nonce, aad, ct)</tt>: Decrypt ciphertext and tag <tt>ct</tt> using
associated data <tt>aad</tt> with symmetric key <tt>key</tt> and nonce <tt>nonce</tt>,
returning plaintext message <tt>pt</tt>. This function can raise an
<tt>OpenError</tt> or <tt>MessageLimitReachedError</tt> upon failure.</t>
            </li>
            <li>
              <t><tt>Nk</tt>: The length in bytes of a key for this algorithm.</t>
            </li>
            <li>
              <t><tt>Nn</tt>: The length in bytes of a nonce for this algorithm.</t>
            </li>
            <li>
              <t><tt>Nt</tt>: The length in bytes of the authentication tag for this algorithm.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>Beyond the above, a KEM MAY also expose the following functions, whose behavior
is detailed in <xref target="serializeprivatekey"/>:</t>
      <ul spacing="normal">
        <li>
          <t><tt>SerializePrivateKey(skX)</tt>: Produce a byte string of length <tt>Nsk</tt> encoding the private
key <tt>skX</tt>.</t>
        </li>
        <li>
          <t><tt>DeserializePrivateKey(skXm)</tt>: Parse a byte string of length <tt>Nsk</tt> to recover a
private key. This function can raise a <tt>DeserializeError</tt> error upon <tt>skXm</tt>
deserialization failure.</t>
        </li>
      </ul>
      <t>A <em>ciphersuite</em> is a triple (KEM, KDF, AEAD) containing a choice of algorithm
for each primitive.</t>
      <t>A set of algorithm identifiers for concrete instantiations of these
primitives is provided in <xref target="ciphersuites"/>.  Algorithm identifier
values are two bytes long.</t>
      <t>Note that <tt>GenerateKeyPair</tt> can be implemented as <tt>DeriveKeyPair(random(Nsk))</tt>.</t>
      <t>The notation <tt>pk(skX)</tt>, depending on its use and the KEM and its
implementation, is either the
computation of the public key using the private key, or just syntax
expressing the retrieval of the public key, assuming it is stored along
with the private key object.</t>
      <t>The following two functions are defined to facilitate domain separation of
KDF calls as well as context binding:</t>
      <artwork><![CDATA[
def LabeledExtract(salt, label, ikm):
  labeled_ikm = concat("HPKE-v1", suite_id, label, ikm)
  return Extract(salt, labeled_ikm)

def LabeledExpand(prk, label, info, L):
  labeled_info = concat(I2OSP(L, 2), "HPKE-v1", suite_id,
                        label, info)
  return Expand(prk, labeled_info, L)
]]></artwork>
      <t>The value of <tt>suite_id</tt> depends on where the KDF is used; it is assumed
implicit from the implementation and not passed as a parameter. If used
inside a KEM algorithm, <tt>suite_id</tt> MUST start with "KEM" and identify
this KEM algorithm; if used in the remainder of HPKE, it MUST start with
"HPKE" and identify the entire ciphersuite in use. See sections <xref target="dhkem"/>
and <xref target="encryption-context"/> for details.</t>
      <section anchor="dhkem">
        <name>DH-Based KEM (DHKEM)</name>
        <t>Suppose we are given a KDF, and a Diffie-Hellman (DH) group providing the
following operations:</t>
        <ul spacing="normal">
          <li>
            <t><tt>DH(skX, pkY)</tt>: Perform a non-interactive Diffie-Hellman exchange using
the private key <tt>skX</tt> and public key <tt>pkY</tt> to produce a Diffie-Hellman shared
secret of length <tt>Ndh</tt>. This function can raise a <tt>ValidationError</tt> as described
in <xref target="validation"/>.</t>
          </li>
          <li>
            <t><tt>Ndh</tt>: The length in bytes of a Diffie-Hellman shared secret produced
by <tt>DH()</tt>.</t>
          </li>
          <li>
            <t><tt>Nsk</tt>: The length in bytes of a Diffie-Hellman private key.</t>
          </li>
        </ul>
        <t>Then we can construct a KEM that implements the interface defined in <xref target="base-crypto"/>
called <tt>DHKEM(Group, KDF)</tt> in the following way, where <tt>Group</tt> denotes the
Diffie-Hellman group and <tt>KDF</tt> denotes the KDF. The function parameters <tt>pkR</tt> and <tt>pkS</tt>
are deserialized public keys, and <tt>enc</tt> is a serialized public key. Since
encapsulated keys are Diffie-Hellman public keys in this KEM algorithm,
we use <tt>SerializePublicKey()</tt> and <tt>DeserializePublicKey()</tt> to encode and decode
them, respectively. <tt>Npk</tt> equals <tt>Nenc</tt>. <tt>GenerateKeyPair()</tt> produces a key pair
for the Diffie-Hellman group in use. <xref target="derive-key-pair"/> contains the
<tt>DeriveKeyPair()</tt> function specification for DHKEMs defined in this document.</t>
        <artwork><![CDATA[
def ExtractAndExpand(dh, kem_context):
  eae_prk = LabeledExtract("", "eae_prk", dh)
  shared_secret = LabeledExpand(eae_prk, "shared_secret",
                                kem_context, Nsecret)
  return shared_secret

def Encap(pkR):
  skE, pkE = GenerateKeyPair()
  dh = DH(skE, pkR)
  enc = SerializePublicKey(pkE)

  pkRm = SerializePublicKey(pkR)
  kem_context = concat(enc, pkRm)

  shared_secret = ExtractAndExpand(dh, kem_context)
  return shared_secret, enc

def Decap(enc, skR):
  pkE = DeserializePublicKey(enc)
  dh = DH(skR, pkE)

  pkRm = SerializePublicKey(pk(skR))
  kem_context = concat(enc, pkRm)

  shared_secret = ExtractAndExpand(dh, kem_context)
  return shared_secret

def AuthEncap(pkR, skS):
  skE, pkE = GenerateKeyPair()
  dh = concat(DH(skE, pkR), DH(skS, pkR))
  enc = SerializePublicKey(pkE)

  pkRm = SerializePublicKey(pkR)
  pkSm = SerializePublicKey(pk(skS))
  kem_context = concat(enc, pkRm, pkSm)

  shared_secret = ExtractAndExpand(dh, kem_context)
  return shared_secret, enc

def AuthDecap(enc, skR, pkS):
  pkE = DeserializePublicKey(enc)
  dh = concat(DH(skR, pkE), DH(skR, pkS))

  pkRm = SerializePublicKey(pk(skR))
  pkSm = SerializePublicKey(pkS)
  kem_context = concat(enc, pkRm, pkSm)

  shared_secret = ExtractAndExpand(dh, kem_context)
  return shared_secret
]]></artwork>
        <t>The implicit <tt>suite_id</tt> value used within <tt>LabeledExtract</tt> and
<tt>LabeledExpand</tt> is defined as follows, where <tt>kem_id</tt> is defined
in <xref target="kem-ids"/>:</t>
        <artwork><![CDATA[
suite_id = concat("KEM", I2OSP(kem_id, 2))
]]></artwork>
        <t>The KDF used in DHKEM can be equal to or different from the KDF used
in the remainder of HPKE, depending on the chosen variant.
Implementations MUST make sure to use the constants (<tt>Nh</tt>) and function
calls (<tt>LabeledExtract</tt> and <tt>LabeledExpand</tt>) of the appropriate KDF when
implementing DHKEM. See <xref target="kdf-choice"/> for a comment on the choice of
a KDF for the remainder of HPKE, and <xref target="domain-separation"/> for the
rationale of the labels.</t>
        <t>For the variants of DHKEM defined in this document, the size <tt>Nsecret</tt> of the
KEM shared secret is equal to the output length of the hash function
underlying the KDF. For P-256, P-384, and P-521, the size <tt>Ndh</tt> of the
Diffie-Hellman shared secret is equal to 32, 48, and 66, respectively,
corresponding to the x-coordinate of the resulting elliptic curve point <xref target="IEEE1363"/>.
For X25519 and X448, the size <tt>Ndh</tt> is equal to 32 and 56, respectively
(see <xref target="RFC7748"/>, Section 5).</t>
        <t>It is important to note that the <tt>AuthEncap()</tt> and <tt>AuthDecap()</tt> functions of the
DHKEM variants defined in this document are vulnerable to key-compromise
impersonation (KCI). This means the assurance that the KEM shared secret
was generated by the holder of the private key <tt>skS</tt> does not hold if
the recipient private key <tt>skR</tt> is compromised. See <xref target="sec-properties"/>
for more details.</t>
        <t>Senders and recipients MUST validate KEM inputs and outputs as described
in <xref target="kem-ids"/>.</t>
      </section>
    </section>
    <section anchor="hpke">
      <name>Hybrid Public Key Encryption</name>
      <t>In this section, we define a few HPKE variants.  All variants take a
recipient public key and a sequence of plaintexts <tt>pt</tt> and produce an
encapsulated key <tt>enc</tt> and a sequence of ciphertexts <tt>ct</tt>.  These outputs are
constructed so that only the holder of <tt>skR</tt> can decapsulate the key from
<tt>enc</tt> and decrypt the ciphertexts.  All the algorithms also take an
<tt>info</tt> parameter that can be used to influence the generation of keys
(e.g., to fold in identity information) and an <tt>aad</tt> parameter that
provides additional authenticated data to the AEAD algorithm in use.</t>
      <t>In addition to the base case of encrypting to a public key, we
include three authenticated variants: one that authenticates
possession of a pre-shared key, one that authenticates
possession of a KEM private key, and one that authenticates possession of both
a pre-shared key and a KEM private key. All authenticated variants contribute
additional keying material to the encryption operation. The following one-byte
values will be used to distinguish between modes:</t>
      <table anchor="hpke-modes">
        <name>HPKE Modes</name>
        <thead>
          <tr>
            <th align="left">Mode</th>
            <th align="left">Value</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">mode_base</td>
            <td align="left">0x00</td>
          </tr>
          <tr>
            <td align="left">mode_psk</td>
            <td align="left">0x01</td>
          </tr>
          <tr>
            <td align="left">mode_auth</td>
            <td align="left">0x02</td>
          </tr>
          <tr>
            <td align="left">mode_auth_psk</td>
            <td align="left">0x03</td>
          </tr>
        </tbody>
      </table>
      <t>All these cases follow the same basic two-step pattern:</t>
      <ol spacing="normal" type="1"><li>
          <t>Set up an encryption context that is shared between the sender
and the recipient.</t>
        </li>
        <li>
          <t>Use that context to encrypt or decrypt content.</t>
        </li>
      </ol>
      <t>A <em>context</em> is an implementation-specific structure that encodes
the AEAD algorithm and key in use, and manages the nonces used so
that the same nonce is not used with multiple plaintexts. It also
has an interface for exporting secret values, as described in
<xref target="hpke-export"/>. See <xref target="hpke-dem"/> for a description of this structure
and its interfaces. HPKE decryption fails when the underlying AEAD
decryption fails.</t>
      <t>The constructions described here presume that the relevant non-private
parameters (<tt>enc</tt>, <tt>psk_id</tt>, etc.) are transported between the sender and the
recipient by some application making use of HPKE. Moreover, a recipient with more
than one public key needs some way of determining which of its public keys was
used for the encapsulation operation. As an example, applications may send this
information alongside a ciphertext from the sender to the recipient. Specification of
such a mechanism is left to the application. See <xref target="message-encoding"/> for more
details.</t>
      <t>Note that some KEMs may not support <tt>AuthEncap()</tt> or <tt>AuthDecap()</tt>.
For such KEMs, only <tt>mode_base</tt> or <tt>mode_psk</tt> are supported. Future specifications
which define new KEMs MUST indicate whether these modes are supported.
See <xref target="future-kems"/> for more details.</t>
      <t>The procedures described in this section are laid out in a
Python-like pseudocode. The algorithms in use are left implicit.</t>
      <section anchor="encryption-context">
        <name>Creating the Encryption Context</name>
        <t>The variants of HPKE defined in this document share a common
key schedule that translates the protocol inputs into an encryption
context. The key schedule inputs are as follows:</t>
        <ul spacing="normal">
          <li>
            <t><tt>mode</tt> - A one-byte value indicating the HPKE mode, defined in <xref target="hpke-modes"/>.</t>
          </li>
          <li>
            <t><tt>shared_secret</tt> - A KEM shared secret generated for this transaction.</t>
          </li>
          <li>
            <t><tt>info</tt> - Application-supplied information (optional; default value
"").</t>
          </li>
          <li>
            <t><tt>psk</tt> - A pre-shared key (PSK) held by both the sender
and the recipient (optional; default value "").</t>
          </li>
          <li>
            <t><tt>psk_id</tt> - An identifier for the PSK (optional; default value "").</t>
          </li>
        </ul>
        <t>Senders and recipients MUST validate KEM inputs and outputs as described
in <xref target="kem-ids"/>.</t>
        <t>The <tt>psk</tt> and <tt>psk_id</tt> fields MUST appear together or not at all.
That is, if a non-default value is provided for one of them, then
the other MUST be set to a non-default value. This requirement is
encoded in <tt>VerifyPSKInputs()</tt> below.</t>
        <t>The <tt>psk</tt>, <tt>psk_id</tt>, and <tt>info</tt> fields have maximum lengths that depend
on the KDF itself, on the definition of <tt>LabeledExtract()</tt>, and on the
constant labels used together with them. See <xref target="kdf-input-length"/> for
precise limits on these lengths.</t>
        <t>The <tt>key</tt>, <tt>base_nonce</tt>, and <tt>exporter_secret</tt> computed by the key schedule
have the property that they are only known to the holder of the recipient
private key, and the entity that used the KEM to generate <tt>shared_secret</tt> and
<tt>enc</tt>.</t>
        <t>In the Auth and AuthPSK modes, the recipient is assured that the sender
held the private key <tt>skS</tt>. This assurance is limited for the DHKEM
variants defined in this document because of key-compromise impersonation,
as described in <xref target="dhkem"/> and <xref target="sec-properties"/>. If in the PSK and
AuthPSK modes, the <tt>psk</tt> and <tt>psk_id</tt> arguments are provided as required,
then the recipient is assured that the sender held the corresponding
pre-shared key. See <xref target="sec-properties"/> for more details.</t>
        <t>The HPKE algorithm identifiers, i.e., the KEM <tt>kem_id</tt>, KDF <tt>kdf_id</tt>, and
AEAD <tt>aead_id</tt> 2-byte code points, as defined in <xref target="kemid-values"/>, <xref target="kdfid-values"/>,
and <xref target="aeadid-values"/>, respectively, are assumed implicit from the implementation
and not passed as parameters. The implicit <tt>suite_id</tt> value used within
<tt>LabeledExtract</tt> and <tt>LabeledExpand</tt> is defined based on them as follows:</t>
        <artwork><![CDATA[
suite_id = concat(
  "HPKE",
  I2OSP(kem_id, 2),
  I2OSP(kdf_id, 2),
  I2OSP(aead_id, 2)
)
]]></artwork>
        <artwork><![CDATA[
default_psk = ""
default_psk_id = ""

def VerifyPSKInputs(mode, psk, psk_id):
  got_psk = (psk != default_psk)
  got_psk_id = (psk_id != default_psk_id)
  if got_psk != got_psk_id:
    raise Exception("Inconsistent PSK inputs")

  if got_psk and (mode in [mode_base, mode_auth]):
    raise Exception("PSK input provided when not needed")
  if (not got_psk) and (mode in [mode_psk, mode_auth_psk]):
    raise Exception("Missing required PSK input")

def KeySchedule<ROLE>(mode, shared_secret, info, psk, psk_id):
  VerifyPSKInputs(mode, psk, psk_id)

  psk_id_hash = LabeledExtract("", "psk_id_hash", psk_id)
  info_hash = LabeledExtract("", "info_hash", info)
  key_schedule_context = concat(mode, psk_id_hash, info_hash)

  secret = LabeledExtract(shared_secret, "secret", psk)

  key = LabeledExpand(secret, "key", key_schedule_context, Nk)
  base_nonce = LabeledExpand(secret, "base_nonce",
                             key_schedule_context, Nn)
  exporter_secret = LabeledExpand(secret, "exp",
                                  key_schedule_context, Nh)

  return Context<ROLE>(key, base_nonce, 0, exporter_secret)
]]></artwork>
        <t>The <tt>ROLE</tt> template parameter is either S or R, depending on the role of
sender or recipient, respectively. See <xref target="hpke-dem"/> for a discussion of the
key schedule output, including the role-specific <tt>Context</tt> structure and its API.</t>
        <t>Note that the <tt>key_schedule_context</tt> construction in <tt>KeySchedule()</tt> is
equivalent to serializing a structure of the following form in the TLS presentation
syntax:</t>
        <artwork><![CDATA[
struct {
    uint8 mode;
    opaque psk_id_hash[Nh];
    opaque info_hash[Nh];
} KeyScheduleContext;
]]></artwork>
        <section anchor="hpke-kem">
          <name>Encryption to a Public Key</name>
          <t>The most basic function of an HPKE scheme is to enable encryption
to the holder of a given KEM private key.  The <tt>SetupBaseS()</tt> and
<tt>SetupBaseR()</tt> procedures establish contexts that can be used to
encrypt and decrypt, respectively, for a given private key.</t>
          <t>The KEM shared secret is combined via the KDF
with information describing the key exchange, as well as the
explicit <tt>info</tt> parameter provided by the caller.</t>
          <t>The parameter <tt>pkR</tt> is a public key, and <tt>enc</tt> is an encapsulated
KEM shared secret.</t>
          <artwork><![CDATA[
def SetupBaseS(pkR, info):
  shared_secret, enc = Encap(pkR)
  return enc, KeyScheduleS(mode_base, shared_secret, info,
                           default_psk, default_psk_id)

def SetupBaseR(enc, skR, info):
  shared_secret = Decap(enc, skR)
  return KeyScheduleR(mode_base, shared_secret, info,
                      default_psk, default_psk_id)
]]></artwork>
        </section>
        <section anchor="mode-psk">
          <name>Authentication Using a Pre-Shared Key</name>
          <t>This variant extends the base mechanism by allowing the recipient to
authenticate that the sender possessed a given PSK. The PSK also
improves confidentiality guarantees in certain adversary models, as
described in more detail in <xref target="sec-properties"/>. We assume that both
parties have been provisioned with both the PSK value <tt>psk</tt> and another
byte string <tt>psk_id</tt> that is used to identify which PSK should be used.</t>
          <t>The primary difference from the base case is that the <tt>psk</tt> and <tt>psk_id</tt> values
are used as <tt>ikm</tt> inputs to the KDF (instead of using the empty string).</t>
          <t>The PSK MUST have at least 32 bytes of entropy and SHOULD be of length <tt>Nh</tt>
bytes or longer. See <xref target="security-psk"/> for a more detailed discussion.</t>
          <artwork><![CDATA[
def SetupPSKS(pkR, info, psk, psk_id):
  shared_secret, enc = Encap(pkR)
  return enc, KeyScheduleS(mode_psk, shared_secret, info, psk, psk_id)

def SetupPSKR(enc, skR, info, psk, psk_id):
  shared_secret = Decap(enc, skR)
  return KeyScheduleR(mode_psk, shared_secret, info, psk, psk_id)
]]></artwork>
        </section>
        <section anchor="mode-auth">
          <name>Authentication Using an Asymmetric Key</name>
          <t>This variant extends the base mechanism by allowing the recipient
to authenticate that the sender possessed a given KEM private key.
This is because <tt>AuthDecap(enc, skR, pkS)</tt> produces the correct KEM
shared secret only if the encapsulated value <tt>enc</tt> was produced by
<tt>AuthEncap(pkR, skS)</tt>, where <tt>skS</tt> is the private key corresponding
to <tt>pkS</tt>.  In other words, at most two entities (precisely two, in the case
of DHKEM) could have produced this secret, so if the recipient is at most one, then
the sender is the other with overwhelming probability.</t>
          <t>The primary difference from the base case is that the calls to
<tt>Encap()</tt> and <tt>Decap()</tt> are replaced with calls to <tt>AuthEncap()</tt> and
<tt>AuthDecap()</tt>, which add the sender public key to their internal
context string. The function parameters <tt>pkR</tt> and <tt>pkS</tt> are
public keys, and <tt>enc</tt> is an encapsulated KEM shared secret.</t>
          <t>Obviously, this variant can only be used with a KEM that provides
<tt>AuthEncap()</tt> and <tt>AuthDecap()</tt> procedures.</t>
          <t>This mechanism authenticates only the key pair of the sender, not
any other identifier.  If an application wishes to bind HPKE
ciphertexts or exported secrets to another identity for the sender
(e.g., an email address or domain name), then this identifier should be
included in the <tt>info</tt> parameter to avoid identity misbinding issues <xref target="IMB"/>.</t>
          <artwork><![CDATA[
def SetupAuthS(pkR, info, skS):
  shared_secret, enc = AuthEncap(pkR, skS)
  return enc, KeyScheduleS(mode_auth, shared_secret, info,
                           default_psk, default_psk_id)

def SetupAuthR(enc, skR, info, pkS):
  shared_secret = AuthDecap(enc, skR, pkS)
  return KeyScheduleR(mode_auth, shared_secret, info,
                      default_psk, default_psk_id)
]]></artwork>
        </section>
        <section anchor="mode-auth-psk">
          <name>Authentication Using Both a PSK and an Asymmetric Key</name>
          <t>This mode is a straightforward combination of the PSK and authenticated modes.
Like the PSK mode, a PSK is provided as input to the key schedule, and like the
authenticated mode, authenticated KEM variants are used.</t>
          <artwork><![CDATA[
def SetupAuthPSKS(pkR, info, psk, psk_id, skS):
  shared_secret, enc = AuthEncap(pkR, skS)
  return enc, KeyScheduleS(mode_auth_psk, shared_secret, info,
                           psk, psk_id)

def SetupAuthPSKR(enc, skR, info, psk, psk_id, pkS):
  shared_secret = AuthDecap(enc, skR, pkS)
  return KeyScheduleR(mode_auth_psk, shared_secret, info,
                      psk, psk_id)
]]></artwork>
          <t>The PSK MUST have at least 32 bytes of entropy and SHOULD be of length <tt>Nh</tt>
bytes or longer. See <xref target="security-psk"/> for a more detailed discussion.</t>
        </section>
      </section>
      <section anchor="hpke-dem">
        <name>Encryption and Decryption</name>
        <t>HPKE allows multiple encryption operations to be done based on a
given setup transaction.  Since the public key operations involved
in setup are typically more expensive than symmetric encryption or
decryption, this allows applications to amortize the cost of the
public key operations, reducing the overall overhead.</t>
        <t>In order to avoid nonce reuse, however, this encryption must be
stateful. Each of the setup procedures above produces a role-specific
context object that stores the AEAD and secret export parameters.
The AEAD parameters consist of:</t>
        <ul spacing="normal">
          <li>
            <t>The AEAD algorithm in use</t>
          </li>
          <li>
            <t>A secret <tt>key</tt></t>
          </li>
          <li>
            <t>A base nonce <tt>base_nonce</tt></t>
          </li>
          <li>
            <t>A sequence number (initially 0)</t>
          </li>
        </ul>
        <t>The secret export parameters consist of:</t>
        <ul spacing="normal">
          <li>
            <t>The HPKE ciphersuite in use and</t>
          </li>
          <li>
            <t>An <tt>exporter_secret</tt> used for the secret export interface (see
<xref target="hpke-export"/>)</t>
          </li>
        </ul>
        <t>All these parameters except the AEAD sequence number are constant.
The sequence number provides nonce uniqueness: The nonce used for
each encryption or decryption operation is the result of XORing
<tt>base_nonce</tt> with the current sequence number, encoded as a big-endian
integer of the same length as <tt>base_nonce</tt>. Implementations MAY use a
sequence number that is shorter than the nonce length (padding on the left
with zero), but MUST raise an error if the sequence number overflows. The AEAD
algorithm produces ciphertext that is Nt bytes longer than the plaintext.
Nt = 16 for AEAD algorithms defined in this document.</t>
        <t>Encryption is unidirectional from sender to recipient. The sender's
context can encrypt a plaintext <tt>pt</tt> with associated data <tt>aad</tt> as
follows:</t>
        <artwork><![CDATA[
def ContextS.Seal(aad, pt):
  ct = Seal(self.key, self.ComputeNonce(self.seq), aad, pt)
  self.IncrementSeq()
  return ct
]]></artwork>
        <t>The recipient's context can decrypt a ciphertext <tt>ct</tt> with associated
data <tt>aad</tt> as follows:</t>
        <artwork><![CDATA[
def ContextR.Open(aad, ct):
  pt = Open(self.key, self.ComputeNonce(self.seq), aad, ct)
  if pt == OpenError:
    raise OpenError
  self.IncrementSeq()
  return pt
]]></artwork>
        <t>Each encryption or decryption operation increments the sequence number for
the context in use. The per-message nonce and sequence number increment
details are as follows:</t>
        <artwork><![CDATA[
def Context<ROLE>.ComputeNonce(seq):
  seq_bytes = I2OSP(seq, Nn)
  return xor(self.base_nonce, seq_bytes)

def Context<ROLE>.IncrementSeq():
  if self.seq >= (1 << (8*Nn)) - 1:
    raise MessageLimitReachedError
  self.seq += 1
]]></artwork>
        <t>The sender's context MUST NOT be used for decryption. Similarly, the recipient's
context MUST NOT be used for encryption. Higher-level protocols reusing the HPKE
key exchange for more general purposes can derive separate keying material as
needed using use the secret export interface; see <xref target="hpke-export"/> and <xref target="bidirectional"/>
for more details.</t>
        <t>It is up to the application to ensure that encryptions and decryptions are
done in the proper sequence, so that encryption and decryption nonces align.
If <tt>ContextS.Seal()</tt> or <tt>ContextR.Open()</tt> would cause the <tt>seq</tt> field to
overflow, then the implementation MUST fail with an error. (In the pseudocode
below, <tt>Context&lt;ROLE&gt;.IncrementSeq()</tt> fails with an error when <tt>seq</tt> overflows,
which causes <tt>ContextS.Seal()</tt> and <tt>ContextR.Open()</tt> to fail accordingly.)
Note that the internal <tt>Seal()</tt> and <tt>Open()</tt> calls inside correspond to the
context's AEAD algorithm.</t>
      </section>
      <section anchor="hpke-export">
        <name>Secret Export</name>
        <t>HPKE provides an interface for exporting secrets from the encryption context
using a variable-length pseudorandom function (PRF), similar to the TLS 1.3 exporter interface
(see <xref target="RFC8446"/>, Section 7.5). This interface takes as input a context
string <tt>exporter_context</tt> and a desired length <tt>L</tt> in bytes, and produces
a secret derived from the internal exporter secret using the corresponding
KDF Expand function. For the KDFs defined in this specification, <tt>L</tt> has
a maximum value of <tt>255*Nh</tt>. Future specifications that define new KDFs
MUST specify a bound for <tt>L</tt>.</t>
        <t>The <tt>exporter_context</tt> field has a maximum length that depends on the KDF
itself, on the definition of <tt>LabeledExpand()</tt>, and on the constant labels
used together with them. See <xref target="kdf-input-length"/> for precise limits on this
length.</t>
        <artwork><![CDATA[
def Context.Export(exporter_context, L):
  return LabeledExpand(self.exporter_secret, "sec",
                       exporter_context, L)
]]></artwork>
        <t>Applications that do not use the encryption API in <xref target="hpke-dem"/> can use
the export-only AEAD ID <tt>0xFFFF</tt> when computing the key schedule. Such
applications can avoid computing the <tt>key</tt> and <tt>base_nonce</tt> values in the
key schedule, as they are not used by the Export interface described above.</t>
      </section>
    </section>
    <section anchor="single-shot-apis">
      <name>Single-Shot APIs</name>
      <section anchor="single-shot-encryption">
        <name>Encryption and Decryption</name>
        <t>In many cases, applications encrypt only a single message to a recipient's public key.
This section provides templates for HPKE APIs that implement stateless "single-shot"
encryption and decryption using APIs specified in <xref target="hpke-kem"/> and <xref target="hpke-dem"/>:</t>
        <artwork><![CDATA[
def Seal<MODE>(pkR, info, aad, pt, ...):
  enc, ctx = Setup<MODE>S(pkR, info, ...)
  ct = ctx.Seal(aad, pt)
  return enc, ct

def Open<MODE>(enc, skR, info, aad, ct, ...):
  ctx = Setup<MODE>R(enc, skR, info, ...)
  return ctx.Open(aad, ct)
]]></artwork>
        <t>The <tt>MODE</tt> template parameter is one of Base, PSK, Auth, or AuthPSK. The optional parameters
indicated by "..." depend on <tt>MODE</tt> and may be empty. For example, <tt>SetupBase()</tt> has no
additional parameters. <tt>SealAuthPSK()</tt> and <tt>OpenAuthPSK()</tt> would be implemented as follows:</t>
        <artwork><![CDATA[
def SealAuthPSK(pkR, info, aad, pt, psk, psk_id, skS):
  enc, ctx = SetupAuthPSKS(pkR, info, psk, psk_id, skS)
  ct = ctx.Seal(aad, pt)
  return enc, ct

def OpenAuthPSK(enc, skR, info, aad, ct, psk, psk_id, pkS):
  ctx = SetupAuthPSKR(enc, skR, info, psk, psk_id, pkS)
  return ctx.Open(aad, ct)
]]></artwork>
      </section>
      <section anchor="secret-export">
        <name>Secret Export</name>
        <t>Applications may also want to derive a secret known only to a given recipient.
This section provides templates for HPKE APIs that implement stateless
"single-shot" secret export using APIs specified in <xref target="hpke-export"/>:</t>
        <artwork><![CDATA[
def SendExport<MODE>(pkR, info, exporter_context, L, ...):
  enc, ctx = Setup<MODE>S(pkR, info, ...)
  exported = ctx.Export(exporter_context, L)
  return enc, exported

def ReceiveExport<MODE>(enc, skR, info, exporter_context, L, ...):
  ctx = Setup<MODE>R(enc, skR, info, ...)
  return ctx.Export(exporter_context, L)
]]></artwork>
        <t>As in <xref target="single-shot-encryption"/>, the <tt>MODE</tt> template parameter is one of Base, PSK,
Auth, or AuthPSK. The optional parameters indicated by "..." depend on <tt>MODE</tt> and may
be empty.</t>
      </section>
    </section>
    <section anchor="ciphersuites">
      <name>Algorithm Identifiers</name>
      <t>This section lists algorithm identifiers suitable for different HPKE configurations.
Future specifications may introduce new KEM, KDF, and AEAD algorithm identifiers
and retain the security guarantees presented in this document provided they adhere
to the security requirements in <xref target="kem-security"/>, <xref target="kdf-choice"/>, and <xref target="aead-security"/>,
respectively.</t>
      <section anchor="kem-ids">
        <name>Key Encapsulation Mechanisms (KEMs)</name>
        <table anchor="kemid-values">
          <name>KEM IDs</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">KEM</th>
              <th align="left">Nsecret</th>
              <th align="left">Nenc</th>
              <th align="left">Npk</th>
              <th align="left">Nsk</th>
              <th align="left">Auth</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0000</td>
              <td align="left">Reserved</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
              <td align="left">yes</td>
              <td align="left">RFC 9180</td>
            </tr>
            <tr>
              <td align="left">0x0010</td>
              <td align="left">DHKEM(P-256, HKDF-SHA256)</td>
              <td align="left">32</td>
              <td align="left">65</td>
              <td align="left">65</td>
              <td align="left">32</td>
              <td align="left">yes</td>
              <td align="left">
                <xref target="NISTCurves"/>, <xref target="RFC5869"/></td>
            </tr>
            <tr>
              <td align="left">0x0011</td>
              <td align="left">DHKEM(P-384, HKDF-SHA384)</td>
              <td align="left">48</td>
              <td align="left">97</td>
              <td align="left">97</td>
              <td align="left">48</td>
              <td align="left">yes</td>
              <td align="left">
                <xref target="NISTCurves"/>, <xref target="RFC5869"/></td>
            </tr>
            <tr>
              <td align="left">0x0012</td>
              <td align="left">DHKEM(P-521, HKDF-SHA512)</td>
              <td align="left">64</td>
              <td align="left">133</td>
              <td align="left">133</td>
              <td align="left">66</td>
              <td align="left">yes</td>
              <td align="left">
                <xref target="NISTCurves"/>, <xref target="RFC5869"/></td>
            </tr>
            <tr>
              <td align="left">0x0020</td>
              <td align="left">DHKEM(X25519, HKDF-SHA256)</td>
              <td align="left">32</td>
              <td align="left">32</td>
              <td align="left">32</td>
              <td align="left">32</td>
              <td align="left">yes</td>
              <td align="left">
                <xref target="RFC7748"/>, <xref target="RFC5869"/></td>
            </tr>
            <tr>
              <td align="left">0x0021</td>
              <td align="left">DHKEM(X448, HKDF-SHA512)</td>
              <td align="left">64</td>
              <td align="left">56</td>
              <td align="left">56</td>
              <td align="left">56</td>
              <td align="left">yes</td>
              <td align="left">
                <xref target="RFC7748"/>, <xref target="RFC5869"/></td>
            </tr>
          </tbody>
        </table>
        <t>The <tt>Auth</tt> column indicates if the KEM algorithm provides the <tt>AuthEncap()</tt>/<tt>AuthDecap()</tt>
interface and is therefore suitable for the Auth and AuthPSK modes. The meaning of all
other columns is explained in <xref target="kem-template"/>. All algorithms are suitable for the
PSK mode.</t>
        <section anchor="serializepublickey-and-deserializepublickey">
          <name>SerializePublicKey and DeserializePublicKey</name>
          <t>For P-256, P-384, and P-521, the <tt>SerializePublicKey()</tt> function of the
KEM performs the uncompressed Elliptic-Curve-Point-to-Octet-String
conversion according to <xref target="SECG"/>. <tt>DeserializePublicKey()</tt> performs the
uncompressed Octet-String-to-Elliptic-Curve-Point conversion.</t>
          <t>For X25519 and X448, the <tt>SerializePublicKey()</tt> and <tt>DeserializePublicKey()</tt>
functions are the identity function, since these curves already use
fixed-length byte strings for public keys.</t>
          <t>Some deserialized public keys MUST be validated before they can be used. See
<xref target="validation"/> for specifics.</t>
        </section>
        <section anchor="serializeprivatekey">
          <name>SerializePrivateKey and DeserializePrivateKey</name>
          <t>As per <xref target="SECG"/>, P-256, P-384, and P-521 private keys are field elements in the
scalar field of the curve being used. For this section, and for
<xref target="derive-key-pair"/>, it is assumed that implementors of ECDH over these curves
use an integer representation of private keys that is compatible with the
<tt>OS2IP()</tt> function.</t>
          <t>For P-256, P-384, and P-521, the <tt>SerializePrivateKey()</tt> function of the KEM
performs the Field-Element-to-Octet-String conversion according to <xref target="SECG"/>. If
the private key is an integer outside the range <tt>[0, order-1]</tt>, where <tt>order</tt>
is the order of the curve being used, the private key MUST be reduced to its
representative in <tt>[0, order-1]</tt> before being serialized.
<tt>DeserializePrivateKey()</tt> performs the Octet-String-to-Field-Element conversion
according to <xref target="SECG"/>.</t>
          <t>For X25519 and X448, private keys are identical to their byte string
representation, so little processing has to be done. The
<tt>SerializePrivateKey()</tt> function MUST clamp its output and the
<tt>DeserializePrivateKey()</tt> function MUST clamp its input, where <em>clamping</em> refers to the
bitwise operations performed on <tt>k</tt> in the <tt>decodeScalar25519()</tt> and
<tt>decodeScalar448()</tt> functions defined in Section 5 of <xref target="RFC7748"/>.</t>
          <t>To catch invalid keys early on, implementors of DHKEMs SHOULD check that
deserialized private keys are not equivalent to 0 (mod <tt>order</tt>), where <tt>order</tt>
is the order of the DH group. Note that this property is trivially true for X25519
and X448 groups, since clamped values can never be 0 (mod <tt>order</tt>).</t>
        </section>
        <section anchor="derive-key-pair">
          <name>DeriveKeyPair</name>
          <t>The keys that <tt>DeriveKeyPair()</tt> produces have only as much entropy as the provided
input keying material. For a given KEM, the <tt>ikm</tt> parameter given to <tt>DeriveKeyPair()</tt> SHOULD
have length at least <tt>Nsk</tt>, and SHOULD have at least <tt>Nsk</tt> bytes of entropy.</t>
          <t>All invocations of KDF functions (such as <tt>LabeledExtract</tt> or <tt>LabeledExpand</tt>) in any
DHKEM's <tt>DeriveKeyPair()</tt> function use the DHKEM's associated KDF (as opposed to
the ciphersuite's KDF).</t>
          <t>For P-256, P-384, and P-521, the <tt>DeriveKeyPair()</tt> function of the KEM performs
rejection sampling over field elements:</t>
          <artwork><![CDATA[
def DeriveKeyPair(ikm):
  dkp_prk = LabeledExtract("", "dkp_prk", ikm)
  sk = 0
  counter = 0
  while sk == 0 or sk >= order:
    if counter > 255:
      raise DeriveKeyPairError
    bytes = LabeledExpand(dkp_prk, "candidate",
                          I2OSP(counter, 1), Nsk)
    bytes[0] = bytes[0] & bitmask
    sk = OS2IP(bytes)
    counter = counter + 1
  return (sk, pk(sk))
]]></artwork>
          <t><tt>order</tt> is the order of the curve being used (see Section D.1.2 of <xref target="NISTCurves"/>), and
is listed below for completeness.</t>
          <artwork><![CDATA[
P-256:
0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551

P-384:
0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf
  581a0db248b0a77aecec196accc52973

P-521:
0x01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  fa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409
]]></artwork>
          <t><tt>bitmask</tt> is defined to be 0xFF for P-256 and P-384, and 0x01 for P-521.
The precise likelihood of <tt>DeriveKeyPair()</tt> failing with DeriveKeyPairError
depends on the group being used, but it is negligibly small in all cases.
See <xref target="api-errors"/> for information about dealing with such failures.</t>
          <t>For X25519 and X448, the <tt>DeriveKeyPair()</tt> function applies a KDF to the input:</t>
          <artwork><![CDATA[
def DeriveKeyPair(ikm):
  dkp_prk = LabeledExtract("", "dkp_prk", ikm)
  sk = LabeledExpand(dkp_prk, "sk", "", Nsk)
  return (sk, pk(sk))
]]></artwork>
        </section>
        <section anchor="validation">
          <name>Validation of Inputs and Outputs</name>
          <t>The following public keys are subject to validation if the group
requires public key validation: the sender MUST validate the recipient's
public key <tt>pkR</tt>; the recipient MUST validate the ephemeral public key
<tt>pkE</tt>; in authenticated modes, the recipient MUST validate the sender's
static public key <tt>pkS</tt>. Validation failure yields a <tt>ValidationError</tt>.</t>
          <t>For P-256, P-384 and P-521, senders and recipients MUST perform partial
public key validation on all public key inputs, as defined in Section 5.6.2.3.4
of <xref target="keyagreement"/>. This includes checking that the coordinates are in the
correct range, that the point is on the curve, and that the point is not the
point at infinity. Additionally, senders and recipients MUST ensure the
Diffie-Hellman shared secret is not the point at infinity.</t>
          <t>For X25519 and X448, public keys and Diffie-Hellman outputs MUST be validated
as described in <xref target="RFC7748"/>. In particular, recipients MUST check whether
the Diffie-Hellman shared secret is the all-zero value and abort if so.</t>
        </section>
        <section anchor="future-kems">
          <name>Future KEMs</name>
          <t><xref target="kem-security"/> lists security requirements on a KEM used within HPKE.</t>
          <t>The <tt>AuthEncap()</tt> and <tt>AuthDecap()</tt> functions are OPTIONAL. If a KEM algorithm
does not provide them, only the Base and PSK modes of HPKE are supported.
Future specifications that define new KEMs MUST indicate whether or not
Auth and AuthPSK modes are supported.</t>
          <t>A KEM algorithm may support different encoding algorithms, with different output
lengths, for KEM public keys. Such KEM algorithms MUST specify only one encoding
algorithm whose output length is <tt>Npk</tt>.</t>
        </section>
      </section>
      <section anchor="kdf-ids">
        <name>Key Derivation Functions (KDFs)</name>
        <table anchor="kdfid-values">
          <name>KDF IDs</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">KDF</th>
              <th align="left">Nh</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0000</td>
              <td align="left">Reserved</td>
              <td align="left">N/A</td>
              <td align="left">RFC 9180</td>
            </tr>
            <tr>
              <td align="left">0x0001</td>
              <td align="left">HKDF-SHA256</td>
              <td align="left">32</td>
              <td align="left">
                <xref target="RFC5869"/></td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">HKDF-SHA384</td>
              <td align="left">48</td>
              <td align="left">
                <xref target="RFC5869"/></td>
            </tr>
            <tr>
              <td align="left">0x0003</td>
              <td align="left">HKDF-SHA512</td>
              <td align="left">64</td>
              <td align="left">
                <xref target="RFC5869"/></td>
            </tr>
          </tbody>
        </table>
        <section anchor="kdf-input-length">
          <name>Input Length Restrictions</name>
          <t>This document defines <tt>LabeledExtract()</tt> and <tt>LabeledExpand()</tt> based on the
KDFs listed above. These functions add prefixes to their respective
inputs <tt>ikm</tt> and <tt>info</tt> before calling the KDF's <tt>Extract()</tt> and <tt>Expand()</tt>
functions. This leads to a reduction of the maximum input length that
is available for the inputs <tt>psk</tt>, <tt>psk_id</tt>, <tt>info</tt>, <tt>exporter_context</tt>,
<tt>ikm</tt>, i.e., the variable-length parameters provided by HPKE applications.
The following table lists the maximum allowed lengths of these fields
for the KDFs defined in this document, as inclusive bounds in bytes:</t>
          <table anchor="input-limits">
            <name>Application Input Limits</name>
            <thead>
              <tr>
                <th align="left">Input</th>
                <th align="left">HKDF-SHA256</th>
                <th align="left">HKDF-SHA384</th>
                <th align="left">HKDF-SHA512</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">psk</td>
                <td align="left">2^{61} - 88</td>
                <td align="left">2^{125} - 152</td>
                <td align="left">2^{125} - 152</td>
              </tr>
              <tr>
                <td align="left">psk_id</td>
                <td align="left">2^{61} - 93</td>
                <td align="left">2^{125} - 157</td>
                <td align="left">2^{125} - 157</td>
              </tr>
              <tr>
                <td align="left">info</td>
                <td align="left">2^{61} - 91</td>
                <td align="left">2^{125} - 155</td>
                <td align="left">2^{125} - 155</td>
              </tr>
              <tr>
                <td align="left">exporter_context</td>
                <td align="left">2^{61} - 120</td>
                <td align="left">2^{125} - 200</td>
                <td align="left">2^{125} - 216</td>
              </tr>
              <tr>
                <td align="left">ikm (DeriveKeyPair)</td>
                <td align="left">2^{61} - 84</td>
                <td align="left">2^{125} - 148</td>
                <td align="left">2^{125} - 148</td>
              </tr>
            </tbody>
          </table>
          <t>This shows that the limits are only marginally smaller than the maximum
input length of the underlying hash function; these limits are large and
unlikely to be reached in practical applications. Future specifications
that define new KDFs MUST specify bounds for these variable-length
parameters.</t>
          <t>The RECOMMENDED limit for these values is 64 bytes. This would enable
interoperability with implementations that statically allocate memory
for these inputs to avoid memory allocations.</t>
          <t>The values for <tt>psk</tt>, <tt>psk_id</tt>, <tt>info</tt>, and <tt>ikm</tt>, which are inputs to
<tt>LabeledExtract()</tt>, were computed with the following expression:</t>
          <artwork><![CDATA[
max_size_hash_input - Nb - size_version_label -
    size_suite_id - size_input_label
]]></artwork>
          <t>The value for <tt>exporter_context</tt>, which is an input to <tt>LabeledExpand()</tt>,
was computed with the following expression:</t>
          <artwork><![CDATA[
max_size_hash_input - Nb - Nh - size_version_label -
    size_suite_id - size_input_label - 2 - 1
]]></artwork>
          <t>In these equations, <tt>max_size_hash_input</tt> is the maximum input length
of the underlying hash function in bytes, <tt>Nb</tt> is the block size of the
underlying hash function in bytes, <tt>size_version_label</tt> is the size
of "HPKE-v1" in bytes and equals 7, <tt>size_suite_id</tt> is the size of the
<tt>suite_id</tt> in bytes and equals 5 for DHKEM (relevant for <tt>ikm</tt>) and 10 for the
remainder of HPKE (relevant for <tt>psk</tt>, <tt>psk_id</tt>, <tt>info</tt>, and <tt>exporter_context</tt>),
and <tt>size_input_label</tt> is the size in bytes of the label used as parameter to
<tt>LabeledExtract()</tt> or <tt>LabeledExpand()</tt>, the maximum of which is 13
across all labels in this document.</t>
        </section>
      </section>
      <section anchor="aead-ids">
        <name>Authenticated Encryption with Associated Data (AEAD) Functions</name>
        <table anchor="aeadid-values">
          <name>AEAD IDs</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">AEAD</th>
              <th align="left">Nk</th>
              <th align="left">Nn</th>
              <th align="left">Nt</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0000</td>
              <td align="left">Reserved</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
              <td align="left">RFC 9180</td>
            </tr>
            <tr>
              <td align="left">0x0001</td>
              <td align="left">AES-128-GCM</td>
              <td align="left">16</td>
              <td align="left">12</td>
              <td align="left">16</td>
              <td align="left">
                <xref target="GCM"/></td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">AES-256-GCM</td>
              <td align="left">32</td>
              <td align="left">12</td>
              <td align="left">16</td>
              <td align="left">
                <xref target="GCM"/></td>
            </tr>
            <tr>
              <td align="left">0x0003</td>
              <td align="left">ChaCha20Poly1305</td>
              <td align="left">32</td>
              <td align="left">12</td>
              <td align="left">16</td>
              <td align="left">
                <xref target="RFC8439"/></td>
            </tr>
            <tr>
              <td align="left">0xFFFF</td>
              <td align="left">Export-only</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
              <td align="left">RFC 9180</td>
            </tr>
          </tbody>
        </table>
        <t>The <tt>0xFFFF</tt> AEAD ID is reserved for applications that only use the Export
interface; see <xref target="hpke-export"/> for more details.</t>
      </section>
    </section>
    <section anchor="api-considerations">
      <name>API Considerations</name>
      <t>This section documents considerations for interfaces to implementations of HPKE.
This includes error handling considerations and recommendations that improve
interoperability when HPKE is used in applications.</t>
      <section anchor="auxiliary-authenticated-application-information">
        <name>Auxiliary Authenticated Application Information</name>
        <t>HPKE has two places at which applications can specify auxiliary authenticated information:
(1) during context construction via the Setup <tt>info</tt> parameter, and (2) during Context
operations, i.e., with the <tt>aad</tt> parameter for <tt>Open()</tt> and <tt>Seal()</tt>, and the <tt>exporter_context</tt> parameter
for <tt>Export()</tt>. Application information applicable to multiple operations on a single Context
should use the Setup <tt>info</tt> parameter. This avoids redundantly processing this information for
each Context operation. In contrast, application information that varies on a per-message basis
should be specified via the Context APIs (<tt>Seal()</tt>, <tt>Open()</tt>, or <tt>Export()</tt>).</t>
        <t>Applications that only use the single-shot APIs described in <xref target="single-shot-apis"/> should use the
Setup <tt>info</tt> parameter for specifying auxiliary authenticated information. Implementations which
only expose single-shot APIs should not allow applications to use both Setup <tt>info</tt> and Context
<tt>aad</tt> or <tt>exporter_context</tt> auxiliary information parameters.</t>
      </section>
      <section anchor="api-errors">
        <name>Errors</name>
        <t>The high-level, public HPKE APIs specified in this document are all fallible.
These include the Setup functions and all encryption context functions.
For example, <tt>Decap()</tt> can fail if the encapsulated key <tt>enc</tt> is invalid,
and <tt>Open()</tt> may fail if ciphertext decryption fails. The explicit errors
generated throughout this specification, along with the conditions that
lead to each error, are as follows:</t>
        <ul spacing="normal">
          <li>
            <t><tt>ValidationError</tt>: KEM input or output validation failure; <xref target="dhkem"/>.</t>
          </li>
          <li>
            <t><tt>DeserializeError</tt>: Public or private key deserialization failure; <xref target="base-crypto"/>.</t>
          </li>
          <li>
            <t><tt>EncapError</tt>: <tt>Encap()</tt> failure; <xref target="base-crypto"/>.</t>
          </li>
          <li>
            <t><tt>DecapError</tt>: <tt>Decap()</tt> failure; <xref target="base-crypto"/>.</t>
          </li>
          <li>
            <t><tt>OpenError</tt>: Context AEAD <tt>Open()</tt> failure; <xref target="base-crypto"/> and <xref target="hpke-dem"/>.</t>
          </li>
          <li>
            <t><tt>MessageLimitReachedError</tt>: Context AEAD sequence number overflow; <xref target="base-crypto"/> and <xref target="hpke-dem"/>.</t>
          </li>
          <li>
            <t><tt>DeriveKeyPairError</tt>: Key pair derivation failure; <xref target="derive-key-pair"/>.</t>
          </li>
        </ul>
        <t>Implicit errors may also occur. As an example, certain classes of failures,
e.g., malformed recipient public keys, may not yield explicit errors.
For example, for the DHKEM variant described in this specification,
the <tt>Encap()</tt> algorithm fails when given an invalid recipient public key.
However, other KEM algorithms may not have an efficient algorithm for verifying
the validity of public keys. As a result, an equivalent error may not manifest
until AEAD decryption at the recipient. As another example, DHKEM's <tt>AuthDecap()</tt>
function will produce invalid output if given the wrong sender public key.
This error is not detectable until subsequent AEAD decryption.</t>
        <t>The errors in this document are meant as a guide for implementors. They are not
an exhaustive list of all the errors an implementation might emit. For example,
future KEMs might have internal failure cases, or an implementation might run
out of memory.</t>
        <t>How these errors are expressed in an API or handled by applications is an
implementation-specific detail. For example, some implementations may abort or
panic upon a <tt>DeriveKeyPairError</tt> failure given that it only occurs with
negligible probability, whereas other implementations may retry the failed
DeriveKeyPair operation. See <xref target="derive-key-pair"/> for more information.
As another example, some implementations of the DHKEM specified in this document
may choose to transform <tt>ValidationError</tt> from <tt>DH()</tt> into an <tt>EncapError</tt> or
<tt>DecapError</tt> from <tt>Encap()</tt> or <tt>Decap()</tt>, respectively, whereas others may choose
to raise <tt>ValidationError</tt> unmodified.</t>
        <t>Applications using HPKE APIs should not assume that the errors here are complete,
nor should they assume certain classes of errors will always manifest the same way
for all ciphersuites. For example, the DHKEM specified in this document will emit
a <tt>DeserializationError</tt> or <tt>ValidationError</tt> if a KEM public key is invalid. However,
a new KEM might not have an efficient algorithm for determining whether or not a
public key is valid. In this case, an invalid public key might instead yield an
<tt>OpenError</tt> when trying to decrypt a ciphertext.</t>
      </section>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <section anchor="sec-properties">
        <name>Security Properties</name>
        <t>HPKE has several security goals, depending on the mode of operation,
against active and adaptive attackers that can compromise partial
secrets of senders and recipients. The desired security goals are
detailed below:</t>
        <ul spacing="normal">
          <li>
            <t>Message secrecy: Confidentiality of the sender's messages against
chosen ciphertext attacks</t>
          </li>
          <li>
            <t>Export key secrecy: Indistinguishability of each export
secret from a uniformly random bitstring of equal length, i.e.,
<tt>Context.Export</tt> is a variable-length PRF</t>
          </li>
          <li>
            <t>Sender authentication: Proof of sender origin for PSK, Auth, and
AuthPSK modes</t>
          </li>
        </ul>
        <t>These security goals are expected to hold for any honest sender and
honest recipient keys, as well as if the honest sender and honest
recipient keys are the same.</t>
        <t>HPKE mitigates malleability problems (called benign malleability <xref target="SECG"/>) in prior
public key encryption standards based on ECIES by including all public keys in the
context of the key schedule.</t>
        <t>HPKE does not provide forward secrecy with respect to recipient compromise.
In the Base and Auth modes, the secrecy properties are only expected to
hold if the recipient private key <tt>skR</tt> is not compromised at any point
in time. In the PSK and AuthPSK modes, the secrecy properties are
expected to hold if the recipient private key <tt>skR</tt> and the pre-shared key
are not both compromised at any point in time. See <xref target="non-goals"/> for more
details.</t>
        <t>In the Auth mode, sender authentication is generally expected to hold if
the sender private key <tt>skS</tt> is not compromised at the time of message
reception. In the AuthPSK mode, sender authentication is generally
expected to hold if, at the time of message reception, the sender private
key skS and the pre-shared key are not both compromised.</t>
        <t>Besides forward secrecy and key-compromise impersonation, which are highlighted
in this section because of their particular cryptographic importance, HPKE
has other non-goals that are described in <xref target="non-goals"/>: no tolerance of
message reordering or loss, no downgrade or replay prevention, no hiding of the
plaintext length, and no protection against bad ephemeral randomness. <xref target="non-goals"/>
suggests application-level mitigations for some of them.</t>
        <section anchor="kci">
          <name>Key-Compromise Impersonation</name>
          <t>The DHKEM variants defined in this document are
vulnerable to key-compromise impersonation attacks <xref target="BJM97"/>,
which means that sender authentication cannot be expected to hold in the
Auth mode if the recipient private key <tt>skR</tt> is compromised, and in the
AuthPSK mode if the pre-shared key and the recipient private key <tt>skR</tt> are
both compromised. NaCl's <tt>box</tt> interface <xref target="NaCl"/> has the same issue. At
the same time, this enables repudiability.</t>
          <t>As shown by <xref target="ABHKLR20"/>, key-compromise impersonation attacks are generally possible on HPKE
because KEM ciphertexts are not bound to HPKE messages. An adversary who
knows a recipient's private key can decapsulate an observed KEM ciphertext,
compute the key schedule, and encrypt an arbitrary message that the recipient
will accept as coming from the original sender. Importantly, this is possible even
with a KEM that is resistant to key-compromise impersonation attacks. As a
result, mitigating this issue requires fundamental changes that are out of scope
of this specification.</t>
          <t>Applications that require resistance against key-compromise impersonation
SHOULD take extra steps to prevent this attack. One possibility is to
produce a digital signature over <tt>(enc, ct)</tt> tuples using a sender's
private key -- where <tt>ct</tt> is an AEAD ciphertext produced by the single-shot
or multi-shot API and <tt>enc</tt> is the corresponding KEM encapsulated key.</t>
          <t>Given these properties, pre-shared keys strengthen both the authentication and the
secrecy properties in certain adversary models. One particular example in which
this can be useful is a hybrid quantum setting: if a
non-quantum-resistant KEM used with HPKE is broken by a
quantum computer, the security properties are preserved through the use
of a pre-shared key. As described in Section 7 of <xref target="RFC8696"/> this
assumes that the pre-shared key has not been compromised.</t>
        </section>
        <section anchor="computational-analysis">
          <name>Computational Analysis</name>
          <t>It is shown in <xref target="CS01"/> that a hybrid public key encryption scheme of
essentially the same form as the Base mode described here is
IND-CCA2-secure as long as the underlying KEM and AEAD schemes are
IND-CCA2-secure. Moreover, it is shown in <xref target="HHK06"/> that IND-CCA2 security
of the KEM and the data encapsulation mechanism are necessary conditions
to achieve IND-CCA2 security for hybrid public key encryption.
The main difference between the scheme proposed in <xref target="CS01"/>
and the Base mode in this document (both named HPKE) is that we interpose
some KDF calls between the KEM and the AEAD. Analyzing the HPKE Base mode
instantiation in this document therefore requires verifying that the
additional KDF calls do not cause the IND-CCA2 property to fail, as
well as verifying the additional export key secrecy property.</t>
          <t>Analysis of the PSK, Auth, and AuthPSK modes defined in this document
additionally requires verifying the sender authentication property.
While the PSK mode just adds supplementary keying material to the key
schedule, the Auth and AuthPSK modes make use of a non-standard
authenticated KEM construction. Generally, the authenticated modes of
HPKE can be viewed and analyzed as flavors of signcryption <xref target="SigncryptionDZ10"/>.</t>
          <t>A preliminary computational analysis of all HPKE modes has been done
in <xref target="HPKEAnalysis"/>, indicating asymptotic security for the case where
the KEM is DHKEM, the AEAD is any IND-CPA-secure and INT-CTXT-secure scheme,
and the DH group and KDF satisfy the following conditions:</t>
          <ul spacing="normal">
            <li>
              <t>DH group: The gap Diffie-Hellman (GDH) problem is hard in the
appropriate subgroup <xref target="GAP"/>.</t>
            </li>
            <li>
              <t><tt>Extract()</tt> and <tt>Expand()</tt>: <tt>Extract()</tt> can be modeled as a random oracle.
<tt>Expand()</tt> can be modeled as a pseudorandom function, wherein the first
argument is the key.</t>
            </li>
          </ul>
          <t>In particular, the KDFs and DH groups defined in this document (see
<xref target="kdf-ids"/> and <xref target="kem-ids"/>) satisfy these properties when used as
specified. The analysis in <xref target="HPKEAnalysis"/> demonstrates that under these
constraints, HPKE continues to provide IND-CCA2 security, and provides
the additional properties noted above. Also, the analysis confirms the
expected properties hold under the different key compromise cases
mentioned above. The analysis considers a sender that sends one message
using the encryption context, and additionally exports two independent
secrets using the secret export interface.</t>
          <t>The table below summarizes the main results from <xref target="HPKEAnalysis"/>. N/A
means that a property does not apply for the given mode, whereas <tt>Y</tt> means
the given mode satisfies the property.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Variant</th>
                <th align="center">Message Sec.</th>
                <th align="center">Export Sec.</th>
                <th align="center">Sender Auth.</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Base</td>
                <td align="center">Y</td>
                <td align="center">Y</td>
                <td align="center">N/A</td>
              </tr>
              <tr>
                <td align="left">PSK</td>
                <td align="center">Y</td>
                <td align="center">Y</td>
                <td align="center">Y</td>
              </tr>
              <tr>
                <td align="left">Auth</td>
                <td align="center">Y</td>
                <td align="center">Y</td>
                <td align="center">Y</td>
              </tr>
              <tr>
                <td align="left">AuthPSK</td>
                <td align="center">Y</td>
                <td align="center">Y</td>
                <td align="center">Y</td>
              </tr>
            </tbody>
          </table>
          <t>If non-DH-based KEMs are to be used with HPKE, further analysis will be
necessary to prove their security. The results from <xref target="CS01"/> provide
some indication that any IND-CCA2-secure KEM will suffice here, but are
not conclusive given the differences in the schemes.</t>
          <t>A detailed computational analysis of HPKE's Auth mode single-shot
encryption API has been done in <xref target="ABHKLR20"/>.
The paper defines security notions for authenticated
KEMs and for authenticated public key encryption, using the outsider and
insider security terminology known from signcryption <xref target="SigncryptionDZ10"/>.
The analysis proves that DHKEM's <tt>AuthEncap()</tt>/<tt>AuthDecap()</tt> interface
fulfills these notions for all Diffie-Hellman groups specified in this document.
The analysis also provides exact security bounds, under the assumptions that the
gap Diffie-Hellman (GDH) problem is hard in the appropriate subgroup <xref target="GAP"/>,
and that HKDF can be modeled as a random oracle.</t>
          <t>Further, <xref target="ABHKLR20"/> proves composition theorems, showing that HPKE's
Auth mode fulfills the security notions of authenticated public key encryption
for all KDFs and AEAD schemes specified in this document, given any
authenticated KEM satisfying the previously defined security notions
for authenticated KEMs. The theorems assume that the KEM is perfectly correct;
they could easily be adapted to work with KEMs that have a nonzero but negligible
probability for decryption failure. The assumptions on the KDF are that <tt>Extract()</tt>
and <tt>Expand()</tt> can be modeled as pseudorandom functions wherein the first
argument is the key, respectively. The assumption for the AEAD is
IND-CPA and IND-CTXT security.</t>
          <t>In summary, the analysis in <xref target="ABHKLR20"/> proves that the single-shot encryption API of HPKE's
Auth mode satisfies the desired message confidentiality and sender
authentication properties listed at the beginning of this section;
it does not consider multiple messages, nor the secret export API.</t>
        </section>
        <section anchor="post-quantum-security">
          <name>Post-Quantum Security</name>
          <t>All of <xref target="CS01"/>, <xref target="HPKEAnalysis"/>, and <xref target="ABHKLR20"/> are premised on
classical security models and assumptions, and do not consider
adversaries capable of quantum computation. A full proof of post-quantum
security would need to take appropriate security models and assumptions
into account, in addition to simply using a post-quantum KEM. However,
the composition theorems from <xref target="ABHKLR20"/> for HPKE's Auth mode only make
standard assumptions (i.e., no random oracle assumption) that are expected
to hold against quantum adversaries (although with slightly worse bounds).
Thus, these composition theorems, in combination with a post-quantum-secure
authenticated KEM, guarantee the post-quantum security of HPKE's Auth mode.</t>
          <t>In future work, the analysis from <xref target="ABHKLR20"/> can be extended to cover
HPKE's other modes and desired security properties.
The hybrid quantum-resistance property described above, which is achieved
by using the PSK or AuthPSK mode, is not proven in <xref target="HPKEAnalysis"/> because
this analysis requires the random oracle model; in a quantum
setting, this model needs adaption to, for example, the quantum random
oracle model.</t>
        </section>
      </section>
      <section anchor="kem-security">
        <name>Security Requirements on a KEM Used within HPKE</name>
        <t>A KEM used within HPKE MUST allow HPKE to satisfy its desired security
properties described in <xref target="sec-properties"/>. <xref target="domain-separation"/> lists
requirements concerning domain separation.</t>
        <t>In particular, the KEM
shared secret MUST be a uniformly random byte string of length <tt>Nsecret</tt>.
This means, for instance, that it would not be sufficient if the KEM
shared secret is only uniformly random as an element of some set prior
to its encoding as a byte string.</t>
        <section anchor="encapdecap-interface">
          <name>Encap/Decap Interface</name>
          <t>As mentioned in <xref target="sec-considerations"/>, <xref target="CS01"/> provides some indications
that if the KEM's <tt>Encap()</tt>/<tt>Decap()</tt> interface (which is used in the Base
and PSK modes) is IND-CCA2-secure, HPKE is able to satisfy its desired
security properties. An appropriate definition of IND-CCA2 security for
KEMs can be found in <xref target="CS01"/> and <xref target="BHK09"/>.</t>
        </section>
        <section anchor="authencapauthdecap-interface">
          <name>AuthEncap/AuthDecap Interface</name>
          <t>The analysis of HPKE's Auth mode single-shot encryption API in <xref target="ABHKLR20"/>
provides composition theorems that guarantee that HPKE's Auth mode achieves
its desired security properties if the KEM's <tt>AuthEncap()</tt>/<tt>AuthDecap()</tt>
interface satisfies multi-user Outsider-CCA, Outsider-Auth, and
Insider-CCA security, as defined in the same paper.</t>
          <t>Intuitively, Outsider-CCA security formalizes confidentiality, and
Outsider-Auth security formalizes authentication of the KEM shared secret
in case none of the sender or recipient private keys are compromised.
Insider-CCA security formalizes confidentiality of the KEM shared secret
in case the sender private key is known or chosen by the adversary.
(If the recipient private key is known or chosen by the adversary,
confidentiality is trivially broken, because then the adversary knows
all secrets on the recipient's side).</t>
          <t>An Insider-Auth security notion would formalize authentication of the
KEM shared secret in case the recipient private key is known or chosen
by the adversary. (If the sender private key is known or chosen by the
adversary, it can create KEM ciphertexts in the name of the sender).
Because of the generic attack on an analogous Insider-Auth security
notion of HPKE described in <xref target="sec-properties"/>, a definition of
Insider-Auth security for KEMs used within HPKE is not useful.</t>
        </section>
        <section anchor="kem-key-reuse">
          <name>KEM Key Reuse</name>
          <t>An <tt>ikm</tt> input to <tt>DeriveKeyPair()</tt> (<xref target="derive-key-pair"/>) MUST NOT be
reused elsewhere, in particular not with <tt>DeriveKeyPair()</tt> of a
different KEM.</t>
          <t>The randomness used in <tt>Encap()</tt> and <tt>AuthEncap()</tt> to generate the
KEM shared secret or its encapsulation MUST NOT be reused elsewhere.</t>
          <t>Since a KEM key pair belonging to a sender or recipient works with all modes, it can
be used with multiple modes in parallel. HPKE is constructed to be
secure in such settings due to domain separation using the <tt>suite_id</tt>
variable. However, there is no formal proof of security at the time of
writing for using multiple modes in parallel; <xref target="HPKEAnalysis"/> and
<xref target="ABHKLR20"/> only analyze isolated modes.</t>
        </section>
      </section>
      <section anchor="kdf-choice">
        <name>Security Requirements on a KDF</name>
        <t>The choice of the KDF for HPKE SHOULD be made based on the security
level provided by the KEM and, if applicable, by the PSK. The KDF
SHOULD at least have the security level of the KEM and SHOULD
at least have the security level provided by the PSK.</t>
      </section>
      <section anchor="aead-security">
        <name>Security Requirements on an AEAD</name>
        <t>All AEADs MUST be IND-CCA2-secure, as is currently true for all AEADs
listed in <xref target="aead-ids"/>.</t>
      </section>
      <section anchor="security-psk">
        <name>Pre-Shared Key Recommendations</name>
        <t>In the PSK and AuthPSK modes, the PSK MUST have at least 32 bytes of
entropy and SHOULD be of length <tt>Nh</tt> bytes or longer. Using a PSK longer than
32 bytes but shorter than <tt>Nh</tt> bytes is permitted.</t>
        <t>HPKE is specified to use HKDF as its key derivation function. HKDF is not
designed to slow down dictionary attacks (see <xref target="RFC5869"/>). Thus, HPKE's
PSK mechanism is not suitable for use with a low-entropy password as the
PSK: In scenarios in which the adversary knows the KEM shared secret
<tt>shared_secret</tt> and has access to an oracle that distinguishes between
a good and a wrong PSK, it can perform PSK-recovering attacks. This oracle
can be the decryption operation on a captured HPKE ciphertext or any other
recipient behavior that is observably different when using a wrong PSK.
The adversary knows the KEM shared secret <tt>shared_secret</tt> if it knows all
KEM private keys of one participant. In the PSK mode, this is trivially
the case if the adversary acts as the sender.</t>
        <t>To recover a lower entropy PSK, an attacker in this scenario can trivially
perform a dictionary attack. Given a set <tt>S</tt> of possible PSK values, the
attacker generates an HPKE ciphertext for each value in <tt>S</tt>, and submits
the resulting ciphertexts to the oracle to learn which PSK is being used by
the recipient. Further, because HPKE uses AEAD schemes that are not key-committing,
an attacker can mount a partitioning oracle attack <xref target="LGR20"/> that can recover
the PSK from a set of <tt>S</tt> possible PSK values, with |S| = m*k, in roughly
m + log k queries to the oracle using ciphertexts of length proportional to
k, the maximum message length in blocks. (Applying the multi-collision algorithm from
<xref target="LGR20"/> requires a small adaptation to the algorithm wherein the appropriate nonce
is computed for each candidate key. This modification adds one call to HKDF per key.
The number of partitioning oracle queries remains unchanged.) As a result, the PSK
must therefore be chosen with sufficient entropy so that m + log k is prohibitive for
attackers (e.g., 2^128). Future specifications can define new AEAD algorithms that
are key-committing.</t>
      </section>
      <section anchor="domain-separation">
        <name>Domain Separation</name>
        <t>HPKE allows combining a DHKEM variant <tt>DHKEM(Group, KDF')</tt> and a KDF
such that both KDFs are instantiated by the same KDF. By design, the
calls to <tt>Extract()</tt> and <tt>Expand()</tt> inside DHKEM and the remainder of
HPKE use separate input domains. This justifies modeling them as
independent functions even if instantiated by the same KDF.
This domain separation between DHKEM and the remainder of HPKE is achieved by
using prefix-free sets of <tt>suite_id</tt> values in <tt>LabeledExtract()</tt> and
<tt>LabeledExpand()</tt> (<tt>KEM...</tt> in DHKEM and <tt>HPKE...</tt> in the remainder of HPKE).
Recall that a set is prefix-free if no element is a prefix of another within the
set.</t>
        <t>Future KEM instantiations MUST ensure, should <tt>Extract()</tt> and
<tt>Expand()</tt> be used internally, that they can be modeled as functions
independent from the invocations of <tt>Extract()</tt> and <tt>Expand()</tt> in the
remainder of HPKE. One way to ensure this is by using <tt>LabeledExtract()</tt>
and <tt>LabeledExpand()</tt> with a <tt>suite_id</tt> as defined in <xref target="base-crypto"/>,
which will ensure input domain separation, as outlined above.
Particular attention needs to
be paid if the KEM directly invokes functions that are used internally
in HPKE's <tt>Extract()</tt> or <tt>Expand()</tt>, such as <tt>Hash()</tt> and <tt>HMAC()</tt> in the case of HKDF.
It MUST be ensured that inputs to these invocations cannot collide with
inputs to the internal invocations of these functions inside <tt>Extract()</tt> or
<tt>Expand()</tt>. In HPKE's <tt>KeySchedule()</tt> this is avoided by using <tt>Extract()</tt> instead of
<tt>Hash()</tt> on the arbitrary-length inputs <tt>info</tt> and <tt>psk_id</tt>.</t>
        <t>The string literal "HPKE-v1" used in <tt>LabeledExtract()</tt> and <tt>LabeledExpand()</tt>
ensures that any secrets derived in HPKE are bound to the scheme's name
and version, even when possibly derived from the same Diffie-Hellman or
KEM shared secret as in another scheme or version.</t>
      </section>
      <section anchor="non-goals">
        <name>Application Embedding and Non-Goals</name>
        <t>HPKE is designed to be a fairly low-level mechanism.  As a result, it assumes
that certain properties are provided by the application in which HPKE is
embedded and leaves certain security properties to be provided by other
mechanisms. Otherwise said, certain properties are out-of-scope for HPKE.</t>
        <section anchor="message-order-and-message-loss">
          <name>Message Order and Message Loss</name>
          <t>The primary requirement that HPKE imposes on applications is the requirement
that ciphertexts MUST be presented to <tt>ContextR.Open()</tt> in the same order in
which they were generated by <tt>ContextS.Seal()</tt>.  When the single-shot API is
used (see <xref target="single-shot-apis"/>), this is trivially true (since there is only
ever one ciphertext.  Applications that allow for multiple invocations of
<tt>Open()</tt> / <tt>Seal()</tt> on the same context MUST enforce the ordering property
described above.</t>
          <t>Ordering requirements of this character are usually fulfilled by providing a
sequence number in the framing of encrypted messages.  Whatever information is
used to determine the ordering of HPKE-encrypted messages SHOULD be included in
the AAD passed to <tt>ContextS.Seal()</tt> and <tt>ContextR.Open()</tt>.  The specifics of
this scheme are up to the application.</t>
          <t>HPKE is not tolerant of lost messages. Applications MUST be able to detect when
a message has been lost.  When an unrecoverable loss is detected, the application MUST discard
any associated HPKE context.</t>
        </section>
        <section anchor="downgrade-prevention">
          <name>Downgrade Prevention</name>
          <t>HPKE assumes that the sender and recipient agree on what algorithms to use.
Depending on how these algorithms are negotiated, it may be possible for an
intermediary to force the two parties to use suboptimal algorithms.</t>
        </section>
        <section anchor="replay-protection">
          <name>Replay Protection</name>
          <t>The requirement that ciphertexts be presented to the <tt>ContextR.Open()</tt> function
in the same order they were generated by <tt>ContextS.Seal()</tt> provides a degree of
replay protection within a stream of ciphertexts resulting from a given context.
HPKE provides no other replay protection.</t>
        </section>
        <section anchor="forward-secrecy">
          <name>Forward Secrecy</name>
          <t>HPKE ciphertexts are not forward secret with respect to recipient compromise
in any mode. This means that compromise of long-term recipient secrets allows
an attacker to decrypt past ciphertexts encrypted under said secrets. This is because
only long-term secrets are used on the side of the recipient.</t>
          <t>HPKE ciphertexts are forward secret with respect to sender compromise in all
modes. This is because ephemeral randomness is used on the sender's side, which
is supposed to be erased directly after computation of the KEM shared secret and
ciphertext.</t>
        </section>
        <section anchor="bad-ephemeral-randomness">
          <name>Bad Ephemeral Randomness</name>
          <t>If the randomness used for KEM encapsulation is bad -- i.e., of low entropy or
compromised because of a broken or subverted random number generator -- the
confidentiality guarantees of HPKE degrade significantly. In Base mode,
confidentiality guarantees can be lost completely; in the other modes, at least forward secrecy with
respect to sender compromise can be lost completely.</t>
          <t>Such a situation could also lead to the reuse of the same KEM shared secret
and thus to the reuse of same key-nonce pairs for the AEAD.
The AEADs specified in this document are not secure
in case of nonce reuse. This attack vector is particularly relevant in
authenticated modes because knowledge of the ephemeral randomness is not
enough to derive <tt>shared_secret</tt> in these modes.</t>
          <t>One way for applications to mitigate the impacts of bad ephemeral randomness is
to combine ephemeral randomness with a local long-term secret that has been
generated securely, as described in <xref target="RFC8937"/>.</t>
        </section>
        <section anchor="hiding-plaintext-length">
          <name>Hiding Plaintext Length</name>
          <t>AEAD ciphertexts produced by HPKE do not hide the plaintext length. Applications
requiring this level of privacy should use a suitable padding mechanism. See
<xref target="I-D.ietf-tls-esni"/> and <xref target="RFC8467"/> for examples of protocol-specific
padding policies.</t>
        </section>
      </section>
      <section anchor="bidirectional">
        <name>Bidirectional Encryption</name>
        <t>As discussed in <xref target="hpke-dem"/>, HPKE encryption is unidirectional from sender
to recipient. Applications that require bidirectional encryption can derive
necessary keying material with the secret export interface <xref target="hpke-export"/>.
The type and length of such keying material depends on the application use
case.</t>
        <t>As an example, if an application needs AEAD encryption from the recipient to
the sender, it can derive a key and nonce from the corresponding HPKE context
as follows:</t>
        <artwork><![CDATA[
key = context.Export("response key", Nk)
nonce = context.Export("response nonce", Nn)
]]></artwork>
        <t>In this example, the length of each secret is based on the AEAD algorithm
used for the corresponding HPKE context.</t>
        <t>Note that HPKE's limitations with regard to sender authentication become limits
on recipient authentication in this context. In particular, in the Base mode,
there is no authentication of the remote party at all. Even in the Auth mode,
where the remote party has proven that they hold a specific private key, this
authentication is still subject to key-compromise impersonation, as discussed
in <xref target="kci"/>.</t>
      </section>
      <section anchor="metadata-protection">
        <name>Metadata Protection</name>
        <t>The authenticated modes of HPKE (PSK, Auth, and AuthPSK) require that the recipient
know what key material to use for the sender.  This can be signaled in
applications by sending the PSK ID (<tt>psk_id</tt> above) and/or the sender's public
key (<tt>pkS</tt>).  However, these values themselves might be considered sensitive,
since, in a given application context, they might identify the sender.</t>
        <t>An application that wishes to protect these metadata values without requiring
further provisioning of keys can use an additional instance of HPKE, using the
unauthenticated Base mode.  Where the application might have sent <tt>(psk_id, pkS,
enc, ciphertext)</tt> before, it would now send <tt>(enc2, ciphertext2, enc, ciphertext)</tt>,
where <tt>(enc2, ciphertext2)</tt> represent the encryption of the <tt>psk_id</tt> and <tt>pkS</tt>
values.</t>
        <t>The cost of this approach is an additional KEM operation each for the sender and
the recipient.  A potential lower-cost approach (involving only symmetric
operations) would be available if the nonce-protection schemes in <xref target="BNT19"/>
could be extended to cover other metadata.  However, this construction would
require further analysis.</t>
      </section>
    </section>
    <section anchor="message-encoding">
      <name>Message Encoding</name>
      <t>This document does not specify a wire format encoding for HPKE messages. Applications
that adopt HPKE must therefore specify an unambiguous encoding mechanism that includes,
minimally: the encapsulated value <tt>enc</tt>, ciphertext value(s) (and order if there are
multiple), and any info values that are not implicit. One example of a non-implicit
value is the recipient public key used for encapsulation, which may be needed if a
recipient has more than one public key.</t>
      <t>The AEAD interface used in this document is based on <xref target="RFC5116"/>, which produces and
consumes a single ciphertext value. As discussed in <xref target="RFC5116"/>, this ciphertext value
contains the encrypted plaintext as well as any authentication data, encoded in a manner
described by the individual AEAD scheme. Some implementations are not structured in this
way, instead providing a separate ciphertext and authentication tag. When such
AEAD implementations are used in HPKE implementations, the HPKE implementation must combine
these inputs into a single ciphertext value within <tt>Seal()</tt> and parse them out within
<tt>Open()</tt>, where the parsing details are defined by the AEAD scheme. For example, with
the AES-GCM schemes specified in this document, the GCM authentication tag is placed in
the last Nt bytes of the ciphertext output.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA has created three new registries:</t>
      <ul spacing="normal">
        <li>
          <t>HPKE KEM Identifiers</t>
        </li>
        <li>
          <t>HPKE KDF Identifiers</t>
        </li>
        <li>
          <t>HPKE AEAD Identifiers</t>
        </li>
      </ul>
      <t>All these registries are under "Hybrid Public Key
Encryption", and administered under a Specification Required policy <xref target="RFC8126"/></t>
      <section anchor="kem-template">
        <name>KEM Identifiers</name>
        <t>The "HPKE KEM Identifiers" registry lists identifiers for key encapsulation
algorithms defined for use with HPKE.  These identifiers are two-byte values,
so the maximum possible value is 0xFFFF = 65535.</t>
        <t>Template:</t>
        <ul spacing="normal">
          <li>
            <t>Value: The two-byte identifier for the algorithm</t>
          </li>
          <li>
            <t>KEM: The name of the algorithm</t>
          </li>
          <li>
            <t>Nsecret: The length in bytes of a KEM shared secret produced by the algorithm</t>
          </li>
          <li>
            <t>Nenc: The length in bytes of an encoded encapsulated key produced by the algorithm</t>
          </li>
          <li>
            <t>Npk: The length in bytes of an encoded public key for the algorithm</t>
          </li>
          <li>
            <t>Nsk: The length in bytes of an encoded private key for the algorithm</t>
          </li>
          <li>
            <t>Auth: A boolean indicating if this algorithm provides the <tt>AuthEncap()</tt>/<tt>AuthDecap()</tt> interface</t>
          </li>
          <li>
            <t>Reference: Where this algorithm is defined</t>
          </li>
        </ul>
        <t>Initial contents: Provided in <xref target="kemid-values"/></t>
      </section>
      <section anchor="kdf-identifiers">
        <name>KDF Identifiers</name>
        <t>The "HPKE KDF Identifiers" registry lists identifiers for key derivation
functions defined for use with HPKE.  These identifiers are two-byte values,
so the maximum possible value is 0xFFFF = 65535.</t>
        <t>Template:</t>
        <ul spacing="normal">
          <li>
            <t>Value: The two-byte identifier for the algorithm</t>
          </li>
          <li>
            <t>KDF: The name of the algorithm</t>
          </li>
          <li>
            <t>Nh: The output size of the Extract function in bytes</t>
          </li>
          <li>
            <t>Reference: Where this algorithm is defined</t>
          </li>
        </ul>
        <t>Initial contents: Provided in <xref target="kdfid-values"/></t>
      </section>
      <section anchor="aead-identifiers">
        <name>AEAD Identifiers</name>
        <t>The "HPKE AEAD Identifiers" registry lists identifiers for authenticated
encryption with associated data (AEAD) algorithms defined for use with HPKE.
These identifiers are two-byte values, so the maximum possible value is
0xFFFF = 65535.</t>
        <t>Template:</t>
        <ul spacing="normal">
          <li>
            <t>Value: The two-byte identifier for the algorithm</t>
          </li>
          <li>
            <t>AEAD: The name of the algorithm</t>
          </li>
          <li>
            <t>Nk: The length in bytes of a key for this algorithm</t>
          </li>
          <li>
            <t>Nn: The length in bytes of a nonce for this algorithm</t>
          </li>
          <li>
            <t>Nt: The length in bytes of an authentication tag for this algorithm</t>
          </li>
          <li>
            <t>Reference: Where this algorithm is defined</t>
          </li>
        </ul>
        <t>Initial contents: Provided in <xref target="aeadid-values"/></t>
      </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="RFC8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="J. Jonsson" initials="J." surname="Jonsson"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CS01" target="https://eprint.iacr.org/2001/108">
          <front>
            <title>Design and Analysis of Practical Public-Key Encryption Schemes Secure against Adaptive Chosen Ciphertext Attack</title>
            <author initials="R." surname="Cramer" fullname="Ronald Cramer">
              <organization/>
            </author>
            <author initials="V." surname="Shoup" fullname="Victor Shoup">
              <organization/>
            </author>
            <date year="2001"/>
          </front>
        </reference>
        <reference anchor="HHK06" target="https://eprint.iacr.org/2006/265">
          <front>
            <title>Some (in)sufficient conditions for secure hybrid encryption</title>
            <author initials="J." surname="Herranz" fullname="Javier Herranz">
              <organization/>
            </author>
            <author initials="D." surname="Hofheinz" fullname="Dennis Hofheinz">
              <organization/>
            </author>
            <author initials="E." surname="Kiltz" fullname="Eike Kiltz">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="GAP" target="https://link.springer.com/content/pdf/10.1007/3-540-44586-2_8.pdf">
          <front>
            <title>The Gap-Problems - a New Class of Problems for the Security of Cryptographic Schemes</title>
            <author initials="T." surname="Okamoto" fullname="Tatsuaki Okamoto">
              <organization/>
            </author>
            <author initials="D." surname="Pointcheval" fullname="David Pointcheval">
              <organization/>
            </author>
            <date year="2001"/>
          </front>
          <seriesInfo name="ISBN" value="978-3-540-44586-9"/>
        </reference>
        <reference anchor="ANSI">
          <front>
            <title>ANSI X9.63 Public Key Cryptography for the Financial Services Industry -- Key Agreement and Key Transport Using Elliptic Curve Cryptography</title>
            <author>
              <organization>American National Standards Institute</organization>
            </author>
            <date year="2001"/>
          </front>
        </reference>
        <reference anchor="IEEE1363">
          <front>
            <title>IEEE 1363a, Standard Specifications for Public Key Cryptography - Amendment 1 -- Additional Techniques"</title>
            <author>
              <organization>Institute of Electrical and Electronics Engineers</organization>
            </author>
            <date year="2004"/>
          </front>
        </reference>
        <reference anchor="ISO">
          <front>
            <title>ISO/IEC 18033-2, Information Technology - Security Techniques - Encryption Algorithms - Part 2 -- Asymmetric Ciphers</title>
            <author>
              <organization>International Organization for Standardization / International Electrotechnical Commission</organization>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="SECG" target="https://secg.org/sec1-v2.pdf">
          <front>
            <title>Elliptic Curve Cryptography, Standards for Efficient Cryptography Group, ver. 2</title>
            <author>
              <organization/>
            </author>
            <date year="2009"/>
          </front>
        </reference>
        <reference anchor="BHK09" target="https://eprint.iacr.org/2009/418">
          <front>
            <title>Subtleties in the Definition of IND-CCA: When and How Should Challenge-Decryption be Disallowed?</title>
            <author initials="" surname="Mihir Bellare">
              <organization>University of California San Diego</organization>
            </author>
            <author initials="" surname="Dennis Hofheinz">
              <organization>CWI Amsterdam</organization>
            </author>
            <author initials="" surname="Eike Kiltz">
              <organization>CWI Amsterdam</organization>
            </author>
            <date year="2009"/>
          </front>
        </reference>
        <reference anchor="SigncryptionDZ10">
          <front>
            <title>Practical Signcryption</title>
            <author>
              <organization/>
            </author>
            <date year="2010"/>
          </front>
          <seriesInfo name="Information Security and" value="Cryptography"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-89411-7"/>
          <seriesInfo name="ISBN" value="[&quot;9783540894094&quot;, &quot;9783540894117&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="HPKEAnalysis" target="https://eprint.iacr.org/2020/243">
          <front>
            <title>An Analysis of Hybrid Public Key Encryption</title>
            <author initials="B." surname="Lipp" fullname="Benjamin Lipp">
              <organization>Inria Paris</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="ABHKLR20" target="https://eprint.iacr.org/2020/1499">
          <front>
            <title>Analysing the HPKE Standard</title>
            <author initials="J." surname="Alwen" fullname="Joël Alwen">
              <organization>Wickr</organization>
            </author>
            <author initials="B." surname="Blanchet" fullname="Bruno Blanchet">
              <organization>Inria Paris</organization>
            </author>
            <author initials="E." surname="Hauck" fullname="Eduard Hauck">
              <organization>Ruhr-Universität Bochum</organization>
            </author>
            <author initials="E." surname="Kiltz" fullname="Eike Kiltz">
              <organization>Ruhr-Universität Bochum</organization>
            </author>
            <author initials="B." surname="Lipp" fullname="Benjamin Lipp">
              <organization>Inria Paris</organization>
            </author>
            <author initials="D." surname="Riepel" fullname="Doreen Riepel">
              <organization>Ruhr-Universität Bochum</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="MAEA10" target="https://ieeexplore.ieee.org/abstract/document/5604194/">
          <front>
            <title>A Comparison of the Standardized Versions of ECIES</title>
            <author initials="V." surname="Gayoso Martinez" fullname="V. Gayoso Martinez">
              <organization>Applied Physics Institute, CSIC, Madrid, Spain</organization>
            </author>
            <author initials="F." surname="Hernandez Alvarez" fullname="F. Hernandez Alvarez">
              <organization>Applied Physics Institute, CSIC, Madrid, Spain</organization>
            </author>
            <author initials="L." surname="Hernandez Encinas" fullname="L. Hernandez Encinas">
              <organization>Applied Physics Institute, CSIC, Madrid, Spain</organization>
            </author>
            <author initials="C." surname="Sanchez Avila" fullname="C. Sanchez Avila">
              <organization>Polytechnic University, Madrid, Spain</organization>
            </author>
            <date year="2010"/>
          </front>
        </reference>
        <reference anchor="BNT19" target="http://dx.doi.org/10.1007/978-3-030-26948-7_9">
          <front>
            <title>Nonces Are Noticed: AEAD Revisited</title>
            <author initials="M." surname="Bellare" fullname="Mihir Bellare">
              <organization>University of California, San Diego</organization>
            </author>
            <author initials="R." surname="Ng" fullname="Ruth Ng">
              <organization>University of California, San Diego</organization>
            </author>
            <author initials="B." surname="Tackmann" fullname="Björn Tackmann">
              <organization>IBM Research</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="IMB">
          <front>
            <title>Authentication and authenticated key exchanges</title>
            <author fullname="Whitfield Diffie" initials="W." surname="Diffie">
              <organization/>
            </author>
            <author fullname="Paul C. Van Oorschot" initials="P." surname="Van Oorschot">
              <organization/>
            </author>
            <author fullname="Michael J. Wiener" initials="M." surname="Wiener">
              <organization/>
            </author>
            <date month="June" year="1992"/>
          </front>
          <seriesInfo name="Designs, Codes and Cryptography" value="vol. 2, no. 2, pp. 107-125"/>
          <seriesInfo name="DOI" value="10.1007/bf00124891"/>
          <refcontent>Springer Science and Business Media LLC</refcontent>
        </reference>
        <reference anchor="LGR20" target="https://eprint.iacr.org/2020/1491">
          <front>
            <title>Partitioning Oracle Attacks</title>
            <author initials="J." surname="Len" fullname="Julia Len">
              <organization>Cornell Tech</organization>
            </author>
            <author initials="P." surname="Grubbs" fullname="Paul Grubbs">
              <organization>Cornell Tech</organization>
            </author>
            <author initials="T." surname="Ristenpart" fullname="Thomas Ristenpart">
              <organization>Cornell Tech</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="TestVectors" target="https://github.com/cfrg/draft-irtf-cfrg-hpke/blob/5f503c564da00b0687b3de75f1dfbdfc4079ad31/test-vectors.json">
          <front>
            <title>HPKE Test Vectors</title>
            <author>
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="keyagreement">
          <front>
            <title>Recommendation for pair-wise key-establishment schemes using discrete logarithm cryptography</title>
            <author fullname="Elaine Barker" initials="E." surname="Barker">
              <organization/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Allen Roginsky" initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author fullname="Apostol Vassilev" initials="A." surname="Vassilev">
              <organization/>
            </author>
            <author fullname="Richard Davis" initials="R." surname="Davis">
              <organization/>
            </author>
            <date month="April" year="2018"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-56ar3"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="NISTCurves">
          <front>
            <title>Digital signature standard (DSS)</title>
            <author>
              <organization/>
            </author>
            <date year="2013"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.186-4"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="GCM">
          <front>
            <title>Recommendation for block cipher modes of operation :: GaloisCounter Mode (GCM) and GMAC</title>
            <author fullname="M J Dworkin" initials="M." surname="Dworkin">
              <organization/>
            </author>
            <date year="2007"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-38d"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="NaCl" target="https://nacl.cr.yp.to/box.html">
          <front>
            <title>Public-key authenticated encryption: crypto_box</title>
            <author>
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="RFC1421">
          <front>
            <title>Privacy Enhancement for Internet Electronic Mail: Part I: Message Encryption and Authentication Procedures</title>
            <author fullname="J. Linn" initials="J." surname="Linn"/>
            <date month="February" year="1993"/>
            <abstract>
              <t>This document defines message encryption and authentication procedures, in order to provide privacy-enhanced mail (PEM) services for electronic mail transfer in the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1421"/>
          <seriesInfo name="DOI" value="10.17487/RFC1421"/>
        </reference>
        <reference anchor="I-D.ietf-mls-protocol">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Benjamin Beurdouche" initials="B." surname="Beurdouche">
              <organization>Inria &amp; Mozilla</organization>
            </author>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <author fullname="Jon Millican" initials="J." surname="Millican">
              <organization>Meta Platforms</organization>
            </author>
            <author fullname="Emad Omara" initials="E." surname="Omara">
              <organization>Google</organization>
            </author>
            <author fullname="Katriel Cohn-Gordon" initials="K." surname="Cohn-Gordon">
              <organization>University of Oxford</organization>
            </author>
            <date day="27" month="March" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages.  Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time.  In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-protocol-20"/>
        </reference>
        <reference anchor="I-D.ietf-tls-esni">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="20" month="March" year="2025"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-24"/>
        </reference>
        <reference anchor="RFC7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC8439">
          <front>
            <title>ChaCha20 and Poly1305 for IETF Protocols</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This document defines the ChaCha20 stream cipher as well as the use of the Poly1305 authenticator, both as stand-alone algorithms and as a "combined mode", or Authenticated Encryption with Associated Data (AEAD) algorithm.</t>
              <t>RFC 7539, the predecessor of this document, was meant to serve as a stable reference and an implementation guide. It was a product of the Crypto Forum Research Group (CFRG). This document merges the errata filed against RFC 7539 and adds a little text to the Security Considerations section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8439"/>
          <seriesInfo name="DOI" value="10.17487/RFC8439"/>
        </reference>
        <reference anchor="BJM97">
          <front>
            <title>Key agreement protocols and their security analysis: Extended Abstract</title>
            <author fullname="Simon Blake-Wilson" initials="S." surname="Blake-Wilson">
              <organization/>
            </author>
            <author fullname="Don Johnson" initials="D." surname="Johnson">
              <organization/>
            </author>
            <author fullname="Alfred Menezes" initials="A." surname="Menezes">
              <organization/>
            </author>
            <date year="1997"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 30-45"/>
          <seriesInfo name="DOI" value="10.1007/bfb0024447"/>
          <seriesInfo name="ISBN" value="[&quot;9783540639275&quot;, &quot;9783540696681&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="RFC8696">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </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>
        <reference anchor="RFC8467">
          <front>
            <title>Padding Policies for Extension Mechanisms for DNS (EDNS(0))</title>
            <author fullname="A. Mayrhofer" initials="A." surname="Mayrhofer"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>RFC 7830 specifies the "Padding" option for Extension Mechanisms for DNS (EDNS(0)) but does not specify the actual padding length for specific applications. This memo lists the possible options ("padding policies"), discusses the implications of each option, and provides a recommended (experimental) option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8467"/>
          <seriesInfo name="DOI" value="10.17487/RFC8467"/>
        </reference>
      </references>
    </references>
    <?line 1814?>

<section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Joël Alwen, Jean-Philippe Aumasson, David
Benjamin, Benjamin Beurdouche, Bruno Blanchet, Frank Denis, Stephen Farrell,
Scott Fluhrer, Eduard Hauck, Scott Hollenbeck, Kevin Jacobs, Burt Kaliski, Eike
Kiltz, Julia Len, John Mattsson, Christopher Patton, Doreen Riepel, Raphael
Robert, Michael Rosenberg, Michael Scott, Martin Thomson, Steven Valdez, Riad
Wahby, and other contributors in the CFRG for helpful feedback that greatly
improved this document.</t>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>Each section below contains test vectors for a single HPKE ciphersuite and
contains the following values:</t>
      <ol spacing="normal" type="1"><li>
          <t>Configuration information and private key material: This includes the <tt>mode</tt>, <tt>info</tt> string, HPKE
ciphersuite identifiers (<tt>kem_id</tt>, <tt>kdf_id</tt>, <tt>aead_id</tt>), and all
sender, recipient, and ephemeral key material. For each role X,
where X is one of S, R, or E, as sender, recipient, and ephemeral,
respectively, key pairs are generated as <tt>(skX, pkX) = DeriveKeyPair(ikmX)</tt>.
Each key pair <tt>(skX, pkX)</tt> is written in its serialized form, where
<tt>skXm = SerializePrivateKey(skX)</tt> and <tt>pkXm = SerializePublicKey(pkX)</tt>.
For applicable modes, the shared PSK and PSK identifier are also included.</t>
        </li>
        <li>
          <t>Context creation intermediate values and outputs: This includes the
KEM outputs <tt>enc</tt> and <tt>shared_secret</tt> used to create the context, along
with intermediate values <tt>key_schedule_context</tt> and <tt>secret</tt> computed
in the KeySchedule function in <xref target="encryption-context"/>. The outputs
include the context values <tt>key</tt>, <tt>base_nonce</tt>, and <tt>exporter_secret</tt>.</t>
        </li>
        <li>
          <t>Encryption test vectors: A fixed plaintext message is encrypted using
different sequence numbers and AAD values using the context computed in (2).
Each test vector lists the sequence number and corresponding nonce computed
with <tt>base_nonce</tt>, the plaintext message <tt>pt</tt>, AAD <tt>aad</tt>, and output
ciphertext <tt>ct</tt>.</t>
        </li>
        <li>
          <t>Export test vectors: Several exported values of the same length with differing
context parameters are computed using the context computed in (2). Each test
vector lists the <tt>exporter_context</tt>, output length <tt>L</tt>, and resulting export
value.</t>
        </li>
      </ol>
      <t>These test vectors are also available in JSON format at <xref target="TestVectors"/>.</t>
      <section anchor="dhkemx25519-hkdf-sha256-hkdf-sha256-aes-128-gcm">
        <name>DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, AES-128-GCM</name>
        <section anchor="base-setup-information">
          <name>Base Setup Information</name>
          <artwork><![CDATA[
mode: 0
kem_id: 32
kdf_id: 1
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
7268600d403fce431561aef583ee1613527cff655c1343f29812e66706df3234
pkEm:
37fda3567bdbd628e88668c3c8d7e97d1d1253b6d4ea6d44c150f741f1bf4431
skEm:
52c4a758a802cd8b936eceea314432798d5baf2d7e9235dc084ab1b9cfa2f736
ikmR:
6db9df30aa07dd42ee5e8181afdb977e538f5e1fec8a06223f33f7013e525037
pkRm:
3948cfe0ad1ddb695d780e59077195da6c56506b027329794ab02bca80815c4d
skRm:
4612c550263fc8ad58375df3f557aac531d26850903e55a9f23f21d8534e8ac8
enc:
37fda3567bdbd628e88668c3c8d7e97d1d1253b6d4ea6d44c150f741f1bf4431
shared_secret:
fe0e18c9f024ce43799ae393c7e8fe8fce9d218875e8227b0187c04e7d2ea1fc
key_schedule_context: 00725611c9d98c07c03f60095cd32d400d8347d45ed670
97bbad50fc56da742d07cb6cffde367bb0565ba28bb02c90744a20f5ef37f3052352
6106f637abb05449
secret:
12fff91991e93b48de37e7daddb52981084bd8aa64289c3788471d9a9712f397
key: 4531685d41d65f03dc48f6b8302c05b0
base_nonce: 56d890e5accaaf011cff4b7d
exporter_secret:
45ff1c2e220db587171952c0592d5f5ebe103f1561a2614e38f2ffd47e99e3f8
]]></artwork>
          <section anchor="encryptions">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 56d890e5accaaf011cff4b7d
ct: f938558b5d72f1a23810b4be2ab4f84331acc02fc97babc53a52ae8218a355a9
6d8770ac83d07bea87e13c512a

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 56d890e5accaaf011cff4b7c
ct: af2d7e9ac9ae7e270f46ba1f975be53c09f8d875bdc8535458c2494e8a6eab25
1c03d0c22a56b8ca42c2063b84

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 56d890e5accaaf011cff4b7f
ct: 498dfcabd92e8acedc281e85af1cb4e3e31c7dc394a1ca20e173cb7251649158
8d96a19ad4a683518973dcc180

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 56d890e5accaaf011cff4b79
ct: 583bd32bc67a5994bb8ceaca813d369bca7b2a42408cddef5e22f880b631215a
09fc0012bc69fccaa251c0246d

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 56d890e5accaaf011cff4b82
ct: 7175db9717964058640a3a11fb9007941a5d1757fda1a6935c805c21af32505b
f106deefec4a49ac38d71c9e0a

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 56d890e5accaaf011cff4a7d
ct: 957f9800542b0b8891badb026d79cc54597cb2d225b54c00c5238c25d05c30e3
fbeda97d2e0e1aba483a2df9f2
]]></artwork>
          </section>
          <section anchor="exported-values">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
3853fe2b4035195a573ffc53856e77058e15d9ea064de3e59f4961d0095250ee

exporter_context: 00
L: 32
exported_value:
2e8f0b54673c7029649d4eb9d5e33bf1872cf76d623ff164ac185da9e88c21a5

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
e9e43065102c3836401bed8c3c3c75ae46be1639869391d62c61f1ec7af54931
]]></artwork>
          </section>
        </section>
        <section anchor="psk-setup-information">
          <name>PSK Setup Information</name>
          <artwork><![CDATA[
mode: 1
kem_id: 32
kdf_id: 1
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
78628c354e46f3e169bd231be7b2ff1c77aa302460a26dbfa15515684c00130b
pkEm:
0ad0950d9fb9588e59690b74f1237ecdf1d775cd60be2eca57af5a4b0471c91b
skEm:
463426a9ffb42bb17dbe6044b9abd1d4e4d95f9041cef0e99d7824eef2b6f588
ikmR:
d4a09d09f575fef425905d2ab396c1449141463f698f8efdb7accfaff8995098
pkRm:
9fed7e8c17387560e92cc6462a68049657246a09bfa8ade7aefe589672016366
skRm:
c5eb01eb457fe6c6f57577c5413b931550a162c71a03ac8d196babbd4e5ce0fd
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc:
0ad0950d9fb9588e59690b74f1237ecdf1d775cd60be2eca57af5a4b0471c91b
shared_secret:
727699f009ffe3c076315019c69648366b69171439bd7dd0807743bde76986cd
key_schedule_context: 01e78d5cf6190d275863411ff5edd0dece5d39fa48e04e
ec1ed9b71be34729d18ccb6cffde367bb0565ba28bb02c90744a20f5ef37f3052352
6106f637abb05449
secret:
3728ab0b024b383b0381e432b47cced1496d2516957a76e2a9f5c8cb947afca4
key: 15026dba546e3ae05836fc7de5a7bb26
base_nonce: 9518635eba129d5ce0914555
exporter_secret:
3d76025dbbedc49448ec3f9080a1abab6b06e91c0b11ad23c912f043a0ee7655
]]></artwork>
          <section anchor="encryptions-1">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 9518635eba129d5ce0914555
ct: e52c6fed7f758d0cf7145689f21bc1be6ec9ea097fef4e959440012f4feb73fb
611b946199e681f4cfc34db8ea

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 9518635eba129d5ce0914554
ct: 49f3b19b28a9ea9f43e8c71204c00d4a490ee7f61387b6719db765e948123b45
b61633ef059ba22cd62437c8ba

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 9518635eba129d5ce0914557
ct: 257ca6a08473dc851fde45afd598cc83e326ddd0abe1ef23baa3baa4dd8cde99
fce2c1e8ce687b0b47ead1adc9

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 9518635eba129d5ce0914551
ct: a71d73a2cd8128fcccbd328b9684d70096e073b59b40b55e6419c9c68ae21069
c847e2a70f5d8fb821ce3dfb1c

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 9518635eba129d5ce09145aa
ct: 55f84b030b7f7197f7d7d552365b6b932df5ec1abacd30241cb4bc4ccea27bd2
b518766adfa0fb1b71170e9392

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 9518635eba129d5ce0914455
ct: c5bf246d4a790a12dcc9eed5eae525081e6fb541d5849e9ce8abd92a3bc15517
76bea16b4a518f23e237c14b59
]]></artwork>
          </section>
          <section anchor="exported-values-1">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
dff17af354c8b41673567db6259fd6029967b4e1aad13023c2ae5df8f4f43bf6

exporter_context: 00
L: 32
exported_value:
6a847261d8207fe596befb52928463881ab493da345b10e1dcc645e3b94e2d95

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
8aff52b45a1be3a734bc7a41e20b4e055ad4c4d22104b0c20285a7c4302401cd
]]></artwork>
          </section>
        </section>
        <section anchor="auth-setup-information">
          <name>Auth Setup Information</name>
          <artwork><![CDATA[
mode: 2
kem_id: 32
kdf_id: 1
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
6e6d8f200ea2fb20c30b003a8b4f433d2f4ed4c2658d5bc8ce2fef718059c9f7
pkEm:
23fb952571a14a25e3d678140cd0e5eb47a0961bb18afcf85896e5453c312e76
skEm:
ff4442ef24fbc3c1ff86375b0be1e77e88a0de1e79b30896d73411c5ff4c3518
ikmR:
f1d4a30a4cef8d6d4e3b016e6fd3799ea057db4f345472ed302a67ce1c20cdec
pkRm:
1632d5c2f71c2b38d0a8fcc359355200caa8b1ffdf28618080466c909cb69b2e
skRm:
fdea67cf831f1ca98d8e27b1f6abeb5b7745e9d35348b80fa407ff6958f9137e
ikmS:
94b020ce91d73fca4649006c7e7329a67b40c55e9e93cc907d282bbbff386f58
pkSm:
8b0c70873dc5aecb7f9ee4e62406a397b350e57012be45cf53b7105ae731790b
skSm:
dc4a146313cce60a278a5323d321f051c5707e9c45ba21a3479fecdf76fc69dd
enc:
23fb952571a14a25e3d678140cd0e5eb47a0961bb18afcf85896e5453c312e76
shared_secret:
2d6db4cf719dc7293fcbf3fa64690708e44e2bebc81f84608677958c0d4448a7
key_schedule_context: 02725611c9d98c07c03f60095cd32d400d8347d45ed670
97bbad50fc56da742d07cb6cffde367bb0565ba28bb02c90744a20f5ef37f3052352
6106f637abb05449
secret:
56c62333d9d9f7767f5b083fdfce0aa7e57e301b74029bb0cffa7331385f1dda
key: b062cb2c4dd4bca0ad7c7a12bbc341e6
base_nonce: a1bc314c1942ade7051ffed0
exporter_secret:
ee1a093e6e1c393c162ea98fdf20560c75909653550540a2700511b65c88c6f1
]]></artwork>
          <section anchor="encryptions-2">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: a1bc314c1942ade7051ffed0
ct: 5fd92cc9d46dbf8943e72a07e42f363ed5f721212cd90bcfd072bfd9f44e06b8
0fd17824947496e21b680c141b

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: a1bc314c1942ade7051ffed1
ct: d3736bb256c19bfa93d79e8f80b7971262cb7c887e35c26370cfed62254369a1
b52e3d505b79dd699f002bc8ed

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: a1bc314c1942ade7051ffed2
ct: 122175cfd5678e04894e4ff8789e85dd381df48dcaf970d52057df2c9acc3b12
1313a2bfeaa986050f82d93645

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: a1bc314c1942ade7051ffed4
ct: dae12318660cf963c7bcbef0f39d64de3bf178cf9e585e756654043cc5059873
bc8af190b72afc43d1e0135ada

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: a1bc314c1942ade7051ffe2f
ct: 55d53d85fe4d9e1e97903101eab0b4865ef20cef28765a47f840ff99625b7d69
dee927df1defa66a036fc58ff2

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: a1bc314c1942ade7051fffd0
ct: 42fa248a0e67ccca688f2b1d13ba4ba84755acf764bd797c8f7ba3b9b1dc3330
326f8d172fef6003c79ec72319
]]></artwork>
          </section>
          <section anchor="exported-values-2">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
28c70088017d70c896a8420f04702c5a321d9cbf0279fba899b59e51bac72c85

exporter_context: 00
L: 32
exported_value:
25dfc004b0892be1888c3914977aa9c9bbaf2c7471708a49e1195af48a6f29ce

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
5a0131813abc9a522cad678eb6bafaabc43389934adb8097d23c5ff68059eb64
]]></artwork>
          </section>
        </section>
        <section anchor="authpsk-setup-information">
          <name>AuthPSK Setup Information</name>
          <artwork><![CDATA[
mode: 3
kem_id: 32
kdf_id: 1
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
4303619085a20ebcf18edd22782952b8a7161e1dbae6e46e143a52a96127cf84
pkEm:
820818d3c23993492cc5623ab437a48a0a7ca3e9639c140fe1e33811eb844b7c
skEm:
14de82a5897b613616a00c39b87429df35bc2b426bcfd73febcb45e903490768
ikmR:
4b16221f3b269a88e207270b5e1de28cb01f847841b344b8314d6a622fe5ee90
pkRm:
1d11a3cd247ae48e901939659bd4d79b6b959e1f3e7d66663fbc9412dd4e0976
skRm:
cb29a95649dc5656c2d054c1aa0d3df0493155e9d5da6d7e344ed8b6a64a9423
ikmS:
62f77dcf5df0dd7eac54eac9f654f426d4161ec850cc65c54f8b65d2e0b4e345
pkSm:
2bfb2eb18fcad1af0e4f99142a1c474ae74e21b9425fc5c589382c69b50cc57e
skSm:
fc1c87d2f3832adb178b431fce2ac77c7ca2fd680f3406c77b5ecdf818b119f4
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc:
820818d3c23993492cc5623ab437a48a0a7ca3e9639c140fe1e33811eb844b7c
shared_secret:
f9d0e870aba28d04709b2680cb8185466c6a6ff1d6e9d1091d5bf5e10ce3a577
key_schedule_context: 03e78d5cf6190d275863411ff5edd0dece5d39fa48e04e
ec1ed9b71be34729d18ccb6cffde367bb0565ba28bb02c90744a20f5ef37f3052352
6106f637abb05449
secret:
5f96c55e4108c6691829aaabaa7d539c0b41d7c72aae94ae289752f056b6cec4
key: 1364ead92c47aa7becfa95203037b19a
base_nonce: 99d8b5c54669807e9fc70df1
exporter_secret:
f048d55eacbf60f9c6154bd4021774d1075ebf963c6adc71fa846f183ab2dde6
]]></artwork>
          <section anchor="encryptions-3">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 99d8b5c54669807e9fc70df1
ct: a84c64df1e11d8fd11450039d4fe64ff0c8a99fca0bd72c2d4c3e0400bc14a40
f27e45e141a24001697737533e

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 99d8b5c54669807e9fc70df0
ct: 4d19303b848f424fc3c3beca249b2c6de0a34083b8e909b6aa4c3688505c05ff
e0c8f57a0a4c5ab9da127435d9

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 99d8b5c54669807e9fc70df3
ct: 0c085a365fbfa63409943b00a3127abce6e45991bc653f182a80120868fc507e
9e4d5e37bcc384fc8f14153b24

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 99d8b5c54669807e9fc70df5
ct: 000a3cd3a3523bf7d9796830b1cd987e841a8bae6561ebb6791a3f0e34e89a4f
b539faeee3428b8bbc082d2c1a

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 99d8b5c54669807e9fc70d0e
ct: 576d39dd2d4cc77d1a14a51d5c5f9d5e77586c3d8d2ab33bdec6379e28ce5c50
2f0b1cbd09047cf9eb9269bb52

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 99d8b5c54669807e9fc70cf1
ct: 13239bab72e25e9fd5bb09695d23c90a24595158b99127505c8a9ff9f127e0d6
57f71af59d67d4f4971da028f9
]]></artwork>
          </section>
          <section anchor="exported-values-3">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
08f7e20644bb9b8af54ad66d2067457c5f9fcb2a23d9f6cb4445c0797b330067

exporter_context: 00
L: 32
exported_value:
52e51ff7d436557ced5265ff8b94ce69cf7583f49cdb374e6aad801fc063b010

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
a30c20370c026bbea4dca51cb63761695132d342bae33a6a11527d3e7679436d
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="dhkemx25519-hkdf-sha256-hkdf-sha256-chacha20poly1305">
        <name>DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305</name>
        <section anchor="base-setup-information-1">
          <name>Base Setup Information</name>
          <artwork><![CDATA[
mode: 0
kem_id: 32
kdf_id: 1
aead_id: 3
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
909a9b35d3dc4713a5e72a4da274b55d3d3821a37e5d099e74a647db583a904b
pkEm:
1afa08d3dec047a643885163f1180476fa7ddb54c6a8029ea33f95796bf2ac4a
skEm:
f4ec9b33b792c372c1d2c2063507b684ef925b8c75a42dbcbf57d63ccd381600
ikmR:
1ac01f181fdf9f352797655161c58b75c656a6cc2716dcb66372da835542e1df
pkRm:
4310ee97d88cc1f088a5576c77ab0cf5c3ac797f3d95139c6c84b5429c59662a
skRm:
8057991eef8f1f1af18f4a9491d16a1ce333f695d4db8e38da75975c4478e0fb
enc:
1afa08d3dec047a643885163f1180476fa7ddb54c6a8029ea33f95796bf2ac4a
shared_secret:
0bbe78490412b4bbea4812666f7916932b828bba79942424abb65244930d69a7
key_schedule_context: 00431df6cd95e11ff49d7013563baf7f11588c75a6611e
e2a4404a49306ae4cfc5b69c5718a60cc5876c358d3f7fc31ddb598503f67be58ea1
e798c0bb19eb9796
secret:
5b9cd775e64b437a2335cf499361b2e0d5e444d5cb41a8a53336d8fe402282c6
key:
ad2744de8e17f4ebba575b3f5f5a8fa1f69c2a07f6e7500bc60ca6e3e3ec1c91
base_nonce: 5c4d98150661b848853b547f
exporter_secret:
a3b010d4994890e2c6968a36f64470d3c824c8f5029942feb11e7a74b2921922
]]></artwork>
          <section anchor="encryptions-4">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 5c4d98150661b848853b547f
ct: 1c5250d8034ec2b784ba2cfd69dbdb8af406cfe3ff938e131f0def8c8b60b4db
21993c62ce81883d2dd1b51a28

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 5c4d98150661b848853b547e
ct: 6b53c051e4199c518de79594e1c4ab18b96f081549d45ce015be002090bb119e
85285337cc95ba5f59992dc98c

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 5c4d98150661b848853b547d
ct: 71146bd6795ccc9c49ce25dda112a48f202ad220559502cef1f34271e0cb4b02
b4f10ecac6f48c32f878fae86b

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 5c4d98150661b848853b547b
ct: 63357a2aa291f5a4e5f27db6baa2af8cf77427c7c1a909e0b37214dd47db122b
b153495ff0b02e9e54a50dbe16

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 5c4d98150661b848853b5480
ct: 18ab939d63ddec9f6ac2b60d61d36a7375d2070c9b683861110757062c52b888
0a5f6b3936da9cd6c23ef2a95c

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 5c4d98150661b848853b557f
ct: 7a4a13e9ef23978e2c520fd4d2e757514ae160cd0cd05e556ef692370ca53076
214c0c40d4c728d6ed9e727a5b
]]></artwork>
          </section>
          <section anchor="exported-values-4">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
4bbd6243b8bb54cec311fac9df81841b6fd61f56538a775e7c80a9f40160606e

exporter_context: 00
L: 32
exported_value:
8c1df14732580e5501b00f82b10a1647b40713191b7c1240ac80e2b68808ba69

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
5acb09211139c43b3090489a9da433e8a30ee7188ba8b0a9a1ccf0c229283e53
]]></artwork>
          </section>
        </section>
        <section anchor="psk-setup-information-1">
          <name>PSK Setup Information</name>
          <artwork><![CDATA[
mode: 1
kem_id: 32
kdf_id: 1
aead_id: 3
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
35706a0b09fb26fb45c39c2f5079c709c7cf98e43afa973f14d88ece7e29c2e3
pkEm:
2261299c3f40a9afc133b969a97f05e95be2c514e54f3de26cbe5644ac735b04
skEm:
0c35fdf49df7aa01cd330049332c40411ebba36e0c718ebc3edf5845795f6321
ikmR:
26b923eade72941c8a85b09986cdfa3f1296852261adedc52d58d2930269812b
pkRm:
13640af826b722fc04feaa4de2f28fbd5ecc03623b317834e7ff4120dbe73062
skRm:
77d114e0212be51cb1d76fa99dd41cfd4d0166b08caa09074430a6c59ef17879
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc:
2261299c3f40a9afc133b969a97f05e95be2c514e54f3de26cbe5644ac735b04
shared_secret:
4be079c5e77779d0215b3f689595d59e3e9b0455d55662d1f3666ec606e50ea7
key_schedule_context: 016870c4c76ca38ae43efbec0f2377d109499d7ce73f4a
9e1ec37f21d3d063b97cb69c5718a60cc5876c358d3f7fc31ddb598503f67be58ea1
e798c0bb19eb9796
secret:
16974354c497c9bd24c000ceed693779b604f1944975b18c442d373663f4a8cc
key:
600d2fdb0313a7e5c86a9ce9221cd95bed069862421744cfb4ab9d7203a9c019
base_nonce: 112e0465562045b7368653e7
exporter_secret:
73b506dc8b6b4269027f80b0362def5cbb57ee50eed0c2873dac9181f453c5ac
]]></artwork>
          <section anchor="encryptions-5">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 112e0465562045b7368653e7
ct: 4a177f9c0d6f15cfdf533fb65bf84aecdc6ab16b8b85b4cf65a370e07fc1d78d
28fb073214525276f4a89608ff

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 112e0465562045b7368653e6
ct: 5c3cabae2f0b3e124d8d864c116fd8f20f3f56fda988c3573b40b09997fd6c76
9e77c8eda6cda4f947f5b704a8

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 112e0465562045b7368653e5
ct: 14958900b44bdae9cbe5a528bf933c5c990dbb8e282e6e495adf8205d19da9eb
270e3a6f1e0613ab7e757962a4

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 112e0465562045b7368653e3
ct: c2a7bc09ddb853cf2effb6e8d058e346f7fe0fb3476528c80db6b698415c5f8c
50b68a9a355609e96d2117f8d3

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 112e0465562045b736865318
ct: 2414d0788e4bc39a59a26d7bd5d78e111c317d44c37bd5a4c2a1235f2ddc2085
c487d406490e75210c958724a7

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 112e0465562045b7368652e7
ct: c567ae1c3f0f75abe1dd9e4532b422600ed4a6e5b9484dafb1e43ab9f5fd662b
28c00e2e81d3cde955dae7e218
]]></artwork>
          </section>
          <section anchor="exported-values-5">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
813c1bfc516c99076ae0f466671f0ba5ff244a41699f7b2417e4c59d46d39f40

exporter_context: 00
L: 32
exported_value:
2745cf3d5bb65c333658732954ee7af49eb895ce77f8022873a62a13c94cb4e1

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
ad40e3ae14f21c99bfdebc20ae14ab86f4ca2dc9a4799d200f43a25f99fa78ae
]]></artwork>
          </section>
        </section>
        <section anchor="auth-setup-information-1">
          <name>Auth Setup Information</name>
          <artwork><![CDATA[
mode: 2
kem_id: 32
kdf_id: 1
aead_id: 3
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
938d3daa5a8904540bc24f48ae90eed3f4f7f11839560597b55e7c9598c996c0
pkEm:
f7674cc8cd7baa5872d1f33dbaffe3314239f6197ddf5ded1746760bfc847e0e
skEm:
c94619e1af28971c8fa7957192b7e62a71ca2dcdde0a7cc4a8a9e741d600ab13
ikmR:
64835d5ee64aa7aad57c6f2e4f758f7696617f8829e70bc9ac7a5ef95d1c756c
pkRm:
1a478716d63cb2e16786ee93004486dc151e988b34b475043d3e0175bdb01c44
skRm:
3ca22a6d1cda1bb9480949ec5329d3bf0b080ca4c45879c95eddb55c70b80b82
ikmS:
9d8f94537d5a3ddef71234c0baedfad4ca6861634d0b94c3007fed557ad17df6
pkSm:
f0f4f9e96c54aeed3f323de8534fffd7e0577e4ce269896716bcb95643c8712b
skSm:
2def0cb58ffcf83d1062dd085c8aceca7f4c0c3fd05912d847b61f3e54121f05
enc:
f7674cc8cd7baa5872d1f33dbaffe3314239f6197ddf5ded1746760bfc847e0e
shared_secret:
d2d67828c8bc9fa661cf15a31b3ebf1febe0cafef7abfaaca580aaf6d471e3eb
key_schedule_context: 02431df6cd95e11ff49d7013563baf7f11588c75a6611e
e2a4404a49306ae4cfc5b69c5718a60cc5876c358d3f7fc31ddb598503f67be58ea1
e798c0bb19eb9796
secret:
3022dfc0a81d6e09a2e6daeeb605bb1ebb9ac49535540d9a4c6560064a6c6da8
key:
b071fd1136680600eb447a845a967d35e9db20749cdf9ce098bcc4deef4b1356
base_nonce: d20577dff16d7cea2c4bf780
exporter_secret:
be2d93b82071318cdb88510037cf504344151f2f9b9da8ab48974d40a2251dd7
]]></artwork>
          <section anchor="encryptions-6">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: d20577dff16d7cea2c4bf780
ct: ab1a13c9d4f01a87ec3440dbd756e2677bd2ecf9df0ce7ed73869b98e00c09be
111cb9fdf077347aeb88e61bdf

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: d20577dff16d7cea2c4bf781
ct: 3265c7807ffff7fdace21659a2c6ccffee52a26d270c76468ed74202a65478bf
aedfff9c2b7634e24f10b71016

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: d20577dff16d7cea2c4bf782
ct: 3aadee86ad2a05081ea860033a9d09dbccb4acac2ded0891da40f51d4df19925
f7a767b076a5cbc9355c8fd35e

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: d20577dff16d7cea2c4bf784
ct: 502ecccd5c2be3506a081809cc58b43b94f77cbe37b8b31712d9e21c9e61aa69
46a8e922f54eae630f88eb8033

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: d20577dff16d7cea2c4bf77f
ct: 652e597ba20f3d9241cda61f33937298b1169e6adf72974bbe454297502eb4be
132e1c5064702fc165c2ddbde8

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: d20577dff16d7cea2c4bf680
ct: 3be14e8b3bbd1028cf2b7d0a691dbbeff71321e7dec92d3c2cfb30a0994ab246
af76168480285a60037b4ba13a
]]></artwork>
          </section>
          <section anchor="exported-values-6">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
070cffafd89b67b7f0eeb800235303a223e6ff9d1e774dce8eac585c8688c872

exporter_context: 00
L: 32
exported_value:
2852e728568d40ddb0edde284d36a4359c56558bb2fb8837cd3d92e46a3a14a8

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
1df39dc5dd60edcbf5f9ae804e15ada66e885b28ed7929116f768369a3f950ee
]]></artwork>
          </section>
        </section>
        <section anchor="authpsk-setup-information-1">
          <name>AuthPSK Setup Information</name>
          <artwork><![CDATA[
mode: 3
kem_id: 32
kdf_id: 1
aead_id: 3
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
49d6eac8c6c558c953a0a252929a818745bb08cd3d29e15f9f5db5eb2e7d4b84
pkEm:
656a2e00dc9990fd189e6e473459392df556e9a2758754a09db3f51179a3fc02
skEm:
5e6dd73e82b856339572b7245d3cbb073a7561c0bee52873490e305cbb710410
ikmR:
f3304ddcf15848488271f12b75ecaf72301faabf6ad283654a14c398832eb184
pkRm:
a5099431c35c491ec62ca91df1525d6349cb8aa170c51f9581f8627be6334851
skRm:
7b36a42822e75bf3362dfabbe474b3016236408becb83b859a6909e22803cb0c
ikmS:
20ade1d5203de1aadfb261c4700b6432e260d0d317be6ebbb8d7fffb1f86ad9d
pkSm:
3ac5bd4dd66ff9f2740bef0d6ccb66daa77bff7849d7895182b07fb74d087c45
skSm:
90761c5b0a7ef0985ed66687ad708b921d9803d51637c8d1cb72d03ed0f64418
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc:
656a2e00dc9990fd189e6e473459392df556e9a2758754a09db3f51179a3fc02
shared_secret:
86a6c0ed17714f11d2951747e660857a5fd7616c933ef03207808b7a7123fe67
key_schedule_context: 036870c4c76ca38ae43efbec0f2377d109499d7ce73f4a
9e1ec37f21d3d063b97cb69c5718a60cc5876c358d3f7fc31ddb598503f67be58ea1
e798c0bb19eb9796
secret:
22670daee17530c9564001d0a7e740e80d0bcc7ae15349f472fcc9e057cbc259
key:
49c7e6d7d2d257aded2a746fe6a9bf12d4de8007c4862b1fdffe8c35fb65054c
base_nonce: abac79931e8c1bcb8a23960a
exporter_secret:
7c6cc1bb98993cd93e2599322247a58fd41fdecd3db895fb4c5fd8d6bbe606b5
]]></artwork>
          <section anchor="encryptions-7">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: abac79931e8c1bcb8a23960a
ct: 9aa52e29274fc6172e38a4461361d2342585d3aeec67fb3b721ecd63f059577c
7fe886be0ede01456ebc67d597

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: abac79931e8c1bcb8a23960b
ct: 59460bacdbe7a920ef2806a74937d5a691d6d5062d7daafcad7db7e4d8c649ad
ffe575c1889c5c2e3a49af8e3e

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: abac79931e8c1bcb8a239608
ct: 5688ff6a03ba26ae936044a5c800f286fb5d1eccdd2a0f268f6ff9773b511693
18d1a1466bb36263415071db00

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: abac79931e8c1bcb8a23960e
ct: d936b7a01f5c7dc4c3dc04e322cc694684ee18dd71719196874e5235aed3cfb0
6cadcd3bc7da0877488d7c551d

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: abac79931e8c1bcb8a2396f5
ct: 4d4c462f7b9b637eaf1f4e15e325b7bc629c0af6e3073422c86064cc3c98cff8
7300f054fd56dd57dc34358beb

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: abac79931e8c1bcb8a23970a
ct: 9b7f84224922d2a9edd7b2c2057f3bcf3a547f17570575e626202e593bfdd99e
9878a1af9e41ded58c7fb77d2f
]]></artwork>
          </section>
          <section anchor="exported-values-7">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
c23ebd4e7a0ad06a5dddf779f65004ce9481069ce0f0e6dd51a04539ddcbd5cd

exporter_context: 00
L: 32
exported_value:
ed7ff5ca40a3d84561067ebc8e01702bc36cf1eb99d42a92004642b9dfaadd37

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
d3bae066aa8da27d527d85c040f7dd6ccb60221c902ee36a82f70bcd62a60ee4
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="dhkemp-256-hkdf-sha256-hkdf-sha256-aes-128-gcm">
        <name>DHKEM(P-256, HKDF-SHA256), HKDF-SHA256, AES-128-GCM</name>
        <section anchor="base-setup-information-2">
          <name>Base Setup Information</name>
          <artwork><![CDATA[
mode: 0
kem_id: 16
kdf_id: 1
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
4270e54ffd08d79d5928020af4686d8f6b7d35dbe470265f1f5aa22816ce860e
pkEm: 04a92719c6195d5085104f469a8b9814d5838ff72b60501e2c4466e5e67b32
5ac98536d7b61a1af4b78e5b7f951c0900be863c403ce65c9bfcb9382657222d18c4
skEm:
4995788ef4b9d6132b249ce59a77281493eb39af373d236a1fe415cb0c2d7beb
ikmR:
668b37171f1072f3cf12ea8a236a45df23fc13b82af3609ad1e354f6ef817550
pkRm: 04fe8c19ce0905191ebc298a9245792531f26f0cece2460639e8bc39cb7f70
6a826a779b4cf969b8a0e539c7f62fb3d30ad6aa8f80e30f1d128aafd68a2ce72ea0
skRm:
f3ce7fdae57e1a310d87f1ebbde6f328be0a99cdbcadf4d6589cf29de4b8ffd2
enc: 04a92719c6195d5085104f469a8b9814d5838ff72b60501e2c4466e5e67b325
ac98536d7b61a1af4b78e5b7f951c0900be863c403ce65c9bfcb9382657222d18c4
shared_secret:
c0d26aeab536609a572b07695d933b589dcf363ff9d93c93adea537aeabb8cb8
key_schedule_context: 00b88d4e6d91759e65e87c470e8b9141113e9ad5f0c8ce
efc1e088c82e6980500798e486f9c9c09c9b5c753ac72d6005de254c607d1b534ed1
1d493ae1c1d9ac85
secret:
2eb7b6bf138f6b5aff857414a058a3f1750054a9ba1f72c2cf0684a6f20b10e1
key: 868c066ef58aae6dc589b6cfdd18f97e
base_nonce: 4e0bc5018beba4bf004cca59
exporter_secret:
14ad94af484a7ad3ef40e9f3be99ecc6fa9036df9d4920548424df127ee0d99f
]]></artwork>
          <section anchor="encryptions-8">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 4e0bc5018beba4bf004cca59
ct: 5ad590bb8baa577f8619db35a36311226a896e7342a6d836d8b7bcd2f20b6c7f
9076ac232e3ab2523f39513434

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 4e0bc5018beba4bf004cca58
ct: fa6f037b47fc21826b610172ca9637e82d6e5801eb31cbd3748271affd4ecb06
646e0329cbdf3c3cd655b28e82

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 4e0bc5018beba4bf004cca5b
ct: 895cabfac50ce6c6eb02ffe6c048bf53b7f7be9a91fc559402cbc5b8dcaeb52b
2ccc93e466c28fb55fed7a7fec

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 4e0bc5018beba4bf004cca5d
ct: 8787491ee8df99bc99a246c4b3216d3d57ab5076e18fa27133f520703bc70ec9
99dd36ce042e44f0c3169a6a8f

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 4e0bc5018beba4bf004ccaa6
ct: 2ad71c85bf3f45c6eca301426289854b31448bcf8a8ccb1deef3ebd87f60848a
a53c538c30a4dac71d619ee2cd

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 4e0bc5018beba4bf004ccb59
ct: 10f179686aa2caec1758c8e554513f16472bd0a11e2a907dde0b212cbe87d74f
367f8ffe5e41cd3e9962a6afb2
]]></artwork>
          </section>
          <section anchor="exported-values-8">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
5e9bc3d236e1911d95e65b576a8a86d478fb827e8bdfe77b741b289890490d4d

exporter_context: 00
L: 32
exported_value:
6cff87658931bda83dc857e6353efe4987a201b849658d9b047aab4cf216e796

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
d8f1ea7942adbba7412c6d431c62d01371ea476b823eb697e1f6e6cae1dab85a
]]></artwork>
          </section>
        </section>
        <section anchor="psk-setup-information-2">
          <name>PSK Setup Information</name>
          <artwork><![CDATA[
mode: 1
kem_id: 16
kdf_id: 1
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
2afa611d8b1a7b321c761b483b6a053579afa4f767450d3ad0f84a39fda587a6
pkEm: 04305d35563527bce037773d79a13deabed0e8e7cde61eecee403496959e89
e4d0ca701726696d1485137ccb5341b3c1c7aaee90a4a02449725e744b1193b53b5f
skEm:
57427244f6cc016cddf1c19c8973b4060aa13579b4c067fd5d93a5d74e32a90f
ikmR:
d42ef874c1913d9568c9405407c805baddaffd0898a00f1e84e154fa787b2429
pkRm: 040d97419ae99f13007a93996648b2674e5260a8ebd2b822e84899cd52d874
46ea394ca76223b76639eccdf00e1967db10ade37db4e7db476261fcc8df97c5ffd1
skRm:
438d8bcef33b89e0e9ae5eb0957c353c25a94584b0dd59c991372a75b43cb661
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc: 04305d35563527bce037773d79a13deabed0e8e7cde61eecee403496959e89e
4d0ca701726696d1485137ccb5341b3c1c7aaee90a4a02449725e744b1193b53b5f
shared_secret:
2e783ad86a1beae03b5749e0f3f5e9bb19cb7eb382f2fb2dd64c99f15ae0661b
key_schedule_context: 01b873cdf2dff4c1434988053b7a775e980dd2039ea24f
950b26b056ccedcb933198e486f9c9c09c9b5c753ac72d6005de254c607d1b534ed1
1d493ae1c1d9ac85
secret:
f2f534e55931c62eeb2188c1f53450354a725183937e68c85e68d6b267504d26
key: 55d9eb9d26911d4c514a990fa8d57048
base_nonce: b595dc6b2d7e2ed23af529b1
exporter_secret:
895a723a1eab809804973a53c0ee18ece29b25a7555a4808277ad2651d66d705
]]></artwork>
          <section anchor="encryptions-9">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: b595dc6b2d7e2ed23af529b1
ct: 90c4deb5b75318530194e4bb62f890b019b1397bbf9d0d6eb918890e1fb2be1a
c2603193b60a49c2126b75d0eb

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: b595dc6b2d7e2ed23af529b0
ct: 9e223384a3620f4a75b5a52f546b7262d8826dea18db5a365feb8b997180b22d
72dc1287f7089a1073a7102c27

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: b595dc6b2d7e2ed23af529b3
ct: adf9f6000773035023be7d415e13f84c1cb32a24339a32eb81df02be9ddc6abc
880dd81cceb7c1d0c7781465b2

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: b595dc6b2d7e2ed23af529b5
ct: 1f4cc9b7013d65511b1f69c050b7bd8bbd5a5c16ece82b238fec4f30ba2400e7
ca8ee482ac5253cffb5c3dc577

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: b595dc6b2d7e2ed23af5294e
ct: cdc541253111ed7a424eea5134dc14fc5e8293ab3b537668b8656789628e4589
4e5bb873c968e3b7cdcbb654a4

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: b595dc6b2d7e2ed23af528b1
ct: faf985208858b1253b97b60aecd28bc18737b58d1242370e7703ec33b73a4c31
a1afee300e349adef9015bbbfd
]]></artwork>
          </section>
          <section anchor="exported-values-9">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
a115a59bf4dd8dc49332d6a0093af8efca1bcbfd3627d850173f5c4a55d0c185

exporter_context: 00
L: 32
exported_value:
4517eaede0669b16aac7c92d5762dd459c301fa10e02237cd5aeb9be969430c4

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
164e02144d44b607a7722e58b0f4156e67c0c2874d74cf71da6ca48a4cbdc5e0
]]></artwork>
          </section>
        </section>
        <section anchor="auth-setup-information-2">
          <name>Auth Setup Information</name>
          <artwork><![CDATA[
mode: 2
kem_id: 16
kdf_id: 1
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
798d82a8d9ea19dbc7f2c6dfa54e8a6706f7cdc119db0813dacf8440ab37c857
pkEm: 042224f3ea800f7ec55c03f29fc9865f6ee27004f818fcbdc6dc68932c1e52
e15b79e264a98f2c535ef06745f3d308624414153b22c7332bc1e691cb4af4d53454
skEm:
6b8de0873aed0c1b2d09b8c7ed54cbf24fdf1dfc7a47fa501f918810642d7b91
ikmR:
7bc93bde8890d1fb55220e7f3b0c107ae7e6eda35ca4040bb6651284bf0747ee
pkRm: 04423e363e1cd54ce7b7573110ac121399acbc9ed815fae03b72ffbd4c18b0
1836835c5a09513f28fc971b7266cfde2e96afe84bb0f266920e82c4f53b36e1a78d
skRm:
d929ab4be2e59f6954d6bedd93e638f02d4046cef21115b00cdda2acb2a4440e
ikmS:
874baa0dcf93595a24a45a7f042e0d22d368747daaa7e19f80a802af19204ba8
pkSm: 04a817a0902bf28e036d66add5d544cc3a0457eab150f104285df1e293b5c1
0eef8651213e43d9cd9086c80b309df22cf37609f58c1127f7607e85f210b2804f73
skSm:
1120ac99fb1fccc1e8230502d245719d1b217fe20505c7648795139d177f0de9
enc: 042224f3ea800f7ec55c03f29fc9865f6ee27004f818fcbdc6dc68932c1e52e
15b79e264a98f2c535ef06745f3d308624414153b22c7332bc1e691cb4af4d53454
shared_secret:
d4aea336439aadf68f9348880aa358086f1480e7c167b6ef15453ba69b94b44f
key_schedule_context: 02b88d4e6d91759e65e87c470e8b9141113e9ad5f0c8ce
efc1e088c82e6980500798e486f9c9c09c9b5c753ac72d6005de254c607d1b534ed1
1d493ae1c1d9ac85
secret:
fd0a93c7c6f6b1b0dd6a822d7b16f6c61c83d98ad88426df4613c3581a2319f1
key: 19aa8472b3fdc530392b0e54ca17c0f5
base_nonce: b390052d26b67a5b8a8fcaa4
exporter_secret:
f152759972660eb0e1db880835abd5de1c39c8e9cd269f6f082ed80e28acb164
]]></artwork>
          <section anchor="encryptions-10">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: b390052d26b67a5b8a8fcaa4
ct: 82ffc8c44760db691a07c5627e5fc2c08e7a86979ee79b494a17cc3405446ac2
bdb8f265db4a099ed3289ffe19

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: b390052d26b67a5b8a8fcaa5
ct: b0a705a54532c7b4f5907de51c13dffe1e08d55ee9ba59686114b05945494d96
725b239468f1229e3966aa1250

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: b390052d26b67a5b8a8fcaa6
ct: 8dc805680e3271a801790833ed74473710157645584f06d1b53ad439078d880b
23e25256663178271c80ee8b7c

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: b390052d26b67a5b8a8fcaa0
ct: 04c8f7aae1584b61aa5816382cb0b834a5d744f420e6dffb5ddcec633a21b8b3
472820930c1ea9258b035937a2

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: b390052d26b67a5b8a8fca5b
ct: 4a319462eaedee37248b4d985f64f4f863d31913fe9e30b6e13136053b69fe5d
70853c84c60a84bb5495d5a678

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: b390052d26b67a5b8a8fcba4
ct: 28e874512f8940fafc7d06135e7589f6b4198bc0f3a1c64702e72c9e6abaf9f0
5cb0d2f11b03a517898815c934
]]></artwork>
          </section>
          <section anchor="exported-values-10">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
837e49c3ff629250c8d80d3c3fb957725ed481e59e2feb57afd9fe9a8c7c4497

exporter_context: 00
L: 32
exported_value:
594213f9018d614b82007a7021c3135bda7b380da4acd9ab27165c508640dbda

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
14fe634f95ca0d86e15247cca7de7ba9b73c9b9deb6437e1c832daf7291b79d5
]]></artwork>
          </section>
        </section>
        <section anchor="authpsk-setup-information-2">
          <name>AuthPSK Setup Information</name>
          <artwork><![CDATA[
mode: 3
kem_id: 16
kdf_id: 1
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
3c1fceb477ec954c8d58ef3249e4bb4c38241b5925b95f7486e4d9f1d0d35fbb
pkEm: 046a1de3fc26a3d43f4e4ba97dbe24f7e99181136129c48fbe872d4743e2b1
31357ed4f29a7b317dc22509c7b00991ae990bf65f8b236700c82ab7c11a84511401
skEm:
36f771e411cf9cf72f0701ef2b991ce9743645b472e835fe234fb4d6eb2ff5a0
ikmR:
abcc2da5b3fa81d8aabd91f7f800a8ccf60ec37b1b585a5d1d1ac77f258b6cca
pkRm: 04d824d7e897897c172ac8a9e862e4bd820133b8d090a9b188b8233a64dfbc
5f725aa0aa52c8462ab7c9188f1c4872f0c99087a867e8a773a13df48a627058e1b3
skRm:
bdf4e2e587afdf0930644a0c45053889ebcadeca662d7c755a353d5b4e2a8394
ikmS:
6262031f040a9db853edd6f91d2272596eabbc78a2ed2bd643f770ecd0f19b82
pkSm: 049f158c750e55d8d5ad13ede66cf6e79801634b7acadcad72044eac2ae1d0
480069133d6488bf73863fa988c4ba8bde1c2e948b761274802b4d8012af4f13af9e
skSm:
b0ed8721db6185435898650f7a677affce925aba7975a582653c4cb13c72d240
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc: 046a1de3fc26a3d43f4e4ba97dbe24f7e99181136129c48fbe872d4743e2b13
1357ed4f29a7b317dc22509c7b00991ae990bf65f8b236700c82ab7c11a84511401
shared_secret:
d4c27698391db126f1612d9e91a767f10b9b19aa17e1695549203f0df7d9aebe
key_schedule_context: 03b873cdf2dff4c1434988053b7a775e980dd2039ea24f
950b26b056ccedcb933198e486f9c9c09c9b5c753ac72d6005de254c607d1b534ed1
1d493ae1c1d9ac85
secret:
3bf9d4c7955da2740414e73081fa74d6f6f2b4b9645d0685219813ce99a2f270
key: 4d567121d67fae1227d90e11585988fb
base_nonce: 67c9d05330ca21e5116ecda6
exporter_secret:
3f479020ae186788e4dfd4a42a21d24f3faabb224dd4f91c2b2e5e9524ca27b2
]]></artwork>
          <section anchor="encryptions-11">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 67c9d05330ca21e5116ecda6
ct: b9f36d58d9eb101629a3e5a7b63d2ee4af42b3644209ab37e0a272d44365407d
b8e655c72e4fa46f4ff81b9246

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 67c9d05330ca21e5116ecda7
ct: 51788c4e5d56276771032749d015d3eea651af0c7bb8e3da669effffed299ea1
f641df621af65579c10fc09736

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 67c9d05330ca21e5116ecda4
ct: 3b5a2be002e7b29927f06442947e1cf709b9f8508b03823127387223d7127034
71c266efc355f1bc2036f3027c

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 67c9d05330ca21e5116ecda2
ct: 8ddbf1242fe5c7d61e1675496f3bfdb4d90205b3dfbc1b12aab41395d71a8211
8e095c484103107cf4face5123

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 67c9d05330ca21e5116ecd59
ct: 6de25ceadeaec572fbaa25eda2558b73c383fe55106abaec24d518ef6724a7ce
698f83ecdc53e640fe214d2f42

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 67c9d05330ca21e5116ecca6
ct: f380e19d291e12c5e378b51feb5cd50f6d00df6cb2af8393794c4df342126c2e
29633fe7e8ce49587531affd4d
]]></artwork>
          </section>
          <section anchor="exported-values-11">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
595ce0eff405d4b3bb1d08308d70a4e77226ce11766e0a94c4fdb5d90025c978

exporter_context: 00
L: 32
exported_value:
110472ee0ae328f57ef7332a9886a1992d2c45b9b8d5abc9424ff68630f7d38d

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
18ee4d001a9d83a4c67e76f88dd747766576cac438723bad0700a910a4d717e6
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="dhkemp-256-hkdf-sha256-hkdf-sha512-aes-128-gcm">
        <name>DHKEM(P-256, HKDF-SHA256), HKDF-SHA512, AES-128-GCM</name>
        <section anchor="base-setup-information-3">
          <name>Base Setup Information</name>
          <artwork><![CDATA[
mode: 0
kem_id: 16
kdf_id: 3
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
4ab11a9dd78c39668f7038f921ffc0993b368171d3ddde8031501ee1e08c4c9a
pkEm: 0493ed86735bdfb978cc055c98b45695ad7ce61ce748f4dd63c525a3b8d53a
15565c6897888070070c1579db1f86aaa56deb8297e64db7e8924e72866f9a472580
skEm:
2292bf14bb6e15b8c81a0f45b7a6e93e32d830e48cca702e0affcfb4d07e1b5c
ikmR:
ea9ff7cc5b2705b188841c7ace169290ff312a9cb31467784ca92d7a2e6e1be8
pkRm: 04085aa5b665dc3826f9650ccbcc471be268c8ada866422f739e2d531d4a88
18a9466bc6b449357096232919ec4fe9070ccbac4aac30f4a1a53efcf7af90610edd
skRm:
3ac8530ad1b01885960fab38cf3cdc4f7aef121eaa239f222623614b4079fb38
enc: 0493ed86735bdfb978cc055c98b45695ad7ce61ce748f4dd63c525a3b8d53a1
5565c6897888070070c1579db1f86aaa56deb8297e64db7e8924e72866f9a472580
shared_secret:
02f584736390fc93f5b4ad039826a3fa08e9911bd1215a3db8e8791ba533cafd
key_schedule_context: 005b8a3617af7789ee716e7911c7e77f84cdc4cc46e60f
b7e19e4059f9aeadc00585e26874d1ddde76e551a7679cd47168c466f6e1f705cc93
74c192778a34fcd5ca221d77e229a9d11b654de7942d685069c633b2362ce3b3d8ea
4891c9a2a87a4eb7cdb289ba5e2ecbf8cd2c8498bb4a383dc021454d70d46fcbbad1
252ef4f9
secret: 0c7acdab61693f936c4c1256c78e7be30eebfe466812f9cc49f0b58dc970
328dfc03ea359be0250a471b1635a193d2dfa8cb23c90aa2e25025b892a725353eeb
key: 090ca96e5f8aa02b69fac360da50ddf9
base_nonce: 9c995e621bf9a20c5ca45546
exporter_secret: 4a7abb2ac43e6553f129b2c5750a7e82d149a76ed56dc342d7b
ca61e26d494f4855dff0d0165f27ce57756f7f16baca006539bb8e4518987ba61048
0ac03efa8
]]></artwork>
          <section anchor="encryptions-12">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 9c995e621bf9a20c5ca45546
ct: d3cf4984931484a080f74c1bb2a6782700dc1fef9abe8442e44a6f09044c8890
7200b332003543754eb51917ba

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 9c995e621bf9a20c5ca45547
ct: d14414555a47269dfead9fbf26abb303365e40709a4ed16eaefe1f2070f1ddeb
1bdd94d9e41186f124e0acc62d

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 9c995e621bf9a20c5ca45544
ct: 9bba136cade5c4069707ba91a61932e2cbedda2d9c7bdc33515aa01dd0e0f7e9
d3579bf4016dec37da4aafa800

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 9c995e621bf9a20c5ca45542
ct: a531c0655342be013bf32112951f8df1da643602f1866749519f5dcb09cc6843
2579de305a77e6864e862a7600

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 9c995e621bf9a20c5ca455b9
ct: be5da649469efbad0fb950366a82a73fefeda5f652ec7d3731fac6c4ffa21a70
04d2ab8a04e13621bd3629547d

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 9c995e621bf9a20c5ca45446
ct: 62092672f5328a0dde095e57435edf7457ace60b26ee44c9291110ec135cb0e1
4b85594e4fea11247d937deb62
]]></artwork>
          </section>
          <section anchor="exported-values-12">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
a32186b8946f61aeead1c093fe614945f85833b165b28c46bf271abf16b57208

exporter_context: 00
L: 32
exported_value:
84998b304a0ea2f11809398755f0abd5f9d2c141d1822def79dd15c194803c2a

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
93fb9411430b2cfa2cf0bed448c46922a5be9beff20e2e621df7e4655852edbc
]]></artwork>
          </section>
        </section>
        <section anchor="psk-setup-information-3">
          <name>PSK Setup Information</name>
          <artwork><![CDATA[
mode: 1
kem_id: 16
kdf_id: 3
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
c11d883d6587f911d2ddbc2a0859d5b42fb13bf2c8e89ef408a25564893856f5
pkEm: 04a307934180ad5287f95525fe5bc6244285d7273c15e061f0f2efb211c350
57f3079f6e0abae200992610b25f48b63aacfcb669106ddee8aa023feed301901371
skEm:
a5901ff7d6931959c2755382ea40a4869b1dec3694ed3b009dda2d77dd488f18
ikmR:
75bfc2a3a3541170a54c0b06444e358d0ee2b4fb78a401fd399a47a33723b700
pkRm: 043f5266fba0742db649e1043102b8a5afd114465156719cea90373229aabd
d84d7f45dabfc1f55664b888a7e86d594853a6cccdc9b189b57839cbbe3b90b55873
skRm:
bc6f0b5e22429e5ff47d5969003f3cae0f4fec50e23602e880038364f33b8522
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc: 04a307934180ad5287f95525fe5bc6244285d7273c15e061f0f2efb211c3505
7f3079f6e0abae200992610b25f48b63aacfcb669106ddee8aa023feed301901371
shared_secret:
2912aacc6eaebd71ff715ea50f6ef3a6637856b2a4c58ea61e0c3fc159e3bc16
key_schedule_context: 01713f73042575cebfd132f0cc4338523f8eae95c80a74
9f7cf3eb9436ff1c612ca62c37df27ca46d2cc162445a92c5f5fdc57bcde129ca7b1
f284b0c12297c037ca221d77e229a9d11b654de7942d685069c633b2362ce3b3d8ea
4891c9a2a87a4eb7cdb289ba5e2ecbf8cd2c8498bb4a383dc021454d70d46fcbbad1
252ef4f9
secret: ff2051d2128d5f3078de867143e076262ce1d0aecafc3fff3d607f1eaff0
5345c7d5ffcb3202cdecb3d1a2f7da20592a237747b6e855390cbe2109d3e6ac70c2
key: 0b910ba8d9cfa17e5f50c211cb32839a
base_nonce: 0c29e714eb52de5b7415a1b7
exporter_secret: 50c0a182b6f94b4c0bd955c4aa20df01f282cc12c43065a0812
fe4d4352790171ed2b2c4756ad7f5a730ba336c8f1edd0089d8331192058c385bae3
9c7cc8b57
]]></artwork>
          <section anchor="encryptions-13">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 0c29e714eb52de5b7415a1b7
ct: 57624b6e320d4aba0afd11f548780772932f502e2ba2a8068676b2a0d3b5129a
45b9faa88de39e8306da41d4cc

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 0c29e714eb52de5b7415a1b6
ct: 159d6b4c24bacaf2f5049b7863536d8f3ffede76302dace42080820fa51925d4
e1c72a64f87b14291a3057e00a

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 0c29e714eb52de5b7415a1b5
ct: bd24140859c99bf0055075e9c460032581dd1726d52cf980d308e9b20083ca62
e700b17892bcf7fa82bac751d0

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 0c29e714eb52de5b7415a1b3
ct: 93ddd55f82e9aaaa3cfc06840575f09d80160b20538125c2549932977d1238dd
e8126a4a91118faf8632f62cb8

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 0c29e714eb52de5b7415a148
ct: 377a98a3c34bf716581b05a6b3fdc257f245856384d5f2241c8840571c52f5c8
5c21138a4a81655edab8fe227d

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 0c29e714eb52de5b7415a0b7
ct: cc161f5a179831d456d119d2f2c19a6817289c75d1c61cd37ac8a450acd9efba
02e0ac00d128c17855931ff69a
]]></artwork>
          </section>
          <section anchor="exported-values-13">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
8158bea21a6700d37022bb7802866edca30ebf2078273757b656ef7fc2e428cf

exporter_context: 00
L: 32
exported_value:
6a348ba6e0e72bb3ef22479214a139ef8dac57be34509a61087a12565473da8d

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
2f6d4f7a18ec48de1ef4469f596aada4afdf6d79b037ed3c07e0118f8723bffc
]]></artwork>
          </section>
        </section>
        <section anchor="auth-setup-information-3">
          <name>Auth Setup Information</name>
          <artwork><![CDATA[
mode: 2
kem_id: 16
kdf_id: 3
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
6bb031aa9197562da0b44e737db2b9e61f6c3ea1138c37de28fc37ac29bc7350
pkEm: 04fec59fa9f76f5d0f6c1660bb179cb314ed97953c53a60ab38f8e6ace60fd
59178084d0dd66e0f79172992d4ddb2e91172ce24949bcebfff158dcc417f2c6e9c6
skEm:
93cddd5288e7ef4884c8fe321d075df01501b993ff49ffab8184116f39b3c655
ikmR:
649a3f92edbb7a2516a0ade0b7dccc58a37240c4ba06f9726a952227b4adf6ff
pkRm: 04378bad519aab406e04d0e5608bcca809c02d6afd2272d4dd03e9357bd0ee
e8adf84c8deba3155c9cf9506d1d4c8bfefe3cf033a75716cc3cc07295100ec96276
skRm:
1ea4484be482bf25fdb2ed39e6a02ed9156b3e57dfb18dff82e4a048de990236
ikmS:
4d79b8691aab55a7265e8490a04bb3860ed64dece90953ad0dc43a6ea59b4bf2
pkSm: 0404d3c1f9fca22eb4a6d326125f0814c35593b1da8ea0d11a640730b215a2
59b9b98a34ad17e21617d19fe1d4fa39a4828bfdb306b729ec51c543caca3b2d9529
skSm:
02b266d66919f7b08f42ae0e7d97af4ca98b2dae3043bb7e0740ccadc1957579
enc: 04fec59fa9f76f5d0f6c1660bb179cb314ed97953c53a60ab38f8e6ace60fd5
9178084d0dd66e0f79172992d4ddb2e91172ce24949bcebfff158dcc417f2c6e9c6
shared_secret:
1ed49f6d7ada333d171cd63861a1cb700a1ec4236755a9cd5f9f8f67a2f8e7b3
key_schedule_context: 025b8a3617af7789ee716e7911c7e77f84cdc4cc46e60f
b7e19e4059f9aeadc00585e26874d1ddde76e551a7679cd47168c466f6e1f705cc93
74c192778a34fcd5ca221d77e229a9d11b654de7942d685069c633b2362ce3b3d8ea
4891c9a2a87a4eb7cdb289ba5e2ecbf8cd2c8498bb4a383dc021454d70d46fcbbad1
252ef4f9
secret: 9c846ba81ddbbd57bc26d99da6cf7ab956bb735ecd47fe21ed14241c7079
1b7484c1d06663d21a5d97bf1be70d56ab727f650c4f859c5ed3f71f8928b3c082dd
key: 9d4b1c83129f3de6db95faf3d539dcf1
base_nonce: ea4fd7a485ee5f1f4b62c1b7
exporter_secret: ca2410672369aae1afd6c2639f4fe34ca36d35410c090608d29
24f60def17f910d7928575434d7f991b1f19d3e8358b8278ff59ced0d5eed4774cec
72e12766e
]]></artwork>
          <section anchor="encryptions-14">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: ea4fd7a485ee5f1f4b62c1b7
ct: 2480179d880b5f458154b8bfe3c7e8732332de84aabf06fc440f6b31f169e154
157fa9eb44f2fa4d7b38a9236e

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: ea4fd7a485ee5f1f4b62c1b6
ct: 10cd81e3a816d29942b602a92884348171a31cbd0f042c3057c65cd93c540943
a5b05115bd520c09281061935b

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: ea4fd7a485ee5f1f4b62c1b5
ct: 920743a88d8cf6a09e1a3098e8be8edd09db136e9d543f215924043af8c7410f
68ce6aa64fd2b1a176e7f6b3fd

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: ea4fd7a485ee5f1f4b62c1b3
ct: 6b11380fcc708fc8589effb5b5e0394cbd441fa5e240b5500522150ca8265d65
ff55479405af936e2349119dcd

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: ea4fd7a485ee5f1f4b62c148
ct: d084eca50e7554bb97ba34c4482dfe32c9a2b7f3ab009c2d1b68ecbf97bee2d2
8cd94b6c829b96361f2701772d

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: ea4fd7a485ee5f1f4b62c0b7
ct: 247da592cc4ce834a94de2c79f5730ee49342470a021e4a4bc2bb77c53b17413
e94d94f57b4fdaedcf97cfe7b1
]]></artwork>
          </section>
          <section anchor="exported-values-14">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
f03fbc82f321a0ab4840e487cb75d07aafd8e6f68485e4f7ff72b2f55ff24ad6

exporter_context: 00
L: 32
exported_value:
1ce0cadec0a8f060f4b5070c8f8888dcdfefc2e35819df0cd559928a11ff0891

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
70c405c707102fd0041ea716090753be47d68d238b111d542846bd0d84ba907c
]]></artwork>
          </section>
        </section>
        <section anchor="authpsk-setup-information-3">
          <name>AuthPSK Setup Information</name>
          <artwork><![CDATA[
mode: 3
kem_id: 16
kdf_id: 3
aead_id: 1
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
37ae06a521cd555648c928d7af58ad2aa4a85e34b8cabd069e94ad55ab872cc8
pkEm: 04801740f4b1b35823f7fb2930eac2efc8c4893f34ba111c0bb976e3c7d5dc
0aef5a7ef0bf4057949a140285f774f1efc53b3860936b92279a11b68395d898d138
skEm:
778f2254ae5d661d5c7fca8c4a7495a25bd13f26258e459159f3899df0de76c1
ikmR:
7466024b7e2d2366c3914d7833718f13afb9e3e45bcfbb510594d614ddd9b4e7
pkRm: 04a4ca7af2fc2cce48edbf2f1700983e927743a4e85bb5035ad562043e25d9
a111cbf6f7385fac55edc5c9d2ca6ed351a5643de95c36748e11dbec98730f4d43e9
skRm:
00510a70fde67af487c093234fc4215c1cdec09579c4b30cc8e48cb530414d0e
ikmS:
ee27aaf99bf5cd8398e9de88ac09a82ac22cdb8d0905ab05c0f5fa12ba1709f3
pkSm: 04b59a4157a9720eb749c95f842a5e3e8acdccbe834426d405509ac3191e23
f2165b5bb1f07a6240dd567703ae75e13182ee0f69fc102145cdb5abf681ff126d60
skSm:
d743b20821e6326f7a26684a4beed7088b35e392114480ca9f6c325079dcf10b
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc: 04801740f4b1b35823f7fb2930eac2efc8c4893f34ba111c0bb976e3c7d5dc0
aef5a7ef0bf4057949a140285f774f1efc53b3860936b92279a11b68395d898d138
shared_secret:
02bee8be0dda755846115db45071c0cf59c25722e015bde1c124de849c0fea52
key_schedule_context: 03713f73042575cebfd132f0cc4338523f8eae95c80a74
9f7cf3eb9436ff1c612ca62c37df27ca46d2cc162445a92c5f5fdc57bcde129ca7b1
f284b0c12297c037ca221d77e229a9d11b654de7942d685069c633b2362ce3b3d8ea
4891c9a2a87a4eb7cdb289ba5e2ecbf8cd2c8498bb4a383dc021454d70d46fcbbad1
252ef4f9
secret: 0f9df08908a6a3d06c8e934cd3f5313f9ebccd0986e316c0198bb48bed30
dc3db2f3baab94fd40c2c285c7288c77e2255401ee2d5884306addf4296b93c238b3
key: b68bb0e2fbf7431cedb46cc3b6f1fe9e
base_nonce: 76af62719d33d39a1cb6be9f
exporter_secret: 7f72308ae68c9a2b3862e686cb547b16d33d00fe482c770c471
7d8b54e9b1e547244c3602bdd86d5a788a8443befea0a7658002b23f1c96a62a6498
6fffc511a
]]></artwork>
          <section anchor="encryptions-15">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 76af62719d33d39a1cb6be9f
ct: 840669634db51e28df54f189329c1b727fd303ae413f003020aff5e26276aaa9
10fc4296828cb9d862c2fd7d16

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 76af62719d33d39a1cb6be9e
ct: d4680a48158d9a75fd09355878d6e33997a36ee01d4a8f22032b22373b795a94
1b7b9c5205ff99e0ff284beef4

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 76af62719d33d39a1cb6be9d
ct: c45eb6597de2bac929a0f5d404ba9d2dc1ea031880930f1fd7a283f0a0cbebb3
5eac1a9ee0d1225f5e0f181571

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 76af62719d33d39a1cb6be9b
ct: 4ee2482ad8d7d1e9b7e651c78b6ca26d3c5314d0711710ca62c2fd8bb8996d7d
8727c157538d5493da696b61f8

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 76af62719d33d39a1cb6be60
ct: 65596b731df010c76a915c6271a438056ce65696459432eeafdae7b4cadb6290
dd61e68edd4e40b659d2a8cbcc

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 76af62719d33d39a1cb6bf9f
ct: 9f659482ebc52f8303f9eac75656d807ec38ce2e50c72e3078cd13d86b30e3f8
90690a873277620f8a6a42d836
]]></artwork>
          </section>
          <section anchor="exported-values-15">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
c8c917e137a616d3d4e4c9fcd9c50202f366cb0d37862376bc79f9b72e8a8db9

exporter_context: 00
L: 32
exported_value:
33a5d4df232777008a06d0684f23bb891cfaef702f653c8601b6ad4d08dddddf

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
bed80f2e54f1285895c4a3f3b3625e6206f78f1ed329a0cfb5864f7c139b3c6a
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="dhkemp-256-hkdf-sha256-hkdf-sha256-chacha20poly1305">
        <name>DHKEM(P-256, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305</name>
        <section anchor="base-setup-information-4">
          <name>Base Setup Information</name>
          <artwork><![CDATA[
mode: 0
kem_id: 16
kdf_id: 1
aead_id: 3
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
f1f1a3bc95416871539ecb51c3a8f0cf608afb40fbbe305c0a72819d35c33f1f
pkEm: 04c07836a0206e04e31d8ae99bfd549380b072a1b1b82e563c935c09582782
4fc1559eac6fb9e3c70cd3193968994e7fe9781aa103f5b50e934b5b2f387e381291
skEm:
7550253e1147aae48839c1f8af80d2770fb7a4c763afe7d0afa7e0f42a5b3689
ikmR:
61092f3f56994dd424405899154a9918353e3e008171517ad576b900ddb275e7
pkRm: 04a697bffde9405c992883c5c439d6cc358170b51af72812333b015621dc0f
40bad9bb726f68a5c013806a790ec716ab8669f84f6b694596c2987cf35baba2a006
skRm:
a4d1c55836aa30f9b3fbb6ac98d338c877c2867dd3a77396d13f68d3ab150d3b
enc: 04c07836a0206e04e31d8ae99bfd549380b072a1b1b82e563c935c095827824
fc1559eac6fb9e3c70cd3193968994e7fe9781aa103f5b50e934b5b2f387e381291
shared_secret:
806520f82ef0b03c823b7fc524b6b55a088f566b9751b89551c170f4113bd850
key_schedule_context: 00b738cd703db7b4106e93b4621e9a19c89c838e559642
40e5d3f331aaf8b0d58b2e986ea1c671b61cf45eec134dac0bae58ec6f63e790b140
0b47c33038b0269c
secret:
fe891101629aa355aad68eff3cc5170d057eca0c7573f6575e91f9783e1d4506
key:
a8f45490a92a3b04d1dbf6cf2c3939ad8bfc9bfcb97c04bffe116730c9dfe3fc
base_nonce: 726b4390ed2209809f58c693
exporter_secret:
4f9bd9b3a8db7d7c3a5b9d44fdc1f6e37d5d77689ade5ec44a7242016e6aa205
]]></artwork>
          <section anchor="encryptions-16">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 726b4390ed2209809f58c693
ct: 6469c41c5c81d3aa85432531ecf6460ec945bde1eb428cb2fedf7a29f5a685b4
ccb0d057f03ea2952a27bb458b

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 726b4390ed2209809f58c692
ct: f1564199f7e0e110ec9c1bcdde332177fc35c1adf6e57f8d1df24022227ffa87
16862dbda2b1dc546c9d114374

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 726b4390ed2209809f58c691
ct: 39de89728bcb774269f882af8dc5369e4f3d6322d986e872b3a8d074c7c18e85
49ff3f85b6d6592ff87c3f310c

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 726b4390ed2209809f58c697
ct: bc104a14fbede0cc79eeb826ea0476ce87b9c928c36e5e34dc9b6905d91473ec
369a08b1a25d305dd45c6c5f80

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 726b4390ed2209809f58c66c
ct: 8f2814a2c548b3be50259713c6724009e092d37789f6856553d61df23ebc0792
35f710e6af3c3ca6eaba7c7c6c

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 726b4390ed2209809f58c793
ct: b45b69d419a9be7219d8c94365b89ad6951caf4576ea4774ea40e9b7047a09d6
537d1aa2f7c12d6ae4b729b4d0
]]></artwork>
          </section>
          <section anchor="exported-values-16">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
9b13c510416ac977b553bf1741018809c246a695f45eff6d3b0356dbefe1e660

exporter_context: 00
L: 32
exported_value:
6c8b7be3a20a5684edecb4253619d9051ce8583baf850e0cb53c402bdcaf8ebb

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
477a50d804c7c51941f69b8e32fe8288386ee1a84905fe4938d58972f24ac938
]]></artwork>
          </section>
        </section>
        <section anchor="psk-setup-information-4">
          <name>PSK Setup Information</name>
          <artwork><![CDATA[
mode: 1
kem_id: 16
kdf_id: 1
aead_id: 3
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
e1a4e1d50c4bfcf890f2b4c7d6b2d2aca61368eddc3c84162df2856843e1057a
pkEm: 04f336578b72ad7932fe867cc4d2d44a718a318037a0ec271163699cee653f
a805c1fec955e562663e0c2061bb96a87d78892bff0cc0bad7906c2d998ebe1a7246
skEm:
7d6e4e006cee68af9b3fdd583a0ee8962df9d59fab029997ee3f456cbc857904
ikmR:
ee51dec304abf993ef8fd52aacdd3b539108bbf6e491943266c1de89ec596a17
pkRm: 041eb8f4f20ab72661af369ff3231a733672fa26f385ffb959fd1bae46bfda
43ad55e2d573b880831381d9367417f554ce5b2134fbba5235b44db465feffc6189e
skRm:
12ecde2c8bc2d5d7ed2219c71f27e3943d92b344174436af833337c557c300b3
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc: 04f336578b72ad7932fe867cc4d2d44a718a318037a0ec271163699cee653fa
805c1fec955e562663e0c2061bb96a87d78892bff0cc0bad7906c2d998ebe1a7246
shared_secret:
ac4f260dce4db6bf45435d9c92c0e11cfdd93743bd3075949975974cc2b3d79e
key_schedule_context: 01622b72afcc3795841596c67ea74400ca3b029374d7d5
640bda367c5d67b3fbeb2e986ea1c671b61cf45eec134dac0bae58ec6f63e790b140
0b47c33038b0269c
secret:
858c8087a1c056db5811e85802f375bb0c19b9983204a1575de4803575d23239
key:
6d61cb330b7771168c8619498e753f16198aad9566d1f1c6c70e2bc1a1a8b142
base_nonce: 0de7655fb65e1cd51a38864e
exporter_secret:
754ca00235b245e72d1f722a7718e7145bd113050a2aa3d89586d4cb7514bfdb
]]></artwork>
          <section anchor="encryptions-17">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 0de7655fb65e1cd51a38864e
ct: 21433eaff24d7706f3ed5b9b2e709b07230e2b11df1f2b1fe07b3c70d5948a53
d6fa5c8bed194020bd9df0877b

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 0de7655fb65e1cd51a38864f
ct: c74a764b4892072ea8c2c56b9bcd46c7f1e9ca8cb0a263f8b40c2ba59ac9c857
033f176019562218769d3e0452

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 0de7655fb65e1cd51a38864c
ct: dc8cd68863474d6e9cbb6a659335a86a54e036249d41acf909e738c847ff2bd3
6fe3fcacda4ededa7032c0a220

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 0de7655fb65e1cd51a38864a
ct: cd54a8576353b1b9df366cb0cc042e46eef6f4cf01e205fe7d47e306b2fdd90f
7185f289a26c613ca094e3be10

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 0de7655fb65e1cd51a3886b1
ct: 6324570c9d542c70c7e70570c1d8f4c52a89484746bf0625441890ededcc80c2
4ef2301c38bfd34d689d19f67d

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 0de7655fb65e1cd51a38874e
ct: 1ea6326c8098ed0437a553c466550114fb2ca1412cca7de98709b9ccdf19206e
52c3d39180e2cf62b3e9f4baf4
]]></artwork>
          </section>
          <section anchor="exported-values-17">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
530bbc2f68f078dccc89cc371b4f4ade372c9472bafe4601a8432cbb934f528d

exporter_context: 00
L: 32
exported_value:
6e25075ddcc528c90ef9218f800ca3dfe1b8ff4042de5033133adb8bd54c401d

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
6f6fbd0d1c7733f796461b3235a856cc34f676fe61ed509dfc18fa16efe6be78
]]></artwork>
          </section>
        </section>
        <section anchor="auth-setup-information-4">
          <name>Auth Setup Information</name>
          <artwork><![CDATA[
mode: 2
kem_id: 16
kdf_id: 1
aead_id: 3
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
0ecd212019008138a31f9104d5dba76b9f8e34d5b996041fff9e3df221dd0d5d
pkEm: 040d5176aedba55bc41709261e9195c5146bb62d783031280775f32e507d79
b5cbc5748b6be6359760c73cfe10ca19521af704ca6d91ff32fc0739527b9385d415
skEm:
085fd5d5e6ce6497c79df960cac93710006b76217d8bcfafbd2bb2c20ea03c42
ikmR:
d32236d8378b9563840653789eb7bc33c3c720e537391727bf1c812d0eac110f
pkRm: 0444f6ee41818d9fe0f8265bffd016b7e2dd3964d610d0f7514244a60dbb7a
11ece876bb110a97a2ac6a9542d7344bf7d2bd59345e3e75e497f7416cf38d296233
skRm:
3cb2c125b8c5a81d165a333048f5dcae29a2ab2072625adad66dbb0f48689af9
ikmS:
0e6be0851283f9327295fd49858a8c8908ea9783212945eef6c598ee0a3cedbb
pkSm: 04265529a04d4f46ab6fa3af4943774a9f1127821656a75a35fade898a9a1b
014f64d874e88cddb24c1c3d79004d3a587db67670ca357ff4fba7e8b56ec013b98b
skSm:
39b19402e742d48d319d24d68e494daa4492817342e593285944830320912519
enc: 040d5176aedba55bc41709261e9195c5146bb62d783031280775f32e507d79b
5cbc5748b6be6359760c73cfe10ca19521af704ca6d91ff32fc0739527b9385d415
shared_secret:
1a45aa4792f4b166bfee7eeab0096c1a6e497480e2261b2a59aad12f2768d469
key_schedule_context: 02b738cd703db7b4106e93b4621e9a19c89c838e559642
40e5d3f331aaf8b0d58b2e986ea1c671b61cf45eec134dac0bae58ec6f63e790b140
0b47c33038b0269c
secret:
9193210815b87a4c5496c9d73e609a6c92665b5ea0d760866294906d089ebb57
key:
cf292f8a4313280a462ce55cde05b5aa5744fe4ca89a5d81b0146a5eaca8092d
base_nonce: 7e45c21e20e869ae00492123
exporter_secret:
dba6e307f71769ba11e2c687cc19592f9d436da0c81e772d7a8a9fd28e54355f
]]></artwork>
          <section anchor="encryptions-18">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 7e45c21e20e869ae00492123
ct: 25881f219935eec5ba70d7b421f13c35005734f3e4d959680270f55d71e2f5cb
3bd2daced2770bf3d9d4916872

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 7e45c21e20e869ae00492122
ct: 653f0036e52a376f5d2dd85b3204b55455b7835c231255ae098d09ed138719b9
7185129786338ab6543f753193

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 7e45c21e20e869ae00492121
ct: 60878706117f22180c788e62df6a595bc41906096a11a9513e84f0141e43239e
81a98d7a235abc64112fcb8ddd

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 7e45c21e20e869ae00492127
ct: 0f9094dd08240b5fa7a388b824d19d5b4b1e126cebfd67a062c32f9ba9f1f386
6cc38de7df2702626e2ab65c0f

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 7e45c21e20e869ae004921dc
ct: dd29319e08135c5f8401d6537a364e92172c0e3f095f3fd18923881d11c0a683
9345dd0b54acd0edd8f8344792

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 7e45c21e20e869ae00492023
ct: e2276ec5047bc4b6ed57d6da7da2fb47a77502f0a30f17d040247c73da336d72
2bc6c89adf68396a0912c6d152
]]></artwork>
          </section>
          <section anchor="exported-values-18">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
56c4d6c1d3a46c70fd8f4ecda5d27c70886e348efb51bd5edeaa39ff6ce34389

exporter_context: 00
L: 32
exported_value:
d2d3e48ed76832b6b3f28fa84be5f11f09533c0e3c71825a34fb0f1320891b51

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
eb0d312b6263995b4c7761e64b688c215ffd6043ff3bad2368c862784cbe6eff
]]></artwork>
          </section>
        </section>
        <section anchor="authpsk-setup-information-4">
          <name>AuthPSK Setup Information</name>
          <artwork><![CDATA[
mode: 3
kem_id: 16
kdf_id: 1
aead_id: 3
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
f3a07f194703e321ef1f753a1b9fe27a498dfdfa309151d70bedd896c239c499
pkEm: 043539917ee26f8ae0aa5f784a387981b13de33124a3cde88b946720301831
10f331400115855808244ff0c5b6ca6104483ac95724481d41bdcd9f15b430ad16f6
skEm:
11b7e4de2d919240616a31ab14944cced79bc2372108bb98f6792e3b645fe546
ikmR:
1240e55a0a03548d7f963ef783b6a7362cb505e6b31dfd04c81d9b294543bfbd
pkRm: 04d383fd920c42d018b9d57fd73a01f1eee480008923f67d35169478e55d2e
8817068daf62a06b10e0aad4a9e429fa7f904481be96b79a9c231a33e956c20b81b6
skRm:
c29fc577b7e74d525c0043f1c27540a1248e4f2c8d297298e99010a92e94865c
ikmS:
ce2a0387a2eb8870a3a92c34a2975f0f3f271af4384d446c7dc1524a6c6c515a
pkSm: 0492cf8c9b144b742fe5a63d9a181a19d416f3ec8705f24308ad316564823c
344e018bd7c03a33c926bb271b28ef5bf28c0ca00abff249fee5ef7f33315ff34fdb
skSm:
53541bd995f874a67f8bfd8038afa67fd68876801f42ff47d0dc2a4deea067ae
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc: 043539917ee26f8ae0aa5f784a387981b13de33124a3cde88b9467203018311
0f331400115855808244ff0c5b6ca6104483ac95724481d41bdcd9f15b430ad16f6
shared_secret:
87584311791036a3019bc36803cdd42e9a8931a98b13c88835f2f8a9036a4fd6
key_schedule_context: 03622b72afcc3795841596c67ea74400ca3b029374d7d5
640bda367c5d67b3fbeb2e986ea1c671b61cf45eec134dac0bae58ec6f63e790b140
0b47c33038b0269c
secret:
fe52b4412590e825ea2603fa88e145b2ee014b942a774b55fab4f081301f16f4
key:
31e140c8856941315d4067239fdc4ebe077fbf45a6fc78a61e7a6c8b3bacb10a
base_nonce: 75838a8010d2e4760254dd56
exporter_secret:
600895965755db9c5027f25f039a6e3e506c35b3b7084ce33c4a48d59ee1f0e3
]]></artwork>
          <section anchor="encryptions-19">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 75838a8010d2e4760254dd56
ct: 9eadfa0f954835e7e920ffe56dec6b31a046271cf71fdda55db72926e1d8fae9
4cc6280fcfabd8db71eaa65c05

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 75838a8010d2e4760254dd57
ct: e357ad10d75240224d4095c9f6150a2ed2179c0f878e4f2db8ca95d365d174d0
59ff8c3eb38ea9a65cfc8eaeb8

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 75838a8010d2e4760254dd54
ct: 2fa56d00f8dd479d67a2ec3308325cf3bbccaf102a64ffccdb006bd7dcb93268
5b9a7b49cdc094a85fec1da5ef

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 75838a8010d2e4760254dd52
ct: 1fe9d6db14965003ed81a39abf240f9cd7c5a454bca0d69ef9a2de16d537364f
bbf110b9ef11fa4a7a0172f0ce

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 75838a8010d2e4760254dda9
ct: eaf4041a5c9122b22d1f8d698eeffe45d64b4ae33d0ddca3a4cdf4a5f595acc9
5a1a9334d06cc4d000df6aaad6

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 75838a8010d2e4760254dc56
ct: fb857f4185ce5286c1a52431867537204963ea66a3eee8d2a74419fd8751faee
066d08277ac7880473aa4143ba
]]></artwork>
          </section>
          <section anchor="exported-values-19">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
c52b4592cd33dd38b2a3613108ddda28dcf7f03d30f2a09703f758bfa8029c9a

exporter_context: 00
L: 32
exported_value:
2f03bebc577e5729e148554991787222b5c2a02b77e9b1ac380541f710e5a318

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
e01dd49e8bfc3d9216abc1be832f0418adf8b47a7b5a330a7436c31e33d765d7
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="dhkemp-521-hkdf-sha512-hkdf-sha512-aes-256-gcm">
        <name>DHKEM(P-521, HKDF-SHA512), HKDF-SHA512, AES-256-GCM</name>
        <section anchor="base-setup-information-5">
          <name>Base Setup Information</name>
          <artwork><![CDATA[
mode: 0
kem_id: 18
kdf_id: 3
aead_id: 2
info: 4f6465206f6e2061204772656369616e2055726e
ikmE: 7f06ab8215105fc46aceeb2e3dc5028b44364f960426eb0d8e4026c2f8b5d7
e7a986688f1591abf5ab753c357a5d6f0440414b4ed4ede71317772ac98d9239f709
04
pkEm: 040138b385ca16bb0d5fa0c0665fbbd7e69e3ee29f63991d3e9b5fa740aab8
900aaeed46ed73a49055758425a0ce36507c54b29cc5b85a5cee6bae0cf1c21f2731
ece2013dc3fb7c8d21654bb161b463962ca19e8c654ff24c94dd2898de12051f1ed0
692237fb02b2f8d1dc1c73e9b366b529eb436e98a996ee522aef863dd5739d2f29b0
skEm: 014784c692da35df6ecde98ee43ac425dbdd0969c0c72b42f2e708ab9d5354
15a8569bdacfcc0a114c85b8e3f26acf4d68115f8c91a66178cdbd03b7bcc5291e37
4b
ikmR: 2ad954bbe39b7122529f7dde780bff626cd97f850d0784a432784e69d86ecc
aade43b6c10a8ffdb94bf943c6da479db137914ec835a7e715e36e45e29b587bab3b
f1
pkRm: 0401b45498c1714e2dce167d3caf162e45e0642afc7ed435df7902ccae0e84
ba0f7d373f646b7738bbbdca11ed91bdeae3cdcba3301f2457be452f271fa6837580
e661012af49583a62e48d44bed350c7118c0d8dc861c238c72a2bda17f64704f464b
57338e7f40b60959480c0e58e6559b190d81663ed816e523b6b6a418f66d2451ec64
skRm: 01462680369ae375e4b3791070a7458ed527842f6a98a79ff5e0d4cbde83c2
7196a3916956655523a6a2556a7af62c5cadabe2ef9da3760bb21e005202f7b24628
47
enc: 040138b385ca16bb0d5fa0c0665fbbd7e69e3ee29f63991d3e9b5fa740aab89
00aaeed46ed73a49055758425a0ce36507c54b29cc5b85a5cee6bae0cf1c21f2731e
ce2013dc3fb7c8d21654bb161b463962ca19e8c654ff24c94dd2898de12051f1ed06
92237fb02b2f8d1dc1c73e9b366b529eb436e98a996ee522aef863dd5739d2f29b0
shared_secret: 776ab421302f6eff7d7cb5cb1adaea0cd50872c71c2d63c30c4f1
d5e43653336fef33b103c67e7a98add2d3b66e2fda95b5b2a667aa9dac7e59cc1d46
d30e818
key_schedule_context: 0083a27c5b2358ab4dae1b2f5d8f57f10ccccc822a4733
26f543f239a70aee46347324e84e02d7651a10d08fb3dda739d22d50c53fbfa8122b
aacd0f9ae5913072ef45baa1f3a4b169e141feb957e48d03f28c837d8904c3d67753
08c3d3faa75dd64adfa44e1a1141edf9349959b8f8e5291cbdc56f62b0ed6527d692
e85b09a4
secret: 49fd9f53b0f93732555b2054edfdc0e3101000d75df714b98ce5aa295a37
f1b18dfa86a1c37286d805d3ea09a20b72f93c21e83955a1f01eb7c5eead563d21e7
key:
751e346ce8f0ddb2305c8a2a85c70d5cf559c53093656be636b9406d4d7d1b70
base_nonce: 55ff7a7d739c69f44b25447b
exporter_secret: e4ff9dfbc732a2b9c75823763c5ccc954a2c0648fc6de80a585
81252d0ee3215388a4455e69086b50b87eb28c169a52f42e71de4ca61c920e7bd24c
95cc3f992
]]></artwork>
          <section anchor="encryptions-20">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 55ff7a7d739c69f44b25447b
ct: 170f8beddfe949b75ef9c387e201baf4132fa7374593dfafa90768788b7b2b20
0aafcc6d80ea4c795a7c5b841a

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 55ff7a7d739c69f44b25447a
ct: d9ee248e220ca24ac00bbbe7e221a832e4f7fa64c4fbab3945b6f3af0c5ecd5e
16815b328be4954a05fd352256

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 55ff7a7d739c69f44b254479
ct: 142cf1e02d1f58d9285f2af7dcfa44f7c3f2d15c73d460c48c6e0e506a3144ba
e35284e7e221105b61d24e1c7a

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 55ff7a7d739c69f44b25447f
ct: 3bb3a5a07100e5a12805327bf3b152df728b1c1be75a9fd2cb2bf5eac0cca1fb
80addb37eb2a32938c7268e3e5

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 55ff7a7d739c69f44b254484
ct: 4f268d0930f8d50b8fd9d0f26657ba25b5cb08b308c92e33382f369c768b558e
113ac95a4c70dd60909ad1adc7

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 55ff7a7d739c69f44b25457b
ct: dbbfc44ae037864e75f136e8b4b4123351d480e6619ae0e0ae437f036f2f8f1e
f677686323977a1ccbb4b4f16a
]]></artwork>
          </section>
          <section anchor="exported-values-20">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
05e2e5bd9f0c30832b80a279ff211cc65eceb0d97001524085d609ead60d0412

exporter_context: 00
L: 32
exported_value:
fca69744bb537f5b7a1596dbf34eaa8d84bf2e3ee7f1a155d41bd3624aa92b63

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
f389beaac6fcf6c0d9376e20f97e364f0609a88f1bc76d7328e9104df8477013
]]></artwork>
          </section>
        </section>
        <section anchor="psk-setup-information-5">
          <name>PSK Setup Information</name>
          <artwork><![CDATA[
mode: 1
kem_id: 18
kdf_id: 3
aead_id: 2
info: 4f6465206f6e2061204772656369616e2055726e
ikmE: f3ebfa9a69a924e672114fcd9e06fa9559e937f7eccce4181a2b506df53dbe
514be12f094bb28e01de19dd345b4f7ede5ad7eaa6b9c3019592ec68eaae9a14732c
e0
pkEm: 040085eff0835cc84351f32471d32aa453cdc1f6418eaaecf1c2824210eb1d
48d0768b368110fab21407c324b8bb4bec63f042cfa4d0868d19b760eb4beba1bff7
93b30036d2c614d55730bd2a40c718f9466faf4d5f8170d22b6df98dfe0c067d02b3
49ae4a142e0c03418f0a1479ff78a3db07ae2c2e89e5840f712c174ba2118e90fdcb
skEm: 012e5cfe0daf5fe2a1cd617f4c4bae7c86f1f527b3207f115e262a98cc6526
8ec88cb8645aec73b7aa0a472d0292502d1078e762646e0c093cf873243d12c39915
f6
ikmR: a2a2458705e278e574f835effecd18232f8a4c459e7550a09d44348ae5d3b1
ea9d95c51995e657ad6f7cae659f5e186126a471c017f8f5e41da9eba74d4e0473e1
79
pkRm: 04006917e049a2be7e1482759fb067ddb94e9c4f7f5976f655088dec452466
14ff924ed3b385fc2986c0ecc39d14f907bf837d7306aada59dd5889086125ecd038
ead400603394b5d81f89ebfd556a898cc1d6a027e143d199d3db845cb91c5289fb26
c5ff80832935b0e8dd08d37c6185a6f77683347e472d1edb6daa6bd7652fea628fae
skRm: 011bafd9c7a52e3e71afbdab0d2f31b03d998a0dc875dd7555c63560e142bd
e264428de03379863b4ec6138f813fa009927dc5d15f62314c56d4e7ff2b485753eb
72
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc: 040085eff0835cc84351f32471d32aa453cdc1f6418eaaecf1c2824210eb1d4
8d0768b368110fab21407c324b8bb4bec63f042cfa4d0868d19b760eb4beba1bff79
3b30036d2c614d55730bd2a40c718f9466faf4d5f8170d22b6df98dfe0c067d02b34
9ae4a142e0c03418f0a1479ff78a3db07ae2c2e89e5840f712c174ba2118e90fdcb
shared_secret: 0d52de997fdaa4797720e8b1bebd3df3d03c4cf38cc8c1398168d
36c3fc7626428c9c254dd3f9274450909c64a5b3acbe45e2d850a2fd69ac0605fe5c
8a057a5
key_schedule_context: 0124497637cf18d6fbcc16e9f652f00244c981726f293b
b7819861e85e50c94f0be30e022ab081e18e6f299fd3d3d976a4bc590f85bc7711bf
ce32ee1a7fb1c154ef45baa1f3a4b169e141feb957e48d03f28c837d8904c3d67753
08c3d3faa75dd64adfa44e1a1141edf9349959b8f8e5291cbdc56f62b0ed6527d692
e85b09a4
secret: 2cf425e26f65526afc0634a3dba4e28d980c1015130ce07c2ac7530d7a39
1a75e5a0db428b09f27ad4d975b4ad1e7f85800e03ffeea35e8cf3fe67b18d4a1345
key:
f764a5a4b17e5d1ffba6e699d65560497ebaea6eb0b0d9010a6d979e298a39ff
base_nonce: 479afdf3546ddba3a9841f38
exporter_secret: 5c3d4b65a13570502b93095ef196c42c8211a4a188c4590d358
63665c705bb140ecba6ce9256be3fad35b4378d41643867454612adfd0542a684b61
799bf293f
]]></artwork>
          <section anchor="encryptions-21">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 479afdf3546ddba3a9841f38
ct: de69e9d943a5d0b70be3359a19f317bd9aca4a2ebb4332a39bcdfc97d5fe62f3
a77702f4822c3be531aa7843a1

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 479afdf3546ddba3a9841f39
ct: 77a16162831f90de350fea9152cfc685ecfa10acb4f7994f41aed43fa5431f23
82d078ec88baec53943984553e

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 479afdf3546ddba3a9841f3a
ct: f1d48d09f126b9003b4c7d3fe6779c7c92173188a2bb7465ba43d899a6398a33
3914d2bb19fd769d53f3ec7336

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 479afdf3546ddba3a9841f3c
ct: 829b11c082b0178082cd595be6d73742a4721b9ac05f8d2ef8a7704a53022d82
bd0d8571f578c5c13b99eccff8

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 479afdf3546ddba3a9841fc7
ct: a3ee291e20f37021e82df14d41f3fbe98b27c43b318a36cacd8471a3b1051ab1
2ee055b62ded95b72a63199a3f

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 479afdf3546ddba3a9841e38
ct: eecc2173ce1ac14b27ee67041e90ed50b7809926e55861a579949c07f6d26137
bf9cf0d097f60b5fd2fbf348ec
]]></artwork>
          </section>
          <section anchor="exported-values-21">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
62691f0f971e34de38370bff24deb5a7d40ab628093d304be60946afcdb3a936

exporter_context: 00
L: 32
exported_value:
76083c6d1b6809da088584674327b39488eaf665f0731151128452e04ce81bff

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
0c7cfc0976e25ae7680cf909ae2de1859cd9b679610a14bec40d69b91785b2f6
]]></artwork>
          </section>
        </section>
        <section anchor="auth-setup-information-5">
          <name>Auth Setup Information</name>
          <artwork><![CDATA[
mode: 2
kem_id: 18
kdf_id: 3
aead_id: 2
info: 4f6465206f6e2061204772656369616e2055726e
ikmE: fe1c589c2a05893895a537f38c7cb4300b5a7e8fef3d6ccb8f07a498029c61
e90262e009dc254c7f6235f9c6b2fd6aeff0a714db131b09258c16e217b7bd2aa619
b0
pkEm: 04017de12ede7f72cb101dab36a111265c97b3654816dcd6183f809d4b3d11
1fe759497f8aefdc5dbb40d3e6d21db15bdc60f15f2a420761bcaeef73b891c2b117
e9cf01e29320b799bbc86afdc5ea97d941ea1c5bd5ebeeac7a784b3bab524746f3e6
40ec26ee1bd91255f9330d974f845084637ee0e6fe9f505c5b87c86a4e1a6c3096dd
skEm: 0185f03560de87bb2c543ef03607f3c33ac09980000de25eabe3b224312946
330d2e65d192d3b4aa46ca92fc5ca50736b624402d95f6a80dc04d1f10ae95171372
61
ikmR: 8feea0438481fc0ecd470d6adfcda334a759c6b8650452c5a5dd9b2dd2cc9b
e33d2bb7ee64605fc07ab4664a58bb9a8de80defe510b6c97d2daf85b92cd4bb0a66
bf
pkRm: 04007d419b8834e7513d0e7cc66424a136ec5e11395ab353da324e3586673e
e73d53ab34f30a0b42a92d054d0db321b80f6217e655e304f72793767c4231785c4a
4a6e008f31b93b7a4f2b8cd12e5fe5a0523dc71353c66cbdad51c86b9e0bdfcd9a45
698f2dab1809ab1b0f88f54227232c858accc44d9a8d41775ac026341564a2d749f4
skRm: 013ef326940998544a899e15e1726548ff43bbdb23a8587aa3bef9d1b85733
8d87287df5667037b519d6a14661e9503cfc95a154d93566d8c84e95ce93ad05293a
0b
ikmS: 2f66a68b85ef04822b054ef521838c00c64f8b6226935593b69e13a1a2461a
4f1a74c10c836e87eed150c0db85d4e4f506cbb746149befac6f5c07dc48a615ef92
db
pkSm: 04015cc3636632ea9a3879e43240beae5d15a44fba819282fac26a19c989fa
fdd0f330b8521dff7dc393101b018c1e65b07be9f5fc9a28a1f450d6a541ee0d7622
1133001e8f0f6a05ab79f9b9bb9ccce142a453d59c5abebb5674839d935a3ca1a3fb
c328539a60b3bc3c05fed22838584a726b9c176796cad0169ba4093332cbd2dc3a9f
skSm: 001018584599625ff9953b9305849850d5e34bd789d4b81101139662fbea8b
6508ddb9d019b0d692e737f66beae3f1f783e744202aaf6fea01506c27287e359fe7
76
enc: 04017de12ede7f72cb101dab36a111265c97b3654816dcd6183f809d4b3d111
fe759497f8aefdc5dbb40d3e6d21db15bdc60f15f2a420761bcaeef73b891c2b117e
9cf01e29320b799bbc86afdc5ea97d941ea1c5bd5ebeeac7a784b3bab524746f3e64
0ec26ee1bd91255f9330d974f845084637ee0e6fe9f505c5b87c86a4e1a6c3096dd
shared_secret: 26648fa2a2deb0bfc56349a590fd4cb7108a51797b634694fc020
61e8d91b3576ac736a68bf848fe2a58dfb1956d266e68209a4d631e513badf8f4dcf
c00f30a
key_schedule_context: 0283a27c5b2358ab4dae1b2f5d8f57f10ccccc822a4733
26f543f239a70aee46347324e84e02d7651a10d08fb3dda739d22d50c53fbfa8122b
aacd0f9ae5913072ef45baa1f3a4b169e141feb957e48d03f28c837d8904c3d67753
08c3d3faa75dd64adfa44e1a1141edf9349959b8f8e5291cbdc56f62b0ed6527d692
e85b09a4
secret: 56b7acb7355d080922d2ddc227829c2276a0b456087654b3ac4b53828bd3
4af8cf54626f85af858a15a86eba73011665cc922bc59fd07d2975f356d2674db554
key:
01fced239845e53f0ec616e71777883a1f9fcab22a50f701bdeee17ad040e44d
base_nonce: 9752b85fe8c73eda183f9e80
exporter_secret: 80466a9d9cc5112ddad297e817e038801e15fa18152bc4dc010
a35d7f534089c87c98b4bacd7bbc6276c4002a74085adcd9019fca6139826b529256
9cfb7fe47
]]></artwork>
          <section anchor="encryptions-22">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: 9752b85fe8c73eda183f9e80
ct: 0116aeb3a1c405c61b1ce47600b7ecd11d89b9c08c408b7e2d1e00a4d64696d1
2e6881dc61688209a8207427f9

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: 9752b85fe8c73eda183f9e81
ct: 37ece0cf6741f443e9d73b9966dc0b228499bb21fbf313948327231e70a18380
e080529c0267f399ba7c539cc6

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: 9752b85fe8c73eda183f9e82
ct: d17b045cac963e45d55fd3692ec17f100df66ac06d91f3b6af8efa7ed3c88955
50eb753bc801fe4bd27005b4bd

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: 9752b85fe8c73eda183f9e84
ct: 50c523ae7c64cada96abea16ddf67a73d2914ec86a4cedb31a7e6257f7553ed2
44626ef79a57198192b2323384

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: 9752b85fe8c73eda183f9e7f
ct: 53d422295a6ce8fcc51e6f69e252e7195e64abf49252f347d8c25534f1865a6a
17d949c65ce618ddc7d816111f

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: 9752b85fe8c73eda183f9f80
ct: 0dfcfc22ea768880b4160fec27ab10c75fb27766c6bb97aed373a9b6eae35d31
afb08257401075cbb602ac5abb
]]></artwork>
          </section>
          <section anchor="exported-values-22">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
8d78748d632f95b8ce0c67d70f4ad1757e61e872b5941e146986804b3990154b

exporter_context: 00
L: 32
exported_value:
80a4753230900ea785b6c80775092801fe91183746479f9b04c305e1db9d1f4d

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
620b176d737cf366bcc20d96adb54ec156978220879b67923689e6dca36210ed
]]></artwork>
          </section>
        </section>
        <section anchor="authpsk-setup-information-5">
          <name>AuthPSK Setup Information</name>
          <artwork><![CDATA[
mode: 3
kem_id: 18
kdf_id: 3
aead_id: 2
info: 4f6465206f6e2061204772656369616e2055726e
ikmE: 54272797b1fbc128a6967ff1fd606e0c67868f7762ce1421439cbc9e90ce1b
28d566e6c2acbce712e48eebf236696eb680849d6873e9959395b2931975d61d38bd
6c
pkEm: 04000a5096a6e6e002c83517b494bfc2e36bfb8632fae8068362852b70d0ff
71e560b15aff96741ecffb63d8ac3090c3769679009ac59a99a1feb4713c5f090fc0
dbed01ad73c45d29d369e36744e9ed37d12f80700c16d816485655169a5dd66e4ddf
27f2acffe0f56f7f77ea2b473b4bf0518b975d9527009a3d14e5a4957e3e8a9074f8
skEm: 003430af19716084efeced1241bb1a5625b6c826f11ef31649095eb2795261
9e36f62a79ea28001ac452fb20ddfbb66e62c6c0b1be03c0d28c97794a1fb638207a
83
ikmR: 3db434a8bc25b27eb0c590dc64997ab1378a99f52b2cb5a5a5b2fa540888f6
c0f09794c654f4468524e040e6b4eca2c9dcf229f908b9d318f960cc9e9baa92c5ee
e6
pkRm: 0401655b5d3b7cfafaba30851d25edc44c6dd17d99410efbed8591303b4dbe
ea8cb1045d5255f9a60384c3bbd4a3386ae6e6fab341dc1f8db0eed5f0ab1aaac6d7
838e00dadf8a1c2c64b48f89c633721e88369e54104b31368f26e35d04a442b0b428
510fb23caada686add16492f333b0f7ba74c391d779b788df2c38d7a7f4778009d91
skRm: 0053c0bc8c1db4e9e5c3e3158bfdd7fc716aef12db13c8515adf821dd692ba
3ca53041029128ee19c8556e345c4bcb840bb7fd789f97fe10f17f0e2c6c25280728
43
ikmS: 65d523d9b37e1273eb25ad0527d3a7bd33f67208dd1666d9904c6bc04969ae
5831a8b849e7ff642581f2c3e56be84609600d3c6bbdaded3f6989c37d2892b1e978
d5
pkSm: 040013761e97007293d57de70962876b4926f69a52680b4714bee1d4236aa9
6c19b840c57e80b14e91258f0a350e3f7ba59f3f091633aede4c7ec4fa8918323aa4
5d5901076dec8eeb22899fda9ab9e1960003ff0535f53c02c40f2ae4cdc6070a3870
b85b4bdd0bb77f1f889e7ee51f465a308f08c666ad3407f75dc046b2ff5a24dbe2ed
skSm: 003f64675fc8914ec9e2b3ecf13585b26dbaf3d5d805042ba487a5070b8c5a
c1d39b17e2161771cc1b4d0a3ba6e866f4ea4808684b56af2a49b5e5111146d45d93
26
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc: 04000a5096a6e6e002c83517b494bfc2e36bfb8632fae8068362852b70d0ff7
1e560b15aff96741ecffb63d8ac3090c3769679009ac59a99a1feb4713c5f090fc0d
bed01ad73c45d29d369e36744e9ed37d12f80700c16d816485655169a5dd66e4ddf2
7f2acffe0f56f7f77ea2b473b4bf0518b975d9527009a3d14e5a4957e3e8a9074f8
shared_secret: 9e1d5f62cb38229f57f68948a0fbc1264499910cce50ec62cb241
88c5b0a98868f3c1cfa8c5baa97b3f24db3cdd30df6e04eae83dc4347be8a981066c
3b5b945
key_schedule_context: 0324497637cf18d6fbcc16e9f652f00244c981726f293b
b7819861e85e50c94f0be30e022ab081e18e6f299fd3d3d976a4bc590f85bc7711bf
ce32ee1a7fb1c154ef45baa1f3a4b169e141feb957e48d03f28c837d8904c3d67753
08c3d3faa75dd64adfa44e1a1141edf9349959b8f8e5291cbdc56f62b0ed6527d692
e85b09a4
secret: 50a57775958037a04098e0054576cd3bc084d0d08d29548ba4befa5676b9
1eb4dcd0752813a052c9a930d0aba6ca10b89dd690b64032dc635dece35d1bf4645c
key:
1316ed34bd52374854ed0e5cb0394ca0a79b2d8ce7f15d5104f21acdfb594286
base_nonce: d9c64ec8deb8a0647fafe8ff
exporter_secret: 6cb00ff99aebb2e4a05042ce0d048326dd2c03acd61a601b103
8a65398406a96ab8b5da3187412b2324089ea16ba4ff7e6f4fe55d281fc8ae5f2049
032b69ebd
]]></artwork>
          <section anchor="encryptions-23">
            <name>Encryptions</name>
            <artwork><![CDATA[
sequence number: 0
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d30
nonce: d9c64ec8deb8a0647fafe8ff
ct: 942a2a92e0817cf032ce61abccf4f3a7c5d21b794ed943227e07b7df2d6dd92c
9b8a9371949e65cca262448ab7

sequence number: 1
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d31
nonce: d9c64ec8deb8a0647fafe8fe
ct: c0a83b5ec3d7933a090f681717290337b4fede5bfaa0a40ec29f93acad742888
a1513c649104c391c78d1d7f29

sequence number: 2
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d32
nonce: d9c64ec8deb8a0647fafe8fd
ct: 2847b2e0ce0b9da8fca7b0e81ff389d1682ee1b388ed09579b145058b5af6a93
a85dd50d9f417dc88f2c785312

sequence number: 4
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d34
nonce: d9c64ec8deb8a0647fafe8fb
ct: fbd9948ab9ac4a9cb9e295c07273600e6a111a3a89241d3e2178f39d532a2ec5
c15b9b0c6937ac84c88e0ca76f

sequence number: 255
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323535
nonce: d9c64ec8deb8a0647fafe800
ct: 63113a870131b567db8f39a11b4541eafbd2d3cf3a9bf9e5c1cfcb41e52f9027
310b82a4868215959131694d15

sequence number: 256
pt: 4265617574792069732074727574682c20747275746820626561757479
aad: 436f756e742d323536
nonce: d9c64ec8deb8a0647fafe9ff
ct: 24f9d8dadd2107376ccd143f70f9bafcd2b21d8117d45ff327e9a78f603a3260
6e42a6a8bdb57a852591d20907
]]></artwork>
          </section>
          <section anchor="exported-values-23">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
a39502ef5ca116aa1317bd9583dd52f15b0502b71d900fc8a622d19623d0cb5d

exporter_context: 00
L: 32
exported_value:
749eda112c4cfdd6671d84595f12cd13198fc3ef93ed72369178f344fe6e09c3

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
f8b4e72cefbff4ca6c4eabb8c0383287082cfcbb953d900aed4959afd0017095
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="dhkemx25519-hkdf-sha256-hkdf-sha256-export-only-aead">
        <name>DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, Export-Only AEAD</name>
        <section anchor="base-setup-information-6">
          <name>Base Setup Information</name>
          <artwork><![CDATA[
mode: 0
kem_id: 32
kdf_id: 1
aead_id: 65535
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
55bc245ee4efda25d38f2d54d5bb6665291b99f8108a8c4b686c2b14893ea5d9
pkEm:
e5e8f9bfff6c2f29791fc351d2c25ce1299aa5eaca78a757c0b4fb4bcd830918
skEm:
095182b502f1f91f63ba584c7c3ec473d617b8b4c2cec3fad5af7fa6748165ed
ikmR:
683ae0da1d22181e74ed2e503ebf82840deb1d5e872cade20f4b458d99783e31
pkRm:
194141ca6c3c3beb4792cd97ba0ea1faff09d98435012345766ee33aae2d7664
skRm:
33d196c830a12f9ac65d6e565a590d80f04ee9b19c83c87f2c170d972a812848
enc:
e5e8f9bfff6c2f29791fc351d2c25ce1299aa5eaca78a757c0b4fb4bcd830918
shared_secret:
e81716ce8f73141d4f25ee9098efc968c91e5b8ce52ffff59d64039e82918b66
key_schedule_context: 009bd09219212a8cf27c6bb5d54998c5240793a70ca0a8
92234bd5e082bc619b6a3f4c22aa6d9a0424c2b4292fdf43b8257df93c2f6adbf6dd
c9c64fee26bdd292
secret:
04d64e0620aa047e9ab833b0ebcd4ff026cefbe44338fd7d1a93548102ee01af
key:
base_nonce:
exporter_secret:
79dc8e0509cf4a3364ca027e5a0138235281611ca910e435e8ed58167c72f79b
]]></artwork>
          <section anchor="exported-values-24">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
7a36221bd56d50fb51ee65edfd98d06a23c4dc87085aa5866cb7087244bd2a36

exporter_context: 00
L: 32
exported_value:
d5535b87099c6c3ce80dc112a2671c6ec8e811a2f284f948cec6dd1708ee33f0

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
ffaabc85a776136ca0c378e5d084c9140ab552b78f039d2e8775f26efff4c70e
]]></artwork>
          </section>
        </section>
        <section anchor="psk-setup-information-6">
          <name>PSK Setup Information</name>
          <artwork><![CDATA[
mode: 1
kem_id: 32
kdf_id: 1
aead_id: 65535
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
c51211a8799f6b8a0021fcba673d9c4067a98ebc6794232e5b06cb9febcbbdf5
pkEm:
d3805a97cbcd5f08babd21221d3e6b362a700572d14f9bbeb94ec078d051ae3d
skEm:
1d72396121a6a826549776ef1a9d2f3a2907fc6a38902fa4e401afdb0392e627
ikmR:
5e0516b1b29c0e13386529da16525210c796f7d647c37eac118023a6aa9eb89a
pkRm:
d53af36ea5f58f8868bb4a1333ed4cc47e7a63b0040eb54c77b9c8ec456da824
skRm:
98f304d4ecb312689690b113973c61ffe0aa7c13f2fbe365e48f3ed09e5a6a0c
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc:
d3805a97cbcd5f08babd21221d3e6b362a700572d14f9bbeb94ec078d051ae3d
shared_secret:
024573db58c887decb4c57b6ed39f2c9a09c85600a8a0ecb11cac24c6aaec195
key_schedule_context: 01446fb1fe2632a0a338f0a85ed1f3a0ac475bdea2cd72
f8c713b3a46ee737379a3f4c22aa6d9a0424c2b4292fdf43b8257df93c2f6adbf6dd
c9c64fee26bdd292
secret:
638b94532e0d0bf812cf294f36b97a5bdcb0299df36e22b7bb6858e3c113080b
key:
base_nonce:
exporter_secret:
04261818aeae99d6aba5101bd35ddf3271d909a756adcef0d41389d9ed9ab153
]]></artwork>
          <section anchor="exported-values-25">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
be6c76955334376aa23e936be013ba8bbae90ae74ed995c1c6157e6f08dd5316

exporter_context: 00
L: 32
exported_value:
1721ed2aa852f84d44ad020c2e2be4e2e6375098bf48775a533505fd56a3f416

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
7c9d79876a288507b81a5a52365a7d39cc0fa3f07e34172984f96fec07c44cba
]]></artwork>
          </section>
        </section>
        <section anchor="auth-setup-information-6">
          <name>Auth Setup Information</name>
          <artwork><![CDATA[
mode: 2
kem_id: 32
kdf_id: 1
aead_id: 65535
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
43b078912a54b591a7b09b16ce89a1955a9dd60b29fb611e044260046e8b061b
pkEm:
5ac1671a55c5c3875a8afe74664aa8bc68830be9ded0c5f633cd96400e8b5c05
skEm:
83d3f217071bbf600ba6f081f6e4005d27b97c8001f55cb5ff6ea3bbea1d9295
ikmR:
fc9407ae72ed614901ebf44257fb540f617284b5361cfecd620bafc4aba36f73
pkRm:
ffd7ac24694cb17939d95feb7c4c6539bb31621deb9b96d715a64abdd9d14b10
skRm:
ed88cda0e91ca5da64b6ad7fc34a10f096fa92f0b9ceff9d2c55124304ed8b4a
ikmS:
2ff4c37a17b2e54046a076bf5fea9c3d59250d54d0dc8572bc5f7c046307040c
pkSm:
89eb1feae431159a5250c5186f72a15962c8d0debd20a8389d8b6e4996e14306
skSm:
c85f136e06d72d28314f0e34b10aadc8d297e9d71d45a5662c2b7c3b9f9f9405
enc:
5ac1671a55c5c3875a8afe74664aa8bc68830be9ded0c5f633cd96400e8b5c05
shared_secret:
e204156fd17fd65b132d53a0558cd67b7c0d7095ee494b00f47d686eb78f8fb3
key_schedule_context: 029bd09219212a8cf27c6bb5d54998c5240793a70ca0a8
92234bd5e082bc619b6a3f4c22aa6d9a0424c2b4292fdf43b8257df93c2f6adbf6dd
c9c64fee26bdd292
secret:
355e7ef17f438db43152b7fb45a0e2f49a8bf8956d5dddfec1758c0f0eb1b5d5
key:
base_nonce:
exporter_secret:
276d87e5cb0655c7d3dad95e76e6fc02746739eb9d968955ccf8a6346c97509e
]]></artwork>
          <section anchor="exported-values-26">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
83c1bac00a45ed4cb6bd8a6007d2ce4ec501f55e485c5642bd01bf6b6d7d6f0a

exporter_context: 00
L: 32
exported_value:
08a1d1ad2af3ef5bc40232a64f920650eb9b1034fac3892f729f7949621bf06e

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
ff3b0e37a9954247fea53f251b799e2edd35aac7152c5795751a3da424feca73
]]></artwork>
          </section>
        </section>
        <section anchor="authpsk-setup-information-6">
          <name>AuthPSK Setup Information</name>
          <artwork><![CDATA[
mode: 3
kem_id: 32
kdf_id: 1
aead_id: 65535
info: 4f6465206f6e2061204772656369616e2055726e
ikmE:
94efae91e96811a3a49fd1b20eb0344d68ead6ac01922c2360779aa172487f40
pkEm:
81cbf4bd7eee97dd0b600252a1c964ea186846252abb340be47087cc78f3d87c
skEm:
a2b43f5c67d0d560ee04de0122c765ea5165e328410844db97f74595761bbb81
ikmR:
4dfde6fadfe5cb50fced4034e84e6d3a104aa4bf2971360032c1c0580e286663
pkRm:
f47cd9d6993d2e2234eb122b425accfb486ee80f89607b087094e9f413253c2d
skRm:
c4962a7f97d773a47bdf40db4b01dc6a56797c9e0deaab45f4ea3aa9b1d72904
ikmS:
26c12fef8d71d13bbbf08ce8157a283d5e67ecf0f345366b0e90341911110f1b
pkSm:
29a5bf3867a6128bbdf8e070abe7fe70ca5e07b629eba5819af73810ee20112f
skSm:
6175b2830c5743dff5b7568a7e20edb1fe477fb0487ca21d6433365be90234d0
psk:
0247fd33b913760fa1fa51e1892d9f307fbe65eb171e8132c2af18555a738b82
psk_id: 456e6e796e20447572696e206172616e204d6f726961
enc:
81cbf4bd7eee97dd0b600252a1c964ea186846252abb340be47087cc78f3d87c
shared_secret:
d69246bcd767e579b1eec80956d7e7dfbd2902dad920556f0de69bd54054a2d1
key_schedule_context: 03446fb1fe2632a0a338f0a85ed1f3a0ac475bdea2cd72
f8c713b3a46ee737379a3f4c22aa6d9a0424c2b4292fdf43b8257df93c2f6adbf6dd
c9c64fee26bdd292
secret:
c15c5bec374f2087c241d3533c6ec48e1c60a21dd00085619b2ffdd84a7918c3
key:
base_nonce:
exporter_secret:
695b1faa479c0e0518b6414c3b46e8ef5caea04c0a192246843765ae6a8a78e0
]]></artwork>
          <section anchor="exported-values-27">
            <name>Exported Values</name>
            <artwork><![CDATA[
exporter_context:
L: 32
exported_value:
dafd8beb94c5802535c22ff4c1af8946c98df2c417e187c6ccafe45335810b58

exporter_context: 00
L: 32
exported_value:
7346bb0b56caf457bcc1aa63c1b97d9834644bdacac8f72dbbe3463e4e46b0dd

exporter_context: 54657374436f6e74657874
L: 32
exported_value:
84f3466bd5a03bde6444324e63d7560e7ac790da4e5bbab01e7c4d575728c34a
]]></artwork>
          </section>
        </section>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9S92Xbj2JUo+H6+AhWxVltykQzOg7LSVQpJkSFnDLpS2E5f
t28IBEARFknQABgKOTLqW+5Dv933/oCuH+s9nQkAJYWd7iFXrkyRBM6wzz57
HtrttirTcpUcBa/v53kaBxe7+SqNgh+T++BsE+X32zLNNiqcz/PkEzx08eOZ
irNoE67hlTgPF2U7TcpFe7m9Tfg/3a6KwzI5UhH89ybL74+CoozVXZbf3uTZ
biuDqHSbHwVlvivKfrc76/bVbXIPD8VHwfmmTPJNUrZPcXylijLcxB/DVbaB
Oe+TQm3To+BPZRa1giLLyzxZFPDX/Rr/+LNS4a5cZvmRCtpBkG6Ko+CyE7wM
YcBCBfAPL/0yjZZhHgdvvN+y/OYoOEmLKKOPyTpMV0dBvpr/R7r91Ck+2zF/
hPdggJvwU7hxhv0xzMtlelv5jYY93+Rp6A57y88m9+GmM9fP/0eKj3UWuZ3q
ZSd4k263ziwvk81fwnW6sd83z4An8x9zeXgFz3bixI570gn+kGWxM+7JMk+L
Mtsukzw4dn6l0Y+321Xijh6Fd/+xTMJturmZp2XRgRODU90ssnwdluknwIAg
OLnq9o7oJcGyZ6dJkd5sAjjR4HgTru6LtAiyRXCRh1GZRuFKELDtI2BwFS2T
dVIEV0m0y5MgvAlhD2VwHIdbnAuWnhXJBs4OF18mn+Gnsgyj22c8OUA3KY+C
ZVlui6MXL5Jtnm7KThpGeQc29wIwsPei153Sw4S9AX5FHw060T9t+b9FrZMc
YJebrwW9Mthb7P9WefX3neBqCfeh8ubv06jMcvkJfnv9+sfu2AfhVbZOgoN0
c1jsFos0SpNNGUTZJk4RUkUABxAUDKYl3+nEwPHJ4Bi/6I9HPjjGj4Pjt53g
dZLn4eZvlV39NvyUAlL5P1ZePoWXs8UySWtvnyabDaBJ5dfK62ed4Md0VVbf
PYMbJj/ALz8cX/iw/LBMgh/Cbfsiz+arZF3A7QiDd8ldcLIKC8FM+QXhWsLj
hIJpeY8/niBcs5s83C6BaAqSNgN5lW5uOwVC+ibJO1G2fgFnVsLZvdjGC0C+
Tq/bnbwYtEfDbns4HE3H7f7HaQd++2ak/NAJ3t+G66zMKrD4EJbFLrxNKz/X
z+EiA3yAzXwKV9WjgIOMa78XSZ7CvYa7r5d0fvXy3VEwm0zb7o5meAbH767O
/UPAb4KfZp3xwGU/DmzvDfBfpZtwE6VAJ66S/FMaAUk438TARPL7oN2m945v
8gSOAS4FEhn85gMgXbEFVhH8DhZ5E5ytgBgCtQlOdjnSDmeiZ98KbfOBiSRc
d6Bim+BdiNcNl4nMCzgNrrOADe/KBIFwfnZ21huMBx4g8MsAvw1b5r3gaptE
KVzz0N7ufUBq4/ybmPbeQ3Acx0wUYB0fkmi5Sf+60+hptjj8xi2abSD+n62S
qMyJbiOw+WO2SaMCiPdNukmSvKDtXr33jxy+eHF+dhL0pt3BoN1vwbDCOIDY
01qzVXaDWzLXze4AvnVYw/EKpIy0XNLlvQCmGvRp7yARrBNcnHCF6sYfp2fV
jaNYos/1PfDrTfo3XjAeij4w/d2LygsCm5J2gQA7ydbrtChQvIKJrs5OfvBB
9ACWthy0wrnPDB/w8OEHlLdawSegN0G/mSoBo7ghmg9/9Nqf+nWCQ3f2JXCh
WYUL7ebwRwn3HmBFd/M0WaQbwjdEjfN3p+2Tk+Oj4A/LhPn96+yO+BoyxmW4
WiVACduniTnIOQyRFvBDdpfE//5kVjV7MexNq2t+lEi+TZdpDpLUahXmiX/Q
v9uARJEXmsSHqxRgvEnD4Aou9mkKQu0ewtnIprRU+YdzuJ0FYEQcrvdwMMuq
HngVcQUkKA210//e68LU7887moVYojudDXu99oTECJC5tbxVIb4bTxB7SA14
6pH0uy/6w4F3JP3u40fiCrr4zz5h17mRIPDilU+JyBwDlr657Her+6PNAdlH
HEU4mMvzDfvpDWezb94QiEPHq7tkUxWGsv/6X6vKL7SfP6TR7R5pEWDzcgWc
bwlCdgU++W6T1X+sAagZ5UDmCnfRbVVoinfIevyfaMTL3TJvmwvyX/9HGbzM
ouVuH0Y/KpP9A4P/Q+jSOCJIPpdpsk1qQk8GEsWm+tvDS4bH3h6fHfeq2Ihk
f4tLYCpJAqXhHEkc/B4HQkaP3PXk/OyqGUnTJEk+b1ewsA7+SYgazkEMAjXq
BSjoOxQCXozG3WFvNnzhYW7vCZgLyskP4X1WZMFbYKjAx6tH+MADRltMYTsX
S7h7kSP8tEAnPD9pwWsx0BlgZFvQ5JoX8Yq0CZD34uRvcF0+AaGuLuPBR36x
hbxxZwFyCDJoUVnIg4/8YgsBlf2K7jls9lO6CiuL2PszLeAiW92L9OGwuOq8
yOzffehVmP27bIOi9jHolO8ykEmSGDZ0dnwaXCafUhgmaaClgKXx506cpYSc
PnfqDrrt/ng2nLYnH3262nsK7+7UGDcD4O9g6q3HuDqo+O9uKvNcwurcb/+x
GYCQfQij23W4qXKKl3/5r/8z39R/ZXL28i2Av0jCPFqSjP32pS8IvHwFCkx/
OJ318Oc3P9RYIwrLJK8hd3wPpGOViNlkjw67jzX2fNb4BB0VWOObOmPcrYBA
v6myxRMAIxwpKQDNo10ANcp383n1Vl6Eu1X1lycO+QF5AchcGyDWVZb7YZmt
w6Lp9/rg8NOHpCh/n6BZpyJ6kTCCvwbyczPUb0C52c3ZZLAAqIvZNS8XbfxM
ZtcX81U2fzFajLqDaDQexmG3O++Op5P5IE4mo0UvXszjRTTsTmZhPOi9KGHS
9ieetPMX4EXVA4TPaJnUqrRBrHG3P33x7vzqQ+fqojPtdtuj8XE+wMfxS9JU
ioaHX51fXHV603F7SFaYk7f7BxxMT2m48GRVwVY2DMKyCLVgVagUJ6556yig
v7KP8+xzMyw3gOQdwN77bafMXsBjnWW5XlUpkFJt0CA1P1XqwxKEY81Vgzgp
ojydAz0Mg4JMPqSEibFty5IzLtMuLDjAsz7s8Ejy0jbPPqUxDQOMKw1haCAc
ze/DD2E+T2E9+X27QElBbVdAr9HUyTpgGORJlG5JC7RjdILzMghXwKfTTbTa
4WzlEg7VB6GS+YuWPIYEIdsk8GxYeo8WwTYrioTUVloU7CJpF0ugtzHOp1DR
K++yINuK3gvDFPVxasPIfsNtsVuRyqzWcH1AxS7WwcGPZ28PYaL0E75Ju6Kr
gz4F2fzmPoD7MU9Z3aYhQek0JgAFI7RojjihYUhr320iPpwfT18dtkhH3YdZ
wR1cQhVaewpgSxgcIA88dB/TYwInRiutP5yGcrAO74NNVirQeIvdFi1T8Osc
8BqoBqy06AR/MOiB5AgExDIVA5AIjYJDO9Js7uC51b3aFTAM7iIx9gAA2jpF
Czm6SHbREmBSNX+dpvB00n4NJAuYTHBwdnL6+pDPUl//VvD67fFJex4WfMrN
UHxtwXj1+rjfqd6btCB0yeJdVOptsL0ieJXlu7XhZmy4CA5OXl3+cKitC+eX
H151+GKu0zheJUo9RxMLj0dWFMcoVIi/gBCPMSNx8IEW6XyyJqRlCCCZg7iv
Cja8CUi37KCATwDxKKElwWJXAIvwvqhc3Miz1SSdm05Lffny75evTnrDfu/r
1w5qAbAkrZXihblPk1Vc0EccAo4ivBEzZvwJzh8+0TQOUrvT0CLx5W2SkyUN
FzlPNskiLek9u1v3NRA9cP481Iit3Gu0BGxBWATPBMUZ9cxIuFC8GDyxJTrP
gLcRNXymHiKH+pQANQ2sl0kOEnEZgoYYBjGgJnxGGGwBccJoeaSe3cCmciQE
9bUgDHC7HiFpXqEydtXVCs+I1wYLgPUUBOso23yiMd2F+2QKHqfBQ3ebvCm4
B6uMrib8jqQUqNQ6Q9eVT8aDyLisCrsKtROLBWAv0Tu6SeX9NtnPIvCw1kgI
Q9Q0tL0YRHqNui5xf0u7xL/ehPdJbq2sgKbn7dMOOXXXq6INYC+zKFt9/YrQ
VR/eXGmDEKz9ZIVEBilH5r1YwotJsUkB05UCKoNHiFAu8XQBAkmwAZIAlxyh
vN4mJS4ED2+TbdrI1PIM0DicgzxaGEMnTm8oqMNwLQhaAOECJrKENmPaUaF4
aJi9yen4ai5GpH+gdR+6wLL+CSW/wm7xy69fW47RHr7UZn36wTdx469X7/EH
IpBnJz/gf4IeEAb8gEQBTiGBx9huAABnto5SdLa7WRKo2HIAjx4Dq4CtFUCF
PoMcCstUmuYRCduK20rID1zjKAT+gO/cg6QAQEI2uStjAoPLJlYg/wPOZNmC
6Ea6iXn8XQpsHo/kIBSv62EQkdu1bXE4CEl/CA7E/Ns/ZF8kaZqwnUWYwroz
w9xQEA20IFoXtBYpSg9wBYnfC8+jW+EIT8VuXiSlEo6i+VGhHyHOir8AFqMN
XuQDDa1wniHF35UOwadL63pXQZ/Ey0EzEwTRxzNH3mxx9V6l6+2KSHYSM12l
VQMdATmSeZRsickcMDYUBn2PtgWuYuAGNeAWFrptfvsw2G2AJeM6QaQib0xR
7NZbhgPsEHaHEKCnVveI0/bEAeNc6zDgHSC3mFIRK48BEus1ECyAmmKUC+lZ
tPyT8f/LF1gGUgoABDoE6Nr7R5mD6ghv4p3ko9jAh2JXPF0O6CC/v0z+uktz
gnGBlgiWFNUHYZoYP1IEz97+7urDsxb/P3j3nv6+PPtvvzu/PDvFv0E6efPG
/KHkiavX73/35tT+Zd88ef/27dm7U34Zvg28r9Szt8d/fMbX+tn7iw/n798d
v3nGYosLAiR7sEWNNQAPvHlhobQ+EeM7L08u/q//2RsCTP8FxIV+rzejA8EP
095kCB/uQKLk2bINXGP+iEipgPAD3HAUFCSBSaUliP4tlPmKZXa3IazrqH/7
9xVKQ+3xv/9GIVB9OC4ydMAQ90lyEIhw2SRYgt6AZAhwqbIx2JTeAq5D0X0g
1GsFebZCmoKrnSdAmFK45+RmAIw7AmkuuD4obn9qBdvbnw6vjwDXanpAUNUD
8IltmOa8KtgszhH81AIl7o74y0+IlsRyF8FVK7gkwnNGUEjwArSspsQrS7ZI
CvJwhb8gFcB7sbr/Dka8htVd43gkP1gNhN673ro/WuECt7W9xY3hnhCosHBP
PsxynAhjNhDOGQ1Azzgz0NQ41hWtOji4OsTAkhXtC5UKTZBwV4Ujp1ghBt++
NFrhweWeAQAcCVGCfWOcaQABd3TGCIMFbGMZ5ACMbA1cd7VL4DVUZJF1wRG0
y5SUFBrl+rz//uriALD1DuFygvJVXhLP3yQ3FDNEV+MGNnu9uUa4hMH13XUb
PYXlEg94nt60YbcpUt/7EqUDjKcgDPdukVyYbm+CtAimfn/VP784+OzO6wwQ
XH+W6ZoWg8PD3HsnaDG1xXGq6wN6lOS0AKB4IJIdfO62gk4H+PHnd7IWVA2t
1uosCvhhYN7rfu72WgH8t98d0P+H3VF3fBh8j3/38Fv+hhDmmg/kYMNXalsk
uziTQ3J3DfMxaAnc+EuBb3/O8oOwNceXf3p/WV3Vd/xA9/Or7qsuLqXXHwx5
IWf9k+E1rvqclT3ApjzHwI0sQDGbyYbRF1ksB80nzG92TNFhqt0GSDyFlfDS
iOz7YTanyRZvxCZC3/OX56iVtlmn+aoUsVwj/2lBp/QIm+V9QIJ+/RSig5Yo
gMwPonr8mNxfAAU6QBBdElxJlDdqJO7YqCmhpVgusevwkKeoSZsB09s1jnma
IO0F/bAoXe2UKS0+7wxKtit3YLiUcM64Yw/DYejrllBI+hAImyNxMWQb5ioJ
QQa5flfcCj4IqQDWfh8cFCSe8grQDtfG+UVOBSEx2pE951B2dgXPhSsADBvu
YIsHQuUvSGfHTezBxndbmB8OJItFQ6bFOQSUKK+BYNE4E0HyIsyLxyYCqAIF
BCkQpO3KRKJ4GZxFsS8PUxrSnfgM8fxa0H0HhJ1WuL5mw6J5TiwmIAPvkBHT
8s8Q72C9l09Dpo3DrWj0Rfo5iYVEVtThA81WxD4HUhoIHYekSZGF3n/ZvwEk
mLH6KVYUFnnjxGq/NIpI18tshVxK5DmXkdW4HcDm8roCWhrKAe9GICOQzTaV
5flAPMVFHcATraBgSO67QjsTClDhtZd8WA4ykInHcL6ngRbvHo3jmyHgCSMB
8/qv4ccqDNz987WmfVkQWNjXQXC8K5cGlxAMV0AKDrQZFrj2VYgGyUJj3OF1
y9iMQKbb7kr2kdC1S9h8WuzykI1drPfUdxzcwYgaO7WmRePsxwcA9tW1s2r/
8JCK7V06P+ou3YhyDPWCV03i6jet2a6X0eCBNb/jYUS0k8uTbizBDBvmZLun
ng7WCY/o8RAV9g+28fGI6P4DgwFFe2SsDHVih5hybKU/SvHEURwQ+cMYvrrX
4C489ewzOVkOinAF4rgwQPkS7cWu8ILjwQKIalkavtSyC5FDZH7pBtAZn8a7
voYFIvkVrkdW/o31Tzicge8cLkQf9dnnLTx/sM1v0R60yFrBG17eloapr+4a
Hr1mIkOjmWkMG4ZRrlGyBDL4xmGyfAWra9bHsZTTkKfQcqhvlgEgcn4NYH1c
fA4b9tU7tkJLD1mQHfV6469fjzTjDlcHsJAWSsNoNgzDGG5lSTsXO3DVVxIY
bxQDcVtei2m0KLIoJcwll8k1DCYAqpDUa/jPtbYCRkxErulPuO5kHcd3XGsI
koAQYBqVjdzE59Zs8UzeoOh3mYTRMomFsBK/9onpe5Aw6yCISuYsDII9K3EO
v3nvbFx6aOtm2zQKUI9dTq4CA2OtmxGcH2AiDAfajWYi+TdC4t1DhMC/9wap
9Kubh17lne5/+QH6imjvIB9uGqHfNJZ6mdxnwirI0tcS6vz2+I/sF00+bzO2
izoagjEiosSMP2vjhULDR1ICiLQeaGRAoYUAErxJypOA+ScUTIunisBFRQTW
tJY989Y64Mm/3jxPEoCLugDsOVr/bvm3EPl3r/SrjoOPfIeKXVomH9k/CCvc
oo2ZHLbAJloB+1gxWSJkj1mIZuc0YhOEPmqFp4/IbLU7mqJISu+5II0RbRYp
TEsYgwo2muKa/axFohxLaeoYlenwnfUXZME/bphHkWGELWmo7zIeo3cIVvgu
K0W+qmqX18bIbM3KIgS5KqPo+nCQh6hUkg1vk2kpU5uhWnAOqDWzY5+k0x1R
iNjISOI8s1bskH0qsOkkRc8NiXbohNiVjorgWr6apWuyv/1lB4plcQ+jflZw
5XL0/cujORJCzCWpD+iYVlKyKRRllpNyBNBT1rHniCHZ/C9JVHZqxkwAvHUN
4FFoUzxg/yKM0lVa4hAAS0AzQJttmOtdKsBDsmCgdBncYWxPSP5BosXzlMAK
V/4///M/FYwavAnnCdAHX7JZ4Zcs4CCfXfEzH+Fz8H0gVh6KCGp/6j1DZz3e
CYzLc15UmhsEDWPzYIfKX4KVX/Q4IsZ4i4Dv7CrYTPemFfQPW0HTkky4U/Uf
ZwpvrZVFyIy4CoIZHRVbDwEDrvU814Kz5MZjwwXhKhxGSugbfydYQUgC6iii
bhrBd8YE4iOzsFiQxuENvk0gw4WYpVdiksT5goZVQArQOcWcwpCOlrs08i0A
wchLZujP4NFnfIf44t8rLQzbEWC9C2O2ZtRHbBM9CSHdwh1VxlZ0Bv7grJzC
nwAUhwjhuGhtJU9ikQi2f/kSL2+T9devFJ3z5YsVBNuCxNqIQ5wNpcbnz4PT
1+2XFPCBWzg4fU3G9y/PeSilrjBwBUjIHTt0b4AkbRBiSLJZOK4GlmBYCaUA
CxHVth17Sa3ngBno6Wtt1/oj8TIObRAzLXlRQrLVV6dKPqP17iYxsliDOvcT
C1y+UemP1+KcFOZcGZdVOhVopc5lpPHyIUksuP49sMCYNifM0rVZq4D5ySfz
kNitcdgHhKjG9VVVTkU2GgTmIUsMD2t31UFdcYCu6gbPHPdmPJtyU4iNmRvH
bhE6JaCvlt7SRl2j7VeFtBV+uSYkO5C0JdQRr/VFsThyF94bMyY9iWQC7jQF
+ySqsnjGN3LWwHjeozgBu2nNgRlSULCNSnt5rq4Vcwwj8LiII/4tsuiwENP4
GFxKjBxSVW2euVEV6HZ040n0iZG6I8dKo531UFbeaBo9JBw3Zp4YrUrwJ7p2
174DrKMtsWiRL8RQ0Wkyg2tcK1zDtM7ZbDwSTaia7Mki6/GBVsQdV8st3NRI
ImCEQIWLap6rsmN5tDDQ443mkfESAwTXH4UiEn9MwuQjsC1gjRWW/gw9wfIr
/Bkvkd3x7fsot+/7Cg+Wp+E977ln+7mp/sdZVSsQ45PDXr3hmPtbmzLuorg9
QxJ6BkuqnRwK6Ev4gSgtPXaJ38FBw5eNFvyzQwzPhefW+56gEZxFW8mCbHz4
Ko1RhdejR7JnzxS9xRuv2IGPaKW48cabAM/5ACDj4+MbxCcP/x/eJO+vwcj7
1BOW1bkH3eJdX/GnX+bcgVg+BLerJ8CNLMD/NBTZZ3H+BlxxQSko03IQCPf4
VAx6CFxX/6+AykrkRpp2xF6W0kmERdEUCOy1TxqJ86hrj/YRV9Q0OSyEmReG
jeOqUu8pRUICfN9O44LMKbgqvQxHYUKpuxWwxsLDoNriqBWoLWiJm7iD1qqJ
qSEnJOeljjM1ioN+T+2X1D2NmqKaOGBLvM8dde4pHwXL9WsMbUUXBc4tEXks
SZHH+gCNveSis8ZMVj0PmiAdVCB9aOxjGDALohtKbrgXDBOyqj0umqDRkZjD
23jRZquKiTsETZ/Ce+zm2OaiSMg3FRkaAMNaBmvSbatJy8jI1HPJijdWbNIL
UfF4JcPaEM6FnNs+pt7iQGA0iRvXjAyr6n4YtGbok7euLy0Iy2qWYbG04Hei
5ozYiMu8aPdH4xb8bzAd8qYv2qN+z1sPiO96LQ/K6u6yBv1WMJzyiOOxL5K1
VGPs0GdQ5LI8xrhtA1J4areik050+GtE4a9brN7hBat2COw/9Uej3oym/WmI
C6jsw18jPTeqLE9JjACGuk8mwykGx1xJzOUIQ/g4MgTwMMsR33GojbGAkTvD
sjgtxVqK7Qh/hQErIYdBl31YQkL2p91qI3HFMDFKnGjOgisPOhpeDhD8M4nF
Ofjx5PxQFDoMaWKV4SkuUfWwe7HZtQjrBOEZTRP4YJBSpKWb0VN1ViMY7eJj
fY+rgZgkhFPcudXtOZ6MAqrtDEKdRAHlbZEbjZ8TD7GvtPpEmiJ1HiofEHx5
jqlqXwEL5HDEQtFChZIPDmMSkrvAi+KRaGdzxJwcoJrSncTyUACeJhu2EDtp
UuSV4mQOUfA3NW1M1Lj6OG6cPnucUHcsEguaHK2johEjNmSMJBSl6aMAnyAy
IieawqR+UAyBXUac2NQLZxE2BtxNXyGXBgNoo8TZaLRaL46DYzoxL2yx4k3i
UIK3Yt1F9VMdcAA5mkkJNTdihCrvg9QWbTnUjlV2cvlzKhutbTOo/NwocpAJ
NSNvpWOxZ1WR0Ea/rx9FOwLsqJCYRkY1pouhZ0e+gwvOGXBBQwKcQa6jPWlv
6uG0t9ZTX6sEeeo43idk2s0zTECrzCt4Whm1Q5ixJ/cMxT+4vliHyDmMqq9c
wOtmIGrbnNhMrNFuk7TReqTdHHcpTO4gmJM+AF+Xd5hPtM5iCr77OXiLVgjz
z8/B70nA/Fn9fPS994/+DL/Q2x/p5Pmd7uduNwjML9viNrC/9JxfECT2l37l
F3qRfhngL1+OAqJXbVosp6F+zzm7uOjiGRAym4WBOKglW2acGLMCiwQELO+y
dlEmW7gVJZYEgo33kGCXAdmmXChrUZ9NaYXmLBpuNDCRb7Qa1GJgOqrfCX5X
CDaZsTI9A8m62n3N1cfED8ePfpSwTd9q3tZ2loBpG8muOAHbkArVcGdxaYif
fHcZzTmljRnphgsKEI4UmTLclKDGruGU+aHRNYI1ijPoHLQk3aS3Ksx+wpUb
cyP5Az+jnEGhBixmMYrW4oXVly900vw8OvKYm9KXMVrORSbml7bW+0UuKQGK
0ulnZhGFJKrGtsgRuj8LksaDSkYGQlBVnxQ/lptD4i6d9Cd0pu3WjkiSg0KA
KYNkJtduY8e2eUDMpQX8sLhFxQu04zLqHLKDUtdKa8Q6jXIO8wX5pqBUV5t1
hjoO7mjHZBlB0IE7kyfoYm55mcp8sPATosCGKKHDzTdJEhc8/F1IoT+xDutD
S/AyjUhkR5i7BlMQwDgXVusolchGS8mOOUr5c4gI3/Iz5zBJF3dNp6wcVsfe
R/EQOVEgRncUWAkNtbfTr+WGqhSn5DrRxoBPq2RR6nedBWmclNCPto4NENwk
GFoZz7qVCXpkFZWsY51yXBG1MTLElbRZJ6AF4tstlmOuDe3lNzTBvSbkMcnM
oCDtiE54JtpC8ZGJqLcBQY8WRpInelEpkgjuhvY2A/4w8fUHVwyJBU3RBgG0
cIDgCLofSNLOoiSG5yoZAq78ScMDTSExl9Jn1MV9uYTLs8JKRRzkhaSOWZ8j
bjF54/fx2LTJhD1oJ3kSllptdOTgEyHMX543eOK0N9Sqv0JC9ug1xCFEXQdl
VWegxruVpgh4o1eh9nrohE4t3VMomseElCyFd+sNqDWCPHHsOBRET5hwjSUI
jUAgxiI5WK8CFz7c8j1CltWiKgEDelYpHrmuzls9y0T/0H5DzsLHcVgIbnMB
nkg42k6q8bjX2kScfocrC4Hb8A6A1T57dkhjEabjSipi2MHF1Y+HQI1XpO+h
qOaz6hqn3juZOxUZxdoYv2eDSQxNgxkfGeSfqOghYjAw2EMma11wDjtNIMlo
ZXbD1xmWjcQHpdzVCgthkIDTQo84+3P9HbihNpJMJMrzmgwTG5I6Mhqa5sNa
Cklps3i84USRz236IEygdBQrWjF/D3Lv4h6Aek6wQIo4TwC73c26HJP2zagl
u6Y8inX4OV3v1mJPkvoDbChUYkij+IWySFaLlratxV7lxIqdz4Q788NK2wrF
ZqblbAGzjolZu5Y9Ol8J82dSCRoZIASQrhUGN+lE6UJ7hDX1pMBE2DYS/I86
FpOdnSQqJbm5nxwYZA0eLt1QBBuhPmibcFNpkZgQb7ndYI6icD7fXmKjvGvK
kw6E0GNKriIjtps6USUoZKcmj6YYJBLyDXBpavgDLxjRo1bl6jYFmctNJwrQ
aOARDLQGJOT0CHtHTCFTlnrclKVzuVlDd2xYgWfDaql6WpwEgoiJtpa2ixEw
YvDG7SOIGkDRcPNtDleYJ/bmhubOxS28sJsngzIwoPQMnsonvPvMXvukAWI+
jbGAQIg6SadlMEc7JSgOAT7FC3PvFek612ESxrT3PnM78qeTbVUrGA53g9HS
uM3qBxpF6V6630hoDg7qPegZf4XxUrBT8Fiwk6oHO1kdgHn7kzw86il+B9fD
w2VimKKsfTmh2YuDDJZCnNAXXvXlON/RGfjfySHgl0q8Pv/5n+LjR/JPOv33
wA/dL3hy+I4cglXKz7IJPEb/gWfJNXiT6bEO8H//8n3gDHhoH+CxD+Qv/zEc
CyN9FmY0+N2+x+WuOGDo7HOUEG8/eHa+QYpPtcZKupXMrZ+R188ZC0+FFo8Y
9ycjp7esgePPh3umMKPam0saKmIP6mBJ/EwWfoBfyYyHTVMS3DyTyt5Z36Yc
A6ophN3cM4li/DG5vxIW8m+X79+c/UYOp+Lb5WDC6ok9fq7kpaU/P5LHpznM
w3nimX01oFkfes/8/sxGRALJ+qiZYt2ta1ao52vZSdjHWwstkShQHx7PdGhJ
QLgpEePVgBTzNPz4rNW4tFbwjnDbsv/9o9hnHgtp2TPThgIQfLFi/3Tw4BNC
Z/ZOxvAU/7foY4JiJFnY3bSCbqu6rEMhMiwj4WvXQZkAMaVMGGP6tpHTVyj+
Xja4jHNOpVfC9OAppzaBH4u1zyRlEm+1R8zT2Fied6vZ6GmtWe9aAHDtGPi0
Lev44twzJ5QiFdaAeu0XOkGZ2rm+KE+jxA03HRiMVI3QYRYc1G/n1pVcbDoG
Rn2KXIIViNxMSsVB5Uea8EtE4hfCjR1w4ymRo+8kHSv86y5xr9if3i3/7P1m
bhz/8tUlQgKn7/TxPwcl39HrSfdwXF/s72pzvCyiCpYnEpuwCWLjhDq3vg3q
sGiyJT+lo5bXJONQom5r5n9i7tdXgN1bDOG9Eleqsl9dStCeto0koFLAuoul
thrr0mmes0glTvqXmCqrIgpjJS+sFjraoMGzH3NOksOnNNQqEgf3u+q5SLIa
hSlnX+J8W25cPl4BrI3Mgk3VBVYrCoShp7k2FpnHOPyTK9a52QhenKefmVkP
Nug4wkjgnAbFbhFLOKoG7rQkBMtG8FkyRVE/DjZeHThMvoklPkQeHbGkVZNR
/AVfOpFSzaumoCkv8s6u2lnw5d+54AfX6lzFYz8njJt9wI0EleGKz4VvJa6i
De9/lSpFuvomoD2lGxjHorXLcnFGSSXxVBi4FV4iZFWPES8eCuByK0AkYfGb
VCx0XqSowH3imnMLVkqALoJGe7MDjIT7yE0WIlBvMDkljLHQMFZkwp1whR+/
ipCj+uwp0IQVJlmT4BWTexFr2aaJUwSRrwsyF+2EMbYtXDzrClYdDDdkkFFe
4QmtImqXlnE861QGNgrjeAV3hxCCYyy4KVWf0kFa6NsxFS6M+zctHP5U109Z
oVKmmBHmUVE6sJi+dA0e0PUOMBEM1AqqRmKSlIC7w3nwng5lZbhksj1JCQ0p
nzHo12tncFFMqrcxT7y8geW1kqdzygnDPBSj1FLhNEJVze6dk0WvuWH+dVoD
q3NITV0+/kfpDo33qCSuvAVVSckjq/o2uvLEBT1KMDZu7xiHYuA1/yVIBjLy
byQZVQ7Pi0gLYwp6oJCCCc03xhQQj9DQ5PNhMsGli4q/jCIH6JIT18PQJqf4
gGqsOmHiOimwqaF2lm/R4YIgaCELzjdi0aVCbi28UiQyYfIe2fiQOB2I6RKj
au6ylpYLkQooHSyI+aJISXQpRF6w9vkQZmBJ5IpxkZi6TAkUz7Ezy8HIXjJr
aUWPJux2tea6Qtk8nGMm4f3fTbs41hOYiinToVM59KccVwyqRqRJsn6lHjun
PI9eSyhtGMcetll/K1PBNGcPNleDZR2VCd+T02UoGOqBDJlKTYsmyen9/FOa
7QouG+rcuIjcxHD4c8dK5SYg6Vgj9VgooRV/dblCe3n9SBwTwmUqOekqzFJQ
Dos5Y+lVxgxrVkSc5lLUjnf8DsTshA4MU0e5HaYbXWYCFww46GFhrjb6SpuN
xfYscVoIW2zQiMeMWbYU88FJrVi9/pCxmmHquJUM69VhUiZHsR5FBmv5lKWx
Xck6LSQLFk632FFNyfO3L8lVVOFKeAIeWzI5DE3sqIG8PMqX8Oj+afIwLqiB
iTXtQZbfRJQf4mLfvPx/SDp+mdHlEWP/w7zPFZnZ6Few2h6mN8sSsPEOmwZV
yrA7roRKRBo5FDrqDbrY9VNsAeP1uB7AsBD7pMhpromDactKhlH1SVqVib14
YS0RNmPqAzLUPwlz90sxD2HvHolLtvCg1PXLY+83b6FJPPv/oHztG3twRqd5
ndh6YrL1iJsJnR42aq0plrKQirAxureN3yRULPUVeIZePEPAOaQsUVm+7YyX
bj5lq0/ss+f3KarrfsuVznl/wF6STZGSTxZTEcyNd9eYO8FowoNlS16YFHKD
NUbZ/U2nshS6ur9qXCIajEAe02IxSlBYHBL/vwS1i72xVDjTchq2PecJxRIu
s7uEAsloTc6S11hjAjhYgZUcFrtVJzgLo6Xl1SWnnmubF1d+djJXPauoEX24
oIQEU2H5CRYCOeBxY+RnZtmui41wmB5zBCXx5cCiKGzGPFINd6b6WTI0eeHp
C5IZpUaQ45OXhyVYfbNbz7FeLIUU0KF3D/lC7Vtq06q4dnWttACJlVRTqh4C
4MXc+XPZuEzMEAE6UIm4PHRjaZ2FJeQusgCvbhKRWwdEdGSP/hMm9JzBtqMW
ohsQjDgDXr6VlSuqIOPdAjd40yCx1gQ4xwYx7Kf3l6jMuKdiGw9EXAK/uraW
qaNGhShs8Vily+Bq1MWoWKFoaLlwJukEtSyz4z/yQakqKGxQMZ0bX/7SAEEm
ONhiXLh1UWBgG1tj/5bkGciP852UqDClGrnuT6rvmT8rXuwF0o2OwXZlsd1c
PyeQUq/zXenUynHXawKAO+odcqremNDOv0gPpoE7hBxNUps0TnMOBgxXrKLZ
IE4ngPODEbd/VRgCEdnoOTQXmyJdjxVBCwvlecZF+BAnw1WH6rDp2mvIoKOS
UkXhW4we6pBFmv464dgb6tLGv8EhHNrCbeQ6hG/PsdQRQuAq+euBw8ej0mW7
Zr+/skVuJFdF9uicFZU8q2xSeZsMHtjkZYcqrenqapSDi5ukb79lk1EpDmp8
nd+nMhuu69l8+Rg4tgYcZ08lB3qkovEKIGVh3sjQ1MUPyESQ5G1dzo3vITMV
fwQzgY7xrcdg1oDL/swq3P7Ksl7y1498t76XSAr4RjthBQxY5png5DpDzYsi
Z/pz+RA94iPRZxX85vvgoBf8278FB9Nfw0yHQTvouQe0rzCdPi8c41/htrvI
qm+jga0u+m/sAwvv0LAKxzpdYeeeSlyXc6Mbx7Bo0Aleg8YD57YCOWRlImoL
ElDcOFflOqlsTBKHpMGLuxxL6BRyu6iws6TLJrWMHKAWHIohRmmdOryHz34X
FNZfrLmshH3NXWrXnCPIeZoofdYC0dk5WbhZIAKXwvUL6jpbimRbsSWwC8Jg
d8skySW+YO1cMskUCVfpDQjh5wvjrRYCKaHrPkGBL+/InmGangTXMKnEaqJ5
TXMlYw6p1YoiJKB+JUzehM11ggOJFrRx4YpCRVtmFY234VrnfrijcZwNr80w
ypbEydPii4YNky2rtmMqZIaGnyiiXOCb1X3nsOK614Y9qfKpx9JDsClRyl9Z
M61ggb4fcNt8VsvK0RVj4hljoihEgnqiE9k8wMdSdQprKK2nR0l7JOmbNwep
XWQXrx6rLTd7cYmNyQq++BqlMZCg1xmY2A67IDeLeTocjt0s5klnpNOC7QYw
4bKwRorQrFP7wIyobIIlOHEPQEGRT1pbfXNtajG13EzVQoX6ojOdiJ2oP32k
ZiPypKVFvsEdnVxSwda2q9N59/BjXXDysjhatMxliGvS4c62eFt/NPr1OyyF
1ZgAEkg8tM3/gOkU1zujB+9RDs52Gya5MJEORK5DkK8y5X1Vwq4DJ+ra9IDC
mIInhl1TpJEfdW2UDIm6Vn9X1HXQFHWdFsq0Oqjx8A7fpoPq9nUFP2HV1SAp
YJYV7YyjwvaHTDVNoPnssafvE2wznZtXvaHHF+dOPgcHKiF7Q5WWHqV52mRR
JyJyfhpcdz+/gn+umRhyILkb5qEtfQDcXbRUnvkBx2Ybgf+eLanrqWSSo8rs
SFXMiCS8cUC6yTyUMJGzqhpr3e1kRqDk9yukuRhrAC8DHLA5RcFfgcZVtsNt
Wnx91IzkvmHhyknz1N6NMk0ruWomvxPBGgY8hqkSTHFJrlTv9qr54CZCGfqs
o9m4RirRbtqRX+ItIEvLCr0Mz5x1P1P72TkTJRrL9tuyCONGp1sMOvKNs+Hq
396+Pz37jWuZFVWHuqtw7S60WUblZ1KZyt2WX/GsufioVqvgSV/hqlhrI6nA
hJxSZq8aVUURsUuozV43xMoSjB722VeIvDhDHGJfnKGkx7yk0JqLqx9bZL2l
yqtiBGZtw9QjtzYWpTPvCNmfwYqeCe1E+iSzcv4uOd0oEoIZhkmctIFlKEUg
Td5kbnq5G3hOkocsyhNAnO/udBxIpfatH0musUG/2IQOjRb7Km48ydT/92CK
XtleVGk0xNdX9gQL/iNYVJfQKnQdT5eqR9yFuqeXdJoRcYLTc9gVmpnIBCf3
/JehJMqjJBX15hHqofUcDz+oABZ8XacZDTzv76EfxlnLuPEAx65gin6R8eWS
u3B5i62e+oMr/rvIzUOrZeavW/w186WvkhL0TcRJPZk4Bd9AnJQhTsiMbSXu
c6fi95fnXslu5SPtKi3KYk+tcHyDInIXXsEw3eJxkd7sxMHRUc2yL96wVBoW
m+znlq2YW/UD2MkVZ3BS8J/o/Nyt1YkPlJjopnwx40Zl8SbG6BwdTWyGyt3W
iibhU/9scpZMlTBd5gszcNzHlBe1TmRHygA5KfhvdaBFQZXeCywsrPNLsSoI
VwEJfiZf7Z5/fta1MOlP9LrC/7a39D3+l5L5foZrpSNvmsZQPx+1+R/zR9M/
zo/yJ//P/e/DI8DPiiuVdLu0qiLJUY1r3NeLY+9P/p/+7z0cNo7w6iSY9abd
ZtjIXD2ci6vqSrUybNLdxvbco/EhDjPom2nHI/M//t7M9eXLu/OrD9Q8V7LX
UDUeTcfYnNLM1XPmopJoei74QHMNp2au2cT8j7//xrn6zlxUc03PNer1aa7x
0MzVGwz0/+D78bfO1bcw5AppFSB6MKQ/NfQqMHSLonkz2fPqWxhyCTZ/W/6+
RmPzP/3fp82FlW3chERd2wYv2/kpFbYhgRNvEKZ1rHbrjSHEhfbzeOWIHX6/
rBRxe+FFXSmrQlGKCb2QJ4uMKjw4JLbcm4/LzAKLskkzi3C1UhwbxWulyEhM
AQi9BMy25k7U1RaTBZy6WQ3TKz1jhwNo6kU6RXurlwvlOoYPFgjcU7fZzQsp
pYKhtHRn2MLvmO/L8aG6sXWbcLh9gdmn7TJrv4/KpGxfcVcjamSeU4aQMQ2i
CGcbT+8tFO3OrLyZ3RlwxqaVBHZmqezYWGLw76hgrfxWDmQGM2Fx8hMa/CRW
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
FnSHz/BCwtYCVc/sMasC4+fV/i95KK0S06ECAA==

-->

</rfc>
