<?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.43 (Ruby 3.2.3) -->
<rfc ipr="trust200902" docName="draft-irtf-cfrg-pairing-friendly-curves-14" category="info" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title>Pairing-Friendly Curves</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-pairing-friendly-curves-14"/>
    <author initials="Y." surname="Sakemi" fullname="Yumi Sakemi" role="editor">
      <organization>GMO CONNECT Inc.</organization>
      <address>
        <email>sakemi-yumi@gmo-connect.jp</email>
      </address>
    </author>
    <author initials="S." surname="Kanno" fullname="Satoru Kanno">
      <organization>GMO CONNECT Inc.</organization>
      <address>
        <email>kanno@gmo-connect.jp</email>
      </address>
    </author>
    <author initials="R." surname="Wahby" fullname="Riad S. Wahby">
      <organization>Carnegie Mellon University</organization>
      <address>
        <email>rsw@cs.stanford.edu</email>
      </address>
    </author>
    <date year="2026" month="September" day="07"/>
    <area>IRTF</area>
    <workgroup>CFRG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 32?>

<t>Pairing-based cryptography, a subfield of elliptic curve cryptography, has received attention due to its flexible and practical functionality. Pairings are special maps defined using elliptic curves and they can be applied to construct several cryptographic protocols such as identity-based encryption, attribute-based encryption, and so on. At CRYPTO 2016, Kim and Barbulescu proposed an efficient number field sieve algorithm named exTNFS for the discrete logarithm problem in a finite field. Several types of pairing-friendly curves such as Barreto-Naehrig curves are affected by the attack. In particular, a Barreto-Naehrig curve with a 254-bit characteristic was adopted by a lot of cryptographic libraries as a parameter of 128-bit security; however, it ensures no more than the 100-bit security level due to the effect of the attack. In this memo, we list the security levels of certain pairing-friendly curves, and motivate our choices of curves. First, we summarize the adoption status of pairing-friendly curves in standards, libraries and applications, and consider them at the 128-bit, 192-bit, and 256-bit security levels. Then, from the viewpoints of "security" and "widely used", we select the recommended pairing-friendly curves considering exTNFS. This memo also specifies the serialization and deserialization of the points and scalars that protocols exchange, restating a format that is already in widespread use, and states which of the remaining decisions belong to the calling protocol.</t>
    </abstract>
  </front>
  <middle>
    <?line 36?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="pairing-based-cryptography">
        <name>Pairing-based Cryptography</name>
        <t>Elliptic curve cryptography is an important area in currently deployed cryptography. The cryptographic algorithms based on elliptic curve cryptography, such as the Elliptic Curve Digital Signature Algorithm (ECDSA), are widely used in many applications.</t>
        <t>Pairing-based cryptography, a subfield of elliptic curve cryptography, has attracted much attention due to its flexible and practical functionality. Pairings are special maps defined using elliptic curves. Pairings are fundamental in the construction of several cryptographic algorithms and protocols such as identity-based encryption (IBE), attribute-based encryption (ABE), authenticated key exchange (AKE), short signatures, and so on. Several applications of pairing-based cryptography are currently in practical use.</t>
        <t>As the importance of pairings grows, elliptic curves where pairings are efficiently computable are studied and the special curves called pairing-friendly curves are proposed.</t>
      </section>
      <section anchor="applications-of-pairing-based-cryptography">
        <name>Applications of Pairing-based Cryptography</name>
        <t>Several applications using pairing-based cryptography have already been standardized and deployed. We list here some examples of applications available in the real world.</t>
        <t>IETF published RFCs for pairing-based cryptography such as Identity-Based Cryptography <xref target="RFC5091"/>, Sakai-Kasahara Key Encryption (SAKKE) <xref target="RFC6508"/>, and Identity-Based Authenticated Key Exchange (IBAKE) <xref target="RFC6539"/>. SAKKE is applied to Multimedia Internet KEYing (MIKEY) <xref target="RFC6509"/> and used in 3GPP <xref target="SAKKE"/>.</t>
        <t>Pairing-based key agreement protocols are standardized in ISO/IEC <xref target="ISOIEC11770-3"/>. In <xref target="ISOIEC11770-3"/>, a key agreement scheme by Joux <xref target="Joux00"/>, identity-based key agreement schemes by Smart-Chen-Cheng <xref target="CCS07"/> and Fujioka-Suzuki-Ustaoglu <xref target="FSU10"/> are specified.</t>
        <t>MIRACL implements M-Pin, a multi-factor authentication protocol <xref target="M-Pin"/>. The M-Pin protocol includes a type of zero-knowledge proof, where pairings are used for its construction.</t>
        <t>The Trusted Computing Group (TCG) specified the Elliptic Curve Direct Anonymous Attestation (ECDAA) in the specification of a Trusted Platform Module (TPM) <xref target="TPM"/>. ECDAA is a protocol for proving the attestation held by a TPM to a verifier without revealing the attestation held by that TPM. Pairings are used in the construction of ECDAA. FIDO Alliance <xref target="FIDO"/> and W3C <xref target="W3C"/> also published an ECDAA algorithm similar to TCG.</t>
        <t>Intel introduced Intel Enhanced Privacy ID (EPID) that enables remote attestation of a hardware device while preserving the privacy of the device as part of the functionality of Intel Software Guard Extensions (SGX) <xref target="EPID"/>. They extended TPM ECDAA to realize such functionality. A pairing-based EPID was proposed <xref target="BL10"/> and distributed along with Intel SGX applications.</t>
        <t>Zcash implemented their own zero-knowledge proof algorithm named Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (zk-SNARKs) <xref target="Zcash"/>. zk-SNARKs are used for protecting the privacy of transactions of Zcash. They use pairings to construct zk-SNARKs.</t>
        <t>Cloudflare introduced Geo Key Manager <xref target="Cloudflare"/> to restrict distribution of customers' private keys to a subset of their data centers. To achieve this functionality, ABE is used, and pairings take a role as a building block. In addition, Cloudflare published a new cryptographic library, the Cloudflare Interoperable, Reusable Cryptographic Library (CIRCL) <xref target="CIRCL"/> in 2019. They plan to include securely implemented subroutines for pairing computations on certain secure pairing-friendly curves in CIRCL.</t>
        <t>Currently, Boneh-Lynn-Shacham (BLS) signature schemes are being standardized <xref target="I-D.irtf-cfrg-bls-signature"/> and utilized in several blockchain projects such as Ethereum <xref target="Ethereum"/>, Algorand <xref target="Algorand"/>, Chia Network <xref target="Chia"/>, and DFINITY <xref target="DFINITY"/>. The aggregation functionality of BLS signatures is effective for their applications of decentralization and scalability.</t>
      </section>
      <section anchor="goal">
        <name>Motivation and Contribution</name>
        <t>At CRYPTO 2016, Kim and Barbulescu proposed an efficient number field sieve (NFS) algorithm for the discrete logarithm problem in a finite field GF(p^k) <xref target="KB16"/>. The attack improves the polynomial selection that is the first step in the number field sieve algorithm for discrete logarithms in GF(p^k). The idea is applicable when the embedding degree k is a composite that satisfies k = i * j with gcd(i, j) = 1 and i, j &gt; 1. The basic idea is based on the equality GF(p^k) = GF((p^i)^j) and one of the improvements for reducing the amount of cost for solving the discrete logarithm problem is using subfield calculation. Several types of pairing-friendly curves such as Barreto-Naehrig curves (BN curves) <xref target="BN05"/> and Barreto-Lynn-Scott curves (BLS curves) <xref target="BLS02"/> are affected by the attack, since a pairing-friendly curve suitable for cryptographic applications requires that the discrete logarithm problem is sufficiently difficult. Please refer to <xref target="KB16"/> for detailed ideas and calculation algorithms of the attack. In particular, BN254, which is a BN curve with a 254-bit characteristic effective for pairing calculations, was adopted by a lot of cryptographic libraries as a parameter of the 128-bit security level; however, BN254 ensures no more than the 100-bit security level due to the effect of the attack, where the security levels described in this memo correspond to the security strength of NIST recommendation <xref target="NIST"/>.</t>
        <t>To resolve this effect immediately, several research groups and implementers re-evaluated the security of pairing-friendly curves and they respectively proposed various curves that are secure against the attack <xref target="BD18"/> <xref target="BLS12-381"/>.</t>
        <t>In this memo, we list the security levels of certain pairing-friendly curves, and motivate our choices of curves. First, we summarize the adoption status of pairing-friendly curves in international standards, libraries and applications, and consider them at the 128-bit, 192-bit, and 256-bit security levels. Then, from the viewpoints of "security" and "widely used", pairing-friendly curves corresponding to each security level are selected in accordance with the security evaluation by Barbulescu and Duquesne <xref target="BD18"/>.</t>
        <t>As a result, we recommend the BLS curve with 381-bit characteristic of embedding degree 12 and the BN curve with the 462-bit characteristic for the 128-bit security level, and the BLS curves of embedding degree 48 with the 581-bit characteristic for the 256-bit security level. This memo shows their specific test vectors.</t>
        <t>This memo also specifies how the points and scalars that protocols exchange are serialized and deserialized. That format does not originate here: it comes from <xref target="ZcashRep"/> and is already relied upon by other specifications, which cite this document for it. It is restated normatively in <xref target="point-serialization"/>, together with what makes a deserialized value valid and which decisions are left to the calling protocol. Point serialization is given for BLS12-381 and BLS48-581; scalar serialization applies to all three curves.</t>
      </section>
      <section anchor="requirements-terminology">
        <name>Requirements Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
    <section anchor="preliminaries">
      <name>Preliminaries</name>
      <section anchor="elliptic-curve">
        <name>Elliptic Curves</name>
        <t>Let p be a prime number at least 5, and let q be a power of p. Let GF(q) be a finite field. The curve defined by the following equation E is called an elliptic curve:</t>
        <artwork><![CDATA[
E : y^2 = x^3 + a * x + b,
]]></artwork>
        <t>and a and b in GF(q) satisfy the discriminant inequality 4 * a^3 + 27 * b^2 != 0 mod q. This is called the Weierstrass normal form of an elliptic curve.</t>
        <t>A solution (x,y) to the equation E can be thought of as a point on the corresponding curve. For a natural number n, we define the set of (GF(q^n))-rational points of E, denoted by E(GF(q^n)), to be the set of all solutions (x,y) in GF(q^n), together with a 'point at infinity' O_E, which is defined to lie on every vertical line passing through the curve E.</t>
        <t>The set E(GF(q^n)) forms a group under a group law that can be defined geometrically as follows. For P and Q in E(GF(q^n)) define P + Q to be the reflection around the x-axis of the unique third point R of intersection of the straight line passing through P and Q with the curve E. If the straight line is tangent to E, we say that it passes through that point twice. The identity of this group is the point at infinity O_E. We also define scalar multiplication [K]P for a positive integer K as the point P added to itself (K-1) times. Here, [0]P becomes the point at infinity O_E and the relation [-K]P = -([K]P) is satisfied.</t>
      </section>
      <section anchor="pairing">
        <name>Pairings</name>
        <t>A pairing is a bilinear map defined on two subgroups of rational points of an elliptic curve. Examples include the Weil pairing, the Tate pairing, the optimal ate pairing <xref target="Ver09"/>, and so on. The optimal ate pairing is considered to be the most efficient to compute and is the one that is most commonly used for practical implementation.</t>
        <t>Let E be an elliptic curve defined over a prime field GF(p), and let r be a large prime dividing the order of E(GF(p)). Let k be the minimum integer for which r is a divisor of p^k - 1; this is called the embedding degree of E over GF(p). Let pi be the p-power Frobenius endomorphism, which maps a point (x, y) of E to (x^p, y^p), and let E(GF(p^k))[r] be the r-torsion subgroup of E(GF(p^k)). The pairing is defined on the two subgroups</t>
        <artwork><![CDATA[
G_1 = E(GF(p^k))[r] intersect ker(pi - [1]) = E(GF(p))[r],
G_2 = E(GF(p^k))[r] intersect ker(pi - [p]),
]]></artwork>
        <t>where ker(pi - [a]) denotes the set of points T with pi(T) = [a]T. For the curves considered in this document, both G_1 and G_2 have order r. G_2 is identified by the eigenvalue p, and not merely as an order r subgroup of E(GF(p^k)): that weaker description is satisfied by G_1 as well, and the pairing computed in <xref target="comp_pairing"/> is degenerate when both of its arguments are taken from G_1.</t>
        <t>Let d be a divisor of k and E' be an elliptic curve defined over GF(p^(k/d)). If there is an isomorphism psi from E'(GF(p^k)) to E(GF(p^k)), then E' is called the twist of E. It is more efficient to hold elements of G_2 as points of E'(GF(p^(k/d))), whose coordinates lie in a smaller field. Write G'_2 for the preimage of G_2 under psi, that is, the set of points Q of E'(GF(p^(k/d))) with psi(Q) in G_2. For the curves in this document, G_2 lies in the image of E'(GF(p^(k/d))) under psi, which is what makes that representation possible; since psi is injective, G'_2 is a subgroup of order r, and psi restricted to G'_2 is an isomorphism onto G_2. The formula for psi is given for each curve in <xref target="secure_params"/>. What is given there is the restriction of psi to E'(GF(p^(k/d))), which is an injective homomorphism into E(GF(p^k)) and not an isomorphism, since E'(GF(p^(k/d))) and E(GF(p^k)) differ in size. The formula is the same in either case. Where a point of G_2 is written with coordinates in this document, as in <xref target="secure_params"/> and in <xref target="point-serialization"/>, it is the corresponding point of G'_2 that is written; psi carries it back to G_2 when the pairing is evaluated. Let G_T be an order r subgroup of the multiplicative group (GF(p^k))^*; this exists by definition of k.</t>
        <t>A pairing is defined as a bilinear map e: (G_1, G_2) -&gt; G_T satisfying the following properties:</t>
        <ol spacing="normal" type="1"><li>
            <t>Bilinearity: for any S in G_1, T in G_2, and integers K and L, e([K]S, [L]T) = e(S, T)^{K * L}.</t>
          </li>
          <li>
            <t>Non-degeneracy: for every T in G_2 other than O_E, e(S, T) = 1 if and only if S = O_E; and for every S in G_1 other than O_E, e(S, T) = 1 if and only if T = O_E. The identity element has to be excluded on both sides: by bilinearity, e(S, O_E) = 1 holds for every S in G_1, and e(O_E, T) = 1 for every T in G_2.</t>
          </li>
        </ol>
        <t>In applications, it is also necessary that for any S in G_1 and T in G_2, this bilinear map is efficiently computable.</t>
        <t>We define some of the terminology used in this memo as follows:</t>
        <dl>
          <dt>GF(p):</dt>
          <dd>
            <t>a finite field with characteristic p.</t>
          </dd>
          <dt>GF(p^k):</dt>
          <dd>
            <t>an extension field of degree k.</t>
          </dd>
          <dt>(GF(p))^*:</dt>
          <dd>
            <t>the multiplicative group of GF(p).</t>
          </dd>
          <dt>(GF(p^k))^*:</dt>
          <dd>
            <t>the multiplicative group of GF(p^k).</t>
          </dd>
          <dt>b:</dt>
          <dd>
            <t>the coefficient of the curve equation E: y^2 = x^3 + b.</t>
          </dd>
          <dt>O_E:</dt>
          <dd>
            <t>the point at infinity over an elliptic curve E.</t>
          </dd>
          <dt>E(GF(p^k)):</dt>
          <dd>
            <t>the group of GF(p^k)-rational points of E.</t>
          </dd>
          <dt>#E(GF(p^k)):</dt>
          <dd>
            <t>the number of GF(p^k)-rational points of E.</t>
          </dd>
          <dt>r:</dt>
          <dd>
            <t>the order of G_1 and G_2.</t>
          </dd>
          <dt>E(GF(p^k))[r]:</dt>
          <dd>
            <t>the r-torsion subgroup of E(GF(p^k)), that is, the set of points T of E(GF(p^k)) with [r]T = O_E.</t>
          </dd>
          <dt>pi:</dt>
          <dd>
            <t>the p-power Frobenius endomorphism, which maps a point (x, y) of E to (x^p, y^p).</t>
          </dd>
          <dt>BP:</dt>
          <dd>
            <t>a point in G_1. (The 'base point' of a cyclic subgroup of G_1)</t>
          </dd>
          <dt>h:</dt>
          <dd>
            <t>the cofactor h = #E(GF(p)) / r, where gcd(h, r) = 1.</t>
          </dd>
          <dt>h':</dt>
          <dd>
            <t>the cofactor h' = #E'(GF(p^(k/d))) / r, where gcd(h', r) = 1.</t>
          </dd>
          <dt>BP':</dt>
          <dd>
            <t>a point in G'_2. (The 'base point' of a cyclic subgroup of G'_2)</t>
          </dd>
        </dl>
      </section>
      <section anchor="BNdef">
        <name>Barreto-Naehrig Curves</name>
        <t>A BN curve <xref target="BN05"/> is a family of pairing-friendly curves proposed in 2005. A pairing over BN curves constructs optimal ate pairings.</t>
        <t>A BN curve is defined by elliptic curves E and E' parameterized by a well-chosen integer t. E is defined over GF(p), where p is a prime number and at least 5, and E(GF(p)) has a subgroup of prime order r. The characteristic p and the order r are parameterized by</t>
        <artwork><![CDATA[
p = 36 * t^4 + 36 * t^3 + 24 * t^2 + 6 * t + 1
r = 36 * t^4 + 36 * t^3 + 18 * t^2 + 6 * t + 1
]]></artwork>
        <t>for an integer t.</t>
        <t>The elliptic curve E has an equation of the form E: y^2 = x^3 + b, where b is a primitive element of the multiplicative group (GF(p))^* of order (p - 1).</t>
        <t>In the case of BN curves, we can use twists of the degree 6. If nu is an element that is neither a square nor a cube in an extension field GF(p^2), the twist E' of E is defined over an extension field GF(p^2) by the equation E': y^2 = x^3 + b' with b' = b / nu or b' = b * nu. BN curves are called D-type if b' = b / nu, and M-type if b' = b * nu. The embedding degree k is 12.</t>
        <t>A pairing e is defined by taking G_1 as a subgroup of E(GF(p)) of order r, G_2 as defined in <xref target="pairing"/> and represented by the subgroup G'_2 of E'(GF(p^2)), and G_T as an order r subgroup of the multiplicative group (GF(p^12))^*.</t>
      </section>
      <section anchor="BLSdef">
        <name>Barreto-Lynn-Scott Curves</name>
        <t>A BLS curve <xref target="BLS02"/> is another family of pairing-friendly curves proposed in 2002. Similar to BN curves, a pairing over BLS curves constructs optimal ate pairings.</t>
        <t>A BLS curve is defined by elliptic curves E and E' parameterized by a well-chosen integer t. E is defined over a finite field GF(p) by an equation of the form E: y^2 = x^3 + b, and its twist E': y^2 = x^3 + b', is defined in the same way as BN curves. In contrast to BN curves, E(GF(p)) does not have a prime order. Instead, its order is divisible by a large parameterized prime r and denoted by h * r with cofactor h. The pairing is defined on the r-torsion points. In the same way as BN curves, BLS curves can be categorized as D-type and M-type.</t>
        <t>BLS curves vary in accordance with different embedding degrees. In this memo, we deal with the BLS12 and BLS48 families with embedding degrees 12 and 48 with respect to r, respectively.</t>
        <t>In BLS curves, parameters p and r are given by the following equations:</t>
        <artwork><![CDATA[
BLS12:
    p = (t - 1)^2 * (t^4 - t^2 + 1) / 3 + t
    r = t^4 - t^2 + 1
BLS48:
    p = (t - 1)^2 * (t^16 - t^8 + 1) / 3 + t
    r = t^16 - t^8 + 1
]]></artwork>
        <t>for a well chosen integer t where t must be 1 (mod 3).</t>
        <t>A pairing e is defined by taking G_1 as a subgroup of E(GF(p)) of order r, G_2 as defined in <xref target="pairing"/> and represented by the subgroup G'_2 of E'(GF(p^2)) for BLS12 and of E'(GF(p^8)) for BLS48, and G_T as an order r subgroup of the multiplicative group (GF(p^12))^* for BLS12 and of the multiplicative group (GF(p^48))^* for BLS48.</t>
      </section>
    </section>
    <section anchor="security_pfc">
      <name>Security of Pairing-Friendly Curves</name>
      <section anchor="evaluating-the-security-of-pairing-friendly-curves">
        <name>Evaluating the Security of Pairing-Friendly Curves</name>
        <t>The security of pairing-friendly curves is evaluated by the hardness of the following discrete logarithm problems:</t>
        <ul spacing="normal">
          <li>
            <t>The elliptic curve discrete logarithm problem (ECDLP) in G_1 and G_2</t>
          </li>
          <li>
            <t>The finite field discrete logarithm problem (FFDLP) in G_T</t>
          </li>
        </ul>
        <t>There are other hard problems over pairing-friendly curves used for proving the security of pairing-based cryptography. Such problems include the computational bilinear Diffie-Hellman (CBDH) problem, the bilinear Diffie-Hellman (BDH) problem, the decision bilinear Diffie-Hellman (DBDH) problem, the gap DBDH problem, etc. <xref target="ECRYPT"/>. Almost all of these variants are reduced to the hardness of discrete logarithm problems described above and are believed to be easier than the discrete logarithm problems.</t>
        <t>Although it would be sufficient to attack any of these problems to attack pairing-based cryptography, the only known attacks thus far attack the discrete logarithm problem directly, so we focus on the discrete logarithm in this memo.</t>
        <t>The security levels of pairing-friendly curves are estimated by the computational cost of the most efficient algorithm for solving the above discrete logarithm problems. The best-known algorithms for solving the discrete logarithm problems are based on Pollard's rho algorithm <xref target="Pollard78"/> and Index Calculus <xref target="HR83"/>. To make index calculus algorithms more efficient, number field sieve (NFS) algorithms are utilized.</t>
      </section>
      <section anchor="impact">
        <name>Impact of Recent Attacks</name>
        <t>In 2016, Kim and Barbulescu proposed a new variant of the NFS algorithms, the extended tower number field sieve (exTNFS), which drastically reduces the complexity of solving FFDLP <xref target="KB16"/>. The exTNFS improves the polynomial selection that is the first step in the number field sieve algorithm for discrete logarithms in GF(p^k). The idea is applicable when the embedding degree k is a composite that can be written as k = i * j with gcd(i, j) = 1 and i, j &gt; 1. Any k divisible by 6 meets this condition, taking i to be the largest power of 2 dividing k and j to be k / i; <xref target="KB16"/> accordingly gives k = 6 as the first case it treats. BN curves and BLS curves, whose embedding degree is divisible by 6, are therefore affected by the exTNFS. The basic idea of the exTNFS is based on the equality GF(p^k) = GF((p^i)^j) and one of the improvements for reducing the amount of cost for solving FFDLP is using subfield calculation. Please refer to <xref target="KB16"/> for detailed ideas and calculation algorithms of exTNFS. Due to exTNFS, the security levels of certain pairing-friendly curves asymptotically dropped down. For instance, Barbulescu and Duquesne estimated that the security of the BN curves, which had been believed to provide 128-bit security (BN256, for example) was reduced to approximately 100 bits <xref target="BD18"/>. Here, the security levels described in this memo correspond to the security strength of NIST recommendation <xref target="NIST"/>.</t>
        <t>There has since been research into the minimum bit length of the parameters of pairing-friendly curves for each security level when applying exTNFS as an attacking method for FFDLP. For 128-bit security, Barbulescu and Duquesne estimated the minimum bit length of p of BN curves and BLS12 curves after exTNFS as 461 bits <xref target="BD18"/>. For 256-bit security, Kiyomura et al. estimated the minimum bit length of p^k of BLS48 curves as 27,410 bits, which indicated 572 bits of p <xref target="KIK17"/>.</t>
      </section>
    </section>
    <section anchor="secure_params">
      <name>Selection of Pairing-Friendly Curves</name>
      <t>In this section, we introduce some of the known secure pairing-friendly curves that consider the impact of exTNFS.</t>
      <t>First, we show the adoption status of pairing-friendly curves in standards, libraries and applications, and consider them at the 128-bit, 192-bit, and 256-bit security levels. Then, from the viewpoints of "security" and "widely used", pairing-friendly curves corresponding to each security level are selected and their parameters are indicated.</t>
      <t>In our selection policy, it is important that selected curves are shown in peer-reviewed papers for security and that they are widely used in cryptographic libraries. In addition, "efficiency" is one of the important aspects but greatly dependent on implementations, so we choose to prioritize "security" and "widely used" over "efficiency" in consideration of future interconnections and interoperability over the internet.</t>
      <t>Within this policy, when "widely used" does not by itself distinguish between candidate curves at a given security level, we prefer the curve that provides security margin above the nominal security level: a margin advantage is a security consideration, and by the priority above it outranks an efficiency advantage of a lower-margin alternative. BLS12-381 is the one exception to this preference for margin: although its security level is estimated at approximately 126 bits <xref target="GMT19"/>, slightly below the nominal 128-bit target, it is retained because its adoption in production deployments (see <xref target="impl"/>) decisively satisfies the "widely used" criterion. Where no candidate at a given security level satisfies "widely used", as is currently the case at the 256-bit level, this exception does not apply, and the preference for margin governs without qualification.</t>
      <t>As a result, we recommend the BLS curve with 381-bit characteristic of embedding degree 12 and the BN curve with the 462-bit characteristic for the 128-bit security level, and the BLS curves of embedding degree 48 with the 581-bit characteristic for the 256-bit security level. On the other hand, we do not show the parameters for 192-bit security here because there are no curves that match our selection policy.</t>
      <section anchor="impl">
        <name>Adoption Status of Pairing-friendly Curves</name>
        <t>We show the pairing-friendly curves that have been selected by existing standards, cryptographic libraries, and applications. A comprehensive curve-by-curve comparison, including proposed alternatives that were not selected, is maintained at <eref target="https://cfrg.github.io/draft-irtf-cfrg-pairing-friendly-curves/adoption-status.html">https://cfrg.github.io/draft-irtf-cfrg-pairing-friendly-curves/adoption-status.html</eref>.</t>
        <t>The adoption status of pairing-friendly curves is surveyed in standards, libraries and applications. The details are described as the following subsections. A BN curve with a XXX-bit characteristic p is denoted as BNXXX and a BLS curve of embedding degree k with a XXX-bit p is denoted as BLSk-XXX.</t>
        <t>Parameters whose security level is more than 5 bits below the 128-bit level are not candidates for selection here, because this document recommends against using parameters that fall that far below the 128-bit level. They are still named in the subsections below wherever a standard or a library supports them, and <xref target="adoption_status_100bit_security"/> tabulates that adoption, which is useful information for implementers.</t>
        <t>The security level for each curve is evaluated in accordance with <xref target="BD18"/>, <xref target="GMT19"/>, <xref target="MAF19"/> and <xref target="FK18"/>. For the 128-bit level, <xref target="G20"/> revisits the Special variant of the tower number field sieve, which applies to pairing-friendly curves because their characteristic is a polynomial of moderate degree with tiny coefficients evaluated at a seed. It revises the estimates of earlier work downward for the families it examines, with BLS12 and BN as the exceptions that it leaves unchanged. Note that the Freeman curves <xref target="Freeman06"/> and MNT curves <xref target="MNT01"/> are not included in this survey because <xref target="BD18"/> does not show the security levels of these curves.</t>
        <section anchor="standardization">
          <name>International Standards</name>
          <t>ISO/IEC 15946 series specifies public-key cryptographic techniques based on elliptic curves. The third edition of ISO/IEC 15946-5 <xref target="ISOIEC15946-5"/> (published 2022) reorganized the numerical examples and extended coverage to include BLS12, BLS24, and BLS48 curves. The BN462 parameter in this document matches the numerical example in Annex D.2.3 of <xref target="ISOIEC15946-5"/> exactly (t = 2^114 + 2^101 - 2^14 - 1, written u there), and the BLS48-581 parameter matches Annex D.3.5 exactly (t = -2^32 - 2^30 - 2^10 + 2^7 - 1). The same edition introduces a post-exTNFS security guideline that the characteristic p of BN and BLS12 curves should be at least 461 bits for the 128-bit security level. As described below, BN curves with 256-bit p and 512-bit p from earlier editions of ISO/IEC 15946-5 are referenced by other standards and libraries; these curves are denoted as BN256I and BN512I, where the suffix 'I' is given from the initials of the standard name ISO.</t>
          <t>TCG adopts the BN256I and a BN curve with 638-bit p specified by their own <xref target="TPM"/>. FIDO Alliance <xref target="FIDO"/> and W3C <xref target="W3C"/> adopt BN256I, BN512I, the BN638 by TCG, and the BN curve with 256-bit p proposed by Devegili et al. <xref target="DSD07"/> (named BN256D). The suffix 'D' of BN256D is given from the initials of the first author's name of the paper which proposed the parameter.</t>
        </section>
        <section anchor="cryptographic_libraries">
          <name>Cryptographic Libraries</name>
          <t>There are a lot of cryptographic libraries that support pairing calculations.</t>
          <t><xref target="blst"/> is a high-performance pairing library maintained by Supranational. It supports BLS12-381 and is used in production by Ethereum consensus clients, Filecoin, and other applications.</t>
          <t>Several additional actively maintained libraries support BLS12-381. <xref target="gnark-crypto"/>, developed by Consensys, supports BLS12-381, BN_SNARK1, BLS12-377, BLS24-315, and BW6-761. <xref target="noble-curves"/> is a JavaScript/TypeScript library by Paul Miller supporting BLS12-381 and BN_SNARK1. The arkworks ecosystem <xref target="arkworks"/> provides Rust crates for pairing-friendly curves used in zero-knowledge proof systems, including BLS12-381 and BN_SNARK1. <xref target="constantine"/> is a cryptographic library written in Nim that supports BLS12-381, BN254N, BN_SNARK1, BLS12-377, and BW6-761. <xref target="CIRCL"/> is the Cloudflare Interoperable, Reusable Cryptographic Library and includes support for BLS12-381. <xref target="zkcrypto"/> is a collection of Rust crates for zero-knowledge cryptography supporting BLS12-381. These libraries name BN_SNARK1 after the size of its field, as bn254; <xref target="EIP197"/> calls the same curve alt_bn128.</t>
          <t>PBC is a library for pairing-based cryptography published by Stanford University that supports BN curves, MNT curves, Freeman curves, and supersingular curves <xref target="PBC"/>. Users can generate pairing parameters by using PBC and use pairing operations with the generated parameters.</t>
          <t><xref target="mcl"/> is a library for pairing-based cryptography that supports four BN curves and BLS12-381 <xref target="GMT19"/>. These BN curves include BN254 proposed by Nogami et al. <xref target="NASKM08"/> (named BN254N), BN_SNARK1 suitable for SNARK applications <xref target="libsnark"/>, BN382M, and BN462. The suffix 'N' of BN254N and the suffix 'M' of BN382M are respectively given from the initials of the first author's name of the proposed paper and the library's name mcl. Kyushu University published a library that supports BLS48-581 <xref target="BLS48"/>. The University of Tsukuba Elliptic Curve and Pairing Library (TEPLA) <xref target="TEPLA"/> supports two BN curves, BN254N and BN254 proposed by Beuchat et al. <xref target="BGMORT10"/> (named BN254B). The suffix 'B' of BN254B is given from the initials of the first author's name of the proposed paper. Intel published a cryptographic library named Intel Integrated Performance Primitives (Intel-IPP) <xref target="Intel-IPP"/> and the library supports BN256I.</t>
          <t><xref target="RELIC"/> uses various types of pairing-friendly curves including six BN curves (BN158, BN254N, BN256R, BN382R, BN446, and BN638), where BN256R and BN382R are RELIC specific parameters that are different from BN256I, BN256D, and BN382M. The suffix 'R' of BN256R and BN382R is given from the initials of the library's name RELIC. In addition, RELIC supports six BLS curves (BLS12-381, BLS12-446, BLS12-455, BLS12-638, BLS24-477, and BLS48-575 <xref target="MAF19"/>), a Cocks-Pinch curve of embedding degree 8 with 544-bit p (named CP8-544) <xref target="GMT19"/>, pairing-friendly curves constructed by Scott et al. <xref target="SG18"/> based on Kachisa-Scott-Schaefer curves with embedding degree 54 with 569-bit p (named K54-569) <xref target="MAF19"/>, a KSS curve <xref target="KSS08"/> of embedding degree 18 with 508-bit p (named KSS18-508) <xref target="AFKMR12"/>, Optimal TNFS-secure curve <xref target="FM19"/> of embedding degree 8 with 511-bit p (OT8-511), and a supersingular curve <xref target="S86"/> with 1536-bit p (SS-1536).</t>
          <t>MIRACL Core <xref target="MIRACL"/> (the successor to the Apache Milagro Crypto Library (AMCL) <xref target="AMCL"/>) supports five BLS curves (BLS12-381, BLS12-461, BLS24-479, BLS48-556, and BLS48-581) and five BN curves (BN254N, BN254CX proposed by CertiVox, BN256I, BN512I, and BN462).</t>
          <t>Adjoint published a library that supports the BLS12-381 and six BN curves (BN_SNARK1, BN254B, BN254N, BN254S1, BN254S2, and BN462) <xref target="AdjointLib"/>, where BN254S1 and BN254S2 are BN curves adopted by an old version of AMCL <xref target="AMCLv2"/>. The suffix 'S' of BN254S1 and BN254S2 is given from the initials of the name of the developer who proposed these parameters.</t>
          <t>The Celo foundation published the bls12377js library <xref target="bls12377js"/>. The supported curve is the BLS12-377 curve which is shown in <xref target="BCGMMW20"/>.</t>
        </section>
        <section anchor="applications">
          <name>Applications</name>
          <t>Zcash uses BN_SNARK1 in their library <xref target="libsnark"/>. In response to the exTNFS attacks, they proposed new parameters using the BLS12-381 curve <xref target="BLS12-381"/> <xref target="GMT19"/> and published its implementation <xref target="zkcrypto"/>.</t>
          <t>Ethereum adopted BLS12-381 for its consensus layer. The BLS12-381 precompile is also specified as an Ethereum precompile contract in EIP-2537 <xref target="EIP2537"/>, enabling on-chain pairing operations. <xref target="Filecoin"/> uses BLS12-381 via the blst library <xref target="blst"/>. Chia Network published their implementation <xref target="Chia"/>, which uses the blst library <xref target="blst"/>. DFINITY uses mcl, and Algorand published an implementation <xref target="go-algorand"/> whose virtual machine provides curve operations and a pairing check for BLS12-381 and for BN_SNARK1. The pairing check on BN_SNARK1 is also available on Ethereum, as the precompiled contract of <xref target="EIP197"/>.</t>
        </section>
      </section>
      <section anchor="for-128-bits-of-security">
        <name>For 128-bit Security</name>
        <t>The survey in <xref target="impl"/> shows a lot of cases of adopting BN and BLS curves. Among them, BLS12-381 and BN462 match our selection policy. In particular, the one that best matches the policy is BLS12-381 from the viewpoint of "widely used": as <xref target="secure_params"/> states, its adoption in production deployments is what makes it the one exception to the preference for margin. We therefore introduce the parameters of BLS12-381 in this memo.</t>
        <t>On the other hand, from the viewpoint of the future use, the parameter of BN462 is also introduced. As shown in recent security evaluations for BLS12-381 <xref target="BD18"/> <xref target="GMT19"/>, its security level is close to 128 bits but less than 128 bits. If the attack is improved even a little, BLS12-381 will not be suitable for the curve of the 128-bit security level. As curves of 128-bit security level are currently the most widely used, we recommend both BLS12-381 and BN462 in this memo in order to have a more efficient and a more prudent option respectively.</t>
        <section anchor="parameter-BLS12_381">
          <name>BLS Curves for the 128-bit Security Level (BLS12-381)</name>
          <t>In this part, we introduce the parameters of the Barreto-Lynn-Scott curve of embedding degree 12 with 381-bit p that is adopted by a lot of applications such as Zcash <xref target="Zcash"/>, Ethereum <xref target="Ethereum"/>, and so on.</t>
          <t>The BLS12-381 curve is shown in <xref target="BLS12-381"/> and it is defined by the parameter</t>
          <artwork><![CDATA[
t = -2^63 - 2^62 - 2^60 - 2^57 - 2^48 - 2^16
]]></artwork>
          <t>where the size of p becomes 381 bits.</t>
          <t anchor="tower_bls12_381">For the finite field GF(p), the towers of extension field GF(p^2), GF(p^6) and GF(p^12) are defined by indeterminates u, v, and w as follows:</t>
          <artwork><![CDATA[
GF(p^2) = GF(p)[u] / (u^2 + 1)
GF(p^6) = GF(p^2)[v] / (v^3 - u - 1)
GF(p^12) = GF(p^6)[w] / (w^2 - v).
]]></artwork>
          <t>Defined by t, the elliptic curve E and its twist E' are represented by E: y^2 = x^3 + 4 and E': y^2 = x^3 + 4 * (u + 1). BLS12-381 is categorized as M-type.</t>
          <t>The untwist isomorphism psi of <xref target="pairing"/>, restricted to E'(GF(p^2)), maps into E(GF(p^12)) and is given by</t>
          <artwork><![CDATA[
psi(x', y') = (x' / w^2, y' / w^3)
]]></artwork>
          <t>where w^2 = v in GF(p^6) and v^3 = u + 1, per the tower given above.</t>
          <t>We have to note that the security level of this pairing is expected to be 126 rather than 128 bits <xref target="GMT19"/>.</t>
          <t>Parameters of BLS12-381 are given as follows.</t>
          <ul spacing="normal">
            <li>
              <t>G_1 is the largest prime-order subgroup of E(GF(p))
              </t>
              <ul spacing="normal">
                <li>
                  <t>BP = (x,y) : a 'base point', i.e., a generator of G_1</t>
                </li>
              </ul>
            </li>
            <li>
              <t>G'_2 is the r-order subgroup of E'(GF(p^2)) corresponding to G_2 under psi
              </t>
              <ul spacing="normal">
                <li>
                  <t>BP' = (x',y') : a 'base point', i.e., a generator of G'_2
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>x' = x'_0 + x'_1 * u (x'_0, x'_1 in GF(p))</t>
                    </li>
                    <li>
                      <t>y' = y'_0 + y'_1 * u (y'_0, y'_1 in GF(p))</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>h' : the cofactor #E'(GF(p^2))/r</t>
                </li>
              </ul>
            </li>
          </ul>
          <dl>
            <dt>p:</dt>
            <dd>
              <artwork><![CDATA[
0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f624
  1eabfffeb153ffffb9feffffffffaaab
]]></artwork>
            </dd>
            <dt>r:</dt>
            <dd>
              <artwork><![CDATA[
0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
]]></artwork>
            </dd>
            <dt>x:</dt>
            <dd>
              <artwork><![CDATA[
0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac58
  6c55e83ff97a1aeffb3af00adb22c6bb
]]></artwork>
            </dd>
            <dt>y:</dt>
            <dd>
              <artwork><![CDATA[
0x08b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3ed
  d03cc744a2888ae40caa232946c5e7e1
]]></artwork>
            </dd>
            <dt>h:</dt>
            <dd>
              <t>0x396c8c005555e1568c00aaab0000aaab</t>
            </dd>
            <dt>b:</dt>
            <dd>
              <t>4</t>
            </dd>
            <dt>x'_0:</dt>
            <dd>
              <artwork><![CDATA[
0x024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d177
  0bac0326a805bbefd48056c8c121bdb8
]]></artwork>
            </dd>
            <dt>x'_1:</dt>
            <dd>
              <artwork><![CDATA[
0x13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049
  334cf11213945d57e5ac7d055d042b7e
]]></artwork>
            </dd>
            <dt>y'_0:</dt>
            <dd>
              <artwork><![CDATA[
0x0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c
  923ac9cc3baca289e193548608b82801
]]></artwork>
            </dd>
            <dt>y'_1:</dt>
            <dd>
              <artwork><![CDATA[
0x0606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab
  3f370d275cec1da1aaa9075ff05f79be
]]></artwork>
            </dd>
            <dt>h':</dt>
            <dd>
              <artwork><![CDATA[
0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa
  628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5
]]></artwork>
            </dd>
            <dt>b':</dt>
            <dd>
              <t>4 * (u + 1)</t>
            </dd>
          </dl>
          <t>As mentioned above, BLS12-381 is adopted in a lot of applications. Since it is expected that BLS12-381 will continue to be widely used, <xref target="point-serialization"/> defines a normative point serialization format for it (with test vectors in <xref target="point-serialization-test-vectors"/>). This serialization format is also adopted in <xref target="I-D.irtf-cfrg-bls-signature"/> <xref target="zkcrypto"/>.</t>
          <t>In addition, many pairing-based cryptographic applications use a hash-to-curve procedure that outputs a rational point on an elliptic curve from an arbitrary input. <xref target="RFC9380"/> specifies ciphersuites for hashing to an elliptic curve, including BLS12-381, and is valuable information for implementers.</t>
        </section>
        <section anchor="bn-curves">
          <name>BN Curves for the 128-bit Security Level (BN462)</name>
          <t>A BN curve with the 128-bit security level is shown in <xref target="BD18"/>, which we call BN462. BN462 is defined by the parameter</t>
          <artwork><![CDATA[
t = 2^114 + 2^101 - 2^14 - 1
]]></artwork>
          <t>for the definition in <xref target="BNdef"/>.</t>
          <t anchor="tower_bn462">For the finite field GF(p), the towers of extension field GF(p^2), GF(p^6) and GF(p^12) are defined by indeterminates u, v, and w as follows:</t>
          <artwork><![CDATA[
GF(p^2) = GF(p)[u] / (u^2 + 1)
GF(p^6) = GF(p^2)[v] / (v^3 - u - 2)
GF(p^12) = GF(p^6)[w] / (w^2 - v).
]]></artwork>
          <t>Defined by t, the elliptic curve E and its twist E' are represented by E: y^2 = x^3 + 5 and E': y^2 = x^3 - u + 2, respectively. The size of p becomes 462 bits. BN462 is categorized as D-type.</t>
          <t>The untwist isomorphism psi of <xref target="pairing"/>, restricted to E'(GF(p^2)), maps into E(GF(p^12)) and is given by</t>
          <artwork><![CDATA[
psi(x', y') = (x' * w^2, y' * w^3)
]]></artwork>
          <t>where w^2 = v in GF(p^6) and v^3 = u + 2, per the tower given above.</t>
          <t>We have to note that BN462 is significantly slower than BLS12-381, but has a 134-bit security level <xref target="GMT19"/>, so may be more resistant to future small improvements to the exTNFS attack.</t>
          <t>We note also that CP8-544 is about 20% faster than BN462 <xref target="GMT19"/>, has a 131-bit security level, and that, due to its construction, it will not be affected by future small improvements to the exTNFS attack. However, as this curve is not widely used (it is only implemented in one library), we instead chose BN462 for our 'safe' option.</t>
          <t>We give the following parameters for BN462.</t>
          <ul spacing="normal">
            <li>
              <t>G_1 is the largest prime-order subgroup of E(GF(p))
              </t>
              <ul spacing="normal">
                <li>
                  <t>BP = (x,y) : a 'base point', i.e., a generator of G_1</t>
                </li>
              </ul>
            </li>
            <li>
              <t>G'_2 is the r-order subgroup of E'(GF(p^2)) corresponding to G_2 under psi
              </t>
              <ul spacing="normal">
                <li>
                  <t>BP' = (x',y') : a 'base point', i.e., a generator of G'_2
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>x' = x'_0 + x'_1 * u (x'_0, x'_1 in GF(p))</t>
                    </li>
                    <li>
                      <t>y' = y'_0 + y'_1 * u (y'_0, y'_1 in GF(p))</t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>h' : the cofactor #E'(GF(p^2))/r</t>
                </li>
              </ul>
            </li>
          </ul>
          <dl>
            <dt>p:</dt>
            <dd>
              <artwork><![CDATA[
0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c802
  0ffffffffff6ff66fc6ff687f640000000002401b00840138013
]]></artwork>
            </dd>
            <dt>r:</dt>
            <dd>
              <artwork><![CDATA[
0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201
  f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d
]]></artwork>
            </dd>
            <dt>x:</dt>
            <dd>
              <artwork><![CDATA[
0x21a6d67ef250191fadba34a0a30160b9ac9264b6f95f63b3edbec3cf4b2e689d
  b1bbb4e69a416a0b1e79239c0372e5cd70113c98d91f36b6980d
]]></artwork>
            </dd>
            <dt>y:</dt>
            <dd>
              <artwork><![CDATA[
0x0118ea0460f7f7abb82b33676a7432a490eeda842cccfa7d788c659650426e6a
  f77df11b8ae40eb80f475432c66600622ecaa8a5734d36fb03de
]]></artwork>
            </dd>
            <dt>h:</dt>
            <dd>
              <t>1</t>
            </dd>
            <dt>b:</dt>
            <dd>
              <t>5</t>
            </dd>
            <dt>x'_0:</dt>
            <dd>
              <artwork><![CDATA[
0x0257ccc85b58dda0dfb38e3a8cbdc5482e0337e7c1cd96ed61c913820408208f
  9ad2699bad92e0032ae1f0aa6a8b48807695468e3d934ae1e4df
]]></artwork>
            </dd>
            <dt>x'_1:</dt>
            <dd>
              <artwork><![CDATA[
0x1d2e4343e8599102af8edca849566ba3c98e2a354730cbed9176884058b18134
  dd86bae555b783718f50af8b59bf7e850e9b73108ba6aa8cd283
]]></artwork>
            </dd>
            <dt>y'_0:</dt>
            <dd>
              <artwork><![CDATA[
0x0a0650439da22c1979517427a20809eca035634706e23c3fa7a6bb42fe810f13
  99a1f41c9ddae32e03695a140e7b11d7c3376e5b68df0db7154e
]]></artwork>
            </dd>
            <dt>y'_1:</dt>
            <dd>
              <artwork><![CDATA[
0x073ef0cbd438cbe0172c8ae37306324d44d5e6b0c69ac57b393f1ab370fd725c
  c647692444a04ef87387aa68d53743493b9eba14cc552ca2a93a
]]></artwork>
            </dd>
            <dt>h':</dt>
            <dd>
              <artwork><![CDATA[
0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908fa1ce02
  27fffffffff6ff66fc63f5f7f4c0000000002401b008a0168019
]]></artwork>
            </dd>
            <dt>b':</dt>
            <dd>
              <t>-u + 2</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="for-256-bits-of-security">
        <name>For 256-bit Security</name>
        <t>As shown in the survey in <xref target="impl"/>, there are three candidate pairing-friendly curves for 256-bit security: BLS48-556, BLS48-575 and BLS48-581. None of them is widely used in the sense of the policy given in <xref target="secure_params"/>, so the preference for margin governs. As noted in <xref target="impact"/>, <xref target="KIK17"/> puts the minimum size of p^k for BLS48 curves at 27,410 bits, which is 572 bits of p. BLS48-556 does not reach that size; BLS48-575 and BLS48-581 both exceed it, and BLS48-581 leaves the larger margin. We therefore select BLS48-581.</t>
        <t>The selected BLS48 curve is shown in <xref target="KIK17"/> and it is defined by the parameter</t>
        <artwork><![CDATA[
t = -1 + 2^7 - 2^10 - 2^30 - 2^32.
]]></artwork>
        <t>In this case, the size of p becomes 581 bits.</t>
        <t anchor="tower_bls48_581">For the finite field GF(p), the towers of extension field GF(p^2), GF(p^4), GF(p^8), GF(p^24) and GF(p^48) are defined by indeterminates u, v, w, z, and s as follows:</t>
        <artwork><![CDATA[
GF(p^2) = GF(p)[u] / (u^2 + 1)
GF(p^4) = GF(p^2)[v] / (v^2 + u + 1)
GF(p^8) = GF(p^4)[w] / (w^2 + v)
GF(p^24) = GF(p^8)[z] / (z^3 + w)
GF(p^48) = GF(p^24)[s] / (s^2 + z).
]]></artwork>
        <t>The elliptic curve E and its twist E' are represented by E: y^2 = x^3 + 1 and E': y^2 = x^3 - 1 / w. BLS48-581 is categorized as D-type. Concretely, in the tower above: w^2 = -v gives -1 / w = w / v, and v^2 = -(u + 1) gives w / v = w * v / v^2 = -w * v / (u + 1); since u^2 = -1, 1 / (u + 1) = (1 - u) / 2, so -1 / w = ((u - 1) / 2) * v * w.</t>
        <t>The untwist isomorphism psi of <xref target="pairing"/>, restricted to E'(GF(p^8)), maps into E(GF(p^48)) and is given by</t>
        <artwork><![CDATA[
psi(x', y') = (x' * xi^2, y' * xi^3)
]]></artwork>
        <t>where xi = u * s in GF(p^48) satisfies xi^6 = -w, the reciprocal of the twist coefficient b' = -1 / w, per the tower given above. Concretely: u in GF(p^2) satisfies u^2 = -1, so u^6 = -1; s in GF(p^48) satisfies s^2 = -z and z^3 = -w, so s^6 = w; hence xi^6 = u^6 * s^6 = (-1) * w = -w.</t>
        <t>We then give the parameters for BLS48-581 as follows.</t>
        <ul spacing="normal">
          <li>
            <t>G_1 is the largest prime-order subgroup of E(GF(p))
            </t>
            <ul spacing="normal">
              <li>
                <t>BP = (x,y) : a 'base point', i.e., a generator of G_1</t>
              </li>
            </ul>
          </li>
          <li>
            <t>G'_2 is the r-order subgroup of E'(GF(p^8)) corresponding to G_2 under psi
            </t>
            <ul spacing="normal">
              <li>
                <t>BP' = (x',y') : a 'base point', i.e., a generator of G'_2
                </t>
                <ul spacing="normal">
                  <li>
                    <t>x' = x'_0 + x'_1 * u + x'_2 * v + x'_3 * u * v + x'_4 * w + x'_5 * u * w + x'_6 * v * w + x'_7 * u * v * w (x'_0, ..., x'_7 in GF(p))</t>
                  </li>
                  <li>
                    <t>y' = y'_0 + y'_1 * u + y'_2 * v + y'_3 * u * v + y'_4 * w + y'_5 * u * w + y'_6 * v * w + y'_7 * u * v * w (y'_0, ..., y'_7 in GF(p))</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>h' : the cofactor #E'(GF(p^8))/r</t>
              </li>
            </ul>
          </li>
        </ul>
        <dl>
          <dt>p:</dt>
          <dd>
            <artwork><![CDATA[
0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444
  a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48
  ac3edc154e6565912b
]]></artwork>
          </dd>
          <dt>r:</dt>
          <dd>
            <artwork><![CDATA[
0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6
  e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c
  01
]]></artwork>
          </dd>
          <dt>x:</dt>
          <dd>
            <artwork><![CDATA[
0x02af59b7ac340f2baf2b73df1e93f860de3f257e0e86868cf61abdbaedffb9f7
  544550546a9df6f9645847665d859236ebdbc57db368b11786cb74da5d3a1e6d
  8c3bce8732315af640
]]></artwork>
          </dd>
          <dt>y:</dt>
          <dd>
            <artwork><![CDATA[
0x0cefda44f6531f91f86b3a2d1fb398a488a553c9efeb8a52e991279dd41b720e
  f7bb7beffb98aee53e80f678584c3ef22f487f77c2876d1b2e35f37aef7b926b
  576dbb5de3e2587a70
]]></artwork>
          </dd>
          <dt>x'_0:</dt>
          <dd>
            <artwork><![CDATA[
0x05d615d9a7871e4a38237fa45a2775debabbefc70344dbccb7de64db3a2ef156
  c46ff79baad1a8c42281a63ca0612f400503004d80491f510317b79766322154
  dec34fd0b4ace8bfab
]]></artwork>
          </dd>
          <dt>x'_1:</dt>
          <dd>
            <artwork><![CDATA[
0x07c4973ece2258512069b0e86abc07e8b22bb6d980e1623e9526f6da12307f4e
  1c3943a00abfedf16214a76affa62504f0c3c7630d979630ffd75556a01afa14
  3f1669b36676b47c57
]]></artwork>
          </dd>
          <dt>x'_2:</dt>
          <dd>
            <artwork><![CDATA[
0x01fccc70198f1334e1b2ea1853ad83bc73a8a6ca9ae237ca7a6d6957ccbab5ab
  6860161c1dbd19242ffae766f0d2a6d55f028cbdfbb879d5fea8ef4cded6b3f0
  b46488156ca55a3e6a
]]></artwork>
          </dd>
          <dt>x'_3:</dt>
          <dd>
            <artwork><![CDATA[
0x0be2218c25ceb6185c78d8012954d4bfe8f5985ac62f3e5821b7b92a393f8be0
  cc218a95f63e1c776e6ec143b1b279b9468c31c5257c200ca52310b8cb4e80bc
  3f09a7033cbb7feafe
]]></artwork>
          </dd>
          <dt>x'_4:</dt>
          <dd>
            <artwork><![CDATA[
0x038b91c600b35913a3c598e4caa9dd63007c675d0b1642b5675ff0e7c5805386
  699981f9e48199d5ac10b2ef492ae589274fad55fc1889aa80c65b5f746c9d4c
  bb739c3a1c53f8cce5
]]></artwork>
          </dd>
          <dt>x'_5:</dt>
          <dd>
            <artwork><![CDATA[
0x0c96c7797eb0738603f1311e4ecda088f7b8f35dcef0977a3d1a58677bb03741
  8181df63835d28997eb57b40b9c0b15dd7595a9f177612f097fc7960910fce33
  70f2004d914a3c093a
]]></artwork>
          </dd>
          <dt>x'_6:</dt>
          <dd>
            <artwork><![CDATA[
0x0b9b7951c6061ee3f0197a498908aee660dea41b39d13852b6db908ba2c0b7a4
  49cef11f293b13ced0fd0caa5efcf3432aad1cbe4324c22d63334b5b0e205c33
  54e41607e60750e057
]]></artwork>
          </dd>
          <dt>x'_7:</dt>
          <dd>
            <artwork><![CDATA[
0x0827d5c22fb2bdec5282624c4f4aaa2b1e5d7a9defaf47b5211cf741719728a7
  f9f8cfca93f29cff364a7190b7e2b0d4585479bd6aebf9fc44e56af2fc9e97c3
  f84e19da00fbc6ae34
]]></artwork>
          </dd>
          <dt>y'_0:</dt>
          <dd>
            <artwork><![CDATA[
0x00eb53356c375b5dfa497216452f3024b918b4238059a577e6f3b39ebfc435fa
  ab0906235afa27748d90f7336d8ae5163c1599abf77eea6d659045012ab12c0f
  f323edd3fe4d2d7971
]]></artwork>
          </dd>
          <dt>y'_1:</dt>
          <dd>
            <artwork><![CDATA[
0x0284dc75979e0ff144da6531815fcadc2b75a422ba325e6fba01d72964732fcb
  f3afb096b243b1f192c5c3d1892ab24e1dd212fa097d760e2e588b423525ffc7
  b111471db936cd5665
]]></artwork>
          </dd>
          <dt>y'_2:</dt>
          <dd>
            <artwork><![CDATA[
0x0b36a201dd008523e421efb70367669ef2c2fc5030216d5b119d3a480d370514
  475f7d5c99d0e90411515536ca3295e5e2f0c1d35d51a652269cbc7c46fc3b8f
  de68332a526a2a8474
]]></artwork>
          </dd>
          <dt>y'_3:</dt>
          <dd>
            <artwork><![CDATA[
0x0aec25a4621edc0688223fbbd478762b1c2cded3360dcee23dd8b0e710e122d2
  742c89b224333fa40dced2817742770ba10d67bda503ee5e578fb3d8b8a1e533
  7316213da92841589d
]]></artwork>
          </dd>
          <dt>y'_4:</dt>
          <dd>
            <artwork><![CDATA[
0x0d209d5a223a9c46916503fa5a88325a2554dc541b43dd93b5a959805f112985
  7ed85c77fa238cdce8a1e2ca4e512b64f59f430135945d137b08857fdddfcf7a
  43f47831f982e50137
]]></artwork>
          </dd>
          <dt>y'_5:</dt>
          <dd>
            <artwork><![CDATA[
0x07d0d03745736b7a513d339d5ad537b90421ad66eb16722b589d82e2055ab750
  4fa83420e8c270841f6824f47c180d139e3aafc198caa72b679da59ed8226cf3
  a594eedc58cf90bee4
]]></artwork>
          </dd>
          <dt>y'_6:</dt>
          <dd>
            <artwork><![CDATA[
0x0896767811be65ea25c2d05dfdd17af8a006f364fc0841b064155f14e4c819a6
  df98f425ae3a2864f22c1fab8c74b2618b5bb40fa639f53dccc9e884017d9aa6
  2b3d41faeafeb23986
]]></artwork>
          </dd>
          <dt>y'_7:</dt>
          <dd>
            <artwork><![CDATA[
0x035e2524ff89029d393a5c07e84f981b5e068f1406be8e50c87549b6ef8eca9a
  9533a3f8e69c31e97e1ad0333ec719205417300d8c4ab33f748e5ac66e84069c
  55d667ffcb732718b6
]]></artwork>
          </dd>
          <dt>h:</dt>
          <dd>
            <t>0x85555841aaaec4ac</t>
          </dd>
          <dt>b:</dt>
          <dd>
            <t>1</t>
          </dd>
          <dt>h':</dt>
          <dd>
            <artwork><![CDATA[
0x170e915cb0a6b7406b8d94042317f811d6bc3fc6e211ada42e58ccfcb3ac076a
  7e4499d700a0c23dc4b0c078f92def8c87b7fe63e1eea270db353a4ef4d38b59
  98ad8f0d042ea24c8f02be1c0c83992fe5d7725227bb27123a949e0876c0a8ce
  0a67326db0e955dcb791b867f31d6bfa62fbdd5f44a00504df04e186fae033f1
  eb43c1b1a08b6e086eff03c8fee9ebdd1e191a8a4b0466c90b389987de5637d5
  dd13dab33196bd2e5afa6cd19cf0fc3fc7db7ece1f3fac742626b1b02fcee040
  43b2ea96492f6afa51739597c54bb78aa6b0b99319fef9d09f768831018ee656
  4c68d054c62f2e0b4549426fec24ab26957a669dba2a2b6945ce40c9aec6afde
  da16c79e15546cd7771fa544d5364236690ea06832679562a68731420ae52d0d
  35a90b8d10b688e31b6aee45f45b7a5083c71732105852decc888f64839a4de3
  3b99521f0984a418d20fc7b0609530e454f0696fa2a8075ac01cc8ae3869e8d0
  fe1f3788ffac4c01aa2720e431da333c83d9663bfb1fb7a1a7b90528482c6be7
  892299030bb51a51dc7e91e9156874416bf4c26f1ea7ec578058563960ef92bb
  bb8632d3a1b695f954af10e9a78e40acffc13b06540aae9da5287fc4429485d4
  4e6289d8c0d6a3eb2ece35012452751839fb48bc14b515478e2ff412d930ac20
  307561f3a5c998e6bcbfebd97effc6433033a2361bfcdc4fc74ad379a16c6dea
  49c209b1
]]></artwork>
          </dd>
          <dt>b':</dt>
          <dd>
            <t>-1 / w</t>
          </dd>
        </dl>
        <t><xref target="point-serialization"/> defines a normative point serialization format for BLS48-581 (with test vectors in <xref target="point-serialization-test-vectors"/>), extending the format defined by <xref target="ZcashRep"/> for BLS12-381 as specified in <xref target="I-D.ietf-cose-bls-key-representations"/>.</t>
      </section>
    </section>
    <section anchor="point-serialization">
      <name>Serialization and Validation</name>
      <t>This section defines normative serialization and deserialization procedures for BLS12-381, and also extends them to BLS48-581. It also states what makes a deserialized value valid, and which of the remaining decisions belong to the calling protocol. What is encoded here are the objects that protocols transmit: points on E and on E', and scalars. Elements of GF(p) and of GF(p^m) appear as coordinates of those points rather than as objects with encodings of their own. Elements of G_T, which lie in GF(p^k), are not encoded here either: this document defines no byte encoding for them. Should a protocol come to require one, a separate specification can define it. The point format is based on the one originally defined by <xref target="ZcashRep"/> for BLS12-381 and is, in turn, based on the representation shown in <xref target="SEC1"/> with a small tweak to apply to GF(p^m). It is already relied upon, directly or indirectly, by <xref target="I-D.irtf-cfrg-bbs-signatures"/> and <xref target="I-D.ietf-cose-bls-key-representations"/>; the latter extends it to BLS48-581, and the extension is adopted here. Applicability to BN462 is discussed in <xref target="bn462-applicability"/>.</t>
      <t>Not all of what follows originates with this document. Where an existing format is restated, it is restated normatively, because other specifications already cite this document for it.</t>
      <table>
        <thead>
          <tr>
            <th align="left">What</th>
            <th align="left">Where it comes from</th>
            <th align="left">How this document treats it</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Scalar encoding</td>
            <td align="left">Existing practice: I2OSP and OS2IP <xref target="RFC8017"/>, together with a comparison against the group order</td>
            <td align="left">Specified here, for all three curves</td>
          </tr>
          <tr>
            <td align="left">BLS12-381 point encoding</td>
            <td align="left">
              <xref target="ZcashRep"/>, which adapts the representation of <xref target="SEC1"/> to GF(p^m)</td>
            <td align="left">Restated here as the format in use</td>
          </tr>
          <tr>
            <td align="left">BLS48-581 point encoding</td>
            <td align="left">The same format, extended to GF(p^8) in <xref target="I-D.ietf-cose-bls-key-representations"/></td>
            <td align="left">That extension is adopted here</td>
          </tr>
          <tr>
            <td align="left">BN462 point encoding</td>
            <td align="left">Not applicable</td>
            <td align="left">Not specified here; see <xref target="bn462-applicability"/></td>
          </tr>
          <tr>
            <td align="left">G_T element encoding</td>
            <td align="left">Not applicable</td>
            <td align="left">Not specified here</td>
          </tr>
          <tr>
            <td align="left">Group membership and identity handling</td>
            <td align="left">This document</td>
            <td align="left">Specified here</td>
          </tr>
        </tbody>
      </table>
      <t>At a high level, the point serialization format is defined as follows:</t>
      <ul spacing="normal">
        <li>
          <t>Serialized points include three metadata bits that indicate whether a point is compressed or not, whether a point is the point at infinity or not, and (for compressed points) the sign of the point's y-coordinate.</t>
        </li>
        <li>
          <t>For a curve with characteristic p represented in n = ceil(L / 8) bytes, where L is the bit length of p, points on E are serialized into n bytes (compressed) or 2n bytes (uncompressed). Points on E', represented over GF(p^m) for the m given in <xref target="point-serialization-params"/>, where m = k/d for the twist degree d of <xref target="pairing"/>, are serialized into m*n bytes (compressed) or 2*m*n bytes (uncompressed).</t>
        </li>
        <li>
          <t>The serialization of a point at infinity comprises a string of zero bytes, except that the metadata bits may be nonzero.</t>
        </li>
        <li>
          <t>The serialization of a compressed point other than the point at infinity comprises a serialized x-coordinate.</t>
        </li>
        <li>
          <t>The serialization of an uncompressed point other than the point at infinity comprises a serialized x-coordinate followed by a serialized y-coordinate.</t>
        </li>
      </ul>
      <section anchor="point-serialization-params">
        <name>Parameters and Notation</name>
        <table>
          <thead>
            <tr>
              <th align="left">Curve</th>
              <th align="left">n (bytes)</th>
              <th align="left">E' field</th>
              <th align="left">m</th>
              <th align="left">Compressed (E / E')</th>
              <th align="left">Uncompressed (E / E')</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">BLS12-381</td>
              <td align="left">48</td>
              <td align="left">GF(p^2)</td>
              <td align="left">2</td>
              <td align="left">48 / 96 bytes</td>
              <td align="left">96 / 192 bytes</td>
            </tr>
            <tr>
              <td align="left">BLS48-581</td>
              <td align="left">73</td>
              <td align="left">GF(p^8)</td>
              <td align="left">8</td>
              <td align="left">73 / 584 bytes</td>
              <td align="left">146 / 1168 bytes</td>
            </tr>
          </tbody>
        </table>
        <t>Below, we give detailed serialization and deserialization procedures, applicable to both curves using the parameters above. The following notation is used in the rest of this section:</t>
        <ul spacing="normal">
          <li>
            <t>Elements of GF(p^m) are represented as a vector of m coefficients in GF(p), (y_0, ..., y_{m-1}), using the basis and coefficient ordering already defined for each curve in <xref target="secure_params"/>.</t>
          </li>
          <li>
            <t>The identity element of G_1 is the point at infinity O_E of <xref target="elliptic-curve"/>, and the identity element of G'_2 is the point at infinity on E'. Below, 'the point at infinity' refers to whichever of the two curves is in question.</t>
          </li>
          <li>
            <t>For a byte string str, str[0] is defined as the first byte of str.</t>
          </li>
          <li>
            <t>The function sign_GF_p(y) returns one bit representing the sign of an element of GF(p). This function is defined as follows:</t>
          </li>
        </ul>
        <artwork><![CDATA[
sign_GF_p(y) := { 1 if y > (p - 1) / 2, else
                { 0 otherwise.
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>The function sign_GF_p^m(y), for an element y = (y_0, ..., y_{m-1}) of GF(p^m), returns one bit computed as follows: let i be the largest index in {0, ..., m-1} such that y_i is nonzero, or i = 0 if all coefficients are zero; return sign_GF_p(y_i). For BLS12-381 (m=2), this specializes to: sign_GF_p^2(y') = sign_GF_p(y'_0) if y'_1 equals 0, else sign_GF_p(y'_1). For BLS48-581 (m=8), this is the same function specified as sign_GF_p^8 in <xref target="I-D.ietf-cose-bls-key-representations"/>, evaluated over the coefficient ordering (y'_0, ..., y'_7) given in <xref target="secure_params"/>.</t>
          </li>
          <li>
            <t>The function OS2FE(str, n), for a byte string str of m*n bytes, returns an element of GF(p^m) or INVALID. It inverts the coordinate serialization of step 3 of <xref target="point-serialization-procedure"/>: divide str into m consecutive blocks of n bytes each, and for each i in {0, ..., m-1} let y_i = OS2IP(str_i), where str_i is the block starting at offset (m - 1 - i) * n, so that the blocks give the coefficients in decreasing index order. If any y_i is greater than or equal to p, OS2FE returns INVALID; otherwise it returns y = (y_0, ..., y_{m-1}).</t>
          </li>
        </ul>
        <t><xref target="point-deserialization-procedure"/> requires deciding whether a field element y2 is a square and, where it is, computing a square root. This document does not specify how. The following pointers are provided for implementers and are not requirements.</t>
        <t>For y2 in GF(p), all curves in this document have p = 3 (mod 4). Appendix I.1 of <xref target="RFC9380"/> therefore applies directly: y2 is a square exactly when y2^((p-1)/2) is 0 or 1, and a square root is given by y2^((p+1)/4).</t>
        <t>For y2 in GF(p^m), that shortcut does not apply, since p^2 and p^8 are both 1 (mod 4). Appendix I.4 of <xref target="RFC9380"/> gives a constant-time Tonelli-Shanks procedure for a general field, and Appendix I.5 gives an is_square test for GF(p^2).</t>
      </section>
      <section anchor="scalar-serialization">
        <name>Scalar Serialization</name>
        <t>This section defines a serialization format for elements of the scalar field GF(r), where r is the order of G_1 and G_2 as given for each curve in <xref target="secure_params"/>. Unlike point serialization, this format applies to all three curves in this document (BLS12-381, BN462, and BLS48-581), since no metadata bits are required.</t>
        <t>For a curve with scalar field order r represented in n_s = ceil(L_r / 8) bytes, where L_r is the bit length of r:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Curve</th>
              <th align="left">n_s (bytes)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">BLS12-381</td>
              <td align="left">32</td>
            </tr>
            <tr>
              <td align="left">BN462</td>
              <td align="left">58</td>
            </tr>
            <tr>
              <td align="left">BLS48-581</td>
              <td align="left">65</td>
            </tr>
          </tbody>
        </table>
        <t>Serialization: a scalar kappa in the range [0, r - 1] is serialized as I2OSP(kappa, n_s).</t>
        <t>Deserialization: given a byte string s_string of length n_s, let kappa = OS2IP(s_string). If kappa &gt;= r, return INVALID. Otherwise, return kappa.</t>
        <t>Rejecting values greater than or equal to r gives every scalar exactly one encoding, which matters wherever an encoded scalar is hashed or compared as bytes. The byte order is the big-endian order of I2OSP and OS2IP <xref target="RFC8017"/>, which is the order used by <xref target="I-D.irtf-cfrg-bbs-signatures"/> and <xref target="I-D.ietf-cose-bls-key-representations"/>. Other specifications for prime-order groups encode scalars in little-endian order, <xref target="RFC8032"/> among them, so an implementation working with both needs to convert.</t>
        <t>This document does not define a distinct encoding for the zero scalar. Whether a protocol accepts it is a protocol-level decision, discussed in <xref target="zero-scalar"/>.</t>
      </section>
      <section anchor="point-serialization-procedure">
        <name>Point Serialization</name>
        <t>This section defines point_to_octets_G1 and point_to_octets_G2. point_to_octets_G1 takes an element of G_1, which is a point on E, and point_to_octets_G2 takes an element of G'_2, which is a point on E'; each returns a byte string. Both are given by the single procedure below, stated for a point P = (x, y) and the parameters n and m of <xref target="point-serialization-params"/>. This procedure uses the I2OSP function defined in <xref target="RFC8017"/>.</t>
        <ol spacing="normal" type="1"><li>
            <t>Compute the metadata bits C_bit, I_bit, and S_bit, as follows:
            </t>
            <ul spacing="normal">
              <li>
                <t>C_bit is 1 if point compression should be used, otherwise it is 0.</t>
              </li>
              <li>
                <t>I_bit is 1 if P is the point at infinity, otherwise it is 0.</t>
              </li>
              <li>
                <t>S_bit is 0 if P is the point at infinity or if point compression is not used. Otherwise (i.e., when point compression is used and P is not the point at infinity), if P is a point on E, S_bit = sign_GF_p(y), else if P is a point on E', S_bit = sign_GF_p^m(y).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Let m_byte = (C_bit * 2^7) + (I_bit * 2^6) + (S_bit * 2^5).</t>
          </li>
          <li>
            <t>Let x_string be the serialization of x, which is defined as follows:
            </t>
            <ul spacing="normal">
              <li>
                <t>If P is the point at infinity on E, let x_string = I2OSP(0, n).</t>
              </li>
              <li>
                <t>If P is a point on E other than the point at infinity, then x is an element of GF(p), i.e., an integer in the inclusive range [0, p - 1]. In this case, let x_string = I2OSP(x, n).</t>
              </li>
              <li>
                <t>If P is the point at infinity on E', let x_string = I2OSP(0, m*n).</t>
              </li>
              <li>
                <t>If P is a point on E' other than the point at infinity, then x can be represented as (x_0, ..., x_{m-1}) where each x_i is an element of GF(p). In this case, let x_string = I2OSP(x_{m-1}, n) concatenated with I2OSP(x_{m-2}, n), ..., concatenated with I2OSP(x_0, n) (i.e., coefficients in decreasing index order). Notice that in all of the above cases, the 3 most significant bits of x_string[0] are guaranteed to be 0.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If point compression is used, let y_string be the empty string. Otherwise (i.e., when point compression is not used), let y_string be the serialization of y, which is defined in step 3.</t>
          </li>
          <li>
            <t>Let s_string be the concatenation of x_string and y_string.</t>
          </li>
          <li>
            <t>Set s_string[0] = x_string[0] OR m_byte, where OR is computed bitwise. After this operation, the most significant bit of s_string[0] equals C_bit, the next bit equals I_bit, and the next equals S_bit. (This is true because the three most significant bits of x_string[0] are guaranteed to be zero, as discussed above.)</t>
          </li>
          <li>
            <t>Return s_string.</t>
          </li>
        </ol>
      </section>
      <section anchor="point-deserialization-procedure">
        <name>Point Deserialization</name>
        <t>This section defines octets_to_point_G1 and octets_to_point_G2. Each takes a byte string and returns an element of G_1 or of G'_2 respectively, or INVALID. A string that deserializes to a point of E or E' that is not in the group is INVALID, so a value returned by these procedures is a group element and a caller does not have to obtain one by a further step.</t>
        <t>This document does not define a deserialization procedure that stops at E or E'. G_1 and G_2 are the groups on which the pairing of <xref target="pairing"/> is defined, and elements of G_1 and of G'_2 are what the specifications citing this document exchange; psi carries an element of G'_2 to the corresponding element of G_2, on which the pairing operates, as described in <xref target="pairing"/>. Section 5.3 of <xref target="I-D.irtf-cfrg-bls-signature"/> requires conforming implementations to perform the subgroup check for the same reason, and Section 6.2 of <xref target="I-D.irtf-cfrg-bbs-signatures"/> notes that a library may combine the two operations.</t>
        <t>The procedure below is stated once, for a string s_string and the parameters n and m of <xref target="point-serialization-params"/>. It uses the OS2IP function defined in <xref target="RFC8017"/> and the OS2FE function defined in <xref target="point-serialization-params"/>.</t>
        <t>Each of the two functions fixes the group it returns, and the curve that step 2 determines is what selects between them. octets_to_point_G1 MUST return INVALID if step 2 determines E', and octets_to_point_G2 MUST return INVALID if step 2 determines E. This check is not redundant: the encodings of the two groups can have the same length. For BLS12-381, for instance, a 96-byte string is a compressed point on E' when C_bit is 1 and an uncompressed point on E when C_bit is 0, so without this rule a compressed element of G'_2 passed to octets_to_point_G1 would be decoded and returned rather than rejected.</t>
        <t>Every GF(p) coefficient recovered by this procedure MUST be an integer in the inclusive range [0, p - 1]. A byte string that encodes a coordinate, or a coefficient of a coordinate, as a value greater than or equal to p is not a canonical encoding of a field element; implementations MUST return INVALID in that case. This applies to coordinates on E, recovered with OS2IP, as well as to the coefficients of coordinates on E', recovered with OS2FE.</t>
        <ol spacing="normal" type="1"><li>
            <t>If s_string is empty, return INVALID. Otherwise, let m_byte = s_string[0] AND 0xE0, where AND is computed bitwise. In other words, the three most significant bits of m_byte equal the three most significant bits of s_string[0], and the remaining bits are 0. If m_byte equals any of 0x20, 0x60, or 0xE0, return INVALID. Otherwise:
            </t>
            <ul spacing="normal">
              <li>
                <t>Let C_bit equal the most significant bit of m_byte,</t>
              </li>
              <li>
                <t>Let I_bit equal the second most significant bit of m_byte, and</t>
              </li>
              <li>
                <t>Let S_bit equal the third most significant bit of m_byte.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If C_bit is 1:
            </t>
            <ul spacing="normal">
              <li>
                <t>If s_string has length n bytes, the output point is on the curve E.</t>
              </li>
              <li>
                <t>If s_string has length m*n bytes, the output point is on the curve E'.</t>
              </li>
              <li>
                <t>If s_string has any other length, return INVALID.</t>
              </li>
            </ul>
            <t>
If C_bit is 0:  </t>
            <ul spacing="normal">
              <li>
                <t>If s_string has length 2n bytes, the output point is on E.</t>
              </li>
              <li>
                <t>If s_string has length 2*m*n bytes, the output point is on E'.</t>
              </li>
              <li>
                <t>If s_string has any other length, return INVALID.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Let s_string[0] = s_string[0] AND 0x1F, where AND is computed bitwise. In other words, set the three most significant bits of s_string[0] to 0.</t>
          </li>
          <li>
            <t>If I_bit is 1:
            </t>
            <ul spacing="normal">
              <li>
                <t>If s_string is not the all zeros string, return INVALID.</t>
              </li>
              <li>
                <t>Otherwise (i.e., if s_string is the all zeros string), return the identity element of the group determined in step 2.</t>
              </li>
            </ul>
            <t>
Otherwise, I_bit is 0. Continue.</t>
          </li>
          <li>
            <t>If C_bit is 0:
            </t>
            <ul spacing="normal">
              <li>
                <t>Let x_string be the first half of s_string.</t>
              </li>
              <li>
                <t>Let y_string be the last half of s_string.</t>
              </li>
              <li>
                <t>If the curve that was determined in step 2 is E:      </t>
                <ul spacing="normal">
                  <li>
                    <t>Let x = OS2IP(x_string). If x is greater than or equal to p, return INVALID.</t>
                  </li>
                  <li>
                    <t>Let y = OS2IP(y_string). If y is greater than or equal to p, return INVALID.</t>
                  </li>
                  <li>
                    <t>If the point P = (x, y) is not a valid point on E, return INVALID.</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Otherwise (i.e., when the curve that was determined in step 2 is E'):      </t>
                <ul spacing="normal">
                  <li>
                    <t>Let x = OS2FE(x_string, n). If x is INVALID, return INVALID.</t>
                  </li>
                  <li>
                    <t>Let y = OS2FE(y_string, n). If y is INVALID, return INVALID.</t>
                  </li>
                  <li>
                    <t>If the point P = (x, y) is not a valid point on E', return INVALID.</t>
                  </li>
                </ul>
              </li>
            </ul>
            <t>
Let P = (x, y) and continue at step 8.  </t>
            <t>
Otherwise, C_bit is 1. Continue.</t>
          </li>
          <li>
            <t>Let x_string be s_string.  </t>
            <ul spacing="normal">
              <li>
                <t>If the curve that was determined in step 2 is E:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Let x = OS2IP(x_string). If x is greater than or equal to p, return INVALID.</t>
                  </li>
                  <li>
                    <t>Let y2 = the right-hand side of the curve equation for E (given in <xref target="secure_params"/> for the curve in question), evaluated at x, in GF(p).</t>
                  </li>
                  <li>
                    <t>If y2 is not square in GF(p), return INVALID.</t>
                  </li>
                  <li>
                    <t>Otherwise, let y = sqrt(y2) in GF(p) and let Y_bit = sign_GF_p(y).</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Otherwise (i.e., when the curve that was determined in step 2 is E'):
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Let x = OS2FE(x_string, n). If x is INVALID, return INVALID.</t>
                  </li>
                  <li>
                    <t>Let y2 = the right-hand side of the curve equation for E' (given in <xref target="secure_params"/> for the curve in question), evaluated at x, in GF(p^m).</t>
                  </li>
                  <li>
                    <t>If y2 is not square in GF(p^m), return INVALID.</t>
                  </li>
                  <li>
                    <t>Otherwise, let y = sqrt(y2) in GF(p^m) and let Y_bit = sign_GF_p^m(y).</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li>
            <t>If S_bit equals Y_bit, let P = (x, y). Otherwise, let P = (x, -y).</t>
          </li>
          <li>
            <t>If the curve determined in step 2 is E and subgroup_check_G1(P) returns FALSE, return INVALID. If the curve determined in step 2 is E' and subgroup_check_G2(P) returns FALSE, return INVALID. Otherwise, return P.</t>
          </li>
        </ol>
        <t>Note that OS2FE outputs field elements in the towered representation of the curve in question:</t>
        <ul spacing="normal">
          <li>
            <t>For BLS12-381, OS2FE(x_string, n) = (x'_0, x'_1) = x'_0 + x'_1 * u</t>
          </li>
          <li>
            <t>For BLS48-581, OS2FE(x_string, n) = (x'_0, ..., x'_7) = x'_0 + x'_1 * u + x'_2 * v + x'_3 * u * v + x'_4 * w + x'_5 * u * w + x'_6 * v * w + x'_7 * u * v * w</t>
          </li>
        </ul>
        <section anchor="subgroup-check">
          <name>Subgroup Membership</name>
          <t>subgroup_check_G1(P) takes a point P on E and returns TRUE if P is an element of G_1 and FALSE otherwise. subgroup_check_G2(Q) does the same for a point Q on E' and the group G'_2. Both are used by <xref target="point-deserialization-procedure"/>, and both are specified here as operations in their own right, because a point can also arise from point addition or scalar multiplication rather than from a byte string, and a caller may need to check such a point.</t>
          <t>For every curve in this document, r^2 divides neither the order of E(GF(p)) nor the order of E'(GF(p^m)): those orders are h * r and h' * r, and gcd(h, r) = gcd(h', r) = 1 by the definitions of h and h' in <xref target="pairing"/>. Consequently a point of order dividing r is an element of G_1, or of G'_2, respectively, and both checks can be carried out as follows:</t>
          <ul spacing="normal">
            <li>
              <t>subgroup_check_G1(P) returns TRUE if [r]P is the point at infinity on E, and FALSE otherwise.</t>
            </li>
            <li>
              <t>subgroup_check_G2(Q) returns TRUE if [r]Q is the point at infinity on E', and FALSE otherwise.</t>
            </li>
          </ul>
          <t>Faster tests are known for particular curves. Any method that decides the same predicate may be used.</t>
          <t>These checks apply to all three curves in this document. Note that for BN462 the cofactor h of E(GF(p)) is 1, so every point of E(GF(p)) is an element of G_1 and subgroup_check_G1 always returns TRUE; the cofactor h' of E'(GF(p^2)) is not 1, so subgroup_check_G2 remains meaningful.</t>
        </section>
      </section>
      <section anchor="bn462-applicability">
        <name>Applicability to BN462</name>
        <t>This document does not specify a point encoding for BN462. Scalar serialization, defined in <xref target="scalar-serialization"/>, and the subgroup checks of <xref target="subgroup-check"/> are unaffected and apply to BN462 as well.</t>
        <t>The coordinate encoding of <xref target="point-serialization-procedure"/> (coordinates as fixed-length big-endian integers, with the coefficients of an element of GF(p^m) in decreasing index order) carries over to BN462 unchanged. What does not fit is the placement of the metadata bits. BN462 has a 462-bit characteristic p, so its canonical GF(p) representation occupies n = ceil(462 / 8) = 58 bytes, that is 464 bits. This leaves 2 unused bits in the leading byte of a serialized coordinate, one short of the three (C_bit, I_bit, S_bit) that the scheme above places there. <xref target="bn462-serialization-notes"/> describes two ways of accommodating that: carrying the metadata in a byte of its own, following the general pattern of <xref target="SEC1"/>, which leaves the rest of the format unchanged; or restricting the format to uncompressed points, which need only C_bit and I_bit and therefore fit in the two bits available.</t>
        <t>This document specifies neither. The format above is specified here because it is already widely used in applications, and because specifications depend on it: it originates with <xref target="ZcashRep"/> and is relied upon by <xref target="I-D.irtf-cfrg-bbs-signatures"/> and <xref target="I-D.ietf-cose-bls-key-representations"/>. For BN462 neither consideration holds: no specification examined requires a BN462 point encoding, and the implementations that do emit BN462 points have not converged on one of the variants above. Choosing among them would therefore be encoding design rather than the recording of established practice, and this document restates an encoding only where practice has already settled on one.</t>
        <t>Implementations that nevertheless need to exchange BN462 points may find <xref target="bn462-serialization-notes"/> useful. It records, informatively, the encodings that existing implementations use and the alternatives that have been considered. It defines no format.</t>
      </section>
      <section anchor="calling-protocol-requirements">
        <name>Requirements on Calling Protocols</name>
        <t>The procedures above leave three decisions to the protocol that uses them. This document does not decide them, because the right answer depends on what the protocol does rather than on the curve or the wire format. A specification that adopts this format SHOULD state its answer to each.</t>
        <section anchor="accepted-point-form">
          <name>Accepted Point Form</name>
          <t>Both a compressed and an uncompressed form are defined. The compressed form is RECOMMENDED for values that are transmitted: it is the form <xref target="ZcashRep"/> places on the wire, and the form used by <xref target="I-D.irtf-cfrg-bbs-signatures"/>, <xref target="I-D.ietf-cose-bls-key-representations"/> and <xref target="I-D.irtf-cfrg-bls-signature"/>. The uncompressed form is retained because it remains in use for stored values, such as verification keys that are validated once, where recovering y from x on every use is not worth the saved space.</t>
          <t>A protocol SHOULD state which forms it accepts. Accepting both means that one point has two encodings, which matters wherever an encoded point is hashed or compared as a byte string.</t>
        </section>
        <section anchor="identity-point-handling">
          <name>Identity Element</name>
          <t><xref target="point-serialization-procedure"/> and <xref target="point-deserialization-procedure"/> define a byte representation for the identity element of G_1 and of G'_2, via the I_bit, and deserialization returns it as it does any other group element. Whether a calling protocol should accept it depends on that protocol's own semantics and threat model, not on the wire format: some protocols (e.g., certain zero-knowledge proof constructions) legitimately reference the identity element as part of a public statement, while for others it cannot arise in normal operation.</t>
          <t>Because both kinds of protocol exist, this document does not name one of them as what happens when a protocol says nothing. It defines the two behaviors, and a protocol using this document's serialization format SHOULD state which one it requires:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Reject identity</strong>: after running <xref target="point-deserialization-procedure"/>, if the resulting point is the identity element, treat the overall result as INVALID. This is the appropriate choice for protocols where the identity element is not an expected input in normal operation.</t>
            </li>
            <li>
              <t><strong>Allow identity</strong>: use the result of <xref target="point-deserialization-procedure"/> as-is, including when it is the identity element. This is appropriate for protocols with a specific, documented need to represent the identity element.</t>
            </li>
          </ul>
          <t>Neither behavior is part of <xref target="point-deserialization-procedure"/> itself, which returns the identity element as it returns any other group element. Rejecting it is a step the calling protocol takes on the result.</t>
          <t>Section 5.2 of <xref target="I-D.irtf-cfrg-bls-signature"/> is an example of the first choice, and gives a protocol-level reason for it: the secret key corresponding to an identity public key is zero, and under such a key the identity element is a valid signature on every message.</t>
        </section>
        <section anchor="zero-scalar">
          <name>Zero Scalar</name>
          <t><xref target="scalar-serialization"/> accepts the zero scalar, and a protocol using it SHOULD state whether it does the same.</t>
          <t>This is a separate decision from the one above. Section 3.1 of <xref target="RFC9591"/> rejects the identity element when deserializing a group element while accepting zero scalars, so the two choices are made independently in at least one existing specification.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The recommended pairing-friendly curves are selected by considering the exTNFS proposed by Kim and Barbulescu in 2016 <xref target="KB16"/> and they are categorized in each security level in accordance with <xref target="BD18"/>. Implementers who will newly develop pairing-based cryptography applications SHOULD use the recommended parameters. The estimates cited here (<xref target="BD18"/>, <xref target="GMT19"/>, <xref target="G20"/>, <xref target="KIK17"/>) were reviewed against the work published in the major peer-reviewed cryptography venues, and in the IACR Cryptology ePrint Archive, between January 2020 and August 2026; <xref target="security-review-scope"/> records what that review covered. The work that review covered stays within the number field sieve and its tower variants rather than introducing a different kind of attack: it consists of record discrete-logarithm computations, refinements of the asymptotic analysis, and improvements to individual steps of the tower variant for fields of the extension degrees these curves use. <xref target="APT26"/> is an example of the last kind, accelerating the linear algebra step over GF(p^12), the field that BLS12-381 and BN462 use, by a factor of approximately 144. None of that work gives a revised bit-level security estimate for the curves recommended here, and this document has not derived one either. Work published after this document is not covered, and has to be assessed separately.</t>
      <t>BLS curves of embedding degree 12 typically require a characteristic p of 461 bits or larger to achieve the 128-bit security level <xref target="BD18"/>. Note that the security level of BLS12-381, which is adopted by a lot of libraries and applications, is slightly below 128 bits because a 381-bit characteristic is used <xref target="BD18"/> <xref target="GMT19"/>.</t>
      <t>BN254 is used in most of the existing implementations as shown in <xref target="impl"/> and <xref target="adoption_status_100bit_security"/>; however, BN curves that were estimated as the 128-bit security level before exTNFS including BN254 ensure no more than the 100-bit security level by the effect of exTNFS.</t>
      <t>The following points also apply to implementations of pairing-based cryptographic applications that use the recommended curves. Regarding the use cases of pairing-based cryptography, please refer to <xref target="applications-of-pairing-based-cryptography"/>.</t>
      <t>In applications such as key agreement protocols, users exchange elements of G_1 and of G'_2 as public keys. What such an exchange has to establish is that a received point belongs to the intended prime-order subgroup. A point obtained from a byte string through <xref target="point-deserialization-procedure"/> already satisfies this, since those procedures return an element of G_1 or of G'_2 or nothing at all. Group operations preserve the property: a sum or a scalar multiple of elements of G_1 is again an element of G_1, and likewise for G'_2, so a point computed from checked inputs does not need checking again. What does need checking is a point whose provenance does not establish membership, such as one built from coordinates supplied by another party or one whose group is no longer tracked by the implementation. Before such a point is used as an argument to the pairing, the implementation MUST establish that it belongs to the corresponding subgroup. This is a condition on the domain of the map rather than a defensive measure: the pairing of <xref target="pairing"/> is defined on the r-torsion points, and a point outside the subgroup is not an admissible argument. Applying the checks of <xref target="subgroup-check"/>, or any other method deciding the same predicate, satisfies this requirement.</t>
      <t>Membership in the subgroup does not on its own exclude the identity element, which <xref target="subgroup-check"/> accepts; whether a protocol accepts it is the separate decision described in <xref target="identity-point-handling"/>. Note also that subgroup security in the sense of <xref target="BCM15"/> is a property of a curve rather than of a point: it constrains the prime factors of the cofactors of the pairing groups. It is therefore a criterion applied when curves are selected, and not a check an implementation performs on a received value.</t>
      <t>The pairing-based protocols, such as the BLS signatures, use a scalar multiplication in G_1, G'_2 and an exponentiation in G_T with the secret key. In order to prevent the leakage of the secret key due to side channel attacks, implementers SHOULD apply countermeasure techniques such as the Montgomery ladder <xref target="Montgomery"/> <xref target="CF06"/> when they implement modules of a scalar multiplication and an exponentiation. Please refer to <xref target="Montgomery"/> and <xref target="CF06"/> for the detailed algorithms of the Montgomery ladder.</t>
      <t>A coordinate that is read from a byte string has to be checked against the order of the field it is claimed to lie in; a coefficient outside that range gives one value several encodings, which can lead to vulnerabilities such as signature forgery <xref target="IEEE1363"/>. <xref target="point-deserialization-procedure"/> makes this requirement normative for the procedures defined in this document.</t>
      <t>The choice between the two identity-element behaviors described in <xref target="identity-point-handling"/> belongs to the calling protocol, because whether the identity element can legitimately appear is a property of the protocol rather than of the curve or the wire format. Treating the identity element as an unremarkable, always-valid deserialization result, when the calling protocol does not actually expect it, can introduce timing side channels from identity-checking branches. Protocol specifications SHOULD state explicitly whether they require the identity-rejecting or identity-allowing behavior, consistent with their own security assumptions, and SHOULD do the same for the zero scalar (<xref target="zero-scalar"/>).</t>
      <t>Recommended parameters are affected by Cheon's attack which is a solving algorithm for the strong DH problem <xref target="Cheon06"/>. The mathematical problem that provides the security of the strong DH problem is called ECDLP with Auxiliary Inputs (ECDLPwAI). In ECDLPwAI, the rational points P and [K^i]P for i = 1, ..., delta are given, and the task is to find the secret K. For a divisor delta of r - 1, Cheon's algorithm recovers K in O(log r * (sqrt(r / delta) + sqrt(delta))) group operations <xref target="Cheon06"/>, whereas solving ECDLP by a generic method takes O(sqrt(r)) group operations, so for a well chosen delta the work of ECDLPwAI becomes dramatically smaller than that of ECDLP. A second variant applies when delta divides r + 1 rather than r - 1, and has a different complexity. Please refer to <xref target="Cheon06"/> for the details of both. The design of a cryptographic protocol based on the strong DH problem therefore has to take this attack into account. For example, in the case of Short Signatures, the attack can be prevented by carefully setting the maximum number of queries, which corresponds to the parameter delta.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Tsunekazu Saito was a co-author of this document from its first version through revision 11, and much of what it contains comes from that work. The authors would like to thank a lot of authors including Akihiro Kato for their significant contribution to early versions of this memo. The authors would also like to acknowledge Taechan Kim, Hoeteck Wee, Sergey Gorbunov, Michael Scott, Chloe Martindale as an Expert Reviewer, Watson Ladd, Armando Faz, Rene Struik, and Diego F. Aranha for their valuable comments. The authors would further like to thank Thomas Bellebaum, Frank Denis, Emil Lundberg, Michele Orrù, and Mamy Ratsimbazafy for their detailed reviews of recent revisions, which shaped Section 5 in particular.</t>
    </section>
  </middle>
  <back>
    <?line 976?>

<references xmlns:xi="http://www.w3.org/2001/XInclude">
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8017.xml"/>
        <reference anchor="Ver09">
          <front>
            <title>Optimal Pairings</title>
            <seriesInfo name="DOI" value="10.1109/tit.2009.2034881"/>
            <seriesInfo name="IEEE Transactions on Information Theory" value="Vol. 56, pp. 455-461"/>
            <author initials="F." surname="Vercauteren" fullname="Frederik Vercauteren">
              <organization/>
            </author>
            <date year="2010" month="January"/>
          </front>
        </reference>
        <reference anchor="BN05">
          <front>
            <title>Pairing-Friendly Elliptic Curves of Prime Order</title>
            <seriesInfo name="DOI" value="10.1007/11693383_22"/>
            <seriesInfo name="Selected Areas in Cryptography" value="pp. 319-331"/>
            <author initials="P." surname="Barreto" fullname="Paulo S. L. M. Barreto">
              <organization/>
            </author>
            <author initials="M." surname="Naehrig" fullname="Michael Naehrig">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="BLS02">
          <front>
            <title>Constructing Elliptic Curves with Prescribed Embedding Degrees</title>
            <seriesInfo name="DOI" value="10.1007/3-540-36413-7_19"/>
            <seriesInfo name="Security in Communication Networks" value="pp. 257-267"/>
            <author initials="P." surname="Barreto" fullname="Paulo S. L. M. Barreto">
              <organization/>
            </author>
            <author initials="B." surname="Lynn" fullname="Ben Lynn">
              <organization/>
            </author>
            <author initials="M." surname="Scott" fullname="Michael Scott">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
        </reference>
        <reference anchor="G20" target="https://doi.org/10.1007/978-3-030-45388-6_19">
          <front>
            <title>A Short-List of Pairing-Friendly Curves Resistant to Special TNFS at the 128-Bit Security Level</title>
            <seriesInfo name="DOI" value="10.1007/978-3-030-45388-6_19"/>
            <seriesInfo name="Public-Key Cryptography - PKC 2020" value="pp. 535-564"/>
            <author initials="A." surname="Guillevic" fullname="Aurore Guillevic">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="KB16">
          <front>
            <title>Extended Tower Number Field Sieve: A New Complexity for the Medium Prime Case</title>
            <seriesInfo name="DOI" value="10.1007/978-3-662-53018-4_20"/>
            <seriesInfo name="Advances in Cryptology - CRYPTO 2016" value="pp. 543-571"/>
            <author initials="T." surname="Kim" fullname="Taechan Kim">
              <organization/>
            </author>
            <author initials="R." surname="Barbulescu" fullname="Razvan Barbulescu">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="BD18">
          <front>
            <title>Updating Key Size Estimations for Pairings</title>
            <seriesInfo name="DOI" value="10.1007/s00145-018-9280-5"/>
            <seriesInfo name="Journal of" value="Cryptology"/>
            <author initials="R." surname="Barbulescu" fullname="Razvan Barbulescu">
              <organization/>
            </author>
            <author initials="S." surname="Duquesne" fullname="Sylvain Duquesne">
              <organization/>
            </author>
            <date year="2018" month="January"/>
          </front>
        </reference>
        <reference anchor="KIK17">
          <front>
            <title>Secure and Efficient Pairing at 256-Bit Security Level</title>
            <seriesInfo name="DOI" value="10.1007/978-3-319-61204-1_4"/>
            <seriesInfo name="Applied Cryptography and Network Security" value="pp. 59-79"/>
            <author initials="Y." surname="Kiyomura" fullname="Yutaro Kiyomura">
              <organization/>
            </author>
            <author initials="A." surname="Inoue" fullname="Akiko Inoue">
              <organization/>
            </author>
            <author initials="Y." surname="Kawahara" fullname="Yuto Kawahara">
              <organization/>
            </author>
            <author initials="M." surname="Yasuda" fullname="Masaya Yasuda">
              <organization/>
            </author>
            <author initials="T." surname="Takagi" fullname="Tsuyoshi Takagi">
              <organization/>
            </author>
            <author initials="T." surname="Kobayashi" fullname="Tetsutaro Kobayashi">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="GMT19">
          <front>
            <title>Cocks–Pinch curves of embedding degrees five to eight and optimal ate pairing computation</title>
            <seriesInfo name="DOI" value="10.1007/s10623-020-00727-w"/>
            <seriesInfo name="International Journal of Designs, Codes and Cryptography" value="vol. 88, pp. 1047-1081"/>
            <author initials="A." surname="Guillevic">
              <organization/>
            </author>
            <author initials="S. " surname="Masson" fullname="Simon Masson">
              <organization/>
            </author>
            <author initials="E." surname="Thomé" fullname="Emmanuel Thomé">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="NIST">
          <front>
            <title>NIST special publication 800-57 part 1 (revised) : Recommendation for key management, part 1: General (revised)</title>
            <seriesInfo name="National Institute of Standards and Technology" value="(NIST)"/>
            <author initials="E." surname="Barker">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="APT26" target="https://eprint.iacr.org/2026/560">
          <front>
            <title>High-Order Galois Automorphisms for TNFS Linear Algebra</title>
            <seriesInfo name="Advances in Cryptology - CRYPTO 2026" value=""/>
            <seriesInfo name="Cryptology ePrint Archive" value="Report 2026/560"/>
            <author initials="H." surname="Al Aswad" fullname="Haetham Al Aswad">
              <organization/>
            </author>
            <author initials="C." surname="Pierrot" fullname="Cécile Pierrot">
              <organization/>
            </author>
            <author initials="E." surname="Thomé" fullname="Emmanuel Thomé">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5091.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6508.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6539.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6509.xml"/>
        <reference anchor="CF06">
          <front>
            <title>Handbook of Elliptic and Hyperelliptic Curve Cryptography</title>
            <seriesInfo name="DOI" value="10.1201/9781420034981"/>
            <seriesInfo name="Chapman and Hall" value="CRC"/>
            <author initials="H." surname="Cohen" fullname="Henri Cohen">
              <organization/>
            </author>
            <author initials="G." surname="Frey" fullname="Gerhard Frey">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="BCGMMW20">
          <front>
            <title>ZEXE: Enabling Decentralized Private Computation</title>
            <seriesInfo name="DOI" value="10.1109/SP40000.2020.00050"/>
            <seriesInfo name="IEEE Symposium on Security and Privacy" value="2020"/>
            <author initials="S." surname="Bowe" fullname="Sean Bowe">
              <organization/>
            </author>
            <author initials="A." surname="Chiesa" fullname="Alessandro Chiesa">
              <organization/>
            </author>
            <author initials="M." surname="Green" fullname="Matthew Green">
              <organization/>
            </author>
            <author initials="I." surname="Miers" fullname="Ian Miers">
              <organization/>
            </author>
            <author initials="P." surname="Mishra" fullname="Pratyush Mishra">
              <organization/>
            </author>
            <author initials="H." surname="Wu" fullname="Howard Wu">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="bls12377js" target="https://github.com/celo-org/bls12377js">
          <front>
            <title>bls12377js: TypeScript implementation of BLS12-377-based Proofs of Possession</title>
            <author>
              <organization>The Celo Foundation</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="SAKKE">
          <front>
            <title>Security of the mission critical service (Release 15)</title>
            <seriesInfo name="3GPP TS" value="33.180 15.3.0"/>
            <author>
              <organization>3GPP</organization>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="ISOIEC11770-3">
          <front>
            <title>ISO/IEC 11770-3:2015</title>
            <seriesInfo name="ISO/IEC" value="Information technology -- Security techniques -- Key management -- Part 3: Mechanisms using asymmetric techniques"/>
            <author>
              <organization>ISO/IEC</organization>
            </author>
            <date year="2015"/>
          </front>
        </reference>
        <reference anchor="Joux00">
          <front>
            <title>A One Round Protocol for Tripartite Diffie-Hellman</title>
            <seriesInfo name="DOI" value="10.1007/10722028_23"/>
            <seriesInfo name="Lecture Notes in Computer Science" value="pp. 385-393"/>
            <author initials="A." surname="Joux" fullname="Antoine Joux">
              <organization/>
            </author>
            <date year="2000"/>
          </front>
        </reference>
        <reference anchor="CCS07">
          <front>
            <title>Identity-based key agreement protocols from pairings</title>
            <seriesInfo name="DOI" value="10.1007/s10207-006-0011-9"/>
            <seriesInfo name="International Journal of Information Security" value="Vol. 6, pp. 213-241"/>
            <author initials="L." surname="Chen" fullname="L. Chen">
              <organization/>
            </author>
            <author initials="Z." surname="Cheng" fullname="Z. Cheng">
              <organization/>
            </author>
            <author initials="N." surname="Smart" fullname="N. P. Smart">
              <organization/>
            </author>
            <date year="2007" month="January"/>
          </front>
        </reference>
        <reference anchor="FSU10">
          <front>
            <title>Ephemeral Key Leakage Resilient and Efficient ID-AKEs That Can Share Identities, Private and Master Keys</title>
            <seriesInfo name="DOI" value="10.1007/978-3-642-17455-1_12"/>
            <seriesInfo name="Lecture Notes in Computer Science" value="pp. 187-205"/>
            <author initials="A." surname="Fujioka" fullname="Atsushi Fujioka">
              <organization/>
            </author>
            <author initials="K." surname="Suzuki" fullname="Koutarou Suzuki">
              <organization/>
            </author>
            <author initials="B." surname="Ustaoglu" fullname="Berkant Ustaoglu">
              <organization/>
            </author>
            <date year="2010"/>
          </front>
        </reference>
        <reference anchor="M-Pin" target="https://miracl.com/blog/m-pin-a-multi-factor-zero-knowledge-authentication-protocol/">
          <front>
            <title>M-Pin: A Multi-Factor Zero Knowledge Authentication Protocol</title>
            <author initials="M." surname="Scott">
              <organization/>
            </author>
            <date year="2019" month="July"/>
          </front>
        </reference>
        <reference anchor="TPM" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
          <front>
            <title>Trusted Platform Module Library Specification, Family \"2.0\", Level 00, Revision 01.38</title>
            <author>
              <organization>Trusted Computing Group (TCG)</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="FIDO" target="https://fidoalliance.org/specs/fido-v2.0-rd-20180702/fido-ecdaa-algorithm-v2.0-rd-20180702.html">
          <front>
            <title>FIDO ECDAA Algorithm - FIDO Alliance Review Draft 02</title>
            <author initials="R." surname="Lindemann">
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="W3C" target="https://www.w3.org/TR/2019/REC-webauthn-1-20190304/">
          <front>
            <title>Web Authentication: An API for accessing Public Key Credentials Level 1 - W3C Recommendation</title>
            <author initials="D." surname="Balfanz">
              <organization>Google</organization>
            </author>
            <author initials="A." surname="Czeskis">
              <organization>Google</organization>
            </author>
            <author initials="J." surname="Hodges">
              <organization>Google</organization>
            </author>
            <author initials="J.C." surname="Jones">
              <organization>Mozilla</organization>
            </author>
            <author initials="M.B." surname="Jones">
              <organization>Microsoft</organization>
            </author>
            <author initials="A." surname="Kumar">
              <organization>Microsoft</organization>
            </author>
            <author initials="A." surname="Liao">
              <organization>Microsoft</organization>
            </author>
            <author initials="R." surname="Lindemann">
              <organization>Nok Nok Labs</organization>
            </author>
            <author initials="E." surname="Lundberg">
              <organization>Yubico</organization>
            </author>
            <date year="2019" month="March" day="4"/>
          </front>
        </reference>
        <reference anchor="EPID" target="https://web.archive.org/web/20200506110729/https://software.intel.com/en-us/download/intel-sgx-intel-epid-provisioning-and-attestation-services">
          <front>
            <title>Intel (R) SGX: Intel (R) EPID Provisioning and Attestation Services</title>
            <author>
              <organization>Intel Corporation</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="BL10">
          <front>
            <title>Enhanced Privacy ID from Bilinear Pairing for Hardware Authentication and Attestation</title>
            <seriesInfo name="DOI" value="10.1109/socialcom.2010.118"/>
            <seriesInfo name="2010 IEEE Second International Conference on Social" value="Computing"/>
            <author initials="E." surname="Brickell" fullname="Ernie Brickell">
              <organization/>
            </author>
            <author initials="J." surname="Li" fullname="Jiangtao Li">
              <organization/>
            </author>
            <date year="2010" month="August"/>
          </front>
        </reference>
        <reference anchor="Zcash" target="https://z.cash/learn/what-are-zk-snarks/">
          <front>
            <title>What are zk-SNARKs?</title>
            <author>
              <organization>Zcash</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="ZcashRep" target="https://zips.z.cash/protocol/protocol.pdf#blspairing">
          <front>
            <title>Zcash Protocol Specification</title>
            <author initials="D-E." surname="Hopwood">
              <organization/>
            </author>
            <author initials="S." surname="Bowe">
              <organization/>
            </author>
            <author initials="T." surname="Hornby">
              <organization/>
            </author>
            <author initials="N." surname="Wilcox">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Section" value="5.4.9.2"/>
        </reference>
        <reference anchor="Cloudflare" target="https://blog.cloudflare.com/geo-key-manager-how-it-works/">
          <front>
            <title>Geo Key Manager: How It Works</title>
            <author initials="N." surname="Sullivan">
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-irtf-cfrg-bls-signature-07.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8032.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9591.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9380.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-irtf-cfrg-bbs-signatures-10.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-cose-bls-key-representations-08.xml"/>
        <reference anchor="Ethereum" target="https://medium.com/prysmatic-labs/ethereum-2-0-development-update-17-prysmatic-labs-ed5bcf82ec00">
          <front>
            <title>Ethereum 2.0 Development Update #17 - Prysmatic Labs</title>
            <author initials="R." surname="Jordan">
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Algorand" target="https://medium.com/algorand/digital-signatures-for-blockchains-5820e15fbe95">
          <front>
            <title>Pixel-signatures: Efficient and Secure Digital Signatures for Proof-of-Stake Blockchains</title>
            <author initials="S." surname="Gorbunov">
              <organization/>
            </author>
            <date year="2019" month="March" day="7"/>
          </front>
        </reference>
        <reference anchor="Chia" target="https://github.com/Chia-Network/bls-signatures">
          <front>
            <title>BLS signatures in C++, using the blst library for BLS12-381</title>
            <author>
              <organization>Chia Network</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="DFINITY" target="https://web.archive.org/web/20250307232101/https://dfinity.org/pdf-viewer/library/dfinity-consensus.pdf">
          <front>
            <title>DFINITY Technology Overview Series Consensus System Rev. 1</title>
            <author initials="D." surname="Williams">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IEEE1363">
          <front>
            <title>IEEE Standard Specifications for Public-Key Cryptography</title>
            <author>
              <organization/>
            </author>
            <date year="2000"/>
          </front>
          <seriesInfo name="IEEE" value="standard"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2000.92292"/>
        </reference>
        <reference anchor="SEC1" target="https://www.secg.org/sec1-v2.pdf">
          <front>
            <title>SEC 1: Elliptic Curve Cryptography</title>
            <author>
              <organization>Standards for Efficient Cryptography Group (SECG)</organization>
            </author>
            <date year="2009"/>
          </front>
        </reference>
        <reference anchor="Cheon06">
          <front>
            <title>Security Analysis of the Strong Diffie-Hellman Problem</title>
            <seriesInfo name="DOI" value="10.1007/11761679_1"/>
            <seriesInfo name="EUROCRYPT 2006" value="pp. 1-11"/>
            <author initials="J. H. " surname="Cheon" fullname="Jung Hee Cheon">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="ECRYPT">
          <front>
            <title>Final Report on Main Computational Assumptions in Cryptography</title>
            <author>
              <organization>ECRYPT</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="Pollard78">
          <front>
            <title>Monte Carlo methods for index computation $({\rm mod}\ p)$</title>
            <seriesInfo name="DOI" value="10.1090/s0025-5718-1978-0491431-9"/>
            <seriesInfo name="Mathematics of Computation" value="Vol. 32, pp. 918-918"/>
            <author initials="J." surname="Pollard" fullname="J. M. Pollard">
              <organization/>
            </author>
            <date year="1978" month="September"/>
          </front>
        </reference>
        <reference anchor="HR83">
          <front>
            <title>Fast Computation of Discrete Logarithms in GF (q)</title>
            <seriesInfo name="DOI" value="10.1007/978-1-4757-0602-4_1"/>
            <seriesInfo name="Advances in Cryptology" value="pp. 3-13"/>
            <author initials="M." surname="Hellman" fullname="Martin E. Hellman">
              <organization/>
            </author>
            <author initials="J." surname="Reyneri" fullname="Justin M. Reyneri">
              <organization/>
            </author>
            <date year="1983"/>
          </front>
        </reference>
        <reference anchor="mcl" target="https://github.com/herumi/mcl">
          <front>
            <title>mcl - A portable and fast pairing-based cryptography library</title>
            <author initials="S." surname="Mitsunari">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="BLS12-381" target="https://web.archive.org/web/20260823101842/https://electriccoin.co/blog/new-snark-curve/">
          <front>
            <title>BLS12-381: New zk-SNARK Elliptic Curve Construction</title>
            <author initials="S." surname="Bowe">
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="ISOIEC15946-5">
          <front>
            <title>ISO/IEC 15946-5:2022</title>
            <seriesInfo name="ISO/IEC" value="Information technology -- Security techniques -- Cryptographic techniques based on elliptic curves -- Part 5: Elliptic curve generation"/>
            <author>
              <organization>ISO/IEC</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="MIRACL" target="https://github.com/miracl/core">
          <front>
            <title>The MIRACL Core Cryptographic Library</title>
            <author>
              <organization>MIRACL Ltd.</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="libsnark" target="https://github.com/zcash/libsnark">
          <front>
            <title>libsnark: a C++ library for zkSNARK proofs</title>
            <author>
              <organization>SCIPR Lab</organization>
            </author>
            <date year="2012"/>
          </front>
        </reference>
        <reference anchor="zkcrypto" target="https://github.com/zkcrypto/pairing">
          <front>
            <title>zkcrypto - Pairing-friendly elliptic curve library</title>
            <author>
              <organization>zkcrypto</organization>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="zkcrypto-bls12-381" target="https://github.com/zkcrypto/bls12_381">
          <front>
            <title>bls12_381 - Implementation of the BLS12-381 pairing-friendly elliptic curve group</title>
            <author>
              <organization>zkcrypto</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="CIRCL" target="https://github.com/cloudflare/circl">
          <front>
            <title>CIRCL: Cloudflare Interoperable, Reusable Cryptographic Library</title>
            <author>
              <organization>Cloudflare</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="PBC" target="https://crypto.stanford.edu/pbc/">
          <front>
            <title>PBC Library - The Pairing-Based Cryptography Library</title>
            <author initials="B." surname="Lynn">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="RELIC" target="https://github.com/relic-toolkit/relic">
          <front>
            <title>RELIC is an Efficient LIbrary for Cryptography</title>
            <author initials="C.P.L." surname="Gouvea">
              <organization/>
            </author>
            <date year="2013"/>
          </front>
        </reference>
        <reference anchor="TEPLA" target="http://www.cipher.risk.tsukuba.ac.jp/tepla/index_e.html">
          <front>
            <title>TEPLA: University of Tsukuba Elliptic Curve and Pairing Library</title>
            <author>
              <organization>University of Tsukuba</organization>
            </author>
            <date year="2013"/>
          </front>
        </reference>
        <reference anchor="AMCL" target="https://github.com/apache/incubator-milagro-crypto">
          <front>
            <title>The Apache Milagro Cryptographic Library (AMCL)</title>
            <author>
              <organization>The Apache Software Foundation</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="Intel-IPP" target="https://web.archive.org/web/20200506110820/https://software.intel.com/en-us/ipp-crypto-reference-arithmetic-of-the-group-of-elliptic-curve-points">
          <front>
            <title>Developer Reference for Intel Integrated Performance Primitives Cryptography 2019</title>
            <author>
              <organization>Intel Corporation</organization>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="BLS48" target="https://github.com/mk-math-kyushu/bls48">
          <front>
            <title>bls48 - C++ library for Optimal Ate Pairing on BLS48</title>
            <author>
              <organization>Kyushu University</organization>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="NASKM08">
          <front>
            <title>Integer Variable X-Based Ate Pairing</title>
            <seriesInfo name="DOI" value="10.1007/978-3-540-85538-5_13"/>
            <seriesInfo name="Pairing 2008" value="pp. 178-191"/>
            <author initials="Y." surname="Nogami" fullname="Yasuyuki Nogami">
              <organization/>
            </author>
            <author initials="M." surname="Akane" fullname="Masataka Akane">
              <organization/>
            </author>
            <author initials="Y." surname="Sakemi" fullname="Yumi Sakemi">
              <organization/>
            </author>
            <author initials="H." surname="Kato" fullname="Hidehiro Kato">
              <organization/>
            </author>
            <author initials="Y." surname="Morikawa" fullname="Yoshitaka Morikawa">
              <organization/>
            </author>
            <date year="2008"/>
          </front>
        </reference>
        <reference anchor="DSD07">
          <front>
            <title>Implementing Cryptographic Pairings over Barreto-Naehrig Curves</title>
            <seriesInfo name="DOI" value="10.1007/978-3-540-73489-5_10"/>
            <seriesInfo name="Pairing 2007" value="pp. 197-207"/>
            <author initials="A. J." surname="Devegili" fullname="Augusto Jun Devegili">
              <organization/>
            </author>
            <author initials="M." surname="Scott" fullname="Michael Scott">
              <organization/>
            </author>
            <author initials="R." surname="Dahab" fullname="Ricard Dahab">
              <organization/>
            </author>
            <date year="2007"/>
          </front>
        </reference>
        <reference anchor="BGMORT10">
          <front>
            <title>High-Speed Software Implementation of the Optimal Ate Pairing over Barreto–Naehrig Curves</title>
            <seriesInfo name="DOI" value="10.1007/978-3-642-17455-1_2"/>
            <seriesInfo name="Pairing 2010" value="pp. 21-39"/>
            <author initials="J." surname="Beuchat" fullname="Jean-Luc Beuchat">
              <organization/>
            </author>
            <author initials="J." surname="González-Díaz" fullname="Jorge E. González-Díaz">
              <organization/>
            </author>
            <author initials="S." surname="Mitsunari" fullname="Shigeo Mitsunari">
              <organization/>
            </author>
            <author initials="E." surname="Okamoto" fullname="Eiji Okamoto">
              <organization/>
            </author>
            <author initials="F." surname="Rodríguez-Henríquez" fullname="Francisco Rodríguez-Henríquez">
              <organization/>
            </author>
            <author initials="T." surname="Teruya" fullname="Tadanori Teruya">
              <organization/>
            </author>
            <date year="2010"/>
          </front>
        </reference>
        <reference anchor="SG18" target="https://eprint.iacr.org/2018/193.pdf">
          <front>
            <title>A New Family of Pairing-Friendly elliptic curves</title>
            <seriesInfo name="Cryptology ePrint Archive" value="Report 2018/193"/>
            <author initials="M." surname="Scott">
              <organization/>
            </author>
            <author initials="A." surname="Guillevic">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="BCM15" target="https://eprint.iacr.org/2015/247.pdf">
          <front>
            <title>Subgroup security in pairing-based cryptography</title>
            <seriesInfo name="Cryptology ePrint Archive" value="Report 2015/247"/>
            <author initials="P. S. L. M." surname="Barreto">
              <organization/>
            </author>
            <author initials="C." surname="Costello">
              <organization/>
            </author>
            <author initials="R." surname="Misoczki">
              <organization/>
            </author>
            <author initials="M." surname="Naehrig">
              <organization/>
            </author>
            <author initials="G. C. C. F. " surname="Pereira">
              <organization/>
            </author>
            <author initials="G. " surname="Zanon">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
        </reference>
        <reference anchor="Montgomery" target="https://www.ams.org/journals/mcom/1987-48-177/S0025-5718-1987-0866113-7/S0025-5718-1987-0866113-7.pdf">
          <front>
            <title>Speeding the Pollard and Elliptic Curve Methods of Factorization</title>
            <seriesInfo name="MATHEMATICS OF COMPUTATION" value=", January"/>
            <author initials="P." surname="Montgomery">
              <organization/>
            </author>
            <date year="1987"/>
          </front>
        </reference>
        <reference anchor="MAF19" target="https://doi.org/10.1504/IJACT.2020.107167">
          <front>
            <title>Computing the Optimal Ate Pairing over Elliptic Curves with Embedding Degrees 54 and 48 at the 256-bit security level</title>
            <seriesInfo name="International Journal of Applied Cryptography" value="vol. 4, no. 1, pp. 45-59"/>
            <author initials="N.B." surname="Mbang">
              <organization/>
            </author>
            <author initials="D.F." surname="Aranha">
              <organization/>
            </author>
            <author initials="E." surname="Fouotsa">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="KSS08">
          <front>
            <title>Constructing Brezing-Weng Pairing-Friendly Elliptic Curves Using Elements in the Cyclotomic Field</title>
            <seriesInfo name="DOI" value="10.1007/978-3-540-85538-5_9"/>
            <seriesInfo name="Pairing 2008" value="pp. 126-135"/>
            <author initials="E." surname="Kachisa">
              <organization/>
            </author>
            <author initials="E." surname="Schaefer">
              <organization/>
            </author>
            <author initials="M." surname="Scott">
              <organization/>
            </author>
            <date year="2008"/>
          </front>
        </reference>
        <reference anchor="AFKMR12">
          <front>
            <title>Implementing Pairings at the 192-Bit Security Level</title>
            <seriesInfo name="DOI" value="10.1007/978-3-642-36334-4_11"/>
            <seriesInfo name="Pairing 2012" value="pp. 177-195"/>
            <author initials="D.F." surname="Aranha">
              <organization/>
            </author>
            <author initials="L." surname="Fuentes-Castaneda">
              <organization/>
            </author>
            <author initials="E." surname="Knapp">
              <organization/>
            </author>
            <author initials="A." surname="Menezes">
              <organization/>
            </author>
            <author initials="F." surname="Rodríguez-Henríquez">
              <organization/>
            </author>
            <date year="2012"/>
          </front>
        </reference>
        <reference anchor="FM19" target="https://eprint.iacr.org/2019/555.pdf">
          <front>
            <title>Optimal TNFS-secure pairings on elliptic curves with composite embedding degree</title>
            <seriesInfo name="Cryptology ePrint Archive" value="Report 2019/555"/>
            <author initials="G." surname="Fotiadis">
              <organization/>
            </author>
            <author initials="C." surname="Martindale">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="FK18" target="https://eprint.iacr.org/2018/1017.pdf">
          <front>
            <title>TNFS Resistant Families of Pairing-Friendly Elliptic Curves</title>
            <seriesInfo name="Cryptology ePrint Archive" value="Report 2018/1017"/>
            <author initials="G." surname="Fotiadis">
              <organization/>
            </author>
            <author initials="E." surname="Konstantinou">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="CLN09" target="https://eprint.iacr.org/2009/615.pdf">
          <front>
            <title>Faster Pairing Computations on Curves with High-Degree Twists</title>
            <seriesInfo name="Cryptology ePrint Archive" value="Report 2009/615"/>
            <author initials="C." surname="Costello">
              <organization/>
            </author>
            <author initials="T." surname="Lange">
              <organization/>
            </author>
            <author initials="M." surname="Naehrig">
              <organization/>
            </author>
            <date year="2009"/>
          </front>
        </reference>
        <reference anchor="S86">
          <front>
            <title>The arithmetic of elliptic curves</title>
            <seriesInfo name="Springer GTM" value="106"/>
            <author initials="J. H." surname="Silverman">
              <organization/>
            </author>
            <date year="1986"/>
          </front>
        </reference>
        <reference anchor="MNT01">
          <front>
            <title>New explicit conditions of Elliptic Curve Traces under FR reduction</title>
            <seriesInfo name="IEICE Trans. Fundamentals. E84-A(5)" value="pp. 1234-1243"/>
            <author initials="A." surname="Miyaji">
              <organization/>
            </author>
            <author initials="M." surname="Nakabayashi">
              <organization/>
            </author>
            <author initials="S." surname="Takano">
              <organization/>
            </author>
            <date year="2001"/>
          </front>
        </reference>
        <reference anchor="Freeman06">
          <front>
            <title>Constructing pairing-friendly elliptic curves with embedding degree 10</title>
            <seriesInfo name="DOI" value="10.1007/11792086_32"/>
            <seriesInfo name="ANTS 2006" value="pp. 452-465"/>
            <author initials="D." surname="Freeman">
              <organization/>
            </author>
            <date year="2006"/>
          </front>
        </reference>
        <reference anchor="AdjointLib" target="https://github.com/sdiehl/pairing">
          <front>
            <title>Optimised bilinear pairings over elliptic curves</title>
            <author>
              <organization>Adjoint Inc.</organization>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="AMCLv2" target="https://github.com/miracl/amcl/tree/master/version22">
          <front>
            <title>Old version of the Apache Milagro Cryptographic Library</title>
            <author>
              <organization>The Apache Software Foundation</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="blst" target="https://github.com/supranational/blst">
          <front>
            <title>blst: BLS12-381 signature library</title>
            <author>
              <organization>Supranational LLC</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="gnark-crypto" target="https://github.com/consensys/gnark-crypto">
          <front>
            <title>gnark-crypto: Elliptic curve cryptography and pairing library</title>
            <author>
              <organization>Consensys Software Inc.</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="noble-curves" target="https://github.com/paulmillr/noble-curves">
          <front>
            <title>noble-curves: Audited &amp; minimal JS implementation of elliptic curve cryptography</title>
            <author initials="P." surname="Miller">
              <organization/>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="arkworks" target="https://github.com/arkworks-rs">
          <front>
            <title>arkworks: A Rust ecosystem for zkSNARK programming</title>
            <author>
              <organization>arkworks contributors</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="constantine" target="https://github.com/mratsim/constantine">
          <front>
            <title>Constantine: Constant-time cryptographic library</title>
            <author initials="M." surname="Ratsimbazafy">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="zig-pairings" target="https://github.com/jedisct1/zig-pairings">
          <front>
            <title>zig-pairings: Pairing-friendly curves in pure Zig (BLS12-381, BN462)</title>
            <author initials="F." surname="Denis" fullname="Frank Denis">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="pfcurve-js" target="https://github.com/jc-lab/pfcurve.js">
          <front>
            <title>pfcurve.js: A pairing-friendly curve library for Node.js and the browser</title>
            <author>
              <organization>JC-Lab</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="Filecoin" target="https://research.protocol.ai/publications/filecoin-a-decentralized-storage-network/">
          <front>
            <title>Filecoin: A Decentralized Storage Network</title>
            <author>
              <organization>Protocol Labs</organization>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="EIP197" target="https://eips.ethereum.org/EIPS/eip-197">
          <front>
            <title>EIP-197: Precompiled contracts for optimal ate pairing check on the elliptic curve alt_bn128</title>
            <author initials="V." surname="Buterin">
              <organization/>
            </author>
            <author initials="C." surname="Reitwiessner">
              <organization/>
            </author>
            <date year="2017" month="February"/>
          </front>
        </reference>
        <reference anchor="go-algorand" target="https://github.com/algorand/go-algorand">
          <front>
            <title>go-algorand: Algorand's official implementation in Go</title>
            <author>
              <organization>Algorand</organization>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="EIP2537" target="https://eips.ethereum.org/EIPS/eip-2537">
          <front>
            <title>EIP-2537: Precompile for BLS12-381 curve operations</title>
            <author initials="A." surname="Vlasov">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="HHT20" target="https://eprint.iacr.org/2020/875">
          <front>
            <title>Efficient Final Exponentiation via Cyclotomic Structure for Pairings over Families of Elliptic Curves</title>
            <author initials="D." surname="Hayashida">
              <organization/>
            </author>
            <author initials="K." surname="Hayasaka">
              <organization/>
            </author>
            <author initials="T." surname="Teruya">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="Cryptology ePrint Archive" value="Paper 2020/875"/>
        </reference>
        <reference anchor="SBCK09" target="https://doi.org/10.1007/978-3-642-03298-1_6">
          <front>
            <title>On the Final Exponentiation for Calculating Pairings on Ordinary Elliptic Curves</title>
            <author initials="M." surname="Scott">
              <organization/>
            </author>
            <author initials="N." surname="Benger">
              <organization/>
            </author>
            <author initials="M." surname="Charlemagne">
              <organization/>
            </author>
            <author initials="L.J." surname="Dominguez Perez">
              <organization/>
            </author>
            <author initials="E.J." surname="Kachisa">
              <organization/>
            </author>
            <date year="2009"/>
          </front>
          <seriesInfo name="Pairing 2009, LNCS" value="vol. 5671, pp. 78-88"/>
        </reference>
        <reference anchor="AKLGL11" target="https://eprint.iacr.org/2010/526">
          <front>
            <title>Faster Explicit Formulas for Computing Pairings over Ordinary Curves</title>
            <author initials="D.F." surname="Aranha">
              <organization/>
            </author>
            <author initials="K." surname="Karabina">
              <organization/>
            </author>
            <author initials="P." surname="Longa">
              <organization/>
            </author>
            <author initials="C.H." surname="Gebotys">
              <organization/>
            </author>
            <author initials="J." surname="López">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="EUROCRYPT" value="2011"/>
        </reference>
        <reference anchor="FCKR11" target="https://doi.org/10.1007/978-3-642-28496-0_25">
          <front>
            <title>Faster Hashing to G2</title>
            <author initials="L." surname="Fuentes-Castañeda">
              <organization/>
            </author>
            <author initials="E." surname="Knapp">
              <organization/>
            </author>
            <author initials="F." surname="Rodríguez-Henríquez">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="SAC 2011, LNCS" value="vol. 7118, pp. 412-430"/>
        </reference>
      </references>
    </references>
    <section anchor="comp_pairing">
      <name>Computing the Optimal Ate Pairing</name>
      <t>Before presenting the computation of the optimal ate pairing e(P, Q) satisfying the properties shown in <xref target="pairing"/>, we give the subfunctions used for the pairing computation.</t>
      <t>The following algorithm, Line_function, shows the computation of the line function. It takes Q_1 = (x_1, y_1), Q_2 = (x_2, y_2) in G_2, and P = (x, y) in G_1 as input, and outputs an element of GF(p^k).</t>
      <artwork><![CDATA[
if (Q_1 = Q_2) then
    l := (3 * x_1^2) / (2 * y_1);
else if (Q_1 = -Q_2) then
    return (x - x_1);
else
    l := (y_2 - y_1) / (x_2 - x_1);
end if
return (l * (x - x_1) + y_1 - y);
]]></artwork>
      <t>When implementing the line function, the isomorphism of E and its twist curve E' can be used to reduce the computational cost of operations in G_2 <xref target="CLN09"/> <xref target="KIK17"/>. We note that Line_function does not consider such an isomorphism; i.e., the above pseudocode operates on coordinates in untwisted form.</t>
      <t>The computation of the optimal ate pairing uses the p-power Frobenius endomorphism pi of <xref target="pairing"/>, applied to Q = (x, y) in G_2, that is, to a point on E(GF(p^k)) in untwisted form. The pseudocode below writes it with the characteristic as an explicit argument, pi(p, Q) = (x^p, y^p).</t>
      <section anchor="optimal-ate-pairings-over-barreto-naehrig-curves">
        <name>Optimal Ate Pairings over Barreto-Naehrig Curves</name>
        <t>Let c = 6 * t + 2 for a parameter t and c_0, c_1, ... , c_N in {-1,0,1} such that the sum of c_i * 2^i (i = 0, 1, ..., N) equals c.</t>
        <t>The following algorithm shows the computation of the optimal ate pairing on BN curves. It takes P in G_1, Q in G_2, an integer c, c_0, ...,c_N in {-1,0,1} such that the sum of c_i * 2^i (i = 0, 1, ..., N) equals c, and the order r of G_1 as input, and outputs e(P, Q).</t>
        <artwork><![CDATA[
f := 1; T := Q;
if (c_N = -1) then
    T := -T;
end if
for i = N-1 downto 0
    f := f^2 * Line_function(T, T, P); T := T + T;
    if (c_i = 1) then
        f := f * Line_function(T, Q, P); T := T + Q;
    else if (c_i = -1) then
        f := f * Line_function(T, -Q, P); T := T - Q;
    end if
end for
Q_1 := pi(p, Q); Q_2 := pi(p, Q_1);
f := f * Line_function(T, Q_1, P); T := T + Q_1;
f := f * Line_function(T, -Q_2, P);
f := f^{(p^k - 1) / r}
return f;
]]></artwork>
      </section>
      <section anchor="optimal-ate-pairings-over-barreto-lynn-scott-curves">
        <name>Optimal Ate Pairings over Barreto-Lynn-Scott Curves</name>
        <t>Let c = t for a parameter t and c_0, c_1, ... , c_N in {-1,0,1} such that the sum of c_i * 2^i (i = 0, 1, ..., N) equals c.</t>
        <t>The following algorithm shows the computation of the optimal ate pairing on Barreto-Lynn-Scott curves. It takes P in G_1, Q in G_2, an integer c, c_0, ...,c_N in {-1,0,1} such that the sum of c_i * 2^i (i = 0, 1, ..., N) equals c, and the order r of G_1 as input, and outputs e(P, Q).</t>
        <artwork><![CDATA[
f := 1; T := Q;
if (c_N = -1) then
    T := -T;
end if
for i = N-1 downto 0
    f := f^2 * Line_function(T, T, P); T := T + T;
    if (c_i = 1) then
        f := f * Line_function(T, Q, P); T := T + Q;
    else if (c_i = -1) then
        f := f * Line_function(T, -Q, P); T := T - Q;
    end if
end for
f := f^{(p^k - 1) / r}
return f;
]]></artwork>
      </section>
    </section>
    <section anchor="implementation-notes">
      <name>Implementation Notes</name>
      <t>This appendix is informative. It documents implementation considerations discovered through verification of this memo's pseudocode against widely used pairing libraries (mcl, noble-curves, blst), and does not standardize any algorithm.</t>
      <section anchor="library-cofactors">
        <name>Cofactors in Existing Libraries</name>
        <t>Some implementations evaluate a fixed multiple of the final exponent. Their output differs from the literal output of the pseudocode in <xref target="comp_pairing"/> by a curve-specific exponent in G_T:</t>
        <artwork><![CDATA[
e_lib(P, Q) = e_pseudocode(P, Q)^alpha
]]></artwork>
        <t>where alpha is:</t>
        <ul spacing="normal">
          <li>
            <t>BLS12-381: alpha = 3 <xref target="HHT20"/></t>
          </li>
          <li>
            <t>BN462: alpha = 2t(6t^2 + 3t + 1) mod r <xref target="FCKR11"/></t>
          </li>
          <li>
            <t>BLS48-581: alpha = 3 <xref target="HHT20"/></t>
          </li>
        </ul>
        <t>Because gcd(alpha, r) = 1 for all three curves, the following properties hold:</t>
        <ul spacing="normal">
          <li>
            <t>Bilinearity is preserved: e_lib([K]P, [L]Q) = e_lib(P, Q)^{K * L}.</t>
          </li>
          <li>
            <t>Verification equations of the form e(A, B) = e(C, D) hold using e_lib if and only if they hold using e_pseudocode.</t>
          </li>
          <li>
            <t>Direct byte-comparison between e_lib output and the test vectors in <xref target="test-vectors-of-optimal-ate-pairing"/> will not match. Implementations seeking byte-level reproducibility of those test vectors should evaluate the pseudocode in <xref target="comp_pairing"/> literally, without applying the cofactor optimization.</t>
          </li>
        </ul>
      </section>
      <section anchor="final-exponentiation-decomposition">
        <name>Final Exponentiation Decomposition</name>
        <t>The pseudocode in <xref target="comp_pairing"/> writes the final exponentiation as a single step, f := f^((p^k - 1) / r). In practice, implementations compute this via an easy/hard split: an easy part computed cheaply via the Frobenius endomorphism, and a hard part computed via an addition chain over the curve parameter t.</t>
        <t>Standard references for the hard-part addition chain include <xref target="SBCK09"/> (the original approach for BLS curves) and <xref target="AKLGL11"/> (for BN curves). <xref target="FCKR11"/> and <xref target="HHT20"/> are cited in <xref target="library-cofactors"/> for a different reason: each evaluates a fixed multiple of the hard part rather than the hard part itself, which is where the exponent alpha given there comes from.</t>
      </section>
    </section>
    <section anchor="test-vectors-of-optimal-ate-pairing">
      <name>Test Vectors of Optimal Ate Pairing</name>
      <t>We provide test vectors for Optimal Ate Pairing e(P, Q) given in <xref target="comp_pairing"/> for the curves BLS12-381, BN462 and BLS48-581 given in <xref target="secure_params"/>. Here, the inputs P = (x, y) and Q = (x', y') are the corresponding base points BP and BP' given in <xref target="secure_params"/>.</t>
      <t>Note: The G_2 base points Q = (x', y') in this appendix are given in twisted form, that is, as the corresponding points of G'_2, with coordinates in GF(p^(k/d)), which gives a compact representation. The pseudocode in <xref target="comp_pairing"/> operates on points of the untwisted curve E(GF(p^k)). An implementation invoking that pseudocode directly has to apply the untwist isomorphism psi defined in <xref target="secure_params"/> first, to lift Q from E' to E(GF(p^k)). Most existing libraries perform this lifting implicitly by using twisted-form variants of Line_function, which are mathematically equivalent and more efficient.</t>
      <t>For BLS12-381 and BN462, Q = (x', y') is given by</t>
      <artwork><![CDATA[
x' = x'_0 + x'_1 * u and
y' = y'_0 + y'_1 * u,
]]></artwork>
      <t>where u is an indeterminate and x'_0, x'_1, y'_0, y'_1 are elements of GF(p).</t>
      <t>For BLS48-581, Q = (x', y') is given by</t>
      <artwork><![CDATA[
x' = x'_0 + x'_1 * u + x'_2 * v + x'_3 * u * v
    + x'_4 * w + x'_5 * u * w + x'_6 * v * w + x'_7 * u * v * w and
y' = y'_0 + y'_1 * u + y'_2 * v + y'_3 * u * v
    + y'_4 * w + y'_5 * u * w + y'_6 * v * w + y'_7 * u * v * w,
]]></artwork>
      <t>where u, v and w are indeterminates and x'_0, ..., x'_7 and y'_0, ..., y'_7 are elements of GF(p).</t>
      <t>In addition, we use the notation e_i (i = 0, ..., k-1) for the coefficients of e(P, Q) over GF(p), with respect to the tower of extension fields defined for each curve in <xref target="secure_params"/>. The basis is the set of products of powers of the indeterminates of that tower, indexed so that each indeterminate contributes a stride equal to the degree over GF(p) of the field it extends.</t>
      <t>For BLS12-381 and BN462 (k = 12), with the towers of <xref target="tower_bls12_381"/> and <xref target="tower_bn462"/>, this gives</t>
      <artwork><![CDATA[
e(P, Q) = e_0 + e_1 * u + e_2 * v + e_3 * u * v + e_4 * v^2
        + e_5 * u * v^2 + e_6 * w + e_7 * u * w + e_8 * v * w
        + e_9 * u * v * w + e_10 * v^2 * w + e_11 * u * v^2 * w.
]]></artwork>
      <t>For BLS48-581 (k = 48), with the tower of <xref target="tower_bls48_581"/>, the same rule gives the 48 basis elements u^i1 * v^i2 * w^i3 * z^i4 * s^i5, where i1, i2, i3 and i5 are in {0, 1} and i4 is in {0, 1, 2}. The coefficient of that basis element is e_i with</t>
      <artwork><![CDATA[
i = i1 + 2 * i2 + 4 * i3 + 8 * i4 + 24 * i5.
]]></artwork>
      <t>BLS12-381:</t>
      <dl>
        <dt>Input x value:</dt>
        <dd>
          <artwork><![CDATA[
0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac58
  6c55e83ff97a1aeffb3af00adb22c6bb
]]></artwork>
        </dd>
        <dt>Input y value:</dt>
        <dd>
          <artwork><![CDATA[
0x08b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3ed
  d03cc744a2888ae40caa232946c5e7e1
]]></artwork>
        </dd>
        <dt>Input x'_0 value:</dt>
        <dd>
          <artwork><![CDATA[
0x024aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d177
  0bac0326a805bbefd48056c8c121bdb8
]]></artwork>
        </dd>
        <dt>Input x'_1 value:</dt>
        <dd>
          <artwork><![CDATA[
0x13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049
  334cf11213945d57e5ac7d055d042b7e
]]></artwork>
        </dd>
        <dt>Input y'_0 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0ce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c
  923ac9cc3baca289e193548608b82801
]]></artwork>
        </dd>
        <dt>Input y'_1 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab
  3f370d275cec1da1aaa9075ff05f79be
]]></artwork>
        </dd>
        <dt>e_0:</dt>
        <dd>
          <artwork><![CDATA[
0x11619b45f61edfe3b47a15fac19442526ff489dcda25e59121d9931438907dfd
  448299a87dde3a649bdba96e84d54558
]]></artwork>
        </dd>
        <dt>e_1:</dt>
        <dd>
          <artwork><![CDATA[
0x153ce14a76a53e205ba8f275ef1137c56a566f638b52d34ba3bf3bf22f277d70
  f76316218c0dfd583a394b8448d2be7f
]]></artwork>
        </dd>
        <dt>e_2:</dt>
        <dd>
          <artwork><![CDATA[
0x095668fb4a02fe930ed44767834c915b283b1c6ca98c047bd4c272e9ac3f3ba6
  ff0b05a93e59c71fba77bce995f04692
]]></artwork>
        </dd>
        <dt>e_3:</dt>
        <dd>
          <artwork><![CDATA[
0x16deedaa683124fe7260085184d88f7d036b86f53bb5b7f1fc5e248814782065
  413e7d958d17960109ea006b2afdeb5f
]]></artwork>
        </dd>
        <dt>e_4:</dt>
        <dd>
          <artwork><![CDATA[
0x09c92cf02f3cd3d2f9d34bc44eee0dd50314ed44ca5d30ce6a9ec0539be7a86b
  121edc61839ccc908c4bdde256cd6048
]]></artwork>
        </dd>
        <dt>e_5:</dt>
        <dd>
          <artwork><![CDATA[
0x111061f398efc2a97ff825b04d21089e24fd8b93a47e41e60eae7e9b2a38d54f
  a4dedced0811c34ce528781ab9e929c7
]]></artwork>
        </dd>
        <dt>e_6:</dt>
        <dd>
          <artwork><![CDATA[
0x01ecfcf31c86257ab00b4709c33f1c9c4e007659dd5ffc4a735192167ce19705
  8cfb4c94225e7f1b6c26ad9ba68f63bc
]]></artwork>
        </dd>
        <dt>e_7:</dt>
        <dd>
          <artwork><![CDATA[
0x08890726743a1f94a8193a166800b7787744a8ad8e2f9365db76863e894b7a11
  d83f90d873567e9d645ccf725b32d26f
]]></artwork>
        </dd>
        <dt>e_8:</dt>
        <dd>
          <artwork><![CDATA[
0x0e61c752414ca5dfd258e9606bac08daec29b3e2c57062669556954fb227d3f1
  260eedf25446a086b0844bcd43646c10
]]></artwork>
        </dd>
        <dt>e_9:</dt>
        <dd>
          <artwork><![CDATA[
0x0fe63f185f56dd29150fc498bbeea78969e7e783043620db33f75a05a0a2ce5c
  442beaff9da195ff15164c00ab66bdde
]]></artwork>
        </dd>
        <dt>e_10:</dt>
        <dd>
          <artwork><![CDATA[
0x10900338a92ed0b47af211636f7cfdec717b7ee43900eee9b5fc24f0000c5874
  d4801372db478987691c566a8c474978
]]></artwork>
        </dd>
        <dt>e_11:</dt>
        <dd>
          <artwork><![CDATA[
0x1454814f3085f0e6602247671bc408bbce2007201536818c901dbd4d2095dd86
  c1ec8b888e59611f60a301af7776be3d
]]></artwork>
        </dd>
      </dl>
      <t>BN462:</t>
      <dl>
        <dt>Input x value:</dt>
        <dd>
          <artwork><![CDATA[
0x21a6d67ef250191fadba34a0a30160b9ac9264b6f95f63b3edbec3cf4b2e689d
  b1bbb4e69a416a0b1e79239c0372e5cd70113c98d91f36b6980d
]]></artwork>
        </dd>
        <dt>Input y value:</dt>
        <dd>
          <artwork><![CDATA[
0x0118ea0460f7f7abb82b33676a7432a490eeda842cccfa7d788c659650426e6a
  f77df11b8ae40eb80f475432c66600622ecaa8a5734d36fb03de
]]></artwork>
        </dd>
        <dt>Input x'_0 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0257ccc85b58dda0dfb38e3a8cbdc5482e0337e7c1cd96ed61c913820408208f
  9ad2699bad92e0032ae1f0aa6a8b48807695468e3d934ae1e4df
]]></artwork>
        </dd>
        <dt>Input x'_1 value:</dt>
        <dd>
          <artwork><![CDATA[
0x1d2e4343e8599102af8edca849566ba3c98e2a354730cbed9176884058b18134
  dd86bae555b783718f50af8b59bf7e850e9b73108ba6aa8cd283
]]></artwork>
        </dd>
        <dt>Input y'_0 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0a0650439da22c1979517427a20809eca035634706e23c3fa7a6bb42fe810f13
  99a1f41c9ddae32e03695a140e7b11d7c3376e5b68df0db7154e
]]></artwork>
        </dd>
        <dt>Input y'_1 value:</dt>
        <dd>
          <artwork><![CDATA[
0x073ef0cbd438cbe0172c8ae37306324d44d5e6b0c69ac57b393f1ab370fd725c
  c647692444a04ef87387aa68d53743493b9eba14cc552ca2a93a
]]></artwork>
        </dd>
        <dt>e_0:</dt>
        <dd>
          <artwork><![CDATA[
0x0cf7f0f2e01610804272f4a7a24014ac085543d787c8f8bf07059f93f87ba7e2
  a4ac77835d4ff10e78669be39cd23cc3a659c093dbe3b9647e8c
]]></artwork>
        </dd>
        <dt>e_1:</dt>
        <dd>
          <artwork><![CDATA[
0x00ef2c737515694ee5b85051e39970f24e27ca278847c7cfa709b0df408b830b
  3763b1b001f1194445b62d6c093fb6f77e43e369edefb1200389
]]></artwork>
        </dd>
        <dt>e_2:</dt>
        <dd>
          <artwork><![CDATA[
0x04d685b29fd2b8faedacd36873f24a06158742bb2328740f93827934592d6f17
  23e0772bb9ccd3025f88dc457fc4f77dfef76104ff43cd430bf7
]]></artwork>
        </dd>
        <dt>e_3:</dt>
        <dd>
          <artwork><![CDATA[
0x090067ef2892de0c48ee49cbe4ff1f835286c700c8d191574cb424019de11142
  b3c722cc5083a71912411c4a1f61c00d1e8f14f545348eb7462c
]]></artwork>
        </dd>
        <dt>e_4:</dt>
        <dd>
          <artwork><![CDATA[
0x1437603b60dce235a090c43f5147d9c03bd63081c8bb1ffa7d8a2c31d6732308
  60bb3dfe4ca85581f7459204ef755f63cba1fbd6a4436f10ba0e
]]></artwork>
        </dd>
        <dt>e_5:</dt>
        <dd>
          <artwork><![CDATA[
0x13191b1110d13650bf8e76b356fe776eb9d7a03fe33f82e3fe5732071f305d20
  1843238cc96fd0e892bc61701e1844faa8e33446f87c6e29e75f
]]></artwork>
        </dd>
        <dt>e_6:</dt>
        <dd>
          <artwork><![CDATA[
0x07b1ce375c0191c786bb184cc9c08a6ae5a569dd7586f75d6d2de2b2f075787e
  e5082d44ca4b8009b3285ecae5fa521e23be76e6a08f17fa5cc8
]]></artwork>
        </dd>
        <dt>e_7:</dt>
        <dd>
          <artwork><![CDATA[
0x05b64add5e49574b124a02d85f508c8d2d37993ae4c370a9cda89a100cdb5e1d
  441b57768dbc68429ffae243c0c57fe5ab0a3ee4c6f2d9d34714
]]></artwork>
        </dd>
        <dt>e_8:</dt>
        <dd>
          <artwork><![CDATA[
0x0fd9a3271854a2b4542b42c55916e1faf7a8b87a7d10907179ac7073f6a1de04
  4906ffaf4760d11c8f92df3e50251e39ce92c700a12e77d0adf3
]]></artwork>
        </dd>
        <dt>e_9:</dt>
        <dd>
          <artwork><![CDATA[
0x17fa0c7fa60c9a6d4d8bb9897991efd087899edc776f33743db921a689720c82
  257ee3c788e8160c112f18e841a3dd9a79a6f8782f771d542ee5
]]></artwork>
        </dd>
        <dt>e_10:</dt>
        <dd>
          <artwork><![CDATA[
0x0c901397a62bb185a8f9cf336e28cfb0f354e2313f99c538cdceedf8b8aa22c2
  3b896201170fc915690f79f6ba75581f1b76055cd89b7182041c
]]></artwork>
        </dd>
        <dt>e_11:</dt>
        <dd>
          <artwork><![CDATA[
0x20f27fde93cee94ca4bf9ded1b1378c1b0d80439eeb1d0c8daef30db0037104a
  5e32a2ccc94fa1860a95e39a93ba51187b45f4c2c50c16482322
]]></artwork>
        </dd>
      </dl>
      <t>BLS48-581:</t>
      <dl>
        <dt>Input x value:</dt>
        <dd>
          <artwork><![CDATA[
0x02af59b7ac340f2baf2b73df1e93f860de3f257e0e86868cf61abdbaedffb9f7
  544550546a9df6f9645847665d859236ebdbc57db368b11786cb74da5d3a1e6d
  8c3bce8732315af640
]]></artwork>
        </dd>
        <dt>Input y value:</dt>
        <dd>
          <artwork><![CDATA[
0x0cefda44f6531f91f86b3a2d1fb398a488a553c9efeb8a52e991279dd41b720e
  f7bb7beffb98aee53e80f678584c3ef22f487f77c2876d1b2e35f37aef7b926b
  576dbb5de3e2587a70
]]></artwork>
        </dd>
        <dt>Input x'_0 value:</dt>
        <dd>
          <artwork><![CDATA[
0x05d615d9a7871e4a38237fa45a2775debabbefc70344dbccb7de64db3a2ef156
  c46ff79baad1a8c42281a63ca0612f400503004d80491f510317b79766322154
  dec34fd0b4ace8bfab
]]></artwork>
        </dd>
        <dt>Input x'_1 value:</dt>
        <dd>
          <artwork><![CDATA[
0x07c4973ece2258512069b0e86abc07e8b22bb6d980e1623e9526f6da12307f4e
  1c3943a00abfedf16214a76affa62504f0c3c7630d979630ffd75556a01afa14
  3f1669b36676b47c57
]]></artwork>
        </dd>
        <dt>Input x'_2 value:</dt>
        <dd>
          <artwork><![CDATA[
0x01fccc70198f1334e1b2ea1853ad83bc73a8a6ca9ae237ca7a6d6957ccbab5ab
  6860161c1dbd19242ffae766f0d2a6d55f028cbdfbb879d5fea8ef4cded6b3f0
  b46488156ca55a3e6a
]]></artwork>
        </dd>
        <dt>Input x'_3 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0be2218c25ceb6185c78d8012954d4bfe8f5985ac62f3e5821b7b92a393f8be0
  cc218a95f63e1c776e6ec143b1b279b9468c31c5257c200ca52310b8cb4e80bc
  3f09a7033cbb7feafe
]]></artwork>
        </dd>
        <dt>Input x'_4 value:</dt>
        <dd>
          <artwork><![CDATA[
0x038b91c600b35913a3c598e4caa9dd63007c675d0b1642b5675ff0e7c5805386
  699981f9e48199d5ac10b2ef492ae589274fad55fc1889aa80c65b5f746c9d4c
  bb739c3a1c53f8cce5
]]></artwork>
        </dd>
        <dt>Input x'_5 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0c96c7797eb0738603f1311e4ecda088f7b8f35dcef0977a3d1a58677bb03741
  8181df63835d28997eb57b40b9c0b15dd7595a9f177612f097fc7960910fce33
  70f2004d914a3c093a
]]></artwork>
        </dd>
        <dt>Input x'_6 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0b9b7951c6061ee3f0197a498908aee660dea41b39d13852b6db908ba2c0b7a4
  49cef11f293b13ced0fd0caa5efcf3432aad1cbe4324c22d63334b5b0e205c33
  54e41607e60750e057
]]></artwork>
        </dd>
        <dt>Input x'_7 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0827d5c22fb2bdec5282624c4f4aaa2b1e5d7a9defaf47b5211cf741719728a7
  f9f8cfca93f29cff364a7190b7e2b0d4585479bd6aebf9fc44e56af2fc9e97c3
  f84e19da00fbc6ae34
]]></artwork>
        </dd>
        <dt>Input y'_0 value:</dt>
        <dd>
          <artwork><![CDATA[
0x00eb53356c375b5dfa497216452f3024b918b4238059a577e6f3b39ebfc435fa
  ab0906235afa27748d90f7336d8ae5163c1599abf77eea6d659045012ab12c0f
  f323edd3fe4d2d7971
]]></artwork>
        </dd>
        <dt>Input y'_1 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0284dc75979e0ff144da6531815fcadc2b75a422ba325e6fba01d72964732fcb
  f3afb096b243b1f192c5c3d1892ab24e1dd212fa097d760e2e588b423525ffc7
  b111471db936cd5665
]]></artwork>
        </dd>
        <dt>Input y'_2 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0b36a201dd008523e421efb70367669ef2c2fc5030216d5b119d3a480d370514
  475f7d5c99d0e90411515536ca3295e5e2f0c1d35d51a652269cbc7c46fc3b8f
  de68332a526a2a8474
]]></artwork>
        </dd>
        <dt>Input y'_3 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0aec25a4621edc0688223fbbd478762b1c2cded3360dcee23dd8b0e710e122d2
  742c89b224333fa40dced2817742770ba10d67bda503ee5e578fb3d8b8a1e533
  7316213da92841589d
]]></artwork>
        </dd>
        <dt>Input y'_4 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0d209d5a223a9c46916503fa5a88325a2554dc541b43dd93b5a959805f112985
  7ed85c77fa238cdce8a1e2ca4e512b64f59f430135945d137b08857fdddfcf7a
  43f47831f982e50137
]]></artwork>
        </dd>
        <dt>Input y'_5 value:</dt>
        <dd>
          <artwork><![CDATA[
0x07d0d03745736b7a513d339d5ad537b90421ad66eb16722b589d82e2055ab750
  4fa83420e8c270841f6824f47c180d139e3aafc198caa72b679da59ed8226cf3
  a594eedc58cf90bee4
]]></artwork>
        </dd>
        <dt>Input y'_6 value:</dt>
        <dd>
          <artwork><![CDATA[
0x0896767811be65ea25c2d05dfdd17af8a006f364fc0841b064155f14e4c819a6
  df98f425ae3a2864f22c1fab8c74b2618b5bb40fa639f53dccc9e884017d9aa6
  2b3d41faeafeb23986
]]></artwork>
        </dd>
        <dt>Input y'_7 value:</dt>
        <dd>
          <artwork><![CDATA[
0x035e2524ff89029d393a5c07e84f981b5e068f1406be8e50c87549b6ef8eca9a
  9533a3f8e69c31e97e1ad0333ec719205417300d8c4ab33f748e5ac66e84069c
  55d667ffcb732718b6
]]></artwork>
        </dd>
        <dt>e_0:</dt>
        <dd>
          <artwork><![CDATA[
0x0e26c3fcb8ef67417814098de5111ffcccc1d003d15b367bad07cef2291a93d3
  1db03e3f03376f3beae2bd877bcfc22a25dc51016eda1ab56ee3033bc4b4fec5
  962f02dffb3af5e38e
]]></artwork>
        </dd>
        <dt>e_1:</dt>
        <dd>
          <artwork><![CDATA[
0x069061b8047279aa5c2d25cdf676ddf34eddbc8ec2ec0f03614886fa828e1fc0
  66b26d35744c0c38271843aa4fb617b57fa9eb4bd256d17367914159fc18b10a
  1085cb626e5bedb145
]]></artwork>
        </dd>
        <dt>e_2:</dt>
        <dd>
          <artwork><![CDATA[
0x02b9bece645fbf9d8f97025a1545359f6fe3ffab3cd57094f862f7fb9ca01c88
  705c26675bcc723878e943da6b56ce25d063381fcd2a292e0e7501fe57274418
  4fb4ab4ca071a04281
]]></artwork>
        </dd>
        <dt>e_3:</dt>
        <dd>
          <artwork><![CDATA[
0x0080d267bf036c1e61d7fc73905e8c630b97aa05ef3266c82e7a111072c0d205
  6baa8137fba111c9650dfb18cb1f43363041e202e3192fced29d2b0501c88254
  3fb370a56bfdc2435b
]]></artwork>
        </dd>
        <dt>e_4:</dt>
        <dd>
          <artwork><![CDATA[
0x03c6b4c12f338f9401e6a493a405b33e64389338db8c5e592a8dd79eac7720dd
  83dd6b0c189eeda20809160cd57cdf3e2edc82db15f553c1f6c953ea27114cb6
  bd8a38e273f407dae0
]]></artwork>
        </dd>
        <dt>e_5:</dt>
        <dd>
          <artwork><![CDATA[
0x016e46224f28bfd8833f76ac29ee6e406a9da1bde55f5e82b3bd977897a9104f
  18b9ee41ea9af7d4183d895102950a12ce9975669db07924e1b432d9680f5ce7
  e5c67ed68f381eba45
]]></artwork>
        </dd>
        <dt>e_6:</dt>
        <dd>
          <artwork><![CDATA[
0x008ddce7a4a1b94be5df3ceea56bef0077dcdde86d579938a50933a47296d337
  b7629934128e2457e24142b0eeaa978fd8e70986d7dd51fccbbeb8a1933434fe
  c4f5bc538de2646e90
]]></artwork>
        </dd>
        <dt>e_7:</dt>
        <dd>
          <artwork><![CDATA[
0x060ef6eae55728e40bd4628265218b24b38cdd434968c14bfefb87f0dcbfc76c
  c473ae2dc0cac6e69dfdf90951175178dc75b9cc08320fcde187aa58ea047a2e
  e00b1968650eec2791
]]></artwork>
        </dd>
        <dt>e_8:</dt>
        <dd>
          <artwork><![CDATA[
0x0c3943636876fd4f9393414099a746f84b2633dfb7c36ba6512a0b48e66dcb2e
  409f1b9e150e36b0b4311165810a3c721525f0d43a021f090e6a27577b42c7a5
  7bed3327edb98ba8f8
]]></artwork>
        </dd>
        <dt>e_9:</dt>
        <dd>
          <artwork><![CDATA[
0x02d31eb8be0d923cac2a8eb6a07556c8951d849ec53c2848ee78c5eed40262eb
  21822527a8555b071f1cd080e049e5e7ebfe2541d5b42c1e414341694d6f16d2
  87e4a8d28359c2d2f9
]]></artwork>
        </dd>
        <dt>e_10:</dt>
        <dd>
          <artwork><![CDATA[
0x07f19673c5580d6a10d09a032397c5d425c3a99ff1dd0abe5bec40a0d47a6b8d
  aabb22edb6b06dd8691950b8f23faefcdd80c45aa3817a840018965941f4247f
  9f97233a84f58b262e
]]></artwork>
        </dd>
        <dt>e_11:</dt>
        <dd>
          <artwork><![CDATA[
0x0d3fe01f0c114915c3bdf8089377780076c1685302279fd9ab12d07477aac03b
  69291652e9f179baa0a99c38aa8851c1d25ffdb4ded2c8fe8b30338c14428607
  d6d822610d41f51372
]]></artwork>
        </dd>
        <dt>e_12:</dt>
        <dd>
          <artwork><![CDATA[
0x0662eefd5fab9509aed968866b68cff3bc5d48ecc8ac6867c212a2d82cee5a68
  9a3c9c67f1d611adac7268dc8b06471c0598f7016ca3d1c01649dda4b43531cf
  fc4eb41e691e27f2eb
]]></artwork>
        </dd>
        <dt>e_13:</dt>
        <dd>
          <artwork><![CDATA[
0x0aad8f4a8cfdca8de0985070304fe4f4d32f99b01d4ea50d9f7cd2abdc0aeea9
  9311a36ec6ed18208642cef9e09b96795b27c42a5a744a7b01a617a91d9fb762
  3d636640d61a6596ec
]]></artwork>
        </dd>
        <dt>e_14:</dt>
        <dd>
          <artwork><![CDATA[
0x0ffcf21d641fd9c6a641a749d80cab1bcad4b34ee97567d905ed9d5cfb74e9ae
  f19674e2eb6ce3dfb706aa814d4a228db4fcd707e571259435393a27cac68b59
  a1b690ae8cde7a94c3
]]></artwork>
        </dd>
        <dt>e_15:</dt>
        <dd>
          <artwork><![CDATA[
0x0cbe92a53151790cece4a86f91e9b31644a86fc4c954e5fa04e707beb69fc60a
  858fed8ebd53e4cfd51546d5c0732331071c358d721ee601bfd3847e0e904101
  c62822dd2e4c7f8e5c
]]></artwork>
        </dd>
        <dt>e_16:</dt>
        <dd>
          <artwork><![CDATA[
0x0202db83b1ff33016679b6cfc8931deea6df1485c894dcd113bacf564411519a
  42026b5fda4e16262674dcb3f089cd7d552f8089a1fec93e3db6bca43788cdb0
  6fc41baaa5c5098667
]]></artwork>
        </dd>
        <dt>e_17:</dt>
        <dd>
          <artwork><![CDATA[
0x070a617ed131b857f5b74b625c4ef70cc567f619defb5f2ab67534a1a8aa7297
  5fc4248ac8551ce02b68801703971a2cf1cb934c9c354cadd5cfc4575cde8dbd
  e6122bd54826a9b3e9
]]></artwork>
        </dd>
        <dt>e_18:</dt>
        <dd>
          <artwork><![CDATA[
0x070e1ebce457c141417f88423127b7a7321424f64119d5089d883cb953283ee4
  e1f2e01ffa7b903fe7a94af4bb1acb02ca6a36678e41506879069cee11c9dcf6
  a080b6a4a7c7f21dc9
]]></artwork>
        </dd>
        <dt>e_19:</dt>
        <dd>
          <artwork><![CDATA[
0x058a06be5a36c6148d8a1287ee7f0e725453fa1bb05cf77239f235b417127e37
  0cfa4f88e61a23ea16df3c45d29c203d04d09782b39e9b4037c0c4ac8e8653e7
  c533ad752a640b233e
]]></artwork>
        </dd>
        <dt>e_20:</dt>
        <dd>
          <artwork><![CDATA[
0x0dfdfaaeb9349cf18d21b92ad68f8a7ecc509c35fcd4b8abeb93be7a204ac871
  f2195180206a2c340fccb69dbc30b9410ed0b122308a8fc75141f673ae5ec82b
  6a45fc2d664409c6b6
]]></artwork>
        </dd>
        <dt>e_21:</dt>
        <dd>
          <artwork><![CDATA[
0x0d06c8adfdd81275da2a0ce375b8df9199f3d359e8cf50064a3dc10a59241712
  4a3b705b05a7ffe78e20f935a08868ecf3fc5aba0ace7ce4497bb59085ca277c
  16b3d53dd7dae5c857
]]></artwork>
        </dd>
        <dt>e_22:</dt>
        <dd>
          <artwork><![CDATA[
0x0708effd28c4ae21b6969cb9bdd0c27f8a3e341798b6f6d4baf27be259b4a476
  88b50cb68a69a917a4a1faf56cec93f69ac416512c32e9d5e69bd8836b6c2ba9
  c6889d507ad571dbc4
]]></artwork>
        </dd>
        <dt>e_23:</dt>
        <dd>
          <artwork><![CDATA[
0x09da7c7aa48ce571f8ece74b98431b14ae6fb4a53ae979cd6b2e82320e8d25a0
  ece1ca1563aa5aa6926e7d608358af8399534f6b00788e95e37ef1b549f43a58
  ad250a71f0b2fdb2bf
]]></artwork>
        </dd>
        <dt>e_24:</dt>
        <dd>
          <artwork><![CDATA[
0x080fa69eaed5d5e9044c43db6c168066772604f3a94c4e7db2f92252ebed3011
  df4c9bcf4ffccbc7e514566fc6462ca39d4da73705a404bce6b7e2751037e5cd
  279df81de00e653134
]]></artwork>
        </dd>
        <dt>e_25:</dt>
        <dd>
          <artwork><![CDATA[
0x0a3a604cd354f6a763481558b087c55b1e6df4aca073f89ee4c2f7eea48091ef
  2b75369a7819f39472a1d518474fb11998a3d10e4cc3aaba54b5531e8dd777b9
  b5503283f15f2cbc53
]]></artwork>
        </dd>
        <dt>e_26:</dt>
        <dd>
          <artwork><![CDATA[
0x0ee80fd1b6256c379e78d3a966f78a1b75ea21a33ffd4a2b758a6a0fe9c95fb5
  97700b44eda1f05ff3dc6705178624c83eff49c2e1a109e7af3ef6eaf2138d81
  b9934c6c6dac264587
]]></artwork>
        </dd>
        <dt>e_27:</dt>
        <dd>
          <artwork><![CDATA[
0x0baa734a9d454bc8507eaf40d71e100339988eac975139f667cf426e4a856d11
  90a9f6a2ea07693108526be00ca0d94a0fb7d59b63497d81f97786159ee25bb0
  e8384e61403094adca
]]></artwork>
        </dd>
        <dt>e_28:</dt>
        <dd>
          <artwork><![CDATA[
0x050ab6cabefbfeafa89331de62bb2c7441607dccabe12fa3302bf74e5cea09b6
  e2a44e8a32ba04b8393cae776984e015b6aecd3151695907b83feb8fb1683b52
  bdac298802a1820bb5
]]></artwork>
        </dd>
        <dt>e_29:</dt>
        <dd>
          <artwork><![CDATA[
0x07da541017034b7f7150a4cc42eb8e32c8e4a91641cb5d71cc6ba5297d85efa2
  1400a44a121bb0b8a3ad1a780722a46ae4a0d7101f78986f29aab9688af8302c
  0a7cc1e16b95ddb4da
]]></artwork>
        </dd>
        <dt>e_30:</dt>
        <dd>
          <artwork><![CDATA[
0x013985a6999ae046842851e80d88dae0c26a5b1cab6a70f97d36d41693efcf80
  e5ecfe8fceb61b22afc07140de05f5342dd8c04050afd6649f10e0bf2180f6ff
  4e14562558e21cdd9e
]]></artwork>
        </dd>
        <dt>e_31:</dt>
        <dd>
          <artwork><![CDATA[
0x00dd7f830773ae0a3569af18f7fa31794a413c91b576c48a775bf25b6a078876
  c8bbb247c5169d8871812d70418f43cf56bef6ce6adfc90558610ba732e34471
  07c4c0c56a018f6d63
]]></artwork>
        </dd>
        <dt>e_32:</dt>
        <dd>
          <artwork><![CDATA[
0x06f5b22dfef5b5047297208ef02b482fadf2f7a05fde3ce1a740991176a359ff
  bdb2a781ef01d5b9d5fa38d7ce3bd946bb3ca36d131d3b01e658ce48cb0c16b4
  4acb14896a9e0794a8
]]></artwork>
        </dd>
        <dt>e_33:</dt>
        <dd>
          <artwork><![CDATA[
0x09779469c05944d969e2db181a1caf60dffe3fb23afc7a95d03641b8aeadf0aa
  0c6db009ee6e40c9cee370db20a40be7d2b4e8d3bb5ded36c08c6a236823d175
  269a4209446e8ba161
]]></artwork>
        </dd>
        <dt>e_34:</dt>
        <dd>
          <artwork><![CDATA[
0x094f2f80f6c6c25fb2dbc6b49778ba5768ae8d6e3e355a7782d0360e40fe74fc
  488d1cdf61efd091ecf453900d677009a016a0978ae88a214319432047ff820c
  29aa07cd87f6f118de
]]></artwork>
        </dd>
        <dt>e_35:</dt>
        <dd>
          <artwork><![CDATA[
0x1076373833daf844b5a78fb8d6a87d5bce51be2aa85a8fb9d05aba01e08e527c
  0d336a498fb22a8eabcf73444a5dc80b8e8196d1b6843b1e905ba7e158ddddc0
  80291f2fbb432684af
]]></artwork>
        </dd>
        <dt>e_36:</dt>
        <dd>
          <artwork><![CDATA[
0x06760a326a3b3425d0e8ee8533684d4149d27c221becb781e24786cf9b55cfc2
  1511eb1f3b237a9a8f35c90feb5b059b0540a34e6517412a79b7bb9cd243b070
  846a549d7ab484aa92
]]></artwork>
        </dd>
        <dt>e_37:</dt>
        <dd>
          <artwork><![CDATA[
0x03897dadb1a5b4c58d7c6f0ff099885371d896a6d7546dff0b0ab940d61e77f0
  4922532ef46bf90c018a5e7f148330c17e02318b387772ba8a65626c6275ff4d
  f09f5bf5d8d4dec847
]]></artwork>
        </dd>
        <dt>e_38:</dt>
        <dd>
          <artwork><![CDATA[
0x111a9376b2770c3d32b28b5452058eca6ec30e1b97ecd98d641165b007e96037
  5c1c0cf586dc47829d7f4da0f5494bf13fcf10da1d7630cf3b1e96771bd3e125
  abed5d7a4b07ff2b2f
]]></artwork>
        </dd>
        <dt>e_39:</dt>
        <dd>
          <artwork><![CDATA[
0x00fc4faae2597cd2fc5206a40cb0a70646fb4237727fe75e51e6f6a591a5e2ad
  c28b28b6c47e0fcc0953f9aab4d3daf926249f9930550f55554d6d380c3b4c87
  5a6aa4e1ef525be43e
]]></artwork>
        </dd>
        <dt>e_40:</dt>
        <dd>
          <artwork><![CDATA[
0x0072af98ab6e2c8ba452e0acca6dbc50afe97b037ba3586cf2f3a8f4b70f3934
  62a72d7efcf87f8f94e9941e9998f4f66e989df87822ea5ce094055105827af2
  d5d86ef324cc139811
]]></artwork>
        </dd>
        <dt>e_41:</dt>
        <dd>
          <artwork><![CDATA[
0x10158908b23e827e39978dacbf0d1f489c1f89de0bdc8b6614cf5b1c78c03d01
  fa57d1141e6f21a24d80ff6c596e891c0a5f99a6305820c3ba5192fd18dd9b42
  2976adccdaacc823ba
]]></artwork>
        </dd>
        <dt>e_42:</dt>
        <dd>
          <artwork><![CDATA[
0x0e651105c3a12b4b91b5346cad5de5ff5126c1c2b94c1246882798d44eb0ca93
  655491c753f3492e5eb1097b7a6c88f3e5c064551fa6660460a6275caf7a672c
  0886574c254e8ec0b1
]]></artwork>
        </dd>
        <dt>e_43:</dt>
        <dd>
          <artwork><![CDATA[
0x0040de9ec4386438b63e6cbea88022e58a9163bf374460b3c6dae8887f56882d
  b2fa40e1a0acc723d8e6ada12bc0ca838c932d74e199d6b006b92dd204eaf2e1
  186b6e91434ed6a24e
]]></artwork>
        </dd>
        <dt>e_44:</dt>
        <dd>
          <artwork><![CDATA[
0x053ec95b4b13256c02702930617ab4b3c2d3069bb4d08414c7de5b33578c4ddd
  1bd4dcb3cf18a3ca40206edc917ab98928bdb62df970f3537910dfc2423dcebc
  561ed93b3ed4e0d346
]]></artwork>
        </dd>
        <dt>e_45:</dt>
        <dd>
          <artwork><![CDATA[
0x0167007aacbba10275709297b940b601b1ed49d629e35faee61cf188a6da8ec4
  e39ae91dc326cd54617a5fa3330637c9ab0ed46f32e472eef36f30228bb2c3ad
  3cc03d5d49a8794a50
]]></artwork>
        </dd>
        <dt>e_46:</dt>
        <dd>
          <artwork><![CDATA[
0x0c624cb15846e9faedc2f8cddd3dd894eaee57ed85a76167559fd68e818184df
  146aa913a44ffb7e9c520ab84c6a2ad0ac525cb1bbb00afc02c79603375060b2
  ddeac8eec0e4ce49a7
]]></artwork>
        </dd>
        <dt>e_47:</dt>
        <dd>
          <artwork><![CDATA[
0x07a369e7095b629da43956d18650a88bb0342dabc1e04265ae4133cdd537c3d9
  cdc0b99518aa6e8b6942c4a958d3c7df4a18211c91bc4e9455f28a49c7e0ee07
  dc2f97fd5ce4edf7a6
]]></artwork>
        </dd>
      </dl>
    </section>
    <section anchor="point-serialization-test-vectors">
      <name>Test Vectors for Serialization</name>
      <t>This appendix gives test vectors for the serialization procedures defined in <xref target="point-serialization"/>. The point vectors are computed for the base points BP and BP' given in <xref target="secure_params"/>, in the compressed form (C_bit = 1) and in the uncompressed form (C_bit = 0). The scalar vectors are given for all three curves, since <xref target="scalar-serialization"/> applies to BN462 as well.</t>
      <t>In each uncompressed string, the first half is the corresponding compressed string with the three metadata bits cleared, and the second half is the y-coordinate laid out by the rule of step 3 of <xref target="point-serialization-procedure"/>. Hex strings are broken at a whole number of bytes.</t>
      <section anchor="bls12-381-point-test-vectors">
        <name>BLS12-381 Points</name>
        <t>G_1 (BP), compressed (48 bytes):</t>
        <artwork><![CDATA[
97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac58
6c55e83ff97a1aeffb3af00adb22c6bb
]]></artwork>
        <t>G_1 (BP), uncompressed (96 bytes):</t>
        <artwork><![CDATA[
17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac58
6c55e83ff97a1aeffb3af00adb22c6bb08b3f481e3aaa0f1a09e30ed741d8ae4
fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1
]]></artwork>
        <t>G'_2 (BP'), compressed (96 bytes):</t>
        <artwork><![CDATA[
93e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049
334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051
c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8
]]></artwork>
        <t>G'_2 (BP'), uncompressed (192 bytes):</t>
        <artwork><![CDATA[
13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049
334cf11213945d57e5ac7d055d042b7e024aa2b2f08f0a91260805272dc51051
c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8
0606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab
3f370d275cec1da1aaa9075ff05f79be0ce5d527727d6e118cc9cdc6da2e351a
adfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801
]]></artwork>
        <t>Identity on E: 48 zero bytes with the leading byte set to 0xc0 (C_bit = 1, I_bit = 1) when compressed, and 96 zero bytes with the leading byte set to 0x40 (I_bit = 1) when uncompressed.</t>
        <t>Identity on E': 96 zero bytes with the leading byte set to 0xc0 when compressed, and 192 zero bytes with the leading byte set to 0x40 when uncompressed.</t>
        <ul empty="true">
          <li>
            <t>Note: the point values above are the second entry of each of the valid test vector files distributed with <xref target="zkcrypto-bls12-381"/>, whose first entry is the identity; they have been compared byte for byte. The uncompressed values are derived from the same coordinates by the procedure of <xref target="point-serialization-procedure"/>, and have been checked to deserialize back to those coordinates. The same strings have also been checked against <xref target="blst"/> and <xref target="gnark-crypto"/>: each deserializes to the coordinates given in <xref target="parameter-BLS12_381"/> and serializes back to the same bytes. The BLS12-381 scalars of <xref target="scalar-test-vectors"/> were checked against the same two implementations.</t>
          </li>
        </ul>
      </section>
      <section anchor="bls48-581-point-test-vectors">
        <name>BLS48-581 Points</name>
        <t>G_1 (BP), compressed (73 bytes):</t>
        <artwork><![CDATA[
a2af59b7ac340f2baf2b73df1e93f860de3f257e0e86868cf61abdbaedffb9f7
544550546a9df6f9645847665d859236ebdbc57db368b11786cb74da5d3a1e6d
8c3bce8732315af640
]]></artwork>
        <t>G_1 (BP), uncompressed (146 bytes):</t>
        <artwork><![CDATA[
02af59b7ac340f2baf2b73df1e93f860de3f257e0e86868cf61abdbaedffb9f7
544550546a9df6f9645847665d859236ebdbc57db368b11786cb74da5d3a1e6d
8c3bce8732315af6400cefda44f6531f91f86b3a2d1fb398a488a553c9efeb8a
52e991279dd41b720ef7bb7beffb98aee53e80f678584c3ef22f487f77c2876d
1b2e35f37aef7b926b576dbb5de3e2587a70
]]></artwork>
        <t>G'_2 (BP'), compressed (584 bytes):</t>
        <artwork><![CDATA[
8827d5c22fb2bdec5282624c4f4aaa2b1e5d7a9defaf47b5211cf741719728a7
f9f8cfca93f29cff364a7190b7e2b0d4585479bd6aebf9fc44e56af2fc9e97c3
f84e19da00fbc6ae340b9b7951c6061ee3f0197a498908aee660dea41b39d138
52b6db908ba2c0b7a449cef11f293b13ced0fd0caa5efcf3432aad1cbe4324c2
2d63334b5b0e205c3354e41607e60750e0570c96c7797eb0738603f1311e4ecd
a088f7b8f35dcef0977a3d1a58677bb037418181df63835d28997eb57b40b9c0
b15dd7595a9f177612f097fc7960910fce3370f2004d914a3c093a038b91c600
b35913a3c598e4caa9dd63007c675d0b1642b5675ff0e7c5805386699981f9e4
8199d5ac10b2ef492ae589274fad55fc1889aa80c65b5f746c9d4cbb739c3a1c
53f8cce50be2218c25ceb6185c78d8012954d4bfe8f5985ac62f3e5821b7b92a
393f8be0cc218a95f63e1c776e6ec143b1b279b9468c31c5257c200ca52310b8
cb4e80bc3f09a7033cbb7feafe01fccc70198f1334e1b2ea1853ad83bc73a8a6
ca9ae237ca7a6d6957ccbab5ab6860161c1dbd19242ffae766f0d2a6d55f028c
bdfbb879d5fea8ef4cded6b3f0b46488156ca55a3e6a07c4973ece2258512069
b0e86abc07e8b22bb6d980e1623e9526f6da12307f4e1c3943a00abfedf16214
a76affa62504f0c3c7630d979630ffd75556a01afa143f1669b36676b47c5705
d615d9a7871e4a38237fa45a2775debabbefc70344dbccb7de64db3a2ef156c4
6ff79baad1a8c42281a63ca0612f400503004d80491f510317b79766322154de
c34fd0b4ace8bfab
]]></artwork>
        <t>G'_2 (BP'), uncompressed (1168 bytes):</t>
        <artwork><![CDATA[
0827d5c22fb2bdec5282624c4f4aaa2b1e5d7a9defaf47b5211cf741719728a7
f9f8cfca93f29cff364a7190b7e2b0d4585479bd6aebf9fc44e56af2fc9e97c3
f84e19da00fbc6ae340b9b7951c6061ee3f0197a498908aee660dea41b39d138
52b6db908ba2c0b7a449cef11f293b13ced0fd0caa5efcf3432aad1cbe4324c2
2d63334b5b0e205c3354e41607e60750e0570c96c7797eb0738603f1311e4ecd
a088f7b8f35dcef0977a3d1a58677bb037418181df63835d28997eb57b40b9c0
b15dd7595a9f177612f097fc7960910fce3370f2004d914a3c093a038b91c600
b35913a3c598e4caa9dd63007c675d0b1642b5675ff0e7c5805386699981f9e4
8199d5ac10b2ef492ae589274fad55fc1889aa80c65b5f746c9d4cbb739c3a1c
53f8cce50be2218c25ceb6185c78d8012954d4bfe8f5985ac62f3e5821b7b92a
393f8be0cc218a95f63e1c776e6ec143b1b279b9468c31c5257c200ca52310b8
cb4e80bc3f09a7033cbb7feafe01fccc70198f1334e1b2ea1853ad83bc73a8a6
ca9ae237ca7a6d6957ccbab5ab6860161c1dbd19242ffae766f0d2a6d55f028c
bdfbb879d5fea8ef4cded6b3f0b46488156ca55a3e6a07c4973ece2258512069
b0e86abc07e8b22bb6d980e1623e9526f6da12307f4e1c3943a00abfedf16214
a76affa62504f0c3c7630d979630ffd75556a01afa143f1669b36676b47c5705
d615d9a7871e4a38237fa45a2775debabbefc70344dbccb7de64db3a2ef156c4
6ff79baad1a8c42281a63ca0612f400503004d80491f510317b79766322154de
c34fd0b4ace8bfab035e2524ff89029d393a5c07e84f981b5e068f1406be8e50
c87549b6ef8eca9a9533a3f8e69c31e97e1ad0333ec719205417300d8c4ab33f
748e5ac66e84069c55d667ffcb732718b60896767811be65ea25c2d05dfdd17a
f8a006f364fc0841b064155f14e4c819a6df98f425ae3a2864f22c1fab8c74b2
618b5bb40fa639f53dccc9e884017d9aa62b3d41faeafeb2398607d0d0374573
6b7a513d339d5ad537b90421ad66eb16722b589d82e2055ab7504fa83420e8c2
70841f6824f47c180d139e3aafc198caa72b679da59ed8226cf3a594eedc58cf
90bee40d209d5a223a9c46916503fa5a88325a2554dc541b43dd93b5a959805f
1129857ed85c77fa238cdce8a1e2ca4e512b64f59f430135945d137b08857fdd
dfcf7a43f47831f982e501370aec25a4621edc0688223fbbd478762b1c2cded3
360dcee23dd8b0e710e122d2742c89b224333fa40dced2817742770ba10d67bd
a503ee5e578fb3d8b8a1e5337316213da92841589d0b36a201dd008523e421ef
b70367669ef2c2fc5030216d5b119d3a480d370514475f7d5c99d0e904115155
36ca3295e5e2f0c1d35d51a652269cbc7c46fc3b8fde68332a526a2a84740284
dc75979e0ff144da6531815fcadc2b75a422ba325e6fba01d72964732fcbf3af
b096b243b1f192c5c3d1892ab24e1dd212fa097d760e2e588b423525ffc7b111
471db936cd566500eb53356c375b5dfa497216452f3024b918b4238059a577e6
f3b39ebfc435faab0906235afa27748d90f7336d8ae5163c1599abf77eea6d65
9045012ab12c0ff323edd3fe4d2d7971
]]></artwork>
        <t>Identity on E: 73 zero bytes with the leading byte set to 0xc0 (C_bit = 1, I_bit = 1) when compressed, and 146 zero bytes with the leading byte set to 0x40 (I_bit = 1) when uncompressed.</t>
        <t>Identity on E': 584 zero bytes with the leading byte set to 0xc0 when compressed, and 1168 zero bytes with the leading byte set to 0x40 when uncompressed.</t>
        <ul empty="true">
          <li>
            <t>Note: the point values above are newly computed for this document by applying the sign_GF_p^8 function of <xref target="I-D.ietf-cose-bls-key-representations"/> to the BP' coordinates in <xref target="secure_params"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="scalar-test-vectors">
        <name>Scalars</name>
        <t>The values below are the boundary cases of <xref target="scalar-serialization"/>: the zero scalar, the smallest nonzero scalar, the largest scalar the procedure accepts, and the smallest value it rejects. The value kappa = 1 distinguishes the byte order, and kappa = r exercises the rejection of values that are not less than r.</t>
        <t>BLS12-381 (n_s = 32):</t>
        <artwork><![CDATA[
kappa = 0
0000000000000000000000000000000000000000000000000000000000000000
kappa = 1
0000000000000000000000000000000000000000000000000000000000000001
kappa = r - 1
73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000
kappa = r  (deserialization returns INVALID)
73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
]]></artwork>
        <t>BN462 (n_s = 58):</t>
        <artwork><![CDATA[
kappa = 0
0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000
kappa = 1
0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000001
kappa = r - 1
240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908e
e1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800c
kappa = r  (deserialization returns INVALID)
240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908e
e1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d
]]></artwork>
        <t>BLS48-581 (n_s = 65):</t>
        <artwork><![CDATA[
kappa = 0
000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
kappa = 1
000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000001
kappa = r - 1
2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e7
41969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c00
kappa = r  (deserialization returns INVALID)
2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e7
41969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01
]]></artwork>
      </section>
    </section>
    <section anchor="bn462-serialization-notes">
      <name>Point Serialization for BN462</name>
      <t>This appendix is informative. It records why the metadata placement of <xref target="point-serialization"/> does not fit BN462, which encodings existing BN462 implementations use, and which variants were considered and set aside. It defines no format, standardizes no algorithm, and places no requirement on implementations. Its purpose is to spare implementers of BN462 the effort of rediscovering the constraint described below, and to record the state of practice at the time of writing.</t>
      <t>The observations below were obtained by reading the source code of the cited libraries in August 2026. They describe what those libraries emit and accept; no survey of deployed protocols or products was carried out.</t>
      <section anchor="bn462-constraint">
        <name>The Constraint</name>
        <t>The format of <xref target="point-serialization"/> carries three metadata bits (C_bit, I_bit, S_bit) in the three most significant bits of the first byte of a serialized coordinate. This requires the canonical representation of an element of GF(p) to leave at least three unused bits in its leading byte.</t>
        <t>BN462 has a 462-bit characteristic p, so n = ceil(462 / 8) = 58 bytes, i.e. 464 bits, and only 464 - 462 = 2 bits are unused: one bit short, as stated in <xref target="bn462-applicability"/>.</t>
        <t>The same criterion appears in implementations. <xref target="MIRACL"/> selects between two point encodings at compile time using the condition (MBITS - 1) mod 8 &lt;= 4, where MBITS is the bit length of p; this condition holds exactly when the leading byte of a coordinate has three or more unused bits. When it holds, the library packs a compression flag (0x80) and a sign flag (0x20) into that byte, reserving 0x40; when it does not, it falls back to the <xref target="SEC1"/> encoding described in <xref target="bn462-leading-byte"/>. For BN462, (462 - 1) mod 8 = 5, so the fallback is used. The diagnosis above is therefore not particular to this document: an implementation supporting BN462 reaches the same conclusion by the same test. (The bit-packing path is additionally gated on a build-time option that the shipped configuration does not enable, so the default build uses the fallback encoding for every curve it supports.)</t>
      </section>
      <section anchor="bn462-existing">
        <name>Encodings Used by Existing Implementations</name>
        <t>Few libraries implement BN462 at all. Among those surveyed for this document, it is absent from <xref target="RELIC"/>, <xref target="blst"/>, <xref target="gnark-crypto"/>, <xref target="noble-curves"/> and <xref target="arkworks"/>, each of which does implement BLS12-381. The following do provide it:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Implementation</th>
              <th align="left">G_1 size</th>
              <th align="left">Metadata placement</th>
              <th align="left">Byte order</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <xref target="MIRACL"/></td>
              <td align="left">117 / 59 bytes</td>
              <td align="left">
                <xref target="SEC1"/> type byte</td>
              <td align="left">big-endian</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="pfcurve-js"/></td>
              <td align="left">117 / 59 bytes</td>
              <td align="left">
                <xref target="SEC1"/> type byte</td>
              <td align="left">big-endian</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="zig-pairings"/></td>
              <td align="left">117 / 59 bytes</td>
              <td align="left">dedicated flag byte</td>
              <td align="left">big-endian</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="mcl"/></td>
              <td align="left">116 / 58 bytes</td>
              <td align="left">none / packed into the coordinate</td>
              <td align="left">little-endian</td>
            </tr>
          </tbody>
        </table>
        <t>Sizes are given as uncompressed / compressed, for G_1. For <xref target="MIRACL"/> and <xref target="zig-pairings"/>, the corresponding G'_2 sizes are 233 bytes uncompressed and 117 bytes compressed. The <xref target="SEC1"/> type byte is 0x04 for an uncompressed point and 0x02 or 0x03 for a compressed one; the dedicated flag byte is described in <xref target="bn462-leading-byte"/>. The byte order given for <xref target="mcl"/> is its default.</t>
        <t>Both leading-byte forms leave the coordinate encoding of <xref target="point-serialization-procedure"/> untouched: <xref target="MIRACL"/> writes the coefficients of a GF(p^2) coordinate in decreasing index order, as that section does, and so does <xref target="zig-pairings"/>. The two differ only in what the leading byte means. Note that <xref target="SEC1"/> itself defines point encoding over GF(p) and GF(2^m) only, so its type byte applied to E'(GF(p^2)) is an extension of it by the coefficient rule of <xref target="point-serialization-procedure"/> rather than <xref target="SEC1"/> as written.</t>
        <t>In <xref target="mcl"/>, BN462 is marked deprecated. Its affine serialization writes x followed by y with no metadata at all, its compressed form stores the parity of y in the most significant bit of the most significant byte of the coordinate, and the identity element is represented by an all-zero string. <xref target="MIRACL"/> likewise has no distinct representation for the identity element: its coordinates are zero and the ordinary type byte is emitted, so the identity element is recognized by inspecting the coordinate values rather than by a metadata bit. This differs from the approach of <xref target="point-serialization"/>, which represents the identity element explicitly through I_bit and leaves the decision of whether to accept it to the calling protocol (<xref target="identity-point-handling"/>).</t>
        <t>Two observations follow. First, the implementations that support BN462 and do not mark it deprecated have converged on a dedicated leading byte rather than on packing metadata into the coordinate; <xref target="mcl"/>, which does mark it deprecated, is the exception and packs the sign of y into the coordinate. Second, none of the implementations examined carries the pair C_bit and I_bit in the two spare bits of the coordinate, which is the arrangement <xref target="bn462-two-bit"/> considers.</t>
      </section>
      <section anchor="bn462-two-bit">
        <name>Alternative Considered: Two Metadata Bits</name>
        <t>S_bit is meaningful only for compressed points (see step 1 of <xref target="point-serialization-procedure"/>). An encoding restricted to uncompressed points therefore needs only C_bit and I_bit, which fit in the two spare bits that BN462 does have. The appeal of such an encoding is that BN462 would remain within the same bit-packing family as the other two curves: a decoder written for BLS12-381 could be extended to BN462 by masking two metadata bits instead of three, rather than by acquiring a second, leading-byte parser used only for BN462.</t>
        <t>It carries a pitfall. Step 2 of <xref target="point-deserialization-procedure"/> determines the curve jointly from C_bit and the length of the string. For BN462 (n = 58, and E' represented over GF(p^2)), an uncompressed point on E and a compressed point on E' both occupy 116 bytes. Under a two-bit variant, compressed forms cannot be represented and C_bit is always 0, so the two cases never both arise; but a decoder that reuses step 2 unmodified would accept a 116-byte string with C_bit set and interpret it as a compressed point on E'. An implementation of such a variant would have to reject a nonzero C_bit before the length-based determination in step 2. An encoding with a dedicated leading byte (<xref target="bn462-leading-byte"/>) does not have this hazard, because the type byte separates the two cases structurally.</t>
        <t>The variant would also forgo point compression, which is the form most protocols transmit. No implementation of it was found.</t>
      </section>
      <section anchor="bn462-leading-byte">
        <name>Alternative Considered: A Dedicated Leading Byte</name>
        <t>Moving the metadata out of the coordinate and into a byte of its own removes the constraint of <xref target="bn462-constraint"/> entirely and keeps point compression available, at a cost of one byte. Two mutually incompatible variants are in use:</t>
        <ul spacing="normal">
          <li>
            <t>The <xref target="SEC1"/> type byte: 0x04 for an uncompressed point, 0x02 or 0x03 for a compressed point with the value itself carrying the sign of y, followed by the coordinates in big-endian order. This is what <xref target="MIRACL"/> and <xref target="pfcurve-js"/> emit.</t>
          </li>
          <li>
            <t>A flag byte carrying the same three metadata bits as <xref target="point-serialization-procedure"/> in the same positions (C_bit at 0x80, I_bit at 0x40, S_bit at 0x20, with the remaining five bits zero and checked on input), followed by the coordinates in big-endian order. This is what <xref target="zig-pairings"/> emits. These are the same bit positions that <xref target="MIRACL"/> uses in its bit-packing path, so this variant amounts to relocating the bit assignment of <xref target="point-serialization"/> into a leading byte, leaving the rest of the format unchanged.</t>
          </li>
        </ul>
        <t>Both variants yield the same encoded lengths (117 and 59 bytes for G_1, 233 and 117 bytes for G'_2), so length alone does not distinguish them. The leading byte does: an uncompressed point other than the identity element begins with 0x04 in the first variant and 0x00 in the second. A decoder that validates the leading byte rather than skipping over it will therefore reject a string in the other format instead of misparsing it.</t>
      </section>
      <section anchor="bn462-not-defined">
        <name>Why This Document Does Not Define a Format</name>
        <t><xref target="bn462-applicability"/> gives the reasons this document does not specify a BN462 point format. Two of them bear on what is recorded above. No specification examined defines or requires a BN462 point encoding, so the encodings listed here are library conventions rather than a format that a consumer of this document needs; and choosing among them would be encoding design rather than the recording of established practice.</t>
        <t>Should BN462 point encodings converge, or should a protocol specification come to require one, a separate specification can define one. Of the encodings recorded above, the <xref target="SEC1"/> type byte is the most widely implemented among the libraries examined, and is the form an implementer is most likely to encounter when interoperating with existing BN462 code.</t>
      </section>
    </section>
    <section anchor="adoption_status_100bit_security">
      <name>Adoption Status of Pairing-Friendly Curves with the 100-bit Security Level</name>
      <t>BN curves including BN254 that were estimated as the 128-bit security level before exTNFS ensure no more than the 100-bit security level by the effect of exTNFS. The following table summarizes the adoption status of the parameters that <xref target="secure_params"/> does not select, namely those whose security level is more than 5 bits below the 128-bit level. Please refer to <xref target="impl"/> for the naming conventions for each curve.</t>
      <table>
        <thead>
          <tr>
            <th align="center">Category</th>
            <th align="center">Name</th>
            <th align="center">Supported 100-bit Curves</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="center">Standard</td>
            <td align="center">ISO/IEC</td>
            <td align="center">BN256I</td>
          </tr>
          <tr>
            <td align="center">Standard</td>
            <td align="center">TCG</td>
            <td align="center">BN256I</td>
          </tr>
          <tr>
            <td align="center">Standard</td>
            <td align="center">FIDO/W3C</td>
            <td align="center">BN256I</td>
          </tr>
          <tr>
            <td align="center">Standard</td>
            <td align="center">FIDO/W3C</td>
            <td align="center">BN256D</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">mcl</td>
            <td align="center">BN254N</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">mcl</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">TEPLA</td>
            <td align="center">BN254B</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">TEPLA</td>
            <td align="center">BN254N</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">RELIC</td>
            <td align="center">BN254N</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">RELIC</td>
            <td align="center">BN256R</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">AMCL</td>
            <td align="center">BN254N</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">AMCL</td>
            <td align="center">BN254CX</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">AMCL</td>
            <td align="center">BN256I</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">Intel IPP</td>
            <td align="center">BN256I</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">MIRACL</td>
            <td align="center">BN254N</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">MIRACL</td>
            <td align="center">BN254CX</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">MIRACL</td>
            <td align="center">BN256I</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">Adjoint</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">Adjoint</td>
            <td align="center">BN254B</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">Adjoint</td>
            <td align="center">BN254N</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">Adjoint</td>
            <td align="center">BN254S1</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">Adjoint</td>
            <td align="center">BN254S2</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">libsnark</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">gnark-crypto</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">arkworks</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">noble-curves</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">constantine</td>
            <td align="center">BN254N</td>
          </tr>
          <tr>
            <td align="center">Library</td>
            <td align="center">constantine</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Application</td>
            <td align="center">Zcash</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Application</td>
            <td align="center">Ethereum</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Application</td>
            <td align="center">Algorand</td>
            <td align="center">BN_SNARK1</td>
          </tr>
          <tr>
            <td align="center">Application</td>
            <td align="center">DFINITY</td>
            <td align="center">BN254N</td>
          </tr>
          <tr>
            <td align="center">Application</td>
            <td align="center">DFINITY</td>
            <td align="center">BN_SNARK1</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-review-scope">
      <name>Scope of the Security Estimate Review</name>
      <t><xref target="security-considerations"/> states that the security estimates this document cites were reviewed against subsequent work. This appendix records what that review covered and what it did not.</t>
      <t>The review covered work published between January 2020 and August 2026. Peer-reviewed publications were searched through Crossref, the IACR Cryptology ePrint Archive was searched for preprints, and arXiv was used as a cross-check for work appearing in neither. A result was assessed if it bears on the cost of computing discrete logarithms in the fields GF(p^12) or GF(p^48), or in the elliptic curve groups of the curves recommended here, or on the special and tower variants of the number field sieve that apply to them.</t>
      <t>The estimates given in <xref target="security_pfc"/> and <xref target="secure_params"/> rest on peer-reviewed results. Preprints were used to find work that had not yet appeared in a peer-reviewed venue; <xref target="APT26"/>, the one result of that kind bearing directly on one of the fields these curves use, has since been accepted to CRYPTO 2026.</t>
      <t>The review is bounded by its end date: it describes what had been published by August 2026, and says nothing about what has been published since.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y9e3fcRpIn+j8/BW73uUekp4oGUAAKJR/PWYmi3Bw9W2RP
d4/H1sEjQaJVry5UiaRl389+fxGRmUigUJTc49mdmbO9O1axCsiMjIyMd0SO
x+Ojbb2dq8fe795m9aZeXo+fb2q1LOf33tlu81E1vzsqV8UyW+CRcpNV23G9
2Vbjotpcj9f6jUq/MS74jXEQHRXZVl2vNvePvXpZrY7q9eaxt93smm3o+zM/
PMo2KnvsXby7en50u9p8uN6sduvH3tnzd98dfVD3+KrEr8ut2izVdvyM5j1q
dvmibpp6tdzer5V++ajZZsvyfTZfLfHVvWqO1vVj7/vtqhh5zWqz3aiqwaf7
BX344ego221vVpvHR543xv95gK557P311LvMPqhFzV/JWv+6W9Tut5sVIUmV
9Xa14S9Wm+vH3nev3nhnb16/Pj+7ArjFKf+iFlk9f+w1/PL4HgP9r+vFalys
lktVbE//tu7OfnnqvciWy5Uz+WWGWXbO15+d7AM9+uA07069P2c3+b0zzbs6
K2n69nue5ywD1q9r5b1Sc+DV+9Oy/qg2Tb29d2fcNLf/q2hOCf8VtutUlbuj
o/F47GV5s91kxfboyFBUnjWq9IrN/Xq7ut5k65v7kZd52M+qVvPSW1UeJqrX
27rwmIJ6j95kjbdRhQIUpZdtt2q5BRF45U5525VXbxuvmqu7Op8rD7TgrWny
usjmXrVbFvRoNgfsp54Gp/FAfF6zVkWNZxbZuvFKVdVLDL5r8HsPmIYH3d6o
e6/Ill6OSdbreY2nMTmQjcXuiq3XKOAI4zmgY4T1ZgVSXM0brLa48bCQuiTw
t/caKWrJLwDIES1tU+e7rRr6DTA0K2+1PPWebL2zd399e/XGC/0gGXkv6gX/
/DTb5Lu5aoodTbte0RAAWFVVXeB8br3lbpGrjSdIb2oA7GVzHNJ6e7NgisCU
d1evn1962FBasVfWTbFRW+XNV9eZPIehgegFaApbCKzV+JVHxBnSKKDj2dCu
9vmDQajBBSDG6Kvx60zdbOpri29sT1ZVIGJAlN8zJMBNVnw4Bd1j1A02ZzfP
NkRFg2N4t4AVP4ZxNM7rrVfcZEQUalM3tK+3mDsrV2s9foblbQne7t7N63yD
RRNA+P80LVCEMejJIEx54EZhPuzmN97N6paWPwI9YuOa3QbvLVfeYoXFbG+w
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
AOjFFwHxNWBc8iosgxT95uVllI5BPN/oDeuHJtl9KxbxHHrWDdGd5nVsFrwT
ZUQUvyu1WdTLFbQQ9ttvnN/G2/a3X8T1R+5Ryu5pvN+9+tPlFdgH/+u9fsOf
353/8U8X786f0efLPzx5+dJ+ME9c/uHNn14+az+1b569efXq/PUzeRnfer2v
Xj356+/kmP3uzdurizevn7z8nZW1dtMJ21h4roQfr0nFKkmJ6Mjnp2dvvSAS
13UYBDMWQ/icBtMIn2+Zm4q6DCqRP1n6AbcQrszpgNoiW1NwkPh4w4dxySQO
LB/93ntL1Av0Ceun0Kj7hcRSu95RfsoEfSQZC4+9VDiLnLdCDo+FtWBAj6QM
br1YQJ3jub/r56AFsaq0PvXodRgBfz+Rn7opHxw7ZfZngn1a/a1W8/nqluN+
f9csm50jOmqU9QOqj4+O/j/7v6Nz77F3/2MI8+Pux4n3T5j2K+8O/+Yj96kj
FocMe64tLEApdtF9qyMzyrCzAM+YNxHGy3jkcIqPOab6f771fAj60vu7ZpAt
sDTSn1UN1QcGc9MIA2CH8IK9mf21kOAhW0fs5OO70f2JVQpbZOhkInIOX9+w
niiaKp/llXH3uiJUBveek0/fY3sfUOjNXLJ8k03QQpPHPCak/Lg8ORlvjGbR
yvXzEd4Ah5VtO7fPjvQJcMYhajVLavSaNMrxRp/ZZd4jWQcZ0ksmmftH3pv3
545RYAgGU4HbcIgd+uc9Oc4l0DmnpayBcDEZN4QnwQoT3LkOJhCALei8K4RH
Vl693ZL0IvPXPLsV0aRxb0C4VhAn5C3EKu9pG4R6G8H1W6awP9JynXk0qt+C
hv7ooAuGlXEjZJhTy/S7cXZXW6tpt6z/vmNhsyn1fr+j35jhNMo69xn9ILma
6GMQGwY0qxEY1HgXQ6+TT4Pk8JJlyblorJkOPECq0vCsfBtckxRn+La30Hmt
64LjXQJh3Wjc1k2rDLjbTrvO0VPWHjTWtNjhMJXVZr3vX/zwlsUVnYKmZjuQ
cEIO3hcmvUImeEvuUiGeegv9EYT+YhzgmIG/Ydv+ACY68r73MV6uRFc4CJxV
vMBdNRxjAuRbb3xMEJ2wOa2dLTqUbeMzbcIK+cGsxco2LznSlsTsF9nakhod
7NsVeTa0dQUsDpzMfZ7inZtws/HDarY0N7OKG/iK9KTON2SDEL9yfoCw+le1
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
XOcSkn+er+bWV9+yw3lxQqnrdF1oRgmLfH+c6R+95URAPYdbSodHDWjS74eA
p7vHNSakU2pv6vdXJq4+r5VzZ9/Idnzu4EDVNN9jr9tYuKUNUPFW2ZlNxvni
1LuUrrmZRRjdLMA5mRv191294Wr8ETfQpmAOBjHNqISUqJueTOPVW92ggc9s
W1nQuamOcyA29TXdTMJX63zRIeMgngQ7d5vlqDtk92i5UfzL87PAtBTKdMLo
9lZlH/Q1alRovjI7y4TNhRAblZV0s+OczvRuTemo5vpRj++Jay8jZbh7hRK5
UyjR2KbrX8gWvtFBsK3cESaHsN52jmDb/bYN6TsFLUQQp6ZPjL4ZiO92N5n9
dVPsmsbwK063H2fu48ydXq/sPbZ8xHW8zuzeVtkWiA7JmetdqG7C3H/RUgJF
bzO5eqLzd8u8GKe6Zbluj+ySW7s7hVw+6VK7lMgA8p+FT/ysYaFLFziVgutC
fqZ84N6bcrsjPfjz0c/j8dj+H4a6ZM7QHp2fvXOzsDV1DqkL9di7CN9cvuVd
eXMZXryVQpPUD7hDzHZ1rXgpmg7bqzvsHQi0lzr2yKHIn6XfPgsVuU6B7zPn
KxE4TUkScQg+p8UNnzsHUPdE2Yb8ZWbaOvfODYfa9YlpTwWGeWd2SXa2cYUk
KIi2SgNiWoj3AbkyvUPlrZHn3LlqsjN+lfDkMamz4SH6F4ik8Xofmtf63h99
2al80XTw/Y0ntxwNng0em65XV8Kwf+XY8jpv9oJaNmyam1qaitfUfIIvvcFf
c4M6l1D7dIGxjp5sdZ/m9q6jB/UmJ5epk6AzttoI9WsUMdbey01Ut1BbkM82
kxwv6SWh74Sj/l9M45memi9upftrmNGAeCGyRkNPtdDycJzGdG9fILQcE+07
gwlsJzpf6nrZ5stRrL3x7setZD7Fsp7zFR9OpdReR3k3XwdkuPS+9QpVz49f
QmEFZZLsbEyLs5cG6N49i6OuerFp9TAelApBZCDvuF3LCS00tD/sls5Pp97b
dsBHow6QfNGbOaGmtmrhpgoO6b1t3qAsZYF1fvi6veNC0lJ085ByL/dmaE2L
f//q4LL+/Sv31+7a9K31XQLl69b2aYHf4zs76NoWaa1VcWNkszPSLKjtftAl
VF0Zs1wt6Z0Hpu7TmJZA9jb1z4DWouauR4HD8y09Fye/4ZT6UJv+Ls5T3aNB
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
nqUrCeE8cnwAgDAbN0G7N3pK6KzqCSIPY5dH8b8zQXzW7cvrm3HPFD4DUzLX
Nq8DBv4NaYD9Yf3y769L/l9ymPIpZVZM555dlYVx5Y34pXHi+q7ne24Q+kni
RiSCK+rMvuVn7uvCJi4sGe1afd5qCgEJuwR3ag/Oc0zyQJ25QYkGzygNshHs
15Qb8AilGvyq+xXrxOAb9xV4QNesg3KfvDowOWM9xQr90A2jYAXF2u9K1MtZ
AWz+oZBdqdqfTYgyz39bu2BR59cjWJTauKqMHDanj78ziWBvLAN/YULxp5Tp
s+fsw2xdm8M4bPSiDVAca1WAtVs/fyAq/WiJiCLuhr7HEjd4vzQeQ6/aVx+E
oSGtpzfpha5z8PavJ+9+MMmefZkIYNDjVbz+u65MgI92paFDUzdj4t4uWPo6
f7Xbh7fiE769k9y6Aay5Pl//nCWriuSfr+pt4aTnp8Un7RzazKeiOTXpkVSD
5K0CNQ1Cl0Qt5YnnhisI2/clzQhlrrWvm8vcChL1m03qUk9Ouz15PqPVy7Hu
9uP0ZvSBEiLa39YvW8mmeIxJbF5V2IxLs8m9h+3iYi1f5P54GG3C9RH5iBj3
Ape9H3BQy3auXtTvuT1zSLlFlG3/+sYudeMBv7okDn/tm7qb8nI2EV1x+OsM
OKV02p82IpQ9J3w0Lmc9idy/KC5Kx17eSPP9QRDXgnJFFwaBYqL1D5tHtn8V
1Uz1enAsKnEjnPqHjfSg5/XeUepE0XN81eymrM4Lp/5p8314VWb4ZjTZ64ae
VrVItj+v30ItUrK7LdKdUJ+yilenuvKi+p//7b+fFOPm9M/BZG5aObDHgOh6
C79yyjoYR9/RJA11NhE8xmEyL+LA7Nxz8Vceu9erROfGdXUFs9I59590cExx
RrHoA1tufqyGAzUfKFyXJDZcx7wgdpk3FBdcFdFvyJs6ncagpFXZY8OnxSXl
LtrrG+nBYU9rz8vLv/+PbgcOLy/hYsGJ65/WryqLXubLVeXN0em7VTWF7m1O
eq8Tp+0nJB4QXWz3ezLnSb2946mz57QJCPOt7ZQLhvERZ3VOon1qz3lZVxVq
H19Re9408n40Bm6dzmzpolMQbCVojxIJ+zvKGqtxYy3qT+hrnq4g2ocLMPJC
T35zNrq1dK3Cxfby7Ws6R/MyLnet6izLidlytBw/0Ve0sWynEHJSL0HxaDeM
vFVF6juYUtfErJ2XYlQWlbMPt39ZTq7Oi+rS0g8TGnltdy7t251LK4rG/XSV
z+nqCvb11h117Uve6itaom+H4X7x+q4rXvsjZ7+6FqprTb4TenouLp32t42Y
tINuN04KPZmUvTDfwd//h6Qdrs1P/0vaVf6FBHzdC4ehl7LNL09GoZf8Gq34
v8KCLr5l3spddoxycVc2TnAdWVnaBKdmDYTcyXc3V3htb1Wkh6e+EPfBsRNf
ZQGFvYN0pQXZg3NxdSlsfvJ3YjSah0reHjzU+hyU5/0l1u/0eFI49vJGFP5l
t/kXE33Tbf2lnoD6KcdcX//CwsN0/c5o28HL4+Mf+cpO758P/+lwzzkc07Ya
s2hGGSOTunYk/MoH6ufBo2kELfGfngQe/tkhhLGDP4SrRHnNIv/pzeVVWVHA
GePbhmPMucbUQzlHUgPo5d4g2LPyuh8A0xSGo4ubj3UcnONze0R/n2rn4dNA
cOsfNx9ueAlKOe5HG6bTc33t2B820oGjbgeO4cmrbgeOMAX24kYaP+k3Xp33
wz0nEzG9mVXnTv3TRvrQM3c/9kLB35XXZGx+3EBc/8vA/aCpyUYV434c/1wt
Y/GzYno+y3ZAuHalHpUu+c3O/Ssap/kTe847+LlTOSmo2Fd/x9J8N3kc13uS
TqgWl81EKc1e+Vst19CILQzzHym/7wBf4bwoZzV7/MNu747fkjWf7r96dfig
mHcnv93sLsQY0h4ykxpP22dpm8mTt9rmKbNwVfLrvzw5cd6dtrbY93dY4uEF
O/7OrUb57pGnVz56qJN1rS4cnf5wdHjAWBx7rr/qiOOhXTzl1I/toUPhigNa
P9oOaDe3bdpGERzXnfvEzpY0XH7VC2/QlRMKcPh7zrFZxDS01lY6omoil5pq
H3fe8WWTVnf70fO2uC73xfP2fTn76K2MiPadH8baeUuqPt+dY7g/jA8lyaKP
z4s8L7T7HXA3xvcxKW5ezGGUk/d8Mbdk6A2vtTT70t6Ys3ptihFtNp84p7R6
JXU/yy0JXT8deO/dkIRGqwdIxtOSCkSa6+uHvmtLfTg4OPVWXvtrim3W/uKW
Ag71ySFrWHJmcLyxC6CP/zPmrpLxcmsAvWsGltb+TJJrnePKme/yYJWQ+es+
Ju2DwddUrnpTMPCfF1vupTT+s216PbmMS22/6SWTXUK3u22/2XFOdhx7ef1i
H29qCfzF6Z/Zyrbu8IpK+1Okm1zF63q/NCWFjYrmCPr52vjRc3f/1WHlvKOt
JgdA6KfntC+t1iWzZ6dhjHa3gjnVBG9+jOrU2UEBd1lMSdvsPVslG/hhppIl
scu9gUSQu03li9nPRXnRp2/TakaLpM1PGxHcVz3BnX2aXfSWSF+VZoF05tQ/
baQPvSTQP1dTUZ6NZv1E0MkFJRa2v61didjafMexe1KMl1nMZTERcmRYTAao
tXvpXhVjV7hmP75rCzW4/TLAZs8X6YNsN4UbX7K7qkqarlDm3bFp5IWtamaK
Xb5q90rt9xppYcpdFOfuJNr1z006N3Cz0dqs27uT4+Vpmk5msDTKLnbDU9ua
L0Q5J7qC35R6d3p16dpSYjdub6f1yvPyzjbinIzE1FRHPzaFGpzX9q02ebZ5
67bzQlwWoxvnX77iO96/fLVtc4ccz9s2+9EM5/LYjp88gpXWHTpoPrsuh/Tk
3cHLp18Kvtfkg46e/7A8TXmhStpfT8tgZnZoIipz2f2AYXInyiW65sUet1e1
VEK47Sblpbt2zqeXo1UnkDpFG33392nlrt727Drm8n7drXqzoPN8IvKp4/EV
FaqX3feaiqiCFaxxA9B6ZuVH/2B5Ujpb9t693SW93X17eOBe0wbF6fnYZTTY
qed7wcqa8qPOFgwUzNnY2T85stu3paSADB2TYeud2ZxubVAEHbppVYVhbtDj
hVX7FSfkeX+dfJSL8ae7p+OPL0s4Kf0FenNPgPeTri6Ke8KYa2z8+27j35Vw
Fr9m2wd9Ijm+t/Hj8lMxGol1tH688+zBrRdyUlZlPl37tL+agTf8Zq2/LsQ9
W3/W2/iX2L8/vikvHPr/a5FV6+hEb8G+2UZ9Tx/+OssKWa4jmFtjnWMxkedf
OUrcfPvVYnLvFxvuw5Oj5wOWW2c7wqZ8GPONv1PKC62rRYziSulucyvN8zWo
2g5VgbR4Vo/dWbVLe7pHpVC75ge3Ovvo2j/pq0K5pjIKQRXaOQRG59KBJ5WN
urt1oHjlWD6FM0bOk7dPndOX/7TnzP9KX0cItm3KFn+eN0X7/01TX46VbGsH
5eSqnDwqfr+u7Y8PoOjjc0Im7VInWLgNSz0r6grKTco6OdfvxETRTC8yhIUh
fcQqblVSyh1EaIcIGK4thteHXkS3OnYp1xZY6Qe3DspxM0Q03aaFefJAg28f
nB83KeSFpjSETtrOZFxop/1lI8z4+7417Db/PVDmGegwWMNGt4fb0ulrW2Iy
Z1gtW6BPO3R9d4T2x7tUm8SF5LmfLtxqLCYX1eqAsTkUCo+evtl/+6r6P79c
1U1ffwX1vne83uqrgSErrqqdetza0EDzh50rlf8uG1V1wHnlFA5623ypokdE
V8XL7mEfN15dl+WGsvuWcy820sy7/gdNxtl6EnfujiL/WMA0bmCZ5P5swCGz
Wxd4aU1puBPspDv98OnKQn0wKmcqH0FPl8WaomM7sr3BIIwzXZoj6ewC5MQ9
L6/dYuqaTfArm4aXujT88Ni+ZM/5rrymEqhUQv9OPHBrmB+2GH70tyHn86uP
zjn0O0mHdBSQooiFe8uBQK43UPtl/RVmfL75VuiInF+hFT/xNtDKvZPWO+fR
Zb9iH+47SdLt5OfeyVVMjbnZ5UAw3WwZN6bhanJTmYp87gjkb1fXz7jc9dz6
sBxaiHVntB1Yuyx2+0+4WoWZzBOu5err+k3PHL7jOc/nrThm07F2fsdiqibQ
NFTz0ofH/743JwT9owX/TMgTLODOeRH1TbuqOCumYtQVRrALyEYpL+Q5lZ5z
w4R7moV5ptPVSwcVH3X3pXudxUVTXdTuyH1uW+8UF7Rbvympi05pODVlC5/N
O7PiNPWQR1NNbqNLH91wwMO2FN4xlQfnhbgz445ucOvdwbs9R7AyW+9X7zbr
p7///XZ7RqN28NppfTiLrQrRHujy5dCd+t3sav5tCfrzF0dvjt79deWgS+j5
Xsx9zjzWBl1UTpJ3Y62wyl1bhXC3HrPmZ1Obkg5mqQj9rzo9df86e8mcHz5Q
lERfU7SESpYeNO91Tm+qqb6kpY0d587ZuS2ADlA7KsTlenJxaZb+ON5RO3/Y
NX9cHTwNZeTVZblNz7rj1QSdTMih3n7XZ0a1TRkuK9MbpQXZHfzo/sfekuLU
+b7hRPcWqFd1l5sHV4rM0BtO3z2nMnreTsp5aoH+vYN4enjAhheGKi3P7Eqd
loxW3xoRHRjqU8px3Fuoz/Vlg/rH+YZJmqO5j+iVQKhXO9Hu8HLnnVOSLk7J
6jTIFut9cMLtfn1GW5N5e1pX5+1lEpKPo0q9jyqaF0csitP3q+zYOfzz2x/M
/kPHbkLppsS4bJXMse93nO96e6DN+PRiXjN85nda26LTv/3mmSEVODSDsPJK
ckFBy3p7pdne3eYXNRHN/Xnh9MVKhF/uH20vf1vPeFKOwPBVvHJJHzpGgkpE
TUZlXerbajWtEn3sFihw/tOTz/8yuaQDMH75F+fq6X/6UiVIPSrxw0Mq9pS4
jBLIvCBlgb9a3uVxWyne6GpnXvtJlj63WZYp1REaioLfHRiuB7KnKaZ0X/PD
mhWFxqHFpaf6amrO8lkXJv3ubbJyRvwLOhSyM6ymKER9AKbzujkA0+jNyxfO
k39ddf/BbdmDzA3iMHa9yONusJJZHN6r3U+udtkqmdW9VKvayPc3WlHRaucQ
VrT+cSMxyp7kvdU3VHm/b6PpSEOSvubHtUtf8rDiiXcJ26Uc3cl/wPNnl8Uu
3baiSOJWcH86BG8yNcW9iY3mJKd3nNlbI/kvIZ/HxbSajcX6x3mthdsaRrcy
DYq8hPvgQEnAWxpkqvJOCinLYozZsYmUYzq/lxaJXFPjZuVwcNulPVOYsFkv
WkKdbcXYlVdANrMqsUbHW28+CtMgclcOuLSbj+xje5ijW3La1r/56KB3REXn
t/aQinbXel3oqNmfFHZohD0LyJwVUvvg33BL0lId6i+3YcdHb/cPXt9pxmz2
8a4sJ3rV+aadivbNlOygF+bg9f0G6+5hrF/9ekrs/R9mAyTssLEldw7mJ7tU
3dy64ng299MRoge//30v4PXpwtqeK7PX9MsH9fTg6OQtRZsfPaQPk847RvTT
hXV0d49ofdPuA5erm+co2F4717ypSty3CKt42LvHtmnr0UO7tuBt0yPX7G0e
9q5Dg2xuf0+3rzjM7QMY56OlDdP1CY31cepX98yDSaj/B5iFh9mMO2bh4Ojt
PcZ3vpi9K4vJ6kjSvHnPmS+W21Qnc4yVOZDurZ5VBmKu2TbPW/zHGeaTZwMZ
51YWdijECTOqdrSa7V5lcmUMiJe2my5cc/ZOY0aeGWDRCxKuMKx3Frb/raNV
dwzu28PXRwPD25HhiabYNi0IXxRT+7dVB9m83By7N+7EX18fzd3fqiGtXl2v
k53X/TW42Qe9nj1yfQleW6H+d4cnr/f7g1zHxmVxBZ65Mymqix2QuYtZJnaE
3Pn5aneqr0Zi18S33usHbVExre05fx4X5jgtW6bhnX35Iscx1W/qzM9HG4/B
Fh9tR9bH+PeP7zHX4krIc41Bl+g47cq7LEYCbsutgcwD8PO+eZVzbF8wbKad
J9SjWwJTq5YUqRs6rZOz11ldZH31pEzmtHt0cvLgBPSEe/cnoBdXV/UUuW3b
rg0Aasr2KHMXUMW1B4TjLw0wsXEDe5LtyovaddKHnszLTRpTZrPD6d9ndJI4
9MqegW12hNERB8XUnC/c8yzkJ/8BEtLXX+UEsDBI7iamFy4dp+peUI2kGUHT
YOXlAHMzVb1cYFPNUWL709afU4jAdObLh/mV6WHHoP7KROCucX6zf/rq2Ft5
4Ix4QnT/QkeTEn78pxrvdEbs0dvs6byjJAz9xA3fD8W3l49lqacKWp/0lw8p
8J6usoLYK77+pjwTl73QNFU8v5ldFE790zrAwt1h+v0L0T8RgWqvT8WFcOwv
G+lBbxROxYVeGIXZZeHUlzfSfq8aGZ3+2atHVijdHgv6K3z/cTkpLsR1vwQ/
1Z43s9D+un5w/jAjepd2Pz99/oBqNA0/J1XqA47mvBOHTmdujvVy6yPe6lOc
1qL2sR8kKan9KlUZO2of99U+pUIaqxxotr/j9FalyDmfFaOe1NttLKXz/Wzs
tL9v3gD8CueK3Z1C+lyci6x3NkwhKYHJXl+/2K/PqT17efzD23er724zNbdP
rzSdRtvg4OFo1SBA6OjE//xv/33NWtGtObNKyZm5UrD+YWScuf4qZ7H09OGZ
nkHoemL4vRZj9/VMOs1vG5HE7/sMffzp7//3SH9yn//938SnXm/QmKaV68V7
NtKrW5ZPu2Vbz4szXTrrXVq9e4fhDxfisuy7ysPi58Jprm+kB73zaN+WavL3
fzubYfCpQPLf/+1f8cf+ybRQzaKSpTN860a62D9JRk9mNz1X/k4oMYYTd+qf
1h//WV+R09OXbIAMLR81wJJdlvoPyeG1Z+vVdWKGjmhcWB5d0Z494FwA2+eH
ZrFs0Alu8OSWx5DlOx3ewTEVqlxBQMJdHsQPEZDTWWbiHk7VOVT29nyUDciH
6fJKh9O2J88OnFK7EVHpVRo5KKsptGVDTb3tu56qlJ82VVRt8IjnjbT0csc5
MP970cvePYF4F5uqeP2y19Q/wwd88QLLXcr9sLqxdyk35a6elZeaqjMO5ceL
y8po98+2OGe1e0nhMZYmsRskwI7x7mk3ERWXvSSKGB0nffsvDzIRhJybLTl1
4qgt2thfLDiuE2/hZmxBuXqAV7QZx/vvvjvEv44OTp0fXjgHPxyf/Pkd/vrD
m9ZobDvDdSyHzUWP67djvGY7T8O6PlHYf0Hroned2Rx6we7R9/sH7+wJB8yL
WbRyCGBexe1OsjN4/PnSmedOGBgpCJLmGGc6yzIrpnNXMnrAWZa3VqIdOpqy
f35bsO2Myx2H2VTpAAK/ChF60y/ldJyJTZWAfb7Tg9P7QMvnG7J+PebwopyV
0zWd7bCp+v6vTk9XD0/PUy4hhs8m+hOBlB81VXlbxLWLMvxns6nw0HJ+k3NN
EntwI0fgUJe4zxxJvdbY9konjt8a2uaRy/xVisUe9oOqgFmbOs7jsI/QzwXN
5q8WKvtHDsTuv3h1/JbxLwrFtsHX2oqylG/iRGAKNPmR7we0PWGV/QmdSBNf
WHWJgSZWEc1f0fD1Uj5ezDC2unIPBCUA6U2dZdvXvLG4uvoVGOuxHutP9xUd
3GDYZ/08eX35zi+Oh+DTAE1Od8MwfAgGbrASHc3oVraCwFW7arKcZW4gE+07
Kys6ymHxaN0N0GjzSSvoZP8EshJX1X2VQ9dCn+0mJCVGmzjrfX153i9erR6K
89iDeJQ51pPK3pNRmtqgXGGPXr4PvmwmLLecaPAbC0zfoBLYE+Qjy02UdV+f
8z94/cZbyex46W7EHmR2XtjTDRpX3NnPaKxOl5+ZRS5LzZx315CxDQiN/YAV
ZOZXDJz1lgFeg8NtKHdiY1Gz4ZoB84e+eFEhWbl+ACUKzvPhzFnwX7QscEoi
T/lDL98dd2DoYqLg0PCaLf5dzF+MPujJuvaq9gM260tcPH7zzlt5swStxOiP
V6NCAt1TgdKiVuR8MZL2biJoY/BsTMdEv3jrTLS6a5/hQJmPo4NDesu42nFe
UMKnWeke4W+HSeDuPwmfLpBN0ALGgwcf43Rc3Iiff50w9YXIxI2ozjfUWm/p
9x1aG6/HXvW1e5F3PQKn0DlS4gE1Qnqxk3v24tQuZRG1Osx7XM2QlHtJ9N5f
Jc9h/8270+V6IUHI3SBajXr2D9rVGzAlaz1Td1/9THnGr4vszrTYShX6fPTQ
7XCGvhS0mJc1BZ2vejlfK9n7VZJh689wjsby8ds31xigOT54/YGvshNWXOJf
UwjM7qUBX7smqbcc85WjOz+MlFM/1OQVrZLu/79Bnj/Vc7tbumdXcFr1IsCu
uX3FQad79zq7Ddu6co/f33na7ZTz+vXjd3ivL3x+Zusb3L+Rtq4Ad1Pt9h5Z
cXS7zyztm+/Vq6AVodq0PH7kD5pOd/L21mBX1jj+Y6qkZfeJ3H1A8ZWYjcD3
R5Pd3iMrjn/3mT1nfwboCFv+f4jLq2+cSzg9Ck19fzpwZrG+fapW3E+3cIr1
aLSmkP+mah5AUE3157t3ctU3uZOVp6B5hE5Nezurpo6WZWWLHi5s1MfwXl7e
ulFiFblv2iKWMJ0U2WxaTr7k+JJNSb1sQzMDZbq7LnUiplVhjU9z/0Pgqn1k
z2n+4gLF9IQYgv2wAjk9UvHW9C4Tn0S+9ryAtY73p+LMbfDanQP+s1ZFJads
t/fEikPefWZvuWxCzQwoPYzc6j8XZ86T1t9uO8/eBBG/c7PibesMz/W4qBbT
SS8ce3n907I+OHOV2w2C95xN/7OpJ71b372z+sn08yfI6Cxxtl75CmOE3pSK
7jZO2NTPnZTXYFZfboi+P3DXUDNkjZrwohhpKvK0POBUR5w2iu60B12Ioi5M
bgOmu3n9rCtcpSW85ESMik9auRXMqzjT7riuZrx6iUb7Qpqd5903Oqf2jfM6
w186Ae2BG194gNWm9hUeHp2wNB4IetPRI02pdRP2xp2ndJlqJK5cRf3ohG6H
EZrQwXxXGGdlfaGQU1vZsawX5Oj7GrwJAiQvKC5Osr+AfMRo+j4bM37nPs+O
hfpLL8mUzvQtNlQ2rxcrf6uL6XWhq2q8CZjF5gdCv9DZ5MEnQt/JREpX3Fr+
vQu9mvLv3QdWpSHzR/acptj81xRBpeIRkIYFAEzFHctHxDLqFv6B4hjQDB76
D1M888ADNI/u76pev/J6rU+m1oyxqysqVC9u/JeRqDZRFX+Nnua7797R2+5f
1ePebhKvXCxvXufEFvg9/HhVjs2hpOabPxSim5R2aiK2BLdMHfFeyK67frzS
cvHdMdLvbHR9U7kyr5baEps6uHxoY9BvIGnOF621nggqHdFKVbeN1Vf+nh28
GlqR7uYR9xPDPJ+nicver7ya8IN1soMybAr3iJGcjUQ/wQ2//TBReGSyYoLD
b7ZHqHea0zNNa5q/wiLXwbmYwH2Js03t/3+9098NXVKYYqY/US2STW3TO+y3
uc4E1QeunA8pZCf/Nt12Xr85OO2nlodRXKeVQ1eS5Mv0cf/V65ev2UANvoG0
Im835CtrYZ0ectgsKr8oJ5fQOouQ58n+fb/RquADfcWvlsr5qi8vE5Ghv5tp
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
Kn6bpgIA

-->

</rfc>
