<?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-rfc2629 version 1.5.24 -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-v2-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.0 -->
  <front>
    <title abbrev="QUICv2">QUIC Version 2</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-v2-01"/>
    <author initials="M." surname="Duke" fullname="Martin Duke">
      <organization>Google LLC</organization>
      <address>
        <email>martin.h.duke@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="January" day="22"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <abstract>
      <t>This document specifies QUIC version 2, which is identical to QUIC version 1
except for some trivial details. Its purpose is to combat various ossification
vectors and exercise the version negotiation framework. It also serves as a
template for the minimum changes in any future version of QUIC.</t>
      <t>Note that "version 2" is an informal name for this proposal that indicates it
is the second standards-track QUIC version. The protocol specified here will
receive a version number other than 2 from IANA.</t>
      <t>Discussion of this work is encouraged to happen on the QUIC IETF
mailing list <eref target="quic@ietf.org"/> or on the GitHub repository which
contains the draft:
<eref target="https://github.com/quicwg/quic-v2"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://quicwg.org/quic-v2/draft-ietf-quic-v2.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-quic-v2/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/quicwg/quic-v2"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>QUIC <xref target="QUIC" format="default"/> has numerous extension points, including the version number
that occupies the second through fifth octets of every long header (see
<xref target="RFC8999" format="default"/>). If experimental versions are rare, and QUIC version 1 constitutes
the vast majority of QUIC traffic, there is the potential for middleboxes to
ossify on the version octets always being 0x00000001.</t>
      <t>Furthermore, version 1 Initial packets are encrypted with keys derived from a
universally known salt, which allow observers to inspect the contents of these
packets, which include the TLS Client Hello and Server Hello messages. Again,
middleboxes may ossify on the version 1 key derivation and packet formats.</t>
      <t>Finally <xref target="QUIC-VN" format="default"/> provides two mechanisms
for endpoints to negotiate the QUIC version to use. The "incompatible" version
negotiation method can support switching from any initial QUIC version to any
other version with full generality, at the cost of an additional round-trip at
the start of the connection. "Compatible" version negotiation eliminates the
round-trip penalty but levies some restrictions on how much the two versions can
differ semantically.</t>
      <t>QUIC version 2 is meant to mitigate ossification concerns and exercise the
version negotiation mechanisms. The only change is a tweak to the inputs of
some crypto derivation functions to enforce full key separation. Any endpoint
that supports two versions needs to implement version negotiation to protect
against downgrade attacks.</t>
      <t><xref target="I-D.duke-quic-version-aliasing" format="default"/> is a more robust, but much more complicated,
proposal to address these ossification problems. By design, it requires
incompatible version negotiation. QUICv2 enables exercise of compatible version
negotiation mechanism.</t>
    </section>
    <section anchor="conventions" numbered="true" toc="default">
      <name>Conventions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in RFC 2119 <xref target="RFC2119" format="default"/>.</t>
    </section>
    <section anchor="changes-from-quic-version-1" numbered="true" toc="default">
      <name>Changes from QUIC Version 1</name>
      <t>QUIC version 2 endpoints MUST implement the QUIC version 1 specification as
described in <xref target="QUIC" format="default"/>, <xref target="QUIC-TLS" format="default"/>, and <xref target="RFC9002" format="default"/>, with the following
changes.</t>
      <section anchor="version-field" numbered="true" toc="default">
        <name>Version Field</name>
        <t>The version field of long headers is 0x709a50c4.</t>
      </section>
      <section anchor="long-header-packet-types" numbered="true" toc="default">
        <name>Long Header Packet Types</name>
        <t>Initial packets use a packet type field of 0b01. 0-RTT packets use a packet
type field of 0b10. Handshake packets use a packet type field of 0b11. Retry
packets use a packet type field of 0b00.</t>
      </section>
      <section anchor="cryptography-changes" numbered="true" toc="default">
        <name>Cryptography changes</name>
        <section anchor="initial-salt" numbered="true" toc="default">
          <name>Initial Salt</name>
          <t>The salt used to derive Initial keys in <xref section="5.2" sectionFormat="of" target="QUIC-TLS" format="default"/> changes to:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
initial_salt = 0xa707c203a59b47184a1d62ca570406ea7ae3e5d3
]]></artwork>
        </section>
        <section anchor="hkdf-labels" numbered="true" toc="default">
          <name>HKDF Labels</name>
          <t>The labels used in <xref target="QUIC-TLS" format="default"/> to derive packet protection keys (Section
<xref section="5.1" sectionFormat="bare" target="QUIC-TLS" format="default"/>), header protection keys
(Section <xref section="5.4" sectionFormat="bare" target="QUIC-TLS" format="default"/>), Retry Integrity
Tag keys (Section <xref section="5.8" sectionFormat="bare" target="QUIC-TLS" format="default"/>), and key
updates (Section <xref section="6.1" sectionFormat="bare" target="QUIC-TLS" format="default"/>) change from
"quic key" to "quicv2 key", from "quic iv" to "quicv2 iv", from "quic hp" to
"quicv2 hp", and from "quic ku" to "quicv2 ku", to meet the guidance for new
versions in Section <xref section="9.6" sectionFormat="bare" target="QUIC-TLS" format="default"/> of that
document.</t>
        </section>
        <section anchor="retry-integrity-tag" numbered="true" toc="default">
          <name>Retry Integrity Tag</name>
          <t>The key and nonce used for the Retry Integrity Tag (<xref section="5.8" sectionFormat="of" target="QUIC-TLS" format="default"/>)
change to:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
secret =
  0x3425c20cf88779df2ff71e8abfa78249891e763bbed2f13c048343d348c060e2
key = 0xba858dc7b43de5dbf87617ff4ab253db
nonce = 0x141b99c239b03e785d6a2e9f
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="version-negotiation-considerations" numbered="true" toc="default">
      <name>Version Negotiation Considerations</name>
      <t>QUIC version 2 is not intended to deprecate version 1. Endpoints that support
version 2 might continue support for version 1 to maximize compatibility
with clients. In particular, HTTP clients often use Alt-Svc <xref target="RFC7838" format="default"/> to
discover QUIC support. As this mechanism does not currently distinguish between
QUIC versions, HTTP servers that support multiple versions reduce the
probability of incompatibility and the cost associated with QUIC version
negotiation or TCP fallback. For example, an origin advertising support for "h3" in Alt-Svc
SHOULD support QUIC version 1 as it was the original QUIC version used by HTTP/3 and
therefore some clients will only support that version.</t>
      <t>Any QUIC endpoint that supports multiple versions MUST meet the minimum
requirements described in <xref target="QUIC-VN" format="default"/> to prevent version downgrade attacks.</t>
      <t>Note that version 2 meets that document's definition of a compatible version
with version 1. Therefore, servers can use compatible negotiation to switch a
connection between the two versions. Endpoints that support both versions
SHOULD support compatible version negotiation to avoid a round trip.</t>
      <section anchor="compatible-negotiation-requirements" numbered="true" toc="default">
        <name>Compatible Negotiation Requirements</name>
        <t>Compatible version negotiation between versions 1 and 2 follow the same
requirements in either direction. This section uses the terms "original
version" and "negotiated version" from <xref target="QUIC-VN" format="default"/>.</t>
        <t>If the server sends a Retry packet, it MUST use the original version. The
client ignores Retry packets using other versions. The client MUST NOT use a
different version in the subsequent Initial that contains the Retry token. The
server MAY encode the QUIC version in its Retry token to validate that the
client did not switch versions, and drop the packet if it switched.</t>
        <t>QUIC version 2 uses the same transport parameters to authenticate the Retry as
QUIC version 1. After switching to a negotiated version after a Retry, the
server MUST include the relevant transport parameters to validate that the
server sent the Retry and the connection IDs used in the exchange, as described
in <xref section="7.3" sectionFormat="of" target="QUIC" format="default"/>. Note that the version of the first Initial and the
subsequent Retry are not authenticated by transport parameters.</t>
        <t>The server SHOULD start sending its Initial packets using the negotiated
version as soon as it decides to change. Before the server is able to process
transport parameters from the client, it might need to respond to Initial
packets from the client. For these packets the server uses the original version.</t>
        <t>Once the client has processed a packet using the negotiated version, it SHOULD
send subsequent Initial packets using that version. The server MUST NOT discard
its original version Initial receive keys until it successfully processes a
packet with the negotiated version.</t>
        <t>Both endpoints MUST send Handshake or 1-RTT packets using the negotiated
version. An endpoint MUST drop packets using any other version. Endpoints have
no need to generate the keying material that would allow them to decrypt or
authenticate these packets.</t>
        <t>If the server's version_information transport parameter does not contain a
Chosen Version field equivalent to the version in the server's Handshake packet
headers, the client MUST terminate the connection with a
VERSION_NEGOTIATION_ERROR.</t>
        <t>The client MUST NOT send 0-RTT packets using the negotiated version, even after
processing a packet of that version from the server. Servers can apply original
version 0-RTT packets to a connection without additional considerations.</t>
      </section>
    </section>
    <section anchor="tls-resumption" numbered="true" toc="default">
      <name>TLS Resumption</name>
      <t>TLS session tickets are specific to the QUIC version of the connection that
provided them. Clients MUST NOT use a session ticket from a QUICv1 connection
to initiate a QUICv2 connection, or vice versa.</t>
      <t>Servers SHOULD validate the originating version of any session ticket and not
resume from any ticket issued from a different version. This results in falling
back to a full TLS handshake, without 0-RTT.</t>
      <t>After compatible version negotiation, any resulting session ticket
maps to the negotiated version rather than original one.</t>
    </section>
    <section anchor="ossification-considerations" numbered="true" toc="default">
      <name>Ossification Considerations</name>
      <t>QUIC version 2 provides protection against some forms of ossification. Devices
that assume that all long headers will contain encode version 1, or that the
version 1 Initial key derivation formula will remain version-invariant, will not
correctly process version 2 packets.</t>
      <t>However, many middleboxes such as firewalls focus on the first packet in a
connection, which will often remain in the version 1 format due to the
considerations above.</t>
      <t>Clients interested in combating firewall ossification can initiate a connection
using version 2 if they are either reasonably certain the server supports it, or
are willing to suffer a round-trip penalty if they are incorrect.</t>
    </section>
    <section anchor="applicability" numbered="true" toc="default">
      <name>Applicability</name>
      <t>This version of QUIC provides no change from QUIC version 1 relating to the
capabilities available to applications. Therefore, all Application Layer
Protocol Negotiation (ALPN) (<xref target="RFC7301" format="default"/>) codepoints specified to operate over
QUICv1 can also operate over this version of QUIC.</t>
      <t>All QUIC extensions defined to work with version 1 also work with version 2.</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>QUIC version 2 introduces no changes to the security or privacy properties of
QUIC version 1.</t>
      <t>The mandatory version negotiation mechanism guards against downgrade attacks,
but downgrades have no security implications, as the version properties are
identical.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document requests that IANA add the following entry to the QUIC version
registry:</t>
      <t>Value: 0x709a50c4</t>
      <t>Status: provisional</t>
      <t>Specification: This Document</t>
      <t>Change Controller: IETF</t>
      <t>Contact: QUIC WG</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <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="QUIC-VN">
          <front>
            <title>Compatible Version Negotiation for QUIC</title>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Eric Rescorla">
              <organization>Mozilla</organization>
            </author>
            <date day="25" month="October" year="2021"/>
            <abstract>
              <t>   QUIC does not provide a complete version negotiation mechanism but
   instead only provides a way for the server to indicate that the
   version the client offered is unacceptable.  This document describes
   a version negotiation mechanism that allows a client and server to
   select a mutually supported version.  Optionally, if the original and
   negotiated version share a compatible first flight format, the
   negotiation can take place without incurring an extra round trip.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-version-negotiation-05"/>
        </reference>
        <reference anchor="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8999">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <reference anchor="I-D.duke-quic-version-aliasing">
          <front>
            <title>QUIC Version Aliasing</title>
            <author fullname="Martin Duke">
              <organization>F5 Networks, Inc.</organization>
            </author>
            <date day="25" month="October" year="2021"/>
            <abstract>
              <t>   The QUIC transport protocol preserves its future extensibility partly
   by specifying its version number.  There will be a relatively small
   number of published version numbers for the foreseeable future.  This
   document provides a method for clients and servers to negotiate the
   use of other version numbers in subsequent connections and encrypts
   Initial Packets using secret keys instead of standard ones.  If a
   sizeable subset of QUIC connections use this mechanism, this should
   prevent middlebox ossification around the current set of published
   version numbers and the contents of QUIC Initial packets, as well as
   improving the protocol's privacy properties.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-duke-quic-version-aliasing-07"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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="RFC7838">
          <front>
            <title>HTTP Alternative Services</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P. McManus" initials="P." surname="McManus">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." surname="Reschke">
              <organization/>
            </author>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7838"/>
          <seriesInfo name="DOI" value="10.17487/RFC7838"/>
        </reference>
        <reference anchor="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl">
              <organization/>
            </author>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Stephan" initials="E." surname="Stephan">
              <organization/>
            </author>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
      </references>
    </references>
    <section anchor="test-vectors" numbered="true" toc="default">
      <name>Sample Packet Protection</name>
      <t>This section shows examples of packet protection so that implementations can be
verified incrementally. Samples of Initial packets from both client and server
plus a Retry packet are defined. These packets use an 8-byte client-chosen
Destination Connection ID of 0x8394c8f03e515708. Some intermediate values are
included. All values are shown in hexadecimal.</t>
      <section anchor="keys" numbered="true" toc="default">
        <name>Keys</name>
        <t>The labels generated during the execution of the HKDF-Expand-Label function
(that is, HkdfLabel.label) and part of the value given to the HKDF-Expand
function in order to produce its output are:</t>
        <t>client in:  00200f746c73313320636c69656e7420696e00</t>
        <t>server in:  00200f746c7331332073657276657220696e00</t>
        <t>quicv2 key:  001010746c73313320717569637632206b657900</t>
        <t>quicv2 iv:  000c0f746c7331332071756963763220697600</t>
        <t>quicv2 hp:  00100f746c7331332071756963763220687000</t>
        <t>The initial secret is common:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
initial_secret = HKDF-Extract(initial_salt, cid)
    = ddfcb7b82a430b7845210ad64b406977
      ed51b269a14bc69aa9ea9b366fa3b06b
]]></artwork>
        <t>The secrets for protecting client packets are:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
client_initial_secret
    = HKDF-Expand-Label(initial_secret, "client in", "", 32)
    = 9fe72e1452e91f551b770005054034e4
      7575d4a0fb4c27b7c6cb303a338423ae

key = HKDF-Expand-Label(client_initial_secret, "quicv2 key", "", 16)
    = 95df2be2e8d549c82e996fc9339f4563

iv  = HKDF-Expand-Label(client_initial_secret, "quicv2 iv", "", 12)
    = ea5e3c95f933db14b7020ad8

hp  = HKDF-Expand-Label(client_initial_secret, "quicv2 hp", "", 16)
    = 091efb735702447d07908f6501845794
]]></artwork>
        <t>The secrets for protecting server packets are:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
server_initial_secret
    = HKDF-Expand-Label(initial_secret, "server in", "", 32)
    = 3c9bf6a9c1c8c71819876967bd8b979e
      fd98ec665edf27f22c06e9845ba0ae2f

key = HKDF-Expand-Label(server_initial_secret, "quicv2 key", "", 16)
    = 15d5b4d9a2b8916aa39b1bfe574d2aad

iv  = HKDF-Expand-Label(server_initial_secret, "quicv2 iv", "", 12)
    = a85e7ac31cd275cbb095c626

hp  = HKDF-Expand-Label(server_initial_secret, "quicv2 hp", "", 16)
    = b13861cfadbb9d11ff942dd80c8fc33b
]]></artwork>
      </section>
      <section anchor="sample-client-initial" numbered="true" toc="default">
        <name>Client Initial</name>
        <t>The client sends an Initial packet.  The unprotected payload of this packet
contains the following CRYPTO frame, plus enough PADDING frames to make a
1162-byte payload:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
060040f1010000ed0303ebf8fa56f129 39b9584a3896472ec40bb863cfd3e868
04fe3a47f06a2b69484c000004130113 02010000c000000010000e00000b6578
616d706c652e636f6dff01000100000a 00080006001d00170018001000070005
04616c706e0005000501000000000033 00260024001d00209370b2c9caa47fba
baf4559fedba753de171fa71f50f1ce1 5d43e994ec74d748002b000302030400
0d0010000e0403050306030203080408 050806002d00020101001c0002400100
3900320408ffffffffffffffff050480 00ffff07048000ffff08011001048000
75300901100f088394c8f03e51570806 048000ffff
]]></artwork>
        <t>The unprotected header indicates a length of 1182 bytes: the 4-byte packet
number, 1162 bytes of frames, and the 16-byte authentication tag.  The header
includes the connection ID and a packet number of 2:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
d3709a50c4088394c8f03e5157080000449e00000002
]]></artwork>
        <t>Protecting the payload produces output that is sampled for header protection.
Because the header uses a 4-byte packet number encoding, the first 16 bytes of
the protected payload is sampled and then applied to the header as follows:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
sample = 23b8e610589c83c92d0e97eb7a6e5003

mask = AES-ECB(hp, sample)[0..4]
     = 8e4391d84a

header[0] ^= mask[0] & 0x0f
     = dd
header[18..21] ^= mask[1..4]
     = 4391d848
header = dd709a50c4088394c8f03e5157080000449e4391d848
]]></artwork>
        <t>The resulting protected packet is:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
dd709a50c4088394c8f03e5157080000 449e4391d84823b8e610589c83c92d0e
97eb7a6e5003f57764c5c7f0095ba54b 90818f1bfeecc1c97c54fc731edbd2a2
44e3b1e639a9bc75ed545b98649343b2 53615ec6b3e4df0fd2e7fe9d691a09e6
a144b436d8a2c088a404262340dfd995 ec3865694e3026ecd8c6d2561a5a3667
2a1005018168c0f081c10e2bf14d550c 977e28bb9a759c57d0f7ffb1cdfb40bd
774dec589657542047dffefa56fc8089 a4d1ef379c81ba3df71a05ddc7928340
775910feb3ce4cbcfd8d253edd05f161 458f9dc44bea017c3117cca7065a315d
eda9464e672ec80c3f79ac993437b441 ef74227ecc4dc9d597f66ab0ab8d214b
55840c70349d7616cbe38e5e1d052d07 f1fedb3dd3c4d8ce295724945e67ed2e
efcd9fb52472387f318e3d9d233be7df c79d6bf6080dcbbb41feb180d7858849
7c3e439d38c334748d2b56fd19ab364d 057a9bd5a699ae145d7fdbc8f5777518
1b0a97c3bdedc91a555d6c9b8634e106 d8c9ca45a9d5450a7679edc545da9102
5bc93a7cf9a023a066ffadb9717ffaf3 414c3b646b5738b3cc4116502d18d79d
8227436306d9b2b3afc6c785ce3c817f eb703a42b9c83b59f0dcef1245d0b3e4
0299821ec19549ce489714fe2611e72c d882f4f70dce7d3671296fc045af5c9f
630d7b49a3eb821bbca60f1984dce664 91713bfe06001a56f51bb3abe92f7960
547c4d0a70f4a962b3f05dc25a34bbe8 30a7ea4736d3b0161723500d82beda9b
e3327af2aa413821ff678b2a876ec4b0 0bb605ffcc3917ffdc279f187daa2fce
8cde121980bba8ec8f44ca562b0f1319 14c901cfbd847408b778e6738c7bb5b1
b3f97d01b0a24dcca40e3bed29411b1b a8f60843c4a241021b23132b9500509b
9a3516d4a9dd41d3bacbcd426b451393 521828afedcf20fa46ac24f44a8e2973
30b16705d5d5f798eff9e9134a065979 87a1db4617caa2d93837730829d4d89e
16413be4d8a8a38a7e6226623b64a820 178ec3a66954e10710e043ae73dd3fb2
715a0525a46343fb7590e5eac7ee55fc 810e0d8b4b8f7be82cd5a214575a1b99
629d47a9b281b61348c8627cab38e2a6 4db6626e97bb8f77bdcb0fee476aedd7
ba8f5441acaab00f4432edab3791047d 9091b2a753f035648431f6d12f7d6a68
1e64c861f4ac911a0f7d6ec0491a78c9 f192f96b3a5e7560a3f056bc1ca85983
67ad6acb6f2e034c7f37beeb9ed470c4 304af0107f0eb919be36a86f68f37fa6
1dae7aff14decd67ec3157a11488a14f ed0142828348f5f608b0fe03e1f3c0af
3acca0ce36852ed42e220ae9abf8f890 6f00f1b86bff8504c8f16c784fd52d25
e013ff4fda903e9e1eb453c1464b1196 6db9b28e8f26a3fc419e6a60a48d4c72
14ee9c6c6a12b68a32cac8f61580c64f 29cb6922408783c6d12e725b014fe485
cd17e484c5952bf99bc94941d4b1919d 04317b8aa1bd3754ecbaa10ec227de85
40695bf2fb8ee56f6dc526ef366625b9 1aa4970b6ffa5c8284b9b5ab852b905f
9d83f5669c0535bc377bcc05ad5e48e2 81ec0e1917ca3c6a471f8da0894bc82a
c2a8965405d6eef3b5e293a88fda203f 09bdc72757b107ab14880eaa3ef7045b
580f4821ce6dd325b5a90655d8c5b55f 76fb846279a9b518c5e9b9a21165c509
3ed49baaacadf1f21873266c767f6769
]]></artwork>
      </section>
      <section anchor="server-initial" numbered="true" toc="default">
        <name>Server Initial</name>
        <t>The server sends the following payload in response, including an ACK frame, a
CRYPTO frame, and no PADDING frames:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
02000000000600405a020000560303ee fce7f7b37ba1d1632e96677825ddf739
88cfc79825df566dc5430b9a045a1200 130100002e00330024001d00209d3c94
0d89690b84d08a60993c144eca684d10 81287c834d5311bcf32bb9da1a002b00
020304
]]></artwork>
        <t>The header from the server includes a new connection ID and a 2-byte packet
number encoding for a packet number of 1:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
d1709a50c40008f067a5502a4262b50040750001
]]></artwork>
        <t>As a result, after protection, the header protection sample is taken starting
from the third protected byte:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
sample = ebb7972fdce59d50e7e49ff2a7e8de76
mask   = 41103f438e
header = d0709a50c40008f067a5502a4262b5004075103e
]]></artwork>
        <t>The final protected packet is then:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
d0709a50c40008f067a5502a4262b500 4075103e63b4ebb7972fdce59d50e7e4
9ff2a7e8de76b0cd8c10100a1f13d549 dd6fe801588fb14d279bef8d7c53ef62
66a9a7a1a5f2fa026c236a5bf8df5aa0 f9d74773aeccfffe910b0f76814b5e33
f7b7f8ec278d23fd8c7a9e66856b8bbe 72558135bca27c54d63fcc902253461c
fc089d4e6b9b19
]]></artwork>
      </section>
      <section anchor="retry" numbered="true" toc="default">
        <name>Retry</name>
        <t>This shows a Retry packet that might be sent in response to the Initial packet
in <xref target="sample-client-initial" format="default"/>. The integrity check includes the client-chosen
connection ID value of 0x8394c8f03e515708, but that value is not
included in the final Retry packet:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
cf709a50c40008f067a5502a4262b574 6f6b656e1dc71130cd1ed39d6efcee5c
85806501
]]></artwork>
      </section>
      <section anchor="chacha20-poly1305-short-header-packet" numbered="true" toc="default">
        <name>ChaCha20-Poly1305 Short Header Packet</name>
        <t>This example shows some of the steps required to protect a packet with
a short header.  This example uses AEAD_CHACHA20_POLY1305.</t>
        <t>In this example, TLS produces an application write secret from which a server
uses HKDF-Expand-Label to produce four values: a key, an IV, a header
protection key, and the secret that will be used after keys are updated (this
last value is not used further in this example).</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
secret
    = 9ac312a7f877468ebe69422748ad00a1
      5443f18203a07d6060f688f30f21632b

key = HKDF-Expand-Label(secret, "quicv2 key", "", 32)
    = 3bfcddd72bcf02541d7fa0dd1f5f9eee
      a817e09a6963a0e6c7df0f9a1bab90f2

iv  = HKDF-Expand-Label(secret, "quicv2 iv", "", 12)
    = a6b5bc6ab7dafce30ffff5dd

hp  = HKDF-Expand-Label(secret, "quicv2 hp", "", 32)
    = d659760d2ba434a226fd37b35c69e2da
      8211d10c4f12538787d65645d5d1b8e2

ku  = HKDF-Expand-Label(secret, "quicv2 ku", "", 32)
    = c69374c49e3d2a9466fa689e49d476db
      5d0dfbc87d32ceeaa6343fd0ae4c7d88
]]></artwork>
        <t>The following shows the steps involved in protecting a minimal packet with an
empty Destination Connection ID. This packet contains a single PING frame (that
is, a payload of just 0x01) and has a packet number of 654360564. In this
example, using a packet number of length 3 (that is, 49140 is encoded) avoids
having to pad the payload of the packet; PADDING frames would be needed if the
packet number is encoded on fewer bytes.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
pn                 = 654360564 (decimal)
nonce              = a6b5bc6ab7dafce328ff4a29
unprotected header = 4200bff4
payload plaintext  = 01
payload ciphertext = 0ae7b6b932bc27d786f4bc2bb20f2162ba
]]></artwork>
        <t>The resulting ciphertext is the minimum size possible. One byte is skipped to
produce the sample for header protection.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
sample = e7b6b932bc27d786f4bc2bb20f2162ba
mask   = 97580e32bf
header = 5558b1c6
]]></artwork>
        <t>The protected packet is the smallest possible packet size of 21 bytes.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
packet = 5558b1c60ae7b6b932bc27d786f4bc2bb20f2162ba
]]></artwork>
      </section>
    </section>
    <section anchor="changelog" numbered="true" toc="default">
      <name>Changelog</name>
      <ul empty="true">
        <li>
          <t><strong>RFC Editor's Note:</strong>  Please remove this section prior to
publication of a final version of this document.</t>
        </li>
      </ul>
      <section anchor="since-draft-ietf-quic-v2-00" numbered="true" toc="default">
        <name>since draft-ietf-quic-v2-00</name>
        <ul spacing="normal">
          <li>Expanded requirements for compatible version negotiation</li>
          <li>Added test vectors</li>
          <li>Greased the packet type codepoints</li>
          <li>Random version number</li>
          <li>Clarified requirement to use QUIC-VN</li>
          <li>Banned use of resumption tokens across versions</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-v2-02" numbered="true" toc="default">
        <name>since draft-duke-quic-v2-02</name>
        <ul spacing="normal">
          <li>Converted to adopted draft</li>
          <li>Deleted references to QUIC improvements</li>
          <li>Clarified status of QUIC extensions</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-v2-01" numbered="true" toc="default">
        <name>since draft-duke-quic-v2-01</name>
        <ul spacing="normal">
          <li>Made the final version number TBD.</li>
          <li>Added ALPN considerations</li>
        </ul>
      </section>
      <section anchor="since-draft-duke-quic-v2-00" numbered="true" toc="default">
        <name>since draft-duke-quic-v2-00</name>
        <ul spacing="normal">
          <li>Added provisional versions for interop</li>
          <li>Change the v1 Retry Tag secret</li>
          <li>Change labels to create full key separation</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAMlL62EAA518+3MUSZLm7/FXxKrNbqFNKvL90FnvrhroBhsaOGB6bWxs
ti2eUi5VlXWZWRI6jPnb7/OIyEeVCmhbugWlzMgID39+7h5ZFxcXbGiGtbnk
/+evL5/y303XN+2WJ0xI2Zlbf/k2YbpVW7HBMN0JO1w0ZrAX/3ffqIvb5CKK
mRKDuW67+0veD5o1u+6SD92+H5IoqiNM1hlxyc8+dGLb79puOGN3bffxumv3
O1ymJc7YrdnuzSXj/PAy58P9Duue/SeeaLbX/Fe6Tdc3olnjOlHxH0TPqu2u
6bro1A2u3wzDrr988oSG0aXm1qzGYU/owhPZtXe9eUITPKEHr5vhZi/DlHfX
T8L+6NYa++uHxax+iJsrDHvykDOrm2GzPmOsH8RW/yHW7RYbuTc92zWX/O9D
q855D250xvb4dL/xH8DqjdjtsNd/MCb2w03bEVsu8MN5s+0v+W8r/mz/0bgL
Xiq/iW5otvNV0HXJf23b67Xhr149ddeMZ9jGDV3drDQG/8c1XVypdsPYtu02
YgCbaDVi/iV/98vTOoqi8PvFh1fvx2sxY83Wzk+wi4sLLmQ/dEINjH24aXra
yH5jtgPvd0Y1tjG9V7LbUcnO+d1No244xjYaAxsl1nxoD0fFzHxSZjdwrAZ2
bQw0q7ltMFKbAcT3K/5y6Plu3+3a3tBcmAEbkmLgt6Jr2n3P277H+lBSTAhF
U0Pb9Rwy4eaT6VSDx4YbM624hSoPjRvMbQf+krLSKlys+5b3prvFVgT+Z4PZ
7Eg3HHE0x6bZNpv9hqsbsb3GKAhFbO+53Q/7bl6htW6PK8ZetwMtDlrPJrac
0SbElgcGr52Mwwq4s+ta7JQ4RY81W00bo6UGRpsHEb1RLTbn1E50ur8gqXw8
YOuKf8BATAUtbNeThDS/MaDzrlmvWWeUgWy5mBmz30jT8RZrEC0gMQGD2g1/
efX6Cpt51vRq3487dMQS62g7ZqvafSeusQLEcwP9Nhi0deQ6ul4+//ALI2Uk
G183/cD//o9HB7b9GFo9PvJrM7zYS94ZcKKBNO+9JjHsGzqx9WxwBnnJMM9o
td7CSd2fHNr445XX4E2j9dow9gN/uR26Vu+VUxnmSPz8mf758gXk98QL05Fu
mU+D2bo979pmO8CAm61a7zXt40CrHPOYE1qr1H5H9rCQ1nCD6a5vuG3scIMR
g4FWg40GE9xz+I5ryEZocP5Rbwz7/PnfYYlVXddfvjyGcmLgp53pGjI46EZY
FXoEcXb469zp+6FlwUy2Pdz/HurDHK0CfN+I/267ZrgftRT2Jiys55yo7byF
ke5Ac2GyWIs00zNOtp9oUy1zBnc/SmtSe78psb4T9z2XhlgUfYr8nxgi+GXf
0RqbluidyXy5bdxCO2ixmwBUQKG6+90AfbqDUPlHgxnBHCis9jop2H7b0Bxi
vb7nH7ft3Zbj8zA6HVxu73grnTl3zmtAcWAHg6OZNAn7670mm96wsPrktJyU
veeAY+RP1w35uhcG8zpev3cThwsb0/fQfjirq2so6DlbMmwj7vlpjsW0Mb8v
749oYk8I9963J7Y1W7fJz5//xfnp31//9PLi2WoRivx0FwvPBjWG9d/C72Lr
d0Qguaym3/SM5Gm22qsz8WV8zMzmOhKIu/veeG9yBpa0mx2ml2tzNg5hS3e6
MQhnmiu4jn6/IyjAe8gP0Rmq4MUGb9kEeR+vhHvMO5/xopO93a/X/NpsTSfW
0Fto+ihCaDPEh8WE1g0RgElhZVsNj9jsMM5pPfxkNwQ5k9y3xln9ip89fbid
g+hg1g0cvvO+eJYtpoZ7g67dc7kf+Nrckq272NUBRnSNm78nYd9ABzd7qBOt
TXKYDBc8YrqxFrvtEbp9dFzfr4IzmqIF2ePG4D5xaINdXpOglhGP9qRMt30Y
8tipTc2a4MXabqFaPp65wAQyjfhIqxHNzXa3d1bC3P6cUbZLjbX7bdgurhsK
acp4kZFq92YnOuHZfQXRj3rn/WTQkf6QM1tjtLdXBF/jEMapfWAAxTcIkwmy
OSiDhhO47uBEIfoBVkTGA0dKxkJo6NBYoEyih17CUty2yStBeyRg7bmTq5Ob
u0pqv3ZhWJ+zOT63pHeQeO89yKFQMAx6RUz+mSy8b663CB0DNARU4CG2tKZT
G1wFbA6eCQzpZ8lClR8+yk7KeEWx7mm7vSVfDuYSdDNOMojc4PLZb399/+Hs
3P/LX79xn989x8rvnj+jz+9fXL16NX0YR7x/8eavr3CfhU/zk0/f/Pbb89fP
/MO/Xf3tzAemszdvP7x88/rq1RlBpuEAPpK7By+lAUsG0+06Q25fkL/vVddI
/IJnEA15Esc195GRPn754rcXsJjzLwdpTvzAmGa/5zY8a9gDzxePoCnIU/Ts
gJ4RLZyHT4Se6TfaLRy1h9EJXXFOjOa3LcUkqBwL8JHI/2Gi9pfGrLUX0EiE
pUsk7wU+6Eldo09lVIs8Upmf4xXdf+Hxw1sfPz4gr4K8j4Mr3DmUPcQYyr3m
RSKJKM2ji3cfPpwczo6Hx9GKv8CG+xvx0fy5FWKs8M4M3T37cwRFfn9Pnd+B
be9uRmfV040fJvDwHv7YM49QAM3qoKjHDNMohyOc9N77KMDzVTIiIS/CCdsP
LfKef/7znyzEqz/cxD+B96KMSpVEqchrmZVxlYlYF4kSeRllUWFEKUxqcp26
px2VL/7y7Bf+SkizDia4dp89mZM2BQJmsgNXgp8jct0GHgXi2XIb8eE2Pl/2
/tYvDkf8dCZhZ2dfHp+PMPNoUjZOesCb7M9O6mRKqNpcE7hkH8T1Ia0H01Z/
dlqyJkzD9jvtwvCJ2Yo/u/MxyJGfYK4IQFOfEbvdb3C19Pu5dyR+QHN7cB+/
Hty+2dFtNt7Gr57kxZCP+8MV9hhCkdwY73Su940WW+UTwK25Y1MchFo83G29
Kv7Ubj3eAQIa3ezKK+KRnDjkNMcEIn1LYMLr5Zj0nniGP/qGOB8H/zZbEEiE
V+c/MQ7rSbMkh/UoW1VlWWubWFvGphLSirJKsrqqY1MWqYSjTWycqiir0izV
aVapqIhMwohUMkMpqrzSqpS4C3OTtiqLuLQ2EzLJUy2Z3wsNjbNY1rVK0lpG
qSmrXBciMbX1FspmJ/x6EUURN3sAaI9f+lPAbNtSho5EQo/eBtGLcMIcRlb8
+Yy1F6CHzRNtmuubwWUkzXZvJuRM7J+jEemM+AQ8+v/MFP0bwsPMxRfl0hMq
lgB6UAlI7deiO+cvPnx4O96ElECqc7hX6+Hi/a0KwbSs0sr5HSDSXrWU1ri9
BkoA3Xofsydcgeht/PbVvuswOTAknsUGoM/9DYI5UKTZHrCsD9RMGdmCGwBb
66HZzXCmB1BCeu5hLGEp4XdLmjYjJ39JuPQ6JASi71tFyUzIHJcUHGAkcPfD
07fcAnVLuNkV/4Xyok+CIAFZMQY011Tf0Xh6aAgqHojm7CZ1YCawkgUkNA45
AhOCCjj8Tvjk2k99nAI5o5P3jktPUtoWcym5JQzq4XcQJBVwPHAfl3PMHIs/
jBHWdnOPgIcfAu6H7HZ4aPJKoc7FAlrduFVP4B/koj5gQe9vl0j9FBSfi2EL
3TdmNIzRU/0rrWRd0PWVJnEK7jrhLqzsw8ip80nBKA0lZV88fZRA+OSUCzan
haPqPsjYvmbIXLYzJf2xGnwb47sc4rZtAHd94krFz12APPOTS6f0biERxp5+
e/pxL5OUY2csSYCivj4lNuZQzpCuaVwernEtJMuu5BtCDXHVKzLw+gZZxKjP
o1M786B/KixoPt1woXGhPNjsSxsKZa6g0kNlKR/zUccjIJc5OQ3dh2LuZEHL
gifz9sGRa0ER+oMpCGuRCR8UGEIKHB4bcyAPSUN2vlTqxmtFv5c9+EV3Rlzp
FOKgOunXHtqPJtAWtoecyFVL9YlqC+Zvhn75KCnILTJVLUbTGeZt6kY7Fxy0
eHazxHyNNNUX8jyGbCzx0A81+mGZYRIp6QPVBH0rh4IJLgyhhEb9Cl/JD9Ui
TyuSo0N/h5CBWNMtqj/0MH+oEFy4cUHcrgY5ccplaIsyXGfW5tZVQr5C3UNO
zTo1LMmdAsZk9S+fzWCcbplPHsOcHySi7CB1KFfpCHygx3x2bwdFUa/ctun6
WV0CAWyhSYEyeHoS6ZLPLiac2vKK85Dx+F2OrsfVu8iMiO+kUA9zwLF6PQtk
wiOCSln+XyiMRg7saohtgM8r/rMPSAuTpfoJuSBfklGm79lJETnbHyaDc1bt
wQ/VfOhxWO3OVcvbkegpTzx62MdrX3gZhyxImtT5gaNg7M3W44rR7qneH+im
wsNoMae4NM7iSPf8ZsTpUz7hmNuLAM0XUpu8DmEv0UHHCKkdUT1NOnZtXG61
h4asnVnvFVFPZbf7aSvUwApbmUoQD3cCfvxMAeyoMuI2Nef2YHV8VBf4ugpR
qW8GHm46540On6VK8IEzXgbYG3FrAN8nvfDl3+BzsHeaANkOsuTR+d61+7UO
VX8M2ng47uqVoJ4dO65Za1b8KAIBfwSK/ph6oBSqH2r0AgV71w+OP71pwbsp
n/C1DIqucE7GV3GX7mEMKePKx+UUFoo+50uFdSyl0OuK08euzAlbsN+fv3v/
8s3rP14///XNh5dXVH774/m7d2/erbzTOA56TuLHxZ9vWQABPu++WVA5J9bR
fEICOteyRvv1e12FBoqHaWK3g+Yew4gjclwIOdpoux+W1X91kLK58iA1b96Z
fr/Z+V4f/d4b38aEPkwdp7HcN0roIKA96B745Dq0WJwz36xCj6g/AhJHq4U+
iK/uxospmWtRNb4TI8bq73z/nKzwtlFeeQQ2N3IwOP5F+Jv8HmVky12Q1R3R
47P+ARgQTDJzmybcbvp+PzXd+ANQFJAhPbz22JEyKipyUlblZebaAcT3m1G7
zyfhORFTxuJwwLfh8rmjyy/l0rGDjbCN2PWj9E4gDSjF1Nie/Gu7NU5L3ixr
999J/KfG2qKENrYgXJpGTsN1FpcdgRV/Zkh6ve99IE8lbvvPYM9Bhdfld6NP
CWhxwlZODyaE87CNetRSJGL2a+Hn7OiUyJQPXDRbOkIhKBS726QGqu0I9M+B
ZLnz4DIZe9HeUef6HF4YIll2O3tqmyCiAvGYO+wMn5DY9WPr0wOhEZRuD3Kv
sffq01tXrAgEN8d9U++Xud6bIHF2aPoAJO0tiXa0SddbMP3gIZ4/QOK6koHM
o5aaO58x2eLCSL1PXFSBnGfwyC1kTZ0RfUtNm3uuTOdkuMxvxhy8Gc5dZAoH
MgJI7veuJyj4iW7jci0qgjhBOfW92rkGVSiIfP5BLH//Eg7sHB1PmfV42y5r
o8elC8Buz6qR0WLnJ6aup7il81cB/IVVhymzGjNy4u/VfJO/EveIGm/H4ynL
/PbR1au3rx9TfdFVptIo/kKlW1hAgAbzWRas2O48LKCaFRs9KsUTOsmzvOnr
Vw8P6FytQxFmOucRqg9+fne+5bDU4Od+eCNxgkBusHdF0u8VD8P5kyX3J+fV
j5O0VKaHIStnjDuqQxnXjD3KtnxE39B5IHda5pt9X369p1ND/Ktd03NG7c/p
skdjROZEV7OZBe0ypKVxLiiForLp6JfjDx0lesCbw+NkVIuAoYYqi3sAEf6w
gwan6HPkB6EaYey66XHzkrHfxXpvLhfNMoTMQQz7/tLrfu9AAy4uO32XPqA9
C+TAg3jTANEQ2Xptukt/monRFaGGcLbyP3/1Z4wo7DlNcJXEsRv3dg4Vn3+g
w4YX4ZzaaJxjaaW/ae/6sQ7pgsjDJlDfhsNhY/sy+DzSfOlCgjcQ+Ahf03En
CwJFbs7jHMXZvStkBVhIoMA7LLZb74/rMc4DBTNxht4ftf+2vLqQ98OIMi+U
Q8XsmaES8RRk5+Tbdfs+VWmdqcpGqcnjvIwqkEzh1LnujdHOGd+STINm+doA
KCArnm84HrqYcQM+Uga7cdpHVbW/UKtr2YEbMwuNWNKNcNd8gqaP5Ue6QP27
i+efdmDLhWvjTece2CMvCqpuf9TW3Vy5uR+H0zzz4RNHIr9ubn1h52hiNk5J
lLcd9eh8Qu3q4C4r3A+7vWM+lHusdUFheRQlUWTLrFBlmsZpmkRFWqiiLvLC
lBl+qwsTRWwsh3zlmTIt8jIpC/p7fmZujbmHYvx38FBc5hialkVKD0k8XC8e
a27dU5E6WurwqbosFs/c7MJK33ymKunoqhPleKAotJlgTYjvG5jyUf82dKFG
prvDrI+W3d1zrhr92B2n/YlrbZUsZZWILI1kWWV5EkdCF5nMiOLSDePc6DyW
SVGLOJNguRC1EbVMi8KKVIIhvsXkE35av3fdg9GaoXBBkIvTb4Fuf+OPQ/ID
cQ8U8tHhsHN+NikIHcXAT5qMO6utKRMTY0Omjm0O+ktiZh7lWZRmJgs7K/My
15mIrMxUUspSFUqmUSrStMqSVBgWOnEPaTlJ+flRm5VoiouJplzbRJrEVDrP
alWBtLqwqk7T2mZ5kTLW3J7e+HcWcz1bt9a0fyNyk6o6t5hdS8ithC0IXTF2
s/sfreEav4f7ierYWFmm8GNJlpU6gllUtsijGIpU1tl31SLY6kO18Df+x2ox
+YAHagGWSFuIWsWqUmVcxXVVwuBKqStZl7UJamF1XRkFL2EgsdImiYoKU2NX
UkTCJPbranGS8m+rRZzrXGa6Foms6rgQIq1lLK3Jy0wnQuivq8V3FjuhFqLK
TSlUGiudlLmSMqpzVSTF19XiO2ucUAsZp1URKyu0lLWOY2vrLNG6ihD3VJrK
sSH9w3jgdIzUn3/oXfi+CBE1rPnloJgTeifbo/i+4q7guN8G9TIUlu7XrdDT
Qe5QbTpoYcxo6+m7v7398Maflj/nDhCYrTvO/Pbq2bOXr3/1t3rfpf5I3ZM4
LhIPAcJSQXsjePosshRG8MfoCB7FSFtZkRc2TmoOAdd5lYm0qosMbkplkZRV
kSqrU1MVFYsya1KRlTYqoBVFnVWZckeMsxjZQpxyGLObXI1Hj91K7iOFp4oV
caHLCAESDhCB0hbaWjfKjYwEBawKPyA11viBc4yrcNc5StCAORTmMM5v0k8c
TX/SlKIrnk4yP0MS1WkZyUTVShDlUjAp4NZyeGItRZmn2sRlbAV+cjBHmZjD
9abwgZlRUPUyw/qJpLkxWQoORizS09bgtkFBCoL97QpXKo5LFe0hwUDHE4yO
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
OIBGb1ZBA4aT35rD/j944NYkwlEAAA==

-->

</rfc>
