github.com/consensys/gnark-crypto@v0.14.0/ecc/bw6-756/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/bw6-756/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 bw6-756/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("35895") 56 curveParams.D.SetString("35894") 57 curveParams.Cofactor.SetString("8") 58 curveParams.Order.SetString("75656025759413271466656060197725120092480961471365614219134998880569790930794516726065877484428941069706901665493", 10) 59 60 curveParams.Base.X.SetString("357240753431396842603421262238241571158569743053156052278371293545344505472364896271378029423975465332156840775830") 61 curveParams.Base.Y.SetString("279345325880910540799960837653138904956852780817349960193932651092957355032339063742900216468694143617372745972501") 62 } 63 64 // mulByA multiplies fr.Element by curveParams.A 65 func mulByA(x *fr.Element) { 66 x.Mul(x, &curveParams.A) 67 }