package edwards_curve import ( "math/big" ) var ( qEd25519, rEd25519 *big.Int ) func init() { // https://neuromancer.sk/std/other/Ed25519 qEd25519 = newBigInt("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed") rEd25519 = newBigInt("1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed") } type Ed25519 struct{} func (fp Ed25519) NbLimbs() uint { return 4 } func (fp Ed25519) BitsPerLimb() uint { return 64 } func (fp Ed25519) IsPrime() bool { return true } func (fp Ed25519) Modulus() *big.Int { return qEd25519 } func (fp Ed25519) Generator() (*big.Int, *big.Int) { return newBigInt("216936D3CD6E53FEC0A4E231FDD6DC5C692CC7609525A7B2C9562D608F25D51A"), newBigInt("6666666666666666666666666666666666666666666666666666666666666658") } type Ed25519Scalars struct{} func (fp Ed25519Scalars) NbLimbs() uint { return 4 } func (fp Ed25519Scalars) BitsPerLimb() uint { return 64 } func (fp Ed25519Scalars) IsPrime() bool { return true } func (fp Ed25519Scalars) Modulus() *big.Int { return rEd25519 }