<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wagner-tls-keysharepqc-03" category="info" 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-03"/>
    <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="May" day="28"/>
    <area/>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>key share</keyword>
    <keyword>Classic McEliece</keyword>
    <abstract>
      <?line 269?>

<t>RFC 8446 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 algorithms of the code-based cryptographic scheme Classic McEliece.</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 273?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large public key algorithms, including the code-based cryptographic algorithm family Classic McEliece (see <xref target="NIST"/>, <xref target="DJB25"/>, <xref target="RJM78"/>, and <xref target="OQS24"/>), cannot be easily implemented in Transport Layer Security (TLS) Protocol Version 1.3 ([RF8446]) due to the current key share limitations of 65,535 Bytes. It is important to consider such uses of algorithms given that Classic McEliece is a Round 4 algorithm submitted in the National Institute of Standards and Technology (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 Classic McEliece algorithm is requested in a TLS 1.3 key exchange, this new key share extension will be constructed. However, if a classical algorithm is requested for key exchange, a normal key share extension is constructed. Thus, enabling the use of Classic McEliece 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 on 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 from the Classic McEliece family, and if it is, then KeyShareEntryPQC is constructed. If the opposite is true, where the key exchange algorithm is not from the Classic McEliece family, then KeyShareEntry is constructed. Note that the "key_exchange" field is expanded in KeyShareEntryPQC to accommodate a large public key that is greater than 65,535 Bytes:</t>
      <artwork><![CDATA[

    struct {
       NamedGroup group;
       select (NameGroup.group) {
       case classicmceliece6688128 | classicmceliece6960119
       | classicmceliece8192128
       | rlcel5 ( | (other large post-quantum algorithm1)
       | (other large post-quantum algorithm2)  | (etc.)) :
             break;
       default :
             opaque key_exchange<1..2^16-1>;
       }
    } KeyShareEntry;

    struct {
       NamedGroup group;
       select (NamedGroup.group) {
       case classicmceliece6688128 | classicmceliece6960119
       | classicmceliece8192128
       | rlcel5 ( | (other large post-quantum algorithm1)
       | (other large post-quantum algorithm2)  | (etc.)) :
             opaque key_exchange<1..2^24-1>;
       default :
             break;
       }
    } KeyShareEntryPQC

]]></artwork>
      <t>Note: "other large post-quantum algorithm1" and "other large post-quantum algorithm2" and "etc." above indicates that one or more future post-quantum algorithms with large public key sizes can be added by just defining a constant for each of these post-quantum algorithms.</t>
      <t>Another Note: An additional algorithm is included in the above case statements, "rlcel5", since it also has a large public key beyond the 65,535 Byte limit. See Section 7 for more information discussing this RLCE algorithm.</t>
      <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 accommodate 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 accommodate keys larger than the 65,535 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 65,535 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 aforementioned TLS Open Secure Socket Layer (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">
      <name>NamedGroup Addition for Classic McEliece</name>
      <t>The values for Classic McEliece 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 Algorithms */
              classicmceliece6688128(0x0203),
              classicmceliece6960119(0x0204),
              classicmceliece8192128(0x0205),

              /* RLCE Algorithm */
              rlcel5(0x0206),
          } NamedGroup;

]]></artwork>
      <t>Note: An RLCE algorithm is also added above. See Section 7 for more information discussing this RLCE algorithm.</t>
    </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 in 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, "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 can be demonstrated in the TLS Implementation below.</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 numerical identifier (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 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 not only 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.</t>
      <t>When the client sends a second ClientHello in response to the HelloRetryRequest, this will be the same message as the first ClientHello 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 the ServerHello message will then respond containing the new "key_share_pqc" 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 a 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.</t>
    </section>
    <section anchor="other-use-case-rlce-algorithm">
      <name>Other Use Case (RLCE Algorithm)</name>
      <t>The Random Linear Code-based Encryption (RLCE) algorithm group (see <xref target="RLCE17"/>) is another code-based cryptographic scheme (NIST Round 1). "rlcel5" is a RLCE algorithm from this group (where the public key size is 1,232,001 Bytes) that can be used in the new key share extension, and can be demonstrated for use for TLS key exchange in the TLS Implementation mentioned in this document.</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 Classic McEliece algorithms 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 utilization 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>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Probable request for the new key share proposed in this document "key_share_pqc" to have a value of 63 in the registry specified for TLS ExtensionType Values (see <xref target="TLSE"/>).</t>
      <t>Probable request for the registry for TLS Supported Groups to have the proper values assigned to the Classic McEliece and the RLCE algorithms mentioned in this document (see <xref target="TLSP"/>):</t>
      <t>Description: classicmceliece6688128</t>
      <t>Value: 0x0203</t>
      <t>Description: classicmceliece6960119</t>
      <t>Value: 0x0204</t>
      <t>Description: classicmceliece8192128</t>
      <t>Value: 0x0205</t>
      <t>Description: rlcel5</t>
      <t>Value: 0x0206</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thank you D. J. Bernstein and Simon Josefsson as they advised to have at least one reference for the description of Classic McEliece, and to limit the amount of Classic McEliece variants for this record. Thank you also to Eliot Lear for his feedback on other fields regarding the next algorithm needed.</t>
      <t>Thank you as well 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 contributors 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="TLSE" 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="2025"/>
          </front>
        </reference>
        <reference anchor="TLSP" 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="NIST" target="https://csrc.nist.gov/projects/post-quantum-cryptography/round-4-submissions">
          <front>
            <title>Classic McEliece</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="2025"/>
          </front>
        </reference>
        <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="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="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:
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

-->

</rfc>
