<?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.27 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wagner-tls-keysharepqc-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="keyshare">New Key Share Extension for Classic McEliece Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-wagner-tls-keysharepqc-00"/>
    <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
      <organization>UNC Charlotte</organization>
      <address>
        <postal>
          <street>9201 University City Blvd</street>
          <city>Charlotte, NC</city>
          <code>28223</code>
          <country>USA</country>
        </postal>
        <email>jwagne31@charlotte.edu</email>
      </address>
    </author>
    <author initials="Y." surname="Wang" fullname="Yongge Wang">
      <organization>UNC Charlotte</organization>
      <address>
        <postal>
          <street>9201 University City Blvd</street>
          <city>Charlotte, NC</city>
          <code>28223</code>
          <country>USA</country>
        </postal>
        <email>yongge.wang@charlotte.edu</email>
      </address>
    </author>
    <date year="2025" month="April" day="04"/>
    <area/>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>key share</keyword>
    <keyword>Classic McEliece</keyword>
    <abstract>
      <?line 243?>

<t><xref target="RFC8446"/> is modified to where another key share extension is introduced to accommodate both public keys and ciphertexts in ClientHello and ServerHello messages for post-quantum algorithms that have large public keys, including the code-based cryptographic schemes the Classic McEliece family and the RLCE algorithm group.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://jwagrunner.github.io/internet-draft/draft-wagner-tls-keysharepqc.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wagner-tls-keysharepqc/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security  mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/jwagrunner/internet-draft"/>.</t>
    </note>
  </front>
  <middle>
    <?line 247?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large public key algorithms, including the code-based cryptographic algorithm family Classic McEliece (see <xref target="RJM78"/>, <xref target="DJB25"/>, and <xref target="OQS24"/> and the Random Linear Code-based Encryption (RLCE) algorithm group (see <xref target="RLCE17"/>), cannot be easily implemented in TLS 1.3 due to the current key share limitations of 65535 bytes. It is important to consider such uses of algorithms given that Classic McEliece is a Round 4 algorithm submitted in the NIST standardization process (see <xref target="PQC25"/>). Therefore, this document proposes a new key share that has a higher limit and is utilized in ClientHello and ServerHello messages, which is a modification of <xref target="RFC8446"/>. For example, if a large post-quantum algorithm is requested in a TLS 1.3 key exchange, this new key share extension will be constructed but the original key share extension will not be constructed. However, if a classical algorithm is requested for key exchange, a normal key share extension is constructed and this new key share extension will not be constructed. Thus enabling the use of large public key post-quantum algorithms to be used in TLS 1.3 key exchanges, and also presenting them as an alternative option to replace classical algorithms for future protection against the threat of attackers in possession of powerful quantum computers that will break classical encryption.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="new-key-share-extension">
      <name>New Key Share Extension</name>
      <t>Based on the key share extension from <xref target="RFC8446"/> is introduced a new key share extension in this document, "key_share_pqc". This is reflected in this document and is represented as KeyShareEntryPQC below, based off of the existing KeyShareEntry from <xref target="RFC8446"/>. However this is modified along with the existing KeyShareEntry structure to include case statements to test if the key exchange algorithm chosen in a TLS 1.3 connection belongs to either the Classic McEliece family or RLCE algorithm group, and if it is, then KeyShareEntryPQC is constructed and KeyShareEntry is not constructed. If the opposite is true, where the key exchange algorithm does not belong to either group, then KeyShareEntryPQC is not constructed but KeyShareEntry is constructed. Note that the "key_exchange" field is expanded in KeyShareEntryPQC to accomodate a large public key that is greater than 65535 bytes:</t>
      <artwork><![CDATA[

    struct {
       NamedGroup group;
       select (NameGroup.group) {
       case classicmceliece348864 | classicmceliece348864f | classicmceliece460896
       | classicmceliece460896f | classicmceliece6688128 | classicmceliece6688128f
       | classicmceliece6960119 | classicmceliece6960119f | classicmceliece8192128
       | classicmceliece8192128f
       | rlcel1 | rlcel3 | rlcel5 :
             break;
       default :
             opaque key_exchange<1..2^16-1>;
       }
    } KeyShareEntry;

    struct {
       NamedGroup group;
       select (NamedGroup.group) {
       case classicmceliece348864 | classicmceliece348864f | classicmceliece460896
       | classicmceliece460896f | classicmceliece6688128 | classicmceliece6688128f
       | classicmceliece6960119 | classicmceliece6960119f | classicmceliece8192128
       | classicmceliece8192128f
       | rlcel1 | rlcel3 | rlcel5 :
             opaque key_exchange<1..2^24-1>;
       default :
             break;
       }
    } KeyShareEntryPQC

]]></artwork>
      <t>This is then applied to the existing KeyShareClientHello structure, which originates from <xref target="RFC8446"/>, that now contains an additional field for KeyShareEntryPQC:</t>
      <artwork><![CDATA[

    struct {
       KeyShareEntry client_shares<0..2^16-1>;
       KeyShareEntryPQC client_shares<0..2^24-1>;
    } KeyShareClientHello;

]]></artwork>
      <t>Since the KeyShareClientHello needs to be expanded to accomodate for the KeyShareEntryPQC struct, the same applies to the existing Extension struct, originated as well from <xref target="RFC8446"/> but "extension_data" is now expanded:</t>
      <artwork><![CDATA[

    struct {
      ExtensionType extension_type;
      opaque extension_data<0..2^24-1>;
    } Extension;

]]></artwork>
      <t>Since there is a new key share extension to accomodate keys larger than the 65535 Byte limit (KeyShareEntryPQC), this is reflected in the existing ExtensionType structure from <xref target="RFC8446"/> where this is the new type that holds a value of 63, "key_share_pqc":</t>
      <artwork><![CDATA[

    enum {
            server_name(0),                             /* RFC 6066 */
            max_fragment_length(1),                     /* RFC 6066 */
            status_request(5),                          /* RFC 6066 */
            supported_groups(10),                       /* RFC 8422, 7919 */
            signature_algorithms(13),                   /* RFC 8446 */
            use_srtp(14),                               /* RFC 5764 */
            heartbeat(15),                              /* RFC 6520 */
            application_layer_protocol_negotiation(16), /* RFC 7301 */
            signed_certificate_timestamp(18),           /* RFC 6962 */
            client_certificate_type(19),                /* RFC 7250 */
            server_certificate_type(20),                /* RFC 7250 */
            padding(21),                                /* RFC 7685 */
            pre_shared_key(41),                         /* RFC 8446 */
            early_data(42),                             /* RFC 8446 */
            supported_versions(43),                     /* RFC 8446 */
            cookie(44),                                 /* RFC 8446 */
            psk_key_exchange_modes(45),                 /* RFC 8446 */
            certificate_authorities(47),                /* RFC 8446 */
            oid_filters(48),                            /* RFC 8446 */
            post_handshake_auth(49),                    /* RFC 8446 */
            signature_algorithms_cert(50),              /* RFC 8446 */
            key_share(51),                              /* RFC 8446 */
            key_share_pqc(63),
            (65535)
        } ExtensionType;

]]></artwork>
      <t>Since the "extension_data" field will be much larger for a KeyShareClientHello that contains a large public key that is greater than the previously defined 65535 byte limit, an example being a Classic McEliece public key, the server must be able to handle this circumstance when receiving the ClientHello message. One way is to compare the value for a packet that contains extensions including a large public key from the ClientHello message to a macro constant (for example,  "CLIENT_HELLO_MIN_EXT_LENGTH" as defined in this introduced TLS implementation in this paper, see <xref target="SRVR1650"/> and <xref target="SRVR1211"/>) and if this packet value is longer than this constant, the server will change the way it normally handles all of the extensions. This constant could be easily modified in the aformentioned TLS OpenSSL implementation. The process of how the server collects the extensions from a ClientHello message must also be modified, as the server must be able to process the new key share extension of Type 63 differently than the other extensions, should the server see this inside a ClientHello message. For example, see <xref target="EXT652"/>.</t>
      <t>The ServerHello message is modified as well where the KeyShareServerHello structure originates from <xref target="RFC8446"/>:</t>
      <artwork><![CDATA[

struct {
    KeyShareEntry server_share;
    KeyShareEntryPQC server_sharePQC;
} KeyShareServerHello;

]]></artwork>
      <t>This new "key_share_pqc" extension is therefore can be implemented in the full TLS handshake, where Figure 1 from <xref target="RFC8446"/> is modified to be the following:</t>
      <artwork><![CDATA[

       Client                                           Server

Key  ^ ClientHello
Exch | + key_share*
     | + key_share_pqc*
     | + signature_algorithms*
     | + psk_key_exchange_modes*
     v + pre_shared_key*       -------->
                                                  ServerHello  ^ Key
                                                 + key_share*  | Exch
                                             + key_share_pqc*  |
                                            + pre_shared_key*  v
                                        {EncryptedExtensions}  ^  Server
                                        {CertificateRequest*}  v  Params
                                               {Certificate*}  ^
                                         {CertificateVerify*}  | Auth
                                                   {Finished}  v
                               <--------  [Application Data*]
     ^ {Certificate*}
Auth | {CertificateVerify*}
     v {Finished}              -------->
       [Application Data]      <------->  [Application Data]

              +  Indicates noteworthy extensions sent in the
                 previously noted message.

              *  Indicates optional or situation-dependent
                 messages/extensions that are not always sent.

              {} Indicates messages protected using keys
                 derived from a [sender]_handshake_traffic_secret.

              [] Indicates messages protected using keys
                 derived from [sender]_application_traffic_secret_N.

Figure 1: Full TLS Handshake with "key_share_pqc" extension

]]></artwork>
    </section>
    <section anchor="namedgroup-addition-for-classic-mceliece-and-rlce">
      <name>NamedGroup Addition for Classic McEliece and RLCE</name>
      <t>The values for Classic McEliece and RLCE algorithms are added below in the NamedGroup struct that originates from <xref target="RFC8446"/>:</t>
      <artwork><![CDATA[

    enum {

              /* Elliptic Curve Groups (ECDHE) */
              secp256r1(0x0017), secp384r1(0x0018), secp521r1(0x0019),
              x25519(0x001D), x448(0x001E),

              /* Finite Field Groups (DHE) */
              ffdhe2048(0x0100), ffdhe3072(0x0101), ffdhe4096(0x0102),
              ffdhe6144(0x0103), ffdhe8192(0x0104),

              /* Reserved Code Points */
              ffdhe_private_use(0x01FC..0x01FF),
              ecdhe_private_use(0xFE00..0xFEFF),
              (0xFFFF)

              /* Classic McEliece family */
              classicmceliece348864(0x002A), classicmceliece348864f(0x002B), classicmceliece460896(0x002C),
              classicmceliece460896f(0x002D), classicmceliece6688128(0x002E), classicmceliece6688128f(0x002F),
              classicmceliece6960119(0x0030), classicmceliece6960119f(0x0031), classicmceliece8192128(0x0032),
              classicmceliece8192128f(0x0033)

              /* RLCE algorithm group */
              rlcel1(0x0034), rlcel3(0x0035), rlcel5(0x0036)
          } NamedGroup;

]]></artwork>
    </section>
    <section anchor="modification-to-pskkeyexchangemode-structure">
      <name>Modification to PskKeyExchangeMode structure</name>
      <t>There are two key establishments that are considered when examining the structure of PskKeyExchangeMode from <xref target="RFC8446"/>. Since there is no Diffie Hellman algorithm in use with a pre-shared key (PSK) when considering the use of a Classic McEliece algorithm for key exchange, then there must be another key exchange mode to utilize to taken into account this case. Therefore, this is reflected in the existing <xref target="RFC8446"/> PskKeyExchangeMode structure below where "psk_pqc_ke(2)" is added:</t>
      <artwork><![CDATA[

enum {
 psk_ke(0), psk_dhe_ke(1), psk_pqc_ke(2), (255)
} PskKeyExchangeMode;

]]></artwork>
      <t>When selecting a Classic McEliece algorithm and using an external PSK or a resumption PSK (using the cipher suites "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256" listed from <xref target="MOZ25"/> for TLS 1.3 "Modern Compatibility" configuration), "02" will then be listed for the "psk_key_exchange_modes" extension along with the new "key_share_pqc" extension in the ClientHello message. At the end of this ClientHello message is printed the "00 29" extension (pre-shared key extension), where the PSK identity should be printed and is mapped to the binder that should proceed it in this pre-shared key extension. The ServerHello message will also contain the new "key_share_pqc" extension, and will as well contain the pre-shared key extension, where it should contain "00 00" at the end which represents the server selecting the PSK identity of 0 (for example: the Selected Identity of 0 shown in the pre-shared key extension in a ServerHello message in this Wireshark example: <xref target="RASHOK20"/>). Overall, this is a new key exchange selecting a Classic McEliece algorithm using a PSK, whether its external or resumption, and this is can be demonstrated in the TLS Implementation below.</t>
      <t>For the situation where a Classic McEliece is used for key exchange and a PSK is not chosen, then the value of "02" is printed for the "psk_key_exchange_modes" extension. But when choosing a Kyber post-quantum algorithm or X25519 and PSK is not chosen, then a value of "01" will be printed in this same extension (see TLS Implementation below), just as it is shown for the "psk_key_exchange_modes" extension listing "PSK with DHE" here: <xref target="JD19"/>.</t>
      <t>As stated above, resumption PSK with a Classic McEliece algorithm chosen as a key exchange algorithm involves the use of the new "key_share_pqc" extension for both the ClientHello and ServerHello messages. Thus the Resumption and PSK Message Flow diagram, which originates from Figure 3 of <xref target="RFC8446"/>, is derived for this situation and has been tested with the TLS Implementation mentioned in this document:</t>
      <artwork><![CDATA[

      Client                                 Server

Initial Handshake
      ClientHello
         key_share_pqc         --------->
                                             ServerHello
                                               key_share_pqc
                                               EncryptedExtensions
                                             Certificate
                                             CertificateVerify
                              <---------     Finished
      Finished                ---------->
                              <---------     NewSessionTicket
                              <---------     NewSessionTicket


Subsequent Handshake
       ClientHello
          key_share_pqc
          pre_shared_key       --------->
                                               ServerHello
                                                  key_share_pqc
                                                  pre_shared_key
                                               EncryptedExtensions
                              <---------       Finished
       Finished               ---------->
                              <---------       NewSessionTicket


Figure 2: A Classic McEliece algorithm used with Resumption PSK

]]></artwork>
    </section>
    <section anchor="hello-retry-request-using-new-key-share-extension">
      <name>Hello Retry Request using New Key Share Extension</name>
      <t>In a Hello Retry Request scenario, the first ClientHello message will have two algorithms listed in its "supported_groups" extension, where the NID for the algorithm that is no longer recognized by the server as an acceptable algorithm (X448 for example as proven in the TLS implementation), will first be listed in this extension, followed by the NID for a Classic McEliece algorithm. In this same ClientHello message is where "02" will be listed in the "psk_key_exchange_modes" extension, and the original "key_share" extension (value 51) is also shown with its public key for the unacceptable algorithm.</t>
      <t>When the server responds with the HelloRetryRequest message, the random is the same special value for SHA-256 as indicated in Section 4.1.3 of <xref target="RFC8446"/>, and all this has the same exact fields ("legacy_version", "random", "legacy_session_id_echo", "cipher_suite", "legacy_compression_method", and "extensions") as in the ServerHello structure indicated in <xref target="RFC8446"/> (see section 4.1.3). The extensions field consists of the "supported_versions" extension, but also the new "key_share_pqc" extension where the server offers the client the Classic McEliece algorithm NID it shares with the client. There is no "cookie" extension present in this same HelloRetryRequest.</t>
      <t>When the client sends a second ClientHello in response to the HelloRetryRequest, this will be the same message as the firstClientHello with one exception: the original "key_share" extension is replaced with the new "key_share_pqc" extension which contains the large public key of a Classic McEliece algorithm. Then ServerHello message will then respond containing the new "key_share_pqc" extension and not the original "key_share" extension.</t>
      <t>Therefore, this Hello Retry Request scenario is reflected in Figure 3 below, which is a modification of Figure 2 in <xref target="RFC8446"/>, and this can be demonstrated in the TLS Implementation mentioned in this documentation:</t>
      <artwork><![CDATA[

        Client                                    Server

        ClientHello
          key_share             -------->
                                                  HelloRetryRequest
                                <--------           key_share_pqc
        ClientHello
          key_share_pqc         -------->
                                                  ServerHello
                                                    key_share_pqc
                                                  EncryptedExtensions
                                                  Certificate
                                                  CertificateVerify
                                <--------         Finished
         Finished               -------->
                                <--------         NewSessionTicket
                                <--------         NewSessionTicket

Figure 3: A Classic McEliece algorithm used in a Hello Retry Request scenario.

]]></artwork>
      <t>Note: When the client processes the HelloRetryRequest message, it must mark the new "key_share_pqc" extension as an unsolicited extension, which would be an additional exception to the rule noted in <xref target="RFC8446"/> regarding extension responses <bcp14>MUST NOT</bcp14> be sent if the corresponding extension requests were not sent by a remote endpoint (see section 4.2 in <xref target="RFC8446"/>.</t>
      <t>The following structure would remain intact from <xref target="RFC8446"/>, since support would already be provided for a Classic McEliece algorithm being in NamedGroup (see Section 4):</t>
      <artwork><![CDATA[

struct {
    NamedGroup selected_group;
} KeyShareHelloRetryRequest;

]]></artwork>
      <t>When a Hello Retry Request involves either a resumption PSK or an external PSK in use with a Classic McEliece algorithm, both the first and second ClientHello messages (the second one being sent after a HelloRetryRequest message) will contain the exact same content except the first ClientHello will have the original "key_share" extension and the second ClientHello will have the new "key_share_pqc" extension. Another exception includes different binders in both ClientHello messages' pre-shared key extensions. This pre-shared key extension appears as the last extension in both ClientHello messages as well in the ServerHello message. However, this pre-shared key extension is not present in the HelloRetryRequest message.</t>
    </section>
    <section anchor="tls-implementation">
      <name>TLS Implementation</name>
      <t>A TLS implementation exists that tests the use of a new key share extension for both the ClientHello and ServerHello messages that is implemented for OpenSSL, and also where the Classic McEliece algorithm family and the RLCE algorithm group can be chosen for key exchange when initiating TLS connections. It can be accessed here: <xref target="JWYW25"/>.</t>
    </section>
    <section anchor="summary-of-changes-from-rfc-8446">
      <name>Summary of Changes from RFC 8446</name>
      <t>A new structure is introduced of KeyShareEntryPQC along with modifications of existing structures including KeyShareEntry, NamedGroup, Extension, ExtensionType, KeyShareClientHello, and KeyShareServerHello. Adding a new ExtensionType of "key_share_pqc" allows for the addition of this new structure of KeyShareEntryPQC, which is based on the existing KeyShareEntry, but "key_exchange" has been expanded and select statements are added to both structures which depend on the NamedGroup.group being called in a TLS connection for key exchange. This new KeyShareEntryPQC will now also appear in existing structures of KeyShareClientHello and KeyShareServerHello. Thus the "extension_data" is expanded in the existing Extension structure.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The new "key_share_pqc" extension <bcp14>MUST NOT</bcp14> be used with 0-RTT, as this subjects the server to replay attacks of multiple large ClientHello messages (see <xref target="RFC8446"/> and an example of a replay attack of several ClientHello messages in <xref target="HN23"/>). If this extension were to be used with 0-RTT, the server may receive duplicated ClientHello messages where each of them contain a large public key of a Classic McEliece algorithm in each ClientHello's "key_share_pqc" extension, which will not only cause resource exhaustion on the server (see Section 8.2 in <xref target="RFC8446"/>), but memory utlization will rise quickly than noted in <xref target="MEA23"/> and will cause the client-hello recording defense mechanism (see Section 8.2 in <xref target="RFC8446"/> and <xref target="MEA23"/>) to be used as a Denial-of-Service attack on the server. Therefore, 0-RTT and the use of the "early_data" extension <bcp14>MUST NOT</bcp14> be used with the "key_share_pqc" extension.</t>
      <t>Larger ClientHello messages can cause TLS connections to be dropped and for TLS handshakes to be broken, as evidenced by the inclusion of post-quantum cryptography in applications of Google Chrome 124 and Microsoft Edge 124, specifically the use of Kyber768 for key agreement. See <xref target="SG24"/>. A possible workaround includes updating web servers if receiving an error with TLS/SSL if Kyber is utlized through Chrome or Firefox. See <xref target="SK24"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>The new key share proposed in this document "key_share_pqc", along with its value of 63, needs to be updated in the registry specified for TLS ExtensionType Values. See <xref target="TLSE24"/>. The registry for TLS Supported Groups will need to have the proper values assigned to the Classic McEliece family with the entries of 42-51 and the RLCE algorithm group with 52-54. See <xref target="TLSP25"/>.</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thank you to Martin Thomson and David Schinazi, as their Internet Draft template was used to generate this document, before the authors' information was added. The authors also want to thank the contributers of the kramdown-rfc GitHub repository, as their examples helped with the format of the figures, references, and authors' information presented in this document. Thank you also to Joyce Reynolds and Robert Braden, as their Internet Draft <xref target="JR04"/> was helpful as a guide on how to write the citations in this document (i.e., using citation brackets with author's initials, year, etc.).</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8446" target="https://datatracker.ietf.org/doc/html/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="TLSE24" target="https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml">
          <front>
            <title>Transport Layer Security (TLS) Extensions</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="TLSP25" target="https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml">
          <front>
            <title>Transport Layer Security (TLS) Parameters</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date year="2025"/>
          </front>
        </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"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RJM78" target="https://ipnpr.jpl.nasa.gov/progress_report2/42-44/44N.PDF">
          <front>
            <title>A Public-Key Cryptosystem Based On Algebraic Coding Theory</title>
            <author initials="R." surname="McEliece" fullname="R. J. McEliece">
              <organization/>
            </author>
            <date year="1978"/>
          </front>
        </reference>
        <reference anchor="DJB25" target="https://classic.mceliece.org/impl.html">
          <front>
            <title>Classic McEliece: Implementation</title>
            <author initials="D." surname="Bernstein" fullname="Daniel J. Bernstein">
              <organization/>
            </author>
            <author initials="T." surname="Chou" fullname="Tung Chou">
              <organization/>
            </author>
            <author initials="C." surname="Cid" fullname="Carlos Cid">
              <organization/>
            </author>
            <author initials="J." surname="Gilcher" fullname="Jan Gilcher">
              <organization/>
            </author>
            <author initials="T." surname="Lange" fullname="Tanja Lange">
              <organization/>
            </author>
            <author initials="V." surname="Maram" fullname="Varun Maram">
              <organization/>
            </author>
            <author initials="I." surname="von Maurich" fullname="Ingo von Maurich">
              <organization/>
            </author>
            <author initials="R." surname="Misoczki" fullname="Rafael Misoczki">
              <organization/>
            </author>
            <author initials="R." surname="Niederhagen" fullname="Ruben Niederhagen">
              <organization/>
            </author>
            <author initials="E." surname="Persichetti" fullname="Edoardo Persichetti">
              <organization/>
            </author>
            <author initials="C." surname="Peters" fullname="Christiane Peters">
              <organization/>
            </author>
            <author initials="N." surname="Sendrier" fullname="Nicolas Sendrier">
              <organization/>
            </author>
            <author initials="J." surname="Szefer" fullname="Jakub Szefer">
              <organization/>
            </author>
            <author initials="C." surname="Tjhai" fullname="Cen Jung Tjhai">
              <organization/>
            </author>
            <author initials="M." surname="Tomlinson" fullname="Martin Tomlinson">
              <organization/>
            </author>
            <author initials="W." surname="Wang" fullname="Wen Wang">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="RLCE17" target="https://eprint.iacr.org/2017/206.pdf">
          <front>
            <title>Quantum Resistant Public Key Encryption Scheme RLCE and IND-CCA2 Security for McEliece Schemes</title>
            <author initials="Y." surname="Wang" fullname="Yongge Wang">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="PQC25" target="https://csrc.nist.gov/projects/post-quantum-cryptography/round-4-submissions">
          <front>
            <title>Post-Quantum Cryptography: Round 4 Submissions</title>
            <author>
              <organization>NIST</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="OQS24" target="https://openquantumsafe.org/liboqs/algorithms/kem/classic_mceliece">
          <front>
            <title>liboqs / Algorithms / Classic McEliece</title>
            <author>
              <organization>Open Quantum Safe</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SRVR1650" target="https://github.com/jwagrunner/openssl/blob/master/ssl/statem/statem_srvr.c#L1650">
          <front>
            <title>ssl/statem/statem_srvr.c#L1650</title>
            <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SRVR1211" target="https://github.com/jwagrunner/openssl/blob/master/ssl/statem/statem_srvr.c#L1211">
          <front>
            <title>ssl/statem/statem_srvr.c#L1211</title>
            <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="EXT652" target="https://github.com/jwagrunner/openssl/blob/master/ssl/statem/extensions.c#L652C9-L663C9">
          <front>
            <title>ssl/statem/extensions.c#L652C9-L663C9</title>
            <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="MEA23" target="https://ieeexplore.ieee.org/document/10278190">
          <front>
            <title>Replay Attack in TLS 1.3 0-RTT Handshake: Countermeasure Techniques</title>
            <author initials="M. E." surname="Abdelhafez" fullname="M.E Abdelhafez">
              <organization/>
            </author>
            <author initials="S." surname="Ramadass" fullname="Sureswaran Ramadass">
              <organization/>
            </author>
            <author initials="M. S. M." surname="Gismallab" fullname="Mohammed S. M. Gismallab">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SG24" target="https://www.bleepingcomputer.com/news/security/google-chromes-new-post-quantum-cryptography-may-break-tls-connections/">
          <front>
            <title>Google Chrome's new post-quantum cryptography may break TLS connections</title>
            <author initials="S." surname="Gatlan" fullname="Sergiu Gatlan">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SK24" target="https://www.kaspersky.com/blog/postquantum-cryptography-2024-implementation-issues/52095/">
          <front>
            <title>Where and how post-quantum cryptography is being used in 2024</title>
            <author initials="S." surname="Kaminsky" fullname="Stan Kaminsky">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="MOZ25" target="https://wiki.mozilla.org/Security/Server_Side_TLS">
          <front>
            <title>Security/Server Side TLS</title>
            <author initials="" surname="Mozilla" fullname="Mozilla">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="RASHOK20" target="https://stackoverflow.com/questions/58719595/how-to-do-tls-1-3-psk-using-openssl">
          <front>
            <title>How to do TLS 1.3 PSK using openssl?</title>
            <author initials="" surname="rashok" fullname="rashok">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="JD19" target="https://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art080">
          <front>
            <title>A walkthrough of a TLS 1.3 handshake</title>
            <author initials="J." surname="Davies">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="JWYW25" target="https://github.com/jwagrunner/openssl">
          <front>
            <title>openssl</title>
            <author initials="J." surname="Wagner" fullname="Jonathan Wagner">
              <organization/>
            </author>
            <author initials="Y." surname="Wang" fullname="Yongge Wang">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="HN23" target="https://medium.com/@hnasr/the-danger-of-0-rtt-a815d2b99ac6">
          <front>
            <title>The danger of TLS Zero RTT</title>
            <author initials="H." surname="Nasser" fullname="Hussein Nasser">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="JR04" target="https://www.rfc-editor.org/old/instructions2authors.txt">
          <front>
            <title>Instructions to Request for Comments (RFC) Authors</title>
            <author initials="J." surname="Reynolds" fullname="Joyce Reynolds">
              <organization/>
            </author>
            <author initials="R." surname="Braden" fullname="Robert Braden">
              <organization/>
            </author>
            <date year="2004"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+0963rbNrL/9RQ46o/KXUuWZNmx3Wx3HdtJnDqOa7m3zefq
g0hIYkyRKkHaUbt5l/Ms58nOzAAgAV5kp+1+58/xt9tIJC4zg8HcAXW73VYa
pKE4YpfigX0r1my84IlgZx9TEckgjtgsTthJyKUMPPbWOwsD4Ql2HM7jJEgX
S9ni02ki7o/YnVhL7NryeCrg7fqIydRvtfzYi/gSJvATPku7D3weiaSbhrJr
eqx+9br9fktm02Ugcc50vYL252c3Lxn7gvFQxkesHUS+WAn4T5S2t1lb+EEK
IPAQv5wfv4B/AND2+fXNy3YrypZTkRy1fADlqOXFkQRkMnnE0iQTLQB2twXz
chi13XqIk7t5Emcr+HaT8Eiu4iRlF3wtEjYWXgZortstgBUa+kct1kVMmUIV
vpRJ07oXUQaTMvb4oIwpTNv4ccmDED4CYf4ZiHTWi5M5PuaJt4DHizRdyaOd
HWyFj4J70TPNdvDBzjSJH6TYgf472G8Oq5NNoecHoHiSRUD0nSBKRRKJtEtL
ga1CIJBMrfGL1j01Qi+IS/12Ni1kb5Euw3arxbN0ESdIhi78n7EgAuq/6bEf
qRc9UlzxJo54uuCR/QZwOmLfX56wExg1jNNU0GOZJkIAsIfD/oB9HwEJEgl0
ZCf4nxfhvU+tPPh2VPTcZpcn6nnsw3TDg+FwV3/PohS59PvxMT0QagU+EGK7
g396Zoie8DMXkZ8RkWhuofFzHM3nonj6f4rCmoDpPQAwJSxaUZwseQrz4tJc
vzw5GI32j6hvypM5gmY4AfYOTxPu3QEr5JwGm3kHV3gnmXnYVfVUAqR9sxCs
idlZ5+ZivMWukjiNvThkPyDiIF0Gvd02DVIwTE7lsx67FtKLk5Drx4rWZwns
N+cN7XMGND2ArzDR2XBUj9TDw0Mv4BFX2wY27jxagkCRuG26wsg83JXdex5m
ovlF7yPSwcV/M+65SJV1GBPDnOuNxo4JNOGzS5Jkkh1TYxjMwXc4UvheDff+
AL4rngA9Ycby18/H7Srv+9fhttdqBdHM4dc3b58d1CMarKJV0vuwCnsRl7w3
j+93Vkk8T4SUExBMAPhwZzTsjkY7o9Fl7+r0pYPdMbvKpmHgdVEBniTrVRrL
tUzFkr3gEiB9F6HGE9OEA+edxH4QzRlwOyi5Rua97hUqwWZeeP6m9EphPDh8
htx7+uZF02J6StX0lp6gzrSowRJwrixXWSsB+aGdwLUHasZRDdhdG/rTHnsB
qwUkCCIH/FMeBSJEFErvne43PZBeceb0vMmAaMVTp/0JtA98p/kJii1ZPHba
w/SvgtBbaH2R6xJQI87zMlAXIBHd5bjh0QduP3e6/AArhZztdPmBg4K0nztd
znvsPsbXsD28hdPxPJrH1ZfdMtcEMvZ+uwtcruEzDmR335V7XgbCF8mCz4W7
ZtfZVETVt053kLVXKJKBdmnqzn3mxzzx4+r78hJekQBwV3GRBDIFCSSct07P
yx5Ik8hPgtJqXgagKLgsvSzzwfg3MauwwV02dV6UIb35sOAukidAoTfIodYr
p9db6BUvQ/gcu9QFRkiDqPzS6fujZS6Ybj+KqHjoyPPri5OzwbN6ESBWCRhj
INK9hHY/qLxn8J/93sqfOQLgu4xHabZENQkLAJ+1hCMT/yzyUMah/h3Dgi4F
zcl45LPzy9PuycnxsBDwaP/ndr9qXivkK4ZRk2mUK+tn8PXqu5NGcScTrxcB
9EaafxAeaK5VLNPurwq9LuEBYp6vFusdsLcjvzvqFo6EdGhyhT0NYU6snrBF
sCsbsXHRtVGRXZ6Pb8qairF3342bjI4Y3BYNsOQzJbbDYBr/Knd47kft3Iml
kfATI+Ed8FUXtmM5X/ClLOkbwX4HUDCD/RjgqHLe+PqH68H+Xr8eDe0PePHS
8hIIOSnDnWkYT8E7AY2Q7OB3YDrQn/qfiUzuk573xQWO7iC1uWkjn7mexCZf
oorgcDD4DyIIoz8VQWj6VyN49tPN/t7wL0QvN30lggxjnxx2L/b3d08Om7Bs
7vFXI/v27Hi422AOCiE+rsI4QS9ZCOO7ZGgA7Qz6w2cHg0OXEa/FKuRrdpym
4PIwFOgXY/ROWL97fXPDXoNwBB/3DlUFel0iWQouswQ8HuEtouDXrFYqllTI
GTue+iJcwO77zVUiNa+cvmPwhfiS+7DZnY5jAEE+gC0Sld6XlRcM8BatJrnk
Ycin7uzxgi+XYOdWG41fbXKlpqEQKzCGgadWGdCEmCsSD3JHavWxM4/jeSi6
3iKJQXF04WW3UYJ3l3zdnSaC31FYwYuBQz1UU3LHWatXNCYaFzDml5LBoMwe
lNmDMhiU0aC0pNagjfwIZHjF05C7in4sknmQ2W9c2fLtJkrdcbkC8+duTSSC
zTYnRVZLBRywGzj2eheUEnqje8P+4Z5LjB/B2hWkuxfxJjIEkk0FOi4ZejTA
4DjNJhJ8y5fw8W7tEgFsCfeNuyXf/avRFQ3ugt4y/i0AzqL9aCwM+JDci2Qy
DnwxgSVysCs1YtgI17EOcMPMNEVVQ18fj1+/+3bYoN0k7vsYppiF8QMtEm5p
xXx7B88Gh3tAeKBwN427fkz8OejudlfyrptJIGtXC1IH+tewImnMwHg20uRq
/C2j9ky3/0czJgmXi/jORQSF1pvTwWGDyRQvl8AJYIiKGXj9KTiLiIk3D7rT
INqB4R7QWvVC0YNn/9Cf/w7/9g9ccXjMHnh4l8IOy+YLFs8Yz1FYGFG4SZ6f
8vtA2KIKH8dykXH7VW4KojZ58+PPPzYxz0bdVQDOAHL98DFh/HSd4/b7HAuX
2O71ZZOSAokbZEtC6p+LiMtkJ12Iro++aNKNZ91+N0nTLj8Y7PnD6eEh96rh
NtUY1wdX518iiRloq8dwfw2+IiiKEu6vM3gEcsF6lSOC8cY31/0NAi6ZeV0V
k6fNHYf+DsyVJpmStUMFjeylH1MHi3OrEe6Va0H7TqUdgJ0xWsU61y9PtnSc
6FE1+wbDhusIIJCltV2DB+O+KrvQLxLul73neCqS1H5jqNIftbrdLuNTiXHS
tNV6rwOqtyhsl7EfzMDnRqQetIyOYYGTIn/AclsJO4Bjl8R+5qku3MPNHONc
bAr92Er5bxhrJ2nvBSsYLIUhsCv4AQGQ6rUIw5heK3mpvsPuk+D3SyKqoyEK
/4MB26ewt+8FC3F57fm2YQIvzCjsBRhQHLo7pciYpWKgsVTuITWq5IxmoDXC
NQGH75XLaeZX2ZJeiyi6DHw/FK1W6wuMGhJRkD9arYsSZBb8T4axmFIDVAG0
I4Vg7ynYeLvN3lNEDj4g4O/JzbstkIAP8ZJdgMDlyK/5nJaL3UFMt8qomlnI
2b/d2mYej4A/QEczMCwRrtwCUOraiF8/E8gfhGOWJPDeYqgwWAbKYpAoFPb3
9nb32HSdCtlj5ylx2RKDoRgQgEEwMwYKNWEy8xZoGFAviynmwT14jcQaFTLB
YDx3nAvsyPtONdAIJfrLDGMQPk/84DeCjoE77wFXaipQFOB2q4dB1UQAl4pt
6AoTGJsd2wPjCpwSrb0CY822+GIRzHF7EQ1ohWCALA3C4DcFzFO2yDbs1QBo
QcipLewpiIEw+f7usZewk8RHjksEnIfqUe+a2t2FwyVKsClQCm2KmIiP3gIF
uUbaRbCQEQ9g1yB/4KqRzISxpllKRIZ55kHEw+aOmrmszj0G9okAEmgMdPQB
BmkAHMWHCy+sBgbo66eFvjaoas88hl8dmDeLTDIRcdj2encDq+KClCVVs3CL
cVBj+dbRXqoNjslmYDYhgVP0ZDAQSlx4hQkMSkaA8UY8AcMm6DfCbqghnpK3
syxFNxEYOFV+B+NzjqqREAELSwAD464jzxPzIQAh4AHMLjXfrWCZklkWstyw
1/6WltqKMcjFKcAQuQTqoSA9iaN7xAklAyJ6KmZBFND3VgtNCSQGprgla7/9
fnyDaXX8l12+o8/XZ999f359doqfx6+PLy7yDy3dAqzr7y9Oi09Fz5N3b9+e
XZ6qzvCUOY9a7bfHP7cV+dvvrm7O310eX7SV9LBFAO12WkfKR8MiEVfJli+k
lwRTtbYvTq7+578HI/b77/8Fu3U4GBx++qS/HAyejeALKONIzRZHIGbVV1iL
dYuvVijGcX8CQT2+AlkaImNIhqZzxFA6ATW/eo+UuT1iz6feajD6Rj9AhJ2H
hmbOQ6JZ9UmlsyJizaOaaXJqOs9LlHbhPf7Z+W7obj18/g/0I1h3cPCPb0gX
N1SItFoqSRYrcV+3s2fgqDPHOrKMnbJEtwRIiQWAe6DZhJpNVr96bRQNOBgK
qVkovFzrOHyjNAFsVLWtiWkQEcLjDDPooH+Ar8Dx22ZKfcezGW48xEd8xAwG
iAKnRwmlXJSquW3zj4fgHcAWBRNuw3BK2GWKxZUlAzIFYGEqrEZmMKp9tI2D
WU5pI74ske0tQFFGrpYpoh6EZzSnwURA9ugmaw0EWJ2hpvYPwBGgUUHbJ6qS
tEYBuFijMgB57wj7c4VcvAIZGKRkZmDVzrY2ojcg7sdCav1BNC8w1DA3QlkC
grRqBVIHykuQ5kr4IkDElgaiNoN1D4nnxMcVIK2YsjKvMfKVjc+ryoyGh1Hm
qCJonUALWSbdUav1fBbMgWm+eQ4uPBYywUZFD0XByX7Xjgy4dOBrviKzk0jx
tXkhBe4a1sEG9L5H77eKrsSDWquYtMTu6OBgf8T+Xf98Vn0x2u8fHO6bIRte
1/Tb3z84GAwPGl/MGofcP9zvg+xvfFEz2cHgcAhjNg6p31tzJiG8GpgPu+bD
HjPREP1HqjmnuS9mPAvTcqN4xcHOYjYnPR/0esNfBvvdwTd570/04ZPLTl//
iWX3/3/d/1Pr3rikw5G9pA0M4XJN7bqDGAEZsGM2//MdLQ7QolNqiEQe2DWh
jkTUqiDbMcoVkfGEtGeRYvjA0XnbSkBF8QOKxhRtWjKTfZ/MSjBBlRxEI7gM
9dNFlyuGPYJUWQDyeb+6PSpStqaHRf1PdTT4uoGmY9DLSgHVES4SwjeORi73
XRmPlLC750AqpElBMQl7Uq+YrKxYUZZruuTLQ1bNA4BStrZQmbVzo2qCdX1t
pfQeckCfvB45ADfrlWWqTbAyziyCZnt3yhrS52M9SvBERxuaDEWXzBQiI22q
dSaSUOnNF6A3dYCgU16Fre3ceCtZk3ULQPgXVluJ5sZWyTchgY5E0gELDEEC
QlRLSJGa3Ypx27wmIgIf8HdHWkiVQ8GQZacPmGz62/kKKz/Zfn9/n3214wyz
5B8ns4TP0d6chCKap4vOoGG4DcOgzZph4R1FDjp7mwDaNEy2wmCV8CeknWRn
0IyaHuZgNBxus2eHoALKgwVz2CZAzUnhoHcGu7UD5oONKjBlUkxkkq46g9Ej
ZM6H2XsGSrM0zAIczXQKdl1nsJE61jD7e8N+eRiSEypANQmxMHOy0hW2k0jM
4zSgV53BPsyhh3m22x/U0Qao7IkkVQEvMUmDJSwdXwKiBw6ABprD/WF5GC1r
nWGA5TuDwyqKBprhXgUpzcuVYYY1q79hmBVqomjeGTYxcM0w+wd7lWGAY2hT
+hPYn53RptE28A2sd7gmSdgZDZ+2QeuGKbbEvaqglp1RPQ9vHMaL47tAdEaP
8/DGYVbybmJbNxOQwAIgqmPpTdBYK811MXCA4zxrXPC6YeLAn8wCjNJB14PN
mG1CKpbpJE9yEkCdUQ0HPzJMnbwhnu7sVfh4wzC5TujsPcrHTxkGVUtnH1jG
ed0h9biVP/vkKrrHLaKKgaFsPxOyXmJ+QatktIJ4rQlFqrGwJZ/oEeP0sEnv
gziT4Rqt6QCrywtHWSl8DFmYkL2uhODVsEcxmbbGVNnBMpMUlubTkCI0yB6h
VvBekHjZEhMc0B+jiWA+eCK4N7FqG0OdZuixdxG05RRXoDzMcsV1cEOZBIpI
K4wIpyW6FAVWVsqrhlhkkjQAQBYTaHsvUUkgSgh1ZnZSg7VPLs7PLm8mr88u
Lt5N3p5fTs5+uplcnF2+unndRmPTUNpE3KyYHsad3AqWvNWKrzDjQHkfU3Co
EmrvTXne7ZYJL+keRAVFGPiOwZ1i8U1khkeps2TEejpGhI+J2qnOVwCfqCWU
FOrNQ3156ZoKLOak8eIMuLnIzeXRPW0fcjynoMLrGnsstxyPL0pUoAxXnvyC
abFmxwIaFDcanrIEjlpLXruSxJqUtsB9puGimPUG/jUQGMu0zqjGogI0WPd3
GQw6E5hqDNfFnlPJ7ALIbQySI5mseXGVNW9gorEehVI2jThDFTLe9lRuoiZT
58ZYtedThAiNeLF7FtZ6o09bb3M7PlApbqtsFaLd19X35NxZTeD7161PddA1
idgbkzEreQduni01eVNMI1OKxE0eI0lmGVAIWTPXbSam+pImY4OaOL1dxTBV
pJ0Bj8YPIHSaHRT4U+u8WV85f4oWrRZmGNgvNp+0zsC8YP9mfyu02FdqGucZ
ksV6Xqd/rdf1potucI8NHLvvKw1lV/9906og8EQMFS8ChoDo5w9i0wARQdJ8
3ihlisEonzVADWXunzzA77ouQvjFabhPSAyz/E8e6KSwGXXJ0FefcOHUUTT5
uZS1x8OBfnn6AHbXH0QSzNY4wL+pXOkPcAn7/WUQBXIh/E9PoOxzw5CMvT8u
nEF2CkbYV7eq9y8l7FoIGQBYB7jhfxsI+6/C/5VZb13Avqlr0iqh9TfGziOf
AKFkjABZki7WtgbEzJ2WZFWaWOYf9vZzzVKe6Ct7IpXE5yEmuWSQZqrSNj9l
Xp3GFIlYNe7KNkPFiTkkHoKVoWCtTP37J2vqvCJLlwUAyKoqFGNX1Yl9WJ17
LMBQZsB7iRAmt5aXkiZ8Bis5kcJLRHXy97d/0eT51HbkwZ18cgnTG5VyxF4a
tZOX0KtkaKM+a1CEmIAu8hnHOspcfz0BWo+YtlTWgzqwu7mlXbWBq8l9DN9S
TjivYypm1wYBrf1n2hJIUR2/K5EavLezMAyAKT12koE0ZDSZZJ2zk9PXZ1tl
lw4DJd5quLefDDr9j/3+AL1lfLR7MDKPDvSjveHAPDosuX6MfRzu7Q0O1dtT
6PBxNDpQ386gbRVKFA0pWg3o4RkY6yGczfyFGPbVeIM+Or70aLf/bKgeDcyj
Uf9wXz0aViCkBvuD0Ug12DV9MDWjHo1qIb0WZHz5VJnHruIAs+j1QE5WwOUY
gMikoCFfnvR69O/LCjjCq3Z4edbvY4eXZzUd8D38bdWA2JR4r0BZm3OjZRoe
Y/lgbUpOvX9Rfa9Sb+r1SQXe+jydan1aHUxn5dT7s8b3eoAqeepTddR6t18z
nE7lqQaDagOdsVPvq9zUkN9TzXfrFqmuBKK6QiotqIbBwJrKDqrve+b7nvq+
v2V1/mTJliY/4Av21q5GBHP8St6BCXmm7de3yOG5h0OCD8UYukMPsaqYAFd2
GoJS18UkRnGZIlDYJhS9QEcMdriOXlhO06xuynIdTClnE8XsFJzHQDC0e5dU
RpfXFkZUx0fagKMO7yqrkqDtXI2/3VIAGQBLxX810RurtrdSqkiZUAVX7g1b
Bdl5PQn6AUheXTlKKThQWhjA0GmmDItnKTzApajWrG7MHxXO1abl04pHeWdt
dFVARYKx3RluUeqOtFO9fjG5IeXfUC4IP6LAgq8D/TUfbpt1QPpvgU9ahaeJ
FX9ESqoSgoYoWrEOqF+VcUHRN6qgDOkUDAW4EiGzpaqlxGcd1ZRqm6m8ncks
QM3aBgNicnw2nsBGnbw6eTsZvz4GzXdkHsNn8xi0Hz0+eX0M/xv2J1fvLn4e
7Pb3dJ82gz2Q5vYMnVi6JX4xxVJtRD6J8PjBCnbbFPggXbeRDYkEtAGBcO3+
sK2iTMRaU5EPrNO87Xof03bdS8Vhj/j5UXM88VgVIgmsatRhs7pgEUbT8AS5
UFGadr/Phof2HJ3SNszfbNkFWLhWAdrIeEBcR32mIh9aV9wtsZ4yrzqY4gVO
iRI7ugtFoXCTpEV0sGF6FTiriwPRClD8S0dIH6ekql5THXXkyO7bBIOhQJAj
YHohHfv9NuPFKqjiibzo0InGFXunQkxYvL4TiD2iNmOh5cm501BVpT4CtqoE
rA2haaL/GACQ0POumPS9OS2HVfnvoCcPw0K+FZn4XGw+UR5oWYBIEzlJ/gap
LGQDoF5Ihe2iapzkLW0zXyypFI9bAhb3rnvFiZKh6Iro7Zi7eOY4Tu2RBqoR
L2sPVRquVkpXC1KRZaFVikw+iQVrnz1dGvTYiyzVKm8Rx5pS366nounUDhLr
J7LeCcIm+LgN3aCdZ2UMiIYPqPTEkgUYiW0iLMiDDxR5lqoGVPPiZ8i+UKvE
NoJNIhB8iDbVWAP/4SFHDP8eS1UBC/SfxvegY0sqQ1sPG1hO18PSEZGGytEg
uo/De31wSZsXj8tjxJWOZpWlctPhEn2SgQ4OFViYlXurd+VLVP1+wOcJXzYV
YWn3etc5lbKNy5B767GuRS7Yns4IczwGjDyrjnTkqqdmnYuERrmmGkyPDbHf
J4Z+TcD3HI8hwMbP4wPOMCoCnHdyFiN/2v2DYVlrkT43UucA8rmda6KgnzeE
Fbn7wx1VyO+R7nl8sUtfTVRQ9zJfy726T16Q0viX4mGszr3cBJj0+5O9W61x
NpUYHgZ+LPNXPYM1Lqwb9S4j+tn5gD/BehuAfOqfi8x/nn1LC1VhpCZO+sOM
VMsMWmoOj9jxZhvFCMZrR9c0euZKyl8LTAia88vK0Gk8MnOOWrmun/RExJMg
VrnsWZDItNaSJx1Ox3XRv7eil9oJAZGNZlW7XEPXrtqz6pDmaa67C0qYegvw
4nXSPRFePI/oROV0bdu0+oyc54lVSlnmYpTOT6PRAbNsWmwMtv+9iGzzzc2U
o7+BKCoKFM6VUUUWFiohWUBkcNlkFfTYuW30NPhK2gHPHb0SGE8xc7bzs8L5
Ec3ConA8L2Wj7Q22yMJGh0aZVMSJuJZ2bYdeqiyqo3hP++jW8oDVtIpB/hUK
n5Al3jOspxFXnJeok826epWIJFfCQ0VdVKiAR90Fl5qMQJ1eINKM9VmjUQ/9
addGUacsQ0X8BbfGB+7wUlU4JFmnHYo599amzg2PDiqY8JN+p89ITgJ/IsDM
wzcqbjChuIHVEitsEt16CV5H7JsTh0Uup72lENEeV13hgINlEcshS1naSKuz
zE4JB4XLKZYlU2kszHa1oM9hHizeJl543BwtNrNe8xiLNhR9VWUmqz3pVWxU
3Djk3GKtfMEpqrMOdGlx0FYVhPb82tN1vYkKl9m8qaHClBIa50BAYFFnLwaR
5lyZH3qvjKjdUrNBc3Yy+1izGAkSe2zCD8xbdAgECfmjp+xTdZQQz/z6Tw3c
KBs+L+DCDpVqrUcCmkT9qDkAkqq6M9rkZiYTYNgMHG4C9BgfR72no8pWrHOT
BqsEQnOnRR+13HDS3mhqZ5tZwYDPiwQ0OzL0fmMdy2cUshiHxu3ZaF/WGjp/
pK6ksiMeHeN5yVZy4HJMyifYyH8JDn/OHP7zBvGf9sjo7w+7ZeXeT/LN6tax
bFc/alk/vljVST7TS3vSEMY4332KcR48Zj33Gmx1PLZ7xMoKSFdD6vjPBsMI
lCPljpYYK32CaCWbOItkDFI+QBnl2N4o/R5M7Nw9OZerJKP1kiwUurbFsTwS
MG8SqgAupjUaUzJzKwFOoHSzsjq8ONG6otyTEMaYuK5ooV5gV2OqZolnnkFX
rzCPXrZ5XFGt6zbzUkHLhFIYJ3hVPeXUyOYrHSyUlETUppHuwcNEcH+t4pbx
feDrINfG2J+q86ZLrfLiDQI8t1C3nlDyaVd+6ED8RB+oLWo5K2yzMX1Wz755
HFKfW68kyBDfUh7NzaI202K7iFUqnwqVaY3JlVcHdZQpSQ3QTFK0JIbgs5Sg
a9wqW7r82sqqKOueLDN8jMMoLm9wdC0H93GjzPhYNfi442zcsD12HJmqZrP/
9F0MsqiB1pks8hSIpHXU+7IxHWNqyxvTNeoWEmnsVljQ1E3mNE6aZ7NqfJg8
U5jf+bMx32byCI5Rv0E20h0zVdOr1TquOwtA6XBdgpAKmTqB9+Zjnp8dcM8D
GHY5NI6iq/OtO38K72lTVcHjV5gZ01RnHSqZJErv0M07nLIfpTtJ6ZouPQS6
9hLVnUmJ0AWJt0TqcbYEJURuw4m6v0gJUXP+BwmPZLRcV+eABvSrFKpbyWjb
HidfNS9gyAe0T584Q21b8nK7iHltu0eKtutOAG07d4RYK9qjgj/KhyFW7ilc
TGuVtjRHvSOLiJapFjS5cZc0NcSwvJOpfbtN/fUtyk8v3QKSp1ry0+BK4tLV
C9atLkW5IdbYI3tbNFZQqJpUA0P51gYtmT1A2r5dzLrzpcyFWgRFKjrpcoG+
hetBbYviSqQ6DrAIV96OtYuYp7/qzqPbl6U4pC4fes/oEibcBOaO+hNdIcSt
+6w2m2a2ZVTEe+muZ312BiMY2fRDfhpHB1XMlV9rfWEXEWGZhWmAgU3l1ter
U3XfnzHcSPAUB9JI7jkD4yMpKPNePyDaW3i5KGboz2elqKiy4Kxrz2z87INB
MJ86rgbedKZKekWDQaBEpODeQkevlrmCrzl+9liFFrIUDmVN9aXcVLOhDWZz
SRxd3uVxVBrAinGWeMgyC3igdroT/nRsvoOSsbqltu8SDFyQqFkamksKaa4k
gBl+zcBLMYefCjOcbiC/LapJFDiFZ9FdEAUxaK6MdF/MBMaylgI3YiCXmyFT
x+LULFv2alIy+1REAQ/xpljcZAFSV3OOjbtToKYuMzf6y8p0t4vzyY9vk9Rc
eVRrROlrOpN6JkLdpshU0nwaPT+JqWoIYTRFWXmZu2k0TeI7usQNOB49gcgr
ov+klYqb8xqvw47sw/O0i51rxdlgOCIg3gZeEst4lrIzf06Pt1UkHPVjGK5t
SlKtxrP9g1zg8nkiSMzjb5zggcdXw9EtKDO64C/AoD16B5x+uaIwNbOVr4yD
BzHVqyjRdSvOlaLkSJI4UesBNNqhs4YaAnXxpbr30lzhrLGCLi8D5IaPBqJv
ESK6avX48rhRkhbmmL6Js+aitRJLbNsGBeYvnMsu7OtSCN9C8INPC5IfD9cp
MouCE1zF/4P6JS6FiPrZr1sVd8+HMB3HJsxuCtaVHBFK6+buASIH9NMnBrj5
pSrthDfVaheXu4ESDZReHA27e4PNliJ124N2owKFK2PgHXt3oIRBoc+VmdD6
/Uj9qqHw/96egW4W7U+4PDy6Y+s4QxDNL9Es4qXUPhHete3jr7aA7/RbYE6F
Bknxa1yn+GN+YISDFsK7Ux64LoGC8eYiQkYQ7jKDsFQnDcmwUlcyf8nyX+pC
scl1hapaC91Gm9n65tmUAFexCCTaVF1nqaXRXcKXfvwQdZOZx14F6etsisoR
L4SL0drK0dDqU4KJHK5s8aSgMeMp31ti8RD5cF5+3Wcd/MU9gWUWR4QMwVVW
Ji5dK60OlNhXRjcT/T3eqH1L5ELw8YJPkuvzDI/KAiALdX38QxKkWqvkl/tW
Nl8n6Inetk47m3YgKOnstE7mKGy/lNr/wKst1yD3t5lIvd6Wvnx5Cj1a/wvg
KS4SGHQAAA==

-->

</rfc>
