<?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-15" category="info" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title>Pairing-Friendly Curves</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-pairing-friendly-curves-15"/>
    <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="November" day="01"/>
    <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, its security level is estimated at approximately 100 bits 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. CIRCL now includes pairing computations on BLS12-381 (see <xref target="cryptographic_libraries"/>).</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"/>, 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"/>, where p is a prime and k is the embedding degree (<xref target="pairing"/>). 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, the security level of BN254 is estimated at approximately 100 bits due to the effect of the attack <xref target="BD18"/>, where the security levels described in this memo correspond to the security strength of NIST recommendation <xref target="SP800-57"/>.</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 evaluations summarized in <xref target="impact"/> and <xref target="secure_params"/>.</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. 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>
        <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 the finite field with q elements. 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 in GF(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. We define the set of GF(q)-rational points of E, denoted by E(GF(q)), to be the set of all solutions (x,y) in GF(q), together with a 'point at infinity' O_E, which is defined to lie on every vertical line passing through the curve E. Since a and b are also elements of every extension field of GF(q), the same definition gives the rational points of E over any such field; for example, E(GF(p^k)) for a curve E defined over GF(p), as used in <xref target="pairing"/>.</t>
        <t>The set E(GF(q)) forms a group under a group law that can be defined geometrically as follows. For P and Q in E(GF(q)) 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, for an integer K, ker(pi - [K]) denotes the set of points T with pi(T) = [K]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. The exception is <xref target="comp_pairing"/>, where G_2 points are written in untwisted coordinates on E(GF(p^k)). 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 chi. 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 * chi^4 + 36 * chi^3 + 24 * chi^2 + 6 * chi + 1
r = 36 * chi^4 + 36 * chi^3 + 18 * chi^2 + 6 * chi + 1
]]></artwork>
        <t>for an integer chi.</t>
        <t>The elliptic curve E has an equation of the form E: y^2 = x^3 + b, where b is a nonzero element of GF(p) chosen so that #E(GF(p)) = r.</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 chi. 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 for BN curves, with nu and E' over GF(p^2) for BLS12 and over GF(p^8) for BLS48. 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 = (chi - 1)^2 * (chi^4 - chi^2 + 1) / 3 + chi
    r = chi^4 - chi^2 + 1
BLS48:
    p = (chi - 1)^2 * (chi^16 - chi^8 + 1) / 3 + chi
    r = chi^16 - chi^8 + 1
]]></artwork>
        <t>for a well chosen integer chi where chi 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>Pairing inversion is a related problem: given P in G_1 other than O_E and an element of G_T, find Q in G_2 such that e(P, Q) equals that element, or the same with the roles of G_1 and G_2 exchanged. Solving it for one of the two arguments is enough to solve a variant of the BDH problem <xref target="GHV07"/>. Solving the discrete logarithm problem in G_T also solves pairing inversion. <xref target="GHV07"/> examines approaches that invert the two stages of the pairing computation, Miller's algorithm and the final exponentiation, as well as approaches that invert the pairing in one step, and finds that none of them solves pairing inversion for curves of cryptographic interest.</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="SP800-57"/>.</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"/> <xref target="GS21"/>, 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 the adoption of the BN curves among them that are estimated at approximately 100 bits, 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 obtains lower cost estimates than an earlier estimate for all the families it examines except BLS12 and BN. 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 (chi = 2^114 + 2^101 - 2^14 - 1, written u there), and the BLS48-581 parameter matches Annex D.3.5 exactly (chi = -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. 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"/> 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="GMT19"/> <xref target="GS21"/>, 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[
chi = -2^63 - 2^62 - 2^60 - 2^57 - 2^48 - 2^16
]]></artwork>
          <t>where chi is the parameter in <xref target="BLSdef"/> and the size of p is 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 chi, 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"/> <xref target="GS21"/>.</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[
chi = 2^114 + 2^101 - 2^14 - 1
]]></artwork>
          <t>where chi is the parameter in <xref target="BNdef"/> and the size of p is 462 bits.</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 chi, 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 <xref target="GMT19"/> estimates an optimal ate pairing on CP8-544 to take about 20% less time than one on BN462, that CP8-544 has a 131-bit security level, and that <xref target="GMT19"/> describes it as the more conservative choice for users concerned about progress in variants of the number field sieve. 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 BLS48 candidates 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[
chi = -1 + 2^7 - 2^10 - 2^30 - 2^32
]]></artwork>
        <t>where chi is the parameter in <xref target="BLSdef"/> and the size of p is 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>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 bytes, where n is the bit length of p divided by 8 and rounded up, 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 common procedures below use x and y for the coordinates of a nonidentity point on either E or E'. For points on E', x, y and their coefficients x_i, y_i use the same coordinate representation and coefficient ordering as x', y' and x'_i, y'_i in <xref target="secure_params"/>; their values are those of the point being processed, not necessarily those of BP'.</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 y of GF(p), with y taken as an integer in the inclusive range [0, p - 1]. 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). Section 4 and Appendix I.1 of <xref target="RFC9380"/> therefore apply 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). For BN462 and BLS12-381, p^2 = 9 (mod 16), so Appendix I.3 of <xref target="RFC9380"/> applies to GF(p^2). 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>
        <t>A faster approach reduces a square root in GF(p^2) to square roots in GF(p) by way of the norm <xref target="AR14"/>, and the exponentiations in GF(p) that it needs can be shared with the is_square test <xref target="Scott20"/>. Since GF(p^8) is built as a tower of quadratic extensions, the same reduction applies one level at a time for BLS48-581 <xref target="AR14"/> <xref target="Scott20"/>. Implementations such as <xref target="blst"/>, <xref target="mcl"/>, <xref target="MIRACL"/>, and <xref target="RELIC"/> compute square roots in GF(p^2) in this way.</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 bytes, where n_s is the bit length of r divided by 8 and rounded up:</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 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, written P = (x, y) when P is not the point at infinity, 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.3 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. Within one form, each point has exactly one encoding, since <xref target="point-deserialization-procedure"/> rejects non-canonical coordinates and unused combinations of the metadata bits. Accepting both forms means that one point has two encodings, which matters wherever an encoded point is hashed or compared as a byte string: a value that contains a point, such as a signature or a proof, can be re-encoded in the other form and still be accepted, while its bytes and its hash change. A protocol that hashes an encoded point, or compares encoded points as byte strings, SHOULD accept exactly one form for that value.</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. <xref target="RFC9591"/> rejects the identity element when deserializing a group element (Section 3.1) while accepting zero scalars (Section 6), 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"/> and <xref target="KIK17"/>, apart from BLS12-381, whose case is described below. 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: for the Conjugation method of polynomial selection, it accelerates 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 bit-level security estimate for the curves recommended here that is lower than those this document cites, and this document has not derived estimates of its own. Work published after August 2026 is not covered, and has to be assessed separately.</t>
      <t><xref target="BD18"/> estimated that BLS curves of embedding degree 12 require a characteristic p of 461 bits or larger to achieve the 128-bit security level. Note that the security level of BLS12-381, which is adopted by a lot of libraries and applications, is slightly below 128 bits: its 381-bit characteristic is below that size, and its security level is estimated at approximately 126 bits <xref target="GMT19"/> <xref target="GS21"/>.</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 regarded as providing 128-bit security before exTNFS, including BN254, are estimated at approximately 100 bits after exTNFS <xref target="BD18"/>.</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 <xref target="IEEE1363"/>; a coefficient outside that range gives one value several encodings, which can lead to vulnerabilities such as signature forgery. <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 970?>

<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="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="2020"/>
          </front>
        </reference>
        <reference anchor="SP800-57" target="https://doi.org/10.6028/NIST.SP.800-57pt1r5">
          <front>
            <title>Recommendation for Key Management: Part 1 – General</title>
            <author initials="E." surname="Barker">
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date month="May" year="2020"/>
          </front>
          <seriesInfo name="NIST Special Publication" value="800-57 Part 1 Rev. 5"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-57pt1r5"/>
        </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="DOI" value="10.1007/978-3-032-35398-6_3"/>
            <seriesInfo name="Advances in Cryptology - CRYPTO 2026" value="pp. 67-95"/>
            <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>
        <reference anchor="GS21" target="https://journals.flvc.org/mathcryptology/article/view/125142">
          <front>
            <title>On the Alpha Value of Polynomials in the Tower Number Field Sieve Algorithm</title>
            <seriesInfo name="Mathematical Cryptology" value="vol. 1, no. 1, pp. 1-39"/>
            <author initials="A." surname="Guillevic" fullname="Aurore Guillevic">
              <organization/>
            </author>
            <author initials="S." surname="Singh" fullname="Shashank Singh">
              <organization/>
            </author>
            <date year="2021"/>
          </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-14.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="AR14">
          <front>
            <title>Square Root Computation over Even Extension Fields</title>
            <seriesInfo name="DOI" value="10.1109/TC.2013.145"/>
            <seriesInfo name="IEEE Transactions on Computers" value="Vol. 63, pp. 2829-2841"/>
            <author initials="G." surname="Adj" fullname="Gora Adj">
              <organization/>
            </author>
            <author initials="F." surname="Rodríguez-Henríquez" fullname="Francisco Rodríguez-Henríquez">
              <organization/>
            </author>
            <date year="2014" month="November"/>
          </front>
        </reference>
        <reference anchor="Scott20" target="https://eprint.iacr.org/2020/1497">
          <front>
            <title>A note on the calculation of some functions in finite fields: Tricks of the Trade</title>
            <seriesInfo name="Cryptology ePrint Archive" value="Paper 2020/1497"/>
            <author initials="M." surname="Scott" fullname="Michael Scott">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <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="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="GHV07" target="https://eprint.iacr.org/2007/256">
          <front>
            <title>Aspects of Pairing Inversion</title>
            <seriesInfo name="Cryptology ePrint Archive" value="Paper 2007/256"/>
            <author initials="S." surname="Galbraith">
              <organization/>
            </author>
            <author initials="F." surname="Hess">
              <organization/>
            </author>
            <author initials="F." surname="Vercauteren">
              <organization/>
            </author>
            <date year="2007"/>
          </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://doi.org/10.1016/j.tcs.2019.10.017">
          <front>
            <title>TNFS Resistant Families of Pairing-Friendly Elliptic Curves</title>
            <seriesInfo name="DOI" value="10.1016/j.tcs.2019.10.017"/>
            <seriesInfo name="Theoretical Computer Science" value="vol. 800, pp. 73-89"/>
            <author initials="G." surname="Fotiadis">
              <organization/>
            </author>
            <author initials="E." surname="Konstantinou">
              <organization/>
            </author>
            <date year="2019"/>
          </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 nonidentity points A = (x_A, y_A), B = (x_B, y_B) in G_2, and a nonidentity point P = (x, y) in G_1 as input, and outputs an element of GF(p^k).</t>
      <artwork><![CDATA[
if (A = B) then
    l := (3 * x_A^2) / (2 * y_A);
else if (A = -B) then
    return (x - x_A);
else
    l := (y_B - y_A) / (x_B - x_A);
end if
return (l * (x - x_A) + y_A - 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>
      <section anchor="optimal-ate-pairings-over-barreto-naehrig-curves">
        <name>Optimal Ate Pairings over Barreto-Naehrig Curves</name>
        <t>Let c = 6 * chi + 2 for a parameter chi and c_0, c_1, ..., c_N in {-1,0,1} with c_N != 0 such that the sum of c_i * 2^i (i = 0, 1, ..., N) equals c. Implementations such as <xref target="mcl"/> and <xref target="MIRACL"/> compute c from chi and choose c_0, c_1, ..., c_N with few nonzero digits, taking advantage of the low Hamming weight of chi.</t>
        <t>The computation of the optimal ate pairing uses the p-power Frobenius endomorphism pi of <xref target="pairing"/>, applied to Q = (x_Q, y_Q) 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_Q^p, y_Q^p).</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} with c_N != 0 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). If P or Q is the point at infinity O_E, the output is 1, as required by <xref target="pairing"/>.</t>
        <artwork><![CDATA[
if (P = O_E or Q = O_E) then
    return 1;
end if
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 = chi for a parameter chi and c_0, c_1, ..., c_N in {-1,0,1} with c_N != 0 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} with c_N != 0 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). If P or Q is the point at infinity O_E, the output is 1, as required by <xref target="pairing"/>.</t>
        <artwork><![CDATA[
if (P = O_E or Q = O_E) then
    return 1;
end if
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 = 2 * chi * (6 * chi^2 + 3 * chi + 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 chi.</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 the 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 are P = BP = (x, y) and Q = psi(BP'), where BP and BP' = (x', y') are the base points given in <xref target="secure_params"/>.</t>
      <t>Note: The G_2 input is given in this appendix by the base point BP' = (x', y') in twisted form, that is, as the corresponding point 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 of <xref target="pairing"/>, whose formula for each curve is given in <xref target="secure_params"/>, to BP' first, to obtain Q on 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, BP' = (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, BP' = (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 prime fields and binary extension fields 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: it emits the ordinary type byte followed by zero coordinates, and its decoding routine reports a failure for such a string. 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 parity 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 parity 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 at Approximately the 100-bit Security Level</name>
      <t>BN curves including BN254 that were regarded as providing 128-bit security before exTNFS are estimated at approximately 100 bits after exTNFS <xref target="BD18"/>. The following table summarizes the adoption status of the BN curves with a 254- or 256-bit characteristic, which <xref target="secure_params"/> does not select because their 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 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">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>
        </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 appeared in the proceedings of 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+y963Yjx5Eu+p9PUcdeZ5GUAaruKFBLs3Zf2DKnL2o36bE9
GnWvupKlxs0ooEmorfMsfhY/2fkiIjMrq1Bgt2TN3jOz9uxtNQhUZUZGRsY9
Isfj8dGm3szKc+c3r9N6XS9uxs/WdbkoZjvnyXb9oWx+c1Qs80U6xyPFOq02
43q9qcZ5tb4Zr9QblXpjnPMbYy86ytNNebNc786delEtj+rV+tzZrLfNxnfd
qesfpesyPXcu31w/O7pbrt/frJfb1bnz5Nmbb47elzt8VeDXxaZcL8rN+CnN
e9Rss3ndNPVysdmtSvXyUbNJF8W7dLZc4Ktd2Ryt6nPnu80yHznNcr1Zl1WD
T7s5ffj+6Cjdbm6X6/Mjxxnjfw6ga86dv5w5V+n7cl7zV7LWv2zntf3teklI
Kot6s1zzF8v1zbnzzctvnSffvnp18eQa4OZn/Es5T+vZudPwy+MdBvpfN/Pl
OF8uFmW+Ofth1Z396sx5ni4WS2vyqxSzbK2vPznZe3r0wWnenDl/Sm+znTXN
mzotaPr2e57nSQqs39Sl87KcAa/OHxf1h3Ld1JudPeO6uftfeXNG+K+wXWdl
sT06Go/HTpo1m3Wab46ONEVlaVMWTr7erTbLm3W6ut2NnNTBflZ1OSucZeVg
onq1qXOHKaj36G3aOOsyLwFF4aSbTbnYgAicYls6m6VTbxqnmpX3dTYrHdCC
s6LJ6zydOdV2kdOj6QywnzkKnMYB8TnNqsxrPDNPV41TlFW9wODbBr/3gGl4
0M1tuXPydOFkmGS1mtV4GpMD2VjsNt84TQkcYTwLdIywWi9BistZg9Xmtw4W
UhcE/mankFIu+AUAOaKlretsuymHfgMMzdJZLs6cRxvnyZu/vL7+1vFdLx45
z+s5//w4XWfbWdnkW5p2taQhAHBZVXWO87lxFtt5Vq4dQXpTA2AnneGQ1pvb
OVMEpry/fvXsysGG0oqdom7ydbkpndnyJpXnMDQQPQdNYQuBtRq/8og4QwoF
dDwb2tU+f9AI1bgAxBh9OX6Vlrfr+sbgG9uTVhWIGBBlO4YEuEnz92ege4y6
xuZsZ+maqGhwDOcOsOJHPwrHWb1x8tuUiKJc1w3t6x3mTovlSo2fYnkbgre7
d7M6W2PRBBD+P00LFGEMetLzEx64KTEfdvMr53Z5R8sfMT3qr50Zvps5deOU
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
mGCahrCE9TBYOLQvqK5JCIUyAd+nbAcXOmwUuJREXeEgYX8h96D8gXS9nEO0
CaQw0KEVBdqDCSbAPoR4BjoemfEhyCbFcQURFlMYtVkFLSKjOgbiwVAKw4Rq
GEqtKECv8KdTSHVY61DIPagwOGN0zICEEDpoBuMMKPfKFPsOaUeLA++C6oHz
kmm1BdYcDGhyYGAbogo2V1pBspI1jx1JoUjmXoA1RvgjLYll+8mEtEd/GiZR
YbSHMvZJLpBrCFYfiAg6PWln0AInkQdMVlmYZDDIAC0U0QTqRBV6PuQhJvE1
bmBRRzHQk5IeAlaW5bD/MljMOBR5DMmOkwP5GHtQHnH8gf4whRozJTqJoea3
ujxkcmarfiY+zK5u6jf0q2V6tw7lfyLhe6R63eoODmp8K2KmykDflCt1C5hV
0tVY7RTadPCS0sGXTcnp4O/L3diEllSbCi61d646CyNv/L/hT9Vng4pnBxBF
wZP2CiKDtRZnzd6gRdn9zmSN9wqvVXMaylIUlEjrcL4Nvg2VX25UGwmueLfL
2FNrJqCDsrzpTlusSKUAcyxaBUTWJfWglKpduWFXGpuLj50dvulspu4B2Czz
5Yxu25Ak/HKRL6k3sZUPUDrL7Ae+9UZfz8Lv4M91umjm9ebc0dcQLVT8jz4c
q6An5krXzZlzMVOpnOSfJy+0PCl/vJ2fUko+3QGcUqYjX8DHSOA1LbXDv+nU
CuJRDZo0OyLgsS6dBinNYXtT0724gq5ZXVqXHo5M6+sODsqa5jt3uh2WW9oA
FW9KM7POpJ+fOVfSKDg1CKO7GDjLdl3+dVuvuSnBiFuFUzAHg+hOXEJK1EBQ
pnHqjepTwWe2rZjoXPTHaRbr+obucuFbiT7rkHFATwKl2/Vi1B2ye7TsRIGr
iyee7qeUqnzdzV2Zvle30FG9/VLvLBM2F3isy7SgqzFndKa3K6rU0Pe3OnzN
XnubK8PdKwDJrAKQxrSX/0y28JUKgm3kejU5hPWmcwTbhr9taoBVqEMEcaab
5KhLleh1U7FQN/m2aTS/4vKAcWo/ztzp0Ua1vG1vnXmQH1tpGJ0EgrHhctQE
T45He4k3pfHMyw1Uz00q6SnqXmG5pouaKvFJStXUfKMm3STCC8Bu4CiMhp5q
oeXhOM1iZ14gBJ7wPcPtYALbqUrluFm0qT4Uw2uc3bg98WdY1jO+bMGqLNlr
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
Q0Jbh0ro7Z6v9DnvJmuPCjpMrWNaEBaqmzgaByDcPe3eDElotDqAZDIrqO6s
vr5+6Lu2bKK9vWNn8HJ6XcO38hfXFEmpzptaQxYHg+ONbAB9/J8xe0gS2cGk
KmevY/GLnI5O1vjKcrrOG6/Sxl3m2a4/ZHnqsItJu2DwkI432BQM/OvymztZ
wn81r15PevDKu191Ajzn0O32u1+NrKORZS6vX+yjTWWVPD3+Exts6/Yv6CgY
2oBOruKwqklAeZZjnWDSTTc5eGLvvtgvrRPazbUHhH58Sns/K13S++Jqxmh2
AOlTsNDyfVSnSrjzXZtFtA+CvWVDEuzvZipZHNmu07MIcLOpfDr/IS/OuvRt
Vs4p76D+aSOC+6IjuPOP87NO1sGLQucczK3qp430oZNX/adyxot34w6Jeaym
Z5Sr2/y2diVia/MdL+2jfLLKYs7zKRdjzWJSQK2dc/sin9jc1jUvbFMMxe5W
F9fbKkkfRFN4QfuSnaEqqbtCyawv9UuemkKFuobui2Y34m7nJQ1MGbgk3JOX
vv65SRYGbj5em3U7OXq5Ok2z6RyWRpr8EXhqU1eJKOdUlfCbQu3MLs5tU+vv
yu5UMxg8LyfmJdbRmM/02QAvdTEU69C0alae61a3raf8PB9fWf/6hTty/vWL
bZOOZznOtt7sqTmXw0ZefA9WWnVor/7squTYg5O9Z5+9HL8mH3Tw5PXqNGW5
LKiGBa3O6tmhiSj1Zfs9hsmeSpvomhM5rrmqhOTcbgoBrNw1Op2dj4dOIHWK
NtPv7i7Wuizb0pd3q25VO3GtJ1OezSzHHahQnYTZQyrIDFawxj1165mV77y9
1Ulp7YI9ebNDervzZn/PvqR9v7PTic1osBPHc/zBmvKdSpcMFMzZxNo9OjAl
EoSggAwdq2RqCpptEkqjCFqpNKrCMDfosdXNjRk4IU+6SS/jjE8+3pL18qyA
k1KfoTe3BHg/qvIsvyWMucaXf9N++fMCzuKXfPdel0hObn35y+JjPh7zdbz9
5ejxnd+ei2lRFtls7dP+Yg7e8Ku9/TDnt+ymW+/LP8f+/fFVcWbR/w95Wq6j
E530kbo2wS19+Ms8zUWxjmBuk8c2FadfWJJfff3Fcr78Zxvu/aODJz2WW6Uj
bhKQtPnG3ymni9bVQkZxpWSnvpXm+RJUbUSVVg2eVRN7Xu5QmYRxweWO/sEu
332wzZ/URS5tXX2IoAptxgOjs+moqdJE3e0qUDw4lk/hjLH14M1D6/jZPz+y
Fn+lryME27zKVIFfvIrqa+hXfT5WMm/bK6YXxfRe8ft17Si+A0WfnBIyaZY6
wcKrQwryqih6vQuEnOtzPpU008sMYWlI77GKWxaUYAkRGhEBw7Xl8HpfQ3Sr
ZZZyTRGjbnBrr5jUQ0TTrd+wSB6o8e0Adt5Ndp3m4kxRGkIriWw6yZXV/LIR
ZvxN1xq2X/8NUOY70GGwho1WXDAF39e2xKTPPFy1QB9HdH1njPdPdqj8jw3J
sz+e2eWET8/K4YCxPkQQjx6/2n3zovyvn6/quq+/gHrfOl5v1EXPkOUX5aga
tyY0UP9hdCGzL9NxWQWcB6dwUGuLpYoOER2Kl+39Lm68uCyKDeWaruZebOQ1
J90Pmk7S9STu3BxF/i6HadzAMsntual9ZreqmdSY0mDkj5JRN3w6WKj3xsVc
ZmPo6apYU3RsJJobNMJ4pwp9hKlZgJzap8Wlnc9sXVdisGl4porWVojpI+t5
cUllhumYixvxwLVhfthi+NFfh5wvrt4759BrJR3SCWOSIhb2NeeM2U5POaX1
F23y3M2/hQ7i+gXe4sXOBt5y66R1zgW22SZKbV3Th9tOHrZb+bk3WYndN8wf
nIzy73Py+m+KYtZOMTQH++y/V1Qfrz6LSKeq36dm18keAVZvxPwhez16y3XV
S0jl0mqrVy23xm5iu/GgBddOsumu/KGTawqOYtG1jbirToWwN4Wc/v0/3s3V
R5vya//+H/+OP3ZrhWFi81IUVv+t6wexfgNiX9FpViDx66LReqWjr5ZNz84o
Z4f5yeBsgl0qw6yaM9RBj+bjJjdNn02bzSeVHOUTKolLSSTm2K1HlFdSnZKg
N2hMuRxaoOT2HUlH/AK6tPig2yXzVy1atMbsxH1dUHZ+3rOqp8vBaIxyMb0q
9R4We8zTckdVz9iu7djV8X2UEWLPqdSHsllkd5+wlQxSkcWuEsMTjOqeWe7I
sZ4s3mLpgiLK+pJFVCmoflEVILv7QsQ3+tjD39oqxN5pzm/MF6Ub7KpcxE4H
xgyONXXPd9Cr/7/73XZzcLGy0OysOvvLlAlqzgv7fOJJ/a7LXPy64aUnTw9e
HZz8ZXDIMHA8J3I9lzmsCRlKbaSuDIaQmW0K1O5UY1b/rKsXw0PPS+KuQ6en
6l97E/Hr9xTjU5cU66Oi1nt1u9bxVTlT52a77o2zc93yDyjZOOfn68kkp1n6
42QkR3/Y0X8cbqr68kmrkyN0z9rjVYdMdcCs2nfd5fVVfaH+OmOdUVqS3d6P
7n7sNQl6re/rx0uN0ymrLtcPDsJn1MLxyROqq+qMEtdNDE29dRCP9/d69lrS
smapxDuzzqwEo7XjWkR7hvqYMnQfLRVs/LxB/eNipzzN0SJ9qlMTp1qrx3v7
F+tvnJJkeUqGk3hTzv3O6eK71VGjNUo5ruq3d/JgKQZFtdzvVUU1ClkYJW+H
7Dfb/9Ob13pTt2W2ULUTumw2BIZ/M7Ked6pl6PHpRGzn+MznSpljCX79rV99
KrCvB2FwHkROIfdqq7ouBNJkx9Xx+N3F0RrLpWk/3z+aXv66nvGoGI+hmdHg
Gm900BDVDJyOi+owCKPVtMb5oV2xxvovDz796/Scjkj68V+ti4f/5XOVIHGo
5psbUPW/2GaU/uj4CfO9YVnDi23ZWldb89olrZ5rSGtCheX61nBuXtaoBrKj
KbqWa/3DmhWFxqEhhsfqYrZWZvj8TTx4P8dTOtu4E63IYAbNOc7WYX2Os9ab
Z0+tB/8+dPfMdbmvzPajILKd0HFtf5BZ7C+A0d0aYLMh+wI6XLAy8t1tgnSe
gbUPK1r9uJGQRUfy3qgrOpula6PpsFuSvvrHtUtfvL5qus//7PRUE1qNQWD+
3WCwp96lZDpzTmi9HnwwqY69WHs0oeraHffZPuNjkAdoxy8Q2Hquyg1tHb22
wv76ocH66rqdi/GNnPtUTefn+Q7dNlDecKtl66N5pzN9zAhlGGRkG68/5bhm
3ANZXEd4Xuazcj7h69fttVaPraMIg6l36MSuB94d+25DvfXRANNciCKfYHZM
6vlEXZpldVsX2hu8gNZ06ZGujlyvsK8wnaZs/eA1482s464R7FXbNYPED+3B
pdia7ZrmsUeYo2uygNe/XXOvc3BW67fm6KymzkdVbbHe0Rm0qKs5oVCfYFbh
vl9xE+fKYRifb8NeHrzZ3Tu80YyZ/Ro7opiqofNNe7tNy5Qeppbm4PB2g3Xz
MFZNH84oYvSb2TIOO6xtyY2D+dEk99S3DhzP+n462Hzvd7/rBFk/nhnbc6F3
53/+oB7vHRy9obD4vYf0btJ5w4h+PDOO7uYRrW7auWOCT/0crQpUzjWrj0bo
WoQhHvbmsa3fde+hvRt4GTC0tq4G0e9d+wZZ3/6Wbh84zM0DGOeDlRIT1bnR
pgcNyLluHvQWpN/ALNzNZtwwC3sHb24xvov0nx2RT4cjSd3yI2uRXmSSQ/Xh
mvqY3DdqXmqIuWbbvHjjb2eYjx737NExsjCisDrMqBwpOd+5SMVgDIhGm21q
tj4FsDYjjzWw6ASmBwzrjafr/NoR0hsG983+4UHP8LZkeKpoPYVSaM7ymfnb
4Bq+1Lg+DHjSivkfHizc39Awaqcu59Goszf/WTF/r9azq7grwWuLb5zsHx3u
dge5Wo8R+QV45mial2cjkLmzecpHXIx+uNiZqYsx39Ex1bfqTpv69NseWX+a
5DrWYQrbnJjGlzmOrhdWxUbubTx633hvO3K3WbhpGnZf3mKu+QUXpwqDLtBx
2sd8no853JZdAZk74Odd3ZT10jTQb6atB9Sja4KhQ4swVS86rrazrLMe0/oq
8Om9JvbB0dGdt+zErnP7lp384qKaIrt5t22CzorSUorMBlSxNQChv9TAxMQN
bHOs9+CVepOdoqaLCtTalJn9NPRvTLPeFa2mmuzSDXTOUk5lq8uuZyE/+RvY
wrP+ulCAhX58MzE9s6nWr31GVeXmBE39wUtQ+mYqX73EpurzTHdnjT+nEIHu
zOcP8wvdw5ZB/YWJwE3j/Gr3+MVLZ/DAafGE6P6ZDkwn/PjPFd5pjdi9C5PQ
oYtxEHixHbztW1NZPRuumipofdxdsqbFnmTIqnXnBJhXxTt+3lkOoWNXruZn
uVX9tA6wcPPS0O4Z7x7LRAfAzPgZt8wvG+lBZxSO+ZlaGoX5eW5Vlzfy/k79
RjqRvFPBMZeKziq39A+b//6XxTQ/45fdc4DoABw9C82v6wfndzOiN2n3k+Mn
d6jfVfNzUqUu4KgPXTNp5NXZonZ1zmx1lORa1D7y/DghtR9Sx7al9lFX7RMq
PTQkM3d3ZHVWQsk5v8vHebcyOm38K6xv5hOr+X3zBuAXyBO+Odf1CT/laeeA
ulxQ0py5vn6xX59Te/zs5es3J8P3A+tjOI4vFPxYg4P7o1W9AKGlE//7v/+P
NWtFu0rXkCJdC6Vg3RNR3YFHBXT04bGaQ+g6YviN4hP7cC6s+reNSOI3XYY+
+fj3/zlWH+0nf/8P3tlM8Q1epihbYvmejfTqmuXTzhEG+TtVWOtdWr15T/br
M35edF3lfv5DbtXXN9KD396Wl5t3q56o6fyq48pPuOQTOHGr+mn98Z81npj1
jPWQodX8FhbvsMS7S964OeC3qqzVd0700vLo2vJemnN9TJ8/bxfNRuRmg+fK
3Ycs3+jw9l5Sad8BAhLsuH50FwE5nqc67mGVrZPtr89H2YB86C4PkA+qLDqy
Dillsns8GznmX+CMp72inEFbNvSqN13XUxbi46bKUHbGr4IzmzofxNrT/3va
yRg/gnjnmzoj4FnnVX+FD/jsBZablPtulbZvUm7Kl35XnCuqZ9u3J4Ofl1q7
67Owds4pPMaSOLL9GNgx2jluJz/jshOHIWOefcMvdzIRhJzrbWBVsrIpc9td
LHhZJXvDzZgSnNUADz0da/fk+T7+dbB3bL1+au29fnn0pxP89fWrxmhsW/2V
f/vNRYfrN2O8ZjtPw7o+Udh9SuuiNxybyQLH3zn4ZnfvxJwJw5yIhYNDAIu6
lzeSne68ltZlPju19psjap9UR9QGvpYCP6bDtKlBOlA7zWcLVzK+w4Ha19bu
7jsfu3tkmt85Ms2HwA8hQq+6xe9epnxTRbOfjDpwehdo+XRD1q/DHJ4W82K2
ptNwNrXn+MXx8fDw9CLlEmL4eKo+Ekj5TlFdzGVcuyzDf9IbWfcN52+O9tu7
EmNwqHPcp6slrDW2PWTvyfWhbTe0mTekvPZ+N6gKmLWpA5D2uwj9lNNs/mKh
st9yIHb36YuXb9jgoyc7odgm+FpZUZa49mNY0Sbj9fAOVvTmQJMXep5PW2KG
7IlpRZrcpVWXCGhiiGj+goavk/LxdI6xVaW9xykBSMlfQh9eTPjFxS/AWF+q
ifp4W5nWDYZ91s+T15fv/PRlH3zqocnJThAEd8HANVai05ptjW9Uc8hJX5a5
hky017EoqW6JasCT1OBpAzRaf9Jdy+g8LXBV3lZreS302Wx8k3y8xk0PG8jz
fvqiLxTXRuAOC3d+GM1EScWREvx9RAv2A+VIn/ZNh4WQYZqZwBwVb+gLzS1B
mM/1AL3dvd38n5yqYqqqs4qvOwhEw++YSvSTY4g8Ox6CvH9BEeyaaIKPnLxu
sYmjNdYnhHuHr5xBhsxJdkJ2J0P21JwwUzv31q5cU6+rZb70spkhe9bJJSR2
A9Fh8wEDZOYXDMV1FhYOwQo3lI2xsThcf+WLxUOfvUwRD95bS6mHiww7Mm+f
t9BwTCJPGUnPTl62zNqQjbS6UEXnOPLxezVd147rbghofamQL1+dOIO3X9Da
jvpwMc4F+AIVic4rRc6WY3MnU07b2+cTSWfYv7GmSt60c7GnWM3BXlXdb2Q9
pRRSvXY+xt/2Y9/efRA8XKKvIBrM9e98lN7L/Ir/8MsEvs94yq94ebqht3UW
k0/wtsl67FVXu+925P2NyIfO8uN3qHTTicbcsruncinLONhizv0q3ySuE4dv
vSGZE7uvTo5Xq974gWv74TAy2z3sXG3AlKz1XPNd+QNlLh/m6Y2JtqXM1en4
rhvsNCHKaXkwrYvqX3SyyAbZ+yHptdVnWAcTcf8NoWsM+bzcO3zvDtlby8/x
rxkEZudcg6+dqsaEOzhe9HosreqhOlNpyAaC/x/sHKCqhDdL9/wCTqtaVtjR
tw8cdLr3UWv/YlMd8f47Ro/bnbIOD++/Z3x9Afl3pmLC7VtzqzqGV+VO55GB
o9t+ZmUnfqcCBq0xVabl/iO/V3e6lQm4BruyxvGfUD04s/Pk5kPiL/h8fJ6P
x9OdziMDx7/9zCNrdw7oCFv+f/Lzi99b53B6FOz65rjn3Hh1/VQN3KHXXZml
/Jv1LCJsqooCBFVX4L95b1h1kz0dPAX1I3Ry5Zt5ObOUKEpTunNp6z+G9/z8
2q0XQ+S+fhexhNk0T+ezYvo5R0htSupFE5rpOSqh7VKnfFbmxvjU998FrppH
Hln1X2ygmI4QQ7DvVnKnQyre6N6l/CPP1p5psNbx/pi/s2u8duOA/6BkXooZ
2+k8MXDI2888Wi3EUDEDSjgjt/rX/J31oPG329bjV37o3rj98bqViydqkpfL
Capnlrm8/mlZH5y5yMyWwx9umRRdSnununv0w+AJWTxBRmeFs3UKYmgj9KqQ
dLd2wroK9LS4BLP6fEP0zZ69hioka9SEp/lYUdmo1QGnsxxo6+moOWyI59Xh
ECZgupNVz9rclkrAS075OP+opF3CvPJ3yp5UNbmHFxo1DdLsPGm3aB2bFhfV
sj93AppDjz7zEMFN7VTcPzhiSV+VPzr+qa4yr8PeuPOYLlOlz8EF5A+O6HYY
oSkdjnqBcZbGF3IqAUiiXlRLfPR9Nd4EARJn9SEFS8iHj2dv0wlzb9w52rJQ
f+6krdJySr6h4o+dWPkblc8uc1WWk03ALBKAqsToU5VOe3Lz7sFECnOOMWzP
zdCrummn/cBQGrJ45JE54xh/+ooiqFSOAtKwBICpRGlxj1hG9YbfUBwDmuEG
3t0UTz9wB82j+9uq1z0/oNInXb1G29WBCtWJG/95zMvi/W8acz1/fjL4KJU4
Glx+b1E5xZSp3v9wUUz0wdD6m9/nvJ3mdqwjtgS3dDX8TsiuvRo9aPH55hjp
cxNd31T2zYuVd/GzDb2qb6vRryBp1n3PsyGpar9j+Mrf470XfSvSnbyITqqZ
47lJbLO3g1cTXhsn2yvDuhRQfURQO2UOv72eSjwyHZgu8avtOuqcqPdY0Zrm
L7DItXfKp3Bf/N2mKgocjrr7qwsKU8zVR6pusqmNf/vdd64z5fWOK+d9CtnK
6E22rcNXe8fdbJkgjKpEdehKHH+ePu6+OHx2yHqq+vXkujk7gTtYC6v0kP16
UflpMT2H1hmEvNg+0PUbjQre0Vf8YsmhL7ryMuUp+ruZV3WCm4fF5N2G3rM3
6iQ3PFNpMbvaUBJV93Tmv//fFxtJA711JbtP25rzTBolW2lpeCRg78WbPp26
3sm5sZ+EtvPWHQzWKv16TsCItuEU1rNraiXfIcP57//Xf/oU518l8fizJO54
d4/SbVmfbY8Yi6tNSKA2vufcKoita6W5s3tl69OjnUlxzqdnsric/Li19aV1
+yYu69OXRLTeVlEMPPVYZVSpuTqetH5WdI/koEt9QRD14Gjb+vahVeLOMruq
n77Q9UZnxBfKU3SOuPGnT/U7f9y2LpX1DkBU31zO08V5jnNKGyCHopupQy2L
zoy2tmgBOivG4+KSftMUnZLJMOj5RL2tm9rWby6v+xjKS2iOkRzRGcgzfobu
TopJLmkcZleWKe5m7VpfWw8+vN3dtq7e7j7cth6bvz+mvz9+qGn/W3dbh0H5
6vPWkb4dN1e3MotTXBsdMs8U8xn+rAtdKhNOoD4+e/rg4vuzh/jc/9b8s5Vn
1gPqDd6Kb5homRhbj9C+Z/2ThS5+7z60dqwHLv5Gff39lhqXyqofs9vPTRWY
3gQ9s2x6srq31SQ+Dj9RM9TkB/236kb0Os+26hbGeFvTjPU7eoQexI2trm99
hxcvIia1oHSmYVtfysvivJheALeda7KpBynHAM0oz7QKCOx/ZQkMWKqMwMBW
6qw1tTzdEFdRlHpEFzGEasogkTqZ9scf8acXBy9Y9OOPI+s7ZU4fnZ3yWVei
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
MBIJT6miQQjNVICICioaUqIhPgssyWvMmCdIqwK8Ed4f8C3oLp76Pf5XED9N
ocS01kpb28DPacFUUj4ZzAjl8Ou8K3B7fGsA0ClDggMxlTVo1q7hODklDvt+
BqoIdgwzzNPYJ5TGJaQKBlHo7cBUXQXTrJNlPS8KHIhlY3+kopgiJB9MX+Er
uv7L74s/c9rLh0GnbX6J5L6XELGlBVjoAOX0gnwAzgDxgPcGYFLM8/B9kAG4
uybwBAwD8h1AejhBxzDxXQHiBn/uQeQyn/ggBWtpY7ZKoMmZGwMvCVoCUIv1
LwxeEmUSBhYKQLrd6v9yqUaqVnWspjmdIc3rAqW6pJ5dti/b7cqNK2WeqyJE
fbUaO61QfSuh5HyqFvWyzJlAq2+sy2SZIoN1s3yqFtVB63e0KyYuyiveWGIv
nzS13dGZ6rShc+vB3ts0n+mqbsyUcKxunE9uuNV5aLpaCj7m005fTR/6iweX
OZ0ths7px5a/vjrkQ5cfrApUltalGo9N8TNd4avTKyrpNXlX1SSm0oHWKR9n
dYGxbuXGlcdaxad0H8/VDKZ3xq2UztwRY4WPkYui8RhPtNR5AdUtrUs/WmOe
6+LxddVJXaqqyHQZWsuriiX2SFkjH6bM5oeqd2Ys02lxhsHkM4tTeUW0OJmf
p6ZSFhUGLk0R3kVZsiMjEpBoXXGMrtnmrUvSTIXvHzw+erjdHpgHVFCLmn3Y
LXid3Leo1K3lpFova3WtM9kPkrC3c/eueHVb524rYbV1Ww2rW4tXdb6e0qyr
8qkDvj65b+Wo22pG3VYta+u2clm31sm67uu7sw/c2T/9//kH4N51rW6raHVb
La+t24p53VrFqz2HB/UxcFS69REV6dNnTOnJWxhd2FdZ1zfXtSDpNIoPwuk4
pG3roO2dLukotYVQGOMMxRjevo/2V5tsS9po6QO+enS3N+ALertJ8nunfvb1
7I+WqYC8OIZEJ2WX1YFrdT3lylfhK6a6Srz2nFVlSzwAR9UCLvCcY6UPn6iK
ZUrTuU+fPp4JfZC23fiSVplf7W7NGyp3WB//9/uqzj5/TwdqVUPBzSkoM3PE
Ov3BAIiOktcfM6XKnFPgCLk42kHXf2yXWq78bOM/B7lYMxetrp0qcWaOFZOq
forglTgzNUL1CWqLt1aoh/pS+2ndGB+XRbfF+kiOT5/oiI2m7Oe7CZ+e2WZc
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
JRcQw2liL1h3RBaQhztE3exUSDmtxK78zC7hMH9mA82SCcFNXn7u/Tzpdrsn
yZ/y6sDafeSdi8G3txfnpyirCd8/XGSt59enf9357MvF2be3v/9l98vtAWcc
8NXs4c9sPprZo3eXOx7dDC773/9+3Hp6fX71te9f/fzcw/a8rH6+5uGH762H
F6LTs+zi6io9bjNAkdiuudOnp38893hj6v6Y2YpnKBKP2EKT1uP25lqPBy/M
Pui1nosNdaggP7PBuML8zDBfYX5mSFyZfmYYIzzBWPAkO47dHhJP1Fd8YjXp
f0vYffvCmHMCrfX8hWF99NbBwaTD9nDhQFyGN2TBnJ+bGc2+F3dlcc/rCPas
u+J/dR1eJLYKT3xuNlx/YPOQixok/PzeTLcB14jFI3MBWCb6VIhbD51484Lp
htUPC2lCv2TTHOlRjc6QsbvP0lCKyoDDx7CzlsVoDcTs2XLt8YnvTfpbvliD
hb2j3hEnS9ruropi1Q175tsjS5jzOE5wIUqkoQpyuqqcE3usYOKif/pd/guC
OqumQqCrFWS/L+8gHkTiI8wwYTtescQIKwDlqz/KO45iQlOTWVigy9iRr/BY
2pdlOHxRlBAfIH8Bm+hFwQwSh2nMUWrBkX1clf/gnwZXeomGaK90o1WBb9ZV
05ztm66JOlj1ZF7yuHcAh8i/v/t4QAxnw4rZrFyir01TpFMhz7KpEqjGgbnz
uWaIIfB83/ZEKJfPrDlTiN2EdzaJfeeO+8lcWdxZkZeXfaywNDdZaCSz/f1D
kdub5WQUkg1t562B5yJbJpKghJXY+spzTOWBfJKlBXSaxHFLtzkFM3ssauOV
9gHkrWlla2vWhfpX170PvgeiYtmPnOTRZcIfmH9oPB8LFGZbGzJqTYXHGFUz
+jeKs9UXJU39zGK8l9pf/ikUHMssp9//dXX9TVUh0SnRUF5M0kwFIEqBQlqO
hFPZdNia2uL0/PBRpH2PsZ5Z0R8ZZKHSLWORITJ19rprv87dH+79D3rbZaZT
uwIA

-->

</rfc>
