<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sullivan-tls-xof-schedule-01" category="std" consensus="true" updates="9147, 9258, 9261, 9849" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="XOF-based key schedules for TLS 1.3">XOF-based key schedules for TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-sullivan-tls-xof-schedule-01"/>
    <author fullname="Nick Sullivan">
      <organization>Cryptography Consulting LLC</organization>
      <address>
        <email>nicholas.sullivan+ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Markku-Juhani O. Saarinen">
      <organization>Tampere University, Finland</organization>
      <address>
        <email>markku-juhani.saarinen@tuni.fi</email>
      </address>
    </author>
    <author initials="G." surname="Van Assche" fullname="Gilles Van Assche">
      <organization>STMicroelectronics, Belgium</organization>
      <address>
        <email>gilles.vanassche@st.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="27"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>TLS 1.3</keyword>
    <keyword>key schedule</keyword>
    <keyword>KDF</keyword>
    <keyword>XOF</keyword>
    <keyword>dec engine</keyword>
    <keyword>duplex</keyword>
    <keyword>sponge</keyword>
    <keyword>cSHAKE</keyword>
    <keyword>cipher suites</keyword>
    <abstract>
      <?line 218?>

<t>TLS 1.3 runs its entire key schedule on HKDF over SHA-2.  This document
defines an extension that replaces that schedule with one built on an
extendable-output function (XOF):  the negotiated KDF governs every
derivation, the Finished and binder MACs, and the transcript hash, so no
SHA-2 remains in the key schedule.  The cipher suites, AEAD algorithms,
state machine, and record layer are unchanged, and a connection without
the extension uses HKDF as today.  Two KDFs are defined, SHAKE256 and
the reduced-round TurboSHAKE256.  This document updates RFC 9147, RFC
9258, RFC 9261, and RFC 9849.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Transport Layer Security Working Group mailing list (tls@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/grittygrease/draft-sullivan-tls-xof-schedule-collab"/>.</t>
    </note>
  </front>
  <middle>
    <?line 230?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In TLS 1.3 <xref target="RFC9846"/>, every cipher suite runs its key schedule on HKDF
over the suite's hash.  This document defines an extension that
negotiates an XOF-based KDF for the connection.  Its key schedule runs
on a single Keccak permutation and replaces HKDF across every
derivation, the Finished and binder MACs, and the transcript hash.  The
permutation is the one a deployment already carries when it uses SHA-3,
ML-KEM, or ML-DSA.  When no KDF is negotiated, the cipher suite's hash
names HKDF and TLS 1.3's own schedule runs, exactly as today.
Instantiating HKDF with a SHA-3 hash would remove SHA-2 without changing
how the schedule works.  This document changes the schedule itself, not
the hash.</t>
      <t>TLS 1.3 already negotiates groups, KEMs, signature schemes, PSKs, and
AEAD algorithms.  This document extends that agility to the key schedule
itself.  A TLS 1.3 cipher suite identifies an AEAD algorithm and the
hash used with HKDF.  This document leaves the suite alone and
negotiates the KDF beside it:</t>
      <figure anchor="connection-components">
        <name>Cipher Suite and KDF</name>
        <artwork><![CDATA[
connection = cipher suite (TLS 1.3) + KDF (this document)
]]></artwork>
      </figure>
      <t>A KDF (<xref target="schedule-profiles"/>) defines every key-schedule computation the
connection uses:  the transcript hash, the secret and key derivations,
the Finished and PSK binder MACs, and the Encrypted Client Hello
acceptance computations.  It is negotiated in the schedule_profile
extension of <xref target="cipher-suites"/>, independently of the cipher suite.  A
connection that negotiates no KDF is a TLS 1.3 connection:  absence is
the default, and TLS 1.3's own schedule needs no identifier of its own.</t>
      <t>Each KDF defined here is a profile of the same construction:  an XOF
viewed under the interface of a doubly extendable cryptographic (dec)
engine, where it absorbs the schedule's inputs as length-framed strings
and squeezes each derived value from the accumulated sequence.  It is
defined once for both profiles in <xref target="dec-schedule"/>, and each selects a
different permutation for it:  TLS13_TURBOSHAKE256
(<xref target="turboshake-profile"/>) uses the 12-round TurboSHAKE256 <xref target="RFC9861"/>,
and TLS13_SHAKE256 (<xref target="shake-profile"/>) uses the 24-round SHAKE256
<xref target="FIPS202"/>.  Finished and PSK binder values, including an Exported
Authenticator's Finished, use one MAC (<xref target="mac-op"/>).  The Encrypted
Client Hello acceptance value is produced by the dec engine's output
operation, Derive (<xref target="ech-generic"/>).</t>
      <section anchor="design-goals">
        <name>Design Goals</name>
        <t>A KDF turns the whole derivation surface of a connection into one named,
testable object.  Every value comes from one permutation, every query is
injectively framed (<xref target="dec-interface"/>), DeriveN outputs occupy disjoint
slices, and <xref target="test-vectors"/> gives byte-exact values for both profiles.
Neither KDF uses SHA-2, HMAC, or HKDF in any role, and the
correspondence with TLS 1.3 can be audited shape by shape (<xref target="shapes"/>).</t>
        <t>The alternative is to keep TLS 1.3's HKDF schedule and give it a SHA-3
hash.</t>
        <t>The dec engine costs fewer permutation calls than that alternative.
HKDF is built on HMAC, and every HMAC call nests two hash calls,
overhead that exists only to key a hash not built for keying.  A keyed
sponge needs no such wrapper:  it produces each Derive output in one
squeeze, with no separate extract step between stages.</t>
        <t>Over the representative handshake of <xref target="comparison"/>, the dec engine
costs 23 Keccak permutation calls against 120 for a hash-only
HKDF-SHA3-256 over the same permutation (<xref target="permutation-count"/>).  HMAC
accounts for four permutation calls in every HKDF operation, two for
each of its nested hashes, where a Derive here costs one or two and a
DeriveN at most three (<xref target="permutation-method"/>).</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document does not define a new version of TLS, and defines no
cipher suites.  It adds one extension.  The state machine, record layer,
all other wire structures, cipher suites, AEAD algorithms, and
per-record nonce construction remain those of TLS 1.3, or of DTLS 1.3 on
a DTLS 1.3 connection (<xref target="dtls"/>).</t>
        <t>A KDF governs only the key schedule and the transcript hash
(<xref target="profile-governs"/>).  Negotiating one does not by itself make a
connection free of SHA-2:  certificate-based authentication is
negotiated separately and commonly relies on SHA-2 (<xref target="authentication"/>).
A deployment that requires a fully SHA-2-free TLS or DTLS connection
must additionally restrict itself to SHA-2-free signature schemes and
certificate chains, or use PSK-only authentication.  Note also that the
cipher suite continues to name a hash, which under a KDF of this
document governs nothing in the key schedule (<xref target="profile-governs"/>).</t>
      </section>
      <section anchor="dec-functions">
        <name>Dec Engine</name>
        <t>A key schedule is a derivation tree.  A dec engine (<xref target="dec-interface"/>)
expresses that tree directly:  absorb a stage's inputs into a running
accumulator, derive each leaf from a clone, and ratchet the accumulator
into the next stage.  One XOF does the work HKDF splits between Extract,
at the stage boundaries, and Expand-Label, at the leaves.</t>
        <t>The construction takes no key:  a secret is an ordinary framed input.
The operations named here, Init, Absorb, Derive, DeriveN, and Ratchet,
are defined normatively in <xref target="dec-schedule"/>.</t>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions and Definitions</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>
      <t>This document uses the following terms.</t>
      <dl>
        <dt>KDF:</dt>
        <dd>
          <t>The key-derivation function of a connection, named by a TLS KDF
Identifier and negotiated in the schedule_profile extension
(<xref target="cipher-suites"/>).  It defines every key-schedule computation of the
connection (<xref target="schedule-profiles"/>) and determines the key schedule:  a
TLS13_TURBOSHAKE256 or TLS13_SHAKE256 identifier implies this
document's dec engine-based key schedule (<xref target="dec-schedule"/>), and
absence of the extension implies TLS 1.3's HKDF schedule over the
cipher suite's hash.</t>
        </dd>
        <dt>selected_cipher_suite:</dt>
        <dd>
          <t>The cipher suite selected in the ServerHello message.</t>
        </dd>
        <dt>associated cipher suite:</dt>
        <dd>
          <t>The cipher suite associated with a PSK (<xref target="governing-profile"/>).</t>
        </dd>
        <dt>dec engine:</dt>
        <dd>
          <t>A doubly-extendable cryptographic (dec) stateful object, whose input
is a sequence of strings, and whose output is a hash of that input.</t>
        </dd>
        <dt>dec accumulator:</dt>
        <dd>
          <t>The state of a dec engine, which materializes the sequence of strings
it received so far.</t>
        </dd>
        <dt>trunk (stage trunk):</dt>
        <dd>
          <t>The running dec accumulator for a schedule stage (E, H, or T), which
absorbs the stage's inputs, is cloned for each of the stage's leaf
outputs or DeriveN output tuples, and yields an internal squeezed
residue that seeds the next stage's trunk at the stage boundary.</t>
        </dd>
        <dt>shared_secret:</dt>
        <dd>
          <t>The asymmetric shared secret, computed as in <xref section="7.4" sectionFormat="of" target="RFC9846"/>.</t>
        </dd>
        <dt>Nk, Nn:</dt>
        <dd>
          <t>The AEAD key and nonce lengths of the selected cipher suite, in
octets.</t>
        </dd>
        <dt>FLen:</dt>
        <dd>
          <t>The length of the verify_data of a Finished message, including an
Exported Authenticator's, and of a PSK binder: 64 octets in both
profiles of this document.</t>
        </dd>
        <dt>uint16(n):</dt>
        <dd>
          <t>The two-octet big-endian encoding of n, as in the TLS presentation
language.</t>
        </dd>
        <dt>||:</dt>
        <dd>
          <t>Octet-string concatenation.</t>
        </dd>
        <dt>x[a..b]:</dt>
        <dd>
          <t>Octets a through b-1 of the octet string x, indexed from zero.</t>
        </dd>
        <dt>frame(x):</dt>
        <dd>
          <t>uint16(len(x)) || x, where len(x) is the octet length of x.</t>
        </dd>
        <dt/>
        <dd>
          <t>Strings are length-prefixed only:  they are not null-terminated or
otherwise padded after x.  Both profiles of this document build every
derivation input from framed items, so inputs are injectively encoded.</t>
        </dd>
        <dt/>
        <dd>
          <t>A uint16 encodes 65535, so frame(x) carries any x of 0xFFFF octets or
fewer, and longer inputs do not occur:  variable-length public values
are reduced by the transcript hash or explicitly bounded before
framing, and the one variable-length secret input, an external PSK, is
bounded by <xref target="psk-importer"/>.</t>
        </dd>
      </dl>
      <t>An empty value contributes frame("") wherever it is framed, encoding as
the two octets 0x0000 with no payload octets.  An absent input omits its
framed items entirely.  Omitting an input is not the same as framing an
empty value.</t>
      <section anchor="transcript-hash">
        <name>Transcript Hash</name>
        <t>The transcript hash is an unkeyed 64-octet hash defined by the
negotiated KDF (<xref target="turboshake-profile"/>, <xref target="shake-profile"/>).
TranscriptHash is computed over the handshake transcript as in <xref section="4.1" sectionFormat="of" target="RFC9846"/>:  message type and length fields are included, and
record-layer framing is excluded.  TranscriptHash accepts any octet
string.  The TLS 1.3 rules define only how the handshake transcript is
serialized before hashing, and the same function is applied to
non-transcript inputs such as exporter contexts and imported PSK
identities.  For a HelloRetryRequest, the synthetic-message construction
in <xref section="4.1" sectionFormat="of" target="RFC9846"/> is retained, substituting TranscriptHash
for Hash.</t>
        <t>In both profiles of this document, TranscriptHash takes no cipher suite
input, so a client can compute its checkpoints before the ServerHello.
The selected suite enters the transcript at the ServerHello, separating
later outputs as in TLS 1.3.  The schedule_profile extension enters the
transcript at the ClientHello, so TH_CH0, TH_CH, and TH_SH bind the
offered KDFs.</t>
        <t>This document uses the following checkpoint values:</t>
        <dl>
          <dt>TH_CH0:</dt>
          <dd>
            <t>TranscriptHash of the partial ClientHello transcript in <xref section="4.3.11.2" sectionFormat="of" target="RFC9846"/>:  the handshake messages through the
ClientHello, with the ClientHello truncated after the
PreSharedKeyExtension.identities field and the binders list excluded.
After a HelloRetryRequest, this partial transcript includes the first
ClientHello and the HelloRetryRequest via the synthetic-message
construction of <xref target="transcript-hash"/>, exactly as in TLS 1.3.</t>
          </dd>
          <dt>TH_CH:</dt>
          <dd>
            <t>TranscriptHash(ClientHello).</t>
          </dd>
          <dt>TH_SH:</dt>
          <dd>
            <t>TranscriptHash(ClientHello up to and including ServerHello).</t>
          </dd>
          <dt>TH_SF:</dt>
          <dd>
            <t>TranscriptHash(ClientHello up to and including the server Finished
message).</t>
          </dd>
          <dt>TH_CF:</dt>
          <dd>
            <t>TranscriptHash(ClientHello up to and including the client Finished
message).</t>
          </dd>
        </dl>
        <t>For a Finished MAC computed by either peer, the covered transcript is
taken up to but not including the Finished message being computed,
consistent with <xref section="4.5.3" sectionFormat="of" target="RFC9846"/>.</t>
      </section>
    </section>
    <section anchor="schedule-profiles">
      <name>Key-Derivation Functions</name>
      <t>A KDF is a set of algorithms and encodings negotiated in the
schedule_profile extension (<xref target="cipher-suites"/>), independently of the
cipher suite.  A KDF specifies:</t>
      <ul spacing="normal">
        <li>
          <t>the XOF over which its dec engine-based key schedule and MAC are
instantiated (<xref target="dec-schedule"/>).</t>
        </li>
        <li>
          <t>SecretLen, the length of stage and traffic secrets.</t>
        </li>
        <li>
          <t>FLen, the length of Finished and binder verify_data.</t>
        </li>
        <li>
          <t>TranscriptHash(messages), the unkeyed transcript hash of
<xref target="transcript-hash"/>.</t>
        </li>
        <li>
          <t>the derivation of initial and stage secrets from PSK and key-exchange
inputs (an extract operation, a stage accumulator, or an equivalent
construction).</t>
        </li>
        <li>
          <t>the derivation of every handshake, application, exporter, and
resumption secret.</t>
        </li>
        <li>
          <t>the Finished MAC and PSK binder computations.</t>
        </li>
        <li>
          <t>record key and IV derivation.</t>
        </li>
        <li>
          <t>traffic-secret update.</t>
        </li>
        <li>
          <t>exporter derivation.</t>
        </li>
        <li>
          <t>resumption PSK derivation.</t>
        </li>
        <li>
          <t>the Encrypted Client Hello acceptance computations.</t>
        </li>
        <li>
          <t>the domain-separation and input-framing rules its derivations use.</t>
        </li>
      </ul>
      <t>The suite continues to select the AEAD, as in <xref section="4.2" sectionFormat="of" target="RFC9846"/>.  Future specifications may define additional KDFs by
registering a TLS KDF Identifier (<xref target="iana-considerations"/>) whose
definition covers every computation listed above.</t>
      <t>Every derivation of a KDF MUST bind at least the following into the
input of the underlying primitive: a protocol identifier (the KDFs of
this document frame schedule_label, <xref target="dec-schedule"/>), each output label
and length (a KDF MAY instead fix the length of an internal stage secret
as a constant, provided the operation that produces it is
domain-separated from every variable-length operation), the transcript
checkpoint or other public context where applicable, and the secret
input or the stage that carries it.  All variable-length items MUST be
length-framed.  A multi-output operation also MUST bind the output count
and ordered partition.  Distinct canonical input sequences have distinct
encodings.  Outputs of one DeriveN share a query and occupy disjoint
slices (<xref target="domain-separation"/>).</t>
      <t>Both profiles of this document bind each output length as uint16.
DeriveN also bounds their sum to 65535 octets (<xref target="dec-interface"/>), so no
invocation produces more than 65535 octets.  The exporter is the one
derivation whose length is caller-chosen, and <xref target="exporters-generic"/> says
which requests it rejects.  Every other output length in this document
is fixed:  a profile constant, Nk, Nk + Nn, or the 8 octets of an ECH
confirmation, and each fixed DeriveN total is a sum of these.  All are
far below the bound.</t>
    </section>
    <section anchor="governing-profile">
      <name>KDF Selection and PSK Compatibility</name>
      <t>The negotiated KDF governs the whole key schedule of a connection, the
role SHA-256 or SHA-384 plays in <xref section="7.1" sectionFormat="of" target="RFC9846"/>.  Its XOF
runs every derivation of the schedule (<xref target="dec-schedule"/>).</t>
      <t>A PSK binder is computed before the server selects a cipher suite, and
verified under the KDF the PSK is bound to.  As in <xref section="4.3.11" sectionFormat="of" target="RFC9846"/>, a server MUST verify the binder of any PSK it selects.  The
binder is keyed by a secret derived under that KDF
(<xref target="finished-and-binder-mac"/>), so a binder computed under one KDF
verifies under another only by chance.</t>
      <t>A server MUST NOT select a PSK unless the KDF of the connection it forms
is compatible with the KDF associated with the PSK.  Two KDFs are
compatible only if they are the same TLS KDF Identifier.  This document
defines no broader compatibility.  This rule is the analogue of
<xref section="4.3.11" sectionFormat="of" target="RFC9846"/>, which requires a resumption to share the
PSK's hash:  under this document the KDF is the hash
(<xref target="profile-governs"/>).  A client MUST abort the handshake with an
illegal_parameter alert if the server selects a PSK whose KDF is
incompatible with the selected KDF, as that section requires of the
hash.</t>
      <t>Otherwise a 1-RTT resumption follows TLS 1.3.  The selected cipher suite
need not equal the PSK's associated cipher suite.  A resumption MAY
change the AEAD as long as the KDFs are compatible.  The selected suite
appears in the ServerHello and therefore in the transcript, which
separates every handshake and application output as in TLS 1.3
(<xref target="downgrade-resistance"/>).</t>
      <t>After a HelloRetryRequest, an updated binder remains under the PSK's
KDF.  A client SHOULD omit from its updated ClientHello any PSK whose
KDF is incompatible with the KDF implied by the HelloRetryRequest, and
MUST recompute binders as required by <xref section="4.3.11.2" sectionFormat="of" target="RFC9846"/>.</t>
      <t>For 0-RTT, the server MUST require the selected cipher suite to equal
the PSK's associated cipher suite (<xref target="zero-rtt"/>).  This is TLS 1.3's own
0-RTT rule.</t>
      <t>A PSK that is offered but not selected contributes no secret to the
schedule, though its identity and binder remain in the ClientHello and
so in the transcript.  If the server does not select the client's PSK,
both peers compute the connection's schedule as a handshake without a
PSK:  the client discards any PSK-keyed schedule state it built for the
binder or for early data, along with its outputs, and begins the
schedule again with the empty PSK, applying the destruction rules of its
KDF.</t>
      <t>Implementations MUST associate every PSK and session ticket with its KDF
to select a compatible PSK and compute its binder.  For an imported PSK,
this is its target_kdf (<xref target="psk-importer"/>).  Implementations MUST also
retain the PSK's associated early-data parameters (cipher suite, ALPN,
and early-data permission).  As in <xref section="4.3.10" sectionFormat="of" target="RFC9846"/>, these
are provisioned along with the key for external PSKs, including imported
PSKs, and negotiated when the PSK was established for resumption PSKs
and session tickets.  An imported PSK without provisioned early-data
parameters is not eligible for early data.</t>
    </section>
    <section anchor="derived-outputs">
      <name>Keyed Derivations</name>
      <t>Every derivation in this document that is keyed by a retained
octet-string secret, rather than by a live stage of a profile's
schedule, is a dec engine rooted at that secret (<xref target="dec-schedule"/>),
specified once for both profiles in <xref target="expand-op"/> since the dec engine
is identical up to the underlying cryptographic permutation.  MAC, which
computes the Finished and PSK binder tags, is one such derivation
(<xref target="mac-op"/>).  The stage schedule is also the same for both profiles
(<xref target="key-schedule"/>), and only DF differs (<xref target="turboshake-profile"/>,
<xref target="shake-profile"/>).</t>
      <section anchor="expand-op">
        <name>Deriving from a Retained Secret</name>
        <t>A value keyed by a retained octet-string secret uses Derive or DeriveN
(<xref target="dec-interface"/>) whose dec engine is seeded with that secret rather
than run as a live stage trunk.  The seed is the secret itself:
Init(secret), the same way a ratchet seeds the next stage with its
residue.  Derive then adds the context under the "ctx_" tag if any, the
label, and the output length under the "out_" tag:</t>
        <artwork><![CDATA[
D     = Init(secret)                # Init frames schedule_label, "seed"
value = Derive(D, label, [context], [L])

(o_1, ..., o_k) =
    DeriveN(D, [(label_1, L_1),
                ...,
                (label_k, L_k)], [context])
]]></artwork>
        <t>label is a 3-octet label registered in the TLS XOF Key Schedule Labels
registry (<xref target="iana-labels"/>), whose initial contents are the labels of
<xref target="labels"/>, context is an octet string, and L is the output length in
octets.  Every item is length-framed by the dec engine
(<xref target="domain-separation"/>).  DeriveN binds the ordered labels and lengths
before one squeeze and partitions that output into disjoint slices.  An
empty context is omitted rather than framed as an empty value, and
omission is its canonical encoding.  It differs from an explicitly
framed empty value, because after an omitted context the next item is
the label or "outs", not frame("ctx_").  L never exceeds 65535 octets
(<xref target="schedule-profiles"/>).  Such a Derive is the analogue of TLS 1.3's
HKDF-Expand-Label, and <xref target="labels"/> gives the label each of its labels
replaces in TLS 1.3 or DTLS 1.3.</t>
        <t>The following retained-secret derivations are instances of this shape,
each fixing the base secret, label, context, and output length.  The
exporter (<xref target="exporters-generic"/>) uses two such derivations, with the raw
exporter label as the first context and the context hash as the second.
The ECH acceptance confirmations (<xref target="ech-generic"/>) take a transcript
hash as context, and MAC (<xref target="mac-op"/>) takes the message it
authenticates.  Every derivation of this shape carries its context under
the "ctx_" tag, including one whose context is itself a transcript hash.</t>
        <ol spacing="normal" type="1"><li>
            <t>Early key_block (<xref target="record-keys-generic"/>) uses c_e_traffic as its
base secret, label "key", no context, and length Nk + Nn in a
single-output Derive.</t>
          </li>
          <li>
            <t>The DeriveN that derives finished_key and key_block
(<xref target="record-keys-generic"/>) uses the sender's handshake traffic secret
as its base secret and no context.  Its outputs are finished_key with
label "fin" and length SecretLen, then key_block with label "key" and
length Nk + Nn.</t>
          </li>
          <li>
            <t>The DeriveN that derives the next traffic secret and key_block
(<xref target="key-update-generic"/>) uses the sender's current application
traffic secret as its base secret and no context.  Its outputs are
the next traffic secret with label "upd" and length SecretLen, then
key_block with label "key" and length Nk + Nn.</t>
          </li>
          <li>
            <t>resumption_psk uses resumption_secret as its base secret, label
"rsp", context ticket_nonce, and length SecretLen in a single-output
Derive.</t>
          </li>
          <li>
            <t>ipsk (<xref target="import-derivation"/>) uses epsk as its base secret, label
"ipk", context TranscriptHash(ImportedIdentity), and length SecretLen
in a single-output Derive.  The context is the transcript-hash
reduction defined in <xref target="import-derivation"/>.</t>
          </li>
        </ol>
        <t>The DeriveN calls for record keys apply separately to each direction.
"key" names the whole key_block, which contains write_key followed by
write_iv.</t>
      </section>
      <section anchor="mac-op">
        <name>MAC</name>
        <t>MAC(key, message, L) computes every tag in this document:  the PSK
binder, both Finished values, and the Finished of an Exported
Authenticator (<xref target="exported-authenticators"/>).  It is a Derive over a dec
engine seeded with the key (<xref target="expand-op"/>), with the label "mac" and the
message as its context:</t>
        <artwork><![CDATA[
MAC(key, message, L) = Derive(Init(key), "mac", message, L)
]]></artwork>
        <t>Every MAC of this document takes a 64-octet key and a 64-octet
transcript hash as its message, so its input to DF (<xref target="dec-interface"/>)
is these 167 octets, with the key and the message each starting on an
8-octet boundary (<xref target="labels"/>).  The listing is the TLS 1.3 layout.  A
DTLS 1.3 connection substitutes "dtls13" for "tls13 ", with the same
lengths and offsets (<xref target="dtls"/>):</t>
        <artwork><![CDATA[
offset
     0  0x0006 || "tls13 "    frame(schedule_label), from Init
     8  0x0004 || "seed"      frame("seed")
    14  0x0040 || key         frame(key), at offset 16
    80  0x0004 || "ctx_"      frame("ctx_")
    86  0x0040 || message     frame(message), at offset 88
   152  0x0003 || "mac"       frame("mac"), the label
   157  0x0004 || "out_"      frame("out_")
   163  0x0002 || uint16(L)   frame(uint16(L))
]]></artwork>
        <t>No other derivation of this document uses the label "mac", so a MAC
input is never the input of another derivation (<xref target="domain-separation"/>).
The output length is bound by the "out_" item as in every Derive, so
tags of different lengths are computed over different inputs.  MAC is
the analogue of TLS 1.3's HMAC-based Finished and binder MACs, and like
them it is keyed by a dedicated key that keys nothing else
(<xref target="finished-and-binder-mac"/>, <xref target="exported-authenticators"/>).  The client
and server Finished values are computed the same way, each over a
different key and a different message.  L never exceeds 65535 octets
(<xref target="schedule-profiles"/>).</t>
        <t>MAC uses the profile's DF and nothing else, so it needs no primitive
beyond the SHAKE256 <xref target="FIPS202"/> or TurboSHAKE256 <xref target="RFC9861"/> that
computes every other derivation and the transcript hash.</t>
      </section>
      <section anchor="record-keys-generic">
        <name>Record Keys</name>
        <t>Record keys are the "key" output of <xref target="expand-op"/>.  A retained traffic
secret suffices to re-derive its keys, as in TLS 1.3.  For early-data
keys, derived before the ServerHello, Nk and Nn are those of the offered
PSK's associated cipher suite.  For every other traffic secret they are
those of selected_cipher_suite.</t>
        <t>Early record keys use the single-output encoding:</t>
        <artwork><![CDATA[
# no context, so the third argument is the output length
key_block = Derive(Init(c_e_traffic), "key", Nk + Nn)
write_key = key_block[0..Nk]
write_iv  = key_block[Nk..Nk+Nn]
]]></artwork>
        <t>Each handshake traffic secret uses a fixed DeriveN call that also
produces that sender's Finished key:</t>
        <artwork><![CDATA[
(finished_key, key_block) =
    DeriveN(Init(hs_traffic_secret), [("fin", SecretLen),
                                      ("key", Nk + Nn)])

write_key = key_block[0..Nk]
write_iv  = key_block[Nk..Nk+Nn]
]]></artwork>
        <t>Every application traffic-secret generation uses a fixed DeriveN call
that also produces the next generation's secret:</t>
        <artwork><![CDATA[
(app_traffic_secret_{N+1}, key_block_N) =
    DeriveN(Init(app_traffic_secret_N), [("upd", SecretLen),
                                         ("key", Nk + Nn)])

write_key_N = key_block_N[0..Nk]
write_iv_N  = key_block_N[Nk..Nk+Nn]
]]></artwork>
        <t>The application record DeriveN runs even when no KeyUpdate is planned,
so the next traffic secret exists from the start of its predecessor's
epoch.  The next generation's record keys are derived only when its
epoch starts.</t>
        <t>SecretLen is 64, so the secret and key_block start on 64-bit boundaries,
and the IV does too when Nk is a multiple of 8.  Each descriptor's
length is bound into the input.  The split is unambiguous:  Nk and Nn
are fixed by the suite, and their sum is bound into the derivation as
the key_block output length, so Nk + Nn also changes the finished_key or
next traffic secret derived alongside it.  The traffic secret is already
specific to one direction and one stage, so no direction or epoch input
is needed.  The per-record nonce construction, record format, and AEAD
additional data are unchanged from TLS 1.3, or from DTLS 1.3 on a DTLS
1.3 connection.</t>
      </section>
      <section anchor="key-update-generic">
        <name>Key Update</name>
        <t>A key update installs app_traffic_secret_{N+1}, the "upd" output already
produced with generation N's record keys (<xref target="record-keys-generic"/>).  It
then runs the application record DeriveN again, under the installed
secret:</t>
        <artwork><![CDATA[
# next_secret is the "upd" slice retained from generation N
app_traffic_secret_{N+1} = next_secret

(next_secret, key_block_{N+1}) =
    DeriveN(Init(app_traffic_secret_{N+1}), [("upd", SecretLen),
                                             ("key", Nk + Nn)])

write_key_{N+1} = key_block_{N+1}[0..Nk]
write_iv_{N+1}  = key_block_{N+1}[Nk..Nk+Nn]
]]></artwork>
        <t>The new next_secret is app_traffic_secret_{N+2} and is retained until
the next update.</t>
        <t>An implementation MUST NOT derive generation N+1 from anything other
than generation N, in particular not from a retained stage accumulator
or a counter: that rule determines the derived value and so is an
interoperability requirement.  Each generation is also an erasure
boundary.  In TLS, the previous secret, its keys, and any schedule state
derived from them are destroyed once the new generation is installed,
except for the successor secret deliberately carried across the boundary
(<xref target="erasure-boundaries"/>).  In DTLS, a receiver MUST retain the previous
epoch's record key, IV, and sn_key (<xref target="dtls"/>), or their traffic secret,
until it successfully decrypts a record from the new epoch (<xref section="8" sectionFormat="of" target="RFC9147"/>).</t>
      </section>
      <section anchor="finished-and-binder-mac">
        <name>Finished and PSK Binder MACs</name>
        <t>Finished and PSK binder verify_data are computed under a dedicated MAC
key, derived from a stage or traffic secret (<xref target="expand-op"/>), rather than
by MACing that secret directly.  This matches <xref section="4.5.3" sectionFormat="of" target="RFC9846"/>:  finished_key and binder_key take the roles of TLS 1.3's
identically named intermediates, and MAC takes the role of TLS 1.3's
HMAC.</t>
        <t>A handshake finished_key is the "fin" output of the DeriveN that derives
that sender's handshake record keys (<xref target="record-keys-generic"/>).</t>
        <artwork><![CDATA[
# For post-handshake authentication only:
finished_key = Derive(Init(base_key), "fin")

# For every Finished:
verify_data = MAC(finished_key, th, FLen)
]]></artwork>
        <t>For post-handshake authentication, base_key is the sender's current
application traffic secret from the authentication-input table of
<xref section="4.5" sectionFormat="of" target="RFC9846"/>.  The label is "fin", and th covers the
Handshake Context and authentication messages that the same table gives
for that Finished, up to but not including the Finished being computed.
For a PSK binder, the dedicated key is derived in two steps, as TLS 1.3
derives binder_key in Section 7.1 and then finished_key from it in
Section 4.3.11.2, via Section 4.5.3:</t>
        <artwork><![CDATA[
(binder_key, early_residue) =
    DeriveN(E, [(binder_label, SecretLen),
                ("drv",        SecretLen)])

finished_key = Derive(Init(binder_key), "fin")
verify_data  = MAC(finished_key, TH_CH0, FLen)
]]></artwork>
        <t>E is the live early trunk of the schedule keyed by that PSK, before its
ratchet (<xref target="key-schedule"/>).  binder_key comes from a DeriveN on E that
also derives early_residue, so the early trunk is the analogue of TLS
1.3's Early Secret from which <xref section="7.1" sectionFormat="of" target="RFC9846"/> derives
binder_key.  binder_label is "ebk" for a non-imported external PSK,
replacing "ext binder", "ibk" for an imported PSK, replacing "imp
binder" from <xref section="5.2" sectionFormat="of" target="RFC9258"/>, and "rbk" for a resumption PSK,
replacing "res binder".</t>
        <t>The handshake dec engine is seeded from this DeriveN (<xref target="key-schedule"/>),
so the early residue depends on the binder label, so equal non-imported
external, imported, and resumption PSK bytes lead to different
handshake-stage inputs.  Without a PSK there is no binder DeriveN.</t>
        <t>finished_key is derived under "fin" for both a Finished and a binder,
and the two are already separated one step up by their base secret, a
traffic secret against binder_key.  Both finished_key and binder_key are
64 octets, the length of every stage and traffic secret in both profiles
(SecretLen, <xref target="turboshake-profile"/>, <xref target="shake-profile"/>), matching TLS
1.3's use of Hash.length for the same intermediates.  Binder
verification follows <xref target="governing-profile"/>.</t>
        <t><xref target="comparison"/> counts every finished_key and binder_key derivation of a
representative full handshake against the corresponding TLS 1.3
HKDF-Expand-Label calls.</t>
        <t>Each finished_key is a dedicated MAC key, and a handshake Finished MAC
key shares its base secret, the sender's handshake traffic secret, with
that sender's record keys (<xref target="record-keys-generic"/>).</t>
        <t>Binders are computed before the ServerHello.  This is possible in both
profiles because the early trunk binds no cipher suite:  the client
clones the early trunk to obtain binder_key at ClientHello time, in
either profile (<xref target="dec-schedule"/>).</t>
      </section>
      <section anchor="exporters-generic">
        <name>Exporters</name>
        <t>Exporters use two retained-secret derivations, following the shape of
<xref section="7.5" sectionFormat="of" target="RFC9846"/>:</t>
        <artwork><![CDATA[
TLS-Exporter(label, context, length):
    exporter_label_secret = Derive(Init(exporter_secret), "exl",
                                   label, SecretLen)
    return Derive(Init(exporter_label_secret), "exp",
                  TranscriptHash(context), length)
]]></artwork>
        <t>The early exporter is the same construction keyed by
early_exporter_secret.  The raw label is the first Derive's context and
is framed under "ctx_" (<xref target="expand-op"/>).  An implementation MUST reject a
TLS-Exporter request whose label exceeds the 65535-octet frame limit,
rather than reduce its length modulo 65536.</t>
        <t>The intermediate lets an implementation that knows all its exporter
labels derive their label secrets and then erase exporter_secret, as
<xref section="F.1.4" sectionFormat="of" target="RFC9846"/> recommends.</t>
        <t>Framing the raw label separates inputs to the first Derive without
relying on TranscriptHash collision resistance for that separation.  The
second Derive takes the context hash because the context has unbounded
length.  An implementation MUST reject a TLS-Exporter request for zero
octets or for more than 65535 octets of output.  Reducing a longer
request modulo 65536 would let two different requested lengths bind the
same encoded value.</t>
      </section>
      <section anchor="ech-generic">
        <name>ECH Acceptance Confirmations</name>
        <t>This document updates <xref target="RFC9849"/> for a connection that negotiates a KDF
of this document.  A connection that negotiates no KDF uses <xref target="RFC9849"/>
unchanged.  For the KDFs of this document, the ECH acceptance signals of
<xref target="RFC9849"/> are:</t>
        <artwork><![CDATA[
D = Init(ClientHelloInner.random)

accept_confirmation =
    Derive(D, "eca",
           TranscriptHash(ech_conf_messages), 8)

hrr_accept_confirmation =
    Derive(D, "hca",
           TranscriptHash(hrr_ech_conf_messages), 8)
]]></artwork>
        <t>replacing the HKDF-Extract and HKDF-Expand-Label computations of
<xref target="RFC9849"/> and its labels "ech accept confirmation" and "hrr ech accept
confirmation", with ech_conf_messages and hrr_ech_conf_messages the
handshake message ranges that document identifies for each confirmation,
per <xref section="4.1" sectionFormat="of" target="RFC9846"/>.  TranscriptHash(ech_conf_messages) is
the transcript_ech_conf of <xref target="RFC9849"/>, the same single transcript-hash
operation, applied once.</t>
        <t>Keying the confirmation on ClientHelloInner.random alone matches
<xref target="RFC9849"/>, whose confirmation key is HKDF-Extract(0,
ClientHelloInner.random), with no handshake secret mixed in.  This
document seeds a dec engine with ClientHelloInner.random itself and
takes one Derive, in place of the extract-then-expand of <xref target="RFC9849"/>.
Computing the confirmation requires ClientHelloInner.random, which only
the client and a server that holds ClientHelloInner know.  Each
confirmation's transcript covers the message that carries it, the
ServerHello or the HelloRetryRequest.</t>
        <section anchor="ech-kdf-selection">
          <name>ECH and KDF Selection</name>
          <t>The server applies the rules of <xref target="cipher-suites"/> to ClientHelloInner if
it accepts ECH and to ClientHelloOuter if it rejects it.  The two may
offer different KDFs.  The client learns which from the server's first
message, as in <xref section="6.1.4" sectionFormat="of" target="RFC9849"/>.  It computes the
confirmation under the KDF that message selects, or as in <xref target="RFC9849"/> if
it selects none, and a confirmation it cannot compute counts as a
rejection.  It then applies the rules of <xref target="cipher-suites"/> to the same
ClientHello.  The KDF of the HPKE suite that encrypts ClientHelloInner
plays no part in this selection.</t>
        </section>
      </section>
      <section anchor="import-derivation">
        <name>PSK Import Derivation</name>
        <t>An external PSK is imported per target KDF (<xref target="psk-importer"/>).  For
every KDF of this document, ipsk is the "ipk" derivation of
<xref target="expand-op"/>, keyed by epsk with TranscriptHash(ImportedIdentity) as
context, with target_kdf as the KDF.  This follows the shape of the
derivation in <xref target="RFC9258"/>, with the entire serialized ImportedIdentity
reduced by the transcript hash as the context.  ipsk is an explicit
octet string by design:  it crosses a system boundary into the PSK
store.  epsk is absorbed as the secret of a dec engine-based derivation
(<xref target="expand-op"/>) in both profiles, so a low-entropy or
attacker-influenced epsk never keys either profile's underlying
permutation directly.</t>
      </section>
    </section>
    <section anchor="cipher-suites">
      <name>Negotiating a KDF</name>
      <t>This document defines no cipher suites.  A connection uses the cipher
suites of TLS 1.3, and negotiates its KDF separately, in a new
extension.</t>
      <t>Coupling the two would make the offered set the product of the AEAD
choices and the schedule choices, and would oblige a client that wants
one schedule with two AEADs to carry a code point for each combination.
The schedule and the AEAD are independent choices, and this document
negotiates them independently.</t>
      <t>The value negotiated is a TLS KDF Identifier, the registry <xref target="RFC9258"/>
already created for naming a key schedule independently of a cipher
suite.  A KDF of this document registers there
(<xref target="iana-considerations"/>).</t>
      <artwork><![CDATA[
struct {
    uint16 profiles<2..2^16-2>;   /* TLS KDF Identifiers */
} ScheduleProfileList;
]]></artwork>
      <t>The extension_data of a schedule_profile extension
(<xref target="iana-considerations"/>) is a ScheduleProfileList in a ClientHello, in
preference order, and a single uint16 in a ServerHello or a
HelloRetryRequest.</t>
      <t>Absence is the default, and the default is TLS 1.3:  a connection whose
ClientHello omits the extension, or whose server does not echo it, runs
the key schedule in <xref section="7.1" sectionFormat="of" target="RFC9846"/>, HKDF over the negotiated
cipher suite's hash.  That is HKDF_SHA256 or HKDF_SHA384 as the suite's
hash determines, so TLS 1.3's own schedule needs no value of its own
here and an endpoint of this document interoperates with TLS 1.3
unchanged.</t>
      <t>A client that requires an alternative schedule MUST abort with a
handshake_failure alert if the server's first message, a
HelloRetryRequest or ServerHello, omits the extension
(<xref target="downgrade-resistance"/>).  After an ECH rejection, the requirement
does not extend to the ClientHelloOuter handshake, which only
authenticates the public name for ECH retry and carries no application
data (<xref section="6.1.6" sectionFormat="of" target="RFC9849"/>).  The offered list does not signal
whether the client requires an alternative schedule or permits fallback.</t>
      <t>Because absence is the sole signal for the TLS 1.3 schedule, a
ScheduleProfileList MUST NOT include HKDF_SHA256 or HKDF_SHA384, the
other values of the TLS KDF Identifiers registry (<xref target="RFC9258"/>).  A
server that receives either MUST treat it as if that KDF were not
offered, and MUST NOT select it.</t>
      <t>The KDFs of this document are TLS13_TURBOSHAKE256
(<xref target="turboshake-profile"/>) and TLS13_SHAKE256 (<xref target="shake-profile"/>).</t>
      <t>A server MUST NOT select a KDF the client did not offer.  A client that
sent schedule_profile MUST abort the handshake with an illegal_parameter
alert if the ServerHello or HelloRetryRequest selects a KDF it did not
offer, as <xref section="4.2.3" sectionFormat="of" target="RFC9846"/> requires for the cipher suite.  A
client that did not send it treats the extension in either message as
unsolicited and aborts with an unsupported_extension alert (<xref section="4.3" sectionFormat="of" target="RFC9846"/>).  A server that selects a KDF of this document MUST
send the extension in its ServerHello, so the selection is covered by
the transcript (<xref target="downgrade-resistance"/>).</t>
      <t>A server that sends a HelloRetryRequest and selects a KDF of this
document MUST carry the selected KDF as a schedule_profile extension in
the HelloRetryRequest.  That selection pins the KDF for the rest of the
handshake and is the KDF implied by the HelloRetryRequest
(<xref target="governing-profile"/>).  The client computes its second ClientHello and
every later checkpoint under that KDF, and the HelloRetryRequest is
covered by the transcript.  A HelloRetryRequest without the extension
selects the TLS 1.3 schedule for the rest of the handshake, and the
server MUST NOT then send the extension in its ServerHello.  A client
that sent schedule_profile MUST abort the handshake with an
illegal_parameter alert if the ServerHello's schedule_profile, present
or absent, differs from the HelloRetryRequest's, as <xref section="4.2.4" sectionFormat="of" target="RFC9846"/> requires for the cipher suite.</t>
      <t>With ECH, these rules apply to the ClientHello that
<xref target="ech-kdf-selection"/> identifies.</t>
      <section anchor="profile-governs">
        <name>What the KDF Governs</name>
        <t>A KDF defines every key-schedule computation of the connection,
including the transcript hash (<xref target="schedule-profiles"/>).  When a KDF of
this document is negotiated, the hash named by the cipher suite governs
nothing in the key schedule:  the transcript hash is the KDF's, and the
derivations and MACs are the KDF's.  The transcript hash a
CertificateVerify signs (<xref section="4.5.2" sectionFormat="of" target="RFC9846"/>) is also the KDF's
TranscriptHash.</t>
        <t>The cipher suite's name still carries that hash.  A connection on
TLS_AES_128_GCM_SHA256 with TLS13_TURBOSHAKE256 selected takes
AES-128-GCM, its Nk and Nn, and its per-record nonce construction from
the suite, and takes SHA-256 from nowhere:  no part of the key schedule
uses it.  A connection that negotiates no KDF is unaffected:  the
suite's hash governs its schedule exactly as TLS 1.3 specifies.</t>
      </section>
    </section>
    <section anchor="dec-schedule">
      <name>The Dec Engine-Based Key Schedule</name>
      <t>Both KDFs of this document express the key schedule as a dec engine
(<xref target="dec-functions"/>).</t>
      <t>The schedule's normative interface is defined here, in terms of the
profile's XOF and nothing else:  Init and Absorb build a framed input
sequence, Derive reads one to produce a keyed output, DeriveN reads one
to produce an ordered tuple, and Ratchet crosses a stage boundary.  Each
Derive or DeriveN is one XOF call over its input sequence.
<xref target="turboshake-profile"/> and <xref target="shake-profile"/> each give a short
instantiation naming the profile's XOF, permutation, and
domain-separation constants.</t>
      <t>This document uses the following terms.</t>
      <dl>
        <dt>schedule_label:</dt>
        <dd>
          <t>The fixed 6-octet ASCII string "tls13 " (with a trailing space),
framed at Init (<xref target="dec-interface"/>) into every derivation of both
profiles, or "dtls13" on a DTLS 1.3 connection (<xref target="dtls"/>).  It marks
the dec engine-based key schedule and is identical for both profiles,
which are separated by their XOF, not by this label.  It is
byte-identical to the label prefix of HKDF-Expand-Label, "tls13 " in
<xref section="7.1" sectionFormat="of" target="RFC9846"/> and "dtls13" in <xref section="5.9" sectionFormat="of" target="RFC9147"/>.
Its byte-level separation from other uses of the same XOF, including
the transcript hash, is covered in <xref target="domain-separation"/>.</t>
        </dd>
        <dt>dec engine:</dt>
        <dd>
          <t>A doubly-extendable cryptographic (dec) stateful object, whose input
is a sequence of strings, and whose output is a hash of that input.
In the scope of this document, it is implemented as an
extendable-output function evaluated over a sequence of framed input
strings, with the output length bound into the sequence before any
output is produced (<xref target="dec-interface"/>).  The construction beneath it
is an XOF and takes no key parameter, its secrets being ordinary
framed inputs.</t>
        </dd>
        <dt>stage:</dt>
        <dd>
          <t>One of the three phases of the schedule:  early (keyed by the PSK),
handshake (adds the key-exchange secrets), and application.  Stages
are separated by ratchets (<xref target="dec-interface"/>).  A key update is a
derivation of the retained traffic secret (<xref target="key-update-generic"/>),
not a ratchet.</t>
        </dd>
        <dt>ratchet:</dt>
        <dd>
          <t>Replacing a stage's dec accumulator with a fresh one, seeded by a
residue squeezed from it under "drv", then destroying the old dec
accumulator (<xref target="erasure-boundaries"/>).  <xref target="key-schedule"/> gives the call
that produces each residue.</t>
        </dd>
      </dl>
      <t>The presentation is stateful, but the construction is not.  Each Derive
or DeriveN equals one invocation of a profile's XOF over its framed
input sequence.  The three stages of <xref target="key-schedule"/> are protocol
phases separated by stage boundaries, not KDF steps:  shared trunks
absorb each input once, the two squeezed residues connect the stages,
and the one-way truncations fall at the stage boundaries where TLS must
erase prior state.  Their one-wayness is conditional
(<xref target="erasure-boundaries"/>).</t>
      <section anchor="dec-interface">
        <name>The Dec Engine Interface</name>
        <t>A dec engine accumulates a running sequence of framed inputs.  The
profile's DF(S, L) is the XOF over that sequence
(<xref target="turboshake-instantiation"/>, <xref target="shake-instantiation"/>).  It returns L
octets, and L is from 1 to 65535, since TurboSHAKE256 is defined only
for a positive output length (<xref target="RFC9861"/>).  The schedule runs one dec
engine per stage, driven by five operations.</t>
        <section anchor="operations">
          <name>Operations</name>
          <artwork><![CDATA[
Init([seed])         D = frame(schedule_label)
                         [ || frame("seed") || frame(seed) ]

Absorb(D, tag, v)    D = D || frame(tag) || frame(v)

Derive(D, label,     out = DF(D [ || frame(ctag) || frame(context) ]
       [context], [L])         || frame(label)
                               || frame("out_") || frame(uint16(L)), L)
                     # D is cloned, not consumed
                     # ctag names context, as tag names v in Absorb
                     # omitted L is SecretLen

(o_1, ..., o_k) =
    DeriveN(D, [(label_1, L_1),
                ...,
                (label_k, L_k)], [context])

    S = D [ || frame(ctag) || frame(context) ]
          || frame("outs") || frame(uint16(k))
          || frame(label_1) || frame("out_") || frame(uint16(L_1))
          || ...
          || frame(label_k) || frame("out_") || frame(uint16(L_k))

    o_1 || ... || o_k = DF(S, L_1 + ... + L_k)

Ratchet(D)           residue = Derive(D, "drv")
                     return Init(residue)
                     # analogue of Derive-Secret(., "derived", "")
                     # the next dec engine is seeded with the residue
]]></artwork>
          <t>Each descriptor is framed in the listed order.  Each o_i is the next L_i
octets of the squeezed string.  The output tuple and descriptor list use
the notation of <xref target="expand-op"/>, with the optional context last.</t>
          <t>Init starts a dec engine with framing schedule_label.  Every dec engine
is Init'd, so every keyed sequence opens with frame(schedule_label), the
label prefix of TLS 1.3 or DTLS 1.3 (<xref target="domain-separation"/>).  A ratchet
residue or a retained secret is passed to Init as the seed and framed
under the tag "seed" (<xref target="key-schedule"/>, <xref target="expand-op"/>).  Absorb feeds
one tagged input into the running dec engine.  That is the same role
HKDF-Extract's mixing step plays in TLS 1.3.</t>
          <t>"outs" is a fixed DeriveN terminal marker alongside "out_".</t>
          <t>Derive is the single-output operation.  It clones the running dec
accumulator, absorbs that leaf's context, then adds the leaf label.  The
dec accumulator being derived from fixes ctag:  a live stage trunk takes
"th__", whose context is a transcript checkpoint, and a dec engine
seeded from a retained secret takes "ctx_", whose context is that
derivation's expansion context.  A Derive with no context frames
neither.  The context precedes the label here, the reverse of TLS 1.3's
HkdfLabel order.  The framing is injective either way, and placing the
context first lets sibling leaves that share it branch after one
absorption.</t>
          <t>The clone leaves the dec engine unchanged, so one dec accumulator yields
all of a stage's leaves.  Derive fills exactly HKDF-Expand-Label's role.
At a stage leaf it stands in for TLS 1.3's Derive-Secret(secret, label,
Messages), with the dec accumulator in place of the secret.  A value
keyed by a retained secret is a Derive or DeriveN over a dec engine
seeded with that secret (<xref target="expand-op"/>).  A Derive that omits L,
including the Ratchet residue, outputs SecretLen octets.  A Derive that
fixes its own length passes L explicitly (the early key_block, sn_key,
exporters, the ECH confirmation, MAC).  When the context is omitted, L
is the third argument.</t>
          <t>DeriveN also clones the dec accumulator without consuming it, and uses
the same context rules.  Every DeriveN label MUST be registered, and
labels within a descriptor list MUST be distinct.  DeriveN MUST reject k
outside 2..65535, any L_i outside 1..65535, or a sum above 65535.
Lengths and their sum are checked before conversion to uint16, without
wraparound.  The count, labels, order, and each length are absorbed
before squeezing.  The total is determined by the length list.  Binding
only that total would not bind the partition.</t>
          <t>DeriveN is restricted to the fixed derivations of this document.  A
caller MUST NOT omit, reorder, append, or resize descriptors according
to which outputs it currently needs.  Each derivation fixes the context
and parent dec accumulator as well as the descriptors.  Other protocols
use Derive under <xref target="companion-mechanisms"/>.</t>
          <t>Ratchet crosses a stage boundary.  Its residue is a Derive under the
label "drv", which is this schedule's analogue of TLS 1.3's
Derive-Secret(., "derived", "") between stages.  The next dec engine is
Init'd like any other, framing schedule_label, then seeded with that
residue, so "drv" names the residue, not the new dec accumulator.  The
residue is internal and never leaves the schedule.  Any stage input,
such as the asymmetric shared secret, is a later Absorb into the new dec
engine, not part of the ratchet.</t>
          <t><xref target="key-schedule"/> says which boundaries use Ratchet.</t>
          <t>The old dec engine is retired:  nothing absorbs into it or derives from
it afterward.  This is not the in-place Ratchet() of Cyclist or STROBE
(<xref target="XOODYAK"/>, <xref target="STROBE"/>), which returns nothing.</t>
          <t>A Derive is one DF call over its framed path, and a ratchet residue is
one such Derive.  It is therefore byte-exact and testable alone.</t>
        </section>
      </section>
      <section anchor="labels">
        <name>Labels and Alignment</name>
        <t>schedule_label is 6 octets and every tag is 4 octets, so
frame(schedule_label) fills 8 octets and every framed tag, together with
the two-octet length of the value it names, fills 8 more.  A value
framed under a tag therefore starts on an 8-octet boundary whenever
every value before it in the dec engine's input is a multiple of 8
octets long, which lets an implementation that absorbs 64-bit lanes take
key material without realigning it.  With the 64-octet secrets and
transcript hashes of this document, that holds for the PSK and every
seed, at offset 16, for the first asymmetric shared secret component, at
offset 88, for every transcript checkpoint and MAC message that follows
only such values, and for the context of the ECH confirmations, at
offset 56.</t>
        <t>It does not hold after a value whose length is not a multiple of 8.  A
P-521 shared secret is 66 octets, so the transcript checkpoint after it
starts at offset 162, and an external PSK has arbitrary length, so the
context of its import derivation may be unaligned.  In the exporter
(<xref target="exporters-generic"/>), the raw label in the first Derive and the
context hash in the second each start at offset 88:  8 octets for
frame(schedule_label), 72 for the tagged seed, and 8 for frame("ctx_")
and the context's length.</t>
        <t>Every derivation label is 3 octets, and every one is registered in the
TLS XOF Key Schedule Labels registry (<xref target="iana-labels"/>), which keeps
labels distinct.  The tags and schedule_label are fixed by this document
and are not registered.  In single-output Derive a label is the last
item before the output length, so its length does not bear on alignment.
A short label keeps the tail of a Derive at 15 octets.  In DeriveN each
label precedes its own output-length field.  The "outs" marker and
framed count occupy 10 octets, followed by k 15-octet descriptors, for a
tail of 10 + 15*k octets.  Labels and tags are absorbed as they are.
Apart from handshake transcript hashes, the only inputs reduced by
TranscriptHash before framing are the exporter context and the
ImportedIdentity, whose lengths are not bounded by this document
(<xref target="exporters-generic"/>, <xref target="import-derivation"/>).</t>
        <t>Tags shorter than four letters are padded with underscores.  The tags
are:</t>
        <table anchor="tag-table">
          <name>Tags</name>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Names</th>
              <th align="left">Replaces</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">"psk_"</td>
              <td align="left">the PSK, in the early stage</td>
              <td align="left">"psk"</td>
            </tr>
            <tr>
              <td align="left">"shs_"</td>
              <td align="left">each asymmetric shared secret component</td>
              <td align="left">"dh"</td>
            </tr>
            <tr>
              <td align="left">"seed"</td>
              <td align="left">Init seed: residue or retained secret</td>
              <td align="left">(untagged)</td>
            </tr>
            <tr>
              <td align="left">"th__"</td>
              <td align="left">Transcript checkpoint at a stage leaf</td>
              <td align="left">"th"</td>
            </tr>
            <tr>
              <td align="left">"ctx_"</td>
              <td align="left">Retained-secret derivation context</td>
              <td align="left">"context"</td>
            </tr>
            <tr>
              <td align="left">"out_"</td>
              <td align="left">each output length</td>
              <td align="left">"out"</td>
            </tr>
            <tr>
              <td align="left">"outs"</td>
              <td align="left">DeriveN terminal marker and output count</td>
              <td align="left">none</td>
            </tr>
          </tbody>
        </table>
        <t>The TLS XOF Key Schedule Labels registry (<xref target="iana-labels"/>) is the
canonical list of labels, and this table explains the labels of this
document.  Each replaces the label that TLS 1.3 gives the derivation it
names, or, for "ibk", the label of <xref section="5.2" sectionFormat="of" target="RFC9258"/>, for "eca"
and "hca", the label of <xref target="RFC9849"/>, and for "snk", the label of
<xref target="RFC9147"/>.  "mac" has no TLS 1.3 counterpart:</t>
        <table anchor="label-table">
          <name>Labels</name>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Derives</th>
              <th align="left">Replaces</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">"cet"</td>
              <td align="left">c_e_traffic</td>
              <td align="left">"c e traffic"</td>
            </tr>
            <tr>
              <td align="left">"ees"</td>
              <td align="left">early_exporter_secret</td>
              <td align="left">"e exp master"</td>
            </tr>
            <tr>
              <td align="left">"ebk"</td>
              <td align="left">binder_key, non-imported external PSK</td>
              <td align="left">"ext binder"</td>
            </tr>
            <tr>
              <td align="left">"ibk"</td>
              <td align="left">binder_key, imported PSK</td>
              <td align="left">"imp binder" (<xref section="5.2" sectionFormat="of" target="RFC9258"/>)</td>
            </tr>
            <tr>
              <td align="left">"rbk"</td>
              <td align="left">binder_key, resumption PSK</td>
              <td align="left">"res binder"</td>
            </tr>
            <tr>
              <td align="left">"drv"</td>
              <td align="left">a ratchet residue</td>
              <td align="left">"derived"</td>
            </tr>
            <tr>
              <td align="left">"cht"</td>
              <td align="left">c_hs_traffic</td>
              <td align="left">"c hs traffic"</td>
            </tr>
            <tr>
              <td align="left">"sht"</td>
              <td align="left">s_hs_traffic</td>
              <td align="left">"s hs traffic"</td>
            </tr>
            <tr>
              <td align="left">"cat"</td>
              <td align="left">c_ap_traffic</td>
              <td align="left">"c ap traffic"</td>
            </tr>
            <tr>
              <td align="left">"sat"</td>
              <td align="left">s_ap_traffic</td>
              <td align="left">"s ap traffic"</td>
            </tr>
            <tr>
              <td align="left">"exs"</td>
              <td align="left">exporter_secret</td>
              <td align="left">"exp master"</td>
            </tr>
            <tr>
              <td align="left">"rss"</td>
              <td align="left">resumption_secret</td>
              <td align="left">"res master"</td>
            </tr>
            <tr>
              <td align="left">"fin"</td>
              <td align="left">finished_key</td>
              <td align="left">"finished"</td>
            </tr>
            <tr>
              <td align="left">"mac"</td>
              <td align="left">every MAC tag</td>
              <td align="left">(HMAC)</td>
            </tr>
            <tr>
              <td align="left">"key"</td>
              <td align="left">key_block</td>
              <td align="left">"key" and "iv"</td>
            </tr>
            <tr>
              <td align="left">"upd"</td>
              <td align="left">the next traffic secret</td>
              <td align="left">"traffic upd"</td>
            </tr>
            <tr>
              <td align="left">"rsp"</td>
              <td align="left">resumption_psk</td>
              <td align="left">"resumption"</td>
            </tr>
            <tr>
              <td align="left">"ipk"</td>
              <td align="left">ipsk</td>
              <td align="left">"derived psk"</td>
            </tr>
            <tr>
              <td align="left">"exl"</td>
              <td align="left">an exporter label secret</td>
              <td align="left">Derive-Secret(Secret, label, "")</td>
            </tr>
            <tr>
              <td align="left">"exp"</td>
              <td align="left">an exporter output</td>
              <td align="left">"exporter"</td>
            </tr>
            <tr>
              <td align="left">"eca"</td>
              <td align="left">accept_confirmation</td>
              <td align="left">"ech accept confirmation"</td>
            </tr>
            <tr>
              <td align="left">"hca"</td>
              <td align="left">hrr_accept_confirmation</td>
              <td align="left">"hrr ech accept confirmation"</td>
            </tr>
            <tr>
              <td align="left">"snk"</td>
              <td align="left">sn_key, DTLS 1.3</td>
              <td align="left">"sn"</td>
            </tr>
          </tbody>
        </table>
        <t>Labels are distinct from one another, and every label differs from every
tag in length.</t>
        <t>The DeriveN that derives c_e_traffic and early_exporter_secret has this
layout.  With SecretLen equal to 64:</t>
        <artwork><![CDATA[
offset
     0  0x0006 || "tls13 "             frame(schedule_label)
     8  0x0004 || "psk_" || 0x0040     PSK at offset 16
    80  0x0004 || "th__" || 0x0040     TH_CH at offset 88
   152  0x0004 || "outs"               terminal marker
   158  0x0002 || 0x0002               framed output count
   162  0x0003 || "cet"                first label
   167  0x0004 || "out_"               length tag
   173  0x0002 || 0x0040               length 64
   177  0x0003 || "ees"                second label
   182  0x0004 || "out_"               length tag
   188  0x0002 || 0x0040               length 64
   192                                end of input
]]></artwork>
      </section>
      <section anchor="shapes">
        <name>Derivation Shapes</name>
        <t>Every derivation this document replaces is an instance of one of six
shapes.</t>
        <ol spacing="normal" type="1"><li>
            <t>Root absorb: the Early Secret extract, as Init + Absorb.</t>
          </li>
          <li>
            <t>Accumulate: the Handshake Secret extract IKM, per component, as
Absorb.</t>
          </li>
          <li>
            <t>Ratchet:  Derive-Secret(., "derived", "") at a boundary, as Ratchet,
or with a PSK as the "drv" output derived alongside binder_key.</t>
          </li>
          <li>
            <t>Dec derive: traffic and exporter secrets, PSK binder keys, as Derive
or DeriveN.</t>
          </li>
          <li>
            <t>Secret derive:  record keys, exporter label secrets and outputs, key
update, resumption, PSK import (<xref target="RFC9258"/>), the DTLS 1.3
sequence-number key, and the ECH acceptance confirmations, as Derive
or DeriveN.</t>
          </li>
          <li>
            <t>Keyed check: Finished and PSK binders, including an Exported
Authenticator's Finished, as MAC.</t>
          </li>
        </ol>
        <t>Shapes 1 through 3 act on the trunk of a stage.  Shapes 4 and 5 are the
output operations, Derive and DeriveN, over a live trunk or over a
seeded dec engine rooted at a retained secret (<xref target="expand-op"/>).  Shape 6
is shape 5 under the label "mac", with the message as context
(<xref target="mac-op"/>).  Record keys are derived from their traffic secret by a
separate call, as in TLS 1.3, so a retained traffic secret suffices to
re-derive its keys.  Deriving them within the call that produces the
traffic secret would save a few invocations but break that
re-derivability, so the schedule keeps the separate call.</t>
      </section>
      <section anchor="key-schedule">
        <name>Key Schedule</name>
        <t>The schedule has three stages separated by two stage boundaries.  A
key-update generation is a derivation of the retained traffic secret
(<xref target="key-update-generic"/>), not a further ratchet.  Stage trunks and stage
secrets bind no cipher suite value, matching the TLS 1.3 extracts they
replace.  No leaf derivation binds one directly either.  A client
offering several cipher suites under one KDF computes one schedule.
Only record-key derivations depend directly on the suite, through Nk and
Nn (<xref target="record-keys-generic"/>).  Every derivation frames schedule_label at
Init (<xref target="dec-interface"/>).  The negotiated KDF is bound by the XOF, not
by this label.  This listing is identical for both profiles.  Only each
profile's DF instantiation differs (<xref target="turboshake-profile"/>,
<xref target="shake-profile"/>).</t>
        <artwork><![CDATA[
E = Init()
Absorb(E, "psk_", PSK)             # "" when no PSK is selected

# early-stage leaves, each a clone of the early dec accumulator E
(binder_key, early_residue) =                  # with a PSK
    DeriveN(E, [(binder_label, SecretLen),
                ("drv",        SecretLen)])
(c_e_traffic, early_exporter_secret) =                  # 0-RTT
    DeriveN(E, [("cet", SecretLen),
                ("ees", SecretLen)], TH_CH)

H = Init(early_residue)            # without a PSK, H = Ratchet(E)
Absorb(H, "shs_", shared_secret)  # once per key-exchange component

# handshake-stage leaves, each a clone of H
(c_hs_traffic, s_hs_traffic) =
    DeriveN(H, [("cht", SecretLen),
                ("sht", SecretLen)], TH_SH)

T = Ratchet(H)                     # residue = Derive(H, "drv")
                                   # then T = Init(residue)

# application-stage leaves, each a clone of T
(c_ap_traffic, s_ap_traffic, exporter_secret) =
    DeriveN(T, [("cat", SecretLen),
                ("sat", SecretLen),
                ("exs", SecretLen)], TH_SF)
resumption_secret = Derive(T, "rss", TH_CF)
# T destroyed
]]></artwork>
        <t>With a PSK, early_residue is the "drv" output of the DeriveN on E that
also derives binder_key, and both peers MUST seed the handshake dec
engine with it rather than with a residue of Ratchet(E), which would
differ.  Without a PSK, both early DeriveN calls are omitted and H =
Ratchet(E).  The handshake boundary always uses Ratchet(H).  The DeriveN
that derives c_e_traffic and early_exporter_secret is used for 0-RTT.
At the early-to-handshake boundary, E and early_residue are destroyed
after H is initialized.  The handshake boundary destroys H and its
residue after T is initialized.  A PSK-only handshake omits the Absorb
into H.</t>
        <t>binder_label is selected as specified in <xref target="finished-and-binder-mac"/>.
early_residue is retained until the early boundary.  The early traffic
and exporter DeriveN uses TH_CH even if only one of its outputs is
needed.</t>
        <t>When the negotiated group is a hybrid or other multi-component key
exchange, shared_secret denotes the ordered list of component shared
secrets whose concatenation the group specification defines as its
shared secret (for example, <xref target="RFC9954"/>).  Both peers MUST use exactly
those components in that concatenation order, absorbing each with its
own Absorb(H, "shs_", component), without first concatenating them.</t>
        <section anchor="absent-empty">
          <name>Absent and Empty Inputs</name>
          <t>A handshake without a PSK still executes Absorb(E, "psk_", "").  That
call contributes the following bytes:</t>
          <artwork><![CDATA[
frame("psk_") = 0x0004 || "psk_"
frame("")     = 0x0000
]]></artwork>
          <t>This is unambiguous because a PSK of this document is never zero-length:
an imported or resumption PSK is 64 octets (<xref target="psk-importer"/>), and an
endpoint MUST NOT use an empty raw external PSK.  Without a PSK, the
early stage carries no leaves and its dec accumulator holds only known
constants, as TLS 1.3's Early Secret is the extract of two known
constants.  The stage exists for uniformity across handshake modes, and
the schedule's security does not rest on its secrecy when no PSK is
present.  A PSK-only handshake omits Absorb(H, "shs_", ...) entirely:
the tag "shs_" does not appear in the sequence.</t>
        </section>
        <section anchor="stage-secrets">
          <name>Stage Secrets</name>
          <t>The three stage dec accumulators E, H, and T are this schedule's
analogue of TLS 1.3's Early, Handshake, and Main Secret.  They are
states, not values.  A leaf clones the running dec engine rather than
reading an extracted octet string, so no named early or main secret is
materialized.</t>
          <t>Each stage boundary seeds the next dec engine with a residue under "drv"
(<xref target="key-schedule"/>), and that dec engine frames schedule_label at Init.
That residue is the analogue of TLS 1.3's unnamed "derived" salt.  It
never leaves the schedule.  It seeds the next dec engine once and is
then discarded (<xref target="erasure-boundaries"/>).</t>
          <t>The values that do leave, the traffic and exporter secrets, occupy
disjoint slices within a DeriveN output tuple.  The DeriveN calls that
derive early, handshake, and application traffic and exporter secrets
each bind their ordered labels, lengths, and transcript checkpoint
(<xref target="domain-separation"/>).  Early data is separated in addition by the
0-RTT equality check (<xref target="governing-profile"/>).  Every stage binds its
transcript at the leaves, so the dec engines themselves bind none.  The
derivation graph maps onto the TLS 1.3 graph (<xref target="derivation-graph"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="turboshake-profile">
      <name>The TLS13_TURBOSHAKE256 Profile</name>
      <t>The TLS13_TURBOSHAKE256 profile instantiates the dec engine-based key
schedule of <xref target="dec-schedule"/> with TurboSHAKE256 <xref target="RFC9861"/>, built on
the 12-round Keccak-p[1600,12] permutation of <xref target="FIPS202"/>.</t>
      <t>The profile parameters are:</t>
      <dl>
        <dt>SecretLen:</dt>
        <dd>
          <t>64 octets, the length of every stage and traffic secret.</t>
        </dd>
        <dt>FLen:</dt>
        <dd>
          <t>64 octets.</t>
        </dd>
      </dl>
      <section anchor="turboshake-instantiation">
        <name>Instantiation</name>
        <t>The dec engine is implemented using TurboSHAKE256 as XOF:</t>
        <artwork><![CDATA[
DF(S, L) = TurboSHAKE256(seq(S), 0x1F, L)
]]></artwork>
        <t>where seq(S) is the concatenation of every framed item of S in order.
TurboSHAKE256's output length is in octets per <xref target="RFC9861"/>, so L is
passed unchanged, unlike the SHAKE256 profile, whose bit-oriented length
needs an 8 * L conversion (<xref target="shake-instantiation"/>).</t>
        <t>The transcript hash of <xref target="transcript-hash"/> is instantiated with the same
function:  TranscriptHash(x) = TurboSHAKE256("tls13 hash" || x, 0x1F,
64).  The domain-separation byte is fixed to 0x1F, the default of
<xref target="RFC9861"/>, for every use of TurboSHAKE256 in this profile, so an API
without the D parameter implements the profile unchanged.</t>
        <t>TurboSHAKE256 uses the Keccak-p[1600,12] permutation as a sponge:
input is absorbed into a 1600-bit state in rate-sized blocks of 136
octets, with the permutation applied after each block, and output is
read from the same state.  The capacity is the 512-bit portion of the
state that input and output never touch.  It is what the erasure
argument of <xref target="erasure-boundaries"/> relies on, and the 64-octet secret,
transcript-hash, and Finished and binder MAC lengths are set to match
it.</t>
        <section anchor="required-api-surface">
          <name>Required API Surface</name>
          <t>The required API surface is incremental absorption, cloning of an
unfinalized state, and one-shot squeeze with the output length known up
front.  Cloning before any output is incremental input to two separate
invocations, which Section 2.1 of <xref target="RFC9861"/> permits.  No
absorb-after-squeeze occurs anywhere in this document, so no access
below the TurboSHAKE interface is required.  The clone discipline is the
same one TLS stacks already apply to SHA-2 transcript-hash checkpoints.</t>
        </section>
      </section>
    </section>
    <section anchor="shake-profile">
      <name>The TLS13_SHAKE256 Profile</name>
      <t>The TLS13_SHAKE256 profile instantiates the dec engine-based key
schedule of <xref target="dec-schedule"/> with plain SHAKE256 <xref target="FIPS202"/>, built on
the 24-round Keccak-f[1600] permutation, in place of TurboSHAKE256's
Keccak-p[1600,12].  This profile mirrors the TLS13_TURBOSHAKE256
profile's framing exactly:  domain separation comes from the same
framed-prefix mechanism the TurboSHAKE profile uses, an absorbed
frame(schedule_label) at Init (<xref target="dec-interface"/>), not from cSHAKE's
function-name and customization-string inputs.  The two profiles' dec
engines therefore differ only in the underlying permutation, so
derivation (<xref target="expand-op"/>) and the MAC construction (<xref target="mac-op"/>) are
shared by both profiles.</t>
      <t>The profile parameters, SecretLen and FLen, are 64 octets as in
<xref target="turboshake-profile"/>.</t>
      <section anchor="shake-instantiation">
        <name>Instantiation</name>
        <t>The dec engine is implemented using SHAKE256 as XOF:</t>
        <artwork><![CDATA[
DF(S, L) = SHAKE256(seq(S), 8 * L)
]]></artwork>
        <t>where seq(S) is the concatenation of every framed item of S in order,
SHAKE256(X, L) is the function of <xref target="FIPS202"/> with X the main input and
L the output length in bits, and 8 * L converts this document's
octet-oriented L to the bit-oriented L argument of SHAKE256.</t>
        <t>SHAKE256 takes no function-name or customization-string input.  This
profile's domain separation comes from seq(S) beginning with
frame(schedule_label), as <xref target="shake-profile"/> describes
(<xref target="dec-interface"/>).</t>
        <t>The transcript hash of <xref target="transcript-hash"/> is instantiated with the same
function: TranscriptHash(x) = SHAKE256("tls13 hash" || x, 512).</t>
        <t>SHAKE256 uses the Keccak-f[1600] permutation as a sponge with the same
136-octet rate and 512-bit capacity as TurboSHAKE256
(<xref target="turboshake-instantiation"/>).  The capacity is what the erasure
argument of <xref target="erasure-boundaries"/> relies on, and the 64-octet secret,
transcript-hash, and Finished and binder MAC lengths match it in both
profiles.</t>
        <section anchor="required-api-surface-1">
          <name>Required API Surface</name>
          <t>The required API surface is that of <xref target="turboshake-instantiation"/>:  no
absorb-after-squeeze occurs, so no access below the SHAKE256 interface
is required.</t>
        </section>
      </section>
    </section>
    <section anchor="psk-importer">
      <name>PSK Importer</name>
      <t>TLS 1.3 permits external PSKs <xref target="RFC9846"/>, and <xref target="RFC9258"/> imports an
external PSK into a target KDF, producing a PSK bound to its target.
This document updates the importer computation in <xref section="5.1" sectionFormat="of" target="RFC9258"/> for the KDFs defined here.  It replaces HKDF-Extract and
HKDF-Expand-Label using the EPSK-associated hash, or its SHA-256
default, with the target KDF's "ipk" derivation and TranscriptHash
(<xref target="import-derivation"/>).  <xref target="RFC9258"/> uses the target KDF only for
output length and identity separation.  This document also uses it to
select the importer computation, avoiding a SHA-2 dependency.</t>
      <t>A provisioning importer taught only the new TLS KDF Identifier and
output length still applies the EPSK-associated-hash rule of
<xref target="RFC9258"/>.  It produces a different ipsk for the same ImportedIdentity
than the importer specified here.  A peer using this document's
computation discovers the mismatch at binder verification.</t>
      <t>A KDF of this document is a TLS KDF Identifier
(<xref target="iana-considerations"/>), so an external PSK imported for use with one
is imported under the unchanged ImportedIdentity of <xref target="RFC9258"/>, with
target_kdf naming the KDF.  No variant structure is needed, and none is
defined.  For a DTLS 1.3 target, the "ipk" derivation frames "dtls13" as
its schedule label, since <xref section="5.1" sectionFormat="of" target="RFC9258"/> uses the label
prefix of the target protocol.</t>
      <t><xref target="RFC9258"/> binds an imported PSK to a KDF and not to a cipher suite,
deliberately, so that a PSK cannot be reused across key schedules.
Negotiating the schedule in its own extension makes that KDF a value the
protocol negotiates, so the binding applies as <xref target="RFC9258"/> intends.</t>
      <t>The import derivation is the generic derivation of
<xref target="import-derivation"/>, keyed by epsk under target_kdf.  An endpoint MUST
NOT import an epsk, or use a raw external PSK, longer than 0xFFFF
octets, so every framed value fits a single frame.  A client that
imports one external PSK for use under more than one KDF MUST produce a
separate ImportedIdentity, and hence a separate ipsk, per target_kdf,
exactly as <xref target="RFC9258"/> requires.</t>
      <t>Import is RECOMMENDED.  As in <xref target="RFC9258"/>, it is not required.  A raw
external PSK is associated with its KDF when it is established.  One
established without a KDF is associated with SHA-256, as <xref section="4.3.11" sectionFormat="of" target="RFC9846"/> specifies for an external PSK without a hash, and so
with the TLS 1.3 schedule rather than a KDF of this document.  A raw
external PSK carries no binding to the KDF it is used under, and its
length is whatever provisioning chose, so a length that is not a
multiple of 8 leaves the items after it unaligned (<xref target="labels"/>) and may
cost one further permutation.  An imported PSK is SecretLen octets and
raises neither question.</t>
      <t>For imports into these KDFs, target-KDF selection also supersedes the
single-associated-hash restriction in <xref section="4" sectionFormat="of" target="RFC9258"/>.  The
separate ImportedIdentity values bind each ipsk to one target KDF,
preventing reuse of one imported PSK across TLS schedules.  They do not
isolate the underlying epsk from the different importer KDFs:  importing
the same epsk for both profiles feeds that secret to both permutations
(<xref target="profile-separation"/>).</t>
    </section>
    <section anchor="zero-rtt">
      <name>Zero-RTT and Early Data</name>
      <t>Early data remains PSK-only and remains replayable under the TLS 1.3
anti-replay model.  This document changes neither.  A client MAY send
early data using the first offered PSK's associated parameters
(<xref target="governing-profile"/>) only if they permit early data and the
associated cipher suite is among those it offers.  A server MUST reject
early data unless the offered PSK's associated parameters permit early
data, the selected cipher suite equals the offered PSK's associated
cipher suite, the selected ALPN equals the PSK's associated ALPN, and
all TLS 1.3 anti-replay checks pass.  The suite-equality check, not the
binder, prevents redirecting early data to a different AEAD.</t>
    </section>
    <section anchor="authentication">
      <name>Authentication</name>
      <t>Certificate-based authentication is negotiated as in TLS 1.3, and what a
CertificateVerify signs follows from the transcript hash.  The content
covered by the signature is Transcript-Hash(Handshake Context,
Certificate) (<xref section="4.5.2" sectionFormat="of" target="RFC9846"/>), and under a KDF of this
document that is the 64-octet TranscriptHash of <xref target="transcript-hash"/>.
The 64 octets of 0x20, the context string, and the separator octet are
unchanged, so a server signs:</t>
      <artwork><![CDATA[
0x20 (64 times) || "TLS 1.3, server CertificateVerify" || 0x00
    || TranscriptHash(Handshake Context, Certificate)
]]></artwork>
      <t>The signature scheme then processes that content as its own definition
requires, and that processing is outside the key schedule.  The ECDSA
and RSASSA-PSS schemes of TLS 1.3 hash it with SHA-2, and Ed25519 uses
SHA-512 internally, whatever KDF is negotiated.  A certificate chain
carries the same dependence through the signature schemes of its
certificates, which the signature_algorithms_cert extension negotiates
(<xref section="4.3.3" sectionFormat="of" target="RFC9846"/>).</t>
      <t>A deployment that must avoid SHA-2 entirely MUST restrict the
signature_algorithms and signature_algorithms_cert extensions to
signature schemes that use no SHA-2, such as Ed448 (<xref target="RFC8032"/>) or
ML-DSA (<xref target="FIPS204"/>, <xref target="I-D.ietf-tls-mldsa"/>), or use PSK-only
authentication.</t>
    </section>
    <section anchor="alerts">
      <name>Alerts</name>
      <t>This section lists the alerts an implementation of this document sends,
in addition to those already defined by TLS 1.3:</t>
      <ul spacing="normal">
        <li>
          <t>illegal_parameter:  a ServerHello or HelloRetryRequest that selects a
KDF missing from the client's schedule_profile list, a ServerHello
whose schedule_profile differs from the HelloRetryRequest's when the
client sent one, or a selected PSK whose KDF, for an imported PSK its
target_kdf, is incompatible with the selected KDF.</t>
        </li>
        <li>
          <t>unsupported_extension:  a schedule_profile extension in a ServerHello
or HelloRetryRequest when the ClientHello did not carry one, as in TLS
1.3.</t>
        </li>
        <li>
          <t>decrypt_error: a handshake or post-handshake Finished, or a PSK binder
MAC, that fails verification, as in TLS 1.3.</t>
        </li>
        <li>
          <t>handshake_failure:  the server's first message omits schedule_profile
when local policy requires a KDF of this document (<xref target="cipher-suites"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="companion-mechanisms">
      <name>Companion Mechanisms</name>
      <t>Several deployed mechanisms invoke HKDF-Expand-Label or HMAC directly.
This document defines the Encrypted Client Hello confirmation for its
KDFs (<xref target="ech-generic"/>), because ECH is pervasive in the deployments most
likely to exercise these schedules, defines DTLS 1.3 (<xref target="dtls"/>), and
updates Exported Authenticators, which use the exporter and the cipher
suite's hash (<xref target="exported-authenticators"/>).</t>
      <t>A protocol built on TLS 1.3 that derives keys from a secret of this key
schedule with HKDF-Expand-Label(Secret, Label, Context, Length) instead
uses the Derive of <xref target="expand-op"/> on a connection that negotiates a KDF
of this document:  Derive(Init(Secret), label, Context, Length), with
the context omitted when it is empty.  Such a protocol MUST use the
single-output form.  The sequence-number key of DTLS 1.3 (<xref target="dtls"/>) is
an instance of this rule.</t>
      <t>That protocol's specification assigns the label and registers it in the
TLS XOF Key Schedule Labels registry (<xref target="iana-labels"/>), whose
registration rules keep every label 3 octets long (<xref target="labels"/>) and
distinct from every other label.  Until its specification registers its
labels, such a protocol has no defined derivation under this key
schedule.</t>
      <t>Any other mechanism that derives keys with HKDF-Expand-Label or HMAC,
including one that derives them before any KDF is negotiated, is not
covered by this document and needs its own specification.</t>
      <t>Until a specification defines a mechanism's derivations for a KDF of
this document, an endpoint that negotiates that KDF MUST NOT use the
mechanism on that connection.  QUIC <xref target="RFC9001"/> has no such
specification yet:  its "quic key", "quic iv", "quic hp", and "quic ku"
labels are not registered (<xref target="iana-labels"/>), and its Initial secrets are
derived before any KDF is negotiated.  An endpoint MUST NOT negotiate a
KDF of this document in QUIC until one exists.</t>
      <section anchor="dtls">
        <name>DTLS 1.3</name>
        <t>DTLS 1.3 <xref target="RFC9147"/> uses the key schedule of TLS 1.3 with two changes,
and a KDF of this document applies both.  This document updates
<xref target="RFC9147"/> for a connection that negotiates a KDF of this document.  A
connection that negotiates no KDF uses <xref target="RFC9147"/> unchanged.</t>
        <t>First, <xref section="5.9" sectionFormat="of" target="RFC9147"/> replaces the "tls13 " label prefix
with "dtls13" to separate DTLS 1.3 keys from TLS 1.3 keys.
schedule_label is that prefix (<xref target="dec-schedule"/>), so a DTLS 1.3
connection frames "dtls13" at every Init:</t>
        <artwork><![CDATA[
frame(schedule_label) = 0x0006 || "dtls13"
]]></artwork>
        <t>Every DTLS 1.3 derivation therefore has a different input from the TLS
1.3 derivation over the same values.  The transcript hash is unchanged:
its "tls13 hash" prefix separates it from keyed sequences
(<xref target="domain-separation"/>) and is not a label prefix, and DTLS 1.3 computes
the transcript over the messages that <xref section="5.2" sectionFormat="of" target="RFC9147"/>
specifies.</t>
        <t>Second, <xref section="4.2.3" sectionFormat="of" target="RFC9147"/> derives a key for record sequence
number encryption from each traffic secret.  It is a derivation of that
secret, alongside the record keys of <xref target="record-keys-generic"/>:</t>
        <artwork><![CDATA[
sn_key = Derive(Init(traffic_secret), "snk", Nk)
]]></artwork>
        <t>Nk is the AEAD key length, the key_length of <xref target="RFC9147"/>.</t>
        <t>For DTLS 1.3, a sender MUST remain able to send in the original epoch
while handshake retransmission and acknowledgement obligations require
it, including until the final flight is acknowledged (<xref section="4.2.1" sectionFormat="of" target="RFC9147"/> and <xref section="7.1" sectionFormat="of" target="RFC9147"/>), and MUST continue advancing
that epoch's send record sequence number without resetting it.  It can
keep the epoch's record key, IV, and sn_key, or re-derive them from a
retained traffic secret:  key_block is deterministic, so both give the
same keys.</t>
        <t>Because key_block is deterministic, re-deriving it and resetting the
sequence number repeats the record key and nonce.  With AES-GCM, nonce
reuse across different records permits recovery of the GHASH
authentication subkey and record forgery through Joux's forbidden attack
<xref target="JOUX"/>, demonstrated against TLS by <xref target="NONCE-DISRESPECT"/>.</t>
      </section>
      <section anchor="exported-authenticators">
        <name>Exported Authenticators</name>
        <t>Exported Authenticators <xref target="RFC9261"/> let either peer authenticate after
the handshake.  <xref target="RFC9261"/> computes each authenticator from two
exporter values and an "authenticator hash", which it defines as the
hash associated with the cipher suite (Section 5.1 of <xref target="RFC9261"/>).
Under a KDF of this document the cipher suite's hash governs nothing
(<xref target="profile-governs"/>), so this document updates <xref target="RFC9261"/> for a
connection that negotiates a KDF of this document.  A connection that
negotiates no KDF uses <xref target="RFC9261"/> unchanged.</t>
        <t>The authenticator hash is the KDF's TranscriptHash
(<xref target="transcript-hash"/>), and its output length is 64 octets.  The
Handshake Context and the Finished MAC Key of Section 5.1 of <xref target="RFC9261"/>
are values of the TLS-Exporter of <xref target="exporters-generic"/>, keyed by
exporter_secret, with the labels <xref target="RFC9261"/> registers, an empty
context, and a length of 64 octets.  For an authenticator sent by the
server:</t>
        <artwork><![CDATA[
HC = TLS-Exporter(
       "EXPORTER-server authenticator handshake context", "", 64)
FK = TLS-Exporter(
       "EXPORTER-server authenticator finished key", "", 64)
]]></artwork>
        <t>A client uses the "EXPORTER-client" labels in the same way.  The
CertificateVerify of Section 5.2.2 of <xref target="RFC9261"/> signs the octet 0x20
repeated 64 times, the context string "Exported Authenticator", a zero
octet, and:</t>
        <artwork><![CDATA[
TranscriptHash(HC || authenticator request || Certificate)
]]></artwork>
        <t>The Finished of Section 5.2.3 of <xref target="RFC9261"/> is the MAC of <xref target="mac-op"/> in
place of HMAC, with FLen, which is 64:</t>
        <artwork><![CDATA[
Finished = MAC(FK,
               TranscriptHash(HC || authenticator request
                              || Certificate || CertificateVerify),
               FLen)
]]></artwork>
        <t>The Finished of an empty authenticator (Section 6 of <xref target="RFC9261"/>) is the
same computation with no CertificateVerify, over a Certificate message
that carries the certificate_request_context of the authenticator
request and no CertificateEntries.  That Certificate message is
serialized and hashed like any other but is not sent, and it is not a
zero-length string.  As in <xref target="RFC9261"/>, an absent authenticator request
contributes no octets.</t>
        <t>Every other rule of <xref target="RFC9261"/> applies unchanged, including the use of
exporter_secret and not early_exporter_secret, the uniqueness of
certificate_request_context, and the requirement that a server verify
the client Finished before sending or processing an authenticator.  The
signature scheme keeps its own hash, as <xref target="authentication"/> describes.</t>
        <t>On a DTLS 1.3 connection, exporter_secret, the exporter outputs, and the
Finished MAC all use schedule_label "dtls13" (<xref target="dtls"/>).</t>
        <t>An implementation of Exported Authenticators outside the TLS library
(<xref section="7.3" sectionFormat="of" target="RFC9261"/>) MUST obtain the connection's negotiated KDF
identifier, or an indication that no KDF was negotiated, and whether the
connection uses TLS or DTLS.  The KDF selection determines the
authenticator hash and MAC, their output lengths, and the exporter
output lengths.  The protocol determines the MAC's schedule_label.  An
API providing only TLS-Exporter(label, context, length) is insufficient
because it does not convey that selection.  Updating the TLS library
alone can therefore leave an application producing incompatible
authenticators.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests no cipher suite code points.  It uses those of
TLS 1.3 (<xref target="cipher-suites"/>).</t>
      <section anchor="the-scheduleprofile-extension">
        <name>The schedule_profile Extension</name>
        <t>IANA is requested to register one entry in the TLS ExtensionType Values
registry per the procedures of <xref target="RFC9847"/>.</t>
        <table anchor="iana-ext-table">
          <name>Requested TLS ExtensionType Registration</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Extension Name</th>
              <th align="left">TLS 1.3</th>
              <th align="left">DTLS-Only</th>
              <th align="left">Recommended</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">schedule_profile</td>
              <td align="left">CH, SH, HRR</td>
              <td align="left">N</td>
              <td align="left">N</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>It is permitted in the ClientHello, the ServerHello, and the
HelloRetryRequest.  DTLS-Only is N because schedule_profile applies to
TLS 1.3 and DTLS 1.3 alike (<xref target="dtls"/>).  Recommended is N pending working
group consensus.</t>
      </section>
      <section anchor="tls-kdf-identifiers">
        <name>TLS KDF Identifiers</name>
        <t>IANA is requested to register two entries in the TLS KDF Identifiers
registry created by <xref target="RFC9258"/>, per its Specification Required policy.
KDF identifiers need no new registry:  that registry already names a key
schedule independently of a cipher suite, which is what this document
negotiates.</t>
        <table anchor="iana-profile-table">
          <name>Requested TLS KDF Identifier Registrations</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">TLS13_TURBOSHAKE256</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">TBD</td>
              <td align="left">TLS13_SHAKE256</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>A KDF registered here defines every key-schedule computation it governs:
its transcript hash, its secret and key derivations, its Finished and
PSK binder MACs, and its Encrypted Client Hello acceptance computations
(<xref target="schedule-profiles"/>).  A registration that leaves any of those to the
cipher suite has to say so:  a KDF silent on a computation is
under-specified, not inheriting.</t>
      </section>
      <section anchor="iana-labels">
        <name>TLS XOF Key Schedule Labels</name>
        <t>IANA is requested to create a registry named "TLS XOF Key Schedule
Labels" in the "Transport Layer Security (TLS) Parameters" registry
group.  Each entry names one output of Derive or one descriptor of
DeriveN (<xref target="expand-op"/>).  A DeriveN call has no registered label of its
own.  Its outputs each carry their registered label.  A label is exactly
3 octets of ASCII (<xref target="labels"/>), and no two entries have the same label.
The 4-octet tags and schedule_label of this document are not labels and
are not registered.  In particular, "outs" is a fixed terminal marker,
not a registry entry.</t>
        <t>The registration policy is Specification Required (<xref target="RFC8126"/>).  The
designated expert approves a request only if the label is exactly 3
ASCII octets, no entry already has it, and the specification states the
secret the label derives from, the encoding of its context, the output
length, and what the output is used for, and rejects any other request.
A registration specifies one output.  The initial "key" registration
specifies key_block for both Derive and DeriveN.  A registered label is
never reused or redefined.  Each registration names its change
controller, a person or organization.  The change controller of the
initial entries is the IETF.</t>
        <t>Each entry has a Label, a Use, a Change Controller, and a Reference.
The initial contents are the labels of <xref target="labels"/>, all with the IETF as
change controller:</t>
        <table anchor="iana-labels-table">
          <name>Initial Contents of the TLS XOF Key Schedule Labels Registry</name>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Use</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">"cet"</td>
              <td align="left">c_e_traffic</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"ees"</td>
              <td align="left">early_exporter_secret</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"ebk"</td>
              <td align="left">binder_key, non-imported external PSK</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"ibk"</td>
              <td align="left">binder_key, imported PSK</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"rbk"</td>
              <td align="left">binder_key, resumption PSK</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"drv"</td>
              <td align="left">a ratchet residue</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"cht"</td>
              <td align="left">c_hs_traffic</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"sht"</td>
              <td align="left">s_hs_traffic</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"cat"</td>
              <td align="left">c_ap_traffic</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"sat"</td>
              <td align="left">s_ap_traffic</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"exs"</td>
              <td align="left">exporter_secret</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"rss"</td>
              <td align="left">resumption_secret</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"fin"</td>
              <td align="left">finished_key</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"mac"</td>
              <td align="left">every MAC tag</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"key"</td>
              <td align="left">key_block</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"upd"</td>
              <td align="left">the next traffic secret</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"rsp"</td>
              <td align="left">resumption_psk</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"ipk"</td>
              <td align="left">ipsk</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"exl"</td>
              <td align="left">an exporter label secret</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"exp"</td>
              <td align="left">an exporter output</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"eca"</td>
              <td align="left">accept_confirmation</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"hca"</td>
              <td align="left">hrr_accept_confirmation</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"snk"</td>
              <td align="left">sn_key, DTLS 1.3</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="update-to-rfc-9258">
        <name>Update to RFC 9258</name>
        <t><xref target="RFC9258"/> anticipates this document:  "Future specifications that
change the way the KDF is negotiated will need to update this
specification to make clear how target KDFs are determined for the
import process."  This document changes how the KDF is negotiated, and
determines target KDFs as follows.</t>
        <t>The target_kdf of an ImportedIdentity is the TLS KDF Identifier the
importing client will negotiate in the schedule_profile extension
(<xref target="cipher-suites"/>).  For a connection that negotiates no KDF, the
target_kdf is HKDF_SHA256 or HKDF_SHA384 as the target cipher suite's
hash determines, exactly as before this document.  For the KDFs defined
here, <xref target="psk-importer"/> also replaces the importer computation and
EPSK-associated-hash rule of <xref section="5.1" sectionFormat="of" target="RFC9258"/>.</t>
        <t>The schedule_profile extension carries the negotiated TLS KDF Identifier
value on the wire, and the transcript hash covers it
(<xref target="cipher-suites"/>), so no final message-level trace for a KDF of this
document can exist before its value is assigned.  Schedule-level vectors
do not wait on that assignment, since no derivation of <xref target="key-schedule"/>
absorbs a code point:  a transcript checkpoint enters as an argument,
and one stated as a literal value pins the output with no code point
anywhere in the input.  The exceptions are ipsk (<xref target="import-derivation"/>),
whose context is TranscriptHash of an ImportedIdentity that carries
target_kdf, and values derived from ipsk, including the imported-PSK
binder.  <xref target="test-vectors"/> carries no message-level trace yet.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="profile-separation">
        <name>KDF Separation</name>
        <t>TLS13_TURBOSHAKE256 and TLS13_SHAKE256 frame the same schedule_label, so
their inputs can coincide.  They run different permutations, the
12-round Keccak-p[1600,12] and the 24-round Keccak-f[1600], though
the first is the last 12 rounds of the second (<xref target="FIPS202"/>, Sections 3.3
and 3.4).  Most secret inputs are bound to a single KDF
(<xref target="governing-profile"/>).  For those secrets, coincident framed inputs do
not by themselves expose either secret if both XOFs jointly behave as
independent random oracles and each secret is unpredictable to the
adversary (<xref target="cryptographic-analysis"/>).</t>
        <t>An external PSK used under both profiles is the exception.  For an
imported PSK, <xref target="psk-importer"/> requires a separate ipsk per target_kdf,
but the epsk beneath them is one secret, absorbed under both
permutations.  Raw external PSK reuse also shares a secret between
profiles.  A deployment that negotiates TLS13_SHAKE256 for its larger
round margin (<xref target="shake-sec"/>) does not gain that separation for such a
PSK.  A deployment that provisions a separate external PSK per KDF,
rather than using one under both, has no secret in common between them.</t>
      </section>
      <section anchor="downgrade-resistance">
        <name>Downgrade Resistance</name>
        <t>The selected cipher suite appears in the ServerHello and therefore in
the transcript from TH_SH onward, which every handshake and application
output binds (<xref target="key-schedule"/>).  A peer that assumed a different suite
would hold a different transcript, and its Finished MAC would fail.</t>
        <t>Stripping the extension in flight makes the ClientHello transcripts
differ and the Finished MACs fail.  A server can decline the extension
by omitting it from its first message (<xref target="cipher-suites"/>).  The client
decides whether to accept that capability mismatch.  A deployment that
offers both KDFs accepts whichever the server echoes.</t>
      </section>
      <section anchor="psk-entropy">
        <name>PSK Entropy</name>
        <t>An attacker who can guess an external PSK can recompute its binder
offline.  External PSKs SHOULD be drawn with at least 256 bits of
min-entropy, the target security level of both profiles.</t>
      </section>
      <section anchor="authentication-sec">
        <name>Authentication</name>
        <t>A fully SHA-2-free connection also needs SHA-2-free authentication,
which <xref target="authentication"/> specifies.</t>
        <t>The exporter labels that Exported Authenticators use are registered, not
reserved, so an application with access to the exporter can obtain the
Finished MAC Key (<xref target="exported-authenticators"/>).</t>
      </section>
      <section anchor="hybrid-key-exchange">
        <name>Hybrid Key Exchange</name>
        <t>One uncompromised component keeps the derivation unpredictable even if
another is adversarial.  Each component is absorbed as its own framed
input (<xref target="key-schedule"/>, <xref target="domain-separation"/>), and under the flat
sponge claim (<xref target="primitive-assumptions"/>) an output is unpredictable if
any input before it is.  Every leaf that depends on the shared secret
binds a transcript checkpoint (TH_SH, TH_SF, or TH_CF) covering all key
shares and any KEM ciphertexts, the binding that <xref target="BINDEL"/>, Section
3.2, adds to a dual PRF of the component secrets.  The uncompromised
component's secrecy rests on its own key-exchange assumption, and the
chaining analysis remains open (<xref target="open-analysis"/>).</t>
      </section>
      <section anchor="cryptographic-analysis">
        <name>Cryptographic Analysis</name>
        <t>The per-derivation bound ultimately comes from the security claim on
Keccak (<xref target="KECCAK"/>, Section 1.5) and on TurboSHAKE (<xref target="TURBOSHAKE"/>,
Section 2), as discussed in <xref target="primitive-assumptions"/>.  Protocol
security also depends on erasure and authentication, with proof
obligations still open (<xref target="open-analysis"/>).</t>
        <section anchor="threat-model-and-goals">
          <name>Threat Model and Goals</name>
          <t>The adversary is that of <xref target="TLS13KS"/>:  an active network adversary that
controls message delivery, can supply dishonest PSKs and key shares, and
can obtain output keys.  <xref target="TLS13KS"/> analyzes the secrecy of the key
schedule's output keys, not authentication.  Authentication of peer
identity remains outside the cipher suite, as in TLS 1.3.  The schedule
must provide indistinguishability of record keys and exporter outputs
under the chosen AEAD, integrity of the handshake transcript through
Finished and binder verification, forward secrecy from compromise of a
handshake traffic secret to application traffic once the asymmetric
shared secret is used, and the TLS 1.3 0-RTT replay model when early
data is accepted.</t>
        </section>
        <section anchor="primitive-assumptions">
          <name>Primitive Assumptions</name>
          <t>DF is the profile's XOF over a framed byte string.  The XOF is claimed
secure under a flat sponge claim with the claimed capacity equal to the
capacity of the underlying sponge function (<xref target="KECCAK"/>, Section 1.5, and
<xref target="TURBOSHAKE"/>, Section 2), that is, c=512 in the scope of this
document.  Informally, it means that SHAKE256 and TurboSHAKE256 are
claimed to offer the same security strength as a random oracle (RO) in
all cases where the RO offers a strength below 256 bits and a strength
of 256 bits otherwise.  Security strength is meant in the sense of
<xref target="MW18"/>, which covers decision games such as PRF distinguishing as well
as search games.  As for any concrete hash function or XOF, the claim
excludes weaknesses due to the mere fact that the function can be
described compactly and can be efficiently executed, e.g., the so-called
random oracle implementation impossibility <xref target="MRH"/>, as well as
properties that cannot be modeled as a single-stage game <xref target="RSS"/>.</t>
          <t>The claim is supported by the results of third-party cryptanalysis, of
which a list of publications is available at <xref target="KECCAK_CRYPTANALYSIS"/>.
 These results target reduced-round versions of Keccak, and at the time
of this writing, no such result contradicts the above claim at the
nominal number of rounds of (Turbo)SHAKE256.</t>
          <t>The claim is further supported by the proof of indifferentiability of
the sponge construction that SHAKE256 and TurboSHAKE256 use.
Informally, this proof ensures the absence of generic attacks on a
sponge function (i.e., attacks that work irrespective of the underlying
permutation) below a complexity of 2^(c/2) <xref target="BDPV08"/>, except for
attacks whose complexity is already below 2^(c/2) on a RO.</t>
          <t>In the sequel, we assume that the profile's XOF, and therefore the dec
engine, is as secure as claimed and discussed above, and therefore
reason on the usage of the XOF as that of a RO.</t>
        </section>
        <section anchor="primitive-usage">
          <name>Primitive Usage</name>
          <t>Every Derive or DeriveN is a single call DF(S, L) where seq(S) is
injectively framed (<xref target="domain-separation"/>), so calls with different
inputs query the oracle at different points, and the outputs of one
DeriveN are disjoint slices of one answer.  In the random-oracle game,
an adversary that never queries a string carrying the secret cannot
distinguish those outputs from independent uniform strings.  For a
secret with h bits of min-entropy conditioned on the adversary's view,
the chance of such a query is at most q / 2^h in q queries.  For an
external PSK with 256 bits of min-entropy (<xref target="psk-entropy"/>), that is q /
2^256.  These are bounds in that game, subject to the flat sponge claim
(<xref target="primitive-assumptions"/>), not bounds for the complete protocol.</t>
          <t>If the DeriveN answer is uniform, revealing some slices leaves the
others uniform and independent, provided the adversary has not queried
the secret-bearing input and has learned neither the full output tuple,
nor a secret the tuple was derived from, nor another name for a target
slice.</t>
          <t>Finished and binder verification require MAC to be unforgeable under a
chosen-message attack.  Each MAC key is a 64-octet finished_key used for
MAC and nothing else (<xref target="finished-and-binder-mac"/>).  The same key may be
used over several messages, as for a binder recomputed after a
HelloRetryRequest or for post-handshake Finished messages within one
traffic generation.</t>
          <t>For Exported Authenticators, the MAC key is the 64-octet Finished MAC
Key, also used for MAC and nothing else.  The same key can serve
successive Exported Authenticators on one connection
(<xref target="exported-authenticators"/>).</t>
          <t>MAC is a Derive (<xref target="mac-op"/>), so the preceding random-oracle argument
applies.  In that game, a uniform secret unknown to the adversary keys a
pseudorandom function of the rest of the framed input.  With an L-octet
output, each verification attempt adds at most 2^(-8L) to the forgery
probability, in addition to the probability of querying the secret.</t>
          <t>The uniformity of finished_key to an adversary depends on that of the
secrets beneath it.  A finished_key derived from a guessable external
PSK is not uniform to the adversary (<xref target="psk-entropy"/>).</t>
          <t>If the ECH confirmation Derive output (<xref target="ech-generic"/>) is pseudorandom,
a network attacker without ClientHelloInner.random guesses the 8 octets
with probability at most 2^-64 per attempt, plus its advantage in
distinguishing the output from random.</t>
        </section>
        <section anchor="derivation-graph">
          <name>Derivation Graph</name>
          <t>The stage trunks E, H, and T and the ratchet residues map to TLS 1.3's
Early/Handshake/Main Secrets and its unnamed "derived" salt as
<xref target="stage-secrets"/> sets out.  DeriveN also combines sibling sites into
one query.  The map is onto rather than one to one: this document
derives key_block once and slices the record key and IV from it, where
TLS 1.3 derives each at its own site.  It is structural and does not
carry the TLS 1.3 proof.</t>
        </section>
        <section anchor="open-analysis">
          <name>What Is Not Yet Established</name>
          <t>This schedule does not yet have an analysis equivalent to <xref target="TLS13KS"/>.</t>
          <t><xref target="TLS13KS"/> is proved over discrete extract-and-expand nodes, not over
an accumulator carried across each stage and cloned at its leaves.  The
cross-stage chaining needs analysis, in particular absorbing the
asymmetric shared secret into a dec engine seeded with the early
residue, the step TLS 1.3 performs as an HKDF-Extract salted with the
early secret's "derived" value.  The flat sponge claim does not cover
the key exchange itself.  Under active substitution of key shares, a
Diffie-Hellman group needs an oracle form of the computational
Diffie-Hellman assumption, and a KEM an active-attack assumption such as
IND-CCA (<xref target="hybrid-key-exchange"/> covers hybrid groups).  The reasoning
in Section 6.4 of <xref target="DHMVV25"/> can be followed to cover derivations keyed
by an independent PSK the adversary cannot predict, directly or through
residues chained from it, but not the absorption of the shared secret or
what depends on it alone.</t>
          <t>Whether the ECH confirmation replacement (<xref target="ech-generic"/>) keeps every
property <xref target="RFC9849"/> analyzes is not established here.</t>
        </section>
      </section>
      <section anchor="erasure-boundaries">
        <name>Erasure Boundaries</name>
        <t>A sponge function is built on a permutation, and permutations are
invertible.  If the intervening absorbed blocks are known, anyone
holding a later state can recover the earlier one.  Carrying a raw
accumulator across a stage boundary would therefore let a post-handshake
state compromise re-derive handshake traffic secrets when those
intervening blocks are known.</t>
        <t>A Ratchet breaks the chain because its squeeze returns a function of the
state, not the state itself.  In the random-oracle game
(<xref target="primitive-assumptions"/>), recovering it requires a query on the
secret-bearing input.  A boundary mixing an asymmetric shared_secret
relies instead on the exchange's computational hardness and the open
chaining analysis (<xref target="open-analysis"/>), not on information-theoretic
entropy given the public key shares.  The early-to-handshake boundary
carries only the PSK, so its one-wayness depends on the PSK's
min-entropy (<xref target="psk-entropy"/>):  a low-entropy external PSK earns no
forward secrecy there from that boundary alone.  A PSK-only handshake
absorbs no asymmetric shared secret at all (<xref target="absent-empty"/>), so every
boundary has the same PSK-entropy limitation.</t>
        <t>The one-wayness argument is conditional on erasing the old trunk.  The
squeeze does not erase it.</t>
        <t>A ratchet's forward secrecy is only as good as the erasure behind it,
and erasure is local:  no peer observes it, and no interoperability test
detects its absence.  The erasure rules below are therefore
expectations, not interoperability requirements, and an implementation
SHOULD follow them as its platform allows.</t>
        <t>An accumulator of a stage should not outlive that stage's ratchet,
should not be retained as a successor across a ratchet, and should not
be serialized, exported, or compared.  Handshake-stage traffic secrets
and record keys should be destroyed when their TLS 1.3 analogues would
be, and each stage secret once the next stage has absorbed it.</t>
        <t>For DTLS, destruction of epoch material is subject to the retention
requirements in <xref target="dtls"/>.</t>
        <t>Every cloned accumulator is a 200-octet copy of secret state, and a
clone exists for the span of a Derive or DeriveN.  Keeping that window
short, and zeroizing each clone when it is dropped, limits what a
compromise recovers.  A buffer holding the complete output tuple of a
DeriveN that derives record keys exposes both its record material and
its finished_key or successor secret.  Redundant buffers holding DeriveN
output tuples should be erased after their slices have been distributed.
Unused successor secrets should be erased when the connection closes,
subject to the DTLS retention rules above.  Compromise of a live
accumulator yields that stage's underived leaves, as compromise of a
stage secret does in TLS 1.3.  With the preceding state and other
absorbed blocks known, invertibility can also expose an absorbed
asymmetric shared secret.</t>
        <t>On platforms that cannot guarantee erasure these erasure rules are best
effort (<xref target="implementation-considerations"/>).</t>
      </section>
      <section anchor="domain-separation">
        <name>Domain Separation</name>
        <t>Distinct derivation paths yield distinct byte strings as dec engine
inputs.  A framed sequence decodes to exactly one list of items:
frame(x) is uint16(len(x)) || x with no padding (<xref target="conventions"/>).</t>
        <t>Every dec engine opens with frame(schedule_label), then its rooting item
(<xref target="dec-interface"/>, <xref target="expand-op"/>):  the PSK for the early stage, the
early residue for the handshake stage, the handshake residue for the
application stage, and the retained secret for a derivation
(<xref target="key-schedule"/>).  The PSK is framed under the tag "psk_" and every
residue or retained secret under "seed", so the early trunk differs from
every other dec accumulator in its first tag.  Dec accumulators that
open with the same tag are told apart by their seed value, not their
structure.  A path over a live stage trunk and a path over a dec engine
seeded with a retained secret draw from disjoint label vocabularies
(<xref target="key-schedule"/>, <xref target="labels"/>).  Within either, every item before the
terminal label or the "outs" marker is a framed tag drawn from this
document's fixed vocabulary followed by its framed value, in an order
the schedule fixes, so two paths of the same kind and the same length
that agree tag for tag can differ only in a value.  Two paths that
differ at all therefore differ at some item, so their framed sequences
differ.  The "outs" marker cannot be a prefix tag or a three-octet
Derive label, so it separates DeriveN from both a Derive and an
unfinished prefix.  Its framed descriptor count fixes how many labels
and lengths follow, and those ordered lengths fix the DeriveN output
partition.</t>
        <t>Unkeyed transcript hashing is separated at the byte level:</t>
        <artwork><![CDATA[
"tls13 hash"           = 0x74 0x6c ...

frame(schedule_label)  = uint16(6) || "tls13 "
                       = 0x00 0x06 || "tls13 "
]]></artwork>
        <t>The first octet separates a keyed sequence from the transcript hash.</t>
      </section>
      <section anchor="per-profile-considerations">
        <name>Per-Profile Considerations</name>
        <section anchor="turboshake-sec">
          <name>TLS13_TURBOSHAKE256</name>
          <t>TLS13_TURBOSHAKE256 targets 256-bit security, which <xref target="RFC9861"/>, Table 4
claims for TurboSHAKE256 and its 512-bit capacity (<xref target="RFC9861"/>, Section
2.2) supports.</t>
        </section>
        <section anchor="shake-sec">
          <name>TLS13_SHAKE256</name>
          <t>TLS13_SHAKE256 uses SHAKE256's Keccak-f[1600] in place of
TurboSHAKE256's Keccak-p[1600,12] (<xref target="shake-instantiation"/>).  Its full
24-round permutation supports the same 256-bit target with a larger
round margin (<xref target="shake-profile"/>).</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9846" target="https://www.rfc-editor.org/info/rfc9846" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9846.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <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 obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="RFC9847" target="https://www.rfc-editor.org/info/rfc9847" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9847.xml">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>This document updates the changes to the TLS and DTLS IANA registries made in RFC 8447. It adds a new value, "D" for discouraged, to the "Recommended" column of the selected TLS registries and adds a "Comment" column to all active registries that do not already have a "Comment" column. Finally, it updates the registration request instructions.</t>
              <t>This document updates RFC 8447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9847"/>
          <seriesInfo name="DOI" value="10.17487/RFC9847"/>
        </reference>
        <reference anchor="RFC9258" target="https://www.rfc-editor.org/info/rfc9258" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9258.xml">
          <front>
            <title>Importing External Pre-Shared Keys (PSKs) for TLS 1.3</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes an interface for importing external Pre-Shared Keys (PSKs) into TLS 1.3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9258"/>
          <seriesInfo name="DOI" value="10.17487/RFC9258"/>
        </reference>
        <reference anchor="RFC9261" target="https://www.rfc-editor.org/info/rfc9261" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9261.xml">
          <front>
            <title>Exported Authenticators in TLS</title>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that builds on Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS) and enables peers to provide proof of ownership of an identity, such as an X.509 certificate. This proof can be exported by one peer, transmitted out of band to the other peer, and verified by the receiving peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9261"/>
          <seriesInfo name="DOI" value="10.17487/RFC9261"/>
        </reference>
        <reference anchor="RFC9849" target="https://www.rfc-editor.org/info/rfc9849" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9849.xml">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="K. Oku" initials="K." surname="Oku"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>This document describes a mechanism in Transport Layer Security (TLS) for encrypting a message under a server public key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9849"/>
          <seriesInfo name="DOI" value="10.17487/RFC9849"/>
        </reference>
        <reference anchor="RFC9861" target="https://www.rfc-editor.org/info/rfc9861" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9861.xml">
          <front>
            <title>KangarooTwelve and TurboSHAKE</title>
            <author fullname="B. Viguier" initials="B." surname="Viguier"/>
            <author fullname="D. Wong" initials="D." role="editor" surname="Wong"/>
            <author fullname="G. Van Assche" initials="G." role="editor" surname="Van Assche"/>
            <author fullname="Q. Dang" initials="Q." role="editor" surname="Dang"/>
            <author fullname="J. Daemen" initials="J." role="editor" surname="Daemen"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This document defines four eXtendable-Output Functions (XOFs), hash functions with output of arbitrary length, named TurboSHAKE128, TurboSHAKE256, KT128, and KT256.</t>
              <t>All four functions provide efficient and secure hashing primitives, and the last two are able to exploit the parallelism of the implementation in a scalable way.</t>
              <t>This document is a product of the Crypto Forum Research Group. It builds up on the definitions of the permutations and of the sponge construction in NIST FIPS 202 and is meant to serve as a stable reference and an implementation guide.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9861"/>
          <seriesInfo name="DOI" value="10.17487/RFC9861"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9147.xml">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <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>
        <reference anchor="FIPS202" target="https://csrc.nist.gov/pubs/fips/202/final">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="202"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.202"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8032.xml">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC9001" target="https://www.rfc-editor.org/info/rfc9001" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9001.xml">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="I-D.ietf-tls-mldsa" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-mldsa-06" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-mldsa.xml">
          <front>
            <title>Use of ML-DSA in TLS 1.3</title>
            <author fullname="Tim Hollebeek" initials="T." surname="Hollebeek">
              <organization>DigiCert</organization>
            </author>
            <author fullname="Sophie Schmieg" initials="S." surname="Schmieg">
              <organization>Google</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="11" month="September" year="2026"/>
            <abstract>
              <t>This memo specifies how the post-quantum signature scheme ML-DSA (FIPS 204) is used for authentication in TLS 1.3.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-mldsa-06"/>
        </reference>
        <reference anchor="FIPS204" target="https://csrc.nist.gov/pubs/fips/204/final">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="204"/>
        </reference>
        <reference anchor="JOUX" target="https://csrc.nist.gov/csrc/media/projects/block-cipher-techniques/documents/bcm/joux_comments.pdf">
          <front>
            <title>Authentication Failures in NIST version of GCM</title>
            <author initials="A." surname="Joux">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="NONCE-DISRESPECT" target="https://www.usenix.org/conference/woot16/workshop-program/presentation/bock">
          <front>
            <title>Nonce-Disrespecting Adversaries: Practical Forgery Attacks on GCM in TLS</title>
            <author initials="H." surname="Boeck">
              <organization/>
            </author>
            <author initials="A." surname="Zauner">
              <organization/>
            </author>
            <author initials="S." surname="Devlin">
              <organization/>
            </author>
            <author initials="J." surname="Somorovsky">
              <organization/>
            </author>
            <author initials="P." surname="Jovanovic">
              <organization/>
            </author>
            <date year="2016" month="August"/>
          </front>
          <seriesInfo name="USENIX WOOT" value="2016"/>
        </reference>
        <reference anchor="RFC9954" target="https://www.rfc-editor.org/info/rfc9954" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9954.xml">
          <front>
            <title>Hybrid Key Exchange in TLS 1.3</title>
            <author fullname="D. Stebila" initials="D." surname="Stebila"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="S. Gueron" initials="S." surname="Gueron"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>Hybrid key exchange refers to using multiple key exchange algorithms simultaneously and combining the result with the goal of providing security even if a way is found to defeat the encryption for all but one of the component algorithms. It is motivated by the transition to post-quantum cryptography. This document provides a construction for hybrid key exchange in the Transport Layer Security (TLS) protocol version 1.3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9954"/>
          <seriesInfo name="DOI" value="10.17487/RFC9954"/>
        </reference>
        <reference anchor="KECCAK" target="https://keccak.team/files/Keccak-reference-3.0.pdf">
          <front>
            <title>The Keccak reference</title>
            <author initials="G." surname="Bertoni">
              <organization/>
            </author>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="M." surname="Peeters">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
        </reference>
        <reference anchor="TURBOSHAKE" target="https://eprint.iacr.org/2023/342">
          <front>
            <title>TurboSHAKE</title>
            <author initials="G." surname="Bertoni">
              <organization/>
            </author>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="S." surname="Hoffert">
              <organization/>
            </author>
            <author initials="M." surname="Peeters">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <author initials="R." surname="Van Keer">
              <organization/>
            </author>
            <author initials="B." surname="Viguier">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="KECCAK_CRYPTANALYSIS" target="https://www.keccak.team/third_party.html">
          <front>
            <title>Third-Party Cryptanalysis</title>
            <author>
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="BDPV08" target="https://keccak.team/files/SpongeIndifferentiability.pdf">
          <front>
            <title>On the Indifferentiability of the Sponge Construction</title>
            <author initials="G." surname="Bertoni">
              <organization/>
            </author>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="M." surname="Peeters">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <date year="2008"/>
          </front>
          <seriesInfo name="EUROCRYPT" value="2008, LNCS 4965, pp. 181-197"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-78967-3_11"/>
        </reference>
        <reference anchor="DHMVV25" target="https://eprint.iacr.org/2024/1618">
          <front>
            <title>Shaking up authenticated encryption</title>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="S." surname="Hoffert">
              <organization/>
            </author>
            <author initials="S." surname="Mella">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <author initials="R." surname="Van Keer">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="EuroS&amp;P" value="2025, pp. 861-882"/>
          <seriesInfo name="DOI" value="10.1109/EUROSP63326.2025.00054"/>
        </reference>
        <reference anchor="MW18" target="https://eprint.iacr.org/2018/077">
          <front>
            <title>On the Bit Security of Cryptographic Primitives</title>
            <author initials="D." surname="Micciancio">
              <organization/>
            </author>
            <author initials="M." surname="Walter">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="EUROCRYPT" value="2018, LNCS 10820, pp. 3-28"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-78381-9_1"/>
        </reference>
        <reference anchor="XOODYAK" target="https://keccak.team/xoodyak.html">
          <front>
            <title>Xoodyak, a Lightweight Cryptographic Scheme</title>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="S." surname="Hoffert">
              <organization/>
            </author>
            <author initials="M." surname="Peeters">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <author initials="R." surname="Van Keer">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="IACR Transactions on Symmetric Cryptology" value="2020(S1)"/>
          <seriesInfo name="DOI" value="10.46586/tosc.v2020.iS1.60-87"/>
        </reference>
        <reference anchor="STROBE" target="https://eprint.iacr.org/2017/003">
          <front>
            <title>The STROBE Protocol Framework</title>
            <author initials="M." surname="Hamburg">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="TLS13KS" target="https://eprint.iacr.org/2021/467">
          <front>
            <title>Key-Schedule Security for the TLS 1.3 Standard</title>
            <author initials="C." surname="Brzuska">
              <organization/>
            </author>
            <author initials="A." surname="Delignat-Lavaud">
              <organization/>
            </author>
            <author initials="C." surname="Egger">
              <organization/>
            </author>
            <author initials="C." surname="Fournet">
              <organization/>
            </author>
            <author initials="K." surname="Kohbrok">
              <organization/>
            </author>
            <author initials="M." surname="Kohlweiss">
              <organization/>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="ASIACRYPT" value="2022"/>
        </reference>
        <reference anchor="MRH" target="https://doi.org/10.1007/978-3-540-24638-1_2">
          <front>
            <title>Indifferentiability, Impossibility Results on Reductions, and Applications to the Random Oracle Methodology</title>
            <author initials="U." surname="Maurer">
              <organization/>
            </author>
            <author initials="R." surname="Renner">
              <organization/>
            </author>
            <author initials="C." surname="Holenstein">
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="TCC" value="2004, LNCS 2951, pp. 21-39"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-24638-1_2"/>
        </reference>
        <reference anchor="RSS" target="https://doi.org/10.1007/978-3-642-20465-4_27">
          <front>
            <title>Careful with Composition: Limitations of the Indifferentiability Framework</title>
            <author initials="T." surname="Ristenpart">
              <organization/>
            </author>
            <author initials="H." surname="Shacham">
              <organization/>
            </author>
            <author initials="T." surname="Shrimpton">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="EUROCRYPT" value="2011, LNCS 6632, pp. 487-506"/>
          <seriesInfo name="DOI" value="10.1007/978-3-642-20465-4_27"/>
        </reference>
        <reference anchor="BINDEL" target="https://eprint.iacr.org/2018/903">
          <front>
            <title>Hybrid Key Encapsulation Mechanisms and Authenticated Key Exchange</title>
            <author initials="N." surname="Bindel">
              <organization/>
            </author>
            <author initials="J." surname="Brendel">
              <organization/>
            </author>
            <author initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author initials="B." surname="Goncalves">
              <organization/>
            </author>
            <author initials="D." surname="Stebila">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="PQCrypto" value="2019, LNCS 11505, pp. 206-226"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-25510-7_12"/>
        </reference>
      </references>
    </references>
    <?line 2302?>

<section anchor="comparison">
      <name>Comparison with TLS 1.3</name>
      <t>This appendix is non-normative.  It compares the TLS 1.3 schedule with
the dec engine-based key schedule of <xref target="dec-schedule"/>.  Both profiles
share this schedule and differ only in the underlying permutation, so
the comparison applies equally to TLS13_TURBOSHAKE256 and
TLS13_SHAKE256, and the figure labels the dec engine side generically.</t>
      <figure anchor="comparison-figure">
        <name>TLS 1.3 with Imported PSKs and the Dec Engine-Based Key Schedule</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="848" width="576" viewBox="0 0 576 848" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
              <path d="M 8,448 L 8,480" fill="none" stroke="black"/>
              <path d="M 8,656 L 8,688" fill="none" stroke="black"/>
              <path d="M 80,128 L 80,152" fill="none" stroke="black"/>
              <path d="M 80,200 L 80,368" fill="none" stroke="black"/>
              <path d="M 80,416 L 80,440" fill="none" stroke="black"/>
              <path d="M 80,488 L 80,592" fill="none" stroke="black"/>
              <path d="M 80,624 L 80,648" fill="none" stroke="black"/>
              <path d="M 80,696 L 80,832" fill="none" stroke="black"/>
              <path d="M 152,160 L 152,192" fill="none" stroke="black"/>
              <path d="M 152,448 L 152,480" fill="none" stroke="black"/>
              <path d="M 152,656 L 152,688" fill="none" stroke="black"/>
              <path d="M 272,160 L 272,192" fill="none" stroke="black"/>
              <path d="M 272,448 L 272,480" fill="none" stroke="black"/>
              <path d="M 272,656 L 272,688" fill="none" stroke="black"/>
              <path d="M 344,104 L 344,144" fill="none" stroke="black"/>
              <path d="M 344,208 L 344,376" fill="none" stroke="black"/>
              <path d="M 344,392 L 344,432" fill="none" stroke="black"/>
              <path d="M 344,496 L 344,600" fill="none" stroke="black"/>
              <path d="M 344,616 L 344,640" fill="none" stroke="black"/>
              <path d="M 344,704 L 344,832" fill="none" stroke="black"/>
              <path d="M 416,160 L 416,200" fill="none" stroke="black"/>
              <path d="M 416,288 L 416,296" fill="none" stroke="black"/>
              <path d="M 416,448 L 416,488" fill="none" stroke="black"/>
              <path d="M 416,656 L 416,696" fill="none" stroke="black"/>
              <path d="M 16,62 L 176,62" fill="none" stroke="black"/>
              <path d="M 16,66 L 176,66" fill="none" stroke="black"/>
              <path d="M 280,62 L 536,62" fill="none" stroke="black"/>
              <path d="M 280,66 L 536,66" fill="none" stroke="black"/>
              <path d="M 8,160 L 152,160" fill="none" stroke="black"/>
              <path d="M 272,158 L 416,158" fill="none" stroke="black"/>
              <path d="M 272,162 L 416,162" fill="none" stroke="black"/>
              <path d="M 8,192 L 152,192" fill="none" stroke="black"/>
              <path d="M 272,190 L 416,190" fill="none" stroke="black"/>
              <path d="M 272,194 L 416,194" fill="none" stroke="black"/>
              <path d="M 80,224 L 96,224" fill="none" stroke="black"/>
              <path d="M 344,240 L 360,240" fill="none" stroke="black"/>
              <path d="M 80,256 L 96,256" fill="none" stroke="black"/>
              <path d="M 344,256 L 360,256" fill="none" stroke="black"/>
              <path d="M 80,288 L 96,288" fill="none" stroke="black"/>
              <path d="M 344,336 L 360,336" fill="none" stroke="black"/>
              <path d="M 344,352 L 360,352" fill="none" stroke="black"/>
              <path d="M 8,448 L 152,448" fill="none" stroke="black"/>
              <path d="M 272,446 L 416,446" fill="none" stroke="black"/>
              <path d="M 272,450 L 416,450" fill="none" stroke="black"/>
              <path d="M 8,480 L 152,480" fill="none" stroke="black"/>
              <path d="M 272,478 L 416,478" fill="none" stroke="black"/>
              <path d="M 272,482 L 416,482" fill="none" stroke="black"/>
              <path d="M 80,512 L 96,512" fill="none" stroke="black"/>
              <path d="M 344,528 L 360,528" fill="none" stroke="black"/>
              <path d="M 80,544 L 96,544" fill="none" stroke="black"/>
              <path d="M 344,544 L 360,544" fill="none" stroke="black"/>
              <path d="M 8,656 L 152,656" fill="none" stroke="black"/>
              <path d="M 272,654 L 416,654" fill="none" stroke="black"/>
              <path d="M 272,658 L 416,658" fill="none" stroke="black"/>
              <path d="M 8,688 L 152,688" fill="none" stroke="black"/>
              <path d="M 272,686 L 416,686" fill="none" stroke="black"/>
              <path d="M 272,690 L 416,690" fill="none" stroke="black"/>
              <path d="M 80,720 L 96,720" fill="none" stroke="black"/>
              <path d="M 344,736 L 360,736" fill="none" stroke="black"/>
              <path d="M 80,752 L 96,752" fill="none" stroke="black"/>
              <path d="M 344,752 L 360,752" fill="none" stroke="black"/>
              <path d="M 344,768 L 360,768" fill="none" stroke="black"/>
              <path d="M 80,784 L 96,784" fill="none" stroke="black"/>
              <path d="M 80,816 L 96,816" fill="none" stroke="black"/>
              <path d="M 344,816 L 360,816" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="368,816 356,810.4 356,821.6" fill="black" transform="rotate(0,360,816)"/>
              <polygon class="arrowhead" points="368,768 356,762.4 356,773.6" fill="black" transform="rotate(0,360,768)"/>
              <polygon class="arrowhead" points="368,752 356,746.4 356,757.6" fill="black" transform="rotate(0,360,752)"/>
              <polygon class="arrowhead" points="368,736 356,730.4 356,741.6" fill="black" transform="rotate(0,360,736)"/>
              <polygon class="arrowhead" points="368,544 356,538.4 356,549.6" fill="black" transform="rotate(0,360,544)"/>
              <polygon class="arrowhead" points="368,528 356,522.4 356,533.6" fill="black" transform="rotate(0,360,528)"/>
              <polygon class="arrowhead" points="368,352 356,346.4 356,357.6" fill="black" transform="rotate(0,360,352)"/>
              <polygon class="arrowhead" points="368,336 356,330.4 356,341.6" fill="black" transform="rotate(0,360,336)"/>
              <polygon class="arrowhead" points="368,256 356,250.4 356,261.6" fill="black" transform="rotate(0,360,256)"/>
              <polygon class="arrowhead" points="368,240 356,234.4 356,245.6" fill="black" transform="rotate(0,360,240)"/>
              <polygon class="arrowhead" points="352,640 340,634.4 340,645.6" fill="black" transform="rotate(90,344,640)"/>
              <path class="jump" d="M 344,616 C 338,616 338,600 344,600" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="352,600 340,594.4 340,605.6" fill="black" transform="rotate(90,344,600)"/>
              <polygon class="arrowhead" points="352,432 340,426.4 340,437.6" fill="black" transform="rotate(90,344,432)"/>
              <path class="jump" d="M 344,392 C 338,392 338,376 344,376" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="352,376 340,370.4 340,381.6" fill="black" transform="rotate(90,344,376)"/>
              <polygon class="arrowhead" points="352,144 340,138.4 340,149.6" fill="black" transform="rotate(90,344,144)"/>
              <polygon class="arrowhead" points="104,816 92,810.4 92,821.6" fill="black" transform="rotate(0,96,816)"/>
              <polygon class="arrowhead" points="104,784 92,778.4 92,789.6" fill="black" transform="rotate(0,96,784)"/>
              <polygon class="arrowhead" points="104,752 92,746.4 92,757.6" fill="black" transform="rotate(0,96,752)"/>
              <polygon class="arrowhead" points="104,720 92,714.4 92,725.6" fill="black" transform="rotate(0,96,720)"/>
              <polygon class="arrowhead" points="104,544 92,538.4 92,549.6" fill="black" transform="rotate(0,96,544)"/>
              <polygon class="arrowhead" points="104,512 92,506.4 92,517.6" fill="black" transform="rotate(0,96,512)"/>
              <polygon class="arrowhead" points="104,288 92,282.4 92,293.6" fill="black" transform="rotate(0,96,288)"/>
              <polygon class="arrowhead" points="104,256 92,250.4 92,261.6" fill="black" transform="rotate(0,96,256)"/>
              <polygon class="arrowhead" points="104,224 92,218.4 92,229.6" fill="black" transform="rotate(0,96,224)"/>
              <polygon class="arrowhead" points="88,648 76,642.4 76,653.6" fill="black" transform="rotate(90,80,648)"/>
              <polygon class="arrowhead" points="88,592 76,586.4 76,597.6" fill="black" transform="rotate(90,80,592)"/>
              <polygon class="arrowhead" points="88,440 76,434.4 76,445.6" fill="black" transform="rotate(90,80,440)"/>
              <polygon class="arrowhead" points="88,368 76,362.4 76,373.6" fill="black" transform="rotate(90,80,368)"/>
              <polygon class="arrowhead" points="88,152 76,146.4 76,157.6" fill="black" transform="rotate(90,80,152)"/>
              <g class="text">
                <text x="24" y="36">RFC</text>
                <text x="60" y="36">9846</text>
                <text x="96" y="36">and</text>
                <text x="128" y="36">RFC</text>
                <text x="164" y="36">9258</text>
                <text x="292" y="36">This</text>
                <text x="352" y="36">document,</text>
                <text x="288" y="52">the</text>
                <text x="320" y="52">dec</text>
                <text x="388" y="52">engine-based</text>
                <text x="456" y="52">key</text>
                <text x="508" y="52">schedule</text>
                <text x="72" y="100">HKDF-Extract(0,</text>
                <text x="156" y="100">PSK)</text>
                <text x="280" y="100">E</text>
                <text x="296" y="100">=</text>
                <text x="332" y="100">Init()</text>
                <text x="308" y="116">Absorb(E</text>
                <text x="384" y="116">"psk_",</text>
                <text x="436" y="116">PSK)</text>
                <text x="56" y="180">Early</text>
                <text x="108" y="180">Secret</text>
                <text x="296" y="180">E</text>
                <text x="352" y="180">accumulator</text>
                <text x="156" y="212">Derive-Secret(.,</text>
                <text x="244" y="212">Lbl,</text>
                <text x="280" y="212">TH)</text>
                <text x="396" y="212">DeriveN(E,</text>
                <text x="464" y="212">[cet,</text>
                <text x="512" y="212">ees],</text>
                <text x="116" y="228">"c</text>
                <text x="136" y="228">e</text>
                <text x="180" y="228">traffic"</text>
                <text x="248" y="228">TH_CH</text>
                <text x="396" y="228">TH_CH)</text>
                <text x="112" y="244">=</text>
                <text x="168" y="244">c_e_traffic</text>
                <text x="416" y="244">c_e_traffic</text>
                <text x="116" y="260">"e</text>
                <text x="144" y="260">exp</text>
                <text x="192" y="260">master"</text>
                <text x="256" y="260">TH_CH</text>
                <text x="456" y="260">early_exporter_secret</text>
                <text x="112" y="276">=</text>
                <text x="208" y="276">early_exporter_secret</text>
                <text x="404" y="276">binder_label</text>
                <text x="464" y="276">=</text>
                <text x="124" y="292">"imp</text>
                <text x="176" y="292">binder"</text>
                <text x="232" y="292">(no</text>
                <text x="284" y="292">context)</text>
                <text x="392" y="292">"ebk"</text>
                <text x="448" y="292">"ibk"</text>
                <text x="484" y="292">or</text>
                <text x="520" y="292">"rbk"</text>
                <text x="112" y="308">=</text>
                <text x="164" y="308">binder_key</text>
                <text x="396" y="308">DeriveN(E,</text>
                <text x="428" y="324">[binder_label,</text>
                <text x="520" y="324">"drv"])</text>
                <text x="412" y="340">binder_key</text>
                <text x="156" y="356">Derive-Secret(.,</text>
                <text x="268" y="356">"derived")</text>
                <text x="424" y="356">early_residue</text>
                <text x="96" y="388">HKDF-Extract(derived,</text>
                <text x="280" y="388">H</text>
                <text x="296" y="388">=</text>
                <text x="324" y="388">Init</text>
                <text x="404" y="388">early_residue)</text>
                <text x="68" y="404">asymmetric</text>
                <text x="140" y="404">shared</text>
                <text x="200" y="404">secret)</text>
                <text x="308" y="404">Absorb(H</text>
                <text x="384" y="404">"shs_",</text>
                <text x="476" y="404">shared_secret)</text>
                <text x="56" y="468">Handshake</text>
                <text x="124" y="468">Secret</text>
                <text x="296" y="468">H</text>
                <text x="352" y="468">accumulator</text>
                <text x="156" y="500">Derive-Secret(.,</text>
                <text x="244" y="500">Lbl,</text>
                <text x="280" y="500">TH)</text>
                <text x="396" y="500">DeriveN(H,</text>
                <text x="464" y="500">[cht,</text>
                <text x="512" y="500">sht],</text>
                <text x="116" y="516">"c</text>
                <text x="140" y="516">hs</text>
                <text x="188" y="516">traffic"</text>
                <text x="256" y="516">TH_SH</text>
                <text x="396" y="516">TH_SH)</text>
                <text x="112" y="532">=</text>
                <text x="172" y="532">c_hs_traffic</text>
                <text x="420" y="532">c_hs_traffic</text>
                <text x="116" y="548">"s</text>
                <text x="140" y="548">hs</text>
                <text x="188" y="548">traffic"</text>
                <text x="256" y="548">TH_SH</text>
                <text x="420" y="548">s_hs_traffic</text>
                <text x="112" y="564">=</text>
                <text x="172" y="564">s_hs_traffic</text>
                <text x="156" y="580">Derive-Secret(.,</text>
                <text x="268" y="580">"derived")</text>
                <text x="396" y="580">Ratchet(H)</text>
                <text x="464" y="580">emits</text>
                <text x="520" y="580">residue</text>
                <text x="96" y="612">HKDF-Extract(derived,</text>
                <text x="196" y="612">0)</text>
                <text x="280" y="612">T</text>
                <text x="296" y="612">=</text>
                <text x="324" y="612">Init</text>
                <text x="380" y="612">residue)</text>
                <text x="52" y="676">Main</text>
                <text x="100" y="676">Secret</text>
                <text x="296" y="676">T</text>
                <text x="352" y="676">accumulator</text>
                <text x="156" y="708">Derive-Secret(.,</text>
                <text x="244" y="708">Lbl,</text>
                <text x="280" y="708">TH)</text>
                <text x="396" y="708">DeriveN(T,</text>
                <text x="464" y="708">[cat,</text>
                <text x="508" y="708">sat,</text>
                <text x="552" y="708">exs],</text>
                <text x="116" y="724">"c</text>
                <text x="140" y="724">ap</text>
                <text x="188" y="724">traffic"</text>
                <text x="256" y="724">TH_SF</text>
                <text x="396" y="724">TH_SF)</text>
                <text x="112" y="740">=</text>
                <text x="172" y="740">c_ap_traffic</text>
                <text x="420" y="740">c_ap_traffic</text>
                <text x="116" y="756">"s</text>
                <text x="140" y="756">ap</text>
                <text x="188" y="756">traffic"</text>
                <text x="256" y="756">TH_SF</text>
                <text x="420" y="756">s_ap_traffic</text>
                <text x="112" y="772">=</text>
                <text x="172" y="772">s_ap_traffic</text>
                <text x="432" y="772">exporter_secret</text>
                <text x="124" y="788">"exp</text>
                <text x="176" y="788">master"</text>
                <text x="240" y="788">TH_SF</text>
                <text x="112" y="804">=</text>
                <text x="184" y="804">exporter_secret</text>
                <text x="392" y="804">Derive(T,</text>
                <text x="460" y="804">"rss",</text>
                <text x="516" y="804">TH_CF)</text>
                <text x="124" y="820">"res</text>
                <text x="176" y="820">master"</text>
                <text x="240" y="820">TH_CF</text>
                <text x="440" y="820">resumption_secret</text>
                <text x="112" y="836">=</text>
                <text x="192" y="836">resumption_secret</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
 RFC 9846 and RFC 9258            This document,
                                  the dec engine-based key schedule
 =====================            =================================

 HKDF-Extract(0, PSK)             E = Init()
                                  Absorb(E, "psk_", PSK)
         |                                |
         v                                v
+-----------------+              +=================+
|   Early Secret  |              |  E accumulator  |
+-----------------+              +=================+
         | Derive-Secret(., Lbl, TH)      | DeriveN(E, [cet, ees],
         +-> "c e traffic"  TH_CH         |   TH_CH)
         |   = c_e_traffic                +-> c_e_traffic
         +-> "e exp master"  TH_CH        +-> early_exporter_secret
         |   = early_exporter_secret      | binder_label =
         +-> "imp binder"  (no context)   |   "ebk", "ibk" or "rbk"
         |   = binder_key                 | DeriveN(E,
         |                                |   [binder_label, "drv"])
         |                                +-> binder_key
         | Derive-Secret(., "derived")    +-> early_residue
         v                                v
 HKDF-Extract(derived,            H = Init(early_residue)
   asymmetric shared secret)      Absorb(H, "shs_", shared_secret)
         |                                |
         v                                v
+-----------------+              +=================+
| Handshake Secret|              |  H accumulator  |
+-----------------+              +=================+
         | Derive-Secret(., Lbl, TH)      | DeriveN(H, [cht, sht],
         +-> "c hs traffic"  TH_SH        |   TH_SH)
         |   = c_hs_traffic               +-> c_hs_traffic
         +-> "s hs traffic"  TH_SH        +-> s_hs_traffic
         |   = s_hs_traffic               |
         | Derive-Secret(., "derived")    | Ratchet(H) emits residue
         v                                v
 HKDF-Extract(derived, 0)         T = Init(residue)
         |                                |
         v                                v
+-----------------+              +=================+
|   Main Secret   |              |  T accumulator  |
+-----------------+              +=================+
         | Derive-Secret(., Lbl, TH)      | DeriveN(T, [cat, sat, exs],
         +-> "c ap traffic"  TH_SF        |   TH_SF)
         |   = c_ap_traffic               +-> c_ap_traffic
         +-> "s ap traffic"  TH_SF        +-> s_ap_traffic
         |   = s_ap_traffic               +-> exporter_secret
         +-> "exp master"  TH_SF          |
         |   = exporter_secret            | Derive(T, "rss", TH_CF)
         +-> "res master"  TH_CF          +-> resumption_secret
         |   = resumption_secret          |
]]></artwork>
        </artset>
      </figure>
      <t>The imported-PSK binder branch uses the label from <xref section="5.2" sectionFormat="of" target="RFC9258"/>.</t>
      <t>Both schedules derive finished_key from binder_key or from a traffic
secret by the corresponding label, "finished" on the left and "fin" on
the right, feeding the same MAC step:  HMAC on the left, MAC on the
right.</t>
      <t>The Finished and binder MACs, record keys, exporters, resumption PSK,
key updates, and PSK import each replace their TLS 1.3 counterparts, and
<xref target="shapes"/> gives the per-shape rules.</t>
      <section anchor="invocation-count">
        <name>Invocation Count</name>
        <t>The handshake counted is one full 1-RTT handshake that offers and
selects a PSK, uses the asymmetric shared secret, and accepts 0-RTT
early data:  the case both <xref section="7.1" sectionFormat="of" target="RFC9846"/> and
<xref target="key-schedule"/> cover completely.  Derivations after the handshake, for
a NewSessionTicket, a KeyUpdate, or a TLS-Exporter request, are not
counted.  Counts are per endpoint.</t>
        <t>A dec engine invocation is one Derive, DeriveN, MAC, or Ratchet call,
each of which makes one DF call (<xref target="dec-interface"/>).  A TLS 1.3
invocation is one HKDF-Extract, HKDF-Expand-Label, or HMAC call.  Absorb
builds an input sequence rather than invoking the primitive and is not
separately counted, matching how <xref target="shapes"/> already accounts for dec
engine operations.  Transcript-hash computations are excluded from both
columns:  both schedules compute the same checkpoints over the same
messages.</t>
        <table anchor="invocation-count-table">
          <name>Invocation Count for One Full Handshake</name>
          <thead>
            <tr>
              <th align="left">Derived value</th>
              <th align="left">This document</th>
              <th align="left">TLS 1.3</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Early Secret analogue</td>
              <td align="left">0</td>
              <td align="left">1 (HKDF-Extract)</td>
            </tr>
            <tr>
              <td align="left">binder_key</td>
              <td align="left">1 (DeriveN)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">finished_key (binder)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">PSK binder verify_data</td>
              <td align="left">1 (MAC)</td>
              <td align="left">1 (HMAC)</td>
            </tr>
            <tr>
              <td align="left">client_early_traffic_secret</td>
              <td align="left">1 (DeriveN)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">early_exporter_secret</td>
              <td align="left">0 (shared)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">early traffic key + iv</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">"derived" salt (to Handshake Secret)</td>
              <td align="left">0 (shared)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">Handshake Secret (absorbed, not ratcheted)</td>
              <td align="left">0</td>
              <td align="left">1 (HKDF-Extract)</td>
            </tr>
            <tr>
              <td align="left">client_handshake_traffic_secret</td>
              <td align="left">1 (DeriveN)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">server_handshake_traffic_secret</td>
              <td align="left">0 (shared)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">client hs traffic key + iv</td>
              <td align="left">1 (DeriveN)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">server hs traffic key + iv</td>
              <td align="left">1 (DeriveN)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">finished_key (server Finished)</td>
              <td align="left">0 (shared)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">server Finished verify_data</td>
              <td align="left">1 (MAC)</td>
              <td align="left">1 (HMAC)</td>
            </tr>
            <tr>
              <td align="left">finished_key (client Finished)</td>
              <td align="left">0 (shared)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">client Finished verify_data</td>
              <td align="left">1 (MAC)</td>
              <td align="left">1 (HMAC)</td>
            </tr>
            <tr>
              <td align="left">"derived" salt (to Main Secret)</td>
              <td align="left">1 (Ratchet)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">Main Secret analogue</td>
              <td align="left">0</td>
              <td align="left">1 (HKDF-Extract)</td>
            </tr>
            <tr>
              <td align="left">client_application_traffic_secret_0</td>
              <td align="left">1 (DeriveN)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">server_application_traffic_secret_0</td>
              <td align="left">0 (shared)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">exporter_secret</td>
              <td align="left">0 (shared)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">resumption_secret</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">client ap traffic key + iv (gen 0)</td>
              <td align="left">1 (DeriveN)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">server ap traffic key + iv (gen 0)</td>
              <td align="left">1 (DeriveN)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">Total</td>
              <td align="left">15</td>
              <td align="left">30</td>
            </tr>
          </tbody>
        </table>
        <t>A value marked "0 (shared)" is an output of a DeriveN counted on another
row:  the "derived" salt with binder_key, early_exporter_secret with
client_early_traffic_secret, server_handshake_traffic_secret and
server_application_traffic_secret_0 with their client counterparts,
exporter_secret with client_application_traffic_secret_0, and each
finished_key with its sender's handshake traffic key + iv.</t>
      </section>
      <section anchor="permutation-count">
        <name>Permutation Count</name>
        <t><xref target="permutation-method"/> gives the per-operation counting rule.</t>
        <t>Over the handshake of <xref target="invocation-count"/>, counted by that rule and
excluding the transcript hash as that table does, with a 64-octet PSK, a
32-octet shared secret, and a 64-octet transcript hash:</t>
        <table anchor="permutation-count-table">
          <name>Permutation Calls for One Full Handshake</name>
          <thead>
            <tr>
              <th align="left">Schedule</th>
              <th align="left">Permutation calls</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Either profile of this document</td>
              <td align="left">23</td>
            </tr>
            <tr>
              <td align="left">HKDF-SHA3-256 over the same permutation</td>
              <td align="left">120</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="permutation-method">
      <name>Permutation-Counting Method</name>
      <t>This appendix is non-normative.</t>
      <t>For an input of n octets producing L octets, a sponge over the profile's
permutation applies floor(n / 136) + 1 permutations while absorbing,
since the padding rule always appends at least one octet, and ceil(L /
136) - 1 more while squeezing, since the first output block is read from
the state the absorption left.</t>
      <t>For DeriveN, L is the sum of all descriptor lengths.  The 192-octet
output tuple of the DeriveN that derives c_ap_traffic, s_ap_traffic, and
exporter_secret therefore needs one extra squeeze block.</t>
      <t>A DeriveN call absorbs its checkpoint once for all its slices.  The
siblings that shared a context in the single-output baseline are now
slices of that one call.  Summing the standalone cost floor(n / 136) + 1
+ ceil(L / 136) - 1 for each of the 15 calls gives 23 permutations.
Sharing absorption between calls does not change this total for the
stated workload.</t>
      <t>Each HKDF-Extract, and each HKDF-Expand-Label of at most 32 octets, is
one HMAC-SHA3-256, and one HMAC-SHA3-256 is four permutation calls:  two
for the inner hash of (K XOR ipad) || m and two for the outer hash of (K
XOR opad) || digest, each filling one 136-octet block and padding into a
second.</t>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>This appendix is non-normative.</t>
      <t>Both profiles need the same three capabilities of an XOF:  incremental
absorption, cloning of a state that has not produced output, and a
squeeze of a length known before the squeeze begins.  Each profile's
concrete parameters are in <xref target="turboshake-instantiation"/> and
<xref target="shake-instantiation"/>.</t>
      <t>Each handshake and application leaf absorbs its transcript checkpoint,
TH_SH, TH_SF, or TH_CF, as its context (<xref target="key-schedule"/>), the same
point at which the corresponding TLS 1.3 Derive-Secret call consumes
Messages.  A stack ported from TLS 1.3 therefore need not compute any
transcript checkpoint it does not already compute.</t>
      <t>A client that offers PSKs associated with different KDFs computes each
binder under its own PSK's KDF, and therefore maintains transcript-hash
state per KDF for the partial ClientHello transcript.  TranscriptHash is
itself defined by the KDF (<xref target="turboshake-instantiation"/>,
<xref target="shake-instantiation"/>), so the checkpoints of <xref target="transcript-hash"/>
differ per offered KDF.  A client offering more than one either buffers
the handshake messages until the KDF is known or carries checkpoint
state per offered KDF, discarding the state of those not selected once
the KDF is pinned, at the ServerHello or at a HelloRetryRequest.  This
is the one place where offering more than one KDF costs an
implementation more than a single schedule:  the schedule binds no
cipher suite (<xref target="key-schedule"/>), so it is shared across every suite
offered.  The suite-dependent lengths are described in
<xref target="record-keys-generic"/> and <xref target="dtls"/>.</t>
      <t>A binder finished_key uses standalone Derive under binder_key.  A
handshake finished_key is the "fin" output of the DeriveN over its
traffic secret that also derives the record keys.  Post-handshake
authentication uses standalone Derive under the current application
secret (<xref target="finished-and-binder-mac"/>).  Sharing the label "fin" does not
make these derivations interchangeable.  An implementation that feeds a
binder's MAC key from the Finished path's base secret produces a wrong
binder that no Finished-path test vector detects.</t>
      <t>A DeriveN implementation knows the whole descriptor list before it
squeezes.  It can distribute slices directly to their consumers or use a
temporary combined buffer.  It should erase temporary state and retain
only required outputs (<xref target="erasure-boundaries"/>).  Requesting one slice
does not change the DeriveN call.</t>
      <t>In garbage-collected runtimes, zeroization is inherently best effort:
the runtime may have copied or moved key material, and erasing every
copy is not achievable from the language.  The erasure rules of
<xref target="erasure-boundaries"/> are written to be met on such platforms by
ceasing use, dropping references, and zeroizing the buffers the
implementation controls, as implementations already do for TLS 1.3 key
material.</t>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>This appendix is non-normative.</t>
      <t>The vectors below are tentative.  They were produced by a reference
implementation and reproduced byte for byte by a second implementation
written from this document alone, in another language and sharing no
code with the first, but written by the same author.  They are therefore
not yet the independent evidence this appendix calls for, and they may
change.  Each profile's permutation is pinned against published vectors,
TurboSHAKE256 against those of <xref target="RFC9861"/> and SHAKE256 against those of
<xref target="FIPS202"/>.  What rests on a single reading of this document is the
schedule itself:  the framing, the field order, and the context tags.
That is the part most likely to move.</t>
      <t>The initial secrets and main-handshake checkpoints below are
TranscriptHash of short ASCII strings, so the inputs are reproducible
from this document and the same values serve as TranscriptHash vectors:</t>
      <artwork><![CDATA[
PSK           = TranscriptHash("psk")
shared_secret = TranscriptHash("asymmetric shared secret")
hybrid_1      = TranscriptHash("hybrid component 1")
hybrid_2      = TranscriptHash("hybrid component 2")
epsk          = TranscriptHash("epsk")
TH_CH0        = TranscriptHash("truncated ClientHello")
TH_CH         = TranscriptHash("ClientHello")
TH_SH         = TranscriptHash("ClientHello..ServerHello")
TH_PRE_SF     = TranscriptHash("ClientHello..before server Finished")
TH_SF         = TranscriptHash("ClientHello..server Finished")
TH_CF         = TranscriptHash("ClientHello..client Finished")
]]></artwork>
      <t>The PSK-only and hybrid fixtures use the existing PSK and transcript
checkpoints.  The PSK-only fixture omits Absorb(H, "shs_", ...) entirely
(<xref target="absent-empty"/>).  The hybrid fixture absorbs hybrid_1 and hybrid_2 in
that order, with a separate Absorb(H, "shs_", component) call for each
and no concatenation (<xref target="key-schedule"/>).</t>
      <t>The server Finished uses TH_PRE_SF, the checkpoint immediately before
that message.  TH_SF includes the server Finished and remains the
checkpoint for application traffic and exporter secrets.  A client
Finished would use TH_SF if no handshake messages, including client
authentication messages, intervene.  These checkpoints are synthetic
inputs, not hashes of encoded handshake messages.</t>
      <t>The main fixture takes its early residue from the DeriveN that derives
binder_key and early_residue with "rbk".  The imported-PSK variant uses
ipsk with "ibk" instead of "rbk".  The no-PSK variant explicitly absorbs
an empty "psk_" value and uses the standalone early ratchet.  Both
variants use the stated shared_secret and TH_SH.  The terminal DeriveN
calls for application record keys derive generation-1 record keys and
generation-2 successor secrets in both directions.</t>
      <t>ClientHelloInner.random is the 32 octets 0x00 through 0x1f, and the ECH
confirmations take TranscriptHash("ech_conf_messages") and
TranscriptHash("hrr_ech_conf_messages") as their transcript hashes.
Record keys use Nk = 16 and Nn = 12.  The exporters use label "test
label" and context "test context" with a 32-octet output.  The two
resumption values use ticket_nonce "nonce" and an empty ticket_nonce,
which is omitted rather than framed (<xref target="expand-op"/>).  The
ImportedIdentity has external_identity "external psk identity", an empty
context, and target_protocol 0x0304.  The imported-PSK binder uses this
ipsk in a fresh early trunk and TH_CH0 as its transcript hash
(<xref target="finished-and-binder-mac"/>).  The non-imported external-PSK binder
uses the same PSK input and TH_CH0 as the resumption binder.  The DTLS
1.3 values run the schedule over the same inputs with schedule_label
"dtls13" (<xref target="dtls"/>), with key_block and sn_key derived from the DTLS 1.3
c_ap_traffic, the client's application traffic secret, and a second
sn_key from the DTLS 1.3 c_hs_traffic, the client's handshake traffic
secret.</t>
      <t>The Exported Authenticator values are for a server authenticator with no
authenticator request, keyed by exporter_secret
(<xref target="exported-authenticators"/>).  Certificate and CertificateVerify are
encoded TLS 1.3 handshake messages, including their type and length
fields, as in Sections 4.5.1 and 4.5.2 of <xref target="RFC9846"/>.</t>
      <t>The Certificate contains one CertificateEntry, no extensions, and the
one-octet certificate_request_context 0xa5, fixed for this test.  Its
cert_data is the following 204-octet DER-encoded X.509v3 certificate.
This self-signed Ed25519 test certificate has serial number 1, issuer
and subject CN=test, validity from 2026-01-01 00:00:00 UTC through
2036-01-01 00:00:00 UTC, and no extensions.  Its key is derived from the
32-octet Ed25519 seed 0x00 through 0x1f.</t>
      <artwork><![CDATA[
EA test certificate (DER):
  3081c9307da003020102020101300506032b6570300f310d300b06035504030c
  0474657374301e170d3236303130313030303030305a170d3336303130313030
  303030305a300f310d300b06035504030c0474657374302a300506032b657003
  210003a107bff3ce10be1d70dd18e74bc09967e4d6309ba50d5f1ddc86641255
  31b8300506032b657003410023c815b130eac1285714a01f2b99ffb720c5b234
  06ff492bbf9a4852f6e6c99f000959f0a2886763e10679390eee02d4e48d6f38
  2729357fc52bde69e6430f07
]]></artwork>
      <t>The Certificate handshake header is 0x0b0000d6 (type 11, body length
214).  The body is 0x01a5 (context length and value), 0x0000d1
(certificate_list length 209), 0x0000cc (cert_data length 204), the DER
certificate above, and 0x0000 (empty extensions).</t>
      <t>The CertificateVerify handshake header is 0x0f000044 (type 15, body
length 68).  The body is 0x0807 (ed25519), 0x0040 (signature length 64),
and 64 zero octets.  The signature is a fixed test value, not a real
signature over the content.  These vectors test transcript hashing and
the Finished MAC, without signature verification.</t>
      <t>The empty authenticator answers an authenticator request, for which the
ASCII string "CertificateRequest" stands in.  Its Certificate is the
serialized message 0x0b00000400000000, which has an empty
certificate_request_context and no CertificateEntries.</t>
      <t>The ImportedIdentity target_kdf carries a placeholder TLS KDF
Identifier, 0x0100 for TLS13_TURBOSHAKE256 and 0x0101 for
TLS13_SHAKE256.  These are a convention of this appendix and not a
request:  <xref target="iana-considerations"/> asks for two registrations without
naming values, and the registry assigns that range under Specification
Required, so other values may be assigned.  If they are, the
ImportedIdentity, ipsk, and all imported-PSK variant vectors must be
regenerated, including the binder and its handshake descendants.  Every
other value here is independent of the assignment, because no other
derivation absorbs a code point.</t>
      <t>The key_block and app_traffic_secret_1 values are derived from
c_ap_traffic.</t>
      <section anchor="tls13shake256-vectors">
        <name>TLS13_SHAKE256 Vectors</name>
        <artwork><![CDATA[
# TranscriptHash of the stated inputs (also TranscriptHash vectors)
TranscriptHash("psk"):
  66eccc8045416ec22d1379ac2298aa749cb0bb86db4fca5578365a7c75bd244a
  3044aa9ba8ae404b2da7860a2e85af8998ec43aab11c2a117256e29d966eddd7
TranscriptHash("asymmetric ..."):
  72ef6a9ea47b1d38179210bda501fc29433b568b7247faec3c5de03c7ff500aa
  2e5276beb174cbec19e35148f9dcc4953e542c71aa0090effebb46fca99035ec
TranscriptHash("epsk"):
  861eebba4babfad7f02ca29cb787b1ef048e23540fc395941306e7958d406f20
  36be826abc7c912faaa8ea571dbf9c2f8128f739d803c5b22dd2cd1d6a9f6f49
TH_CH0:
  0e0254dce0001d20e9ccf45f038e0e4369bd5f0ca4cfbb01a3a5dc2cdb1c2761
  f999edb7213590745ebbf209134a2746795f9f0fd7bd5ea993797af6c9de97de
TH_CH:
  92dc319d6999c7606c589f50f53834bca7dc871f67bbc5bdc0abe70f4f708c7a
  7b93ae22c5544bfc18a7bdcfe54e1ac18c1f64335c0a4ec078aa9255cdc08500
TH_SH:
  df71253c5be0dacc544f06b8124ed65474bf4be5be8d63bab10018a5dfbbed6c
  bb0371f2a1649157053b23c7d25eadd1bc400fc05ba8510549d2930a374ca54a
TH_PRE_SF:
  5d628bb8f07831940433f523228ee4f0f52708a93a1a0230d04ed88399d2d84f
  692ff94d09c52427fc8583fc1ec5e399a72ca01914d87a72f9e652906350f356
TH_SF:
  63fc9f9ca068104fa93d078e5fdaff21307d9f2e3b48751dd3239d362c8c467a
  41a6d37c11d58da2a22c263f52609f54a57c6470e6ccd02e6bce36cd4de2adaf
TH_CF:
  1a9c3bfbbf4d6e6f00efe79b6096f91f576eedbd7237275e204120bccf608d41
  ce09d75493cbee316335d0783ce9d67b5a2692f87cddd6c8c0264a51a1b55c3a

# Early stage
Init() sequence:
  0006746c73313320
Absorb(E,"psk_",PSK) contributed:
  000470736b5f004066eccc8045416ec22d1379ac2298aa749cb0bb86db4fca55
  78365a7c75bd244a3044aa9ba8ae404b2da7860a2e85af8998ec43aab11c2a11
  7256e29d966eddd7
c_e_traffic:
  5c9d37ef8cba21ee6bc178afe9e42167a381afc12e60704498768227ed9ad215
  087ca62bc07159d1538aac21f4bb7dd3100c09db449ae3d76a5cd02d91c4819a
early_exporter_secret:
  e1e44903b46386b72f98515a5fbcfbb2600f99214b27caa917c0239879b00448
  664c40c2311d1239029ca258039f87bc90b5c7ed3d274d6a9506c4417f1ec3d0
binder_key (rbk):
  a777c9a28950780b37cdebdcd14a0f068100994309b1ac874c29f90be0009147
  9537ce201bb6a650f58c9d555501d7b74b34fd50cde86ca8ad9874c803422331
Absorb(E,"psk_","") contributed:
  000470736b5f0000

# PSK binder
finished_key (binder):
  3a7ad3d858d65d920ab4dfbc8531dd621cf7325a3a58976a4d7c9736ee4605f3
  4769efdbf5212dc018776af1e0f694ac3e5c7db537cb4c486e41cc46ba303227
binder verify_data:
  7608c95dc6a9ab9ee78287fd3102f1bec8e5c069a4a2566089410e1442c69efa
  550aef997384b0eb93d3342d21a6ed51f4e6ce7261702879f5ae4e7fa1463279

# External PSK binder
binder_key (ebk):
  d86efa2938c7867973463e6885c5c5db55b9162ff5b3cf1080c92392387916cb
  b29b4bb5a1ba6821c71a72908220abaa82ce910e750411ac4dc74f6250a38d83
finished_key (external binder):
  5d4d86dbcf32afaa81c518cc453565303379a4c2b1719477a1bbbec67673fede
  fa7c609ad40b0eac4c87f7a5b476eef33fd31bc5bc87477df67336205e15773c
external binder verify_data:
  d62b772fd7784240711c49b856e82a2b442fdfe4f4865c416b0b32f72dfca84f
  7832f9a214af2f34bc21948dfdc44192edcbf4571ec7f82093c80ab027c84236

# Handshake stage
residue E->H:
  6b32f0c73d44d7d492b910a671fe6d8691164b2601892465af9c723805fb32ea
  42326f24d3328fb711e1d44b0ea76184ebbc6ee187b1ca37a3f2cf250c437989
c_hs_traffic:
  1b84f2043d2862e73daa0b092b426108946a37a320b94407262a8dc49fba4d51
  d8553fe70d1a8d11c04fdaf7f6563312c7518a9aeabd5803a516d44ed4e0b439
s_hs_traffic:
  79136406c4c81ff9f326012423654339d1e329919eee0b2555d6d8d8e2e6fc59
  c72e0e2705f5401c567b9b9d1e1442753323672b124782cb8c747f355594f603

# Finished
finished_key (server):
  3701a80e1536d52edd7e2f1b6512f450f1065ffbe61747e7f14988b5f7b369e5
  8310f2e559028e6f7c13cf4272a82c8ef8a33d25b6ce7ff32062810e9e3c46ab
server verify_data:
  f99e0156d29ae9c59b0e7553014f7f17eba02a685fbe0b90acc42f7434a24f9e
  ce877dfe474b4eaf0afb96780316c94ab69bddb35c51c98b40cb95e73f17e40f
finished_key (client):
  c1afbaa28a325027ca1e60192e194b818b68ffb51ba5b29871885a1cb84b1407
  3a502bfb9735c2a1282fc7a2094c1a2453fb4355c181293d7a89f3ff3c4e9765
client verify_data:
  76d9a4b58ace12e571e805367ee2df47bbac03d5dc17c9adcf5a3de9599e3b42
  0524ff30edacd23a98c81758026ccdb16cc737844e8a5d89bcc5e08a97fd2965
key_block (client handshake):
  7af7a8d0692a9cc398bf4ebbbd4059cdd985b8aef11bddafcd3a8d6f
key_block (server handshake):
  5cfaa0ba711a870ef23193ce8e735f046817c2aabf24673475d70be5

# Application stage
residue H->T:
  df1644c0baa429a0851d3b3a1002e2d0fdf61eac4fa7da79bcc8614bdad347e9
  82528f51c45ef8130e3753f90bfda0f88ee723924dd4d91f81c4126fa771b576
c_ap_traffic:
  01aaa618c31d0164f8785b473e27ecd85550ffff63550b3f9203d1d908c6bb93
  7a8709df8d8d69f33dcf68c60fab229f88e355de969eecb0b20a3dff846385c6
s_ap_traffic:
  9a195274550c282e81761569c26a84e3f4db62c91fb0ab0a34ddd40a1acc6809
  e94c63b9c39e776fa3cddb2be83bcab178ee35ac98f1f3eddcc482bdcafa9f68
exporter_secret:
  c1135ab09706a0dade74ef934327b3fb069885bfef68e8555db2b4d0278f6bab
  976806184b0bfb65780627d1940bf55debfc197aa0ffd49776db68ec12db03e2
resumption_secret:
  0a337ebc797c9fb54fc48da7edd32035ed0683a844d525b22c6bf52f955361db
  ed1452e598ef156c69969d661928b2a57c81ade66ff81e4647f1fb041c43babd

# Record keys (Nk=16, Nn=12 of TLS_AES_128_GCM)
key_block:
  af284e77b262205cf68cb562d7e613964d739145e704423d266f844b
write_key = key_block[0..16]:
  af284e77b262205cf68cb562d7e61396
write_iv  = key_block[16..28]:
  4d739145e704423d266f844b
key_block (server application):
  a3bdb1e1f6255f97e3f4abca9e3dd862843a47fd0000b8939795f379
key_block (early):
  83df62fddb19c2da815fb6389383981864b01b336eb813f203475eb2

# Key update
app_traffic_secret_1:
  30cd327927225c9209b9ceec0867533c60fb939d8846a730478649e006145f8a
  151d0f56eed36adfb91fde2b05cf9ea6131e19749c012f8edb47ce0b578be416
server_app_traffic_secret_1:
  5dd3472248e3fd59cd8dda98408298d0900a36d0ea7c753805a242fb29d0e20e
  defc10a052c08618bfd40778c592d02312e6e8859b4ddd24b8c442fea7c0b0f2
key_block (client generation 1):
  983db28b5aa22a1074ef711a834110bd3e845e7cb85df6de45093d7b
key_block (server generation 1):
  4a38b47dff8df581e123d703c6152869dd2b560ebf25c3cc04f06480
app_traffic_secret_2 (lookahead):
  e61255bacf37d58ef6bd16ca20b1b4285e87ebb9db05caf6fe18505ffd1bf0df
  39784fdb86061ec7c417148102f1ffda969637f145ff2b18ff6e20c2d95499b9
server_app_traffic_secret_2 (lookahead):
  267074740cebea789b9626bbcb88e4724b3310097c17989776991cfb9f10f3b6
  f920e2eb581cb593db73e6ad5adbcd2901fd5a09ef9678ccf44781ae0164f571

# Resumption
resumption_psk (nonce):
  a8314d04b7ea05199c1b3e10be9745b4ef0c898f34e6e48f9e2f73b0a5102bc1
  cbabec5f56e5ce5cebc6589e43078ca54f0b866d5707e7fc58a9e8c30ece4879
resumption_psk (empty nonce):
  383f67f84fe056c6aa98a36d5b7a53b98aca3072dade8fc0a9abcf94e8f8327f
  1b6c1c71d3a8c84078575aa141285d350dd8f7e24b4c664ced929c642a42e223

# Exporters
exporter_label_secret:
  d4b6b6351c8c08da5843bfb0e39c4ad2b2686ff71d8baa1f05c0e9d3fa06825c
  bab3553a3e9d0dd7a71d3c712678b6f6f06d57e37180217d97e26bc7943072a5
TLS-Exporter (32 octets):
  a9c3287164d223f7b88d8ddd805a7159f082146cbe44ed5987bd5195f6d34293
early_exporter_label_secret:
  cc8b50a689ea0e42f9e580877c58701c9ba03b98ad5e783c8bf4b3d84ecaf175
  84eb76cd06f61cfc66ea7f669ee60b337da2c6b1cb4e555851887f501c00b9d2
early exporter (32 octets):
  213a0a9a2b99554845a69ef666fd1a9d2fc640819360af5a3958d82f1df79d00

# PSK import
ImportedIdentity:
  001565787465726e616c2070736b206964656e74697479000003040101
ipsk (ipk):
  1f45ffacb3bc31fed8850c58d208fbcfdd629f3ba590470356ab1b66424d6a1f
  ef9b93de18f8370e2aee51f844a6b85e8098dd8e3901a608d507b621977c8bce

# ECH acceptance confirmations
accept_confirmation:
  46be340e18673ab0
hrr_accept_confirmation:
  1ee441e50a2762ff

# DTLS 1.3 (schedule_label "dtls13")
Init() sequence (DTLS):
  000664746c733133
c_hs_traffic (DTLS):
  67ec6f7b6ead9facec3cc6f725ffd842cc449fbba84e752feb4fe5242a01591f
  aa802334a55812b79b3bdacb75a3aa8fe0fb5fbb58711fede6016e7381035c5c
c_ap_traffic (DTLS):
  33923ae8813f7fabb036a622d488aa4b6dffd26afbef5206464e1c577a166dd1
  9056e51421d31623d949538b43f080fc26db58a4ef309596008337570bf151dc
key_block (DTLS):
  bfeab2ebc4c7d25640ee30c2f3533a2caa071d9bfcccf1d862b5773e
sn_key (DTLS, Nk=16):
  67e097f7f15bf54d258ab56858cc95c2
sn_key (DTLS handshake, Nk=16):
  1bc25bc88914df62c8c6c408bb5153fd

# Imported PSK and no-PSK variants
binder_key (ibk):
  71e13244e744b4e6fea0ee0b7b323902168003e196d035ce6c9299f9dc71f76d
  2e5706669142bed4700ff6821aa15640953134a748330afc47bc8bf9705c0bd7
finished_key (imported binder):
  a0796566140c251127544577a86c5c3916cfe8c9c52fdf491fded1def4aff1ba
  a5e17be48aa15c9a38a195d32716ed46c0ce3589384b172efc8c93639c70ce8d
imported binder verify_data:
  dcf45c9beab3109b508175a3f3283cbdc8db07ca97281ec229fe67f5548ee420
  3fda35f2351d07f1549df090310dad3f695458ed8293ab01d89254ad4cfab79d
residue E->H (imported):
  36312564653b7069d044bd369e57fcbbb43d8365948e2c84d6d43ffbca1a9534
  da2e31c2edd3469ee75bb2a4ffa455002b40852591ae525aa27d5cde1599e5d6
c_hs_traffic (imported):
  606000650e26a0677b2ebf236141fe472dac8ce068a299520609e2b9e4830220
  e2b385f3346e7db2805f67fef8d11597397865c7d9eb3f80e3f3eed102c9ea62
s_hs_traffic (imported):
  ab690d18a3f3fda4996a7a809f0e2a74e67cc38aa06bc8d44d42fa890d4ecf98
  7389b356ebd9d606627c30084473df5fb48ee6ab1896e0e5c31ec0c5572281d9
residue E->H (no PSK):
  081006a681fb6f81f4d6a66119c4a35da517947f4f891ce5a1b6860bc2b25302
  a36bf712d7d7c8248545031317c357a641808e167a564f952e575c9a66182825
c_hs_traffic (no PSK):
  abfee325aeeb9985442c8f07518f218fb57ac2af41bdc0df02b8aeb0dec4d291
  aee4811722316b82eb6913264c757a99c6ac575920c8638ce21ff6b1dd718dc8
s_hs_traffic (no PSK):
  96fbeada518e1cd9dadf1f0b6fdea84dd4df2a99b6c8167952e84815be10aa5d
  570081f4c4adadf3ba7e014f997f58d2626c5a45afaf760735d7d10b37221a64

# Exported Authenticator (server)
Handshake Context:
  80be9be97b021ccc0a00c5366accb32361ea17e48cecf5aaa5a82ba73d82cec7
  2702d2172ea935e9304f3da4895cbb878682e37ae6c2ce2928a42c4f9e60e929
Finished MAC Key:
  fb90d121b4d2a177cc1053627bbec1b3c9d3ebe0874875c61c0f253ae48fde72
  10ea516288b471ed1dc7007dd8171b14c65ecb74c2abccd76c0d449c8c9fd091
TranscriptHash(HC || Certificate):
  6182ee1d992d1704b2033739897c45e746811e1520648201673fc41029c29afa
  43fd1b15f8b920f12bfdb752be15a472464f4abb7d2a54ab6b2d294f310eed21
Finished:
  bd4141d5f17bc78eae42c0f553f03f82573b2b2888a10671ec37fecd694b0d19
  ff28730053eb3f81c0494c5b762b4e1d11a0cdbaa7283e138f02c3f2f282f4ec
Finished (empty authenticator):
  8231776dd1d3767cdaa519e76dbc05a02edd5195ab6864d65bd7d04c0bfd03b9
  389a8d057bf625a987fdf98496e45546adde59f950494964521ee5604e005416

# PSK-only
c_hs_traffic (PSK-only):
  8002d2845fb5f1b98da952a729e2d1a455802417e6b8b49385c418cd148fb127
  fd4dd559b94e308586b0090bb74c2b9163e36f740a1cf53383c6949c91724950
s_hs_traffic (PSK-only):
  577e01db7d08e1d8356df00beb13f51795864eb02e213c9a58acab3a3bb65923
  59df8a8cd0b3cff1e8c140943f4106db60547853d79791a57a348f3f088e4e56
c_ap_traffic (PSK-only):
  35af7a37f2f35c50428c35486dd8776c1fcb0cb834f77ce8e690b5250754380f
  aa40ac0e491b2741ffa2b4b7c2fd132a0a2ea56b1b48bda90b9eb4aa2ed813cc

# hybrid
c_hs_traffic (hybrid):
  4e725e4687624689defb14a5786f2fc4e76309c28adaa7a5fc266cb1064ab53d
  207c7610d43912147b58e619427870be0c5610f42bdd6b1416fa291a330f76af
s_hs_traffic (hybrid):
  ecd094adf9c38c21fca2ede44fd1abf9f0a806dcf556373d54a58ace6cde91c8
  4ac56e31fa9a2fd1ab1c9f9195935a58134d127d60a0127222f6a439a865b6e7
c_ap_traffic (hybrid):
  9eb5243783dfd08e82d91a5aca6c843a8c6467d852d269d668cbf9fc774438fd
  08560544ba42f5d8935fb0cacb450a189d62f556a0cf25c7752082c56a745171
]]></artwork>
      </section>
      <section anchor="tls13turboshake256-vectors">
        <name>TLS13_TURBOSHAKE256 Vectors</name>
        <artwork><![CDATA[
# TranscriptHash of the stated inputs (also TranscriptHash vectors)
TranscriptHash("psk"):
  68ced33b52672668e960da11aa8a214f786ec8bba642feb48120b4c413de5992
  50e219a151e0a33412fd20d408ff40e62484dbfebb9d513916d0ead5c3d6defe
TranscriptHash("asymmetric ..."):
  8903e4a30203a04f848773bd22e64268a9370acee1c87c935a552b8507dc47cd
  95f15119ffeb5c3bc62a6f00a85d6e931b3c7c9bcb682bfd5c4b6500b4b6d21a
TranscriptHash("epsk"):
  9333fa09a9fb23511218694c6b44a83c3feaa1d7a644b3f745b4a198f6dadbd0
  20b71a4286dbee2062369fc2580435ed1ec28c9a99a6e3398a469b50fb2f2bc1
TH_CH0:
  8ce8a28c96e1601c1aa8fcc4dcbe37ae1da39584a3d99b361923816b27acab85
  aafa2fb99e9eec536e6d1d7a8326cf64e4fcff54094be16fae7f1f1e4862727d
TH_CH:
  4d04ddcadef309d940351efa0f8850bdb46bd500b81e38080a9ac7a15db5418a
  b552c899797daa2eb2ee3fc9c841bb5186243053b5240a6887bc1d505ac43ff7
TH_SH:
  f7dd7e7ae81ce9c3e4a2b5b06ee80b7eb1134042cf26403135a0f79f478b5c25
  673e7d9bc81fc5fa8eb8ebb62e55d65decd3ca80c3162e50b418951d15076f36
TH_PRE_SF:
  53c23a8f1bcd7cf6b0c9f98547f28a5b78a46993ed759c2d0c7f2ecd074a8d50
  00f34e02ca2df1dd1457c19280aa7fa805bd98080d6f06a592ef82835ed94acc
TH_SF:
  a3e0515a234d20f5a35d4afe1f034327c45b0ac71275c2cddf8379fb9383d89a
  82da608a7cd51a0c1ae5104772e80f814403dbb5ce6d365b958d00533af1a494
TH_CF:
  91779f45864417e2b1bc9799ca052341ae8e8879bae468c89b30e4de83d79c89
  a486e8665aa763bc86b0802bd58b7868e30773fcde2aa5eff6cf17533e418515

# Early stage
Init() sequence:
  0006746c73313320
Absorb(E,"psk_",PSK) contributed:
  000470736b5f004068ced33b52672668e960da11aa8a214f786ec8bba642feb4
  8120b4c413de599250e219a151e0a33412fd20d408ff40e62484dbfebb9d5139
  16d0ead5c3d6defe
c_e_traffic:
  70c48d86d88a748963e883eef9adc874c4054fa7f8c655adfd29983b4830b87f
  3faafe26699d411fadea484c4816d8493b6a1fbe48353669b7daa8039f16d1a2
early_exporter_secret:
  4021ac691468fed70d7210e6bf36d4ddea7366025aa62d049ef3c1f226fa8240
  7829607b6e21873e7791a132bba00ffac31707cbaa35e011fbcb83fe9e30e862
binder_key (rbk):
  b70a69d65755437a44a2fd7a00f175bf064616ff65e1b4bae161a564428d96b3
  8325f01c23a0bc21ac43e10351c90aea190f042de11fc059ede0ae16385a6c1d
Absorb(E,"psk_","") contributed:
  000470736b5f0000

# PSK binder
finished_key (binder):
  b75612f3ff71f1e1a6246d87c72cb55ce263d343170a67a5ebd252ae93c66687
  0d5044cf5377f4b685207cf8e87d6bd36cb4ed4672013200601873f4e8a56809
binder verify_data:
  e8461c019e85bbcd3fc6da8a534dc2bd1ff904fc8f74604ed899c80c8fc998e0
  4011c5d4d87c8b41754b20b8b085366adedc56eb8486ccfdee1f326fcb3de450

# External PSK binder
binder_key (ebk):
  43bc3e3fbce124364f99b5e78ba81f29a3d61575b776cc99a33cbac7adfdc745
  d201aaa567856dd4da89d7f260899c5dfafe1ec3e1e0bd5c066b94e2b66940f4
finished_key (external binder):
  fd2e6599c6c60a42f2e9a2d72e59aa21bae1a9cd7b657d5eaf4dae81f73c6e10
  3d5ba7be11152ce8635f8e8d79a430472d2ee8e89ed96a7264da0d3ffbc0d668
external binder verify_data:
  6285bd415678e51f90e868a489d40142b0baa93a8dd63a566e5849882b26ba5a
  4ef3fb8062c16e883c758d062757ea353f75b2c465b36e4f607a83850dcf5d10

# Handshake stage
residue E->H:
  9dcb74748e2d2add94f628334609ede4b72456f307c467fc95982b3ae40e0c75
  98791aebbbfc201bcecec42aa3104f3b056a4232398762f2573e6c426c55b4ac
c_hs_traffic:
  a3cd51eca90acd358ce5c89b141d7a3cf223b3a7c1c22a4c01447cf7e54a8303
  d4b7449b32a8cd4dbbc5ea810276cb9b37ec5bdb770d53ab3b5914acebefffbb
s_hs_traffic:
  6e6d3aa60a3a60f76629454ce0686e598464cd18546967be63deb596ff7b05e1
  066810b3974005dec4706059343a81ffb857b96dbf607b15cf040bbe151eef6a

# Finished
finished_key (server):
  67c359746c92ffbc9c50dbc378d327043ccbb3533e907240363ea1b1da194869
  1a7cdc349aefbd979b27cd5e480ee9ee8ee4b212c01b3d498e0e85c555c5ed8c
server verify_data:
  c4a8aefb9923b0265236ea84d234a32d74a9b244792318813348013674a17b5c
  6055ebaf0282b256515d3e6c9cba7d390450ca0a5e7c953beec52f375062a118
finished_key (client):
  de3edba0f9072a335b728f2d3ad31181a6af1897ca312b96cb86de3b526c6fd8
  cdc26f763dac1948e4cc4a6549e5f612fa9d80f34e39cedc6466952ebf80537a
client verify_data:
  c8639abe8ea57b02757dec5f9898405c77657e8bd60c51348390bd936dcd92fe
  b84fe668b960dacc6bee0f54d4f4740422adb58747fc8445d5c1972926b3cb63
key_block (client handshake):
  440142237f0440352077f641b2290685dd6f7871280773778196f6c0
key_block (server handshake):
  cd0eb74edcda968b6306f98eb189b43be1cab80f2972ead6ce5f5f15

# Application stage
residue H->T:
  85e84f6637e7596a53ed5a568e7b80d7aee0cf492b6956ba6959f40c9c3233fe
  60a07eb7b086ce9e434f7de42904970064e9bb416566a8aec69a061e73c6c911
c_ap_traffic:
  55c60b08ed2b8794ff3d45275f44bbc88a544f87b42c0a0839858425e237c5ec
  09aa6033ffc31cc0f1672f2a67d2af8c3b8cb7996db1b13396a25f9ffe37ef5d
s_ap_traffic:
  a0451a0f19cca5e1c13d56f95f9ddaa79d441725480066a438d22b98c0be09f7
  7ef2639c50411db6d2b28f82672cdb08504ce5414f69f429449bae945b99e6d2
exporter_secret:
  1e35b04f25411608bdf946e2649c2053d47fb17a13106eca78c9530d46eb44af
  76d8118635dfb37de887fcbf60e31701651c50c5ce60a3147237a8f416476257
resumption_secret:
  53a62b364bc1aab4eaf6cfcd1a99582f6129fcd6580869d9305d7da8618992ac
  0edf033b7673251faa2fc213e537a2bbce7a93d2ff640a755567706723b905a6

# Record keys (Nk=16, Nn=12 of TLS_AES_128_GCM)
key_block:
  9158e02be6c399686cd31c41f54237999b301e140f9f71ef33984c4b
write_key = key_block[0..16]:
  9158e02be6c399686cd31c41f5423799
write_iv  = key_block[16..28]:
  9b301e140f9f71ef33984c4b
key_block (server application):
  936aeccc9b02ba973890bfeeec76362eeb62c1a2390974b78aa45d65
key_block (early):
  cd68a026565195a8e4d1467e9de8c0c80328519726a894eee68be9c4

# Key update
app_traffic_secret_1:
  a7cd0868300a81ed1fd5019e528141076919ce80a83a60bb5bcf542f81bcd556
  792b5e2703973c062bcf54ccd741f362ad71c8824787c69a59e0ae961c90e35e
server_app_traffic_secret_1:
  c73d637f58c533ef64c743893cb74350ce8bf75d5a9d1ed2fa423bc6c4ce1325
  fd6de6abe648b67a677a060534acf83fed321f63c8f9d2e2054755f0a4d9c5fb
key_block (client generation 1):
  8a9c5ef1a703528feff038ff5545595cb58cb0e639cc117913d42098
key_block (server generation 1):
  34c2b340cecb28153bfe5f103a7ac8fef96a1ce27391d8abc6459bea
app_traffic_secret_2 (lookahead):
  7e60c0b6b70a64a9e48ea36525e4e9c9a9037b68001153830506839f31360399
  b70d9d9c200108fda9e46c5e869aeebe697c295bf69df55cdba27ae82e6bdf58
server_app_traffic_secret_2 (lookahead):
  c6f3313c9fc672342ba9064afcb9d8d5ce8566a18e50c40a4cd23cc31ff11d45
  80fbc78e712e8b13ceee303e37ad269fd6d7285e0ae6aa6fbf7b77b36733318a

# Resumption
resumption_psk (nonce):
  6bfbcb1afaf52218f8c2c31dd1432db7178706aec94ecf1b4c07387458540ad3
  bfddb1f4e42ef9c175602b2b457bae1917e80a570adb5a3424209faec2076925
resumption_psk (empty nonce):
  c62fa4bffe9ed5312c5b045c8a8207908a2ca2616e5165c45012c0777adf0e43
  a0ddcee0f85cbb1d6679d7b067287a1551e9b83e5e7491d612172c1338cb0b01

# Exporters
exporter_label_secret:
  a6aefd256a6bc0fd6adbff6c882f20aa5a84e2be73e50ff3f340149ee5a89bb5
  f9c104a1319076860dcb193d51098d670f606e92c61a299b1b81089cba3105ef
TLS-Exporter (32 octets):
  ed7f44dde38ef5fe6441560aed075c78dfe079a2a37a2af988f35a2ef2f0da2d
early_exporter_label_secret:
  1c3807bfd182fbc9d63f2e9d272c1c06b5ed593c4d5cc43befdad754e6d7c528
  814e81c1a41be9a0b1c1d527ed29681792c7b4cb750430b2b0592ee76f1abddc
early exporter (32 octets):
  844ea5d8b5ff06f5ec6c0b916019b73c2cc25aa50e78c31cb7764519510f6490

# PSK import
ImportedIdentity:
  001565787465726e616c2070736b206964656e74697479000003040100
ipsk (ipk):
  b12977fe51dd07a1d5787324344d1fdbf03fabd8826b57e8362f9860e84e640c
  1ec7a6632c56efde9ea0bb3edb21ff295b2c36c5b3bca39ef8bba2f79e835f9b

# ECH acceptance confirmations
accept_confirmation:
  7deaf576fa50bd88
hrr_accept_confirmation:
  1e89c54e87b6e455

# DTLS 1.3 (schedule_label "dtls13")
Init() sequence (DTLS):
  000664746c733133
c_hs_traffic (DTLS):
  bd6426ef1c4e54ec625fc59969f2ac06db9ea7c36f091de25d5012e0dd38d45b
  373e9fd919481b8ffbd333d8c77ef4a0bf0a40981b9dc95366220dfb93f1645e
c_ap_traffic (DTLS):
  4fb948e90a343f759a1e893a534155633c8666b130d96b237e8cd80efcc0c816
  6a3d379907bfe42c071ec4c8e49fb6ba86179dcc40dbc63f3eca73dfab8fb31d
key_block (DTLS):
  75fa564e876c51e0f3aec77159214f0faec0c037f59fe6037ce7c0bb
sn_key (DTLS, Nk=16):
  e4135eeb2cdd0b73970c1a79849edaa4
sn_key (DTLS handshake, Nk=16):
  bb3b0c471ff1ddea6a1ca69a23de079d

# Imported PSK and no-PSK variants
binder_key (ibk):
  92570469969ad61ec22b2a62aae01df6eabb07f0e556d43bd4812e34f786bc41
  59b588ef4691884fe8d63ede4fb9c8c952a4f794e1303d4fea4249c700596061
finished_key (imported binder):
  6c7db3750c45bbe6506affed036fea7eddafdc518e2b70231731e5d0c9032715
  f5bfe055741fe52ce09bed53b289bce05702c7bc0b9a2a3a442c28573bd0131d
imported binder verify_data:
  64e3b275a7b6f6dba8b483e2de61cdec1709be224f37c8a25c4c7662e25f03d1
  f8c0244b2743964f8146f7b4a22eab02dc823e857b09d6a2874f5ae03f3d52da
residue E->H (imported):
  aa3abc64254b1650e596151908ea6b1e7ea2fc518dd4e8eb530bf6782322aa99
  bb24098beadc6045831cf3d066db829c054759df974cc2f7d6f505facd3b35bb
c_hs_traffic (imported):
  3c98591564cb98403fa7e38f694c11839dc18de9af9eb4cc32f175c6bebe49b3
  bedd96c651df4d674d22b24bfb2d3f15fad1749ab91db8c4241cccfb85ec3d4a
s_hs_traffic (imported):
  495bce3f95a7dbfa7e646b6db86addaf584922b04a8c6a20c41b2e48cdab6d38
  d43988b37c1ac5b987ba4d1132519f0f848ad9c1d4ffde91f85f9cb98f491d48
residue E->H (no PSK):
  62500b3c6c707bd445ba0adc12449e0086e9d7799fc764a13cfd3dd3db7df80c
  024deb68a0e0e6926e6d51c7b3234366d9c26177d5f7298231c5f95d4afd4440
c_hs_traffic (no PSK):
  472395008a3a31e4eb836d3541b22eea0003404eab0056f079a5af015f4b9900
  582760af25e58f08210062351172c699be0d7fe0bd2554a00e862eb59e3edde2
s_hs_traffic (no PSK):
  d4cbd66dbd06bacab3494016c8eb891517697544b28cd977e72e1a413f7c69d5
  579e68fc50b4b7d3291968d8a6ee3d63e3e70572ddb2c817b3db0fd4f2b1f44f

# Exported Authenticator (server)
Handshake Context:
  13ab9c49bb0b75a2a6167a43a657f3a4234737a2439d7104ed6f3e72238eb5f1
  c72158e09f39572eed012a66c2dc02043f4c9288b331c03e67d6feabcea532e3
Finished MAC Key:
  245afc62d375b22b3deadf2f5b86be79595c6d44135282b404082706fddd65d9
  0012464d6c3af59f986a33ef7dc5339952bcc68926d32558206b2aa59dc815ed
TranscriptHash(HC || Certificate):
  52f53215b9f68fba72af257f69aa55eb4aa8699d56dbd55c673e60fbd178535d
  1f0f9a4d7cc01e096fa447df98299bf029ee9ea576b54fbfed659537cdf4e292
Finished:
  56e620a597c178eab75173d200b29132f14d8c759f8c9c997b9fd9a9a8aefc8f
  a24eb6214ad70bc59745262605678634b8a53024037ee3b2a2e491729685ef1b
Finished (empty authenticator):
  f01277743d459bb4dc67e59bcd5a0a35a410413e6773fc4b6e3eae79fce0a3ae
  3bf075c3b39b8ac961c8b07820bed2bd76b213e8cfaca644a480d08f5902c141

# PSK-only
c_hs_traffic (PSK-only):
  6580a4de683ec8c089dac82552e74aa074d89ba694108a6fb2d8bcde0a8f1bb5
  042080fd9295ba0e6f0e5840c76f391441b09fdc446fc4ece571b95737ea0144
s_hs_traffic (PSK-only):
  bcc778a1f97fb32f4c0668ce707bad0eaa989a81ad502dc75095c2364db5ce19
  2aab04dc21ec3948d3c76bc9357fe1e17b03ee6db2b6421bbbde1da812ae7760
c_ap_traffic (PSK-only):
  77463327a3609cfe97ee9c7523c8b071341450fba775a70a7b40bc1a947f064d
  add30d198dd1d8bd7f53d29a3b5bd994d44bd065b51e728dcf1a7be5acd66c7d

# hybrid
c_hs_traffic (hybrid):
  2b199e54700a4992cc8df58b138564777fa58cfdb09a3cf6f474f78e81ac90e3
  65a64b68ed75e9818dfe48b43b7b76a0b2ee7e2a596b6027ef960dddddcc63b8
s_hs_traffic (hybrid):
  ac1e433ba3fd73cb6054ddb95bc43e68a6f98346f5ed157033a38dfa07530c9f
  7f5163876821a5d73599f13ea12a74a1c53bb3800f845b7eae61eed000d7f237
c_ap_traffic (hybrid):
  2c3d56389ed9582a11b61d36ffeee3f78feb25fcd576fa66166314bb465534d4
  e0beb9c1685e60cab2084b7db9ab0f77d30ec48a8aa8d6efa90af6250157a2b8
]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8y9/XbcyLEn+H8+BZY6Z0VeV5VIimJLmumZyyYpi9bnFdl2
e2wPD1gFkjCrgLoAShQt9T7LPss+2cZnZmQCRco99+4sj90iq4BEIjIyMj5/
MR6PXVd28+Jl9suHV+OLvC1m2U1xl7XT62K2mhdtdlk32dnb02xn8tTlFxdN
8fn7rp3V0ypfwMCzJr/sxu1qPi8/59W4m7fjL/XlWO8ab++4ad4VV3Vz9zJr
u5lbLWfwd/sye7Gz98Moe7H77Dn+d38H/vt874Url83LrGtWbbe7vf1ie9fl
TZG/zE6L6aopuzt3Wzc3V029Wr7EyTiYInwye+mybOxnh7/budMHb45e0b/w
evTvrJhmRXVVVvz1bLWcF1/o13ZZV1f86fT09cGbY/61XF4XTdauSpi+c/mq
u64bfu4lvD6T4305vclOhRrwXZbVzVVelf/Iu7KuXmaHzd2yq6+afHl9lx3W
FRCuK6ur7O3bQ7q6WOTl/GVWldPrep63EyXs78qiu/zXK/x2Mq0XyVPf5c3N
zWr8h9U1PCr7MMlO87yBFxuawVm+WBZNkf1clZ+LpgWSjrJXZTXPq5mdwYKH
/DsNOWllvH/tVvDXZUnPLytYxd9Psj/mVXbQIq1pAJ7S78s58kzyXTyV07N3
5bSpi3kx7Zoa3rkdZT8V86tytbBTuaKhJkCFnEb617YjGriqbhYw1OcCV+HT
q0Pgn/3w6w/6K3CY/3V/J1zwwv8aPt3xtz3f2aXBXp18PN3d3n1JM+ry5qro
XmbXXbdsXz55Mm2b6aQqYUJX9ecny9VF++SyXLZP4Ab4pcrnfBfvwQ3gpfHT
7LQDUufAstnHolmsOiLG+CfacK/z9jqDr/9K92XZX7PjL10Bl1/AVvqw6par
Lnu1qqZ4S7tBFwU+xJ8xkhjYkAbN59lJ1cLTV12R1Zf+yS0+IjsrptdVPa+v
7uhe3JUvs93tnWfj7ef0SVs0ZdGW1WWtoyMt4D3g7Tbkk6MPJy+zne3J/vbu
8yfvT07PJnjNBK5wDu+MF+j59tNdpfT2NhH9ZHw0Qd4mybGYz9o8EH3vnyX6
3gDR39Ukh97mXVdOC6HzUXlVdkCe0/KqyrsVbAelzX8OUXf3voOoe/jsP3z4
+Zf4tTeG3xv/erIoZmX+ZNnUf4ct1D5RtrmY19ObMQuscYdTKv99VbRPQGqv
FkUFV15MF0/+Xq++nMNGok8my9nlRkS4A6ABfFNO6bWzV7AXgVAtbPsMFzoj
6QFfAA1+f/humG4kIg4m2R/gURFBtvfhz/cf3h8ej49OTj8dn348Pjxb8963
t7eTVVtU5ZcJrMOTaV1dggCrpsWT27rudvb9a+PR0F7XyzEQBETsAghTwH28
w55cAE3iN3xfwyDjo7KFy5ZAQBTEBzN8rxwXCTZok0+RAPPsFTy5aO6yg67L
pzetPBDeHl4dKQInzz0UeD3JfqqL6U2PLv8jX1VFE398OsmOis/zsoo//gNI
9XpRN/Xn9uYu/uojEhjEY/25nMZ7eX892238fHr8/uSX7E8fPpxtEP/t7G/I
3nzxjLbem+PDw4M3w5vwpphO85tJVwCZL0uQz0/e0CfjppDVGT+dbCNXRSQ/
uy4yvjDzF95DODhdfiqaDs6GHjGO8mJRJDR6NwGZWnSwgL1hkoPIU2gH/jz7
+dNPH+igH37XYgmHXzcp82lDHAj7+emTp3u78ZutmouaBvmPex9ghdf1JZCp
+63v6b/6xF+9KVJ2+wm+KK9WpXzuJdZTzwDnh5/+/PHs4P3B2z+fnpwOkwj3
qGWJ7rpsZufLvOnuJtfdYp4wAXw5/ohfskIEJ/v8ri3lRPNTQBnx09HHP24/
/14ePCXN7aSalZfEXF2ZX5Rz0HF6jPihykC8ZQOXokDDr3gsUtJAHaUj938n
p67fyMc/f/pAS8TbeBv06bfvD0+zvRf7z0bZcjnJdp7vjHde/JAe2jvb2z88
efHD8/HT8bO97fEPz1/s/zB+ek574uj1uz/+cffZd2+IvSc7+zvPY3XnOr9B
kbpaEsnkLIHTFzY9rvr9BP0ntwR8/q6Yz/PfvCE81z1bS+dVU5/+nx+ZyrtC
WtAdx8+f9/ShnZ3tF09wYU4/7j99uruPGtGzyfb29rM9uPLdn3bWsHSfsjvP
n2z/8MMQ7/5Udt4sQqY1tkU5hbOrXJSoe63RE4kIR0C1cjot82pa1j0O/VM+
74Q6D7PdjrLdzvbz3W0mztPx7vN7mO7pzgtguqfAnC/Oked++fDh6M/fc+B8
qevZHfzRkyy/8BejLM/ellfX3W2B/00ocwq8sLjv1Pn/Xhp75tteR+2Tg8NP
2VmTV23O2j8qH6d3oLx1DbwTvyHqncKe25unO1sp7ff2nz3ff9LV7XTyGa+Z
lKc7oLqPnyN/nZ59+vDTd5+AOz882d5+2jvbeRBgvrqrpzXoTaCGFaiX3UNu
oN/rfHGxaq7ioxknBXrVztM3aw6dATG082RvP94sb4q78an4AcJ2QV8G7iHx
GDyg/tM0D0HCN/9YtTeJjDlAfW1OhgRYGZ/z1ax33/HVVXrswqev6lVTFQkz
vZlkb+rri6a+6REJPp8DQ7dtzDK761jm4BSZxm/QXRJS7z69HibmrC6JiP1z
YXdv/+nz8c55rO8MnJyj7GSxrNu2lIP0U4HuDeLUT0B/5tuRTA+tpYPlci72
RZt1Na3IJ/iiXmQfQPWGBXtXwErMmLHXL83PIMZyME6a3i77VFQ9BfsQ9/G8
gGO9ECXbn7F762h5dngop+ueiLndF892WMrt7oyfvnjgbLU0/HS6hp+Hl2B/
b3cMxuH+s/He+W7M24c5KNGreXZbdtegqCDxS3atvEXhL4RlfUbmN6TwfM8m
PQNagulZVKjT9awbOOqn1/mid8vpNZxCIJhiMpOC8V1nyo4Qe3//6S4Te+/5
D+Nn2/v3kLtHr59O3h8dv/0nztsXiWB7fXfRlDOQ1nfZcTXNl8DVbBO/A9M6
B4t8wcb/QaTlwOUyyeMveNnVfUfOexAuZTUr5r2T6CdYqt7nIA1elXCs9KxE
0OZ/D1ZtPodzv3fUn3YFrHger8WLdWvx8d/4UJGleKHH+86zbdF9drf3x7u7
963F9lNg/WfPdkC5PN/ZdePx2OF/svwCdGo4yJxTAdysgFNLEBZIwKaI3Lco
QF6/OXqV1WCbZ+hF253A0XBdtpl6NNysuCyrAtchK9BlRq6J7jrvwM5czvMp
fEV/+TFpz9RVkV2synmHj8grVwRvW83etkvxtmWbv3x4tfUyIxlVFVc1bB9a
ZZjWFc4Lpl/AP3cwk6b8TPwxootflcAh8FBikQtc5CZ7d3DYjugDvKLDY33a
lMsuu87b61HW1llVO3pRmP4iLytyu+C1li5EhCJ2TI+yg+ODoyyfX9Vw0F0v
QN62IAiKbAE7FCjET22Kad3Msnl+BzeCEMngLYlFZ/x9nk1rEJz85kgpoIbD
xwfarlogKa1KjrJ7lt/hdG5rpEhLY/KSwIhkFe8+28ehaZQGT4NiNm7qFfrM
vOUM16QLm0m8AP0SEjKA3xyHDegzCh3gpOmv53svJsxji3I2mxfOPQKZ1zW1
nD/OnVT+1P/6VbzGv/464tWLiBmYcogbHXEjvg5d/LilxevNfy1jOs9F9GWI
uiBNVT8JywADn6Qzwfk55NwMtu7V3LtWlsGxLMstW4DXa9rAIf0fxa3MhM4+
smzpQtxcObz/cl7fESnyeVPkM6Bx3qC0yW5BWgJ5mZXIOT5y796O3xy/G2Xw
/vDr0SloV9mf8LqKOAvHDruPp2yXTFbBYRBCXxdZjBccvq1vq5h+sPBfQBLN
7wIfO3Tw5nhAkkuQRiFxkfMs6RHZbb2aI2kXwAcslHSnZLSX4FZ3Xd8yh3ip
gy7KHo/w3mvjS4HvivnlCF6ctx4ROwhMJabhIgqLwQsBAeG/rfdtt2TwwEcf
T9/wQrpESPRmxIJQZGZ+xXqCaGhRZI1nCfcf+F0VbaFyhgL9smQmjx+rLOWI
nivkfSIzErw3o3mRf1YS0cj5nBgMXsaQAL/G5bqAw2yGNHzp3P8FP87Isx/j
GW7KvLey39Gtm5197hbf/vVl9igMMZ6irlWh35yVhB83DnnIU55aRbt441fn
DnjMr199RHTZ1OSs+vXXLS8cWPYAYX3gNMNH6IZCGpkXwP0iJ1Hv6CD6FNOm
6GgWuFZhi8Nh0NvjwBPD+/yYvTRw2eG8xBV4Xczntcun0wI9dtNoii2Jp3h3
6pGlr3Qub+6CHATV9OtXiVPw+YWSGGezRK2nwm0p7ji7ZshuliDEpYYLgqzI
A1f6y4F0oH+g5xmuIILAMuRgqYzukxVVUcxoZM/RDU4NTwe4DjbmMRyw9Fg5
97JrDLPSHOTF9VVaEE44H+9XxBnRCeA+l8Ut3Lqi9cBrQTstmksQ3ngzSNN6
dQE0CXpKNo18G5uzYrrlOKw9QgGLU+jwfevmIhYwj1GngPVrUfCBOXTVXY8v
0RKYZTAxkF6tQ3K0/74qin8gj+L7ES/BFZ/z+arILhuw1HBMYIrVArVivLmA
O4C4yhFO6YHRFjrYLmrY5LoNkEu+foVpe9ZHFsAn0wNbig7DHJ23W6LjDceD
XS6egvPgygddwsG261C5aK/zG7/xcN/RiYMT39kdUkJUMdjfgbk4YQoY3X+P
+3ntmLt7Mqafx9evEkX+9VegyrrtRzRtkf2n89UMTx5giuMvy7oBsjpjXNQN
rJ2OMsIH01kL2xcnBoreuF7CjEQ99PvY2X2cmX3MiwmcuiQ1CWZ2cZfxvtAU
CdwNpBC7Gqgv+sIRMQM+E+yg8VUBlnY5xQeD0vUIvsUTCMyRfN6qHITVqJhI
t9dgghvRBBvbsLnZ27ABano9PNJnIMAKOJuR8esLDHrCSx6T8OSXAJGEmSrI
l3iP4RRV8IA54b/AlmWF98MLwH4Svt9kRvR7Dt5F3/K9vD/QAXh9CVK1bP9e
w5WunZfTQuQm8BtMb/wZBq4bkGXZFTpggZxdMSY1Qxa5vw0m7n0BZx+wAdLJ
a0Rg9b6GdSV9iPSQEjW6u6wB6nlRDaKwwRBmjSJzKqaNl3vARBewQ4GjaHde
58sC15d/YUZe0mmEygXuZXT6VhS2J02uhkOkWBqxSPPwchHncEXXdqofOVVV
IhaCtWmBfJcg4JpoC4O1OidNQwS5mcDEvRZB7q00JgfJB1pP/JuGAAmN43dg
gpA+QcOOSEu/Bk2Jxy6+lC15pOZ3/Gag9vHloGbJQ3Bt4AvYgKTWwK+wdzgn
KJwC7QqE0y1IXXgTkD7w8rJ5RFDK3hArElYN2NGJLB3xCuEoxTJv0DoDgY72
MEheIPVF0d0WoPICo18hZ7gPammAIu9D2p9RJQQdDeWQHKRwHudN2dYVitB4
Azum/u7TIRuBVyC/QkOzA5m4TTRgwoyRVrQMY1jcp2MUf8HywZPMjgT8ZP4E
PWlVdSyKcJ1QecBPmP8v69UQIwCtZGXJ5A/iBlcW7nNEXzl6cc3xqIWJ4h7k
Ay9X6tNf/OIoDdCmgjHIwHW6rYEpFnAFvE5TFOn8F+R+9CLtdArTQb6ODLya
NA619ODpVXFrsyNg5zDDqrYHtn1ks/NJmc9mPE2vHokAT+x3a7vD4QSMX5Pc
uEW3CasUmKcxesgvQKozvOxYBqxq1umCWiK+ByBN3RbyJigDSBrBn0cqY8Cs
zsNfRnijQO3mIlwOImcJb8HEnFhnZOJJLpJyLAMwV70XpQ9PS6SdXwyQcGya
AOFgf+RWXbzElcbUHRSwsHmnRYMKHbrtxATP49wXOC2MWqubFk1GmC5m0NDL
NMUczRyMy5A1CHOOxyEyHFiLWBxU/74qMbMmp5S+O759TLNEmgKxibbhDdxi
1RLDlJyRRA9HpQ0kiLw1CDczTM8WpMU3740maInGMDwM9QlQS2jjJ5RAitdk
e7U1T56OH2tOwSxhNfCMgyngmS1yBDdnCRuXVduceIH0YdQQdS8pc8AKXuOS
Dji9smFWEJVjCuoOHTZfH+FJrt67liyxaBhSzI3+0QGdSN6bE2tAHwDjBUVw
q/5EvA10AdhDYKuwZQGaNnpkUHgHHZvUmBw9DhU6BrzCXDcjUar53AAz95L1
F9CC0MIVh13ewcS7WNkGWUjDskvyS8fPhJf4AHMHa4J3A2lbdXMj5/ZyjnJT
j5hjPndAjvDYNAJoJiuMhpWq1oASCv+M3+YXxXyUyaVskMsxH4mNDnYcHZJA
cCSJGqQl+QBA1pRV3niliwg0oVG8sG9Z2yMBPspOqhJsswOirOpjXi8T3x/T
Z+SM4zHz+aHAxwNWBvIMpnd8Rv7GZ+JAR3hvyX9/RZNfv/2VXxR5CBOO22zj
3c+nZxsj/jd7/4F+/3T8bz+ffDo+wt9h/719639xcsXp6w8/vz0Kv4U7Dz+8
e3f8/ohvhk+z6CO38e7gzxv8thsfPp6dfHh/8HaDd4g9jpAAwBMXYjoCs6LM
ytEMQ4F6wXb5T4cf/5//e2cPaPJ/gKWzu7PzApRV/uP5zg978Ac65/hpJAf4
T1j3O4c6T96QJgqHzzRfYiolckoLSiXazLhqE/df//sc99B4/7//N5eemd5W
uqzBFrnFrQ5zXSA3AZO+dC8zofXY7FDvik9MhJEwy8WdmPuc6X0S7HR8i4f9
EuHghbs3e36JLT6mv9Nl44Nu8Wk46AVi3QAJQCOnEg+3kBs0cDPOyLeWqfFO
lIslHUgkYjNPfJBJQcQNJPqr1AsbZYt1heA2ET9G8OPoo9YZCaowIj363lpY
dTbzi9k5f31OXysfROeLXqmreFo0MDjbtHCwtSgBncvbtp7yatu7B0c014qX
F41yoAIfL8CcxsyHsQP1cLgD8cmM7/fJsBaHwVq2W/E4RK2KpB+QhY4jdZ0g
gcUHw1uQr1VjolWbhdYh71SE0szM6aBvywok+4/83PU8BgkJWyyfl/9Q72p/
Eo4MHDjjCnL+wNl/mTfwPJD41U22yYcG/bGlz5SDLkumJIaFZwy+dfMYzFzS
Pc62ZF4ui51W0Wk6QhrQ6TijAdUisFfiQQqDeKu9SQz5rMOCD6HvXVnMKYOb
hSYmeYuthmzfoDN5VUgAkSzA+MiFxzEphk7RO2TvaxDLs3M+B5VEeevTd/h7
OSdHIkhIbPPBdSoS5IfJHryn89UOdIi9vxll7ysdldR8smsr1enZudd6CukO
srsA3U5ILviiQzH86m3hh+T79XbYE+Xl3fks73LmKe/Pku0Xe7Bc5n1YWeLD
kuPlUnYcu8FeZvt7Mg18d3SSwBDeWygqo5dmMNUVrNnO/mbleQ+MvDGNAENe
jWFTlhh8q6Y1TQlGqEZCWU0Bsoni8LR5Xl2tWJB8+4ajfsDRxrwbUKKjylyx
Ruzcl7/+JZ9MLv76N38lblCwJ+vV1XV2Md5RyvGcZJQv7Of+giyM6t4/iqaG
wUgp2vxC7yIvBuSHD7ayv3776ze8jY1c/tTH2mjosFBfJnD/Ke9eUgnEwQsv
ell+KfhQ5xjCHX2PNlMF1seYjyGShjUmzpBxeVuC+FmCwYE8eQmXwAOy7KfI
j5uuDHlTxEuDx084yGkT81urDtgVaJGCYFGXNPqtjYOOVq+YTUjgMl3kszbb
f/bs6TO6WYnnI4zoKvuCM9v+8gp+lK/oxcgRxSw4R99Oo8+e1UQN9POha+cz
KMKUESDUXYK0hy3LjjwUU40PaKvfNLFeUfiA2QB3lRjQILmAFxcgu/BIxGnD
QoXQC1qy6WNVh8Y5jjSaTJIK9g4KRBjIj3wHMmPZ3ozhXMad15CcOIB7Fssu
uEor4I+LVUcOUyTcxsYWMxee1iUdNLw+o7B7co6YoB9FiLn9ZRt+vEtrmd/N
63ymkgQsqor1Bpl7Vi/QAIH/O7v4kvcxxyyCD3BFJ/5vvqdko967nPJWiUZZ
G+Gt2A48C/Sniqqvj8KKjHFFRJlP14kNFBDk6PIDOSRShL5To4KX2CUpIGsi
DaOsHygAU8c/9rU81Qt871kLrj0zyeQ4cHsTki3+MABuFRmcdXdL9qYI+1zK
CUf7CqWzpHo49v6MORVEiQpTKr7wVeiEiufLkQPeXEQgxyJN3FUhowelgjjF
yIbQaPjguwEDt6qI6N4gykc7g1bfGwK4XphCCDd0tYPDbmwH5N1Mjtoc34e3
AvE97B0292SDUBzGse7cleSRe0WKCumVn+CQvvuEalHbSYT1roJ/4CAbK72t
AeyiMztdJJw17OScc2Pa1QUXkyHZY0I7VG1es358UiVRs1TajtJV8ka4PeWd
iI+2JvcChYMwQCD8Ry5VUM2mN0sMbbS6DImezca6VyNYiy5QcWpT8ScKkbl5
pP4zdINgxLDxOhqzt/CPOj/XGmnmia7/RI516RPr7Oz1+eHr7RH/K4He12A2
kdZBY1BqN29n9mo8YLAGOslZ8BJuoqeQHhKvhmgAmDwJLG5nF+0Bu7kz4Jyn
k52dyW66x+M9JBzYeo2D7ayIACScE7KQysqpinyk830fm+KUtNE3xd2x90SH
rcGSxG9IVtpA3S7bLsgMGOeAxlyzgzDWKKSIXp9uF0KXTdvF7+Ef2hsz+1zm
wxuTLfDgm6JASXoa/BolARkelBXtL+immdYWX3b6wGVYB9PxOwT92GwMHebV
bxiG1Xocymvjzp8FMvDhbx1Y5MTwwCwmvQlAwTg9zOColJjmskBVixPaPtMu
iyU/CqtKJgAaCR328SRSIwNEE+vi/KwR+vdbSlDumNutAH6GMYrLyGh6hPm5
46OglPqyatAW+l4ajV6Imd6R1eJjKRyOFBVpIAXG3SPFBhxNwxkwLs2Aydif
W0wpvQqkz5gohY5fUiPYvkeRfr+/ByeP65aTMlr63LcQEDeuoAk85ZRU0bfi
EDRWB9u9tEub/PISDVu6tMW7Xg3cMJRtaOxLvC1hWJV2WzyU6mo9jRuN5IGN
PhEiGWsEI4no8QVZRPku9A4ybzZS0DiVZKpxIbncRCk6tTZZF6fwrYlW5koN
6+nHzQJX//sKHj7HtOVYOm0NT49djV7ij1jpmWpagyg26qQDU3a1WHJOBb2F
Dhpt0iT3JErlguslJqh+hJM/minReLy+Y7FKOEkXv/BqVny9mRQ+NRlsbbZZ
ti7bTOlUY4ByrBqFpLvSwoxVl2U9lLeBT4TDA11CFwNhK1Zt6AnoThn1/DB7
dCi7IFBAX1xxfI33oxa1LPI7Hxf24TpOkb64A937CkUW+QO869o6rmH/lXmV
j0m4zTQ4gj5j8ghyalXJwXPc8+qWtp5oPJlxh13UmE/hOFsmZjCOxlEcg9Sh
nNIt2y7ReDTY5MSQu5QtCIPNMV0CtFOpOXzJSW9cA2Zc0puSn4n6q4u9BWQM
BnVvzrGmAVc0O/vYh0dXOWPmbMqrHPyZBBnmfVyWXxKpE7n5zHZ3ecuBBZKA
I3yDzyXa052NTbEb0Gd7lJzjFjGi+nQKyUyKLXk/ksiwIKSc0SkxxM5nJ/sb
xGzRFAeWABcmC0hfQhanMZ5ImrH6RErMmTqYz3vzYjucuaBwUUYgHTcLxKrR
uohADooFB94hWvE1lOtBqwOyhE59UvokkHwEfAlnPBkgCP4Ci8FTVwc0Bgc+
Y3CVr3P+gEUXgbp1L8lZoq5d8qPCGnKSFz15MFuLDrZUdrB3/yGnVqmZicqC
TDxgHXZLTUJmCRKGXDKk0ZZ4dC9QvJDDSt0ngzlnXABSVp9ryUDw7LZgewxY
2I4ixpIXviED3yT4SxRBV7ulfBvQO6b4caUJbDpGGxL6wOq+ax2rEw0r3C0H
BAh2xKfgMb/GdEnjkw6dSuiBpMCwqkNhz5Ez+yb7Xfa+GikTP/d+O9q7x4ev
UdsDA2GhZ62uCfs2dQG6GjFeWGUDyrO8agthf1R3LvMGeH0ufglaK9YNQYac
0iGgZwqeWlhhB0+Uqrmvj/rxIT5R1pQHhbTHuJwkjWaihMX8Pk7g4Cgf5dU9
38uWc1iKNCYQ+xekUASzial+pRgQ+Db8OajkgbprtAProTIuAbE4fIpuElBA
dYSUuTLKaKY80GtKMaHEPkqV7Wpcld4pi/ZvdNCSXsWPJZHDyqKxRJlH7nj0
TucmRSrhdVhrpIixqDCa2awTBYmJcWQgzqXoTWPMgeAhxot8qhs1j3UoPwTK
JRxBSNBq5ksl2wQ9YjABVCenBVHcvhjG/0UN4ejIqgJ5FAocNCveJMpS5uKi
dbJayKla56Z3paFOWYekcsuZ22ma5WUIFHgvXF9dWVuUV4EcbOpcieT3kN7Q
SEIOZbfAqVxfrXBfuAFWyAwrBIkk6VNGy0Qt7lrm6+AVJdQMUkcX2Ep1pY/M
4d6UswM1iGmdQK1qusQjw1HkyiFu2VU+RxgUIBi5Q0DedkLO/vbBZWYZzXOB
A2BoIb3jDa4i1VTikpqzJ+QQq1EC7B98GCfPdsafzs4ssVjFa1PX21Cc0GEG
LNnn8Bx03zAHPW6zNSF3oph5Fqhmjk0or19TAUJNwQVdCfZUh7dPp8Rz4UwU
H8mzqQCiFDUsreSCoGlplFkVtjY1sjhLNNhZeqxF/iFHasRtddUAb48xTNyS
rSIidL0HDKMMZDJ5q1fLPIOcJKo6LoXyPCc5QxhDYRUT7RodKnaV3QV+csLb
w/xEXy7YjS4BrMEpzxxxPJqG7C1W31/eKtdJ6CnetYkDU5xG28iEI7sRZHQa
aH2gGnc2sZ57kPXwZMOw6rjpOq2HQCq0cY2P2+b9gBW1evBxWgVuInYKq1Mq
TMlEzyiRmw4RsY/0KMXXI5csRbzYhXpnfR2SYCvsmbg6HYVDE8bF0z0SHz7j
1RitzCzwdhgadBw4KHCldOXiowMuDM4gTi6xogwrGnOUoeJ6FlYElXoquHfE
amM+U21qB0UUTFZ9F85gSQWB7QvnC/p6RlTQd8VsSVVVrOKzdncBljKrUC5M
FfPVAxtzFJCCobhv79RzOCtMQvNKlHoMP+LWcu4EOB+xXhQtgaW6MpSIBfUA
tXAE0+lSTm+KLswVz/ngN8jt+au32hAL00CDTFUUhRqxXVyyy4LxCs5vZpeU
9xqFdCkhbXD2YHg4DjENy2ei+pgyOPzZBJZIrL4dvP34nouf7OWYHUA02Fqn
sG0npzTp3JSXSfY03ovuiLDYneS7ET+YoHZUCqUkcr6G1arZVEmsSuUtRvuo
SIjdXThu7H+SyrZoMSVUbZfCc7+deCCGM7STADXiwNCqx7yt/ma1TXJ1NIvS
KUY1upl77plegqeKJqPCajjR1TZPRbOJ4Hy7ZpW24svnmG3MngEyPkTNgdMm
CC5Jj/ap0E1dkxep89oGyruBVEGnHun7C/4KTinGQjUsXp8Wsld9vUqpEhMd
AxwZSLxNcZadKduAlaQiIT7iZeO1sQ808X8CMTirDLV2ChmHJXADRXXiNrLJ
5JwSryHq9K1xEJssqlmVrGBj1SiVN7ZrMwncUCYBJ73DRJEekjX+SZhB3PTA
ZYHWeLxx9scA92QD3MOBTy1m8jl0bsBrIaqr4RmgCmbLBWMjMA7zpCOeBCuV
jx3Dl5RO55U+DKRociJnwVCRw0uHmeGb/Jk404j6tzm9l+TMD2XsedHtJLkP
HVL8lh3KEirGkVOS3G5BL9uYdl/ON5BjUJGHw48tdnFY5rELTLwg5m74gu/W
yvQjAk/5MbPvkiU/j+hb9pG2PSfpBr7hhuOF/VHeY/NolMn3f5GX+Bv8+vZv
W85t1uc7o2wymYyy+vxmK/uREFxkbfHGv2zSrXjV2/OdLcVsCj94b+9DuekG
b7rZ+pt5sFTRM5FYtjyV5Br+SD3hIa8XVTQMZSHqjsfvogqEVvzmICfVP06D
cOhM02o5okMTqCShjLzAdCUbl3rXyK+yVCiYPD1e0bfeo5Y4t5z3v7HgRh8q
XhvXU/fKad06/6NfBRJM8kxxnsrUg7e7deKMIaHF+ar0tXezim3oqxBBiKon
NGNPKJ16kkFlqIAGBsp7e3bIy+SMZRJyrtg2qEUvUM0leHXVbyv58yLnWFpV
JjFO88GioS+KaY4FSZyigIsjM9PJ+n0tpHd+lVFe4XZrNwhEQ5PcaPsipd/C
fahBF1+mJCGsQ9WtydWH204poUilRd9rEYwLrppMimfIyaqcJ/XBYcq2tnGu
zC7gLcHu9CVhkqMQRWlUnI+tY0s0Dk7/YiM1OLepAnjk1IOqijOGir0SIaJE
qC5Hl90M4mLzLujNQVeylsnf1ukp25oslSa/DQMxYXKTFeLXXoWt/k2h39yf
FDV6c5E4x4ev40hicB63/fJ1Sp3CDN4Ql9GBo9dP6+0l5QofrkkKZecs9GmQ
E6k7VlfBRGna+Oxx8dljdWPc/iz2zA6WOsC8h9fj3M4kOybdFJSAc8IKx/eQ
RED4rL9e0/PiXEP6OSdvgrzvM0i2AbfTdotJJfJSHPtUOoQDMGqRhpR4R8H8
did07ns3Poow1pQxdsAK3LmGpv074IAPvAbzBVKT3IEmC9EkK+A4/I72BSWd
Xl9LnOw+c60p4pkhK+NAQhX4bsMSIs6gqMxC0B4wtJSgfkJBINLTe4jkZWL8
ZoP0QqWUHUj3k2u6agh8w/jEcIT0Cf884WiUNRO21IBJ3kdDHOZ+MvZpuDcx
huE5WNf83uazta8lDI9P3Wja5UbQIdicPKfSi9HghIn/Y+Z3Xv+CaT2bZCVO
BrUbMkdNFZxfnAKvuH9e5fLGzCtJpDkRQ/dE3FJbw3PFgfrT1bkKAF2QOrGz
ipJucIRG4T99GjUZgQNvJ8eZsjVDArAFrxkpnPR7Z+uw0SdI8DRUiEtpJbzs
jAMWRd6YQzR6gHMnx+ttAwrEOfsh8Cgltc3xp+VnNrVQ4n99JALfOfhzE24Y
hcKXt1uZNzfZc0RmQmLCix8NU47Z/ByxreiNU0WC0fPNfyEB0EFMGHPizsa5
/SYUL5LmrdbcZ/JOg1IqeEGJscZOmc3IVN8yh7TsLqDGhgci0XMvjw4wtXQG
6eXtFbJ/4Gt4Bg0aXSb2Ax+euAy9wDwfvnnI2tcDInzk0iwxmaZ/DjpcOyky
Q57ixP5eCTjzOWy5nf0fRF8cxVTThVN6MJRRh2o5ndcYHXquNUpSJoaP8naM
7Kw55T5c6c5S9W+e38E+JBSsIdQFn1MOBNlA/IWdpxu0hzbo92zDzBbtZacF
YlyOddlqXgJDN+jy8Tds9W1nXPexn3375ofFL1jJji1UWFHS9nGF+fbncvse
3U7mK5uQoqPTJ1t07c4eX7u3jdcicfWHr2WOQSOHpgdrQrc9344ewXqTfQSb
AXztvn2Erlm4VtNd7WOeE9b9zrNdecxTegxthugx+Im4Jrxg3nn2QzQ5dgnY
u+gTmtzO/lO5dhevlZKwt1v+Wv+J7pH3tSRiDOiY/Xx2s4slmo04LaHqptCC
FJ/zpQFsM/zabJqzvsmsEX+xieXlyXjLDfiLVvm3tUPfHD44AIB5fm2KLC6d
Cddwdia7AtUsHLTSCJlG8mLvR7+clzcFjrOQ4ijjQwO5KbC/yKGkjNFJpUAW
sKuLe3MJRtkD0vvMR17EeR1leyuuVEQR6w/TvDkS+gZLLUjJ8JmWUf9GE5kO
xsBh3rucCRinpYnI3ICr5FMI3UVxV4sYNbhsHkiNqoXXgbbRCrjkKO6x7TpE
UzrrP7G+8QZX8eujIavCuU9WJxEHE+sdmiV3Gbu6JRgu/lZRdp0ome0K/+IM
1KYYCyqIwM+2o155zCuNMXA0gi/SNJbhyh3KrcLXBiOMJyzIPuRn4lineyic
T881FE10ds0UcX7wweJ+QkxsCLkmEBE9PcS1kbKpDiQ9iB5F9qW43anjDDz3
igXckL/OBfsg1jqMeYvaB9uwYiZsuaAZ/hj0x79sTybvb/7mFcQs+vL9DX77
u/fV31Rxwc23zuLkvZIn2WuEaSaAaCAFfQaguNHFLPMCALFWhD6b1hQdhWml
jl569+tWX/3cO9L/skkW6yiYAQMu4OGfzYR66G7+DyEgMZxNyEhS0GlX5h4f
dZCczpMzM+QU0zMMgPFwqdQXgsJzEyqdf33/u51fDXHP3w+Sd+DO90xhtGd/
C4UfIvL5e0vJ8/cpoeH75IIesfGssaSWLaqk1LTCiuOuiLZa3P1MPgRCkZzn
FdY2utZAEyUcLzh8HkCUdGN1fC5BChWwNi2CBLhiWU/FuziwUE0iglX+edAa
clbRGPwQrO0zljicaXtehgy5SXRqFZoRF2VnwZGcniBYH0FYS3XND4WVIVuL
cqaXnOX5HL1/DKLKpw29XqoXeUQnBvWQEBiiNuE1KzBoL8qrVb1CBGAvzB07
oL6EWEPIwcQ/Jfe4/xB7GrKOFF48kp1EI/Xf0Q6yoNWR76tu3NCS68pQ5F/Q
meX1kispmkro1hpMnmYCAuoNfImdSrxQMqbN13hG0aIzwAqpsoWUM18TZuF6
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
8vQ3TrLkDuZeyGtyYopDnx2jW9oloyS/S6GZsooZIV+Xlwm8FNU6o9LlHECN
7SYW3Zbiw8pWXNvkZ96UMfK00zAlALCMNfvJdi76cjx3eehaHbpkxqV5+npx
Bl3tnEHaxLl5YQyLEKwDR/je38TvrnMV09dLT6nSLilPs1b4MfU2u/qfVz9B
1NNBTv9z+dDNRX/R4XzvnzoMqRy6vnjQ/rrxGr3iZP4f4dlVweE1olIcuvYx
r4Cq5/9HOkLkfnU8HHjb6QOOh2xSlMcuB3TkHf4Y9wcu/CrvlFVokmRkZ0Va
ECVLvY/2NrG8e9GjLElbx/NTIizrDdl9u63s9WJjhOPSFL/5Y5nncvJ6Wu3X
Dv6xHle11PrplW+1yEuX80waZGLuzoJW0ujbLSyRlJV+nsqf9gFMzZCWNbuU
0qlZOWKd9eEpfWfqrvNh22QJzeR0pnvxgnd3qc3Brsm2PWXr6PVihWboXVxX
ulX2ZgKbtanvIZ1qyd08pXK1XAqYaFu8fUj+5eXq10pHzuN8/Y31m6d5aTih
vvPiVzmfMjXuLY0Kl+4v1zmdRJNRPnj16S7nkdrLohGh5vx8R8itt0w5y1tY
tVhiSVEuLby03Z5tDPiYS7+W6dJf1wnbuzFP/6hEpuVQnpyG89TUnU9OcgrI
p3oCJFJJ4/v4fHFfPmhicxKfPuY41RDSKhdNsz/lbz0W5FumOyY32xGYl5SD
Uym6WQB8RQy7wWgW/3d3+ajRAiHb5ssG/enbh/gu3BeCvD8Er/DStZB3H6Rd
GocwU7/OM1+iQ9c5qnrYHQi6qpazS3DBWejE6xEVuiBbbgoipu0KUbs+nH/+
uMzL+nuNK8H3UfEUklhmoVx32EeP2U++TsTBs2qX7z0tvc+WCOpNbipxeNQh
HcLmiEj2VxdFcSpHNgjlloW5WIkLXbGBsnpyHnL3FnqS8e6im2cqAdutKEp8
c4utAZzSImcXF/sV4vv2TZGC9BmFyo4ltf20ePjW6d9W8nXfpmhpWWjg/vZd
9rmn/j3JHMJQPjM2N96Spy+/vJCzX2xu1P+Wjo//848uTo8v8dH0eCj8HTT2
8+urLzIr+nIrbz4m7+qUum+1BsWP83cP+eCEn6y9N37yT+mc1qX1XQlFvrsr
VSllzV8AGLcKc2J2pzG8LgKjQE/M9RxvrjatKhgCQV3K28PazOr0JvX6unu8
PwlFkjgXONIoU7xe5Wy7CHTqqZiOxfjp1bHaa9eksSTMJu9Wqt/IGjtv6UMf
oF/9fglYXmc6u9bwLY/LfWoet3aLN49xbb+1HD1ls+d2icuf1vqV1V2WrKSy
uv+mbfarh6vfsCv+O0vz+e6Amj//6OgmXppcLzmja+j/+/iYK1i0mRcPvRTx
e5sKmpiknV82HSy1eWmz2fZ+UX+yL5JPI+az7JIGzXU9vCvE4p/VtYkVe6b8
3W0qc86ZTOsZUjmpJMlk8lTcJlJapi8zplJ8kq4vzoI1TrEcEL+Y/Df7gpkS
0lq6PW0uy6szl2U+QnB3GutDOhRs8/JlH2XZEcVZ8hi/3RYrvhVULYluh2P+
JPa7Z5VTMvKrdULfuj9SyliR5kuP466e+n1pmSSZXMM5zFe8nVMb1ESfsg0M
IQZEHt8tSurgoj/9AgPpJr4Won2jAHUqIl2mdDGkEgbvYlHFgAarz24/DyjZ
FA9bww2vM57uLltca6df/eYXrz/7LLV+fyoa+tfFM5d/mcf5sJC0bMzKvM8o
lDt7vGlz5OMXX/zT739vupRCl5xgOee3VNJlYd71NE3tfJShkJsCrLZWOkbt
oISKT6uEJ6/X7tNXyXLITvoVQpO8rmmAj9ep5UY5HWR3ZvqacXYQTxjsd2cR
TXUz005hl/7b1o/gUvuVHNulQ/eZ7stx5JTGsrjsvl8Lwqd9bKZo5P3BWOkg
wtw4rMS5/mE9M1U9wy4PUlW2wLknhwevnaXt8RBoidA+uyr5oG/S2cAq8xek
5tlKBzy8jzluuQSxE6Dn3LvE5/S878WflUeTj5DUcUZvcwrqmoWxpHtok97k
OnudNb/Y6+n0ttMezgqM2YJh5XO/L8k3m/dGXdDsGdE/lXdvMZmtfd5zgZm1
/b7aKu+//PyDU/vu3xZd7tgkfywtaCSKV1ujBlRFOfyVp797mxK8zmhtHud6
nE2ZshVwnvWIfNjaLtNdsoB22XrZx5D9EqenzNvEK9eZ/ubmT0sPlXOALxU4
p3KAb2kjvrg8Fnz5u4cjrjH3b8NdztUp7iI23hOx8SdCtEXvCTyS1zPRLx6B
CKCUTou3Qy0N8yCyQ3qHy0sCs7TE68f7nVm4fPF6KMl6omlKgHzI59sisa+/
s9+n8Z/lQKSTjk4f9LqkVG7wcb3i4MGRN0FIcDqPLSY5XyL19nFbnIxSWq/1
aK1N/Jdcch01/JxuVmbc7a0GmjsLvU4NnRbTL2PX+rav7e6kFr1w+YpbCeFi
LGt697O0ngB987B5xuztEsJfubf2s2jz0p2nbJtVMetibYu08wqLzo0aD3N1
UxaOsf7h/j4shRhLtoCLX98kCp2z5Jcf3zzk8xjS4c05bfDeJat7q5flFwkR
hOSL1aE88lQBo5BCMjGyr30Rs/L43JO9uMSzs7n4ilXo69fs61zQfvaOXUOk
4mO9OEnlVLLWsvbV479Z8ozQUI/ZC7YU4/z8yBiTGzrD68PXCVbTHnv3eJsb
g4op6bfqTppn/fq0uzAdW1r6j+awU/ZS7MF7uS+T//Xek0uJf6WD1tovKR/V
kUJsuUx7NYVeL9bVAbJPu26eyYtQ3uBSkTwS+v1ydMBjyozfuoKwfWRcZm3C
aK53idh5QgpFWMLyd7lHnX6VCmsXdZikcmmYe51f+27F+NTcVaeRp2/NEbeD
I1Vc/y6t436tc4pM7lKydvFaGPxuAZP3xlRV8Tl57Ui5lPPYi3JJYnNKd5de
5tspyd/auywFF8EGJv8fYTFrftV37J3777T8b8tqqnfZzf+bD1pTjDe9YHdO
Q0CUv9WSJox4WM5BOyjlTD+z2nmXQt8Lizj4iPdO1ZxesVizh6b+e0nIafol
/XRpEvs2bGuh4H9Ojt25UXK+dhHitcHzbzH4wEH1gnyXg+nLKMswTvsB7qUw
Idfip8wyWCzgZDA65WTLG5F7twW1OU0ewvNBPPHM9RidXVooa/CgZvJnQpZK
KFdJK5CU4leiYMfElSvt/QMR+/4m3q7nRhY4SJ7k5HDKlmTy0p6nwBw2UgLz
QwLQvy024OZizPwn5ZYJJ0/npLMQzoWrZpAUw0xOjVKZkXvlpfuetUxz87YF
II/B9D+8szCux7hh+GOKjRwRPUVKpALiPKuWMtdA7YD58uTuJfH+m+zV2VUF
XQbmTtiA5ViOXSLft/bx64e8IFfrsR27nJtkJm/WdgnhZW9hdpqujZm56j6d
qHq/liBq/y7h/HRy7E9Le/s/JW/eO9RT3b+8jXf8IB2i96e1eOxbuUfz4SKp
K9nd7pszeu18AKJ2Jdr4ZPv85AbIuZVv7+9LNntMISZ1709acsb4ynmy+6Yn
5VCm5TDm1cGQ5fZ65yVYCuiXyzYyuF166F1+uPy0z+AqN2xNDItKLIKfYxfb
Ip6eLFj4sgxbyQR5pbZkNtWlv4BNfvUiK6lEzZYRpSYUxzfmO1/I1fJi9ePn
z04063AY2Wl/4IsW6aBf7nb1AwwjuREPl5SK5pRYuZ0nlurUGHUiPKm8Qr6j
khQhDFRZc/LKrLbPzdvTenp8LuCQq7tklyU+svOvFi/I/pKd1O99TPZidpTb
nwn1GpDOZfLvYYFO3q2bfLrBZUr22sSmoBfTk8N/16VkRWK6lfHG09pE5nY5
mEbTU5rN5MYypedMXnPNWa49KIx/l2CWzhhTZ5p1nN9vLhf3fV6o3VnmOWoh
Z1MoXq3Vc6nnlIPfv7svoLI4SFLs6eYubH1iUkuenBqW62n+oFoDDTXtBvuH
XJGSS1hyj5q75dR5Sfb6iiQpS6lLtj42M377eYrsaiYX2b15e45eS8VM2TjH
Cd1youxymoUGmeOpXzP2EicqlGetnhRt2Y69WAhGWohEIuy+UYy9O727W9su
59eU9kllrLsuTR4z6jHPeiqp/0bZa1mYEoMtTSbLci5QklIUtHhxd4U+Zhci
L712kme2GGH/epc7Z59VUJdzQpcPXLOnkvZI5SpLX+LDcSDbH51pMrT8o/dX
b97woqePPuG6oij6fNBqOeHluQ7F+agU/aM/XL71HS6nNSeGu62PPTuQ5Pnz
c3NJUXz7+l9KqfpFCa/S5ZfC3CeqeH/0ZN+5P//oUSlZWzXg03W8OYL/oPSM
1+5mKxFaUiOLVzC3+f0yhezanBCaafpZtmiJAXW1SU9b02BfHp6zFECYN+bV
kpT28Gb/LbvPuPyCfZrZw5qGBgCdF/ymqEDpeX06jHS7+FBCvJZP5lPVVH+Z
05CWvfPu9va01hfvnJTrV2yYtMxoyRkscP/Bos1dJfDp9Pr16yun8x2WwxTf
3jwspUrbMU9+/c0SAFLF411gIybf7d3ru+yOel9iUcV63Rpa6DmHc/pOJeGs
6KtyrPT5UVHnRxXx9H/YF5Pl7PAceVvvyylqByR+PGZHHzzBuWT8avvGtYVm
SrbORys+U51+JisbAZpv/iCavJaSxUP8Rwn+xVOuF7xJoHNl7cP7P5xym5Wx
zXK+9Fw5dEQ/HIb2ka7n+vPRqT5d/eypPweI+tif0+kQmHpZXYvLvToM5HOQ
Lp3c8+oTRv3zZL+8/Py68L78vO3Gv3zsAX/Zrn3/sWvfn378+vzPj4+X/Pji
k3980hhSvLoEqC9G9Rd99J5NMqq/6U27J2a99zq/8eWb66tfu1uVk706XvAb
Td1/ePmdYnz4z52g/Pj131+9QBwWT5Ja33zx1Wdf7Eedf3I23T87dCE7+6On
7n599rpU6wgWqVjy/H264Mm2Zedvf7q3Wbmg9BPLLPNnZ6/HLC0X8PKXqdNH
6sfxqjw79UK7Lg3NWKbUpOz89VvHsvNvP0z6DxFR/vcf+4Ff5z5n//lD5Fwf
uA3tg5KyhoNfHee9GFI/aMMct3t58PX+mi+W7X54Sfq053wSRYbL3v9CR3p9
/aC9fwi5/P8OBbaTYvJcX6LAF//XUOALocDXasLz9eMTKPD1wxEGfvfF9o7y
gydQYNcs72zUCQW2X5+97+ED79MFD0/emt/68Pxb//IDpP4vS9zyJXMVy9lZ
/9vEv9o03peL+O8Ff/ugD/75L9Jdu9yqy1H9RZ/wf0tqv5TUWkmt/hH/9JQC
U+bYQZR+uRt6/sETorvryng29CS6268vRPf592XRferWRXQ/+NZn1V5WnWeK
c3vtmeAnFfmUcjxOruY29ZO8LpXnZ+97m7Lydop69z5dcNGD8nwMl00qd+OV
SauehRvffl3IculZeDge9le7LjxbxPwX0Z8+z2T2HxKZ3fekflFSEfe9r5a0
aYdZnI8x359Knazm87M1T/tub8noWM9TL7GWY9Qk+0g2hrAcIGcXmVkqJ0pV
lL9P1UT3uXx/Uf7LI18sUfXbOOeE+9zT8z43kHmrnirXV3OMa5womYPKZlbq
2E+v8qH1u4dcX20/OKX735wdabTLp8/t0nehpO00l4fzbq3Xp5QOn0+LyxZQ
cuLm9ooxNwTOBvIxAJk8QvGt/DYPSx0qSvRbdWNJOQyl1FZNWvTjHHTIroxf
3ckDmIbwWXIs/flHN+uPXqcnFzHYnzWm94Wl71KqVKhT2fAuHSanHOdi0TuV
6t7mnsw5C2IVnOf4S4k0liYvqSi5ONtVglxc86pPze60Jw/gxPbL53Oezv2v
JaVsCQnefr+ktC45TEuIbfui61xYdvWb+N3vYjp09Msb/8c0UO2a3N0zH1Rz
PJSu9J6+XrqJn8r0pWjZu6UZ8rfpgNh8wHTKTNiZuduCLFOe8ed6AfnrfBgN
714yiWQOX5+SzDAZ2TmUOwel23+ZK74uYyC53dFyfvHli/e6+vrytPTr5bj0
9Pw3C/88KXksZyvmwpfVz7ZPAdbb/rjswjUhKXupcvrt4rBLTSfSJF5fpZZB
uku+0J3cL2V+iFCeZfm/tsK8q5QZsfQD+/J4uuHh1IK0PKXoN2weXJbx9t03
dw+IojuC2tIkaAWTrWfJw/Fs5dNSOZLOsfhFCYK+L+dZnDWo3Y52uWhtfbCc
l3QE7qj4X331cr9or1Jb3B28piuKHL3a/61wi3zDAaFf5tsPV5e/7IUh37lT
Gvncra9SD4F0NYJS7vsi/yvX57ZRX2VL53gw8SeO9bnG3dXVywwxH7l1zQvR
t/746ub9+Xeap77zLIH+5eP9hTHz6tMGcX7b1cslAp3jWyULJj/i2SUu87ji
1982l7mf1oee8gkfVPrsbgbLkzP7m2entjT1+pvvPwpvedqirZ9alGeHsKr4
TxLl43vPjpr7tPeen0/3Se99QhR39km5vGiK51dtb9J8CqYUgdsFs8+E5avq
hwndR570Kdv5b8GApzrDn8Pc80K+mTabkL78Q7yTPftDhP1/+Tlf3j9aHYxQ
d/yjqZYG52fc7rzL+RkZlM5Ui7NfKpKy4lI+oSirqRQmhVRvE5sPPrnbHThj
1wjjwhxT1+iclfP2/rvC5s7ENpkt+7MNnsb1FAP5gNK4/iiGZXr6cZFbMhJg
3mWxD8T74ljLdP0n7IotW/B0QIx0fz6rSZOQjqE+zzZfZGONS64hroXN70I0
K53/85/3P4V+f30fLkyFlSDlz0xFm/AbJTu9PyfHOcR0YTj89XpdcVdK7d+W
wFJpo7LQvfMO3UtvgyyeSve6XmJya1FsMiTsqTHl70/ZD9vVZ29Ih4esHfv/
cpi63MBgR7NEscrR6CXqe3FUELuwydpbwKjm7a9TN/c93TuEINmZZtmVF2t0
3JaHZU1je35fHoTg9WfLyv1TWuMzcSgL/9FIZE5JXck73363nMq0ne346/Ww
ILuUj6wfvzbM2Lf2WKOD8+39/duXd1c/uaqb/hXiXB8LSrBebuNWJHZ9yk3Q
04NLpliWqtvv7PfLdzxsvTbT0T7rOc9XPt7cvvz11U9O6W2veds3ShnJb8nZ
4qnny/aWkjNQ+sSmEsTUcs9mc+C0FVuc1QnJXbAk9C6W2q+X4m60TALH29t9
dsfxiNB6Moc65C1pdZ+3cUhb3Tverg/+suuy744otSXN5IqynNjLLWvBSfri
ZJMeTgBbygLyiURrV8aU45zS1LgmoVdKUV3Pyk0VoksCaN6xdmvqXnqv5I5D
y4xj5af+tNmA/u60tfzIXoa7uJibv3v3zTerH+eRzy2HlKqg91LMTj9eheFq
FQYNfbGb9Rj0Z8aDjI6mOQjnm9Pvvs4lL7tlX/oj5/u2isDloA4JQNLOSwJg
6a+vcubbexuWk5eOxvaaUn5hdScxKmXLjVn34c1Dqr4VL1wB6br0Wjz7ccoU
vH/39oBQafjSzd+lSpJSxHUXyxm4amT0j1f//s+/vbphG6b0nNwiQ2lgy/Us
4eH6k66/X64PN39InpH0WSDE7dKFmtUosJ23WyoyK3s9l4Gecrv3fGzssfHV
5QGyH0yl/QT4O6RKlGNU1szEr1M33aWN8U0WTMDy3//5l0zejbqKpXffnjYR
uU4J7uXMM7uCh31ce4dkYBVVKg0IcuL9sidzcnVunJYbIWyJgtvGjX+4Se6N
JE0bCK+tzr5dTxHMxy+oTmCXh3SWVrN5Fi9/t4jss222c8vXPWY82dT1+vR0
U9frpQxlQYrLvNfrza2SkUh1BsnxdeklXlwpBx6fYU3SgUp/OP3T4ptJ3bJT
TWxxoedW4+URR/wspb/ZAWTvvj893bp2f/Dy4qgqdyWgLfxy70TNfvv1hJWz
/kq5J3Z5RC7XLsdUlATepcw9FZflc2iOfauUM/6Yum4+Hp1hpfyx9I1fd3bK
EtSJSE92IT/41NLpHOojlUoRl1NnFv+9HvryQ3J3/ZzQbX1FDh42UdGzb/jr
X5dU0W9TM7Y55UHy5rS4ZbbTjyUd3+SNVLoSlJ48pVjjdOS9a+sX8azb9Xtu
SnXB1VpJv9eRuxndDeU6levbt2GnwB7jdvSpZGXtmi8te9q97VsBs7p55jzM
feP8+5wfe/XUWchCvlPhI/rWHF3I/b+emQ69UPr0oZztsEfe7cq1s9iyQYuN
t+aW5dbOd/fHo1yf2tU5l1Z5aYUtlI4EKUc6t94vs7h0vNHPXm9F4Uu6az6+
amm9eHOHWOXAjMrYH7aK67QxdgVTP1/8l+dtix72HKOk85bzE1azVQK2a996
eESZ+BKQWs3lQ0ru+7x3135CK2tLOc8P9yvvezw0wRBq/cuxivnYhffD4097
6t3bt9mjsZ2VUN7+saZMCyfaIoP5G9c+Gt/kEJEKYfZl/SkQkWmSzbXjPz+v
UMxfPufmBwXiALSlcdKat7t6zJQtzgUikcvkFd2qYNR3b7FUFqTMveDu13tf
p5IAlWaW85muSoXmgQyfjU/7Pq/Gd1/f3x7O1709nAu16PJyLn1Oe1+Kt5bC
rrVdweOSvF70k3o0vc3d809qT3P/NnU7yJ1YQkGr/ORS7JXrXrdrt/KoXNRw
Sjmeb5eDZZd+dupHcNkkoBx3nnBkIW1pyKdLuhsPdkPusPgH+9apuYzXSZ4J
0d4KQb+RnZ9LAdewUzqYOZYzcJjAXCL10xy+zTelxl+pBs7ff3uTD1P9JrVB
yV3BcpFeodClVjgXvqQix9I2AZ15E98nw3sVo1u+4R0DfbION/WmfWpyEtSo
eehjvCud075J5Z+5lcZWKeYYQczjeacTVVOVYzJol4NMH87LI1OafSkcfMzH
2e3Fb+kKngnT4Xdb68uQCfpCYZTstkxSItRfap5/n0+1Umr6/pCrT6DLmqly
+b5WOY/j/Xp81HfSMivPVTOP7bPPPyuL6e7ix2xkpn9Jt5bjn87qmZdFWCtg
doc7C/ZKXUsuWFoWu5QXZwyTitJhZms9UvIG5NYgy9MLk0n2gGD2/u3yjcci
7aW/T7akNg0V1UUwexv2U+sXX8/K1VKLu3Li4wWvPxhvKye4sjpMSA3R3y09
QcraXJ/OygHKhaVYZN5XE6QBPHvlaXfmlqqZkqNvOdVgpQKSvWLyHFfiphwV
vXCDzBMLY1BhSPLH5LlXsWKqY9lSxBeTQMd667hhux4UlurEkll8e/PHmFFU
uFBkdDmVeKmKtSnJ/+Zu18xhTyxXUT5dHjyXKpnLAeWlenIlp7vzxRYRVmeU
01MyuS+TKmfTJde0dvPZW8sqLoU2irNuf352dvVLpX6/eHU6ZH8+cdVz6Rjc
mrv6fFU/94LS9Wc7B6PebjKffJPhpnTC1wc+JeZvSanP1fOXqbjPJ1tpZ6Ms
933g8RdX/+4Tr37zZse7863/8tvPlzSzj9xaeMFZoLEM4JefOoAnb//sk28/
Czdy+1Y5tXYGSV1L87rNN396TO2hRURSYeifcje8FPZP0ry+7rTbS1uNan5k
eU46cOrhiaTlN2/evNIhlTCT2+9Pl11GyvOOo1q9DavkbiP/yuQjxGRfZzQp
0YX10LTLQaxC+ip7ChZP4ak09ZBbhTvv7HJQwHlh7nLy2TGUnIj4KirXZ/Ys
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
F6+sNQIA

-->

</rfc>
