github.com/consensys/gnark-crypto@v0.14.0/ecc/bw6-761/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-761/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-761/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("79743") 57 curveParams.Cofactor.SetString("8") 58 curveParams.Order.SetString("32333053251621136751331591711861691692049189094364332567435817881934511297123972799646723302813083835942624121493", 10) 59 60 curveParams.Base.X.SetString("109887223397525145051017418760180386187632078445902299543670312117371514695798874370143656894667315818446285582389") 61 curveParams.Base.Y.SetString("31146823455109675839494591101665406662142618451815824757336761504421066243585705807124836638254810186490790034654") 62 } 63 64 // mulByA multiplies fr.Element by curveParams.A 65 func mulByA(x *fr.Element) { 66 x.Neg(x) 67 }