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