github.com/consensys/gnark-crypto@v0.14.0/ecc/bls12-381/twistededwards/curve.go (about) 1 // Copyright 2020 Consensys Software Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Code generated by consensys/gnark-crypto DO NOT EDIT 16 17 package twistededwards 18 19 import ( 20 "math/big" 21 "sync" 22 23 "github.com/consensys/gnark-crypto/ecc/bls12-381/fr" 24 ) 25 26 // CurveParams curve parameters: ax^2 + y^2 = 1 + d*x^2*y^2 27 type CurveParams struct { 28 A, D fr.Element 29 Cofactor fr.Element 30 Order big.Int 31 Base PointAffine 32 } 33 34 // GetEdwardsCurve returns the twisted Edwards curve on bls12-381/Fr 35 func GetEdwardsCurve() CurveParams { 36 initOnce.Do(initCurveParams) 37 // copy to keep Order private 38 var res CurveParams 39 40 res.A.Set(&curveParams.A) 41 res.D.Set(&curveParams.D) 42 res.Cofactor.Set(&curveParams.Cofactor) 43 res.Order.Set(&curveParams.Order) 44 res.Base.Set(&curveParams.Base) 45 46 return res 47 } 48 49 var ( 50 initOnce sync.Once 51 curveParams CurveParams 52 ) 53 54 func initCurveParams() { 55 curveParams.A.SetString("-1") 56 curveParams.D.SetString("19257038036680949359750312669786877991949435402254120286184196891950884077233") 57 curveParams.Cofactor.SetString("8") 58 curveParams.Order.SetString("6554484396890773809930967563523245729705921265872317281365359162392183254199", 10) 59 60 curveParams.Base.X.SetString("23426137002068529236790192115758361610982344002369094106619281483467893291614") 61 curveParams.Base.Y.SetString("39325435222430376843701388596190331198052476467368316772266670064146548432123") 62 } 63 64 // mulByA multiplies fr.Element by curveParams.A 65 func mulByA(x *fr.Element) { 66 x.Neg(x) 67 }