gnark-plonky2-verifier/edwards_curve/edparams.go
edwards_curve/edparams.goRaw
1package edwards_curve
2
3import (
4 "math/big"
5)
6
7var (
8 qEd25519, rEd25519 *big.Int
9)
10
11func init() {
12 // https://neuromancer.sk/std/other/Ed25519
13 qEd25519, _ = new(big.Int).SetString("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed", 16)
14 n, _ := new(big.Int).SetString("1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed", 16)
15 // TODO: is this ok?
16 // h := big.NewInt(8)
17 // rEd25519 = new(big.Int).Mul(n, h)
18 rEd25519 = n
19}
20
21type Ed25519 struct{}
22
23func (fp Ed25519) NbLimbs() uint { return 4 }
24func (fp Ed25519) BitsPerLimb() uint { return 64 }
25func (fp Ed25519) IsPrime() bool { return true }
26func (fp Ed25519) Modulus() *big.Int { return qEd25519 }
27
28type Ed25519Scalars struct{}
29
30func (fp Ed25519Scalars) NbLimbs() uint { return 4 }
31func (fp Ed25519Scalars) BitsPerLimb() uint { return 64 }
32func (fp Ed25519Scalars) IsPrime() bool { return true }
33func (fp Ed25519Scalars) Modulus() *big.Int { return rEd25519 }
34