<?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.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wagner-tls-keysharepqc-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="keyshare">New Key Share Extension for Classic McEliece Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-wagner-tls-keysharepqc-07"/>
    <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="December" day="19"/>
    <area/>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>key share</keyword>
    <keyword>Classic McEliece</keyword>
    <abstract>
      <?line 313?>

<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 317?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large public key algorithms, including the code-based cryptographic algorithm family Classic McEliece (see <xref target="CLASSICMC"/>, <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 (<xref target="RFC8446"/>) 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 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" fields are expanded in KeyShareEntryPQC to accommodate a large public key that is greater than 65,535 Bytes:</t>
      <artwork><![CDATA[

       struct {
          NamedGroup group;
          select (KeyShareEntry.group) {
          case classicmceliece348864:       Empty;
          case classicmceliece460896:       Empty;
          case classicmceliece6688128:      Empty;
          case classicmceliece6960119:      Empty;
          case classicmceliece8192128:      Empty;
          case x25519classicmceliece348864: Empty;
          case rlcel5:                      Empty;
          case other large PQ algorithm1:   Empty;
          case other large PQ algorithm2:   Empty;
          case etc.:                        Empty;
          default:                          opaque key_exchange<1..2^16-1>;
          }
       } KeyShareEntry;

      struct {
          NamedGroup group;
          select (KeyShareEntryPQC.group) {
          case classicmceliece348864:       opaque key_exchange<1..2^24-1>;
          case classicmceliece460896:       opaque key_exchange<1..2^24-1>;
          case classicmceliece6688128:      opaque key_exchange<1..2^24-1>;
          case classicmceliece6960119:      opaque key_exchange<1..2^24-1>;
          case classicmceliece8192128:      opaque key_exchange<1..2^24-1>;
          case x25519classicmceliece348864: opaque key_exchange<1..2^24-1>;
          case rlcel5:                      opaque key_exchange<1..2^24-1>;
          case other large PQ algorithm1:   opaque key_exchange<1..2^24-1>;
          case other large PQ algorithm2:   opaque key_exchange<1..2^24-1>;
          case etc.:                        opaque key_exchange<1..2^24-1>;
          default:                          Empty;
          }
       } KeyShareEntryPQC;

]]></artwork>
      <t>Note: PQ (Post-Quantum) where "other large PQ algorithm1" and "other large PQ 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, "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 TBD, "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(TBD),
            (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 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 and the hybrid combination "x25519classicmceliece348864" (see Section 8 for more information) 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 */
              classicmceliece348864(TBD),
              classicmceliece460896(TBD),
              classicmceliece6688128(TBD),
              classicmceliece6960119(TBD),
              classicmceliece8192128(TBD),

              /* Hybrid Combination */
              x25519classicmceliece348864(TBD),

              /* RLCE Algorithm */
              rlcel5(TBD),
          } 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 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 <xref target="NIST1"/>). "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="hybrid-combination-x25519classicmceliece348864">
      <name>Hybrid Combination "x25519classicmceliece348864"</name>
      <t>"x25519classicmceliece348864" is a hybrid mechanism introduced in this document that combines both classicmceliece348864 and x25519 <xref target="curve25519"/>, <xref target="RFC7748"/> in TLS key exchanges. The experiment TLS implementation presented in this document, which uses the fork <xref target="JWYWPROV"/> of the oqs-provider <xref target="OQSPROV"/>, is one example of using x25519classicmceliece348864 in a hybrid key exchange; when x25519classicmceliece348864 is chosen in this circumstance, it uses the "concatenating" method mentioned in <xref target="HYBRIDTLS"/> in the new key_share_pqc extension. In the ClientHello message, this new key share extension contains both the Classic McEliece public key and X25519 key concatenated together. In the ServerHello message, this new key share extension then contains the classicmceliece348864 ciphertext and X25519 key concatenated together.</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 mentioned 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 KeyShareEntry.group or KeyShareEntryPQC.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>There appears to be no security considerations at this time.</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 in the registry specified for TLS ExtensionType Values (see <xref target="TLSE"/>):</t>
      <t>Extension Name: key_share_pqc</t>
      <t>Value: TBD</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; also requested is the hybrid combination "x25519classicmceliece348864" (see <xref target="TLSP"/>):</t>
      <t>Description: x25519classicmceliece348864</t>
      <t>Value: TBD</t>
      <t>Description: classicmceliece348864</t>
      <t>Value: TBD</t>
      <t>Description: classicmceliece460896</t>
      <t>Value: TBD</t>
      <t>Description: classicmceliece6688128</t>
      <t>Value: TBD</t>
      <t>Description: classicmceliece6960119</t>
      <t>Value: TBD</t>
      <t>Description: classicmceliece8192128</t>
      <t>Value: TBD</t>
      <t>Description: rlcel5</t>
      <t>Value: TBD</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. 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="CLASSICMC" target="https://datatracker.ietf.org/doc/draft-josefsson-mceliece/">
          <front>
            <title>Classic McEliece</title>
            <author initials="S." surname="Josefsson" fullname="Simon Josefsson">
              <organization/>
            </author>
            <date year="2025" month="July"/>
          </front>
        </reference>
        <reference anchor="curve25519" target="https://www.iacr.org/cryptodb/archive/2006/PKC/3351/3351.pdf">
          <front>
            <title>Curve25519: new Diffie-Hellman speed records</title>
            <author initials="D. J." surname="Bernstein" fullname="Daniel J. Bernstein">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="RFC7748" target="https://datatracker.ietf.org/doc/html/rfc7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author initials="A." surname="Langley" fullname="Adam Langley">
              <organization/>
            </author>
            <author initials="M." surname="Hamburg" fullname="Mike Hamburg">
              <organization/>
            </author>
            <author initials="S." surname="Turner" fullname="Sean Turner">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HYBRIDTLS" target="https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization/>
            </author>
            <author initials="S." surname="Fluhrer" fullname="Scott Fluhrer">
              <organization/>
            </author>
            <author initials="S." surname="Gueron" fullname="Shay Gueron">
              <organization/>
            </author>
            <date year="2025" month="September"/>
          </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="NIST1" target="https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/round-1-submissions">
          <front>
            <title>RLCE-KEM</title>
            <author initials="Y." surname="Wang" fullname="Yongge 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="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="JWYWPROV" target="https://github.com/jwagrunner/oqs-provider">
          <front>
            <title>oqs-provider</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="OQSPROV" target="https://github.com/open-quantum-safe/oqs-provider/">
          <front>
            <title>OQS Provider for OpenSSL 3</title>
            <author initials="O. Q. S." surname="Project" fullname="Open Quantum Safe Project">
              <organization/>
            </author>
            <date year="2023" month="July"/>
          </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="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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
7PkY21S5MYBJuAyFgGM2mzTJSBsBAhFlW62pRyFZZBBP7vG2G9rJEj0P6I+5
Azy8x91HlYvSUZT5vA57By7Rk0VRTMqQLleWDJUKq0BQaYX5nzhHmKxQSU+J
F6mlRVULAJDZBPu9HQaZ29SY6dlDVh9dXZ5f301en19dvZu8vbyenP96N7k6
v/7+7nUdLU5FahVf1yL4GIN2jcrttNXKWmFgnBKsqnDvXqS3VZnbfVPFoWUP
ooIgDHzHWHa2+ioObPmxsWTEezLijI+J2rHMKwKjiCWMKLEjqwi0EjCRRkhJ
YwcJsHOWbk/D+coZxOTwUmTTJPpUsEN5d/DpAsJA5OIbstqnmaMQpZnTDDSA
tMCirQwh2NbRLo1yoIp1tkpXmdiW3FEUQgkzZa828LaCQBmuZVY3jDTjWBbg
rTMpFI50BlkLc2RIN20yXHbJLFgTUA53Lo9NrCIqBO87IjVZkiM3syzSH8oy
EErh6D0zC77S1S03ww3PKJe5EeYLEezb4nty+bQmFK/5VAZdldK9U9n4nMNg
JshjVbGgoia5AhEkySwBCiGrptudStlc0GSsX5Km00uKpoK0M2DM4Am00MbU
h1jnzVuY8SdoUathgpH9rvNJ7RwsDvYv9vdsY3shpjGeIVm052Vbsva63JqR
DR6xgWEKvpBQtuXfd7UCAltiKHgRMPwhPQC9w59OA0QESbPbKHmKwSg7DVBC
mcetB/hL1vRzJztj+wmJoZZ/64FGmRkpy/defMKFE0dco10pq4+HA/2+/QB6
15956M7WOMC/qHTwM7iE/XXh+m604M6nLSj7UjEkY+9PM/+QnYFZ9uJe9P49
h10NIQMAywBX/K8Dof8V+L8w670J2HdlTWo5tP7O2GUaQ/aDmIMuiRdrfdvD
xL3UZEWaaAYh9nbSnSU/0Qt9IlHDY3kYrI7cOCEA2+llOcVpVHmWVjwujDXc
LTGzbXlgdghYC1P/9UmbOi2PlFVBALKozsaAVnFiB1bnESunxN7/PkIIw3vN
cYlDawYrOYm4HfLi5O/vv9Lk6dR6MMKcfHIN06st5YRdqG3ntQJWRP0r97NO
xU6IBShZ5vFURp9Lr1kSVoM4/l9+D5OWg7BkgF5cXoDG+RRtAxy7viFDVhdV
gyp+f1Qav28Sa8gUBtaXZPWLKSbSuhCpk90ME1weGR/MrRt4h+YdHYwmi1jj
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
s2q4At9sTCKU828a+rNEHNfICVWj2coif8KAwY2yxFBKSycawnKjBmjbCDLR
YlszLFa2qsWgKYtVtRC3sKrJnsLHOIzg4EqbKnUXn7eklEtTgo85zmbjhamz
k5lsyUOSUVYgKtMKZKETScuo97fK2LiqxK2MnYsbWiJlbcKCxmZkvXLSNLVQ
4jtk5ULfsHeE40/ANSM889sws75NIZa3wt+6cn28L2aU3Qmm3VlLPZuaKM0z
4Xkvbs8VIV6VN3zuVjO6xEpejtUXd4f1MR2gzqTKy7PMDLIsC6cyepo+czxy
J26xe7812Bu0er2+uNyiKWvRhbGodo4NlcLCwiwzLlHRoCjiv2hh5n8MZWfL
kxarJNW/sWanVttc0kMUlIVAS47QudFSr3QvXC4ji/VxfuAx4r7SsYkwYm72
PvvRIbrzTfw2z726mMq4lEq5qCswaGjCklr77F6b4oU5YpdM1N48w99jea9u
8rxXjq1+eyXdO0dvW0gP4bmJcxTQWgTCNhBR2BaL4k/efCvS7xu7RtrVNoXT
FmQ+pJjUQZmhpYfL7s/rTAQMTIZ5n/62z32OcTXrW9Nwl5UZ3WeuRUt9Ti2B
VHnUhFjhV8EK+DVDhLKzc0rCpcCU6KlngIlllUPmBZdTO7vOcTuIUOCKIlqr
nZbxJFUtyLKQmEexkYyrPt+7cxIujV7qFe/aJaut7Fa3TPNlTLKpMFCqMcmR
+RIQwc10hRpxIBEhu4RJ3I2o7jCwyTx26P6wEyF/g/17oug4WYI1TIGJkbyH
jnS2OtyF9EVqafEt4+wN9CscOdDKGPTAAMWx0nKSdED9YJExVEuz21pZuLtl
HhdrlZ3uEmQvOefQocpNyjkjVuYZawAvb39YaP9GWdRalX2qqgqTNCXE0MIk
W1ztJWJ4ueuk0iRretxfmId01Y24T5pKCrJaTzwtgVys0VhAIaqLFQwlFz2x
kksU5BthY9pAEf0CR+3erzyLSmPKF1kLk0XI8sOLAUR9WXrxXRl7aFTNi2Tp
Cmdp8bLbCPQbuYyFyF95kNBdeygi6jrTkSzdsrJrC0Oe2oTiiIofoKEr2ttG
e1EOgjFy2ElJ9i5Pr08Lg96EwZQi9KF2LXDR5pF3gZaYBHkWpgOEjzy9AkDi
DZ4nII5niDBST4dslHFkSsXPoo5ZGI74i2n36HJl1LqmO4PNAE6NOp3gXQOY
26/EKQVCTT1WEW5VjKugFyUtAdghqrDaUj8QJl3soi6VjodpkkYbjLpvBTtq
95SKfePzarORWDdErDO6IVIGnzd0zNPN6PfFPUTh7C49ZAHtTl1EIe0uXWRB
7cYuwsfIN/mGndoPoEVAI82FEqz9dSJ+RJg7/12fwWry+icUVMt/YOsgyf+S
pdjXzR/2lM4d2EnOoxsJ/hICFDOPo8eHNmnIyeO0s8tWnAzesttgUS8pKESS
JmDwJojZFeo+HAVZcca5M7XsB9TRwi+Tya4sUiSUAZpNqZuFl8Jwp6NjqvxN
mEb9+MoiWEbSIT+zwNjGHyoBfv7TVYc03TD7/b0z/G1FsJ3ArsGrTp6gRSKp
Mec+6iueN/an4gwgbZTi4vK/GWXBOAZtUMKrkG2kdSSvb44JARHkgs3Chf0Q
20hH4SG0lk7w5LfDmc2+d+PXyRTTNHgTZIC7Z4qGdBkiMHm8lZ7CEdCo8URM
J2plyxlJi60M/mpHp2xxzcvXaVTjYvVqor/He+fviVwIPt68S/Vm8wQPsQIg
C/EDC0+hGwty2+kV2YXtoOF2eKclHSfVjk3pJ0VjmbgT2P4tkvYk3jm7BqZs
0ZVjTXl9OXJl7f8AULMCkHl8AAA=

-->

</rfc>
