<?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.6.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mattsson-tls-compact-ecc-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="Compact ECDSA and ECDHE">Compact ECDHE and ECDSA Encodings for TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-mattsson-tls-compact-ecc-latest"/>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization abbrev="Ericsson">Ericsson AB</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <date year="2023" month="January" day="17"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <t>The encodings used in the ECDHE groups secp256r1, secp384r1, and secp521r1 and the ECDSA signature algorithms ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, and ecdsa_secp521r1_sha512 have significant overhead and the ECDSA encoding produces variable-length signatures. This document defines new optimal fixed-length encodings and registers new ECDHE groups and ECDSA signature algorithms using these new encodings. The new encodings reduce the size of the ECDHE groups with 33, 49, and 67 bytes and the ECDSA algorithms with an average of 7 bytes. These new encodings also work in DTLS 1.3 and are especially useful in cTLS.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://emanjon.github.io/draft-mattsson-tls-compact-ecc/draft-mattsson-tls-compact-ecc.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mattsson-tls-compact-ecc/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security Working Group 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/emanjon/draft-mattsson-tls-compact-ecc"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The encodings used in the ECDHE groups secp256r1, secp384r1, and secp521r1 and the ECDSA signature algorithms ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, and ecdsa_secp521r1_sha512 have significant overhead and the ECDSA encodings produces variable-length signatures. This document defines new optimal fixed-length encodings and registers new ECDHE groups and ECDSA signature algorithms using these new encodings. The new encodings reduce the size of the ECDHE groups with 33, 49, and 67 bytes and the ECDSA algorithms with an average of 7 bytes. These new encodings also work in DTLS 1.3 <xref target="RFC9147"/> and are especially useful in cTLS <xref target="I-D.ietf-tls-ctls"/>. When secp256r1 and ecdsa_secp256r1_sha256 are used as a replacement for the the old encdoding in e.g., the cTLS template-based specialization mechanism they reduce the size of the TLS handshake with on average 80 bytes.</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>
    </section>
    <section anchor="compact-ecdhe-encoding">
      <name>Compact ECDHE Encoding</name>
      <t>The encoding of the ECDHE groups secp256r1, secp384r1, and secp521r1 have significant overhead. This document specifies a new optimal fixed-length encoding for the groups. The new encoding is defined as a compression of the UncompressedPointRepresentation structure. Given a UncompressedPointRepresentation structure <xref target="RFC8446"/></t>
      <artwork><![CDATA[
      struct {
          uint8 legacy_form = 4;
          opaque X[coordinate_length];
          opaque Y[coordinate_length];
      } UncompressedPointRepresentation;
]]></artwork>
      <t>the legacy_form and Y field are omitted to create a CompactRepresentation structure.</t>
      <artwork><![CDATA[
      struct {
          opaque X[coordinate_length];
      } CompactRepresentation;
]]></artwork>
      <t>The resulting groups are called secp256r1_compact, secp384r1_compact, and secp521r1_compact. The new encodings have CompactRepresentation structures of length 32, 48, and 66 bytes, and reduce the size with 33, 49, and 67 bytes respectively. For secp256r1_compact, secp384r1_compact, and secp521r1_compact the opaque key_exchange field contains the serialized value of the CompactRepresentation struct:</t>
      <table anchor="ecdhe-table">
        <name>Compact ECDHE Groups</name>
        <thead>
          <tr>
            <th align="right">Value</th>
            <th align="left">Description</th>
            <th align="right">Recommended</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD1</td>
            <td align="left">secp256r1_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
          <tr>
            <td align="right">TBD2</td>
            <td align="left">secp384r1_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
          <tr>
            <td align="right">TBD3</td>
            <td align="left">secp521r1_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
        </tbody>
      </table>
      <section anchor="example-compact-ecdhe-encoding">
        <name>Example Compact ECDHE Encoding</name>
        <t>The following shows an example compact ECDHE encoding. <xref target="ecdhe-old"/> shows a 65 bytes ecdsa_secp256r1_sha256 UncompressedPointRepresentation structure.</t>
        <figure anchor="ecdhe-old">
          <name>secp256r1</name>
          <artwork><![CDATA[
          04 A6 DA 73 92 EC 59 1E 17 AB FD 53 59 64 B9 98
          94 D1 3B EF B2 21 B3 DE F2 EB E3 83 0E AC 8F 01
          51 81 26 77 C4 D6 D2 23 7E 85 CF 01 D6 91 0C FB
          83 95 4E 76 BA 73 52 83 05 34 15 98 97 E8 06 57
          80
]]></artwork>
        </figure>
        <t><xref target="ecdhe-new"/> shows the 32 bytes secp256r1_compact CompactRepresentation structure encoding of the same key share.</t>
        <figure anchor="ecdhe-new">
          <name>secp256r1_compact</name>
          <artwork><![CDATA[
          A6 DA 73 92 EC 59 1E 17 AB FD 53 59 64 B9 98 94
          D1 3B EF B2 21 B3 DE F2 EB E3 83 0E AC 8F 01 51
]]></artwork>
        </figure>
      </section>
      <section anchor="implementation-considerations-for-compact-representation">
        <name>Implementation Considerations for Compact Representation</name>
        <t>For compatibility with APIs a compressed y-coordinate might be required. For validation or for compatibility with APIs that do not support the full <xref target="SECG"/> format an uncompressed y-coordinate might be required (using the notation in <xref target="SECG"/>):</t>
        <ul spacing="normal">
          <li>If a compressed y-coordinate is required, then the value ~yp set to zero can be used. The compact representation described above can in such a case be transformed into the SECG point compressed format by prepending X with the single byte 0x02 (i.e., M = 0x02 || X).</li>
          <li>If an uncompressed y-coordinate is required, then a y-coordinate has to be calculated following Section 2.3.4 of <xref target="SECG"/> or Appendix C of <xref target="RFC6090"/>. Any of the square roots (see <xref target="SECG"/> or <xref target="RFC6090"/>) can be used. The uncompressed SECG format is M = 0x04 || X || Y.</li>
        </ul>
        <t>For example: The curve P-256 has the parameters (using the notation in <xref target="RFC6090"/>)</t>
        <ul spacing="normal">
          <li>p = 2<sup>256</sup> - 2<sup>224</sup> + 2<sup>192</sup> + 2<sup>96</sup> - 1</li>
          <li>a = -3</li>
          <li>b = 410583637251521421293261297800472684091144410159937255
54835256314039467401291</li>
        </ul>
        <t>Given an example x:</t>
        <ul spacing="normal">
          <li>x = 115792089183396302095546807154740558443406795108653336
398970697772788799766525</li>
        </ul>
        <t>we can calculate y as the square root w = (x<sup>3</sup> + a <contact fullname="⋅"/> x + b)<sup>((p + 1)/4)</sup> (mod p)</t>
        <ul spacing="normal">
          <li>y = 834387180070192806820075864918626005281451259964015754
16632522940595860276856</li>
        </ul>
        <t>Note that this does not guarantee that (x, y) is on the correct elliptic curve. A full validation according to Section 5.6.2.3.3 of <xref target="SP-800-56A"/> can be achieved by also checking that 0 <contact fullname="≤"/> x &lt; p and that y<sup>2</sup> <contact fullname="≡"/> x<sup>3</sup> + a <contact fullname="⋅"/> x + b (mod p).</t>
      </section>
    </section>
    <section anchor="compact-ecdsa-encoding">
      <name>Compact ECDSA Encoding</name>
      <t>The variable-length encoding of the ECDSA signature algorithms ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, and ecdsa_secp521r1_sha512 specified in <xref target="RFC8446"/> have significant overhead.</t>
      <t>This document specifies a new optimal fixed-length encoding for the algorithms. The new encoding is defined as a compression of the DER-encoded ECDSA-Sig-Value structure. Given a DER-encoded ECDSA-Sig-Value structure <xref target="RFC5480"/></t>
      <artwork><![CDATA[
      Ecdsa-Sig-Value ::= SEQUENCE {
          r       INTEGER,
          s       INTEGER
      }
]]></artwork>
      <t>the SEQUENCE type, INTEGER type, and length fields are omitted and if necessary the two INTEGER value fields are truncated (at most a single zero byte) or left padded with zeroes to the fixed length L. For secp256r1, secp384r1, and secp521r1, L is 32, 48, and 66 bytes respectively. The resulting signatures are called ecdsa_secp256r1_sha256_compact, ecdsa_secp384r1_sha384_compact, and ecdsa_secp521r1_sha512_compact and has length 64, 96, and 132 bytes respectively. The new encodings reduce the size of the signatures with an average of 7 bytes. For secp256r1_compact, secp384r1_compact, and secp521r1_compact the opaque signature field contains the compressed Ecdsa-Sig-Value.</t>
      <table anchor="ecdsa-table">
        <name>Compact ECDSA Signature Algorithms</name>
        <thead>
          <tr>
            <th align="right">Value</th>
            <th align="left">Description</th>
            <th align="right">Recommended</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">TBD4</td>
            <td align="left">ecdsa_secp256r1_sha256_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
          <tr>
            <td align="right">TBD5</td>
            <td align="left">ecdsa_secp384r1_sha384_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
          <tr>
            <td align="right">TBD6</td>
            <td align="left">ecdsa_secp521r1_sha512_compact</td>
            <td align="right">Y</td>
            <td align="left">[This-Document]</td>
          </tr>
        </tbody>
      </table>
      <section anchor="example-compact-ecdsa-encoding">
        <name>Example Compact ECDSA Encoding</name>
        <t>The following shows an example compact ECDSA encoding. <xref target="ecdsa-old"/> shows a 71 bytes DER encoded ecdsa_secp256r1_sha256 ECDSA-Sig-Value structure. The values on the left are the ASN.1 tag (in hexadecimal) and the length (in decimal).</t>
        <figure anchor="ecdsa-old">
          <name>ecdsa_secp256r1_sha256</name>
          <artwork><![CDATA[
30  69: SEQUENCE {
02  33:  INTEGER
          00 D7 A4 D3 4B D5 4F 55 FE E1 A8 96 25 67 8C 3D
          D5 E5 F6 0D AC 73 EC 94 0C 5C 7B 93 04 A0 20 84
          A9
02  32:  INTEGER
          28 9F 59 5E D4 88 B9 AC 68 9A 3D 19 2B 1A 8B B3
          8F 34 AF 78 74 C0 59 C9 80 6A 1F 38 26 93 53 E8
          }
]]></artwork>
        </figure>
        <t><xref target="ecdsa-new"/> shows the 64 bytes ecdsa_secp256r1_sha256_compact encoding of the same signature.</t>
        <figure anchor="ecdsa-new">
          <name>ecdsa_secp256r1_sha256_compact</name>
          <artwork><![CDATA[
          D7 A4 D3 4B D5 4F 55 FE E1 A8 96 25 67 8C 3D D5
          E5 F6 0D AC 73 EC 94 0C 5C 7B 93 04 A0 20 84 A9
          28 9F 59 5E D4 88 B9 AC 68 9A 3D 19 2B 1A 8B B3
          8F 34 AF 78 74 C0 59 C9 80 6A 1F 38 26 93 53 E8
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Compact representation of a ECDHE key share produces the same shared secret as the uncompressed encoding and does not change any requirements on point validation. Using compact representation has some security benefits. As described in <xref target="SafeCurves"/> it helps to protect against invalid-curve attacks as an implementation will naturally detect invalid inputs when it reconstructs the missing coordinate. As not even the sign of the y-coordinate is encoded, compact representation trivially avoids so called "benign malleability" attacks where an attacker changes the sign, see <xref target="SECG"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to update the TLS Supported Groups registry <xref target="RFC8447"/> under the Transport Layer Security (TLS) Parameters heading with the contents of <xref target="ecdhe-table"/>.</t>
      <t>IANA is requested to update the TLS SignatureScheme registry <xref target="RFC8447"/> under the Transport Layer Security (TLS) Parameters heading with the contents of <xref target="ecdsa-table"/>.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5480" target="https://www.rfc-editor.org/info/rfc5480">
          <front>
            <title>Elliptic Curve Cryptography Subject Public Key Information</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="D. Brown" initials="D." surname="Brown">
              <organization/>
            </author>
            <author fullname="K. Yiu" initials="K." surname="Yiu">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography.  This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5480"/>
          <seriesInfo name="DOI" value="10.17487/RFC5480"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8447" target="https://www.rfc-editor.org/info/rfc8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy.  These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6090" target="https://www.rfc-editor.org/info/rfc6090">
          <front>
            <title>Fundamental Elliptic Curve Cryptography Algorithms</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <author fullname="K. Igoe" initials="K." surname="Igoe">
              <organization/>
            </author>
            <author fullname="M. Salter" initials="M." surname="Salter">
              <organization/>
            </author>
            <date month="February" year="2011"/>
            <abstract>
              <t>This note describes the fundamental algorithms of Elliptic Curve Cryptography (ECC) as they were defined in some seminal references from 1994 and earlier.  These descriptions may be useful for implementing the fundamental algorithms without using any of the specialized methods that were developed in following years.  Only elliptic curves defined over fields of characteristic greater than three are in scope; these curves are those used in Suite B. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6090"/>
          <seriesInfo name="DOI" value="10.17487/RFC6090"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="I-D.ietf-tls-ctls" target="https://www.ietf.org/archive/id/draft-ietf-tls-ctls-07.txt">
          <front>
            <title>Compact TLS 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Google</organization>
            </author>
            <date day="3" month="January" year="2023"/>
            <abstract>
              <t>   This document specifies a "compact" version of TLS and DTLS.  It is
   logically isomorphic to ordinary TLS, but saves space by trimming
   obsolete material, tighter encoding, a template-based specialization
   technique, and alternative cryptographic techniques. cTLS is not
   directly interoperable with TLS or DTLS, but it should eventually be
   possible for a single server port to offer cTLS alongside TLS or
   DTLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ctls-07"/>
        </reference>
        <reference anchor="SECG" target="https://www.secg.org/sec1-v2.pdf">
          <front>
            <title>Standards for Efficient Cryptography 1 (SEC 1)</title>
            <author>
              <organization/>
            </author>
            <date year="2009" month="May"/>
          </front>
        </reference>
        <reference anchor="SafeCurves" target="https://safecurves.cr.yp.to/twist.html">
          <front>
            <title>SafeCurves: choosing safe curves for elliptic-curve cryptography</title>
            <author>
              <organization/>
            </author>
            <date year="2017" month="January"/>
          </front>
        </reference>
        <reference anchor="SP-800-56A" target="https://doi.org/10.6028/NIST.SP.800-56Ar3">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</title>
            <author initials="E." surname="Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-56A Revision 3"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors want to thank <contact fullname="Erik Thormarker"/> for their valuable comments and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
JjcqiSvUlwpjIUZMgK79N/hw3fKuLQAA

-->

</rfc>
