packages feed

elliptic-curve 0.2.2 → 0.3.0

raw patch · 228 files changed

+13275/−13171 lines, 228 filesdep +elliptic-curvedep +groupsdep −arithmoidep ~basedep ~galois-fielddep ~protoludePVP ok

version bump matches the API change (PVP)

Dependencies added: elliptic-curve, groups

Dependencies removed: arithmoi

Dependency ranges changed: base, galois-field, protolude

API changes (from Hackage documentation)

- Curve: -- | Curve point.
- Curve: Affine :: Coordinates
- Curve: Binary :: Form
- Curve: Edwards :: Form
- Curve: Jacobian :: Coordinates
- Curve: Montgomery :: Form
- Curve: Projective :: Coordinates
- Curve: Weierstrass :: Form
- Curve: add :: Group g => g -> g -> g
- Curve: char :: Curve f c e q r => Point f c e q r -> Integer
- Curve: class (GaloisField q, PrimeField' r, Group (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where {
- Curve: class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g
- Curve: class GaloisField k => PrimeField' k
- Curve: cof :: Curve f c e q r => Point f c e q r -> Integer
- Curve: data Coordinates
- Curve: data Form
- Curve: data family Point f c e q r :: *;
- Curve: dbl :: Group g => g -> g
- Curve: def :: Group g => g -> Bool
- Curve: disc :: Curve f c e q r => Point f c e q r -> q
- Curve: fromA :: Curve f c e q r => Point f 'Affine e q r -> Point f c e q r
- Curve: gen :: Group g => g
- Curve: id :: Group g => g
- Curve: instance GHC.TypeNats.KnownNat p => Curve.PrimeField' (PrimeField.PrimeField p)
- Curve: instance forall k (f :: Curve.Form) (c :: Curve.Coordinates) (e :: k) q r. Curve.Curve f c e q r => GHC.Base.Monoid (Curve.Point f c e q r)
- Curve: instance forall k (f :: Curve.Form) (c :: Curve.Coordinates) (e :: k) q r. Curve.Curve f c e q r => GHC.Base.Semigroup (Curve.Point f c e q r)
- Curve: instance forall k (f :: Curve.Form) (c :: Curve.Coordinates) (e :: k) q r. Curve.Curve f c e q r => System.Random.Random (Curve.Point f c e q r)
- Curve: instance forall k (f :: Curve.Form) (c :: Curve.Coordinates) (e :: k) q r. Curve.Curve f c e q r => Test.QuickCheck.Arbitrary.Arbitrary (Curve.Point f c e q r)
- Curve: inv :: Group g => g -> g
- Curve: mul :: Curve f c e q r => Point f c e q r -> r -> Point f c e q r
- Curve: mul' :: Group g => g -> Integer -> g
- Curve: order :: Group g => g -> Integer
- Curve: point :: Curve f c e q r => q -> q -> Maybe (Point f c e q r)
- Curve: pointX :: Curve f c e q r => q -> Maybe (Point f c e q r)
- Curve: rnd :: (Group g, MonadRandom m) => m g
- Curve: toA :: Curve f c e q r => Point f c e q r -> Point f 'Affine e q r
- Curve: toInt' :: PrimeField' k => k -> Integer
- Curve: yX :: Curve f c e q r => Point f c e q r -> q -> Maybe q
- Curve: }
- Curve.Binary: -- | Curve point.
- Curve.Binary: Affine :: Coordinates
- Curve.Binary: Binary :: Form
- Curve.Binary: Edwards :: Form
- Curve.Binary: Jacobian :: Coordinates
- Curve.Binary: Montgomery :: Form
- Curve.Binary: Projective :: Coordinates
- Curve.Binary: Weierstrass :: Form
- Curve.Binary: a_ :: BCurve c e q r => BPoint c e q r -> q
- Curve.Binary: add :: Group g => g -> g -> g
- Curve.Binary: b_ :: BCurve c e q r => BPoint c e q r -> q
- Curve.Binary: char :: Curve f c e q r => Point f c e q r -> Integer
- Curve.Binary: class BCurve 'Affine e q r => BACurve e q r
- Curve.Binary: class (GaloisField q, PrimeField' r, Curve 'Binary c e q r) => BCurve c e q r
- Curve.Binary: class BCurve 'Projective e q r => BPCurve e q r
- Curve.Binary: class (GaloisField q, PrimeField' r, Group (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where {
- Curve.Binary: class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g
- Curve.Binary: class GaloisField k => PrimeField' k
- Curve.Binary: cof :: Curve f c e q r => Point f c e q r -> Integer
- Curve.Binary: data Coordinates
- Curve.Binary: data Form
- Curve.Binary: data family Point f c e q r :: *;
- Curve.Binary: dbl :: Group g => g -> g
- Curve.Binary: def :: Group g => g -> Bool
- Curve.Binary: disc :: Curve f c e q r => Point f c e q r -> q
- Curve.Binary: fromA :: Curve f c e q r => Point f 'Affine e q r -> Point f c e q r
- Curve.Binary: gA_ :: BACurve e q r => BAPoint e q r
- Curve.Binary: gP_ :: BPCurve e q r => BPPoint e q r
- Curve.Binary: gen :: Group g => g
- Curve.Binary: h_ :: BCurve c e q r => BPoint c e q r -> Integer
- Curve.Binary: id :: Group g => g
- Curve.Binary: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Curve.Point 'Curve.Binary 'Curve.Affine e q r)
- Curve.Binary: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Curve.Point 'Curve.Binary 'Curve.Projective e q r)
- Curve.Binary: instance forall k (e :: k) q r. Curve.Binary.BACurve e q r => Curve.Curve 'Curve.Binary 'Curve.Affine e q r
- Curve.Binary: instance forall k (e :: k) q r. Curve.Binary.BACurve e q r => Group.Group (Curve.Binary.BAPoint e q r)
- Curve.Binary: instance forall k (e :: k) q r. Curve.Binary.BACurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Curve.Binary.BAPoint e q r)
- Curve.Binary: instance forall k (e :: k) q r. Curve.Binary.BPCurve e q r => Curve.Curve 'Curve.Binary 'Curve.Projective e q r
- Curve.Binary: instance forall k (e :: k) q r. Curve.Binary.BPCurve e q r => GHC.Classes.Eq (Curve.Binary.BPPoint e q r)
- Curve.Binary: instance forall k (e :: k) q r. Curve.Binary.BPCurve e q r => Group.Group (Curve.Binary.BPPoint e q r)
- Curve.Binary: instance forall k (e :: k) q r. Curve.Binary.BPCurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Curve.Binary.BPPoint e q r)
- Curve.Binary: instance forall k (e :: k) q r. GHC.Classes.Eq q => GHC.Classes.Eq (Curve.Point 'Curve.Binary 'Curve.Affine e q r)
- Curve.Binary: instance forall k (e :: k) q r. GHC.Generics.Generic (Curve.Point 'Curve.Binary 'Curve.Affine e q r)
- Curve.Binary: instance forall k (e :: k) q r. GHC.Generics.Generic (Curve.Point 'Curve.Binary 'Curve.Projective e q r)
- Curve.Binary: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Curve.Point 'Curve.Binary 'Curve.Affine e q r)
- Curve.Binary: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Curve.Point 'Curve.Binary 'Curve.Projective e q r)
- Curve.Binary: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Curve.Point 'Curve.Binary 'Curve.Affine e q r)
- Curve.Binary: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Curve.Point 'Curve.Binary 'Curve.Projective e q r)
- Curve.Binary: inv :: Group g => g -> g
- Curve.Binary: mul :: Curve f c e q r => Point f c e q r -> r -> Point f c e q r
- Curve.Binary: mul' :: Group g => g -> Integer -> g
- Curve.Binary: order :: Group g => g -> Integer
- Curve.Binary: p_ :: BCurve c e q r => BPoint c e q r -> Integer
- Curve.Binary: point :: Curve f c e q r => q -> q -> Maybe (Point f c e q r)
- Curve.Binary: pointX :: Curve f c e q r => q -> Maybe (Point f c e q r)
- Curve.Binary: r_ :: BCurve c e q r => BPoint c e q r -> Integer
- Curve.Binary: rnd :: (Group g, MonadRandom m) => m g
- Curve.Binary: toA :: Curve f c e q r => Point f c e q r -> Point f 'Affine e q r
- Curve.Binary: type BAPoint = BPoint 'Affine
- Curve.Binary: type BPPoint = BPoint 'Projective
- Curve.Binary: type BPoint = Point 'Binary
- Curve.Binary: x_ :: BCurve c e q r => BPoint c e q r -> q
- Curve.Binary: yX :: Curve f c e q r => Point f c e q r -> q -> Maybe q
- Curve.Binary: y_ :: BCurve c e q r => BPoint c e q r -> q
- Curve.Binary: }
- Curve.Binary.SECT113R1: _a :: F2m
- Curve.Binary.SECT113R1: _b :: F2m
- Curve.Binary.SECT113R1: _h :: Integer
- Curve.Binary.SECT113R1: _p :: Integer
- Curve.Binary.SECT113R1: _r :: Integer
- Curve.Binary.SECT113R1: _x :: F2m
- Curve.Binary.SECT113R1: _y :: F2m
- Curve.Binary.SECT113R1: data SECT113R1
- Curve.Binary.SECT113R1: gA :: PA
- Curve.Binary.SECT113R1: gP :: PP
- Curve.Binary.SECT113R1: instance Curve.Binary.BACurve Curve.Binary.SECT113R1.SECT113R1 Curve.Binary.SECT113R1.F2m Curve.Binary.SECT113R1.Fr
- Curve.Binary.SECT113R1: instance Curve.Binary.BPCurve Curve.Binary.SECT113R1.SECT113R1 Curve.Binary.SECT113R1.F2m Curve.Binary.SECT113R1.Fr
- Curve.Binary.SECT113R1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT113R1.SECT113R1 Curve.Binary.SECT113R1.F2m Curve.Binary.SECT113R1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT113R1.SECT113R1 Curve.Binary.SECT113R1.F2m Curve.Binary.SECT113R1.Fr
- Curve.Binary.SECT113R1: type F2m = BinaryField 10384593717069655257060992658440705
- Curve.Binary.SECT113R1: type Fr = PrimeField 5192296858534827689835882578830703
- Curve.Binary.SECT113R1: type PA = BAPoint SECT113R1 F2m Fr
- Curve.Binary.SECT113R1: type PP = BPPoint SECT113R1 F2m Fr
- Curve.Binary.SECT113R2: _a :: F2m
- Curve.Binary.SECT113R2: _b :: F2m
- Curve.Binary.SECT113R2: _h :: Integer
- Curve.Binary.SECT113R2: _p :: Integer
- Curve.Binary.SECT113R2: _r :: Integer
- Curve.Binary.SECT113R2: _x :: F2m
- Curve.Binary.SECT113R2: _y :: F2m
- Curve.Binary.SECT113R2: data SECT113R2
- Curve.Binary.SECT113R2: gA :: PA
- Curve.Binary.SECT113R2: gP :: PP
- Curve.Binary.SECT113R2: instance Curve.Binary.BACurve Curve.Binary.SECT113R2.SECT113R2 Curve.Binary.SECT113R2.F2m Curve.Binary.SECT113R2.Fr
- Curve.Binary.SECT113R2: instance Curve.Binary.BPCurve Curve.Binary.SECT113R2.SECT113R2 Curve.Binary.SECT113R2.F2m Curve.Binary.SECT113R2.Fr
- Curve.Binary.SECT113R2: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT113R2.SECT113R2 Curve.Binary.SECT113R2.F2m Curve.Binary.SECT113R2.Fr => Curve.Binary.BCurve c Curve.Binary.SECT113R2.SECT113R2 Curve.Binary.SECT113R2.F2m Curve.Binary.SECT113R2.Fr
- Curve.Binary.SECT113R2: type F2m = BinaryField 10384593717069655257060992658440705
- Curve.Binary.SECT113R2: type Fr = PrimeField 5192296858534827702972497909952403
- Curve.Binary.SECT113R2: type PA = BAPoint SECT113R2 F2m Fr
- Curve.Binary.SECT113R2: type PP = BPPoint SECT113R2 F2m Fr
- Curve.Binary.SECT131R1: _a :: F2m
- Curve.Binary.SECT131R1: _b :: F2m
- Curve.Binary.SECT131R1: _h :: Integer
- Curve.Binary.SECT131R1: _p :: Integer
- Curve.Binary.SECT131R1: _r :: Integer
- Curve.Binary.SECT131R1: _x :: F2m
- Curve.Binary.SECT131R1: _y :: F2m
- Curve.Binary.SECT131R1: data SECT131R1
- Curve.Binary.SECT131R1: gA :: PA
- Curve.Binary.SECT131R1: gP :: PP
- Curve.Binary.SECT131R1: instance Curve.Binary.BACurve Curve.Binary.SECT131R1.SECT131R1 Curve.Binary.SECT131R1.F2m Curve.Binary.SECT131R1.Fr
- Curve.Binary.SECT131R1: instance Curve.Binary.BPCurve Curve.Binary.SECT131R1.SECT131R1 Curve.Binary.SECT131R1.F2m Curve.Binary.SECT131R1.Fr
- Curve.Binary.SECT131R1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT131R1.SECT131R1 Curve.Binary.SECT131R1.F2m Curve.Binary.SECT131R1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT131R1.SECT131R1 Curve.Binary.SECT131R1.F2m Curve.Binary.SECT131R1.Fr
- Curve.Binary.SECT131R1: type F2m = BinaryField 2722258935367507707706996859454145691917
- Curve.Binary.SECT131R1: type Fr = PrimeField 1361129467683753853893932755685365560653
- Curve.Binary.SECT131R1: type PA = BAPoint SECT131R1 F2m Fr
- Curve.Binary.SECT131R1: type PP = BPPoint SECT131R1 F2m Fr
- Curve.Binary.SECT131R2: _a :: F2m
- Curve.Binary.SECT131R2: _b :: F2m
- Curve.Binary.SECT131R2: _h :: Integer
- Curve.Binary.SECT131R2: _p :: Integer
- Curve.Binary.SECT131R2: _r :: Integer
- Curve.Binary.SECT131R2: _x :: F2m
- Curve.Binary.SECT131R2: _y :: F2m
- Curve.Binary.SECT131R2: data SECT131R2
- Curve.Binary.SECT131R2: gA :: PA
- Curve.Binary.SECT131R2: gP :: PP
- Curve.Binary.SECT131R2: instance Curve.Binary.BACurve Curve.Binary.SECT131R2.SECT131R2 Curve.Binary.SECT131R2.F2m Curve.Binary.SECT131R2.Fr
- Curve.Binary.SECT131R2: instance Curve.Binary.BPCurve Curve.Binary.SECT131R2.SECT131R2 Curve.Binary.SECT131R2.F2m Curve.Binary.SECT131R2.Fr
- Curve.Binary.SECT131R2: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT131R2.SECT131R2 Curve.Binary.SECT131R2.F2m Curve.Binary.SECT131R2.Fr => Curve.Binary.BCurve c Curve.Binary.SECT131R2.SECT131R2 Curve.Binary.SECT131R2.F2m Curve.Binary.SECT131R2.Fr
- Curve.Binary.SECT131R2: type F2m = BinaryField 2722258935367507707706996859454145691917
- Curve.Binary.SECT131R2: type Fr = PrimeField 1361129467683753853879535043412812867983
- Curve.Binary.SECT131R2: type PA = BAPoint SECT131R2 F2m Fr
- Curve.Binary.SECT131R2: type PP = BPPoint SECT131R2 F2m Fr
- Curve.Binary.SECT163K1: _a :: F2m
- Curve.Binary.SECT163K1: _b :: F2m
- Curve.Binary.SECT163K1: _h :: Integer
- Curve.Binary.SECT163K1: _p :: Integer
- Curve.Binary.SECT163K1: _r :: Integer
- Curve.Binary.SECT163K1: _x :: F2m
- Curve.Binary.SECT163K1: _y :: F2m
- Curve.Binary.SECT163K1: data SECT163K1
- Curve.Binary.SECT163K1: gA :: PA
- Curve.Binary.SECT163K1: gP :: PP
- Curve.Binary.SECT163K1: instance Curve.Binary.BACurve Curve.Binary.SECT163K1.SECT163K1 Curve.Binary.SECT163K1.F2m Curve.Binary.SECT163K1.Fr
- Curve.Binary.SECT163K1: instance Curve.Binary.BPCurve Curve.Binary.SECT163K1.SECT163K1 Curve.Binary.SECT163K1.F2m Curve.Binary.SECT163K1.Fr
- Curve.Binary.SECT163K1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT163K1.SECT163K1 Curve.Binary.SECT163K1.F2m Curve.Binary.SECT163K1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT163K1.SECT163K1 Curve.Binary.SECT163K1.F2m Curve.Binary.SECT163K1.Fr
- Curve.Binary.SECT163K1: type F2m = BinaryField 11692013098647223345629478661730264157247460344009
- Curve.Binary.SECT163K1: type Fr = PrimeField 5846006549323611672814741753598448348329118574063
- Curve.Binary.SECT163K1: type PA = BAPoint SECT163K1 F2m Fr
- Curve.Binary.SECT163K1: type PP = BPPoint SECT163K1 F2m Fr
- Curve.Binary.SECT163R1: _a :: F2m
- Curve.Binary.SECT163R1: _b :: F2m
- Curve.Binary.SECT163R1: _h :: Integer
- Curve.Binary.SECT163R1: _p :: Integer
- Curve.Binary.SECT163R1: _r :: Integer
- Curve.Binary.SECT163R1: _x :: F2m
- Curve.Binary.SECT163R1: _y :: F2m
- Curve.Binary.SECT163R1: data SECT163R1
- Curve.Binary.SECT163R1: gA :: PA
- Curve.Binary.SECT163R1: gP :: PP
- Curve.Binary.SECT163R1: instance Curve.Binary.BACurve Curve.Binary.SECT163R1.SECT163R1 Curve.Binary.SECT163R1.F2m Curve.Binary.SECT163R1.Fr
- Curve.Binary.SECT163R1: instance Curve.Binary.BPCurve Curve.Binary.SECT163R1.SECT163R1 Curve.Binary.SECT163R1.F2m Curve.Binary.SECT163R1.Fr
- Curve.Binary.SECT163R1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT163R1.SECT163R1 Curve.Binary.SECT163R1.F2m Curve.Binary.SECT163R1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT163R1.SECT163R1 Curve.Binary.SECT163R1.F2m Curve.Binary.SECT163R1.Fr
- Curve.Binary.SECT163R1: type F2m = BinaryField 11692013098647223345629478661730264157247460344009
- Curve.Binary.SECT163R1: type Fr = PrimeField 5846006549323611672814738465098798981304420411291
- Curve.Binary.SECT163R1: type PA = BAPoint SECT163R1 F2m Fr
- Curve.Binary.SECT163R1: type PP = BPPoint SECT163R1 F2m Fr
- Curve.Binary.SECT163R2: _a :: F2m
- Curve.Binary.SECT163R2: _b :: F2m
- Curve.Binary.SECT163R2: _h :: Integer
- Curve.Binary.SECT163R2: _p :: Integer
- Curve.Binary.SECT163R2: _r :: Integer
- Curve.Binary.SECT163R2: _x :: F2m
- Curve.Binary.SECT163R2: _y :: F2m
- Curve.Binary.SECT163R2: data SECT163R2
- Curve.Binary.SECT163R2: gA :: PA
- Curve.Binary.SECT163R2: gP :: PP
- Curve.Binary.SECT163R2: instance Curve.Binary.BACurve Curve.Binary.SECT163R2.SECT163R2 Curve.Binary.SECT163R2.F2m Curve.Binary.SECT163R2.Fr
- Curve.Binary.SECT163R2: instance Curve.Binary.BPCurve Curve.Binary.SECT163R2.SECT163R2 Curve.Binary.SECT163R2.F2m Curve.Binary.SECT163R2.Fr
- Curve.Binary.SECT163R2: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT163R2.SECT163R2 Curve.Binary.SECT163R2.F2m Curve.Binary.SECT163R2.Fr => Curve.Binary.BCurve c Curve.Binary.SECT163R2.SECT163R2 Curve.Binary.SECT163R2.F2m Curve.Binary.SECT163R2.Fr
- Curve.Binary.SECT163R2: type F2m = BinaryField 11692013098647223345629478661730264157247460344009
- Curve.Binary.SECT163R2: type Fr = PrimeField 5846006549323611672814742442876390689256843201587
- Curve.Binary.SECT163R2: type PA = BAPoint SECT163R2 F2m Fr
- Curve.Binary.SECT163R2: type PP = BPPoint SECT163R2 F2m Fr
- Curve.Binary.SECT193R1: _a :: F2m
- Curve.Binary.SECT193R1: _b :: F2m
- Curve.Binary.SECT193R1: _h :: Integer
- Curve.Binary.SECT193R1: _p :: Integer
- Curve.Binary.SECT193R1: _r :: Integer
- Curve.Binary.SECT193R1: _x :: F2m
- Curve.Binary.SECT193R1: _y :: F2m
- Curve.Binary.SECT193R1: data SECT193R1
- Curve.Binary.SECT193R1: gA :: PA
- Curve.Binary.SECT193R1: gP :: PP
- Curve.Binary.SECT193R1: instance Curve.Binary.BACurve Curve.Binary.SECT193R1.SECT193R1 Curve.Binary.SECT193R1.F2m Curve.Binary.SECT193R1.Fr
- Curve.Binary.SECT193R1: instance Curve.Binary.BPCurve Curve.Binary.SECT193R1.SECT193R1 Curve.Binary.SECT193R1.F2m Curve.Binary.SECT193R1.Fr
- Curve.Binary.SECT193R1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT193R1.SECT193R1 Curve.Binary.SECT193R1.F2m Curve.Binary.SECT193R1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT193R1.SECT193R1 Curve.Binary.SECT193R1.F2m Curve.Binary.SECT193R1.Fr
- Curve.Binary.SECT193R1: type F2m = BinaryField 12554203470773361527671578846415332832204710888928069058561
- Curve.Binary.SECT193R1: type Fr = PrimeField 6277101735386680763835789423269548053691575186051040197193
- Curve.Binary.SECT193R1: type PA = BAPoint SECT193R1 F2m Fr
- Curve.Binary.SECT193R1: type PP = BPPoint SECT193R1 F2m Fr
- Curve.Binary.SECT193R2: _a :: F2m
- Curve.Binary.SECT193R2: _b :: F2m
- Curve.Binary.SECT193R2: _h :: Integer
- Curve.Binary.SECT193R2: _p :: Integer
- Curve.Binary.SECT193R2: _r :: Integer
- Curve.Binary.SECT193R2: _x :: F2m
- Curve.Binary.SECT193R2: _y :: F2m
- Curve.Binary.SECT193R2: data SECT193R2
- Curve.Binary.SECT193R2: gA :: PA
- Curve.Binary.SECT193R2: gP :: PP
- Curve.Binary.SECT193R2: instance Curve.Binary.BACurve Curve.Binary.SECT193R2.SECT193R2 Curve.Binary.SECT193R2.F2m Curve.Binary.SECT193R2.Fr
- Curve.Binary.SECT193R2: instance Curve.Binary.BPCurve Curve.Binary.SECT193R2.SECT193R2 Curve.Binary.SECT193R2.F2m Curve.Binary.SECT193R2.Fr
- Curve.Binary.SECT193R2: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT193R2.SECT193R2 Curve.Binary.SECT193R2.F2m Curve.Binary.SECT193R2.Fr => Curve.Binary.BCurve c Curve.Binary.SECT193R2.SECT193R2 Curve.Binary.SECT193R2.F2m Curve.Binary.SECT193R2.Fr
- Curve.Binary.SECT193R2: type F2m = BinaryField 12554203470773361527671578846415332832204710888928069058561
- Curve.Binary.SECT193R2: type Fr = PrimeField 6277101735386680763835789423314955362437298222279840143829
- Curve.Binary.SECT193R2: type PA = BAPoint SECT193R2 F2m Fr
- Curve.Binary.SECT193R2: type PP = BPPoint SECT193R2 F2m Fr
- Curve.Binary.SECT233K1: _a :: F2m
- Curve.Binary.SECT233K1: _b :: F2m
- Curve.Binary.SECT233K1: _h :: Integer
- Curve.Binary.SECT233K1: _p :: Integer
- Curve.Binary.SECT233K1: _r :: Integer
- Curve.Binary.SECT233K1: _x :: F2m
- Curve.Binary.SECT233K1: _y :: F2m
- Curve.Binary.SECT233K1: data SECT233K1
- Curve.Binary.SECT233K1: gA :: PA
- Curve.Binary.SECT233K1: gP :: PP
- Curve.Binary.SECT233K1: instance Curve.Binary.BACurve Curve.Binary.SECT233K1.SECT233K1 Curve.Binary.SECT233K1.F2m Curve.Binary.SECT233K1.Fr
- Curve.Binary.SECT233K1: instance Curve.Binary.BPCurve Curve.Binary.SECT233K1.SECT233K1 Curve.Binary.SECT233K1.F2m Curve.Binary.SECT233K1.Fr
- Curve.Binary.SECT233K1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT233K1.SECT233K1 Curve.Binary.SECT233K1.F2m Curve.Binary.SECT233K1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT233K1.SECT233K1 Curve.Binary.SECT233K1.F2m Curve.Binary.SECT233K1.Fr
- Curve.Binary.SECT233K1: type F2m = BinaryField 13803492693581127574869511724554050904902217944359662576256527028453377
- Curve.Binary.SECT233K1: type Fr = PrimeField 3450873173395281893717377931138512760570940988862252126328087024741343
- Curve.Binary.SECT233K1: type PA = BAPoint SECT233K1 F2m Fr
- Curve.Binary.SECT233K1: type PP = BPPoint SECT233K1 F2m Fr
- Curve.Binary.SECT233R1: _a :: F2m
- Curve.Binary.SECT233R1: _b :: F2m
- Curve.Binary.SECT233R1: _h :: Integer
- Curve.Binary.SECT233R1: _p :: Integer
- Curve.Binary.SECT233R1: _r :: Integer
- Curve.Binary.SECT233R1: _x :: F2m
- Curve.Binary.SECT233R1: _y :: F2m
- Curve.Binary.SECT233R1: data SECT233R1
- Curve.Binary.SECT233R1: gA :: PA
- Curve.Binary.SECT233R1: gP :: PP
- Curve.Binary.SECT233R1: instance Curve.Binary.BACurve Curve.Binary.SECT233R1.SECT233R1 Curve.Binary.SECT233R1.F2m Curve.Binary.SECT233R1.Fr
- Curve.Binary.SECT233R1: instance Curve.Binary.BPCurve Curve.Binary.SECT233R1.SECT233R1 Curve.Binary.SECT233R1.F2m Curve.Binary.SECT233R1.Fr
- Curve.Binary.SECT233R1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT233R1.SECT233R1 Curve.Binary.SECT233R1.F2m Curve.Binary.SECT233R1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT233R1.SECT233R1 Curve.Binary.SECT233R1.F2m Curve.Binary.SECT233R1.Fr
- Curve.Binary.SECT233R1: type F2m = BinaryField 13803492693581127574869511724554050904902217944359662576256527028453377
- Curve.Binary.SECT233R1: type Fr = PrimeField 6901746346790563787434755862277025555839812737345013555379383634485463
- Curve.Binary.SECT233R1: type PA = BAPoint SECT233R1 F2m Fr
- Curve.Binary.SECT233R1: type PP = BPPoint SECT233R1 F2m Fr
- Curve.Binary.SECT239K1: _a :: F2m
- Curve.Binary.SECT239K1: _b :: F2m
- Curve.Binary.SECT239K1: _h :: Integer
- Curve.Binary.SECT239K1: _p :: Integer
- Curve.Binary.SECT239K1: _r :: Integer
- Curve.Binary.SECT239K1: _x :: F2m
- Curve.Binary.SECT239K1: _y :: F2m
- Curve.Binary.SECT239K1: data SECT239K1
- Curve.Binary.SECT239K1: gA :: PA
- Curve.Binary.SECT239K1: gP :: PP
- Curve.Binary.SECT239K1: instance Curve.Binary.BACurve Curve.Binary.SECT239K1.SECT239K1 Curve.Binary.SECT239K1.F2m Curve.Binary.SECT239K1.Fr
- Curve.Binary.SECT239K1: instance Curve.Binary.BPCurve Curve.Binary.SECT239K1.SECT239K1 Curve.Binary.SECT239K1.F2m Curve.Binary.SECT239K1.Fr
- Curve.Binary.SECT239K1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT239K1.SECT239K1 Curve.Binary.SECT239K1.F2m Curve.Binary.SECT239K1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT239K1.SECT239K1 Curve.Binary.SECT239K1.F2m Curve.Binary.SECT239K1.Fr
- Curve.Binary.SECT239K1: type F2m = BinaryField 883423532389192164791649115746868590639471499359017658131558014629445633
- Curve.Binary.SECT239K1: type Fr = PrimeField 220855883097298041197912187592864814948216561321709848887480219215362213
- Curve.Binary.SECT239K1: type PA = BAPoint SECT239K1 F2m Fr
- Curve.Binary.SECT239K1: type PP = BPPoint SECT239K1 F2m Fr
- Curve.Binary.SECT283K1: _a :: F2m
- Curve.Binary.SECT283K1: _b :: F2m
- Curve.Binary.SECT283K1: _h :: Integer
- Curve.Binary.SECT283K1: _p :: Integer
- Curve.Binary.SECT283K1: _r :: Integer
- Curve.Binary.SECT283K1: _x :: F2m
- Curve.Binary.SECT283K1: _y :: F2m
- Curve.Binary.SECT283K1: data SECT283K1
- Curve.Binary.SECT283K1: gA :: PA
- Curve.Binary.SECT283K1: gP :: PP
- Curve.Binary.SECT283K1: instance Curve.Binary.BACurve Curve.Binary.SECT283K1.SECT283K1 Curve.Binary.SECT283K1.F2m Curve.Binary.SECT283K1.Fr
- Curve.Binary.SECT283K1: instance Curve.Binary.BPCurve Curve.Binary.SECT283K1.SECT283K1 Curve.Binary.SECT283K1.F2m Curve.Binary.SECT283K1.Fr
- Curve.Binary.SECT283K1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT283K1.SECT283K1 Curve.Binary.SECT283K1.F2m Curve.Binary.SECT283K1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT283K1.SECT283K1 Curve.Binary.SECT283K1.F2m Curve.Binary.SECT283K1.Fr
- Curve.Binary.SECT283K1: type F2m = BinaryField 15541351137805832567355695254588151253139254712417116170014499277911234281641667989665
- Curve.Binary.SECT283K1: type Fr = PrimeField 3885337784451458141838923813647037813284811733793061324295874997529815829704422603873
- Curve.Binary.SECT283K1: type PA = BAPoint SECT283K1 F2m Fr
- Curve.Binary.SECT283K1: type PP = BPPoint SECT283K1 F2m Fr
- Curve.Binary.SECT283R1: _a :: F2m
- Curve.Binary.SECT283R1: _b :: F2m
- Curve.Binary.SECT283R1: _h :: Integer
- Curve.Binary.SECT283R1: _p :: Integer
- Curve.Binary.SECT283R1: _r :: Integer
- Curve.Binary.SECT283R1: _x :: F2m
- Curve.Binary.SECT283R1: _y :: F2m
- Curve.Binary.SECT283R1: data SECT283R1
- Curve.Binary.SECT283R1: gA :: PA
- Curve.Binary.SECT283R1: gP :: PP
- Curve.Binary.SECT283R1: instance Curve.Binary.BACurve Curve.Binary.SECT283R1.SECT283R1 Curve.Binary.SECT283R1.F2m Curve.Binary.SECT283R1.Fr
- Curve.Binary.SECT283R1: instance Curve.Binary.BPCurve Curve.Binary.SECT283R1.SECT283R1 Curve.Binary.SECT283R1.F2m Curve.Binary.SECT283R1.Fr
- Curve.Binary.SECT283R1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT283R1.SECT283R1 Curve.Binary.SECT283R1.F2m Curve.Binary.SECT283R1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT283R1.SECT283R1 Curve.Binary.SECT283R1.F2m Curve.Binary.SECT283R1.Fr
- Curve.Binary.SECT283R1: type F2m = BinaryField 15541351137805832567355695254588151253139254712417116170014499277911234281641667989665
- Curve.Binary.SECT283R1: type Fr = PrimeField 7770675568902916283677847627294075626569625924376904889109196526770044277787378692871
- Curve.Binary.SECT283R1: type PA = BAPoint SECT283R1 F2m Fr
- Curve.Binary.SECT283R1: type PP = BPPoint SECT283R1 F2m Fr
- Curve.Binary.SECT409K1: _a :: F2m
- Curve.Binary.SECT409K1: _b :: F2m
- Curve.Binary.SECT409K1: _h :: Integer
- Curve.Binary.SECT409K1: _p :: Integer
- Curve.Binary.SECT409K1: _r :: Integer
- Curve.Binary.SECT409K1: _x :: F2m
- Curve.Binary.SECT409K1: _y :: F2m
- Curve.Binary.SECT409K1: data SECT409K1
- Curve.Binary.SECT409K1: gA :: PA
- Curve.Binary.SECT409K1: gP :: PP
- Curve.Binary.SECT409K1: instance Curve.Binary.BACurve Curve.Binary.SECT409K1.SECT409K1 Curve.Binary.SECT409K1.F2m Curve.Binary.SECT409K1.Fr
- Curve.Binary.SECT409K1: instance Curve.Binary.BPCurve Curve.Binary.SECT409K1.SECT409K1 Curve.Binary.SECT409K1.F2m Curve.Binary.SECT409K1.Fr
- Curve.Binary.SECT409K1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT409K1.SECT409K1 Curve.Binary.SECT409K1.F2m Curve.Binary.SECT409K1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT409K1.SECT409K1 Curve.Binary.SECT409K1.F2m Curve.Binary.SECT409K1.Fr
- Curve.Binary.SECT409K1: type F2m = BinaryField 1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430724437687334722581078999041
- Curve.Binary.SECT409K1: type Fr = PrimeField 330527984395124299475957654016385519914202341482140609642324395022880711289249191050673258457777458014096366590617731358671
- Curve.Binary.SECT409K1: type PA = BAPoint SECT409K1 F2m Fr
- Curve.Binary.SECT409K1: type PP = BPPoint SECT409K1 F2m Fr
- Curve.Binary.SECT409R1: _a :: F2m
- Curve.Binary.SECT409R1: _b :: F2m
- Curve.Binary.SECT409R1: _h :: Integer
- Curve.Binary.SECT409R1: _p :: Integer
- Curve.Binary.SECT409R1: _r :: Integer
- Curve.Binary.SECT409R1: _x :: F2m
- Curve.Binary.SECT409R1: _y :: F2m
- Curve.Binary.SECT409R1: data SECT409R1
- Curve.Binary.SECT409R1: gA :: PA
- Curve.Binary.SECT409R1: gP :: PP
- Curve.Binary.SECT409R1: instance Curve.Binary.BACurve Curve.Binary.SECT409R1.SECT409R1 Curve.Binary.SECT409R1.F2m Curve.Binary.SECT409R1.Fr
- Curve.Binary.SECT409R1: instance Curve.Binary.BPCurve Curve.Binary.SECT409R1.SECT409R1 Curve.Binary.SECT409R1.F2m Curve.Binary.SECT409R1.Fr
- Curve.Binary.SECT409R1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT409R1.SECT409R1 Curve.Binary.SECT409R1.F2m Curve.Binary.SECT409R1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT409R1.SECT409R1 Curve.Binary.SECT409R1.F2m Curve.Binary.SECT409R1.Fr
- Curve.Binary.SECT409R1: type F2m = BinaryField 1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430724437687334722581078999041
- Curve.Binary.SECT409R1: type Fr = PrimeField 661055968790248598951915308032771039828404682964281219284648798304157774827374805208143723762179110965979867288366567526771
- Curve.Binary.SECT409R1: type PA = BAPoint SECT409R1 F2m Fr
- Curve.Binary.SECT409R1: type PP = BPPoint SECT409R1 F2m Fr
- Curve.Binary.SECT571K1: _a :: F2m
- Curve.Binary.SECT571K1: _b :: F2m
- Curve.Binary.SECT571K1: _h :: Integer
- Curve.Binary.SECT571K1: _p :: Integer
- Curve.Binary.SECT571K1: _r :: Integer
- Curve.Binary.SECT571K1: _x :: F2m
- Curve.Binary.SECT571K1: _y :: F2m
- Curve.Binary.SECT571K1: data SECT571K1
- Curve.Binary.SECT571K1: gA :: PA
- Curve.Binary.SECT571K1: gP :: PP
- Curve.Binary.SECT571K1: instance Curve.Binary.BACurve Curve.Binary.SECT571K1.SECT571K1 Curve.Binary.SECT571K1.F2m Curve.Binary.SECT571K1.Fr
- Curve.Binary.SECT571K1: instance Curve.Binary.BPCurve Curve.Binary.SECT571K1.SECT571K1 Curve.Binary.SECT571K1.F2m Curve.Binary.SECT571K1.Fr
- Curve.Binary.SECT571K1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT571K1.SECT571K1 Curve.Binary.SECT571K1.F2m Curve.Binary.SECT571K1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT571K1.SECT571K1 Curve.Binary.SECT571K1.F2m Curve.Binary.SECT571K1.Fr
- Curve.Binary.SECT571K1: type F2m = BinaryField 7729075046034516689390703781863974688597854659412869997314470502903038284579120849072387533163845155924927232063004354354730157322085975311485817346934161497393961629647909
- Curve.Binary.SECT571K1: type Fr = PrimeField 1932268761508629172347675945465993672149463664853217499328617625725759571144780212268133978522706711834706712800825351461273674974066617311929682421617092503555733685276673
- Curve.Binary.SECT571K1: type PA = BAPoint SECT571K1 F2m Fr
- Curve.Binary.SECT571K1: type PP = BPPoint SECT571K1 F2m Fr
- Curve.Binary.SECT571R1: _a :: F2m
- Curve.Binary.SECT571R1: _b :: F2m
- Curve.Binary.SECT571R1: _h :: Integer
- Curve.Binary.SECT571R1: _p :: Integer
- Curve.Binary.SECT571R1: _r :: Integer
- Curve.Binary.SECT571R1: _x :: F2m
- Curve.Binary.SECT571R1: _y :: F2m
- Curve.Binary.SECT571R1: data SECT571R1
- Curve.Binary.SECT571R1: gA :: PA
- Curve.Binary.SECT571R1: gP :: PP
- Curve.Binary.SECT571R1: instance Curve.Binary.BACurve Curve.Binary.SECT571R1.SECT571R1 Curve.Binary.SECT571R1.F2m Curve.Binary.SECT571R1.Fr
- Curve.Binary.SECT571R1: instance Curve.Binary.BPCurve Curve.Binary.SECT571R1.SECT571R1 Curve.Binary.SECT571R1.F2m Curve.Binary.SECT571R1.Fr
- Curve.Binary.SECT571R1: instance Curve.Curve 'Curve.Binary c Curve.Binary.SECT571R1.SECT571R1 Curve.Binary.SECT571R1.F2m Curve.Binary.SECT571R1.Fr => Curve.Binary.BCurve c Curve.Binary.SECT571R1.SECT571R1 Curve.Binary.SECT571R1.F2m Curve.Binary.SECT571R1.Fr
- Curve.Binary.SECT571R1: type F2m = BinaryField 7729075046034516689390703781863974688597854659412869997314470502903038284579120849072387533163845155924927232063004354354730157322085975311485817346934161497393961629647909
- Curve.Binary.SECT571R1: type Fr = PrimeField 3864537523017258344695351890931987344298927329706434998657235251451519142289560424536143999389415773083133881121926944486246872462816813070234528288303332411393191105285703
- Curve.Binary.SECT571R1: type PA = BAPoint SECT571R1 F2m Fr
- Curve.Binary.SECT571R1: type PP = BPPoint SECT571R1 F2m Fr
- Curve.Edwards: -- | Curve point.
- Curve.Edwards: Affine :: Coordinates
- Curve.Edwards: Binary :: Form
- Curve.Edwards: Edwards :: Form
- Curve.Edwards: Jacobian :: Coordinates
- Curve.Edwards: Montgomery :: Form
- Curve.Edwards: Projective :: Coordinates
- Curve.Edwards: Weierstrass :: Form
- Curve.Edwards: a_ :: ECurve c e q r => EPoint c e q r -> q
- Curve.Edwards: add :: Group g => g -> g -> g
- Curve.Edwards: char :: Curve f c e q r => Point f c e q r -> Integer
- Curve.Edwards: class (GaloisField q, PrimeField' r, Group (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where {
- Curve.Edwards: class ECurve 'Affine e q r => EACurve e q r
- Curve.Edwards: class (GaloisField q, PrimeField' r, Curve 'Edwards c e q r) => ECurve c e q r
- Curve.Edwards: class ECurve 'Projective e q r => EPCurve e q r
- Curve.Edwards: class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g
- Curve.Edwards: class GaloisField k => PrimeField' k
- Curve.Edwards: cof :: Curve f c e q r => Point f c e q r -> Integer
- Curve.Edwards: d_ :: ECurve c e q r => EPoint c e q r -> q
- Curve.Edwards: data Coordinates
- Curve.Edwards: data Form
- Curve.Edwards: data family Point f c e q r :: *;
- Curve.Edwards: dbl :: Group g => g -> g
- Curve.Edwards: def :: Group g => g -> Bool
- Curve.Edwards: disc :: Curve f c e q r => Point f c e q r -> q
- Curve.Edwards: fromA :: Curve f c e q r => Point f 'Affine e q r -> Point f c e q r
- Curve.Edwards: gA_ :: EACurve e q r => EAPoint e q r
- Curve.Edwards: gP_ :: EPCurve e q r => EPPoint e q r
- Curve.Edwards: gen :: Group g => g
- Curve.Edwards: h_ :: ECurve c e q r => EPoint c e q r -> Integer
- Curve.Edwards: id :: Group g => g
- Curve.Edwards: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Curve.Point 'Curve.Edwards 'Curve.Affine e q r)
- Curve.Edwards: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Curve.Point 'Curve.Edwards 'Curve.Projective e q r)
- Curve.Edwards: instance forall k (e :: k) q r. Curve.Edwards.EACurve e q r => Curve.Curve 'Curve.Edwards 'Curve.Affine e q r
- Curve.Edwards: instance forall k (e :: k) q r. Curve.Edwards.EACurve e q r => Group.Group (Curve.Edwards.EAPoint e q r)
- Curve.Edwards: instance forall k (e :: k) q r. Curve.Edwards.EACurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Curve.Edwards.EAPoint e q r)
- Curve.Edwards: instance forall k (e :: k) q r. Curve.Edwards.EPCurve e q r => Curve.Curve 'Curve.Edwards 'Curve.Projective e q r
- Curve.Edwards: instance forall k (e :: k) q r. Curve.Edwards.EPCurve e q r => GHC.Classes.Eq (Curve.Edwards.EPPoint e q r)
- Curve.Edwards: instance forall k (e :: k) q r. Curve.Edwards.EPCurve e q r => Group.Group (Curve.Edwards.EPPoint e q r)
- Curve.Edwards: instance forall k (e :: k) q r. Curve.Edwards.EPCurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Curve.Edwards.EPPoint e q r)
- Curve.Edwards: instance forall k (e :: k) q r. GHC.Classes.Eq q => GHC.Classes.Eq (Curve.Point 'Curve.Edwards 'Curve.Affine e q r)
- Curve.Edwards: instance forall k (e :: k) q r. GHC.Generics.Generic (Curve.Point 'Curve.Edwards 'Curve.Affine e q r)
- Curve.Edwards: instance forall k (e :: k) q r. GHC.Generics.Generic (Curve.Point 'Curve.Edwards 'Curve.Projective e q r)
- Curve.Edwards: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Curve.Point 'Curve.Edwards 'Curve.Affine e q r)
- Curve.Edwards: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Curve.Point 'Curve.Edwards 'Curve.Projective e q r)
- Curve.Edwards: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Curve.Point 'Curve.Edwards 'Curve.Affine e q r)
- Curve.Edwards: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Curve.Point 'Curve.Edwards 'Curve.Projective e q r)
- Curve.Edwards: inv :: Group g => g -> g
- Curve.Edwards: mul :: Curve f c e q r => Point f c e q r -> r -> Point f c e q r
- Curve.Edwards: mul' :: Group g => g -> Integer -> g
- Curve.Edwards: order :: Group g => g -> Integer
- Curve.Edwards: point :: Curve f c e q r => q -> q -> Maybe (Point f c e q r)
- Curve.Edwards: pointX :: Curve f c e q r => q -> Maybe (Point f c e q r)
- Curve.Edwards: q_ :: ECurve c e q r => EPoint c e q r -> Integer
- Curve.Edwards: r_ :: ECurve c e q r => EPoint c e q r -> Integer
- Curve.Edwards: rnd :: (Group g, MonadRandom m) => m g
- Curve.Edwards: toA :: Curve f c e q r => Point f c e q r -> Point f 'Affine e q r
- Curve.Edwards: type EAPoint = EPoint 'Affine
- Curve.Edwards: type EPPoint = EPoint 'Projective
- Curve.Edwards: type EPoint = Point 'Edwards
- Curve.Edwards: x_ :: ECurve c e q r => EPoint c e q r -> q
- Curve.Edwards: yX :: Curve f c e q r => Point f c e q r -> q -> Maybe q
- Curve.Edwards: y_ :: ECurve c e q r => EPoint c e q r -> q
- Curve.Edwards: }
- Curve.Edwards.Curve1174: _a :: Fq
- Curve.Edwards.Curve1174: _d :: Fq
- Curve.Edwards.Curve1174: _h :: Integer
- Curve.Edwards.Curve1174: _q :: Integer
- Curve.Edwards.Curve1174: _r :: Integer
- Curve.Edwards.Curve1174: _x :: Fq
- Curve.Edwards.Curve1174: _y :: Fq
- Curve.Edwards.Curve1174: data Curve1174
- Curve.Edwards.Curve1174: gA :: PA
- Curve.Edwards.Curve1174: gP :: PP
- Curve.Edwards.Curve1174: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.Curve1174.Curve1174 Curve.Edwards.Curve1174.Fq Curve.Edwards.Curve1174.Fr => Curve.Edwards.ECurve c Curve.Edwards.Curve1174.Curve1174 Curve.Edwards.Curve1174.Fq Curve.Edwards.Curve1174.Fr
- Curve.Edwards.Curve1174: instance Curve.Edwards.EACurve Curve.Edwards.Curve1174.Curve1174 Curve.Edwards.Curve1174.Fq Curve.Edwards.Curve1174.Fr
- Curve.Edwards.Curve1174: instance Curve.Edwards.EPCurve Curve.Edwards.Curve1174.Curve1174 Curve.Edwards.Curve1174.Fq Curve.Edwards.Curve1174.Fr
- Curve.Edwards.Curve1174: type Fq = PrimeField 3618502788666131106986593281521497120414687020801267626233049500247285301239
- Curve.Edwards.Curve1174: type Fr = PrimeField 904625697166532776746648320380374280092339035279495474023489261773642975601
- Curve.Edwards.Curve1174: type PA = EAPoint Curve1174 Fq Fr
- Curve.Edwards.Curve1174: type PP = EPPoint Curve1174 Fq Fr
- Curve.Edwards.Curve41417: _a :: Fq
- Curve.Edwards.Curve41417: _d :: Fq
- Curve.Edwards.Curve41417: _h :: Integer
- Curve.Edwards.Curve41417: _q :: Integer
- Curve.Edwards.Curve41417: _r :: Integer
- Curve.Edwards.Curve41417: _x :: Fq
- Curve.Edwards.Curve41417: _y :: Fq
- Curve.Edwards.Curve41417: data Curve41417
- Curve.Edwards.Curve41417: gA :: PA
- Curve.Edwards.Curve41417: gP :: PP
- Curve.Edwards.Curve41417: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.Curve41417.Curve41417 Curve.Edwards.Curve41417.Fq Curve.Edwards.Curve41417.Fr => Curve.Edwards.ECurve c Curve.Edwards.Curve41417.Curve41417 Curve.Edwards.Curve41417.Fq Curve.Edwards.Curve41417.Fr
- Curve.Edwards.Curve41417: instance Curve.Edwards.EACurve Curve.Edwards.Curve41417.Curve41417 Curve.Edwards.Curve41417.Fq Curve.Edwards.Curve41417.Fr
- Curve.Edwards.Curve41417: instance Curve.Edwards.EPCurve Curve.Edwards.Curve41417.Curve41417 Curve.Edwards.Curve41417.Fq Curve.Edwards.Curve41417.Fr
- Curve.Edwards.Curve41417: type Fq = PrimeField 42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472367
- Curve.Edwards.Curve41417: type Fr = PrimeField 5288447750321988791615322464262168318627237463714249754277190328831105466135348245791335989419337099796002495788978276839289
- Curve.Edwards.Curve41417: type PA = EAPoint Curve41417 Fq Fr
- Curve.Edwards.Curve41417: type PP = EPPoint Curve41417 Fq Fr
- Curve.Edwards.E222: _a :: Fq
- Curve.Edwards.E222: _d :: Fq
- Curve.Edwards.E222: _h :: Integer
- Curve.Edwards.E222: _q :: Integer
- Curve.Edwards.E222: _r :: Integer
- Curve.Edwards.E222: _x :: Fq
- Curve.Edwards.E222: _y :: Fq
- Curve.Edwards.E222: data E222
- Curve.Edwards.E222: gA :: PA
- Curve.Edwards.E222: gP :: PP
- Curve.Edwards.E222: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.E222.E222 Curve.Edwards.E222.Fq Curve.Edwards.E222.Fr => Curve.Edwards.ECurve c Curve.Edwards.E222.E222 Curve.Edwards.E222.Fq Curve.Edwards.E222.Fr
- Curve.Edwards.E222: instance Curve.Edwards.EACurve Curve.Edwards.E222.E222 Curve.Edwards.E222.Fq Curve.Edwards.E222.Fr
- Curve.Edwards.E222: instance Curve.Edwards.EPCurve Curve.Edwards.E222.E222 Curve.Edwards.E222.Fq Curve.Edwards.E222.Fr
- Curve.Edwards.E222: type Fq = PrimeField 6739986666787659948666753771754907668409286105635143120275902562187
- Curve.Edwards.E222: type Fr = PrimeField 1684996666696914987166688442938726735569737456760058294185521417407
- Curve.Edwards.E222: type PA = EAPoint E222 Fq Fr
- Curve.Edwards.E222: type PP = EPPoint E222 Fq Fr
- Curve.Edwards.E382: _a :: Fq
- Curve.Edwards.E382: _d :: Fq
- Curve.Edwards.E382: _h :: Integer
- Curve.Edwards.E382: _q :: Integer
- Curve.Edwards.E382: _r :: Integer
- Curve.Edwards.E382: _x :: Fq
- Curve.Edwards.E382: _y :: Fq
- Curve.Edwards.E382: data E382
- Curve.Edwards.E382: gA :: PA
- Curve.Edwards.E382: gP :: PP
- Curve.Edwards.E382: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.E382.E382 Curve.Edwards.E382.Fq Curve.Edwards.E382.Fr => Curve.Edwards.ECurve c Curve.Edwards.E382.E382 Curve.Edwards.E382.Fq Curve.Edwards.E382.Fr
- Curve.Edwards.E382: instance Curve.Edwards.EACurve Curve.Edwards.E382.E382 Curve.Edwards.E382.Fq Curve.Edwards.E382.Fr
- Curve.Edwards.E382: instance Curve.Edwards.EPCurve Curve.Edwards.E382.E382 Curve.Edwards.E382.Fq Curve.Edwards.E382.Fr
- Curve.Edwards.E382: type Fq = PrimeField 9850501549098619803069760025035903451269934817616361666987073351061430442874302652853566563721228910201656997576599
- Curve.Edwards.E382: type Fr = PrimeField 2462625387274654950767440006258975862817483704404090416745738034557663054564649171262659326683244604346084081047321
- Curve.Edwards.E382: type PA = EAPoint E382 Fq Fr
- Curve.Edwards.E382: type PP = EPPoint E382 Fq Fr
- Curve.Edwards.E521: _a :: Fq
- Curve.Edwards.E521: _d :: Fq
- Curve.Edwards.E521: _h :: Integer
- Curve.Edwards.E521: _q :: Integer
- Curve.Edwards.E521: _r :: Integer
- Curve.Edwards.E521: _x :: Fq
- Curve.Edwards.E521: _y :: Fq
- Curve.Edwards.E521: data E521
- Curve.Edwards.E521: gA :: PA
- Curve.Edwards.E521: gP :: PP
- Curve.Edwards.E521: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.E521.E521 Curve.Edwards.E521.Fq Curve.Edwards.E521.Fr => Curve.Edwards.ECurve c Curve.Edwards.E521.E521 Curve.Edwards.E521.Fq Curve.Edwards.E521.Fr
- Curve.Edwards.E521: instance Curve.Edwards.EACurve Curve.Edwards.E521.E521 Curve.Edwards.E521.Fq Curve.Edwards.E521.Fr
- Curve.Edwards.E521: instance Curve.Edwards.EPCurve Curve.Edwards.E521.E521 Curve.Edwards.E521.Fq Curve.Edwards.E521.Fr
- Curve.Edwards.E521: type Fq = PrimeField 6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151
- Curve.Edwards.E521: type Fr = PrimeField 1716199415032652428745475199770348304317358825035826352348615864796385795849413675475876651663657849636693659065234142604319282948702542317993421293670108523
- Curve.Edwards.E521: type PA = EAPoint E521 Fq Fr
- Curve.Edwards.E521: type PP = EPPoint E521 Fq Fr
- Curve.Edwards.Ed25519: _a :: Fq
- Curve.Edwards.Ed25519: _d :: Fq
- Curve.Edwards.Ed25519: _h :: Integer
- Curve.Edwards.Ed25519: _q :: Integer
- Curve.Edwards.Ed25519: _r :: Integer
- Curve.Edwards.Ed25519: _x :: Fq
- Curve.Edwards.Ed25519: _y :: Fq
- Curve.Edwards.Ed25519: data Ed25519
- Curve.Edwards.Ed25519: gA :: PA
- Curve.Edwards.Ed25519: gP :: PP
- Curve.Edwards.Ed25519: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.Ed25519.Ed25519 Curve.Edwards.Ed25519.Fq Curve.Edwards.Ed25519.Fr => Curve.Edwards.ECurve c Curve.Edwards.Ed25519.Ed25519 Curve.Edwards.Ed25519.Fq Curve.Edwards.Ed25519.Fr
- Curve.Edwards.Ed25519: instance Curve.Edwards.EACurve Curve.Edwards.Ed25519.Ed25519 Curve.Edwards.Ed25519.Fq Curve.Edwards.Ed25519.Fr
- Curve.Edwards.Ed25519: instance Curve.Edwards.EPCurve Curve.Edwards.Ed25519.Ed25519 Curve.Edwards.Ed25519.Fq Curve.Edwards.Ed25519.Fr
- Curve.Edwards.Ed25519: type Fq = PrimeField 57896044618658097711785492504343953926634992332820282019728792003956564819949
- Curve.Edwards.Ed25519: type Fr = PrimeField 7237005577332262213973186563042994240857116359379907606001950938285454250989
- Curve.Edwards.Ed25519: type PA = EAPoint Ed25519 Fq Fr
- Curve.Edwards.Ed25519: type PP = EPPoint Ed25519 Fq Fr
- Curve.Edwards.Ed3363: _a :: Fq
- Curve.Edwards.Ed3363: _d :: Fq
- Curve.Edwards.Ed3363: _h :: Integer
- Curve.Edwards.Ed3363: _q :: Integer
- Curve.Edwards.Ed3363: _r :: Integer
- Curve.Edwards.Ed3363: _x :: Fq
- Curve.Edwards.Ed3363: _y :: Fq
- Curve.Edwards.Ed3363: data Ed3363
- Curve.Edwards.Ed3363: gA :: PA
- Curve.Edwards.Ed3363: gP :: PP
- Curve.Edwards.Ed3363: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.Ed3363.Ed3363 Curve.Edwards.Ed3363.Fq Curve.Edwards.Ed3363.Fr => Curve.Edwards.ECurve c Curve.Edwards.Ed3363.Ed3363 Curve.Edwards.Ed3363.Fq Curve.Edwards.Ed3363.Fr
- Curve.Edwards.Ed3363: instance Curve.Edwards.EACurve Curve.Edwards.Ed3363.Ed3363 Curve.Edwards.Ed3363.Fq Curve.Edwards.Ed3363.Fr
- Curve.Edwards.Ed3363: instance Curve.Edwards.EPCurve Curve.Edwards.Ed3363.Ed3363 Curve.Edwards.Ed3363.Fq Curve.Edwards.Ed3363.Fr
- Curve.Edwards.Ed3363: type Fq = PrimeField 139984046386112763159840142535527767382602843577165595931249318810236991948760059086304843329475444733
- Curve.Edwards.Ed3363: type Fr = PrimeField 17498005798264095394980017816940970922825355447145709836587587134987699588874282995658187611024893957
- Curve.Edwards.Ed3363: type PA = EAPoint Ed3363 Fq Fr
- Curve.Edwards.Ed3363: type PP = EPPoint Ed3363 Fq Fr
- Curve.Edwards.Ed448: _a :: Fq
- Curve.Edwards.Ed448: _d :: Fq
- Curve.Edwards.Ed448: _h :: Integer
- Curve.Edwards.Ed448: _q :: Integer
- Curve.Edwards.Ed448: _r :: Integer
- Curve.Edwards.Ed448: _x :: Fq
- Curve.Edwards.Ed448: _y :: Fq
- Curve.Edwards.Ed448: data Ed448
- Curve.Edwards.Ed448: gA :: PA
- Curve.Edwards.Ed448: gP :: PP
- Curve.Edwards.Ed448: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.Ed448.Ed448 Curve.Edwards.Ed448.Fq Curve.Edwards.Ed448.Fr => Curve.Edwards.ECurve c Curve.Edwards.Ed448.Ed448 Curve.Edwards.Ed448.Fq Curve.Edwards.Ed448.Fr
- Curve.Edwards.Ed448: instance Curve.Edwards.EACurve Curve.Edwards.Ed448.Ed448 Curve.Edwards.Ed448.Fq Curve.Edwards.Ed448.Fr
- Curve.Edwards.Ed448: instance Curve.Edwards.EPCurve Curve.Edwards.Ed448.Ed448 Curve.Edwards.Ed448.Fq Curve.Edwards.Ed448.Fr
- Curve.Edwards.Ed448: type Fq = PrimeField 726838724295606890549323807888004534353641360687318060281490199180612328166730772686396383698676545930088884461843637361053498018365439
- Curve.Edwards.Ed448: type Fr = PrimeField 181709681073901722637330951972001133588410340171829515070372549795146003961539585716195755291692375963310293709091662304773755859649779
- Curve.Edwards.Ed448: type PA = EAPoint Ed448 Fq Fr
- Curve.Edwards.Ed448: type PP = EPPoint Ed448 Fq Fr
- Curve.Edwards.JubJub: _a :: Fq
- Curve.Edwards.JubJub: _d :: Fq
- Curve.Edwards.JubJub: _h :: Integer
- Curve.Edwards.JubJub: _q :: Integer
- Curve.Edwards.JubJub: _r :: Integer
- Curve.Edwards.JubJub: _x :: Fq
- Curve.Edwards.JubJub: _y :: Fq
- Curve.Edwards.JubJub: data JubJub
- Curve.Edwards.JubJub: gA :: PA
- Curve.Edwards.JubJub: gP :: PP
- Curve.Edwards.JubJub: instance Curve.Curve 'Curve.Edwards c Curve.Edwards.JubJub.JubJub Curve.Edwards.JubJub.Fq Curve.Edwards.JubJub.Fr => Curve.Edwards.ECurve c Curve.Edwards.JubJub.JubJub Curve.Edwards.JubJub.Fq Curve.Edwards.JubJub.Fr
- Curve.Edwards.JubJub: instance Curve.Edwards.EACurve Curve.Edwards.JubJub.JubJub Curve.Edwards.JubJub.Fq Curve.Edwards.JubJub.Fr
- Curve.Edwards.JubJub: instance Curve.Edwards.EPCurve Curve.Edwards.JubJub.JubJub Curve.Edwards.JubJub.Fq Curve.Edwards.JubJub.Fr
- Curve.Edwards.JubJub: type Fq = PrimeField 52435875175126190479447740508185965837690552500527637822603658699938581184513
- Curve.Edwards.JubJub: type Fr = PrimeField 6554484396890773809930967563523245729705921265872317281365359162392183254199
- Curve.Edwards.JubJub: type PA = EAPoint JubJub Fq Fr
- Curve.Edwards.JubJub: type PP = EPPoint JubJub Fq Fr
- Curve.Montgomery: -- | Curve point.
- Curve.Montgomery: Affine :: Coordinates
- Curve.Montgomery: Binary :: Form
- Curve.Montgomery: Edwards :: Form
- Curve.Montgomery: Jacobian :: Coordinates
- Curve.Montgomery: Montgomery :: Form
- Curve.Montgomery: Projective :: Coordinates
- Curve.Montgomery: Weierstrass :: Form
- Curve.Montgomery: a_ :: MCurve c e q r => MPoint c e q r -> q
- Curve.Montgomery: add :: Group g => g -> g -> g
- Curve.Montgomery: b_ :: MCurve c e q r => MPoint c e q r -> q
- Curve.Montgomery: char :: Curve f c e q r => Point f c e q r -> Integer
- Curve.Montgomery: class (GaloisField q, PrimeField' r, Group (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where {
- Curve.Montgomery: class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g
- Curve.Montgomery: class MCurve 'Affine e q r => MACurve e q r
- Curve.Montgomery: class (GaloisField q, PrimeField' r, Curve 'Montgomery c e q r) => MCurve c e q r
- Curve.Montgomery: class GaloisField k => PrimeField' k
- Curve.Montgomery: cof :: Curve f c e q r => Point f c e q r -> Integer
- Curve.Montgomery: data Coordinates
- Curve.Montgomery: data Form
- Curve.Montgomery: data family Point f c e q r :: *;
- Curve.Montgomery: dbl :: Group g => g -> g
- Curve.Montgomery: def :: Group g => g -> Bool
- Curve.Montgomery: disc :: Curve f c e q r => Point f c e q r -> q
- Curve.Montgomery: fromA :: Curve f c e q r => Point f 'Affine e q r -> Point f c e q r
- Curve.Montgomery: gA_ :: MACurve e q r => MAPoint e q r
- Curve.Montgomery: gen :: Group g => g
- Curve.Montgomery: h_ :: MCurve c e q r => MPoint c e q r -> Integer
- Curve.Montgomery: id :: Group g => g
- Curve.Montgomery: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Curve.Point 'Curve.Montgomery 'Curve.Affine e q r)
- Curve.Montgomery: instance forall k (e :: k) q r. Curve.Montgomery.MACurve e q r => Curve.Curve 'Curve.Montgomery 'Curve.Affine e q r
- Curve.Montgomery: instance forall k (e :: k) q r. Curve.Montgomery.MACurve e q r => Group.Group (Curve.Montgomery.MAPoint e q r)
- Curve.Montgomery: instance forall k (e :: k) q r. Curve.Montgomery.MACurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Curve.Montgomery.MAPoint e q r)
- Curve.Montgomery: instance forall k (e :: k) q r. GHC.Classes.Eq q => GHC.Classes.Eq (Curve.Point 'Curve.Montgomery 'Curve.Affine e q r)
- Curve.Montgomery: instance forall k (e :: k) q r. GHC.Generics.Generic (Curve.Point 'Curve.Montgomery 'Curve.Affine e q r)
- Curve.Montgomery: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Curve.Point 'Curve.Montgomery 'Curve.Affine e q r)
- Curve.Montgomery: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Curve.Point 'Curve.Montgomery 'Curve.Affine e q r)
- Curve.Montgomery: inv :: Group g => g -> g
- Curve.Montgomery: mul :: Curve f c e q r => Point f c e q r -> r -> Point f c e q r
- Curve.Montgomery: mul' :: Group g => g -> Integer -> g
- Curve.Montgomery: order :: Group g => g -> Integer
- Curve.Montgomery: point :: Curve f c e q r => q -> q -> Maybe (Point f c e q r)
- Curve.Montgomery: pointX :: Curve f c e q r => q -> Maybe (Point f c e q r)
- Curve.Montgomery: q_ :: MCurve c e q r => MPoint c e q r -> Integer
- Curve.Montgomery: r_ :: MCurve c e q r => MPoint c e q r -> Integer
- Curve.Montgomery: rnd :: (Group g, MonadRandom m) => m g
- Curve.Montgomery: toA :: Curve f c e q r => Point f c e q r -> Point f 'Affine e q r
- Curve.Montgomery: type MAPoint = MPoint 'Affine
- Curve.Montgomery: type MPoint = Point 'Montgomery
- Curve.Montgomery: x_ :: MCurve c e q r => MPoint c e q r -> q
- Curve.Montgomery: yX :: Curve f c e q r => Point f c e q r -> q -> Maybe q
- Curve.Montgomery: y_ :: MCurve c e q r => MPoint c e q r -> q
- Curve.Montgomery: }
- Curve.Montgomery.Curve25519: _a :: Fq
- Curve.Montgomery.Curve25519: _b :: Fq
- Curve.Montgomery.Curve25519: _h :: Integer
- Curve.Montgomery.Curve25519: _q :: Integer
- Curve.Montgomery.Curve25519: _r :: Integer
- Curve.Montgomery.Curve25519: _x :: Fq
- Curve.Montgomery.Curve25519: _y :: Fq
- Curve.Montgomery.Curve25519: data Curve25519
- Curve.Montgomery.Curve25519: gA :: PA
- Curve.Montgomery.Curve25519: instance Curve.Curve 'Curve.Montgomery c Curve.Montgomery.Curve25519.Curve25519 Curve.Montgomery.Curve25519.Fq Curve.Montgomery.Curve25519.Fr => Curve.Montgomery.MCurve c Curve.Montgomery.Curve25519.Curve25519 Curve.Montgomery.Curve25519.Fq Curve.Montgomery.Curve25519.Fr
- Curve.Montgomery.Curve25519: instance Curve.Montgomery.MACurve Curve.Montgomery.Curve25519.Curve25519 Curve.Montgomery.Curve25519.Fq Curve.Montgomery.Curve25519.Fr
- Curve.Montgomery.Curve25519: type Fq = PrimeField 57896044618658097711785492504343953926634992332820282019728792003956564819949
- Curve.Montgomery.Curve25519: type Fr = PrimeField 7237005577332262213973186563042994240857116359379907606001950938285454250989
- Curve.Montgomery.Curve25519: type PA = MAPoint Curve25519 Fq Fr
- Curve.Montgomery.Curve383187: _a :: Fq
- Curve.Montgomery.Curve383187: _b :: Fq
- Curve.Montgomery.Curve383187: _h :: Integer
- Curve.Montgomery.Curve383187: _q :: Integer
- Curve.Montgomery.Curve383187: _r :: Integer
- Curve.Montgomery.Curve383187: _x :: Fq
- Curve.Montgomery.Curve383187: _y :: Fq
- Curve.Montgomery.Curve383187: data Curve383187
- Curve.Montgomery.Curve383187: gA :: PA
- Curve.Montgomery.Curve383187: instance Curve.Curve 'Curve.Montgomery c Curve.Montgomery.Curve383187.Curve383187 Curve.Montgomery.Curve383187.Fq Curve.Montgomery.Curve383187.Fr => Curve.Montgomery.MCurve c Curve.Montgomery.Curve383187.Curve383187 Curve.Montgomery.Curve383187.Fq Curve.Montgomery.Curve383187.Fr
- Curve.Montgomery.Curve383187: instance Curve.Montgomery.MACurve Curve.Montgomery.Curve383187.Curve383187 Curve.Montgomery.Curve383187.Fq Curve.Montgomery.Curve383187.Fr
- Curve.Montgomery.Curve383187: type Fq = PrimeField 19701003098197239606139520050071806902539869635232723333974146702122860885748605305707133127442457820403313995153221
- Curve.Montgomery.Curve383187: type Fr = PrimeField 2462625387274654950767440006258975862817483704404090416747124418612574880605944350369924877650606926799392131911201
- Curve.Montgomery.Curve383187: type PA = MAPoint Curve383187 Fq Fr
- Curve.Montgomery.Curve448: _a :: Fq
- Curve.Montgomery.Curve448: _b :: Fq
- Curve.Montgomery.Curve448: _h :: Integer
- Curve.Montgomery.Curve448: _q :: Integer
- Curve.Montgomery.Curve448: _r :: Integer
- Curve.Montgomery.Curve448: _x :: Fq
- Curve.Montgomery.Curve448: _y :: Fq
- Curve.Montgomery.Curve448: data Curve448
- Curve.Montgomery.Curve448: gA :: PA
- Curve.Montgomery.Curve448: instance Curve.Curve 'Curve.Montgomery c Curve.Montgomery.Curve448.Curve448 Curve.Montgomery.Curve448.Fq Curve.Montgomery.Curve448.Fr => Curve.Montgomery.MCurve c Curve.Montgomery.Curve448.Curve448 Curve.Montgomery.Curve448.Fq Curve.Montgomery.Curve448.Fr
- Curve.Montgomery.Curve448: instance Curve.Montgomery.MACurve Curve.Montgomery.Curve448.Curve448 Curve.Montgomery.Curve448.Fq Curve.Montgomery.Curve448.Fr
- Curve.Montgomery.Curve448: type Fq = PrimeField 726838724295606890549323807888004534353641360687318060281490199180612328166730772686396383698676545930088884461843637361053498018365439
- Curve.Montgomery.Curve448: type Fr = PrimeField 181709681073901722637330951972001133588410340171829515070372549795146003961539585716195755291692375963310293709091662304773755859649779
- Curve.Montgomery.Curve448: type PA = MAPoint Curve448 Fq Fr
- Curve.Montgomery.M221: _a :: Fq
- Curve.Montgomery.M221: _b :: Fq
- Curve.Montgomery.M221: _h :: Integer
- Curve.Montgomery.M221: _q :: Integer
- Curve.Montgomery.M221: _r :: Integer
- Curve.Montgomery.M221: _x :: Fq
- Curve.Montgomery.M221: _y :: Fq
- Curve.Montgomery.M221: data M221
- Curve.Montgomery.M221: gA :: PA
- Curve.Montgomery.M221: instance Curve.Curve 'Curve.Montgomery c Curve.Montgomery.M221.M221 Curve.Montgomery.M221.Fq Curve.Montgomery.M221.Fr => Curve.Montgomery.MCurve c Curve.Montgomery.M221.M221 Curve.Montgomery.M221.Fq Curve.Montgomery.M221.Fr
- Curve.Montgomery.M221: instance Curve.Montgomery.MACurve Curve.Montgomery.M221.M221 Curve.Montgomery.M221.Fq Curve.Montgomery.M221.Fr
- Curve.Montgomery.M221: type Fq = PrimeField 3369993333393829974333376885877453834204643052817571560137951281149
- Curve.Montgomery.M221: type Fr = PrimeField 421249166674228746791672110734682167926895081980396304944335052891
- Curve.Montgomery.M221: type PA = MAPoint M221 Fq Fr
- Curve.Montgomery.M383: _a :: Fq
- Curve.Montgomery.M383: _b :: Fq
- Curve.Montgomery.M383: _h :: Integer
- Curve.Montgomery.M383: _q :: Integer
- Curve.Montgomery.M383: _r :: Integer
- Curve.Montgomery.M383: _x :: Fq
- Curve.Montgomery.M383: _y :: Fq
- Curve.Montgomery.M383: data M383
- Curve.Montgomery.M383: gA :: PA
- Curve.Montgomery.M383: instance Curve.Curve 'Curve.Montgomery c Curve.Montgomery.M383.M383 Curve.Montgomery.M383.Fq Curve.Montgomery.M383.Fr => Curve.Montgomery.MCurve c Curve.Montgomery.M383.M383 Curve.Montgomery.M383.Fq Curve.Montgomery.M383.Fr
- Curve.Montgomery.M383: instance Curve.Montgomery.MACurve Curve.Montgomery.M383.M383 Curve.Montgomery.M383.Fq Curve.Montgomery.M383.Fr
- Curve.Montgomery.M383: type Fq = PrimeField 19701003098197239606139520050071806902539869635232723333974146702122860885748605305707133127442457820403313995153221
- Curve.Montgomery.M383: type Fr = PrimeField 2462625387274654950767440006258975862817483704404090416746934574041288984234680883008327183083615266784870011007447
- Curve.Montgomery.M383: type PA = MAPoint M383 Fq Fr
- Curve.Montgomery.M511: _a :: Fq
- Curve.Montgomery.M511: _b :: Fq
- Curve.Montgomery.M511: _h :: Integer
- Curve.Montgomery.M511: _q :: Integer
- Curve.Montgomery.M511: _r :: Integer
- Curve.Montgomery.M511: _x :: Fq
- Curve.Montgomery.M511: _y :: Fq
- Curve.Montgomery.M511: data M511
- Curve.Montgomery.M511: gA :: PA
- Curve.Montgomery.M511: instance Curve.Curve 'Curve.Montgomery c Curve.Montgomery.M511.M511 Curve.Montgomery.M511.Fq Curve.Montgomery.M511.Fr => Curve.Montgomery.MCurve c Curve.Montgomery.M511.M511 Curve.Montgomery.M511.Fq Curve.Montgomery.M511.Fr
- Curve.Montgomery.M511: instance Curve.Montgomery.MACurve Curve.Montgomery.M511.M511 Curve.Montgomery.M511.Fq Curve.Montgomery.M511.Fr
- Curve.Montgomery.M511: type Fq = PrimeField 6703903964971298549787012499102923063739682910296196688861780721860882015036773488400937149083451713845015929093243025426876941405973284973216824503041861
- Curve.Montgomery.M511: type Fr = PrimeField 837987995621412318723376562387865382967460363787024586107722590232610251879607410804876779383055508762141059258497448934987052508775626162460930737942299
- Curve.Montgomery.M511: type PA = MAPoint M511 Fq Fr
- Curve.Weierstrass: -- | Curve point.
- Curve.Weierstrass: Affine :: Coordinates
- Curve.Weierstrass: Binary :: Form
- Curve.Weierstrass: Edwards :: Form
- Curve.Weierstrass: Jacobian :: Coordinates
- Curve.Weierstrass: Montgomery :: Form
- Curve.Weierstrass: Projective :: Coordinates
- Curve.Weierstrass: Weierstrass :: Form
- Curve.Weierstrass: a_ :: WCurve c e q r => WPoint c e q r -> q
- Curve.Weierstrass: add :: Group g => g -> g -> g
- Curve.Weierstrass: b_ :: WCurve c e q r => WPoint c e q r -> q
- Curve.Weierstrass: char :: Curve f c e q r => Point f c e q r -> Integer
- Curve.Weierstrass: class (GaloisField q, PrimeField' r, Group (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where {
- Curve.Weierstrass: class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g
- Curve.Weierstrass: class GaloisField k => PrimeField' k
- Curve.Weierstrass: class WCurve 'Affine e q r => WACurve e q r
- Curve.Weierstrass: class (GaloisField q, PrimeField' r, Curve 'Weierstrass c e q r) => WCurve c e q r
- Curve.Weierstrass: class WCurve 'Jacobian e q r => WJCurve e q r
- Curve.Weierstrass: class WCurve 'Projective e q r => WPCurve e q r
- Curve.Weierstrass: cof :: Curve f c e q r => Point f c e q r -> Integer
- Curve.Weierstrass: data Coordinates
- Curve.Weierstrass: data Form
- Curve.Weierstrass: data family Point f c e q r :: *;
- Curve.Weierstrass: dbl :: Group g => g -> g
- Curve.Weierstrass: def :: Group g => g -> Bool
- Curve.Weierstrass: disc :: Curve f c e q r => Point f c e q r -> q
- Curve.Weierstrass: fromA :: Curve f c e q r => Point f 'Affine e q r -> Point f c e q r
- Curve.Weierstrass: gA_ :: WACurve e q r => WAPoint e q r
- Curve.Weierstrass: gJ_ :: WJCurve e q r => WJPoint e q r
- Curve.Weierstrass: gP_ :: WPCurve e q r => WPPoint e q r
- Curve.Weierstrass: gen :: Group g => g
- Curve.Weierstrass: h_ :: WCurve c e q r => WPoint c e q r -> Integer
- Curve.Weierstrass: id :: Group g => g
- Curve.Weierstrass: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Curve.Point 'Curve.Weierstrass 'Curve.Affine e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Curve.Point 'Curve.Weierstrass 'Curve.Jacobian e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Curve.Point 'Curve.Weierstrass 'Curve.Projective e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WACurve e q r => Curve.Curve 'Curve.Weierstrass 'Curve.Affine e q r
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WACurve e q r => Group.Group (Curve.Weierstrass.WAPoint e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WACurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Curve.Weierstrass.WAPoint e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WJCurve e q r => Curve.Curve 'Curve.Weierstrass 'Curve.Jacobian e q r
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WJCurve e q r => GHC.Classes.Eq (Curve.Weierstrass.WJPoint e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WJCurve e q r => Group.Group (Curve.Weierstrass.WJPoint e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WJCurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Curve.Weierstrass.WJPoint e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WPCurve e q r => Curve.Curve 'Curve.Weierstrass 'Curve.Projective e q r
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WPCurve e q r => GHC.Classes.Eq (Curve.Weierstrass.WPPoint e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WPCurve e q r => Group.Group (Curve.Weierstrass.WPPoint e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. Curve.Weierstrass.WPCurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Curve.Weierstrass.WPPoint e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Classes.Eq q => GHC.Classes.Eq (Curve.Point 'Curve.Weierstrass 'Curve.Affine e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Generics.Generic (Curve.Point 'Curve.Weierstrass 'Curve.Affine e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Generics.Generic (Curve.Point 'Curve.Weierstrass 'Curve.Jacobian e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Generics.Generic (Curve.Point 'Curve.Weierstrass 'Curve.Projective e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Curve.Point 'Curve.Weierstrass 'Curve.Affine e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Curve.Point 'Curve.Weierstrass 'Curve.Jacobian e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Curve.Point 'Curve.Weierstrass 'Curve.Projective e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Curve.Point 'Curve.Weierstrass 'Curve.Affine e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Curve.Point 'Curve.Weierstrass 'Curve.Jacobian e q r)
- Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Curve.Point 'Curve.Weierstrass 'Curve.Projective e q r)
- Curve.Weierstrass: inv :: Group g => g -> g
- Curve.Weierstrass: mul :: Curve f c e q r => Point f c e q r -> r -> Point f c e q r
- Curve.Weierstrass: mul' :: Group g => g -> Integer -> g
- Curve.Weierstrass: order :: Group g => g -> Integer
- Curve.Weierstrass: point :: Curve f c e q r => q -> q -> Maybe (Point f c e q r)
- Curve.Weierstrass: pointX :: Curve f c e q r => q -> Maybe (Point f c e q r)
- Curve.Weierstrass: q_ :: WCurve c e q r => WPoint c e q r -> Integer
- Curve.Weierstrass: r_ :: WCurve c e q r => WPoint c e q r -> Integer
- Curve.Weierstrass: rnd :: (Group g, MonadRandom m) => m g
- Curve.Weierstrass: toA :: Curve f c e q r => Point f c e q r -> Point f 'Affine e q r
- Curve.Weierstrass: type WAPoint = WPoint 'Affine
- Curve.Weierstrass: type WJPoint = WPoint 'Jacobian
- Curve.Weierstrass: type WPPoint = WPoint 'Projective
- Curve.Weierstrass: type WPoint = Point 'Weierstrass
- Curve.Weierstrass: x_ :: WCurve c e q r => WPoint c e q r -> q
- Curve.Weierstrass: yX :: Curve f c e q r => Point f c e q r -> q -> Maybe q
- Curve.Weierstrass: y_ :: WCurve c e q r => WPoint c e q r -> q
- Curve.Weierstrass: }
- Curve.Weierstrass.ANSSIFRP256V1: _a :: Fq
- Curve.Weierstrass.ANSSIFRP256V1: _b :: Fq
- Curve.Weierstrass.ANSSIFRP256V1: _h :: Integer
- Curve.Weierstrass.ANSSIFRP256V1: _q :: Integer
- Curve.Weierstrass.ANSSIFRP256V1: _r :: Integer
- Curve.Weierstrass.ANSSIFRP256V1: _x :: Fq
- Curve.Weierstrass.ANSSIFRP256V1: _y :: Fq
- Curve.Weierstrass.ANSSIFRP256V1: data ANSSIFRP256V1
- Curve.Weierstrass.ANSSIFRP256V1: gA :: PA
- Curve.Weierstrass.ANSSIFRP256V1: gJ :: PJ
- Curve.Weierstrass.ANSSIFRP256V1: gP :: PP
- Curve.Weierstrass.ANSSIFRP256V1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Curve.Weierstrass.ANSSIFRP256V1.Fq Curve.Weierstrass.ANSSIFRP256V1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Curve.Weierstrass.ANSSIFRP256V1.Fq Curve.Weierstrass.ANSSIFRP256V1.Fr
- Curve.Weierstrass.ANSSIFRP256V1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Curve.Weierstrass.ANSSIFRP256V1.Fq Curve.Weierstrass.ANSSIFRP256V1.Fr
- Curve.Weierstrass.ANSSIFRP256V1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Curve.Weierstrass.ANSSIFRP256V1.Fq Curve.Weierstrass.ANSSIFRP256V1.Fr
- Curve.Weierstrass.ANSSIFRP256V1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Curve.Weierstrass.ANSSIFRP256V1.Fq Curve.Weierstrass.ANSSIFRP256V1.Fr
- Curve.Weierstrass.ANSSIFRP256V1: type Fq = PrimeField 109454571331697278617670725030735128145969349647868738157201323556196022393859
- Curve.Weierstrass.ANSSIFRP256V1: type Fr = PrimeField 109454571331697278617670725030735128146004546811402412653072203207726079563233
- Curve.Weierstrass.ANSSIFRP256V1: type PA = WAPoint ANSSIFRP256V1 Fq Fr
- Curve.Weierstrass.ANSSIFRP256V1: type PJ = WJPoint ANSSIFRP256V1 Fq Fr
- Curve.Weierstrass.ANSSIFRP256V1: type PP = WPPoint ANSSIFRP256V1 Fq Fr
- Curve.Weierstrass.Anomalous: _a :: Fq
- Curve.Weierstrass.Anomalous: _b :: Fq
- Curve.Weierstrass.Anomalous: _h :: Integer
- Curve.Weierstrass.Anomalous: _q :: Integer
- Curve.Weierstrass.Anomalous: _r :: Integer
- Curve.Weierstrass.Anomalous: _x :: Fq
- Curve.Weierstrass.Anomalous: _y :: Fq
- Curve.Weierstrass.Anomalous: data Anomalous
- Curve.Weierstrass.Anomalous: gA :: PA
- Curve.Weierstrass.Anomalous: gJ :: PJ
- Curve.Weierstrass.Anomalous: gP :: PP
- Curve.Weierstrass.Anomalous: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.Anomalous.Anomalous Curve.Weierstrass.Anomalous.Fq Curve.Weierstrass.Anomalous.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.Anomalous.Anomalous Curve.Weierstrass.Anomalous.Fq Curve.Weierstrass.Anomalous.Fr
- Curve.Weierstrass.Anomalous: instance Curve.Weierstrass.WACurve Curve.Weierstrass.Anomalous.Anomalous Curve.Weierstrass.Anomalous.Fq Curve.Weierstrass.Anomalous.Fr
- Curve.Weierstrass.Anomalous: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.Anomalous.Anomalous Curve.Weierstrass.Anomalous.Fq Curve.Weierstrass.Anomalous.Fr
- Curve.Weierstrass.Anomalous: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.Anomalous.Anomalous Curve.Weierstrass.Anomalous.Fq Curve.Weierstrass.Anomalous.Fr
- Curve.Weierstrass.Anomalous: type Fq = PrimeField 17676318486848893030961583018778670610489016512983351739677143
- Curve.Weierstrass.Anomalous: type Fr = PrimeField 17676318486848893030961583018778670610489016512983351739677143
- Curve.Weierstrass.Anomalous: type PA = WAPoint Anomalous Fq Fr
- Curve.Weierstrass.Anomalous: type PJ = WJPoint Anomalous Fq Fr
- Curve.Weierstrass.Anomalous: type PP = WPPoint Anomalous Fq Fr
- Curve.Weierstrass.BLS12381: _a :: Fq
- Curve.Weierstrass.BLS12381: _b :: Fq
- Curve.Weierstrass.BLS12381: _h :: Integer
- Curve.Weierstrass.BLS12381: _q :: Integer
- Curve.Weierstrass.BLS12381: _r :: Integer
- Curve.Weierstrass.BLS12381: _x :: Fq
- Curve.Weierstrass.BLS12381: _y :: Fq
- Curve.Weierstrass.BLS12381: data BLS12381
- Curve.Weierstrass.BLS12381: gA :: PA
- Curve.Weierstrass.BLS12381: gJ :: PJ
- Curve.Weierstrass.BLS12381: gP :: PP
- Curve.Weierstrass.BLS12381: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BLS12381.BLS12381 Curve.Weierstrass.BLS12381.Fq Curve.Weierstrass.BLS12381.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BLS12381.BLS12381 Curve.Weierstrass.BLS12381.Fq Curve.Weierstrass.BLS12381.Fr
- Curve.Weierstrass.BLS12381: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BLS12381.BLS12381 Curve.Weierstrass.BLS12381.Fq Curve.Weierstrass.BLS12381.Fr
- Curve.Weierstrass.BLS12381: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BLS12381.BLS12381 Curve.Weierstrass.BLS12381.Fq Curve.Weierstrass.BLS12381.Fr
- Curve.Weierstrass.BLS12381: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BLS12381.BLS12381 Curve.Weierstrass.BLS12381.Fq Curve.Weierstrass.BLS12381.Fr
- Curve.Weierstrass.BLS12381: type Fq = PrimeField 4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787
- Curve.Weierstrass.BLS12381: type Fr = PrimeField 52435875175126190479447740508185965837690552500527637822603658699938581184513
- Curve.Weierstrass.BLS12381: type PA = WAPoint BLS12381 Fq Fr
- Curve.Weierstrass.BLS12381: type PJ = WJPoint BLS12381 Fq Fr
- Curve.Weierstrass.BLS12381: type PP = WPPoint BLS12381 Fq Fr
- Curve.Weierstrass.BLS12381T: _a :: Fq2
- Curve.Weierstrass.BLS12381T: _b :: Fq2
- Curve.Weierstrass.BLS12381T: _h :: Integer
- Curve.Weierstrass.BLS12381T: _q :: Integer
- Curve.Weierstrass.BLS12381T: _r :: Integer
- Curve.Weierstrass.BLS12381T: _x :: Fq2
- Curve.Weierstrass.BLS12381T: _y :: Fq2
- Curve.Weierstrass.BLS12381T: data BLS12381T
- Curve.Weierstrass.BLS12381T: data PolynomialU
- Curve.Weierstrass.BLS12381T: gA :: PA
- Curve.Weierstrass.BLS12381T: gJ :: PJ
- Curve.Weierstrass.BLS12381T: gP :: PP
- Curve.Weierstrass.BLS12381T: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BLS12381T.BLS12381T Curve.Weierstrass.BLS12381T.Fq2 Curve.Weierstrass.BLS12381T.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BLS12381T.BLS12381T Curve.Weierstrass.BLS12381T.Fq2 Curve.Weierstrass.BLS12381T.Fr
- Curve.Weierstrass.BLS12381T: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BLS12381T.BLS12381T Curve.Weierstrass.BLS12381T.Fq2 Curve.Weierstrass.BLS12381T.Fr
- Curve.Weierstrass.BLS12381T: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BLS12381T.BLS12381T Curve.Weierstrass.BLS12381T.Fq2 Curve.Weierstrass.BLS12381T.Fr
- Curve.Weierstrass.BLS12381T: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BLS12381T.BLS12381T Curve.Weierstrass.BLS12381T.Fq2 Curve.Weierstrass.BLS12381T.Fr
- Curve.Weierstrass.BLS12381T: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BLS12381.Fq Curve.Weierstrass.BLS12381T.PolynomialU
- Curve.Weierstrass.BLS12381T: type Fq2 = ExtensionField Fq PolynomialU
- Curve.Weierstrass.BLS12381T: type Fr = PrimeField 52435875175126190479447740508185965837690552500527637822603658699938581184513
- Curve.Weierstrass.BLS12381T: type PA = WAPoint BLS12381T Fq2 Fr
- Curve.Weierstrass.BLS12381T: type PJ = WJPoint BLS12381T Fq2 Fr
- Curve.Weierstrass.BLS12381T: type PP = WPPoint BLS12381T Fq2 Fr
- Curve.Weierstrass.BLS48581: _a :: Fq
- Curve.Weierstrass.BLS48581: _b :: Fq
- Curve.Weierstrass.BLS48581: _h :: Integer
- Curve.Weierstrass.BLS48581: _q :: Integer
- Curve.Weierstrass.BLS48581: _r :: Integer
- Curve.Weierstrass.BLS48581: _x :: Fq
- Curve.Weierstrass.BLS48581: _y :: Fq
- Curve.Weierstrass.BLS48581: data BLS48581
- Curve.Weierstrass.BLS48581: gA :: PA
- Curve.Weierstrass.BLS48581: gJ :: PJ
- Curve.Weierstrass.BLS48581: gP :: PP
- Curve.Weierstrass.BLS48581: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BLS48581.BLS48581 Curve.Weierstrass.BLS48581.Fq Curve.Weierstrass.BLS48581.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BLS48581.BLS48581 Curve.Weierstrass.BLS48581.Fq Curve.Weierstrass.BLS48581.Fr
- Curve.Weierstrass.BLS48581: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BLS48581.BLS48581 Curve.Weierstrass.BLS48581.Fq Curve.Weierstrass.BLS48581.Fr
- Curve.Weierstrass.BLS48581: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BLS48581.BLS48581 Curve.Weierstrass.BLS48581.Fq Curve.Weierstrass.BLS48581.Fr
- Curve.Weierstrass.BLS48581: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BLS48581.BLS48581 Curve.Weierstrass.BLS48581.Fq Curve.Weierstrass.BLS48581.Fr
- Curve.Weierstrass.BLS48581: type Fq = PrimeField 4576545538729420598762745822889397370509838601207708465545582186285824315458656151272834027217178198654229063318759931344008864619718319130560845441720114764111976549023322411
- Curve.Weierstrass.BLS48581: type Fr = PrimeField 476342299743339008482451055637099285448102090246347886165811576342746904451443552831892849773706409097740116059681046950759420830087773258940488535108951041
- Curve.Weierstrass.BLS48581: type PA = WAPoint BLS48581 Fq Fr
- Curve.Weierstrass.BLS48581: type PJ = WJPoint BLS48581 Fq Fr
- Curve.Weierstrass.BLS48581: type PP = WPPoint BLS48581 Fq Fr
- Curve.Weierstrass.BLS48581T: _a :: Fq8
- Curve.Weierstrass.BLS48581T: _b :: Fq8
- Curve.Weierstrass.BLS48581T: _h :: Integer
- Curve.Weierstrass.BLS48581T: _q :: Integer
- Curve.Weierstrass.BLS48581T: _r :: Integer
- Curve.Weierstrass.BLS48581T: _x :: Fq8
- Curve.Weierstrass.BLS48581T: _y :: Fq8
- Curve.Weierstrass.BLS48581T: data BLS48581T
- Curve.Weierstrass.BLS48581T: data PolynomialU
- Curve.Weierstrass.BLS48581T: data PolynomialV
- Curve.Weierstrass.BLS48581T: data PolynomialW
- Curve.Weierstrass.BLS48581T: gA :: PA
- Curve.Weierstrass.BLS48581T: gJ :: PJ
- Curve.Weierstrass.BLS48581T: gP :: PP
- Curve.Weierstrass.BLS48581T: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BLS48581T.BLS48581T Curve.Weierstrass.BLS48581T.Fq8 Curve.Weierstrass.BLS48581T.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BLS48581T.BLS48581T Curve.Weierstrass.BLS48581T.Fq8 Curve.Weierstrass.BLS48581T.Fr
- Curve.Weierstrass.BLS48581T: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BLS48581T.BLS48581T Curve.Weierstrass.BLS48581T.Fq8 Curve.Weierstrass.BLS48581T.Fr
- Curve.Weierstrass.BLS48581T: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BLS48581T.BLS48581T Curve.Weierstrass.BLS48581T.Fq8 Curve.Weierstrass.BLS48581T.Fr
- Curve.Weierstrass.BLS48581T: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BLS48581T.BLS48581T Curve.Weierstrass.BLS48581T.Fq8 Curve.Weierstrass.BLS48581T.Fr
- Curve.Weierstrass.BLS48581T: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BLS48581.Fq Curve.Weierstrass.BLS48581T.PolynomialU
- Curve.Weierstrass.BLS48581T: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BLS48581T.Fq2 Curve.Weierstrass.BLS48581T.PolynomialV
- Curve.Weierstrass.BLS48581T: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BLS48581T.Fq4 Curve.Weierstrass.BLS48581T.PolynomialW
- Curve.Weierstrass.BLS48581T: type Fq2 = ExtensionField Fq PolynomialU
- Curve.Weierstrass.BLS48581T: type Fq4 = ExtensionField Fq2 PolynomialV
- Curve.Weierstrass.BLS48581T: type Fq8 = ExtensionField Fq4 PolynomialW
- Curve.Weierstrass.BLS48581T: type Fr = PrimeField 476342299743339008482451055637099285448102090246347886165811576342746904451443552831892849773706409097740116059681046950759420830087773258940488535108951041
- Curve.Weierstrass.BLS48581T: type PA = WAPoint BLS48581T Fq8 Fr
- Curve.Weierstrass.BLS48581T: type PJ = WJPoint BLS48581T Fq8 Fr
- Curve.Weierstrass.BLS48581T: type PP = WPPoint BLS48581T Fq8 Fr
- Curve.Weierstrass.BN224: _a :: Fq
- Curve.Weierstrass.BN224: _b :: Fq
- Curve.Weierstrass.BN224: _h :: Integer
- Curve.Weierstrass.BN224: _q :: Integer
- Curve.Weierstrass.BN224: _r :: Integer
- Curve.Weierstrass.BN224: _x :: Fq
- Curve.Weierstrass.BN224: _y :: Fq
- Curve.Weierstrass.BN224: data BN224
- Curve.Weierstrass.BN224: gA :: PA
- Curve.Weierstrass.BN224: gJ :: PJ
- Curve.Weierstrass.BN224: gP :: PP
- Curve.Weierstrass.BN224: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN224.BN224 Curve.Weierstrass.BN224.Fq Curve.Weierstrass.BN224.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN224.BN224 Curve.Weierstrass.BN224.Fq Curve.Weierstrass.BN224.Fr
- Curve.Weierstrass.BN224: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN224.BN224 Curve.Weierstrass.BN224.Fq Curve.Weierstrass.BN224.Fr
- Curve.Weierstrass.BN224: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN224.BN224 Curve.Weierstrass.BN224.Fq Curve.Weierstrass.BN224.Fr
- Curve.Weierstrass.BN224: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN224.BN224 Curve.Weierstrass.BN224.Fq Curve.Weierstrass.BN224.Fr
- Curve.Weierstrass.BN224: type Fq = PrimeField 26959946667149205758383469736921695435015736735261155141423417423923
- Curve.Weierstrass.BN224: type Fr = PrimeField 26959946667149205758383469736921690242718878200571531029749235996909
- Curve.Weierstrass.BN224: type PA = WAPoint BN224 Fq Fr
- Curve.Weierstrass.BN224: type PJ = WJPoint BN224 Fq Fr
- Curve.Weierstrass.BN224: type PP = WPPoint BN224 Fq Fr
- Curve.Weierstrass.BN254: _a :: Fq
- Curve.Weierstrass.BN254: _b :: Fq
- Curve.Weierstrass.BN254: _h :: Integer
- Curve.Weierstrass.BN254: _q :: Integer
- Curve.Weierstrass.BN254: _r :: Integer
- Curve.Weierstrass.BN254: _x :: Fq
- Curve.Weierstrass.BN254: _y :: Fq
- Curve.Weierstrass.BN254: data BN254
- Curve.Weierstrass.BN254: gA :: PA
- Curve.Weierstrass.BN254: gJ :: PJ
- Curve.Weierstrass.BN254: gP :: PP
- Curve.Weierstrass.BN254: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN254.BN254 Curve.Weierstrass.BN254.Fq Curve.Weierstrass.BN254.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN254.BN254 Curve.Weierstrass.BN254.Fq Curve.Weierstrass.BN254.Fr
- Curve.Weierstrass.BN254: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN254.BN254 Curve.Weierstrass.BN254.Fq Curve.Weierstrass.BN254.Fr
- Curve.Weierstrass.BN254: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN254.BN254 Curve.Weierstrass.BN254.Fq Curve.Weierstrass.BN254.Fr
- Curve.Weierstrass.BN254: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN254.BN254 Curve.Weierstrass.BN254.Fq Curve.Weierstrass.BN254.Fr
- Curve.Weierstrass.BN254: type Fq = PrimeField 21888242871839275222246405745257275088696311157297823662689037894645226208583
- Curve.Weierstrass.BN254: type Fr = PrimeField 21888242871839275222246405745257275088548364400416034343698204186575808495617
- Curve.Weierstrass.BN254: type PA = WAPoint BN254 Fq Fr
- Curve.Weierstrass.BN254: type PJ = WJPoint BN254 Fq Fr
- Curve.Weierstrass.BN254: type PP = WPPoint BN254 Fq Fr
- Curve.Weierstrass.BN254A: _a :: Fq
- Curve.Weierstrass.BN254A: _b :: Fq
- Curve.Weierstrass.BN254A: _h :: Integer
- Curve.Weierstrass.BN254A: _q :: Integer
- Curve.Weierstrass.BN254A: _r :: Integer
- Curve.Weierstrass.BN254A: _x :: Fq
- Curve.Weierstrass.BN254A: _y :: Fq
- Curve.Weierstrass.BN254A: data BN254A
- Curve.Weierstrass.BN254A: gA :: PA
- Curve.Weierstrass.BN254A: gJ :: PJ
- Curve.Weierstrass.BN254A: gP :: PP
- Curve.Weierstrass.BN254A: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN254A.BN254A Curve.Weierstrass.BN254A.Fq Curve.Weierstrass.BN254A.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN254A.BN254A Curve.Weierstrass.BN254A.Fq Curve.Weierstrass.BN254A.Fr
- Curve.Weierstrass.BN254A: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN254A.BN254A Curve.Weierstrass.BN254A.Fq Curve.Weierstrass.BN254A.Fr
- Curve.Weierstrass.BN254A: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN254A.BN254A Curve.Weierstrass.BN254A.Fq Curve.Weierstrass.BN254A.Fr
- Curve.Weierstrass.BN254A: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN254A.BN254A Curve.Weierstrass.BN254A.Fq Curve.Weierstrass.BN254A.Fr
- Curve.Weierstrass.BN254A: type Fq = PrimeField 16030569034403128277756688287498649515636838101184337499778392980116222246913
- Curve.Weierstrass.BN254A: type Fr = PrimeField 16030569034403128277756688287498649515510226217719936227669524443298095169537
- Curve.Weierstrass.BN254A: type PA = WAPoint BN254A Fq Fr
- Curve.Weierstrass.BN254A: type PJ = WJPoint BN254A Fq Fr
- Curve.Weierstrass.BN254A: type PP = WPPoint BN254A Fq Fr
- Curve.Weierstrass.BN254AT: _a :: Fq2
- Curve.Weierstrass.BN254AT: _b :: Fq2
- Curve.Weierstrass.BN254AT: _h :: Integer
- Curve.Weierstrass.BN254AT: _q :: Integer
- Curve.Weierstrass.BN254AT: _r :: Integer
- Curve.Weierstrass.BN254AT: _x :: Fq2
- Curve.Weierstrass.BN254AT: _y :: Fq2
- Curve.Weierstrass.BN254AT: data BN254AT
- Curve.Weierstrass.BN254AT: data PolynomialU
- Curve.Weierstrass.BN254AT: gA :: PA
- Curve.Weierstrass.BN254AT: gJ :: PJ
- Curve.Weierstrass.BN254AT: gP :: PP
- Curve.Weierstrass.BN254AT: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN254AT.BN254AT Curve.Weierstrass.BN254AT.Fq2 Curve.Weierstrass.BN254AT.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN254AT.BN254AT Curve.Weierstrass.BN254AT.Fq2 Curve.Weierstrass.BN254AT.Fr
- Curve.Weierstrass.BN254AT: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN254AT.BN254AT Curve.Weierstrass.BN254AT.Fq2 Curve.Weierstrass.BN254AT.Fr
- Curve.Weierstrass.BN254AT: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN254AT.BN254AT Curve.Weierstrass.BN254AT.Fq2 Curve.Weierstrass.BN254AT.Fr
- Curve.Weierstrass.BN254AT: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN254AT.BN254AT Curve.Weierstrass.BN254AT.Fq2 Curve.Weierstrass.BN254AT.Fr
- Curve.Weierstrass.BN254AT: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BN254A.Fq Curve.Weierstrass.BN254AT.PolynomialU
- Curve.Weierstrass.BN254AT: type Fq2 = ExtensionField Fq PolynomialU
- Curve.Weierstrass.BN254AT: type Fr = PrimeField 16030569034403128277756688287498649515510226217719936227669524443298095169537
- Curve.Weierstrass.BN254AT: type PA = WAPoint BN254AT Fq2 Fr
- Curve.Weierstrass.BN254AT: type PJ = WJPoint BN254AT Fq2 Fr
- Curve.Weierstrass.BN254AT: type PP = WPPoint BN254AT Fq2 Fr
- Curve.Weierstrass.BN254B: _a :: Fq
- Curve.Weierstrass.BN254B: _b :: Fq
- Curve.Weierstrass.BN254B: _h :: Integer
- Curve.Weierstrass.BN254B: _q :: Integer
- Curve.Weierstrass.BN254B: _r :: Integer
- Curve.Weierstrass.BN254B: _x :: Fq
- Curve.Weierstrass.BN254B: _y :: Fq
- Curve.Weierstrass.BN254B: data BN254B
- Curve.Weierstrass.BN254B: gA :: PA
- Curve.Weierstrass.BN254B: gJ :: PJ
- Curve.Weierstrass.BN254B: gP :: PP
- Curve.Weierstrass.BN254B: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN254B.BN254B Curve.Weierstrass.BN254B.Fq Curve.Weierstrass.BN254B.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN254B.BN254B Curve.Weierstrass.BN254B.Fq Curve.Weierstrass.BN254B.Fr
- Curve.Weierstrass.BN254B: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN254B.BN254B Curve.Weierstrass.BN254B.Fq Curve.Weierstrass.BN254B.Fr
- Curve.Weierstrass.BN254B: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN254B.BN254B Curve.Weierstrass.BN254B.Fq Curve.Weierstrass.BN254B.Fr
- Curve.Weierstrass.BN254B: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN254B.BN254B Curve.Weierstrass.BN254B.Fq Curve.Weierstrass.BN254B.Fr
- Curve.Weierstrass.BN254B: type Fq = PrimeField 16798108731015832284940804142231733909889187121439069848933715426072753864723
- Curve.Weierstrass.BN254B: type Fr = PrimeField 16798108731015832284940804142231733909759579603404752749028378864165570215949
- Curve.Weierstrass.BN254B: type PA = WAPoint BN254B Fq Fr
- Curve.Weierstrass.BN254B: type PJ = WJPoint BN254B Fq Fr
- Curve.Weierstrass.BN254B: type PP = WPPoint BN254B Fq Fr
- Curve.Weierstrass.BN254BT: _a :: Fq2
- Curve.Weierstrass.BN254BT: _b :: Fq2
- Curve.Weierstrass.BN254BT: _h :: Integer
- Curve.Weierstrass.BN254BT: _q :: Integer
- Curve.Weierstrass.BN254BT: _r :: Integer
- Curve.Weierstrass.BN254BT: _x :: Fq2
- Curve.Weierstrass.BN254BT: _y :: Fq2
- Curve.Weierstrass.BN254BT: data BN254BT
- Curve.Weierstrass.BN254BT: data PolynomialU
- Curve.Weierstrass.BN254BT: gA :: PA
- Curve.Weierstrass.BN254BT: gJ :: PJ
- Curve.Weierstrass.BN254BT: gP :: PP
- Curve.Weierstrass.BN254BT: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN254BT.BN254BT Curve.Weierstrass.BN254BT.Fq2 Curve.Weierstrass.BN254BT.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN254BT.BN254BT Curve.Weierstrass.BN254BT.Fq2 Curve.Weierstrass.BN254BT.Fr
- Curve.Weierstrass.BN254BT: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN254BT.BN254BT Curve.Weierstrass.BN254BT.Fq2 Curve.Weierstrass.BN254BT.Fr
- Curve.Weierstrass.BN254BT: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN254BT.BN254BT Curve.Weierstrass.BN254BT.Fq2 Curve.Weierstrass.BN254BT.Fr
- Curve.Weierstrass.BN254BT: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN254BT.BN254BT Curve.Weierstrass.BN254BT.Fq2 Curve.Weierstrass.BN254BT.Fr
- Curve.Weierstrass.BN254BT: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BN254B.Fq Curve.Weierstrass.BN254BT.PolynomialU
- Curve.Weierstrass.BN254BT: type Fq2 = ExtensionField Fq PolynomialU
- Curve.Weierstrass.BN254BT: type Fr = PrimeField 16798108731015832284940804142231733909759579603404752749028378864165570215949
- Curve.Weierstrass.BN254BT: type PA = WAPoint BN254BT Fq2 Fr
- Curve.Weierstrass.BN254BT: type PJ = WJPoint BN254BT Fq2 Fr
- Curve.Weierstrass.BN254BT: type PP = WPPoint BN254BT Fq2 Fr
- Curve.Weierstrass.BN254T: _a :: Fq2
- Curve.Weierstrass.BN254T: _b :: Fq2
- Curve.Weierstrass.BN254T: _h :: Integer
- Curve.Weierstrass.BN254T: _q :: Integer
- Curve.Weierstrass.BN254T: _r :: Integer
- Curve.Weierstrass.BN254T: _x :: Fq2
- Curve.Weierstrass.BN254T: _y :: Fq2
- Curve.Weierstrass.BN254T: data BN254T
- Curve.Weierstrass.BN254T: data PolynomialU
- Curve.Weierstrass.BN254T: gA :: PA
- Curve.Weierstrass.BN254T: gJ :: PJ
- Curve.Weierstrass.BN254T: gP :: PP
- Curve.Weierstrass.BN254T: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN254T.BN254T Curve.Weierstrass.BN254T.Fq2 Curve.Weierstrass.BN254T.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN254T.BN254T Curve.Weierstrass.BN254T.Fq2 Curve.Weierstrass.BN254T.Fr
- Curve.Weierstrass.BN254T: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN254T.BN254T Curve.Weierstrass.BN254T.Fq2 Curve.Weierstrass.BN254T.Fr
- Curve.Weierstrass.BN254T: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN254T.BN254T Curve.Weierstrass.BN254T.Fq2 Curve.Weierstrass.BN254T.Fr
- Curve.Weierstrass.BN254T: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN254T.BN254T Curve.Weierstrass.BN254T.Fq2 Curve.Weierstrass.BN254T.Fr
- Curve.Weierstrass.BN254T: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BN254.Fq Curve.Weierstrass.BN254T.PolynomialU
- Curve.Weierstrass.BN254T: type Fq2 = ExtensionField Fq PolynomialU
- Curve.Weierstrass.BN254T: type Fr = PrimeField 21888242871839275222246405745257275088548364400416034343698204186575808495617
- Curve.Weierstrass.BN254T: type PA = WAPoint BN254T Fq2 Fr
- Curve.Weierstrass.BN254T: type PJ = WJPoint BN254T Fq2 Fr
- Curve.Weierstrass.BN254T: type PP = WPPoint BN254T Fq2 Fr
- Curve.Weierstrass.BN256: _a :: Fq
- Curve.Weierstrass.BN256: _b :: Fq
- Curve.Weierstrass.BN256: _h :: Integer
- Curve.Weierstrass.BN256: _q :: Integer
- Curve.Weierstrass.BN256: _r :: Integer
- Curve.Weierstrass.BN256: _x :: Fq
- Curve.Weierstrass.BN256: _y :: Fq
- Curve.Weierstrass.BN256: data BN256
- Curve.Weierstrass.BN256: gA :: PA
- Curve.Weierstrass.BN256: gJ :: PJ
- Curve.Weierstrass.BN256: gP :: PP
- Curve.Weierstrass.BN256: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN256.BN256 Curve.Weierstrass.BN256.Fq Curve.Weierstrass.BN256.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN256.BN256 Curve.Weierstrass.BN256.Fq Curve.Weierstrass.BN256.Fr
- Curve.Weierstrass.BN256: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN256.BN256 Curve.Weierstrass.BN256.Fq Curve.Weierstrass.BN256.Fr
- Curve.Weierstrass.BN256: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN256.BN256 Curve.Weierstrass.BN256.Fq Curve.Weierstrass.BN256.Fr
- Curve.Weierstrass.BN256: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN256.BN256 Curve.Weierstrass.BN256.Fq Curve.Weierstrass.BN256.Fr
- Curve.Weierstrass.BN256: type Fq = PrimeField 115792089237314936872688561244471742058375878355761205198700409522629664518163
- Curve.Weierstrass.BN256: type Fr = PrimeField 115792089237314936872688561244471742058035595988840268584488757999429535617037
- Curve.Weierstrass.BN256: type PA = WAPoint BN256 Fq Fr
- Curve.Weierstrass.BN256: type PJ = WJPoint BN256 Fq Fr
- Curve.Weierstrass.BN256: type PP = WPPoint BN256 Fq Fr
- Curve.Weierstrass.BN384: _a :: Fq
- Curve.Weierstrass.BN384: _b :: Fq
- Curve.Weierstrass.BN384: _h :: Integer
- Curve.Weierstrass.BN384: _q :: Integer
- Curve.Weierstrass.BN384: _r :: Integer
- Curve.Weierstrass.BN384: _x :: Fq
- Curve.Weierstrass.BN384: _y :: Fq
- Curve.Weierstrass.BN384: data BN384
- Curve.Weierstrass.BN384: gA :: PA
- Curve.Weierstrass.BN384: gJ :: PJ
- Curve.Weierstrass.BN384: gP :: PP
- Curve.Weierstrass.BN384: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN384.BN384 Curve.Weierstrass.BN384.Fq Curve.Weierstrass.BN384.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN384.BN384 Curve.Weierstrass.BN384.Fq Curve.Weierstrass.BN384.Fr
- Curve.Weierstrass.BN384: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN384.BN384 Curve.Weierstrass.BN384.Fq Curve.Weierstrass.BN384.Fr
- Curve.Weierstrass.BN384: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN384.BN384 Curve.Weierstrass.BN384.Fq Curve.Weierstrass.BN384.Fr
- Curve.Weierstrass.BN384: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN384.BN384 Curve.Weierstrass.BN384.Fq Curve.Weierstrass.BN384.Fr
- Curve.Weierstrass.BN384: type Fq = PrimeField 39402006196394479212278605372068645601647601647604977711041989197213181721117185302456933847594895764913993728971019
- Curve.Weierstrass.BN384: type Fr = PrimeField 39402006196394479212278605372068645601647601647604977711035712095477795040353349547661912204165862202002491141937013
- Curve.Weierstrass.BN384: type PA = WAPoint BN384 Fq Fr
- Curve.Weierstrass.BN384: type PJ = WJPoint BN384 Fq Fr
- Curve.Weierstrass.BN384: type PP = WPPoint BN384 Fq Fr
- Curve.Weierstrass.BN462: _a :: Fq
- Curve.Weierstrass.BN462: _b :: Fq
- Curve.Weierstrass.BN462: _h :: Integer
- Curve.Weierstrass.BN462: _q :: Integer
- Curve.Weierstrass.BN462: _r :: Integer
- Curve.Weierstrass.BN462: _x :: Fq
- Curve.Weierstrass.BN462: _y :: Fq
- Curve.Weierstrass.BN462: data BN462
- Curve.Weierstrass.BN462: gA :: PA
- Curve.Weierstrass.BN462: gJ :: PJ
- Curve.Weierstrass.BN462: gP :: PP
- Curve.Weierstrass.BN462: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN462.BN462 Curve.Weierstrass.BN462.Fq Curve.Weierstrass.BN462.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN462.BN462 Curve.Weierstrass.BN462.Fq Curve.Weierstrass.BN462.Fr
- Curve.Weierstrass.BN462: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN462.BN462 Curve.Weierstrass.BN462.Fq Curve.Weierstrass.BN462.Fr
- Curve.Weierstrass.BN462: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN462.BN462 Curve.Weierstrass.BN462.Fq Curve.Weierstrass.BN462.Fr
- Curve.Weierstrass.BN462: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN462.BN462 Curve.Weierstrass.BN462.Fq Curve.Weierstrass.BN462.Fr
- Curve.Weierstrass.BN462: type Fq = PrimeField 6701817056313037086248947066310538444882082605308124576230408038843357549886356779857393369967010764802541005796711440355753503701056323603
- Curve.Weierstrass.BN462: type Fr = PrimeField 6701817056313037086248947066310538444882082605308124576230408038843354961099564416871567745979441241809893679037520753402159179772451651597
- Curve.Weierstrass.BN462: type PA = WAPoint BN462 Fq Fr
- Curve.Weierstrass.BN462: type PJ = WJPoint BN462 Fq Fr
- Curve.Weierstrass.BN462: type PP = WPPoint BN462 Fq Fr
- Curve.Weierstrass.BN462T: _a :: Fq2
- Curve.Weierstrass.BN462T: _b :: Fq2
- Curve.Weierstrass.BN462T: _h :: Integer
- Curve.Weierstrass.BN462T: _q :: Integer
- Curve.Weierstrass.BN462T: _r :: Integer
- Curve.Weierstrass.BN462T: _x :: Fq2
- Curve.Weierstrass.BN462T: _y :: Fq2
- Curve.Weierstrass.BN462T: data BN462T
- Curve.Weierstrass.BN462T: data PolynomialU
- Curve.Weierstrass.BN462T: gA :: PA
- Curve.Weierstrass.BN462T: gJ :: PJ
- Curve.Weierstrass.BN462T: gP :: PP
- Curve.Weierstrass.BN462T: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN462T.BN462T Curve.Weierstrass.BN462T.Fq2 Curve.Weierstrass.BN462T.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN462T.BN462T Curve.Weierstrass.BN462T.Fq2 Curve.Weierstrass.BN462T.Fr
- Curve.Weierstrass.BN462T: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN462T.BN462T Curve.Weierstrass.BN462T.Fq2 Curve.Weierstrass.BN462T.Fr
- Curve.Weierstrass.BN462T: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN462T.BN462T Curve.Weierstrass.BN462T.Fq2 Curve.Weierstrass.BN462T.Fr
- Curve.Weierstrass.BN462T: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN462T.BN462T Curve.Weierstrass.BN462T.Fq2 Curve.Weierstrass.BN462T.Fr
- Curve.Weierstrass.BN462T: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BN462.Fq Curve.Weierstrass.BN462T.PolynomialU
- Curve.Weierstrass.BN462T: type Fq2 = ExtensionField Fq PolynomialU
- Curve.Weierstrass.BN462T: type Fr = PrimeField 6701817056313037086248947066310538444882082605308124576230408038843354961099564416871567745979441241809893679037520753402159179772451651597
- Curve.Weierstrass.BN462T: type PA = WAPoint BN462T Fq2 Fr
- Curve.Weierstrass.BN462T: type PJ = WJPoint BN462T Fq2 Fr
- Curve.Weierstrass.BN462T: type PP = WPPoint BN462T Fq2 Fr
- Curve.Weierstrass.BN512: _a :: Fq
- Curve.Weierstrass.BN512: _b :: Fq
- Curve.Weierstrass.BN512: _h :: Integer
- Curve.Weierstrass.BN512: _q :: Integer
- Curve.Weierstrass.BN512: _r :: Integer
- Curve.Weierstrass.BN512: _x :: Fq
- Curve.Weierstrass.BN512: _y :: Fq
- Curve.Weierstrass.BN512: data BN512
- Curve.Weierstrass.BN512: gA :: PA
- Curve.Weierstrass.BN512: gJ :: PJ
- Curve.Weierstrass.BN512: gP :: PP
- Curve.Weierstrass.BN512: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BN512.BN512 Curve.Weierstrass.BN512.Fq Curve.Weierstrass.BN512.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BN512.BN512 Curve.Weierstrass.BN512.Fq Curve.Weierstrass.BN512.Fr
- Curve.Weierstrass.BN512: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BN512.BN512 Curve.Weierstrass.BN512.Fq Curve.Weierstrass.BN512.Fr
- Curve.Weierstrass.BN512: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BN512.BN512 Curve.Weierstrass.BN512.Fq Curve.Weierstrass.BN512.Fr
- Curve.Weierstrass.BN512: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BN512.BN512 Curve.Weierstrass.BN512.Fq Curve.Weierstrass.BN512.Fr
- Curve.Weierstrass.BN512: type Fq = PrimeField 13407807929942597099574024998205830437246153344875111580494527427714590099881795845981157516604994291639750834285779043186149750164319950153126044364566323
- Curve.Weierstrass.BN512: type Fr = PrimeField 13407807929942597099574024998205830437246153344875111580494527427714590099881680053891920200409570720654742146445677939306408461754626647833262056300743149
- Curve.Weierstrass.BN512: type PA = WAPoint BN512 Fq Fr
- Curve.Weierstrass.BN512: type PJ = WJPoint BN512 Fq Fr
- Curve.Weierstrass.BN512: type PP = WPPoint BN512 Fq Fr
- Curve.Weierstrass.BrainpoolP160R1: _a :: Fq
- Curve.Weierstrass.BrainpoolP160R1: _b :: Fq
- Curve.Weierstrass.BrainpoolP160R1: _h :: Integer
- Curve.Weierstrass.BrainpoolP160R1: _q :: Integer
- Curve.Weierstrass.BrainpoolP160R1: _r :: Integer
- Curve.Weierstrass.BrainpoolP160R1: _x :: Fq
- Curve.Weierstrass.BrainpoolP160R1: _y :: Fq
- Curve.Weierstrass.BrainpoolP160R1: data BrainpoolP160R1
- Curve.Weierstrass.BrainpoolP160R1: gA :: PA
- Curve.Weierstrass.BrainpoolP160R1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP160R1: gP :: PP
- Curve.Weierstrass.BrainpoolP160R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Curve.Weierstrass.BrainpoolP160R1.Fq Curve.Weierstrass.BrainpoolP160R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Curve.Weierstrass.BrainpoolP160R1.Fq Curve.Weierstrass.BrainpoolP160R1.Fr
- Curve.Weierstrass.BrainpoolP160R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Curve.Weierstrass.BrainpoolP160R1.Fq Curve.Weierstrass.BrainpoolP160R1.Fr
- Curve.Weierstrass.BrainpoolP160R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Curve.Weierstrass.BrainpoolP160R1.Fq Curve.Weierstrass.BrainpoolP160R1.Fr
- Curve.Weierstrass.BrainpoolP160R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Curve.Weierstrass.BrainpoolP160R1.Fq Curve.Weierstrass.BrainpoolP160R1.Fr
- Curve.Weierstrass.BrainpoolP160R1: type Fq = PrimeField 1332297598440044874827085558802491743757193798159
- Curve.Weierstrass.BrainpoolP160R1: type Fr = PrimeField 1332297598440044874827085038830181364212942568457
- Curve.Weierstrass.BrainpoolP160R1: type PA = WAPoint BrainpoolP160R1 Fq Fr
- Curve.Weierstrass.BrainpoolP160R1: type PJ = WJPoint BrainpoolP160R1 Fq Fr
- Curve.Weierstrass.BrainpoolP160R1: type PP = WPPoint BrainpoolP160R1 Fq Fr
- Curve.Weierstrass.BrainpoolP160T1: _a :: Fq
- Curve.Weierstrass.BrainpoolP160T1: _b :: Fq
- Curve.Weierstrass.BrainpoolP160T1: _h :: Integer
- Curve.Weierstrass.BrainpoolP160T1: _q :: Integer
- Curve.Weierstrass.BrainpoolP160T1: _r :: Integer
- Curve.Weierstrass.BrainpoolP160T1: _x :: Fq
- Curve.Weierstrass.BrainpoolP160T1: _y :: Fq
- Curve.Weierstrass.BrainpoolP160T1: data BrainpoolP160T1
- Curve.Weierstrass.BrainpoolP160T1: gA :: PA
- Curve.Weierstrass.BrainpoolP160T1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP160T1: gP :: PP
- Curve.Weierstrass.BrainpoolP160T1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Curve.Weierstrass.BrainpoolP160T1.Fq Curve.Weierstrass.BrainpoolP160T1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Curve.Weierstrass.BrainpoolP160T1.Fq Curve.Weierstrass.BrainpoolP160T1.Fr
- Curve.Weierstrass.BrainpoolP160T1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Curve.Weierstrass.BrainpoolP160T1.Fq Curve.Weierstrass.BrainpoolP160T1.Fr
- Curve.Weierstrass.BrainpoolP160T1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Curve.Weierstrass.BrainpoolP160T1.Fq Curve.Weierstrass.BrainpoolP160T1.Fr
- Curve.Weierstrass.BrainpoolP160T1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Curve.Weierstrass.BrainpoolP160T1.Fq Curve.Weierstrass.BrainpoolP160T1.Fr
- Curve.Weierstrass.BrainpoolP160T1: type Fq = PrimeField 1332297598440044874827085558802491743757193798159
- Curve.Weierstrass.BrainpoolP160T1: type Fr = PrimeField 1332297598440044874827085038830181364212942568457
- Curve.Weierstrass.BrainpoolP160T1: type PA = WAPoint BrainpoolP160T1 Fq Fr
- Curve.Weierstrass.BrainpoolP160T1: type PJ = WJPoint BrainpoolP160T1 Fq Fr
- Curve.Weierstrass.BrainpoolP160T1: type PP = WPPoint BrainpoolP160T1 Fq Fr
- Curve.Weierstrass.BrainpoolP192R1: _a :: Fq
- Curve.Weierstrass.BrainpoolP192R1: _b :: Fq
- Curve.Weierstrass.BrainpoolP192R1: _h :: Integer
- Curve.Weierstrass.BrainpoolP192R1: _q :: Integer
- Curve.Weierstrass.BrainpoolP192R1: _r :: Integer
- Curve.Weierstrass.BrainpoolP192R1: _x :: Fq
- Curve.Weierstrass.BrainpoolP192R1: _y :: Fq
- Curve.Weierstrass.BrainpoolP192R1: data BrainpoolP192R1
- Curve.Weierstrass.BrainpoolP192R1: gA :: PA
- Curve.Weierstrass.BrainpoolP192R1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP192R1: gP :: PP
- Curve.Weierstrass.BrainpoolP192R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Curve.Weierstrass.BrainpoolP192R1.Fq Curve.Weierstrass.BrainpoolP192R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Curve.Weierstrass.BrainpoolP192R1.Fq Curve.Weierstrass.BrainpoolP192R1.Fr
- Curve.Weierstrass.BrainpoolP192R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Curve.Weierstrass.BrainpoolP192R1.Fq Curve.Weierstrass.BrainpoolP192R1.Fr
- Curve.Weierstrass.BrainpoolP192R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Curve.Weierstrass.BrainpoolP192R1.Fq Curve.Weierstrass.BrainpoolP192R1.Fr
- Curve.Weierstrass.BrainpoolP192R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Curve.Weierstrass.BrainpoolP192R1.Fq Curve.Weierstrass.BrainpoolP192R1.Fr
- Curve.Weierstrass.BrainpoolP192R1: type Fq = PrimeField 4781668983906166242955001894344923773259119655253013193367
- Curve.Weierstrass.BrainpoolP192R1: type Fr = PrimeField 4781668983906166242955001894269038308119863659119834868929
- Curve.Weierstrass.BrainpoolP192R1: type PA = WAPoint BrainpoolP192R1 Fq Fr
- Curve.Weierstrass.BrainpoolP192R1: type PJ = WJPoint BrainpoolP192R1 Fq Fr
- Curve.Weierstrass.BrainpoolP192R1: type PP = WPPoint BrainpoolP192R1 Fq Fr
- Curve.Weierstrass.BrainpoolP192T1: _a :: Fq
- Curve.Weierstrass.BrainpoolP192T1: _b :: Fq
- Curve.Weierstrass.BrainpoolP192T1: _h :: Integer
- Curve.Weierstrass.BrainpoolP192T1: _q :: Integer
- Curve.Weierstrass.BrainpoolP192T1: _r :: Integer
- Curve.Weierstrass.BrainpoolP192T1: _x :: Fq
- Curve.Weierstrass.BrainpoolP192T1: _y :: Fq
- Curve.Weierstrass.BrainpoolP192T1: data BrainpoolP192T1
- Curve.Weierstrass.BrainpoolP192T1: gA :: PA
- Curve.Weierstrass.BrainpoolP192T1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP192T1: gP :: PP
- Curve.Weierstrass.BrainpoolP192T1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Curve.Weierstrass.BrainpoolP192T1.Fq Curve.Weierstrass.BrainpoolP192T1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Curve.Weierstrass.BrainpoolP192T1.Fq Curve.Weierstrass.BrainpoolP192T1.Fr
- Curve.Weierstrass.BrainpoolP192T1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Curve.Weierstrass.BrainpoolP192T1.Fq Curve.Weierstrass.BrainpoolP192T1.Fr
- Curve.Weierstrass.BrainpoolP192T1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Curve.Weierstrass.BrainpoolP192T1.Fq Curve.Weierstrass.BrainpoolP192T1.Fr
- Curve.Weierstrass.BrainpoolP192T1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Curve.Weierstrass.BrainpoolP192T1.Fq Curve.Weierstrass.BrainpoolP192T1.Fr
- Curve.Weierstrass.BrainpoolP192T1: type Fq = PrimeField 4781668983906166242955001894344923773259119655253013193367
- Curve.Weierstrass.BrainpoolP192T1: type Fr = PrimeField 4781668983906166242955001894269038308119863659119834868929
- Curve.Weierstrass.BrainpoolP192T1: type PA = WAPoint BrainpoolP192T1 Fq Fr
- Curve.Weierstrass.BrainpoolP192T1: type PJ = WJPoint BrainpoolP192T1 Fq Fr
- Curve.Weierstrass.BrainpoolP192T1: type PP = WPPoint BrainpoolP192T1 Fq Fr
- Curve.Weierstrass.BrainpoolP224R1: _a :: Fq
- Curve.Weierstrass.BrainpoolP224R1: _b :: Fq
- Curve.Weierstrass.BrainpoolP224R1: _h :: Integer
- Curve.Weierstrass.BrainpoolP224R1: _q :: Integer
- Curve.Weierstrass.BrainpoolP224R1: _r :: Integer
- Curve.Weierstrass.BrainpoolP224R1: _x :: Fq
- Curve.Weierstrass.BrainpoolP224R1: _y :: Fq
- Curve.Weierstrass.BrainpoolP224R1: data BrainpoolP224R1
- Curve.Weierstrass.BrainpoolP224R1: gA :: PA
- Curve.Weierstrass.BrainpoolP224R1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP224R1: gP :: PP
- Curve.Weierstrass.BrainpoolP224R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Curve.Weierstrass.BrainpoolP224R1.Fq Curve.Weierstrass.BrainpoolP224R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Curve.Weierstrass.BrainpoolP224R1.Fq Curve.Weierstrass.BrainpoolP224R1.Fr
- Curve.Weierstrass.BrainpoolP224R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Curve.Weierstrass.BrainpoolP224R1.Fq Curve.Weierstrass.BrainpoolP224R1.Fr
- Curve.Weierstrass.BrainpoolP224R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Curve.Weierstrass.BrainpoolP224R1.Fq Curve.Weierstrass.BrainpoolP224R1.Fr
- Curve.Weierstrass.BrainpoolP224R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Curve.Weierstrass.BrainpoolP224R1.Fq Curve.Weierstrass.BrainpoolP224R1.Fr
- Curve.Weierstrass.BrainpoolP224R1: type Fq = PrimeField 22721622932454352787552537995910928073340732145944992304435472941311
- Curve.Weierstrass.BrainpoolP224R1: type Fr = PrimeField 22721622932454352787552537995910923612567546342330757191396560966559
- Curve.Weierstrass.BrainpoolP224R1: type PA = WAPoint BrainpoolP224R1 Fq Fr
- Curve.Weierstrass.BrainpoolP224R1: type PJ = WJPoint BrainpoolP224R1 Fq Fr
- Curve.Weierstrass.BrainpoolP224R1: type PP = WPPoint BrainpoolP224R1 Fq Fr
- Curve.Weierstrass.BrainpoolP224T1: _a :: Fq
- Curve.Weierstrass.BrainpoolP224T1: _b :: Fq
- Curve.Weierstrass.BrainpoolP224T1: _h :: Integer
- Curve.Weierstrass.BrainpoolP224T1: _q :: Integer
- Curve.Weierstrass.BrainpoolP224T1: _r :: Integer
- Curve.Weierstrass.BrainpoolP224T1: _x :: Fq
- Curve.Weierstrass.BrainpoolP224T1: _y :: Fq
- Curve.Weierstrass.BrainpoolP224T1: data BrainpoolP224T1
- Curve.Weierstrass.BrainpoolP224T1: gA :: PA
- Curve.Weierstrass.BrainpoolP224T1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP224T1: gP :: PP
- Curve.Weierstrass.BrainpoolP224T1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Curve.Weierstrass.BrainpoolP224T1.Fq Curve.Weierstrass.BrainpoolP224T1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Curve.Weierstrass.BrainpoolP224T1.Fq Curve.Weierstrass.BrainpoolP224T1.Fr
- Curve.Weierstrass.BrainpoolP224T1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Curve.Weierstrass.BrainpoolP224T1.Fq Curve.Weierstrass.BrainpoolP224T1.Fr
- Curve.Weierstrass.BrainpoolP224T1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Curve.Weierstrass.BrainpoolP224T1.Fq Curve.Weierstrass.BrainpoolP224T1.Fr
- Curve.Weierstrass.BrainpoolP224T1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Curve.Weierstrass.BrainpoolP224T1.Fq Curve.Weierstrass.BrainpoolP224T1.Fr
- Curve.Weierstrass.BrainpoolP224T1: type Fq = PrimeField 22721622932454352787552537995910928073340732145944992304435472941311
- Curve.Weierstrass.BrainpoolP224T1: type Fr = PrimeField 22721622932454352787552537995910923612567546342330757191396560966559
- Curve.Weierstrass.BrainpoolP224T1: type PA = WAPoint BrainpoolP224T1 Fq Fr
- Curve.Weierstrass.BrainpoolP224T1: type PJ = WJPoint BrainpoolP224T1 Fq Fr
- Curve.Weierstrass.BrainpoolP224T1: type PP = WPPoint BrainpoolP224T1 Fq Fr
- Curve.Weierstrass.BrainpoolP256R1: _a :: Fq
- Curve.Weierstrass.BrainpoolP256R1: _b :: Fq
- Curve.Weierstrass.BrainpoolP256R1: _h :: Integer
- Curve.Weierstrass.BrainpoolP256R1: _q :: Integer
- Curve.Weierstrass.BrainpoolP256R1: _r :: Integer
- Curve.Weierstrass.BrainpoolP256R1: _x :: Fq
- Curve.Weierstrass.BrainpoolP256R1: _y :: Fq
- Curve.Weierstrass.BrainpoolP256R1: data BrainpoolP256R1
- Curve.Weierstrass.BrainpoolP256R1: gA :: PA
- Curve.Weierstrass.BrainpoolP256R1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP256R1: gP :: PP
- Curve.Weierstrass.BrainpoolP256R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Curve.Weierstrass.BrainpoolP256R1.Fq Curve.Weierstrass.BrainpoolP256R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Curve.Weierstrass.BrainpoolP256R1.Fq Curve.Weierstrass.BrainpoolP256R1.Fr
- Curve.Weierstrass.BrainpoolP256R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Curve.Weierstrass.BrainpoolP256R1.Fq Curve.Weierstrass.BrainpoolP256R1.Fr
- Curve.Weierstrass.BrainpoolP256R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Curve.Weierstrass.BrainpoolP256R1.Fq Curve.Weierstrass.BrainpoolP256R1.Fr
- Curve.Weierstrass.BrainpoolP256R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Curve.Weierstrass.BrainpoolP256R1.Fq Curve.Weierstrass.BrainpoolP256R1.Fr
- Curve.Weierstrass.BrainpoolP256R1: type Fq = PrimeField 76884956397045344220809746629001649093037950200943055203735601445031516197751
- Curve.Weierstrass.BrainpoolP256R1: type Fr = PrimeField 76884956397045344220809746629001649092737531784414529538755519063063536359079
- Curve.Weierstrass.BrainpoolP256R1: type PA = WAPoint BrainpoolP256R1 Fq Fr
- Curve.Weierstrass.BrainpoolP256R1: type PJ = WJPoint BrainpoolP256R1 Fq Fr
- Curve.Weierstrass.BrainpoolP256R1: type PP = WPPoint BrainpoolP256R1 Fq Fr
- Curve.Weierstrass.BrainpoolP256T1: _a :: Fq
- Curve.Weierstrass.BrainpoolP256T1: _b :: Fq
- Curve.Weierstrass.BrainpoolP256T1: _h :: Integer
- Curve.Weierstrass.BrainpoolP256T1: _q :: Integer
- Curve.Weierstrass.BrainpoolP256T1: _r :: Integer
- Curve.Weierstrass.BrainpoolP256T1: _x :: Fq
- Curve.Weierstrass.BrainpoolP256T1: _y :: Fq
- Curve.Weierstrass.BrainpoolP256T1: data BrainpoolP256T1
- Curve.Weierstrass.BrainpoolP256T1: gA :: PA
- Curve.Weierstrass.BrainpoolP256T1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP256T1: gP :: PP
- Curve.Weierstrass.BrainpoolP256T1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Curve.Weierstrass.BrainpoolP256T1.Fq Curve.Weierstrass.BrainpoolP256T1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Curve.Weierstrass.BrainpoolP256T1.Fq Curve.Weierstrass.BrainpoolP256T1.Fr
- Curve.Weierstrass.BrainpoolP256T1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Curve.Weierstrass.BrainpoolP256T1.Fq Curve.Weierstrass.BrainpoolP256T1.Fr
- Curve.Weierstrass.BrainpoolP256T1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Curve.Weierstrass.BrainpoolP256T1.Fq Curve.Weierstrass.BrainpoolP256T1.Fr
- Curve.Weierstrass.BrainpoolP256T1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Curve.Weierstrass.BrainpoolP256T1.Fq Curve.Weierstrass.BrainpoolP256T1.Fr
- Curve.Weierstrass.BrainpoolP256T1: type Fq = PrimeField 76884956397045344220809746629001649093037950200943055203735601445031516197751
- Curve.Weierstrass.BrainpoolP256T1: type Fr = PrimeField 76884956397045344220809746629001649092737531784414529538755519063063536359079
- Curve.Weierstrass.BrainpoolP256T1: type PA = WAPoint BrainpoolP256T1 Fq Fr
- Curve.Weierstrass.BrainpoolP256T1: type PJ = WJPoint BrainpoolP256T1 Fq Fr
- Curve.Weierstrass.BrainpoolP256T1: type PP = WPPoint BrainpoolP256T1 Fq Fr
- Curve.Weierstrass.BrainpoolP320R1: _a :: Fq
- Curve.Weierstrass.BrainpoolP320R1: _b :: Fq
- Curve.Weierstrass.BrainpoolP320R1: _h :: Integer
- Curve.Weierstrass.BrainpoolP320R1: _q :: Integer
- Curve.Weierstrass.BrainpoolP320R1: _r :: Integer
- Curve.Weierstrass.BrainpoolP320R1: _x :: Fq
- Curve.Weierstrass.BrainpoolP320R1: _y :: Fq
- Curve.Weierstrass.BrainpoolP320R1: data BrainpoolP320R1
- Curve.Weierstrass.BrainpoolP320R1: gA :: PA
- Curve.Weierstrass.BrainpoolP320R1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP320R1: gP :: PP
- Curve.Weierstrass.BrainpoolP320R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Curve.Weierstrass.BrainpoolP320R1.Fq Curve.Weierstrass.BrainpoolP320R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Curve.Weierstrass.BrainpoolP320R1.Fq Curve.Weierstrass.BrainpoolP320R1.Fr
- Curve.Weierstrass.BrainpoolP320R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Curve.Weierstrass.BrainpoolP320R1.Fq Curve.Weierstrass.BrainpoolP320R1.Fr
- Curve.Weierstrass.BrainpoolP320R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Curve.Weierstrass.BrainpoolP320R1.Fq Curve.Weierstrass.BrainpoolP320R1.Fr
- Curve.Weierstrass.BrainpoolP320R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Curve.Weierstrass.BrainpoolP320R1.Fq Curve.Weierstrass.BrainpoolP320R1.Fr
- Curve.Weierstrass.BrainpoolP320R1: type Fq = PrimeField 1763593322239166354161909842446019520889512772719515192772960415288640868802149818095501499903527
- Curve.Weierstrass.BrainpoolP320R1: type Fr = PrimeField 1763593322239166354161909842446019520889512772717686063760686124016784784845843468355685258203921
- Curve.Weierstrass.BrainpoolP320R1: type PA = WAPoint BrainpoolP320R1 Fq Fr
- Curve.Weierstrass.BrainpoolP320R1: type PJ = WJPoint BrainpoolP320R1 Fq Fr
- Curve.Weierstrass.BrainpoolP320R1: type PP = WPPoint BrainpoolP320R1 Fq Fr
- Curve.Weierstrass.BrainpoolP320T1: _a :: Fq
- Curve.Weierstrass.BrainpoolP320T1: _b :: Fq
- Curve.Weierstrass.BrainpoolP320T1: _h :: Integer
- Curve.Weierstrass.BrainpoolP320T1: _q :: Integer
- Curve.Weierstrass.BrainpoolP320T1: _r :: Integer
- Curve.Weierstrass.BrainpoolP320T1: _x :: Fq
- Curve.Weierstrass.BrainpoolP320T1: _y :: Fq
- Curve.Weierstrass.BrainpoolP320T1: data BrainpoolP320T1
- Curve.Weierstrass.BrainpoolP320T1: gA :: PA
- Curve.Weierstrass.BrainpoolP320T1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP320T1: gP :: PP
- Curve.Weierstrass.BrainpoolP320T1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Curve.Weierstrass.BrainpoolP320T1.Fq Curve.Weierstrass.BrainpoolP320T1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Curve.Weierstrass.BrainpoolP320T1.Fq Curve.Weierstrass.BrainpoolP320T1.Fr
- Curve.Weierstrass.BrainpoolP320T1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Curve.Weierstrass.BrainpoolP320T1.Fq Curve.Weierstrass.BrainpoolP320T1.Fr
- Curve.Weierstrass.BrainpoolP320T1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Curve.Weierstrass.BrainpoolP320T1.Fq Curve.Weierstrass.BrainpoolP320T1.Fr
- Curve.Weierstrass.BrainpoolP320T1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Curve.Weierstrass.BrainpoolP320T1.Fq Curve.Weierstrass.BrainpoolP320T1.Fr
- Curve.Weierstrass.BrainpoolP320T1: type Fq = PrimeField 1763593322239166354161909842446019520889512772719515192772960415288640868802149818095501499903527
- Curve.Weierstrass.BrainpoolP320T1: type Fr = PrimeField 1763593322239166354161909842446019520889512772717686063760686124016784784845843468355685258203921
- Curve.Weierstrass.BrainpoolP320T1: type PA = WAPoint BrainpoolP320T1 Fq Fr
- Curve.Weierstrass.BrainpoolP320T1: type PJ = WJPoint BrainpoolP320T1 Fq Fr
- Curve.Weierstrass.BrainpoolP320T1: type PP = WPPoint BrainpoolP320T1 Fq Fr
- Curve.Weierstrass.BrainpoolP384R1: _a :: Fq
- Curve.Weierstrass.BrainpoolP384R1: _b :: Fq
- Curve.Weierstrass.BrainpoolP384R1: _h :: Integer
- Curve.Weierstrass.BrainpoolP384R1: _q :: Integer
- Curve.Weierstrass.BrainpoolP384R1: _r :: Integer
- Curve.Weierstrass.BrainpoolP384R1: _x :: Fq
- Curve.Weierstrass.BrainpoolP384R1: _y :: Fq
- Curve.Weierstrass.BrainpoolP384R1: data BrainpoolP384R1
- Curve.Weierstrass.BrainpoolP384R1: gA :: PA
- Curve.Weierstrass.BrainpoolP384R1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP384R1: gP :: PP
- Curve.Weierstrass.BrainpoolP384R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Curve.Weierstrass.BrainpoolP384R1.Fq Curve.Weierstrass.BrainpoolP384R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Curve.Weierstrass.BrainpoolP384R1.Fq Curve.Weierstrass.BrainpoolP384R1.Fr
- Curve.Weierstrass.BrainpoolP384R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Curve.Weierstrass.BrainpoolP384R1.Fq Curve.Weierstrass.BrainpoolP384R1.Fr
- Curve.Weierstrass.BrainpoolP384R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Curve.Weierstrass.BrainpoolP384R1.Fq Curve.Weierstrass.BrainpoolP384R1.Fr
- Curve.Weierstrass.BrainpoolP384R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Curve.Weierstrass.BrainpoolP384R1.Fq Curve.Weierstrass.BrainpoolP384R1.Fr
- Curve.Weierstrass.BrainpoolP384R1: type Fq = PrimeField 21659270770119316173069236842332604979796116387017648600081618503821089934025961822236561982844534088440708417973331
- Curve.Weierstrass.BrainpoolP384R1: type Fr = PrimeField 21659270770119316173069236842332604979796116387017648600075645274821611501358515537962695117368903252229601718723941
- Curve.Weierstrass.BrainpoolP384R1: type PA = WAPoint BrainpoolP384R1 Fq Fr
- Curve.Weierstrass.BrainpoolP384R1: type PJ = WJPoint BrainpoolP384R1 Fq Fr
- Curve.Weierstrass.BrainpoolP384R1: type PP = WPPoint BrainpoolP384R1 Fq Fr
- Curve.Weierstrass.BrainpoolP384T1: _a :: Fq
- Curve.Weierstrass.BrainpoolP384T1: _b :: Fq
- Curve.Weierstrass.BrainpoolP384T1: _h :: Integer
- Curve.Weierstrass.BrainpoolP384T1: _q :: Integer
- Curve.Weierstrass.BrainpoolP384T1: _r :: Integer
- Curve.Weierstrass.BrainpoolP384T1: _x :: Fq
- Curve.Weierstrass.BrainpoolP384T1: _y :: Fq
- Curve.Weierstrass.BrainpoolP384T1: data BrainpoolP384T1
- Curve.Weierstrass.BrainpoolP384T1: gA :: PA
- Curve.Weierstrass.BrainpoolP384T1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP384T1: gP :: PP
- Curve.Weierstrass.BrainpoolP384T1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Curve.Weierstrass.BrainpoolP384T1.Fq Curve.Weierstrass.BrainpoolP384T1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Curve.Weierstrass.BrainpoolP384T1.Fq Curve.Weierstrass.BrainpoolP384T1.Fr
- Curve.Weierstrass.BrainpoolP384T1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Curve.Weierstrass.BrainpoolP384T1.Fq Curve.Weierstrass.BrainpoolP384T1.Fr
- Curve.Weierstrass.BrainpoolP384T1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Curve.Weierstrass.BrainpoolP384T1.Fq Curve.Weierstrass.BrainpoolP384T1.Fr
- Curve.Weierstrass.BrainpoolP384T1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Curve.Weierstrass.BrainpoolP384T1.Fq Curve.Weierstrass.BrainpoolP384T1.Fr
- Curve.Weierstrass.BrainpoolP384T1: type Fq = PrimeField 21659270770119316173069236842332604979796116387017648600081618503821089934025961822236561982844534088440708417973331
- Curve.Weierstrass.BrainpoolP384T1: type Fr = PrimeField 21659270770119316173069236842332604979796116387017648600075645274821611501358515537962695117368903252229601718723941
- Curve.Weierstrass.BrainpoolP384T1: type PA = WAPoint BrainpoolP384T1 Fq Fr
- Curve.Weierstrass.BrainpoolP384T1: type PJ = WJPoint BrainpoolP384T1 Fq Fr
- Curve.Weierstrass.BrainpoolP384T1: type PP = WPPoint BrainpoolP384T1 Fq Fr
- Curve.Weierstrass.BrainpoolP512R1: _a :: Fq
- Curve.Weierstrass.BrainpoolP512R1: _b :: Fq
- Curve.Weierstrass.BrainpoolP512R1: _h :: Integer
- Curve.Weierstrass.BrainpoolP512R1: _q :: Integer
- Curve.Weierstrass.BrainpoolP512R1: _r :: Integer
- Curve.Weierstrass.BrainpoolP512R1: _x :: Fq
- Curve.Weierstrass.BrainpoolP512R1: _y :: Fq
- Curve.Weierstrass.BrainpoolP512R1: data BrainpoolP512R1
- Curve.Weierstrass.BrainpoolP512R1: gA :: PA
- Curve.Weierstrass.BrainpoolP512R1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP512R1: gP :: PP
- Curve.Weierstrass.BrainpoolP512R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Curve.Weierstrass.BrainpoolP512R1.Fq Curve.Weierstrass.BrainpoolP512R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Curve.Weierstrass.BrainpoolP512R1.Fq Curve.Weierstrass.BrainpoolP512R1.Fr
- Curve.Weierstrass.BrainpoolP512R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Curve.Weierstrass.BrainpoolP512R1.Fq Curve.Weierstrass.BrainpoolP512R1.Fr
- Curve.Weierstrass.BrainpoolP512R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Curve.Weierstrass.BrainpoolP512R1.Fq Curve.Weierstrass.BrainpoolP512R1.Fr
- Curve.Weierstrass.BrainpoolP512R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Curve.Weierstrass.BrainpoolP512R1.Fq Curve.Weierstrass.BrainpoolP512R1.Fr
- Curve.Weierstrass.BrainpoolP512R1: type Fq = PrimeField 8948962207650232551656602815159153422162609644098354511344597187200057010413552439917934304191956942765446530386427345937963894309923928536070534607816947
- Curve.Weierstrass.BrainpoolP512R1: type Fr = PrimeField 8948962207650232551656602815159153422162609644098354511344597187200057010413418528378981730643524959857451398370029280583094215613882043973354392115544169
- Curve.Weierstrass.BrainpoolP512R1: type PA = WAPoint BrainpoolP512R1 Fq Fr
- Curve.Weierstrass.BrainpoolP512R1: type PJ = WJPoint BrainpoolP512R1 Fq Fr
- Curve.Weierstrass.BrainpoolP512R1: type PP = WPPoint BrainpoolP512R1 Fq Fr
- Curve.Weierstrass.BrainpoolP512T1: _a :: Fq
- Curve.Weierstrass.BrainpoolP512T1: _b :: Fq
- Curve.Weierstrass.BrainpoolP512T1: _h :: Integer
- Curve.Weierstrass.BrainpoolP512T1: _q :: Integer
- Curve.Weierstrass.BrainpoolP512T1: _r :: Integer
- Curve.Weierstrass.BrainpoolP512T1: _x :: Fq
- Curve.Weierstrass.BrainpoolP512T1: _y :: Fq
- Curve.Weierstrass.BrainpoolP512T1: data BrainpoolP512T1
- Curve.Weierstrass.BrainpoolP512T1: gA :: PA
- Curve.Weierstrass.BrainpoolP512T1: gJ :: PJ
- Curve.Weierstrass.BrainpoolP512T1: gP :: PP
- Curve.Weierstrass.BrainpoolP512T1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Curve.Weierstrass.BrainpoolP512T1.Fq Curve.Weierstrass.BrainpoolP512T1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Curve.Weierstrass.BrainpoolP512T1.Fq Curve.Weierstrass.BrainpoolP512T1.Fr
- Curve.Weierstrass.BrainpoolP512T1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Curve.Weierstrass.BrainpoolP512T1.Fq Curve.Weierstrass.BrainpoolP512T1.Fr
- Curve.Weierstrass.BrainpoolP512T1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Curve.Weierstrass.BrainpoolP512T1.Fq Curve.Weierstrass.BrainpoolP512T1.Fr
- Curve.Weierstrass.BrainpoolP512T1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Curve.Weierstrass.BrainpoolP512T1.Fq Curve.Weierstrass.BrainpoolP512T1.Fr
- Curve.Weierstrass.BrainpoolP512T1: type Fq = PrimeField 8948962207650232551656602815159153422162609644098354511344597187200057010413552439917934304191956942765446530386427345937963894309923928536070534607816947
- Curve.Weierstrass.BrainpoolP512T1: type Fr = PrimeField 8948962207650232551656602815159153422162609644098354511344597187200057010413418528378981730643524959857451398370029280583094215613882043973354392115544169
- Curve.Weierstrass.BrainpoolP512T1: type PA = WAPoint BrainpoolP512T1 Fq Fr
- Curve.Weierstrass.BrainpoolP512T1: type PJ = WJPoint BrainpoolP512T1 Fq Fr
- Curve.Weierstrass.BrainpoolP512T1: type PP = WPPoint BrainpoolP512T1 Fq Fr
- Curve.Weierstrass.SECP112R1: _a :: Fq
- Curve.Weierstrass.SECP112R1: _b :: Fq
- Curve.Weierstrass.SECP112R1: _h :: Integer
- Curve.Weierstrass.SECP112R1: _q :: Integer
- Curve.Weierstrass.SECP112R1: _r :: Integer
- Curve.Weierstrass.SECP112R1: _x :: Fq
- Curve.Weierstrass.SECP112R1: _y :: Fq
- Curve.Weierstrass.SECP112R1: data SECP112R1
- Curve.Weierstrass.SECP112R1: gA :: PA
- Curve.Weierstrass.SECP112R1: gJ :: PJ
- Curve.Weierstrass.SECP112R1: gP :: PP
- Curve.Weierstrass.SECP112R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP112R1.SECP112R1 Curve.Weierstrass.SECP112R1.Fq Curve.Weierstrass.SECP112R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP112R1.SECP112R1 Curve.Weierstrass.SECP112R1.Fq Curve.Weierstrass.SECP112R1.Fr
- Curve.Weierstrass.SECP112R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP112R1.SECP112R1 Curve.Weierstrass.SECP112R1.Fq Curve.Weierstrass.SECP112R1.Fr
- Curve.Weierstrass.SECP112R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP112R1.SECP112R1 Curve.Weierstrass.SECP112R1.Fq Curve.Weierstrass.SECP112R1.Fr
- Curve.Weierstrass.SECP112R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP112R1.SECP112R1 Curve.Weierstrass.SECP112R1.Fq Curve.Weierstrass.SECP112R1.Fr
- Curve.Weierstrass.SECP112R1: type Fq = PrimeField 4451685225093714772084598273548427
- Curve.Weierstrass.SECP112R1: type Fr = PrimeField 4451685225093714776491891542548933
- Curve.Weierstrass.SECP112R1: type PA = WAPoint SECP112R1 Fq Fr
- Curve.Weierstrass.SECP112R1: type PJ = WJPoint SECP112R1 Fq Fr
- Curve.Weierstrass.SECP112R1: type PP = WPPoint SECP112R1 Fq Fr
- Curve.Weierstrass.SECP112R2: _a :: Fq
- Curve.Weierstrass.SECP112R2: _b :: Fq
- Curve.Weierstrass.SECP112R2: _h :: Integer
- Curve.Weierstrass.SECP112R2: _q :: Integer
- Curve.Weierstrass.SECP112R2: _r :: Integer
- Curve.Weierstrass.SECP112R2: _x :: Fq
- Curve.Weierstrass.SECP112R2: _y :: Fq
- Curve.Weierstrass.SECP112R2: data SECP112R2
- Curve.Weierstrass.SECP112R2: gA :: PA
- Curve.Weierstrass.SECP112R2: gJ :: PJ
- Curve.Weierstrass.SECP112R2: gP :: PP
- Curve.Weierstrass.SECP112R2: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP112R2.SECP112R2 Curve.Weierstrass.SECP112R2.Fq Curve.Weierstrass.SECP112R2.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP112R2.SECP112R2 Curve.Weierstrass.SECP112R2.Fq Curve.Weierstrass.SECP112R2.Fr
- Curve.Weierstrass.SECP112R2: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP112R2.SECP112R2 Curve.Weierstrass.SECP112R2.Fq Curve.Weierstrass.SECP112R2.Fr
- Curve.Weierstrass.SECP112R2: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP112R2.SECP112R2 Curve.Weierstrass.SECP112R2.Fq Curve.Weierstrass.SECP112R2.Fr
- Curve.Weierstrass.SECP112R2: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP112R2.SECP112R2 Curve.Weierstrass.SECP112R2.Fq Curve.Weierstrass.SECP112R2.Fr
- Curve.Weierstrass.SECP112R2: type Fq = PrimeField 4451685225093714772084598273548427
- Curve.Weierstrass.SECP112R2: type Fr = PrimeField 1112921306273428674967732714786891
- Curve.Weierstrass.SECP112R2: type PA = WAPoint SECP112R2 Fq Fr
- Curve.Weierstrass.SECP112R2: type PJ = WJPoint SECP112R2 Fq Fr
- Curve.Weierstrass.SECP112R2: type PP = WPPoint SECP112R2 Fq Fr
- Curve.Weierstrass.SECP128R1: _a :: Fq
- Curve.Weierstrass.SECP128R1: _b :: Fq
- Curve.Weierstrass.SECP128R1: _h :: Integer
- Curve.Weierstrass.SECP128R1: _q :: Integer
- Curve.Weierstrass.SECP128R1: _r :: Integer
- Curve.Weierstrass.SECP128R1: _x :: Fq
- Curve.Weierstrass.SECP128R1: _y :: Fq
- Curve.Weierstrass.SECP128R1: data SECP128R1
- Curve.Weierstrass.SECP128R1: gA :: PA
- Curve.Weierstrass.SECP128R1: gJ :: PJ
- Curve.Weierstrass.SECP128R1: gP :: PP
- Curve.Weierstrass.SECP128R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP128R1.SECP128R1 Curve.Weierstrass.SECP128R1.Fq Curve.Weierstrass.SECP128R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP128R1.SECP128R1 Curve.Weierstrass.SECP128R1.Fq Curve.Weierstrass.SECP128R1.Fr
- Curve.Weierstrass.SECP128R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP128R1.SECP128R1 Curve.Weierstrass.SECP128R1.Fq Curve.Weierstrass.SECP128R1.Fr
- Curve.Weierstrass.SECP128R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP128R1.SECP128R1 Curve.Weierstrass.SECP128R1.Fq Curve.Weierstrass.SECP128R1.Fr
- Curve.Weierstrass.SECP128R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP128R1.SECP128R1 Curve.Weierstrass.SECP128R1.Fq Curve.Weierstrass.SECP128R1.Fr
- Curve.Weierstrass.SECP128R1: type Fq = PrimeField 340282366762482138434845932244680310783
- Curve.Weierstrass.SECP128R1: type Fr = PrimeField 340282366762482138443322565580356624661
- Curve.Weierstrass.SECP128R1: type PA = WAPoint SECP128R1 Fq Fr
- Curve.Weierstrass.SECP128R1: type PJ = WJPoint SECP128R1 Fq Fr
- Curve.Weierstrass.SECP128R1: type PP = WPPoint SECP128R1 Fq Fr
- Curve.Weierstrass.SECP128R2: _a :: Fq
- Curve.Weierstrass.SECP128R2: _b :: Fq
- Curve.Weierstrass.SECP128R2: _h :: Integer
- Curve.Weierstrass.SECP128R2: _q :: Integer
- Curve.Weierstrass.SECP128R2: _r :: Integer
- Curve.Weierstrass.SECP128R2: _x :: Fq
- Curve.Weierstrass.SECP128R2: _y :: Fq
- Curve.Weierstrass.SECP128R2: data SECP128R2
- Curve.Weierstrass.SECP128R2: gA :: PA
- Curve.Weierstrass.SECP128R2: gJ :: PJ
- Curve.Weierstrass.SECP128R2: gP :: PP
- Curve.Weierstrass.SECP128R2: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP128R2.SECP128R2 Curve.Weierstrass.SECP128R2.Fq Curve.Weierstrass.SECP128R2.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP128R2.SECP128R2 Curve.Weierstrass.SECP128R2.Fq Curve.Weierstrass.SECP128R2.Fr
- Curve.Weierstrass.SECP128R2: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP128R2.SECP128R2 Curve.Weierstrass.SECP128R2.Fq Curve.Weierstrass.SECP128R2.Fr
- Curve.Weierstrass.SECP128R2: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP128R2.SECP128R2 Curve.Weierstrass.SECP128R2.Fq Curve.Weierstrass.SECP128R2.Fr
- Curve.Weierstrass.SECP128R2: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP128R2.SECP128R2 Curve.Weierstrass.SECP128R2.Fq Curve.Weierstrass.SECP128R2.Fr
- Curve.Weierstrass.SECP128R2: type Fq = PrimeField 340282366762482138434845932244680310783
- Curve.Weierstrass.SECP128R2: type Fr = PrimeField 85070591690620534603955721926813660579
- Curve.Weierstrass.SECP128R2: type PA = WAPoint SECP128R2 Fq Fr
- Curve.Weierstrass.SECP128R2: type PJ = WJPoint SECP128R2 Fq Fr
- Curve.Weierstrass.SECP128R2: type PP = WPPoint SECP128R2 Fq Fr
- Curve.Weierstrass.SECP160K1: _a :: Fq
- Curve.Weierstrass.SECP160K1: _b :: Fq
- Curve.Weierstrass.SECP160K1: _h :: Integer
- Curve.Weierstrass.SECP160K1: _q :: Integer
- Curve.Weierstrass.SECP160K1: _r :: Integer
- Curve.Weierstrass.SECP160K1: _x :: Fq
- Curve.Weierstrass.SECP160K1: _y :: Fq
- Curve.Weierstrass.SECP160K1: data SECP160K1
- Curve.Weierstrass.SECP160K1: gA :: PA
- Curve.Weierstrass.SECP160K1: gJ :: PJ
- Curve.Weierstrass.SECP160K1: gP :: PP
- Curve.Weierstrass.SECP160K1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP160K1.SECP160K1 Curve.Weierstrass.SECP160K1.Fq Curve.Weierstrass.SECP160K1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP160K1.SECP160K1 Curve.Weierstrass.SECP160K1.Fq Curve.Weierstrass.SECP160K1.Fr
- Curve.Weierstrass.SECP160K1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP160K1.SECP160K1 Curve.Weierstrass.SECP160K1.Fq Curve.Weierstrass.SECP160K1.Fr
- Curve.Weierstrass.SECP160K1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP160K1.SECP160K1 Curve.Weierstrass.SECP160K1.Fq Curve.Weierstrass.SECP160K1.Fr
- Curve.Weierstrass.SECP160K1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP160K1.SECP160K1 Curve.Weierstrass.SECP160K1.Fq Curve.Weierstrass.SECP160K1.Fr
- Curve.Weierstrass.SECP160K1: type Fq = PrimeField 1461501637330902918203684832716283019651637554291
- Curve.Weierstrass.SECP160K1: type Fr = PrimeField 1461501637330902918203686915170869725397159163571
- Curve.Weierstrass.SECP160K1: type PA = WAPoint SECP160K1 Fq Fr
- Curve.Weierstrass.SECP160K1: type PJ = WJPoint SECP160K1 Fq Fr
- Curve.Weierstrass.SECP160K1: type PP = WPPoint SECP160K1 Fq Fr
- Curve.Weierstrass.SECP160R1: _a :: Fq
- Curve.Weierstrass.SECP160R1: _b :: Fq
- Curve.Weierstrass.SECP160R1: _h :: Integer
- Curve.Weierstrass.SECP160R1: _q :: Integer
- Curve.Weierstrass.SECP160R1: _r :: Integer
- Curve.Weierstrass.SECP160R1: _x :: Fq
- Curve.Weierstrass.SECP160R1: _y :: Fq
- Curve.Weierstrass.SECP160R1: data SECP160R1
- Curve.Weierstrass.SECP160R1: gA :: PA
- Curve.Weierstrass.SECP160R1: gJ :: PJ
- Curve.Weierstrass.SECP160R1: gP :: PP
- Curve.Weierstrass.SECP160R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP160R1.SECP160R1 Curve.Weierstrass.SECP160R1.Fq Curve.Weierstrass.SECP160R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP160R1.SECP160R1 Curve.Weierstrass.SECP160R1.Fq Curve.Weierstrass.SECP160R1.Fr
- Curve.Weierstrass.SECP160R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP160R1.SECP160R1 Curve.Weierstrass.SECP160R1.Fq Curve.Weierstrass.SECP160R1.Fr
- Curve.Weierstrass.SECP160R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP160R1.SECP160R1 Curve.Weierstrass.SECP160R1.Fq Curve.Weierstrass.SECP160R1.Fr
- Curve.Weierstrass.SECP160R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP160R1.SECP160R1 Curve.Weierstrass.SECP160R1.Fq Curve.Weierstrass.SECP160R1.Fr
- Curve.Weierstrass.SECP160R1: type Fq = PrimeField 1461501637330902918203684832716283019653785059327
- Curve.Weierstrass.SECP160R1: type Fr = PrimeField 1461501637330902918203687197606826779884643492439
- Curve.Weierstrass.SECP160R1: type PA = WAPoint SECP160R1 Fq Fr
- Curve.Weierstrass.SECP160R1: type PJ = WJPoint SECP160R1 Fq Fr
- Curve.Weierstrass.SECP160R1: type PP = WPPoint SECP160R1 Fq Fr
- Curve.Weierstrass.SECP160R2: _a :: Fq
- Curve.Weierstrass.SECP160R2: _b :: Fq
- Curve.Weierstrass.SECP160R2: _h :: Integer
- Curve.Weierstrass.SECP160R2: _q :: Integer
- Curve.Weierstrass.SECP160R2: _r :: Integer
- Curve.Weierstrass.SECP160R2: _x :: Fq
- Curve.Weierstrass.SECP160R2: _y :: Fq
- Curve.Weierstrass.SECP160R2: data SECP160R2
- Curve.Weierstrass.SECP160R2: gA :: PA
- Curve.Weierstrass.SECP160R2: gJ :: PJ
- Curve.Weierstrass.SECP160R2: gP :: PP
- Curve.Weierstrass.SECP160R2: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP160R2.SECP160R2 Curve.Weierstrass.SECP160R2.Fq Curve.Weierstrass.SECP160R2.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP160R2.SECP160R2 Curve.Weierstrass.SECP160R2.Fq Curve.Weierstrass.SECP160R2.Fr
- Curve.Weierstrass.SECP160R2: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP160R2.SECP160R2 Curve.Weierstrass.SECP160R2.Fq Curve.Weierstrass.SECP160R2.Fr
- Curve.Weierstrass.SECP160R2: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP160R2.SECP160R2 Curve.Weierstrass.SECP160R2.Fq Curve.Weierstrass.SECP160R2.Fr
- Curve.Weierstrass.SECP160R2: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP160R2.SECP160R2 Curve.Weierstrass.SECP160R2.Fq Curve.Weierstrass.SECP160R2.Fr
- Curve.Weierstrass.SECP160R2: type Fq = PrimeField 1461501637330902918203684832716283019651637554291
- Curve.Weierstrass.SECP160R2: type Fr = PrimeField 1461501637330902918203685083571792140653176136043
- Curve.Weierstrass.SECP160R2: type PA = WAPoint SECP160R2 Fq Fr
- Curve.Weierstrass.SECP160R2: type PJ = WJPoint SECP160R2 Fq Fr
- Curve.Weierstrass.SECP160R2: type PP = WPPoint SECP160R2 Fq Fr
- Curve.Weierstrass.SECP192K1: _a :: Fq
- Curve.Weierstrass.SECP192K1: _b :: Fq
- Curve.Weierstrass.SECP192K1: _h :: Integer
- Curve.Weierstrass.SECP192K1: _q :: Integer
- Curve.Weierstrass.SECP192K1: _r :: Integer
- Curve.Weierstrass.SECP192K1: _x :: Fq
- Curve.Weierstrass.SECP192K1: _y :: Fq
- Curve.Weierstrass.SECP192K1: data SECP192K1
- Curve.Weierstrass.SECP192K1: gA :: PA
- Curve.Weierstrass.SECP192K1: gJ :: PJ
- Curve.Weierstrass.SECP192K1: gP :: PP
- Curve.Weierstrass.SECP192K1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP192K1.SECP192K1 Curve.Weierstrass.SECP192K1.Fq Curve.Weierstrass.SECP192K1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP192K1.SECP192K1 Curve.Weierstrass.SECP192K1.Fq Curve.Weierstrass.SECP192K1.Fr
- Curve.Weierstrass.SECP192K1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP192K1.SECP192K1 Curve.Weierstrass.SECP192K1.Fq Curve.Weierstrass.SECP192K1.Fr
- Curve.Weierstrass.SECP192K1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP192K1.SECP192K1 Curve.Weierstrass.SECP192K1.Fq Curve.Weierstrass.SECP192K1.Fr
- Curve.Weierstrass.SECP192K1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP192K1.SECP192K1 Curve.Weierstrass.SECP192K1.Fq Curve.Weierstrass.SECP192K1.Fr
- Curve.Weierstrass.SECP192K1: type Fq = PrimeField 6277101735386680763835789423207666416102355444459739541047
- Curve.Weierstrass.SECP192K1: type Fr = PrimeField 6277101735386680763835789423061264271957123915200845512077
- Curve.Weierstrass.SECP192K1: type PA = WAPoint SECP192K1 Fq Fr
- Curve.Weierstrass.SECP192K1: type PJ = WJPoint SECP192K1 Fq Fr
- Curve.Weierstrass.SECP192K1: type PP = WPPoint SECP192K1 Fq Fr
- Curve.Weierstrass.SECP192R1: _a :: Fq
- Curve.Weierstrass.SECP192R1: _b :: Fq
- Curve.Weierstrass.SECP192R1: _h :: Integer
- Curve.Weierstrass.SECP192R1: _q :: Integer
- Curve.Weierstrass.SECP192R1: _r :: Integer
- Curve.Weierstrass.SECP192R1: _x :: Fq
- Curve.Weierstrass.SECP192R1: _y :: Fq
- Curve.Weierstrass.SECP192R1: data SECP192R1
- Curve.Weierstrass.SECP192R1: gA :: PA
- Curve.Weierstrass.SECP192R1: gJ :: PJ
- Curve.Weierstrass.SECP192R1: gP :: PP
- Curve.Weierstrass.SECP192R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP192R1.SECP192R1 Curve.Weierstrass.SECP192R1.Fq Curve.Weierstrass.SECP192R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP192R1.SECP192R1 Curve.Weierstrass.SECP192R1.Fq Curve.Weierstrass.SECP192R1.Fr
- Curve.Weierstrass.SECP192R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP192R1.SECP192R1 Curve.Weierstrass.SECP192R1.Fq Curve.Weierstrass.SECP192R1.Fr
- Curve.Weierstrass.SECP192R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP192R1.SECP192R1 Curve.Weierstrass.SECP192R1.Fq Curve.Weierstrass.SECP192R1.Fr
- Curve.Weierstrass.SECP192R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP192R1.SECP192R1 Curve.Weierstrass.SECP192R1.Fq Curve.Weierstrass.SECP192R1.Fr
- Curve.Weierstrass.SECP192R1: type Fq = PrimeField 6277101735386680763835789423207666416083908700390324961279
- Curve.Weierstrass.SECP192R1: type Fr = PrimeField 6277101735386680763835789423176059013767194773182842284081
- Curve.Weierstrass.SECP192R1: type PA = WAPoint SECP192R1 Fq Fr
- Curve.Weierstrass.SECP192R1: type PJ = WJPoint SECP192R1 Fq Fr
- Curve.Weierstrass.SECP192R1: type PP = WPPoint SECP192R1 Fq Fr
- Curve.Weierstrass.SECP224K1: _a :: Fq
- Curve.Weierstrass.SECP224K1: _b :: Fq
- Curve.Weierstrass.SECP224K1: _h :: Integer
- Curve.Weierstrass.SECP224K1: _q :: Integer
- Curve.Weierstrass.SECP224K1: _r :: Integer
- Curve.Weierstrass.SECP224K1: _x :: Fq
- Curve.Weierstrass.SECP224K1: _y :: Fq
- Curve.Weierstrass.SECP224K1: data SECP224K1
- Curve.Weierstrass.SECP224K1: gA :: PA
- Curve.Weierstrass.SECP224K1: gJ :: PJ
- Curve.Weierstrass.SECP224K1: gP :: PP
- Curve.Weierstrass.SECP224K1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP224K1.SECP224K1 Curve.Weierstrass.SECP224K1.Fq Curve.Weierstrass.SECP224K1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP224K1.SECP224K1 Curve.Weierstrass.SECP224K1.Fq Curve.Weierstrass.SECP224K1.Fr
- Curve.Weierstrass.SECP224K1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP224K1.SECP224K1 Curve.Weierstrass.SECP224K1.Fq Curve.Weierstrass.SECP224K1.Fr
- Curve.Weierstrass.SECP224K1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP224K1.SECP224K1 Curve.Weierstrass.SECP224K1.Fq Curve.Weierstrass.SECP224K1.Fr
- Curve.Weierstrass.SECP224K1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP224K1.SECP224K1 Curve.Weierstrass.SECP224K1.Fq Curve.Weierstrass.SECP224K1.Fr
- Curve.Weierstrass.SECP224K1: type Fq = PrimeField 26959946667150639794667015087019630673637144422540572481099315275117
- Curve.Weierstrass.SECP224K1: type Fr = PrimeField 26959946667150639794667015087019640346510327083120074548994958668279
- Curve.Weierstrass.SECP224K1: type PA = WAPoint SECP224K1 Fq Fr
- Curve.Weierstrass.SECP224K1: type PJ = WJPoint SECP224K1 Fq Fr
- Curve.Weierstrass.SECP224K1: type PP = WPPoint SECP224K1 Fq Fr
- Curve.Weierstrass.SECP224R1: _a :: Fq
- Curve.Weierstrass.SECP224R1: _b :: Fq
- Curve.Weierstrass.SECP224R1: _h :: Integer
- Curve.Weierstrass.SECP224R1: _q :: Integer
- Curve.Weierstrass.SECP224R1: _r :: Integer
- Curve.Weierstrass.SECP224R1: _x :: Fq
- Curve.Weierstrass.SECP224R1: _y :: Fq
- Curve.Weierstrass.SECP224R1: data SECP224R1
- Curve.Weierstrass.SECP224R1: gA :: PA
- Curve.Weierstrass.SECP224R1: gJ :: PJ
- Curve.Weierstrass.SECP224R1: gP :: PP
- Curve.Weierstrass.SECP224R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP224R1.SECP224R1 Curve.Weierstrass.SECP224R1.Fq Curve.Weierstrass.SECP224R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP224R1.SECP224R1 Curve.Weierstrass.SECP224R1.Fq Curve.Weierstrass.SECP224R1.Fr
- Curve.Weierstrass.SECP224R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP224R1.SECP224R1 Curve.Weierstrass.SECP224R1.Fq Curve.Weierstrass.SECP224R1.Fr
- Curve.Weierstrass.SECP224R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP224R1.SECP224R1 Curve.Weierstrass.SECP224R1.Fq Curve.Weierstrass.SECP224R1.Fr
- Curve.Weierstrass.SECP224R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP224R1.SECP224R1 Curve.Weierstrass.SECP224R1.Fq Curve.Weierstrass.SECP224R1.Fr
- Curve.Weierstrass.SECP224R1: type Fq = PrimeField 26959946667150639794667015087019630673557916260026308143510066298881
- Curve.Weierstrass.SECP224R1: type Fr = PrimeField 26959946667150639794667015087019625940457807714424391721682722368061
- Curve.Weierstrass.SECP224R1: type PA = WAPoint SECP224R1 Fq Fr
- Curve.Weierstrass.SECP224R1: type PJ = WJPoint SECP224R1 Fq Fr
- Curve.Weierstrass.SECP224R1: type PP = WPPoint SECP224R1 Fq Fr
- Curve.Weierstrass.SECP256K1: _a :: Fq
- Curve.Weierstrass.SECP256K1: _b :: Fq
- Curve.Weierstrass.SECP256K1: _h :: Integer
- Curve.Weierstrass.SECP256K1: _q :: Integer
- Curve.Weierstrass.SECP256K1: _r :: Integer
- Curve.Weierstrass.SECP256K1: _x :: Fq
- Curve.Weierstrass.SECP256K1: _y :: Fq
- Curve.Weierstrass.SECP256K1: data SECP256K1
- Curve.Weierstrass.SECP256K1: gA :: PA
- Curve.Weierstrass.SECP256K1: gJ :: PJ
- Curve.Weierstrass.SECP256K1: gP :: PP
- Curve.Weierstrass.SECP256K1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP256K1.SECP256K1 Curve.Weierstrass.SECP256K1.Fq Curve.Weierstrass.SECP256K1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP256K1.SECP256K1 Curve.Weierstrass.SECP256K1.Fq Curve.Weierstrass.SECP256K1.Fr
- Curve.Weierstrass.SECP256K1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP256K1.SECP256K1 Curve.Weierstrass.SECP256K1.Fq Curve.Weierstrass.SECP256K1.Fr
- Curve.Weierstrass.SECP256K1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP256K1.SECP256K1 Curve.Weierstrass.SECP256K1.Fq Curve.Weierstrass.SECP256K1.Fr
- Curve.Weierstrass.SECP256K1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP256K1.SECP256K1 Curve.Weierstrass.SECP256K1.Fq Curve.Weierstrass.SECP256K1.Fr
- Curve.Weierstrass.SECP256K1: type Fq = PrimeField 115792089237316195423570985008687907853269984665640564039457584007908834671663
- Curve.Weierstrass.SECP256K1: type Fr = PrimeField 115792089237316195423570985008687907852837564279074904382605163141518161494337
- Curve.Weierstrass.SECP256K1: type PA = WAPoint SECP256K1 Fq Fr
- Curve.Weierstrass.SECP256K1: type PJ = WJPoint SECP256K1 Fq Fr
- Curve.Weierstrass.SECP256K1: type PP = WPPoint SECP256K1 Fq Fr
- Curve.Weierstrass.SECP256R1: _a :: Fq
- Curve.Weierstrass.SECP256R1: _b :: Fq
- Curve.Weierstrass.SECP256R1: _h :: Integer
- Curve.Weierstrass.SECP256R1: _q :: Integer
- Curve.Weierstrass.SECP256R1: _r :: Integer
- Curve.Weierstrass.SECP256R1: _x :: Fq
- Curve.Weierstrass.SECP256R1: _y :: Fq
- Curve.Weierstrass.SECP256R1: data SECP256R1
- Curve.Weierstrass.SECP256R1: gA :: PA
- Curve.Weierstrass.SECP256R1: gJ :: PJ
- Curve.Weierstrass.SECP256R1: gP :: PP
- Curve.Weierstrass.SECP256R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP256R1.SECP256R1 Curve.Weierstrass.SECP256R1.Fq Curve.Weierstrass.SECP256R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP256R1.SECP256R1 Curve.Weierstrass.SECP256R1.Fq Curve.Weierstrass.SECP256R1.Fr
- Curve.Weierstrass.SECP256R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP256R1.SECP256R1 Curve.Weierstrass.SECP256R1.Fq Curve.Weierstrass.SECP256R1.Fr
- Curve.Weierstrass.SECP256R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP256R1.SECP256R1 Curve.Weierstrass.SECP256R1.Fq Curve.Weierstrass.SECP256R1.Fr
- Curve.Weierstrass.SECP256R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP256R1.SECP256R1 Curve.Weierstrass.SECP256R1.Fq Curve.Weierstrass.SECP256R1.Fr
- Curve.Weierstrass.SECP256R1: type Fq = PrimeField 115792089210356248762697446949407573530086143415290314195533631308867097853951
- Curve.Weierstrass.SECP256R1: type Fr = PrimeField 115792089210356248762697446949407573529996955224135760342422259061068512044369
- Curve.Weierstrass.SECP256R1: type PA = WAPoint SECP256R1 Fq Fr
- Curve.Weierstrass.SECP256R1: type PJ = WJPoint SECP256R1 Fq Fr
- Curve.Weierstrass.SECP256R1: type PP = WPPoint SECP256R1 Fq Fr
- Curve.Weierstrass.SECP384R1: _a :: Fq
- Curve.Weierstrass.SECP384R1: _b :: Fq
- Curve.Weierstrass.SECP384R1: _h :: Integer
- Curve.Weierstrass.SECP384R1: _q :: Integer
- Curve.Weierstrass.SECP384R1: _r :: Integer
- Curve.Weierstrass.SECP384R1: _x :: Fq
- Curve.Weierstrass.SECP384R1: _y :: Fq
- Curve.Weierstrass.SECP384R1: data SECP384R1
- Curve.Weierstrass.SECP384R1: gA :: PA
- Curve.Weierstrass.SECP384R1: gJ :: PJ
- Curve.Weierstrass.SECP384R1: gP :: PP
- Curve.Weierstrass.SECP384R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP384R1.SECP384R1 Curve.Weierstrass.SECP384R1.Fq Curve.Weierstrass.SECP384R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP384R1.SECP384R1 Curve.Weierstrass.SECP384R1.Fq Curve.Weierstrass.SECP384R1.Fr
- Curve.Weierstrass.SECP384R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP384R1.SECP384R1 Curve.Weierstrass.SECP384R1.Fq Curve.Weierstrass.SECP384R1.Fr
- Curve.Weierstrass.SECP384R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP384R1.SECP384R1 Curve.Weierstrass.SECP384R1.Fq Curve.Weierstrass.SECP384R1.Fr
- Curve.Weierstrass.SECP384R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP384R1.SECP384R1 Curve.Weierstrass.SECP384R1.Fq Curve.Weierstrass.SECP384R1.Fr
- Curve.Weierstrass.SECP384R1: type Fq = PrimeField 39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319
- Curve.Weierstrass.SECP384R1: type Fr = PrimeField 39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643
- Curve.Weierstrass.SECP384R1: type PA = WAPoint SECP384R1 Fq Fr
- Curve.Weierstrass.SECP384R1: type PJ = WJPoint SECP384R1 Fq Fr
- Curve.Weierstrass.SECP384R1: type PP = WPPoint SECP384R1 Fq Fr
- Curve.Weierstrass.SECP521R1: _a :: Fq
- Curve.Weierstrass.SECP521R1: _b :: Fq
- Curve.Weierstrass.SECP521R1: _h :: Integer
- Curve.Weierstrass.SECP521R1: _q :: Integer
- Curve.Weierstrass.SECP521R1: _r :: Integer
- Curve.Weierstrass.SECP521R1: _x :: Fq
- Curve.Weierstrass.SECP521R1: _y :: Fq
- Curve.Weierstrass.SECP521R1: data SECP521R1
- Curve.Weierstrass.SECP521R1: gA :: PA
- Curve.Weierstrass.SECP521R1: gJ :: PJ
- Curve.Weierstrass.SECP521R1: gP :: PP
- Curve.Weierstrass.SECP521R1: instance Curve.Curve 'Curve.Weierstrass c Curve.Weierstrass.SECP521R1.SECP521R1 Curve.Weierstrass.SECP521R1.Fq Curve.Weierstrass.SECP521R1.Fr => Curve.Weierstrass.WCurve c Curve.Weierstrass.SECP521R1.SECP521R1 Curve.Weierstrass.SECP521R1.Fq Curve.Weierstrass.SECP521R1.Fr
- Curve.Weierstrass.SECP521R1: instance Curve.Weierstrass.WACurve Curve.Weierstrass.SECP521R1.SECP521R1 Curve.Weierstrass.SECP521R1.Fq Curve.Weierstrass.SECP521R1.Fr
- Curve.Weierstrass.SECP521R1: instance Curve.Weierstrass.WJCurve Curve.Weierstrass.SECP521R1.SECP521R1 Curve.Weierstrass.SECP521R1.Fq Curve.Weierstrass.SECP521R1.Fr
- Curve.Weierstrass.SECP521R1: instance Curve.Weierstrass.WPCurve Curve.Weierstrass.SECP521R1.SECP521R1 Curve.Weierstrass.SECP521R1.Fq Curve.Weierstrass.SECP521R1.Fr
- Curve.Weierstrass.SECP521R1: type Fq = PrimeField 6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151
- Curve.Weierstrass.SECP521R1: type Fr = PrimeField 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005449
- Curve.Weierstrass.SECP521R1: type PA = WAPoint SECP521R1 Fq Fr
- Curve.Weierstrass.SECP521R1: type PJ = WJPoint SECP521R1 Fq Fr
- Curve.Weierstrass.SECP521R1: type PP = WPPoint SECP521R1 Fq Fr
- Group: add :: Group g => g -> g -> g
- Group: class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g
- Group: dbl :: Group g => g -> g
- Group: def :: Group g => g -> Bool
- Group: gen :: Group g => g
- Group: id :: Group g => g
- Group: inv :: Group g => g -> g
- Group: mul' :: Group g => g -> Integer -> g
- Group: order :: Group g => g -> Integer
- Group: rnd :: (Group g, MonadRandom m) => m g
- Group.Field: F :: q -> Element r q
- Group.Field: add :: Group g => g -> g -> g
- Group.Field: class (GaloisField q, PrimeField' r) => FGroup r q
- Group.Field: class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g
- Group.Field: dbl :: Group g => g -> g
- Group.Field: def :: Group g => g -> Bool
- Group.Field: g_ :: FGroup r q => Element r q
- Group.Field: gen :: Group g => g
- Group.Field: h_ :: FGroup r q => Element r q -> Integer
- Group.Field: id :: Group g => g
- Group.Field: instance Group.Field.FGroup r q => GHC.Base.Monoid (Group.Field.Element r q)
- Group.Field: instance Group.Field.FGroup r q => GHC.Base.Semigroup (Group.Field.Element r q)
- Group.Field: instance Group.Field.FGroup r q => Group.Group (Group.Field.Element r q)
- Group.Field: instance Group.Field.FGroup r q => System.Random.Random (Group.Field.Element r q)
- Group.Field: instance Group.Field.FGroup r q => Test.QuickCheck.Arbitrary.Arbitrary (Group.Field.Element r q)
- Group.Field: instance Group.Field.FGroup r q => Text.PrettyPrint.Leijen.Text.Pretty (Group.Field.Element r q)
- Group.Field: instance forall k (r :: k) q. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Group.Field.Element r q)
- Group.Field: instance forall k (r :: k) q. GHC.Classes.Eq q => GHC.Classes.Eq (Group.Field.Element r q)
- Group.Field: instance forall k (r :: k) q. GHC.Generics.Generic (Group.Field.Element r q)
- Group.Field: instance forall k (r :: k) q. GHC.Read.Read q => GHC.Read.Read (Group.Field.Element r q)
- Group.Field: instance forall k (r :: k) q. GHC.Show.Show q => GHC.Show.Show (Group.Field.Element r q)
- Group.Field: instance forall k (r :: k). GHC.Base.Functor (Group.Field.Element r)
- Group.Field: inv :: Group g => g -> g
- Group.Field: mul' :: Group g => g -> Integer -> g
- Group.Field: newtype Element r q
- Group.Field: order :: Group g => g -> Integer
- Group.Field: q_ :: FGroup r q => Element r q -> Integer
- Group.Field: r_ :: FGroup r q => Element r q -> Integer
- Group.Field: rnd :: (Group g, MonadRandom m) => m g
- Group.Field.BN254TF: _g :: P
- Group.Field.BN254TF: _h :: Integer
- Group.Field.BN254TF: _q :: Integer
- Group.Field.BN254TF: _r :: Integer
- Group.Field.BN254TF: _x :: Fq12
- Group.Field.BN254TF: data PolynomialV
- Group.Field.BN254TF: data PolynomialW
- Group.Field.BN254TF: instance ExtensionField.IrreducibleMonic Curve.Weierstrass.BN254T.Fq2 Group.Field.BN254TF.PolynomialV
- Group.Field.BN254TF: instance ExtensionField.IrreducibleMonic Group.Field.BN254TF.Fq6 Group.Field.BN254TF.PolynomialW
- Group.Field.BN254TF: instance Group.Field.FGroup Group.Field.BN254TF.Fr Group.Field.BN254TF.Fq12
- Group.Field.BN254TF: type Fq12 = ExtensionField Fq6 PolynomialW
- Group.Field.BN254TF: type Fq6 = ExtensionField Fq2 PolynomialV
- Group.Field.BN254TF: type Fr = PrimeField 21888242871839275222246405745257275088548364400416034343698204186575808495617
- Group.Field.BN254TF: type P = Element Fr Fq12
+ Data.Curve: -- | Curve point.
+ Data.Curve: Affine :: Coordinates
+ Data.Curve: Binary :: Form
+ Data.Curve: Edwards :: Form
+ Data.Curve: Jacobian :: Coordinates
+ Data.Curve: Montgomery :: Form
+ Data.Curve: Projective :: Coordinates
+ Data.Curve: Weierstrass :: Form
+ Data.Curve: add :: Curve f c e q r => Point f c e q r -> Point f c e q r -> Point f c e q r
+ Data.Curve: char :: Curve f c e q r => Point f c e q r -> Natural
+ Data.Curve: class (GaloisField q, PrimeField r, Arbitrary (Point f c e q r), Eq (Point f c e q r), Generic (Point f c e q r), Group (Point f c e q r), NFData (Point f c e q r), Pretty (Point f c e q r), Random (Point f c e q r), Show (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where {
+ Data.Curve: cof :: Curve f c e q r => Point f c e q r -> Natural
+ Data.Curve: data Coordinates
+ Data.Curve: data Form
+ Data.Curve: data family Point f c e q r :: *;
+ Data.Curve: dbl :: Curve f c e q r => Point f c e q r -> Point f c e q r
+ Data.Curve: def :: Curve f c e q r => Point f c e q r -> Bool
+ Data.Curve: disc :: Curve f c e q r => Point f c e q r -> q
+ Data.Curve: frob :: Curve f c e q r => Point f c e q r -> Point f c e q r
+ Data.Curve: fromA :: (Curve f c e q r, Curve f 'Affine e q r) => Point f 'Affine e q r -> Point f c e q r
+ Data.Curve: gen :: Curve f c e q r => Point f c e q r
+ Data.Curve: id :: Curve f c e q r => Point f c e q r
+ Data.Curve: instance forall k (f :: Data.Curve.Form) (c :: Data.Curve.Coordinates) (e :: k) q r. Data.Curve.Curve f c e q r => Data.Group.Group (Data.Curve.Point f c e q r)
+ Data.Curve: instance forall k (f :: Data.Curve.Form) (c :: Data.Curve.Coordinates) (e :: k) q r. Data.Curve.Curve f c e q r => GHC.Base.Monoid (Data.Curve.Point f c e q r)
+ Data.Curve: instance forall k (f :: Data.Curve.Form) (c :: Data.Curve.Coordinates) (e :: k) q r. Data.Curve.Curve f c e q r => GHC.Base.Semigroup (Data.Curve.Point f c e q r)
+ Data.Curve: instance forall k (f :: Data.Curve.Form) (c :: Data.Curve.Coordinates) (e :: k) q r. Data.Curve.Curve f c e q r => System.Random.Random (Data.Curve.Point f c e q r)
+ Data.Curve: instance forall k (f :: Data.Curve.Form) (c :: Data.Curve.Coordinates) (e :: k) q r. Data.Curve.Curve f c e q r => Test.QuickCheck.Arbitrary.Arbitrary (Data.Curve.Point f c e q r)
+ Data.Curve: inv :: Curve f c e q r => Point f c e q r -> Point f c e q r
+ Data.Curve: mul :: Curve f c e q r => Point f c e q r -> r -> Point f c e q r
+ Data.Curve: mul' :: (Curve f c e q r, Integral n) => Point f c e q r -> n -> Point f c e q r
+ Data.Curve: order :: Curve f c e q r => Point f c e q r -> Natural
+ Data.Curve: point :: Curve f c e q r => q -> q -> Maybe (Point f c e q r)
+ Data.Curve: pointX :: Curve f c e q r => q -> Maybe (Point f c e q r)
+ Data.Curve: rnd :: (Curve f c e q r, MonadRandom m) => m (Point f c e q r)
+ Data.Curve: toA :: (Curve f c e q r, Curve f 'Affine e q r) => Point f c e q r -> Point f 'Affine e q r
+ Data.Curve: yX :: Curve f c e q r => Point f c e q r -> q -> Maybe q
+ Data.Curve: }
+ Data.Curve.Binary: a_ :: BCurve c e q r => BPoint c e q r -> q
+ Data.Curve.Binary: b_ :: BCurve c e q r => BPoint c e q r -> q
+ Data.Curve.Binary: class BCurve 'Affine e q r => BACurve e q r
+ Data.Curve.Binary: class (GaloisField q, PrimeField r, Curve 'Binary c e q r) => BCurve c e q r
+ Data.Curve.Binary: class BCurve 'Projective e q r => BPCurve e q r
+ Data.Curve.Binary: gA_ :: BACurve e q r => BAPoint e q r
+ Data.Curve.Binary: gP_ :: BPCurve e q r => BPPoint e q r
+ Data.Curve.Binary: h_ :: BCurve c e q r => BPoint c e q r -> Natural
+ Data.Curve.Binary: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Affine e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Projective e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. Data.Curve.Binary.BACurve e q r => Data.Curve.Curve 'Data.Curve.Binary 'Data.Curve.Affine e q r
+ Data.Curve.Binary: instance forall k (e :: k) q r. Data.Curve.Binary.BACurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Data.Curve.Binary.BAPoint e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. Data.Curve.Binary.BPCurve e q r => Data.Curve.Curve 'Data.Curve.Binary 'Data.Curve.Projective e q r
+ Data.Curve.Binary: instance forall k (e :: k) q r. Data.Curve.Binary.BPCurve e q r => GHC.Classes.Eq (Data.Curve.Binary.BPPoint e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. Data.Curve.Binary.BPCurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Data.Curve.Binary.BPPoint e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. GHC.Classes.Eq q => GHC.Classes.Eq (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Affine e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. GHC.Generics.Generic (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Affine e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. GHC.Generics.Generic (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Projective e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Affine e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Projective e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Affine e q r)
+ Data.Curve.Binary: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Data.Curve.Point 'Data.Curve.Binary 'Data.Curve.Projective e q r)
+ Data.Curve.Binary: p_ :: BCurve c e q r => BPoint c e q r -> Natural
+ Data.Curve.Binary: r_ :: BCurve c e q r => BPoint c e q r -> Natural
+ Data.Curve.Binary: type BAPoint = BPoint 'Affine
+ Data.Curve.Binary: type BPPoint = BPoint 'Projective
+ Data.Curve.Binary: type BPoint = Point 'Binary
+ Data.Curve.Binary.SECT113R1: _a :: F2m
+ Data.Curve.Binary.SECT113R1: _b :: F2m
+ Data.Curve.Binary.SECT113R1: _h :: Natural
+ Data.Curve.Binary.SECT113R1: _p :: Natural
+ Data.Curve.Binary.SECT113R1: _r :: Natural
+ Data.Curve.Binary.SECT113R1: _x :: F2m
+ Data.Curve.Binary.SECT113R1: _y :: F2m
+ Data.Curve.Binary.SECT113R1: data SECT113R1
+ Data.Curve.Binary.SECT113R1: gA :: PA
+ Data.Curve.Binary.SECT113R1: gP :: PP
+ Data.Curve.Binary.SECT113R1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT113R1.SECT113R1 Data.Curve.Binary.SECT113R1.F2m Data.Curve.Binary.SECT113R1.Fr
+ Data.Curve.Binary.SECT113R1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT113R1.SECT113R1 Data.Curve.Binary.SECT113R1.F2m Data.Curve.Binary.SECT113R1.Fr
+ Data.Curve.Binary.SECT113R1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT113R1.SECT113R1 Data.Curve.Binary.SECT113R1.F2m Data.Curve.Binary.SECT113R1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT113R1.SECT113R1 Data.Curve.Binary.SECT113R1.F2m Data.Curve.Binary.SECT113R1.Fr
+ Data.Curve.Binary.SECT113R1: type F2m = Binary P
+ Data.Curve.Binary.SECT113R1: type Fr = Prime R
+ Data.Curve.Binary.SECT113R1: type P = 10384593717069655257060992658440705
+ Data.Curve.Binary.SECT113R1: type PA = BAPoint SECT113R1 F2m Fr
+ Data.Curve.Binary.SECT113R1: type PP = BPPoint SECT113R1 F2m Fr
+ Data.Curve.Binary.SECT113R1: type R = 5192296858534827689835882578830703
+ Data.Curve.Binary.SECT113R2: _a :: F2m
+ Data.Curve.Binary.SECT113R2: _b :: F2m
+ Data.Curve.Binary.SECT113R2: _h :: Natural
+ Data.Curve.Binary.SECT113R2: _p :: Natural
+ Data.Curve.Binary.SECT113R2: _r :: Natural
+ Data.Curve.Binary.SECT113R2: _x :: F2m
+ Data.Curve.Binary.SECT113R2: _y :: F2m
+ Data.Curve.Binary.SECT113R2: data SECT113R2
+ Data.Curve.Binary.SECT113R2: gA :: PA
+ Data.Curve.Binary.SECT113R2: gP :: PP
+ Data.Curve.Binary.SECT113R2: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT113R2.SECT113R2 Data.Curve.Binary.SECT113R2.F2m Data.Curve.Binary.SECT113R2.Fr
+ Data.Curve.Binary.SECT113R2: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT113R2.SECT113R2 Data.Curve.Binary.SECT113R2.F2m Data.Curve.Binary.SECT113R2.Fr
+ Data.Curve.Binary.SECT113R2: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT113R2.SECT113R2 Data.Curve.Binary.SECT113R2.F2m Data.Curve.Binary.SECT113R2.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT113R2.SECT113R2 Data.Curve.Binary.SECT113R2.F2m Data.Curve.Binary.SECT113R2.Fr
+ Data.Curve.Binary.SECT113R2: type F2m = Binary P
+ Data.Curve.Binary.SECT113R2: type Fr = Prime R
+ Data.Curve.Binary.SECT113R2: type P = 10384593717069655257060992658440705
+ Data.Curve.Binary.SECT113R2: type PA = BAPoint SECT113R2 F2m Fr
+ Data.Curve.Binary.SECT113R2: type PP = BPPoint SECT113R2 F2m Fr
+ Data.Curve.Binary.SECT113R2: type R = 5192296858534827702972497909952403
+ Data.Curve.Binary.SECT131R1: _a :: F2m
+ Data.Curve.Binary.SECT131R1: _b :: F2m
+ Data.Curve.Binary.SECT131R1: _h :: Natural
+ Data.Curve.Binary.SECT131R1: _p :: Natural
+ Data.Curve.Binary.SECT131R1: _r :: Natural
+ Data.Curve.Binary.SECT131R1: _x :: F2m
+ Data.Curve.Binary.SECT131R1: _y :: F2m
+ Data.Curve.Binary.SECT131R1: data SECT131R1
+ Data.Curve.Binary.SECT131R1: gA :: PA
+ Data.Curve.Binary.SECT131R1: gP :: PP
+ Data.Curve.Binary.SECT131R1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT131R1.SECT131R1 Data.Curve.Binary.SECT131R1.F2m Data.Curve.Binary.SECT131R1.Fr
+ Data.Curve.Binary.SECT131R1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT131R1.SECT131R1 Data.Curve.Binary.SECT131R1.F2m Data.Curve.Binary.SECT131R1.Fr
+ Data.Curve.Binary.SECT131R1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT131R1.SECT131R1 Data.Curve.Binary.SECT131R1.F2m Data.Curve.Binary.SECT131R1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT131R1.SECT131R1 Data.Curve.Binary.SECT131R1.F2m Data.Curve.Binary.SECT131R1.Fr
+ Data.Curve.Binary.SECT131R1: type F2m = Binary P
+ Data.Curve.Binary.SECT131R1: type Fr = Prime R
+ Data.Curve.Binary.SECT131R1: type P = 2722258935367507707706996859454145691917
+ Data.Curve.Binary.SECT131R1: type PA = BAPoint SECT131R1 F2m Fr
+ Data.Curve.Binary.SECT131R1: type PP = BPPoint SECT131R1 F2m Fr
+ Data.Curve.Binary.SECT131R1: type R = 1361129467683753853893932755685365560653
+ Data.Curve.Binary.SECT131R2: _a :: F2m
+ Data.Curve.Binary.SECT131R2: _b :: F2m
+ Data.Curve.Binary.SECT131R2: _h :: Natural
+ Data.Curve.Binary.SECT131R2: _p :: Natural
+ Data.Curve.Binary.SECT131R2: _r :: Natural
+ Data.Curve.Binary.SECT131R2: _x :: F2m
+ Data.Curve.Binary.SECT131R2: _y :: F2m
+ Data.Curve.Binary.SECT131R2: data SECT131R2
+ Data.Curve.Binary.SECT131R2: gA :: PA
+ Data.Curve.Binary.SECT131R2: gP :: PP
+ Data.Curve.Binary.SECT131R2: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT131R2.SECT131R2 Data.Curve.Binary.SECT131R2.F2m Data.Curve.Binary.SECT131R2.Fr
+ Data.Curve.Binary.SECT131R2: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT131R2.SECT131R2 Data.Curve.Binary.SECT131R2.F2m Data.Curve.Binary.SECT131R2.Fr
+ Data.Curve.Binary.SECT131R2: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT131R2.SECT131R2 Data.Curve.Binary.SECT131R2.F2m Data.Curve.Binary.SECT131R2.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT131R2.SECT131R2 Data.Curve.Binary.SECT131R2.F2m Data.Curve.Binary.SECT131R2.Fr
+ Data.Curve.Binary.SECT131R2: type F2m = Binary P
+ Data.Curve.Binary.SECT131R2: type Fr = Prime R
+ Data.Curve.Binary.SECT131R2: type P = 2722258935367507707706996859454145691917
+ Data.Curve.Binary.SECT131R2: type PA = BAPoint SECT131R2 F2m Fr
+ Data.Curve.Binary.SECT131R2: type PP = BPPoint SECT131R2 F2m Fr
+ Data.Curve.Binary.SECT131R2: type R = 1361129467683753853879535043412812867983
+ Data.Curve.Binary.SECT163K1: _a :: F2m
+ Data.Curve.Binary.SECT163K1: _b :: F2m
+ Data.Curve.Binary.SECT163K1: _h :: Natural
+ Data.Curve.Binary.SECT163K1: _p :: Natural
+ Data.Curve.Binary.SECT163K1: _r :: Natural
+ Data.Curve.Binary.SECT163K1: _x :: F2m
+ Data.Curve.Binary.SECT163K1: _y :: F2m
+ Data.Curve.Binary.SECT163K1: data SECT163K1
+ Data.Curve.Binary.SECT163K1: gA :: PA
+ Data.Curve.Binary.SECT163K1: gP :: PP
+ Data.Curve.Binary.SECT163K1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT163K1.SECT163K1 Data.Curve.Binary.SECT163K1.F2m Data.Curve.Binary.SECT163K1.Fr
+ Data.Curve.Binary.SECT163K1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT163K1.SECT163K1 Data.Curve.Binary.SECT163K1.F2m Data.Curve.Binary.SECT163K1.Fr
+ Data.Curve.Binary.SECT163K1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT163K1.SECT163K1 Data.Curve.Binary.SECT163K1.F2m Data.Curve.Binary.SECT163K1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT163K1.SECT163K1 Data.Curve.Binary.SECT163K1.F2m Data.Curve.Binary.SECT163K1.Fr
+ Data.Curve.Binary.SECT163K1: type F2m = Binary P
+ Data.Curve.Binary.SECT163K1: type Fr = Prime R
+ Data.Curve.Binary.SECT163K1: type P = 11692013098647223345629478661730264157247460344009
+ Data.Curve.Binary.SECT163K1: type PA = BAPoint SECT163K1 F2m Fr
+ Data.Curve.Binary.SECT163K1: type PP = BPPoint SECT163K1 F2m Fr
+ Data.Curve.Binary.SECT163K1: type R = 5846006549323611672814741753598448348329118574063
+ Data.Curve.Binary.SECT163R1: _a :: F2m
+ Data.Curve.Binary.SECT163R1: _b :: F2m
+ Data.Curve.Binary.SECT163R1: _h :: Natural
+ Data.Curve.Binary.SECT163R1: _p :: Natural
+ Data.Curve.Binary.SECT163R1: _r :: Natural
+ Data.Curve.Binary.SECT163R1: _x :: F2m
+ Data.Curve.Binary.SECT163R1: _y :: F2m
+ Data.Curve.Binary.SECT163R1: data SECT163R1
+ Data.Curve.Binary.SECT163R1: gA :: PA
+ Data.Curve.Binary.SECT163R1: gP :: PP
+ Data.Curve.Binary.SECT163R1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT163R1.SECT163R1 Data.Curve.Binary.SECT163R1.F2m Data.Curve.Binary.SECT163R1.Fr
+ Data.Curve.Binary.SECT163R1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT163R1.SECT163R1 Data.Curve.Binary.SECT163R1.F2m Data.Curve.Binary.SECT163R1.Fr
+ Data.Curve.Binary.SECT163R1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT163R1.SECT163R1 Data.Curve.Binary.SECT163R1.F2m Data.Curve.Binary.SECT163R1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT163R1.SECT163R1 Data.Curve.Binary.SECT163R1.F2m Data.Curve.Binary.SECT163R1.Fr
+ Data.Curve.Binary.SECT163R1: type F2m = Binary P
+ Data.Curve.Binary.SECT163R1: type Fr = Prime R
+ Data.Curve.Binary.SECT163R1: type P = 11692013098647223345629478661730264157247460344009
+ Data.Curve.Binary.SECT163R1: type PA = BAPoint SECT163R1 F2m Fr
+ Data.Curve.Binary.SECT163R1: type PP = BPPoint SECT163R1 F2m Fr
+ Data.Curve.Binary.SECT163R1: type R = 5846006549323611672814738465098798981304420411291
+ Data.Curve.Binary.SECT163R2: _a :: F2m
+ Data.Curve.Binary.SECT163R2: _b :: F2m
+ Data.Curve.Binary.SECT163R2: _h :: Natural
+ Data.Curve.Binary.SECT163R2: _p :: Natural
+ Data.Curve.Binary.SECT163R2: _r :: Natural
+ Data.Curve.Binary.SECT163R2: _x :: F2m
+ Data.Curve.Binary.SECT163R2: _y :: F2m
+ Data.Curve.Binary.SECT163R2: data SECT163R2
+ Data.Curve.Binary.SECT163R2: gA :: PA
+ Data.Curve.Binary.SECT163R2: gP :: PP
+ Data.Curve.Binary.SECT163R2: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT163R2.SECT163R2 Data.Curve.Binary.SECT163R2.F2m Data.Curve.Binary.SECT163R2.Fr
+ Data.Curve.Binary.SECT163R2: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT163R2.SECT163R2 Data.Curve.Binary.SECT163R2.F2m Data.Curve.Binary.SECT163R2.Fr
+ Data.Curve.Binary.SECT163R2: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT163R2.SECT163R2 Data.Curve.Binary.SECT163R2.F2m Data.Curve.Binary.SECT163R2.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT163R2.SECT163R2 Data.Curve.Binary.SECT163R2.F2m Data.Curve.Binary.SECT163R2.Fr
+ Data.Curve.Binary.SECT163R2: type F2m = Binary P
+ Data.Curve.Binary.SECT163R2: type Fr = Prime R
+ Data.Curve.Binary.SECT163R2: type P = 11692013098647223345629478661730264157247460344009
+ Data.Curve.Binary.SECT163R2: type PA = BAPoint SECT163R2 F2m Fr
+ Data.Curve.Binary.SECT163R2: type PP = BPPoint SECT163R2 F2m Fr
+ Data.Curve.Binary.SECT163R2: type R = 5846006549323611672814742442876390689256843201587
+ Data.Curve.Binary.SECT193R1: _a :: F2m
+ Data.Curve.Binary.SECT193R1: _b :: F2m
+ Data.Curve.Binary.SECT193R1: _h :: Natural
+ Data.Curve.Binary.SECT193R1: _p :: Natural
+ Data.Curve.Binary.SECT193R1: _r :: Natural
+ Data.Curve.Binary.SECT193R1: _x :: F2m
+ Data.Curve.Binary.SECT193R1: _y :: F2m
+ Data.Curve.Binary.SECT193R1: data SECT193R1
+ Data.Curve.Binary.SECT193R1: gA :: PA
+ Data.Curve.Binary.SECT193R1: gP :: PP
+ Data.Curve.Binary.SECT193R1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT193R1.SECT193R1 Data.Curve.Binary.SECT193R1.F2m Data.Curve.Binary.SECT193R1.Fr
+ Data.Curve.Binary.SECT193R1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT193R1.SECT193R1 Data.Curve.Binary.SECT193R1.F2m Data.Curve.Binary.SECT193R1.Fr
+ Data.Curve.Binary.SECT193R1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT193R1.SECT193R1 Data.Curve.Binary.SECT193R1.F2m Data.Curve.Binary.SECT193R1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT193R1.SECT193R1 Data.Curve.Binary.SECT193R1.F2m Data.Curve.Binary.SECT193R1.Fr
+ Data.Curve.Binary.SECT193R1: type F2m = Binary P
+ Data.Curve.Binary.SECT193R1: type Fr = Prime R
+ Data.Curve.Binary.SECT193R1: type P = 12554203470773361527671578846415332832204710888928069058561
+ Data.Curve.Binary.SECT193R1: type PA = BAPoint SECT193R1 F2m Fr
+ Data.Curve.Binary.SECT193R1: type PP = BPPoint SECT193R1 F2m Fr
+ Data.Curve.Binary.SECT193R1: type R = 6277101735386680763835789423269548053691575186051040197193
+ Data.Curve.Binary.SECT193R2: _a :: F2m
+ Data.Curve.Binary.SECT193R2: _b :: F2m
+ Data.Curve.Binary.SECT193R2: _h :: Natural
+ Data.Curve.Binary.SECT193R2: _p :: Natural
+ Data.Curve.Binary.SECT193R2: _r :: Natural
+ Data.Curve.Binary.SECT193R2: _x :: F2m
+ Data.Curve.Binary.SECT193R2: _y :: F2m
+ Data.Curve.Binary.SECT193R2: data SECT193R2
+ Data.Curve.Binary.SECT193R2: gA :: PA
+ Data.Curve.Binary.SECT193R2: gP :: PP
+ Data.Curve.Binary.SECT193R2: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT193R2.SECT193R2 Data.Curve.Binary.SECT193R2.F2m Data.Curve.Binary.SECT193R2.Fr
+ Data.Curve.Binary.SECT193R2: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT193R2.SECT193R2 Data.Curve.Binary.SECT193R2.F2m Data.Curve.Binary.SECT193R2.Fr
+ Data.Curve.Binary.SECT193R2: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT193R2.SECT193R2 Data.Curve.Binary.SECT193R2.F2m Data.Curve.Binary.SECT193R2.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT193R2.SECT193R2 Data.Curve.Binary.SECT193R2.F2m Data.Curve.Binary.SECT193R2.Fr
+ Data.Curve.Binary.SECT193R2: type F2m = Binary P
+ Data.Curve.Binary.SECT193R2: type Fr = Prime R
+ Data.Curve.Binary.SECT193R2: type P = 12554203470773361527671578846415332832204710888928069058561
+ Data.Curve.Binary.SECT193R2: type PA = BAPoint SECT193R2 F2m Fr
+ Data.Curve.Binary.SECT193R2: type PP = BPPoint SECT193R2 F2m Fr
+ Data.Curve.Binary.SECT193R2: type R = 6277101735386680763835789423314955362437298222279840143829
+ Data.Curve.Binary.SECT233K1: _a :: F2m
+ Data.Curve.Binary.SECT233K1: _b :: F2m
+ Data.Curve.Binary.SECT233K1: _h :: Natural
+ Data.Curve.Binary.SECT233K1: _p :: Natural
+ Data.Curve.Binary.SECT233K1: _r :: Natural
+ Data.Curve.Binary.SECT233K1: _x :: F2m
+ Data.Curve.Binary.SECT233K1: _y :: F2m
+ Data.Curve.Binary.SECT233K1: data SECT233K1
+ Data.Curve.Binary.SECT233K1: gA :: PA
+ Data.Curve.Binary.SECT233K1: gP :: PP
+ Data.Curve.Binary.SECT233K1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT233K1.SECT233K1 Data.Curve.Binary.SECT233K1.F2m Data.Curve.Binary.SECT233K1.Fr
+ Data.Curve.Binary.SECT233K1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT233K1.SECT233K1 Data.Curve.Binary.SECT233K1.F2m Data.Curve.Binary.SECT233K1.Fr
+ Data.Curve.Binary.SECT233K1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT233K1.SECT233K1 Data.Curve.Binary.SECT233K1.F2m Data.Curve.Binary.SECT233K1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT233K1.SECT233K1 Data.Curve.Binary.SECT233K1.F2m Data.Curve.Binary.SECT233K1.Fr
+ Data.Curve.Binary.SECT233K1: type F2m = Binary P
+ Data.Curve.Binary.SECT233K1: type Fr = Prime R
+ Data.Curve.Binary.SECT233K1: type P = 13803492693581127574869511724554050904902217944359662576256527028453377
+ Data.Curve.Binary.SECT233K1: type PA = BAPoint SECT233K1 F2m Fr
+ Data.Curve.Binary.SECT233K1: type PP = BPPoint SECT233K1 F2m Fr
+ Data.Curve.Binary.SECT233K1: type R = 3450873173395281893717377931138512760570940988862252126328087024741343
+ Data.Curve.Binary.SECT233R1: _a :: F2m
+ Data.Curve.Binary.SECT233R1: _b :: F2m
+ Data.Curve.Binary.SECT233R1: _h :: Natural
+ Data.Curve.Binary.SECT233R1: _p :: Natural
+ Data.Curve.Binary.SECT233R1: _r :: Natural
+ Data.Curve.Binary.SECT233R1: _x :: F2m
+ Data.Curve.Binary.SECT233R1: _y :: F2m
+ Data.Curve.Binary.SECT233R1: data SECT233R1
+ Data.Curve.Binary.SECT233R1: gA :: PA
+ Data.Curve.Binary.SECT233R1: gP :: PP
+ Data.Curve.Binary.SECT233R1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT233R1.SECT233R1 Data.Curve.Binary.SECT233R1.F2m Data.Curve.Binary.SECT233R1.Fr
+ Data.Curve.Binary.SECT233R1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT233R1.SECT233R1 Data.Curve.Binary.SECT233R1.F2m Data.Curve.Binary.SECT233R1.Fr
+ Data.Curve.Binary.SECT233R1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT233R1.SECT233R1 Data.Curve.Binary.SECT233R1.F2m Data.Curve.Binary.SECT233R1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT233R1.SECT233R1 Data.Curve.Binary.SECT233R1.F2m Data.Curve.Binary.SECT233R1.Fr
+ Data.Curve.Binary.SECT233R1: type F2m = Binary P
+ Data.Curve.Binary.SECT233R1: type Fr = Prime R
+ Data.Curve.Binary.SECT233R1: type P = 13803492693581127574869511724554050904902217944359662576256527028453377
+ Data.Curve.Binary.SECT233R1: type PA = BAPoint SECT233R1 F2m Fr
+ Data.Curve.Binary.SECT233R1: type PP = BPPoint SECT233R1 F2m Fr
+ Data.Curve.Binary.SECT233R1: type R = 6901746346790563787434755862277025555839812737345013555379383634485463
+ Data.Curve.Binary.SECT239K1: _a :: F2m
+ Data.Curve.Binary.SECT239K1: _b :: F2m
+ Data.Curve.Binary.SECT239K1: _h :: Natural
+ Data.Curve.Binary.SECT239K1: _p :: Natural
+ Data.Curve.Binary.SECT239K1: _r :: Natural
+ Data.Curve.Binary.SECT239K1: _x :: F2m
+ Data.Curve.Binary.SECT239K1: _y :: F2m
+ Data.Curve.Binary.SECT239K1: data SECT239K1
+ Data.Curve.Binary.SECT239K1: gA :: PA
+ Data.Curve.Binary.SECT239K1: gP :: PP
+ Data.Curve.Binary.SECT239K1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT239K1.SECT239K1 Data.Curve.Binary.SECT239K1.F2m Data.Curve.Binary.SECT239K1.Fr
+ Data.Curve.Binary.SECT239K1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT239K1.SECT239K1 Data.Curve.Binary.SECT239K1.F2m Data.Curve.Binary.SECT239K1.Fr
+ Data.Curve.Binary.SECT239K1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT239K1.SECT239K1 Data.Curve.Binary.SECT239K1.F2m Data.Curve.Binary.SECT239K1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT239K1.SECT239K1 Data.Curve.Binary.SECT239K1.F2m Data.Curve.Binary.SECT239K1.Fr
+ Data.Curve.Binary.SECT239K1: type F2m = Binary P
+ Data.Curve.Binary.SECT239K1: type Fr = Prime R
+ Data.Curve.Binary.SECT239K1: type P = 883423532389192164791649115746868590639471499359017658131558014629445633
+ Data.Curve.Binary.SECT239K1: type PA = BAPoint SECT239K1 F2m Fr
+ Data.Curve.Binary.SECT239K1: type PP = BPPoint SECT239K1 F2m Fr
+ Data.Curve.Binary.SECT239K1: type R = 220855883097298041197912187592864814948216561321709848887480219215362213
+ Data.Curve.Binary.SECT283K1: _a :: F2m
+ Data.Curve.Binary.SECT283K1: _b :: F2m
+ Data.Curve.Binary.SECT283K1: _h :: Natural
+ Data.Curve.Binary.SECT283K1: _p :: Natural
+ Data.Curve.Binary.SECT283K1: _r :: Natural
+ Data.Curve.Binary.SECT283K1: _x :: F2m
+ Data.Curve.Binary.SECT283K1: _y :: F2m
+ Data.Curve.Binary.SECT283K1: data SECT283K1
+ Data.Curve.Binary.SECT283K1: gA :: PA
+ Data.Curve.Binary.SECT283K1: gP :: PP
+ Data.Curve.Binary.SECT283K1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT283K1.SECT283K1 Data.Curve.Binary.SECT283K1.F2m Data.Curve.Binary.SECT283K1.Fr
+ Data.Curve.Binary.SECT283K1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT283K1.SECT283K1 Data.Curve.Binary.SECT283K1.F2m Data.Curve.Binary.SECT283K1.Fr
+ Data.Curve.Binary.SECT283K1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT283K1.SECT283K1 Data.Curve.Binary.SECT283K1.F2m Data.Curve.Binary.SECT283K1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT283K1.SECT283K1 Data.Curve.Binary.SECT283K1.F2m Data.Curve.Binary.SECT283K1.Fr
+ Data.Curve.Binary.SECT283K1: type F2m = Binary P
+ Data.Curve.Binary.SECT283K1: type Fr = Prime R
+ Data.Curve.Binary.SECT283K1: type P = 15541351137805832567355695254588151253139254712417116170014499277911234281641667989665
+ Data.Curve.Binary.SECT283K1: type PA = BAPoint SECT283K1 F2m Fr
+ Data.Curve.Binary.SECT283K1: type PP = BPPoint SECT283K1 F2m Fr
+ Data.Curve.Binary.SECT283K1: type R = 3885337784451458141838923813647037813284811733793061324295874997529815829704422603873
+ Data.Curve.Binary.SECT283R1: _a :: F2m
+ Data.Curve.Binary.SECT283R1: _b :: F2m
+ Data.Curve.Binary.SECT283R1: _h :: Natural
+ Data.Curve.Binary.SECT283R1: _p :: Natural
+ Data.Curve.Binary.SECT283R1: _r :: Natural
+ Data.Curve.Binary.SECT283R1: _x :: F2m
+ Data.Curve.Binary.SECT283R1: _y :: F2m
+ Data.Curve.Binary.SECT283R1: data SECT283R1
+ Data.Curve.Binary.SECT283R1: gA :: PA
+ Data.Curve.Binary.SECT283R1: gP :: PP
+ Data.Curve.Binary.SECT283R1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT283R1.SECT283R1 Data.Curve.Binary.SECT283R1.F2m Data.Curve.Binary.SECT283R1.Fr
+ Data.Curve.Binary.SECT283R1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT283R1.SECT283R1 Data.Curve.Binary.SECT283R1.F2m Data.Curve.Binary.SECT283R1.Fr
+ Data.Curve.Binary.SECT283R1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT283R1.SECT283R1 Data.Curve.Binary.SECT283R1.F2m Data.Curve.Binary.SECT283R1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT283R1.SECT283R1 Data.Curve.Binary.SECT283R1.F2m Data.Curve.Binary.SECT283R1.Fr
+ Data.Curve.Binary.SECT283R1: type F2m = Binary P
+ Data.Curve.Binary.SECT283R1: type Fr = Prime R
+ Data.Curve.Binary.SECT283R1: type P = 15541351137805832567355695254588151253139254712417116170014499277911234281641667989665
+ Data.Curve.Binary.SECT283R1: type PA = BAPoint SECT283R1 F2m Fr
+ Data.Curve.Binary.SECT283R1: type PP = BPPoint SECT283R1 F2m Fr
+ Data.Curve.Binary.SECT283R1: type R = 7770675568902916283677847627294075626569625924376904889109196526770044277787378692871
+ Data.Curve.Binary.SECT409K1: _a :: F2m
+ Data.Curve.Binary.SECT409K1: _b :: F2m
+ Data.Curve.Binary.SECT409K1: _h :: Natural
+ Data.Curve.Binary.SECT409K1: _p :: Natural
+ Data.Curve.Binary.SECT409K1: _r :: Natural
+ Data.Curve.Binary.SECT409K1: _x :: F2m
+ Data.Curve.Binary.SECT409K1: _y :: F2m
+ Data.Curve.Binary.SECT409K1: data SECT409K1
+ Data.Curve.Binary.SECT409K1: gA :: PA
+ Data.Curve.Binary.SECT409K1: gP :: PP
+ Data.Curve.Binary.SECT409K1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT409K1.SECT409K1 Data.Curve.Binary.SECT409K1.F2m Data.Curve.Binary.SECT409K1.Fr
+ Data.Curve.Binary.SECT409K1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT409K1.SECT409K1 Data.Curve.Binary.SECT409K1.F2m Data.Curve.Binary.SECT409K1.Fr
+ Data.Curve.Binary.SECT409K1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT409K1.SECT409K1 Data.Curve.Binary.SECT409K1.F2m Data.Curve.Binary.SECT409K1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT409K1.SECT409K1 Data.Curve.Binary.SECT409K1.F2m Data.Curve.Binary.SECT409K1.Fr
+ Data.Curve.Binary.SECT409K1: type F2m = Binary P
+ Data.Curve.Binary.SECT409K1: type Fr = Prime R
+ Data.Curve.Binary.SECT409K1: type P = 1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430724437687334722581078999041
+ Data.Curve.Binary.SECT409K1: type PA = BAPoint SECT409K1 F2m Fr
+ Data.Curve.Binary.SECT409K1: type PP = BPPoint SECT409K1 F2m Fr
+ Data.Curve.Binary.SECT409K1: type R = 330527984395124299475957654016385519914202341482140609642324395022880711289249191050673258457777458014096366590617731358671
+ Data.Curve.Binary.SECT409R1: _a :: F2m
+ Data.Curve.Binary.SECT409R1: _b :: F2m
+ Data.Curve.Binary.SECT409R1: _h :: Natural
+ Data.Curve.Binary.SECT409R1: _p :: Natural
+ Data.Curve.Binary.SECT409R1: _r :: Natural
+ Data.Curve.Binary.SECT409R1: _x :: F2m
+ Data.Curve.Binary.SECT409R1: _y :: F2m
+ Data.Curve.Binary.SECT409R1: data SECT409R1
+ Data.Curve.Binary.SECT409R1: gA :: PA
+ Data.Curve.Binary.SECT409R1: gP :: PP
+ Data.Curve.Binary.SECT409R1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT409R1.SECT409R1 Data.Curve.Binary.SECT409R1.F2m Data.Curve.Binary.SECT409R1.Fr
+ Data.Curve.Binary.SECT409R1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT409R1.SECT409R1 Data.Curve.Binary.SECT409R1.F2m Data.Curve.Binary.SECT409R1.Fr
+ Data.Curve.Binary.SECT409R1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT409R1.SECT409R1 Data.Curve.Binary.SECT409R1.F2m Data.Curve.Binary.SECT409R1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT409R1.SECT409R1 Data.Curve.Binary.SECT409R1.F2m Data.Curve.Binary.SECT409R1.Fr
+ Data.Curve.Binary.SECT409R1: type F2m = Binary P
+ Data.Curve.Binary.SECT409R1: type Fr = Prime R
+ Data.Curve.Binary.SECT409R1: type P = 1322111937580497197903830616065542079656809365928562438569297590548811582472622691650378420879430724437687334722581078999041
+ Data.Curve.Binary.SECT409R1: type PA = BAPoint SECT409R1 F2m Fr
+ Data.Curve.Binary.SECT409R1: type PP = BPPoint SECT409R1 F2m Fr
+ Data.Curve.Binary.SECT409R1: type R = 661055968790248598951915308032771039828404682964281219284648798304157774827374805208143723762179110965979867288366567526771
+ Data.Curve.Binary.SECT571K1: _a :: F2m
+ Data.Curve.Binary.SECT571K1: _b :: F2m
+ Data.Curve.Binary.SECT571K1: _h :: Natural
+ Data.Curve.Binary.SECT571K1: _p :: Natural
+ Data.Curve.Binary.SECT571K1: _r :: Natural
+ Data.Curve.Binary.SECT571K1: _x :: F2m
+ Data.Curve.Binary.SECT571K1: _y :: F2m
+ Data.Curve.Binary.SECT571K1: data SECT571K1
+ Data.Curve.Binary.SECT571K1: gA :: PA
+ Data.Curve.Binary.SECT571K1: gP :: PP
+ Data.Curve.Binary.SECT571K1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT571K1.SECT571K1 Data.Curve.Binary.SECT571K1.F2m Data.Curve.Binary.SECT571K1.Fr
+ Data.Curve.Binary.SECT571K1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT571K1.SECT571K1 Data.Curve.Binary.SECT571K1.F2m Data.Curve.Binary.SECT571K1.Fr
+ Data.Curve.Binary.SECT571K1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT571K1.SECT571K1 Data.Curve.Binary.SECT571K1.F2m Data.Curve.Binary.SECT571K1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT571K1.SECT571K1 Data.Curve.Binary.SECT571K1.F2m Data.Curve.Binary.SECT571K1.Fr
+ Data.Curve.Binary.SECT571K1: type F2m = Binary P
+ Data.Curve.Binary.SECT571K1: type Fr = Prime R
+ Data.Curve.Binary.SECT571K1: type P = 7729075046034516689390703781863974688597854659412869997314470502903038284579120849072387533163845155924927232063004354354730157322085975311485817346934161497393961629647909
+ Data.Curve.Binary.SECT571K1: type PA = BAPoint SECT571K1 F2m Fr
+ Data.Curve.Binary.SECT571K1: type PP = BPPoint SECT571K1 F2m Fr
+ Data.Curve.Binary.SECT571K1: type R = 1932268761508629172347675945465993672149463664853217499328617625725759571144780212268133978522706711834706712800825351461273674974066617311929682421617092503555733685276673
+ Data.Curve.Binary.SECT571R1: _a :: F2m
+ Data.Curve.Binary.SECT571R1: _b :: F2m
+ Data.Curve.Binary.SECT571R1: _h :: Natural
+ Data.Curve.Binary.SECT571R1: _p :: Natural
+ Data.Curve.Binary.SECT571R1: _r :: Natural
+ Data.Curve.Binary.SECT571R1: _x :: F2m
+ Data.Curve.Binary.SECT571R1: _y :: F2m
+ Data.Curve.Binary.SECT571R1: data SECT571R1
+ Data.Curve.Binary.SECT571R1: gA :: PA
+ Data.Curve.Binary.SECT571R1: gP :: PP
+ Data.Curve.Binary.SECT571R1: instance Data.Curve.Binary.BACurve Data.Curve.Binary.SECT571R1.SECT571R1 Data.Curve.Binary.SECT571R1.F2m Data.Curve.Binary.SECT571R1.Fr
+ Data.Curve.Binary.SECT571R1: instance Data.Curve.Binary.BPCurve Data.Curve.Binary.SECT571R1.SECT571R1 Data.Curve.Binary.SECT571R1.F2m Data.Curve.Binary.SECT571R1.Fr
+ Data.Curve.Binary.SECT571R1: instance Data.Curve.Curve 'Data.Curve.Binary c Data.Curve.Binary.SECT571R1.SECT571R1 Data.Curve.Binary.SECT571R1.F2m Data.Curve.Binary.SECT571R1.Fr => Data.Curve.Binary.BCurve c Data.Curve.Binary.SECT571R1.SECT571R1 Data.Curve.Binary.SECT571R1.F2m Data.Curve.Binary.SECT571R1.Fr
+ Data.Curve.Binary.SECT571R1: type F2m = Binary P
+ Data.Curve.Binary.SECT571R1: type Fr = Prime R
+ Data.Curve.Binary.SECT571R1: type P = 7729075046034516689390703781863974688597854659412869997314470502903038284579120849072387533163845155924927232063004354354730157322085975311485817346934161497393961629647909
+ Data.Curve.Binary.SECT571R1: type PA = BAPoint SECT571R1 F2m Fr
+ Data.Curve.Binary.SECT571R1: type PP = BPPoint SECT571R1 F2m Fr
+ Data.Curve.Binary.SECT571R1: type R = 3864537523017258344695351890931987344298927329706434998657235251451519142289560424536143999389415773083133881121926944486246872462816813070234528288303332411393191105285703
+ Data.Curve.Edwards: a_ :: ECurve c e q r => EPoint c e q r -> q
+ Data.Curve.Edwards: class ECurve 'Affine e q r => EACurve e q r
+ Data.Curve.Edwards: class (GaloisField q, PrimeField r, Curve 'Edwards c e q r) => ECurve c e q r
+ Data.Curve.Edwards: class ECurve 'Projective e q r => EPCurve e q r
+ Data.Curve.Edwards: d_ :: ECurve c e q r => EPoint c e q r -> q
+ Data.Curve.Edwards: gA_ :: EACurve e q r => EAPoint e q r
+ Data.Curve.Edwards: gP_ :: EPCurve e q r => EPPoint e q r
+ Data.Curve.Edwards: h_ :: ECurve c e q r => EPoint c e q r -> Natural
+ Data.Curve.Edwards: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Affine e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Projective e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. Data.Curve.Edwards.EACurve e q r => Data.Curve.Curve 'Data.Curve.Edwards 'Data.Curve.Affine e q r
+ Data.Curve.Edwards: instance forall k (e :: k) q r. Data.Curve.Edwards.EACurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Data.Curve.Edwards.EAPoint e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. Data.Curve.Edwards.EPCurve e q r => Data.Curve.Curve 'Data.Curve.Edwards 'Data.Curve.Projective e q r
+ Data.Curve.Edwards: instance forall k (e :: k) q r. Data.Curve.Edwards.EPCurve e q r => GHC.Classes.Eq (Data.Curve.Edwards.EPPoint e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. Data.Curve.Edwards.EPCurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Data.Curve.Edwards.EPPoint e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. GHC.Classes.Eq q => GHC.Classes.Eq (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Affine e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. GHC.Generics.Generic (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Affine e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. GHC.Generics.Generic (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Projective e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Affine e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Projective e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Affine e q r)
+ Data.Curve.Edwards: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Data.Curve.Point 'Data.Curve.Edwards 'Data.Curve.Projective e q r)
+ Data.Curve.Edwards: q_ :: ECurve c e q r => EPoint c e q r -> Natural
+ Data.Curve.Edwards: r_ :: ECurve c e q r => EPoint c e q r -> Natural
+ Data.Curve.Edwards: type EAPoint = EPoint 'Affine
+ Data.Curve.Edwards: type EPPoint = EPoint 'Projective
+ Data.Curve.Edwards: type EPoint = Point 'Edwards
+ Data.Curve.Edwards.Curve1174: _a :: Fq
+ Data.Curve.Edwards.Curve1174: _d :: Fq
+ Data.Curve.Edwards.Curve1174: _h :: Natural
+ Data.Curve.Edwards.Curve1174: _q :: Natural
+ Data.Curve.Edwards.Curve1174: _r :: Natural
+ Data.Curve.Edwards.Curve1174: _x :: Fq
+ Data.Curve.Edwards.Curve1174: _y :: Fq
+ Data.Curve.Edwards.Curve1174: data Curve1174
+ Data.Curve.Edwards.Curve1174: gA :: PA
+ Data.Curve.Edwards.Curve1174: gP :: PP
+ Data.Curve.Edwards.Curve1174: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.Curve1174.Curve1174 Data.Curve.Edwards.Curve1174.Fq Data.Curve.Edwards.Curve1174.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.Curve1174.Curve1174 Data.Curve.Edwards.Curve1174.Fq Data.Curve.Edwards.Curve1174.Fr
+ Data.Curve.Edwards.Curve1174: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.Curve1174.Curve1174 Data.Curve.Edwards.Curve1174.Fq Data.Curve.Edwards.Curve1174.Fr
+ Data.Curve.Edwards.Curve1174: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.Curve1174.Curve1174 Data.Curve.Edwards.Curve1174.Fq Data.Curve.Edwards.Curve1174.Fr
+ Data.Curve.Edwards.Curve1174: type Fq = Prime Q
+ Data.Curve.Edwards.Curve1174: type Fr = Prime R
+ Data.Curve.Edwards.Curve1174: type PA = EAPoint Curve1174 Fq Fr
+ Data.Curve.Edwards.Curve1174: type PP = EPPoint Curve1174 Fq Fr
+ Data.Curve.Edwards.Curve1174: type Q = 3618502788666131106986593281521497120414687020801267626233049500247285301239
+ Data.Curve.Edwards.Curve1174: type R = 904625697166532776746648320380374280092339035279495474023489261773642975601
+ Data.Curve.Edwards.Curve41417: _a :: Fq
+ Data.Curve.Edwards.Curve41417: _d :: Fq
+ Data.Curve.Edwards.Curve41417: _h :: Natural
+ Data.Curve.Edwards.Curve41417: _q :: Natural
+ Data.Curve.Edwards.Curve41417: _r :: Natural
+ Data.Curve.Edwards.Curve41417: _x :: Fq
+ Data.Curve.Edwards.Curve41417: _y :: Fq
+ Data.Curve.Edwards.Curve41417: data Curve41417
+ Data.Curve.Edwards.Curve41417: gA :: PA
+ Data.Curve.Edwards.Curve41417: gP :: PP
+ Data.Curve.Edwards.Curve41417: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.Curve41417.Curve41417 Data.Curve.Edwards.Curve41417.Fq Data.Curve.Edwards.Curve41417.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.Curve41417.Curve41417 Data.Curve.Edwards.Curve41417.Fq Data.Curve.Edwards.Curve41417.Fr
+ Data.Curve.Edwards.Curve41417: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.Curve41417.Curve41417 Data.Curve.Edwards.Curve41417.Fq Data.Curve.Edwards.Curve41417.Fr
+ Data.Curve.Edwards.Curve41417: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.Curve41417.Curve41417 Data.Curve.Edwards.Curve41417.Fq Data.Curve.Edwards.Curve41417.Fr
+ Data.Curve.Edwards.Curve41417: type Fq = Prime Q
+ Data.Curve.Edwards.Curve41417: type Fr = Prime R
+ Data.Curve.Edwards.Curve41417: type PA = EAPoint Curve41417 Fq Fr
+ Data.Curve.Edwards.Curve41417: type PP = EPPoint Curve41417 Fq Fr
+ Data.Curve.Edwards.Curve41417: type Q = 42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472367
+ Data.Curve.Edwards.Curve41417: type R = 5288447750321988791615322464262168318627237463714249754277190328831105466135348245791335989419337099796002495788978276839289
+ Data.Curve.Edwards.E222: _a :: Fq
+ Data.Curve.Edwards.E222: _d :: Fq
+ Data.Curve.Edwards.E222: _h :: Natural
+ Data.Curve.Edwards.E222: _q :: Natural
+ Data.Curve.Edwards.E222: _r :: Natural
+ Data.Curve.Edwards.E222: _x :: Fq
+ Data.Curve.Edwards.E222: _y :: Fq
+ Data.Curve.Edwards.E222: data E222
+ Data.Curve.Edwards.E222: gA :: PA
+ Data.Curve.Edwards.E222: gP :: PP
+ Data.Curve.Edwards.E222: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.E222.E222 Data.Curve.Edwards.E222.Fq Data.Curve.Edwards.E222.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.E222.E222 Data.Curve.Edwards.E222.Fq Data.Curve.Edwards.E222.Fr
+ Data.Curve.Edwards.E222: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.E222.E222 Data.Curve.Edwards.E222.Fq Data.Curve.Edwards.E222.Fr
+ Data.Curve.Edwards.E222: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.E222.E222 Data.Curve.Edwards.E222.Fq Data.Curve.Edwards.E222.Fr
+ Data.Curve.Edwards.E222: type Fq = Prime Q
+ Data.Curve.Edwards.E222: type Fr = Prime R
+ Data.Curve.Edwards.E222: type PA = EAPoint E222 Fq Fr
+ Data.Curve.Edwards.E222: type PP = EPPoint E222 Fq Fr
+ Data.Curve.Edwards.E222: type Q = 6739986666787659948666753771754907668409286105635143120275902562187
+ Data.Curve.Edwards.E222: type R = 1684996666696914987166688442938726735569737456760058294185521417407
+ Data.Curve.Edwards.E382: _a :: Fq
+ Data.Curve.Edwards.E382: _d :: Fq
+ Data.Curve.Edwards.E382: _h :: Natural
+ Data.Curve.Edwards.E382: _q :: Natural
+ Data.Curve.Edwards.E382: _r :: Natural
+ Data.Curve.Edwards.E382: _x :: Fq
+ Data.Curve.Edwards.E382: _y :: Fq
+ Data.Curve.Edwards.E382: data E382
+ Data.Curve.Edwards.E382: gA :: PA
+ Data.Curve.Edwards.E382: gP :: PP
+ Data.Curve.Edwards.E382: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.E382.E382 Data.Curve.Edwards.E382.Fq Data.Curve.Edwards.E382.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.E382.E382 Data.Curve.Edwards.E382.Fq Data.Curve.Edwards.E382.Fr
+ Data.Curve.Edwards.E382: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.E382.E382 Data.Curve.Edwards.E382.Fq Data.Curve.Edwards.E382.Fr
+ Data.Curve.Edwards.E382: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.E382.E382 Data.Curve.Edwards.E382.Fq Data.Curve.Edwards.E382.Fr
+ Data.Curve.Edwards.E382: type Fq = Prime Q
+ Data.Curve.Edwards.E382: type Fr = Prime R
+ Data.Curve.Edwards.E382: type PA = EAPoint E382 Fq Fr
+ Data.Curve.Edwards.E382: type PP = EPPoint E382 Fq Fr
+ Data.Curve.Edwards.E382: type Q = 9850501549098619803069760025035903451269934817616361666987073351061430442874302652853566563721228910201656997576599
+ Data.Curve.Edwards.E382: type R = 2462625387274654950767440006258975862817483704404090416745738034557663054564649171262659326683244604346084081047321
+ Data.Curve.Edwards.E521: _a :: Fq
+ Data.Curve.Edwards.E521: _d :: Fq
+ Data.Curve.Edwards.E521: _h :: Natural
+ Data.Curve.Edwards.E521: _q :: Natural
+ Data.Curve.Edwards.E521: _r :: Natural
+ Data.Curve.Edwards.E521: _x :: Fq
+ Data.Curve.Edwards.E521: _y :: Fq
+ Data.Curve.Edwards.E521: data E521
+ Data.Curve.Edwards.E521: gA :: PA
+ Data.Curve.Edwards.E521: gP :: PP
+ Data.Curve.Edwards.E521: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.E521.E521 Data.Curve.Edwards.E521.Fq Data.Curve.Edwards.E521.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.E521.E521 Data.Curve.Edwards.E521.Fq Data.Curve.Edwards.E521.Fr
+ Data.Curve.Edwards.E521: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.E521.E521 Data.Curve.Edwards.E521.Fq Data.Curve.Edwards.E521.Fr
+ Data.Curve.Edwards.E521: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.E521.E521 Data.Curve.Edwards.E521.Fq Data.Curve.Edwards.E521.Fr
+ Data.Curve.Edwards.E521: type Fq = Prime Q
+ Data.Curve.Edwards.E521: type Fr = Prime R
+ Data.Curve.Edwards.E521: type PA = EAPoint E521 Fq Fr
+ Data.Curve.Edwards.E521: type PP = EPPoint E521 Fq Fr
+ Data.Curve.Edwards.E521: type Q = 6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151
+ Data.Curve.Edwards.E521: type R = 1716199415032652428745475199770348304317358825035826352348615864796385795849413675475876651663657849636693659065234142604319282948702542317993421293670108523
+ Data.Curve.Edwards.Ed25519: _a :: Fq
+ Data.Curve.Edwards.Ed25519: _d :: Fq
+ Data.Curve.Edwards.Ed25519: _h :: Natural
+ Data.Curve.Edwards.Ed25519: _q :: Natural
+ Data.Curve.Edwards.Ed25519: _r :: Natural
+ Data.Curve.Edwards.Ed25519: _x :: Fq
+ Data.Curve.Edwards.Ed25519: _y :: Fq
+ Data.Curve.Edwards.Ed25519: data Ed25519
+ Data.Curve.Edwards.Ed25519: gA :: PA
+ Data.Curve.Edwards.Ed25519: gP :: PP
+ Data.Curve.Edwards.Ed25519: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.Ed25519.Ed25519 Data.Curve.Edwards.Ed25519.Fq Data.Curve.Edwards.Ed25519.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.Ed25519.Ed25519 Data.Curve.Edwards.Ed25519.Fq Data.Curve.Edwards.Ed25519.Fr
+ Data.Curve.Edwards.Ed25519: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.Ed25519.Ed25519 Data.Curve.Edwards.Ed25519.Fq Data.Curve.Edwards.Ed25519.Fr
+ Data.Curve.Edwards.Ed25519: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.Ed25519.Ed25519 Data.Curve.Edwards.Ed25519.Fq Data.Curve.Edwards.Ed25519.Fr
+ Data.Curve.Edwards.Ed25519: type Fq = Prime Q
+ Data.Curve.Edwards.Ed25519: type Fr = Prime R
+ Data.Curve.Edwards.Ed25519: type PA = EAPoint Ed25519 Fq Fr
+ Data.Curve.Edwards.Ed25519: type PP = EPPoint Ed25519 Fq Fr
+ Data.Curve.Edwards.Ed25519: type Q = 57896044618658097711785492504343953926634992332820282019728792003956564819949
+ Data.Curve.Edwards.Ed25519: type R = 7237005577332262213973186563042994240857116359379907606001950938285454250989
+ Data.Curve.Edwards.Ed3363: _a :: Fq
+ Data.Curve.Edwards.Ed3363: _d :: Fq
+ Data.Curve.Edwards.Ed3363: _h :: Natural
+ Data.Curve.Edwards.Ed3363: _q :: Natural
+ Data.Curve.Edwards.Ed3363: _r :: Natural
+ Data.Curve.Edwards.Ed3363: _x :: Fq
+ Data.Curve.Edwards.Ed3363: _y :: Fq
+ Data.Curve.Edwards.Ed3363: data Ed3363
+ Data.Curve.Edwards.Ed3363: gA :: PA
+ Data.Curve.Edwards.Ed3363: gP :: PP
+ Data.Curve.Edwards.Ed3363: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.Ed3363.Ed3363 Data.Curve.Edwards.Ed3363.Fq Data.Curve.Edwards.Ed3363.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.Ed3363.Ed3363 Data.Curve.Edwards.Ed3363.Fq Data.Curve.Edwards.Ed3363.Fr
+ Data.Curve.Edwards.Ed3363: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.Ed3363.Ed3363 Data.Curve.Edwards.Ed3363.Fq Data.Curve.Edwards.Ed3363.Fr
+ Data.Curve.Edwards.Ed3363: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.Ed3363.Ed3363 Data.Curve.Edwards.Ed3363.Fq Data.Curve.Edwards.Ed3363.Fr
+ Data.Curve.Edwards.Ed3363: type Fq = Prime Q
+ Data.Curve.Edwards.Ed3363: type Fr = Prime R
+ Data.Curve.Edwards.Ed3363: type PA = EAPoint Ed3363 Fq Fr
+ Data.Curve.Edwards.Ed3363: type PP = EPPoint Ed3363 Fq Fr
+ Data.Curve.Edwards.Ed3363: type Q = 139984046386112763159840142535527767382602843577165595931249318810236991948760059086304843329475444733
+ Data.Curve.Edwards.Ed3363: type R = 17498005798264095394980017816940970922825355447145709836587587134987699588874282995658187611024893957
+ Data.Curve.Edwards.Ed448: _a :: Fq
+ Data.Curve.Edwards.Ed448: _d :: Fq
+ Data.Curve.Edwards.Ed448: _h :: Natural
+ Data.Curve.Edwards.Ed448: _q :: Natural
+ Data.Curve.Edwards.Ed448: _r :: Natural
+ Data.Curve.Edwards.Ed448: _x :: Fq
+ Data.Curve.Edwards.Ed448: _y :: Fq
+ Data.Curve.Edwards.Ed448: data Ed448
+ Data.Curve.Edwards.Ed448: gA :: PA
+ Data.Curve.Edwards.Ed448: gP :: PP
+ Data.Curve.Edwards.Ed448: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.Ed448.Ed448 Data.Curve.Edwards.Ed448.Fq Data.Curve.Edwards.Ed448.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.Ed448.Ed448 Data.Curve.Edwards.Ed448.Fq Data.Curve.Edwards.Ed448.Fr
+ Data.Curve.Edwards.Ed448: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.Ed448.Ed448 Data.Curve.Edwards.Ed448.Fq Data.Curve.Edwards.Ed448.Fr
+ Data.Curve.Edwards.Ed448: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.Ed448.Ed448 Data.Curve.Edwards.Ed448.Fq Data.Curve.Edwards.Ed448.Fr
+ Data.Curve.Edwards.Ed448: type Fq = Prime Q
+ Data.Curve.Edwards.Ed448: type Fr = Prime R
+ Data.Curve.Edwards.Ed448: type PA = EAPoint Ed448 Fq Fr
+ Data.Curve.Edwards.Ed448: type PP = EPPoint Ed448 Fq Fr
+ Data.Curve.Edwards.Ed448: type Q = 726838724295606890549323807888004534353641360687318060281490199180612328166730772686396383698676545930088884461843637361053498018365439
+ Data.Curve.Edwards.Ed448: type R = 181709681073901722637330951972001133588410340171829515070372549795146003961539585716195755291692375963310293709091662304773755859649779
+ Data.Curve.Edwards.JubJub: _a :: Fq
+ Data.Curve.Edwards.JubJub: _d :: Fq
+ Data.Curve.Edwards.JubJub: _h :: Natural
+ Data.Curve.Edwards.JubJub: _q :: Natural
+ Data.Curve.Edwards.JubJub: _r :: Natural
+ Data.Curve.Edwards.JubJub: _x :: Fq
+ Data.Curve.Edwards.JubJub: _y :: Fq
+ Data.Curve.Edwards.JubJub: data JubJub
+ Data.Curve.Edwards.JubJub: gA :: PA
+ Data.Curve.Edwards.JubJub: gP :: PP
+ Data.Curve.Edwards.JubJub: instance Data.Curve.Curve 'Data.Curve.Edwards c Data.Curve.Edwards.JubJub.JubJub Data.Curve.Edwards.JubJub.Fq Data.Curve.Edwards.JubJub.Fr => Data.Curve.Edwards.ECurve c Data.Curve.Edwards.JubJub.JubJub Data.Curve.Edwards.JubJub.Fq Data.Curve.Edwards.JubJub.Fr
+ Data.Curve.Edwards.JubJub: instance Data.Curve.Edwards.EACurve Data.Curve.Edwards.JubJub.JubJub Data.Curve.Edwards.JubJub.Fq Data.Curve.Edwards.JubJub.Fr
+ Data.Curve.Edwards.JubJub: instance Data.Curve.Edwards.EPCurve Data.Curve.Edwards.JubJub.JubJub Data.Curve.Edwards.JubJub.Fq Data.Curve.Edwards.JubJub.Fr
+ Data.Curve.Edwards.JubJub: type Fq = Prime Q
+ Data.Curve.Edwards.JubJub: type Fr = Prime R
+ Data.Curve.Edwards.JubJub: type PA = EAPoint JubJub Fq Fr
+ Data.Curve.Edwards.JubJub: type PP = EPPoint JubJub Fq Fr
+ Data.Curve.Edwards.JubJub: type Q = 52435875175126190479447740508185965837690552500527637822603658699938581184513
+ Data.Curve.Edwards.JubJub: type R = 6554484396890773809930967563523245729705921265872317281365359162392183254199
+ Data.Curve.Montgomery: a_ :: MCurve c e q r => MPoint c e q r -> q
+ Data.Curve.Montgomery: b_ :: MCurve c e q r => MPoint c e q r -> q
+ Data.Curve.Montgomery: class MCurve 'Affine e q r => MACurve e q r
+ Data.Curve.Montgomery: class (GaloisField q, PrimeField r, Curve 'Montgomery c e q r) => MCurve c e q r
+ Data.Curve.Montgomery: gA_ :: MACurve e q r => MAPoint e q r
+ Data.Curve.Montgomery: h_ :: MCurve c e q r => MPoint c e q r -> Natural
+ Data.Curve.Montgomery: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Data.Curve.Point 'Data.Curve.Montgomery 'Data.Curve.Affine e q r)
+ Data.Curve.Montgomery: instance forall k (e :: k) q r. Data.Curve.Montgomery.MACurve e q r => Data.Curve.Curve 'Data.Curve.Montgomery 'Data.Curve.Affine e q r
+ Data.Curve.Montgomery: instance forall k (e :: k) q r. Data.Curve.Montgomery.MACurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Data.Curve.Montgomery.MAPoint e q r)
+ Data.Curve.Montgomery: instance forall k (e :: k) q r. GHC.Classes.Eq q => GHC.Classes.Eq (Data.Curve.Point 'Data.Curve.Montgomery 'Data.Curve.Affine e q r)
+ Data.Curve.Montgomery: instance forall k (e :: k) q r. GHC.Generics.Generic (Data.Curve.Point 'Data.Curve.Montgomery 'Data.Curve.Affine e q r)
+ Data.Curve.Montgomery: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Data.Curve.Point 'Data.Curve.Montgomery 'Data.Curve.Affine e q r)
+ Data.Curve.Montgomery: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Data.Curve.Point 'Data.Curve.Montgomery 'Data.Curve.Affine e q r)
+ Data.Curve.Montgomery: q_ :: MCurve c e q r => MPoint c e q r -> Natural
+ Data.Curve.Montgomery: r_ :: MCurve c e q r => MPoint c e q r -> Natural
+ Data.Curve.Montgomery: type MAPoint = MPoint 'Affine
+ Data.Curve.Montgomery: type MPoint = Point 'Montgomery
+ Data.Curve.Montgomery.Curve25519: _a :: Fq
+ Data.Curve.Montgomery.Curve25519: _b :: Fq
+ Data.Curve.Montgomery.Curve25519: _h :: Natural
+ Data.Curve.Montgomery.Curve25519: _q :: Natural
+ Data.Curve.Montgomery.Curve25519: _r :: Natural
+ Data.Curve.Montgomery.Curve25519: _x :: Fq
+ Data.Curve.Montgomery.Curve25519: _y :: Fq
+ Data.Curve.Montgomery.Curve25519: data Curve25519
+ Data.Curve.Montgomery.Curve25519: gA :: PA
+ Data.Curve.Montgomery.Curve25519: instance Data.Curve.Curve 'Data.Curve.Montgomery c Data.Curve.Montgomery.Curve25519.Curve25519 Data.Curve.Montgomery.Curve25519.Fq Data.Curve.Montgomery.Curve25519.Fr => Data.Curve.Montgomery.MCurve c Data.Curve.Montgomery.Curve25519.Curve25519 Data.Curve.Montgomery.Curve25519.Fq Data.Curve.Montgomery.Curve25519.Fr
+ Data.Curve.Montgomery.Curve25519: instance Data.Curve.Montgomery.MACurve Data.Curve.Montgomery.Curve25519.Curve25519 Data.Curve.Montgomery.Curve25519.Fq Data.Curve.Montgomery.Curve25519.Fr
+ Data.Curve.Montgomery.Curve25519: type Fq = Prime Q
+ Data.Curve.Montgomery.Curve25519: type Fr = Prime R
+ Data.Curve.Montgomery.Curve25519: type PA = MAPoint Curve25519 Fq Fr
+ Data.Curve.Montgomery.Curve25519: type Q = 57896044618658097711785492504343953926634992332820282019728792003956564819949
+ Data.Curve.Montgomery.Curve25519: type R = 7237005577332262213973186563042994240857116359379907606001950938285454250989
+ Data.Curve.Montgomery.Curve383187: _a :: Fq
+ Data.Curve.Montgomery.Curve383187: _b :: Fq
+ Data.Curve.Montgomery.Curve383187: _h :: Natural
+ Data.Curve.Montgomery.Curve383187: _q :: Natural
+ Data.Curve.Montgomery.Curve383187: _r :: Natural
+ Data.Curve.Montgomery.Curve383187: _x :: Fq
+ Data.Curve.Montgomery.Curve383187: _y :: Fq
+ Data.Curve.Montgomery.Curve383187: data Curve383187
+ Data.Curve.Montgomery.Curve383187: gA :: PA
+ Data.Curve.Montgomery.Curve383187: instance Data.Curve.Curve 'Data.Curve.Montgomery c Data.Curve.Montgomery.Curve383187.Curve383187 Data.Curve.Montgomery.Curve383187.Fq Data.Curve.Montgomery.Curve383187.Fr => Data.Curve.Montgomery.MCurve c Data.Curve.Montgomery.Curve383187.Curve383187 Data.Curve.Montgomery.Curve383187.Fq Data.Curve.Montgomery.Curve383187.Fr
+ Data.Curve.Montgomery.Curve383187: instance Data.Curve.Montgomery.MACurve Data.Curve.Montgomery.Curve383187.Curve383187 Data.Curve.Montgomery.Curve383187.Fq Data.Curve.Montgomery.Curve383187.Fr
+ Data.Curve.Montgomery.Curve383187: type Fq = Prime Q
+ Data.Curve.Montgomery.Curve383187: type Fr = Prime R
+ Data.Curve.Montgomery.Curve383187: type PA = MAPoint Curve383187 Fq Fr
+ Data.Curve.Montgomery.Curve383187: type Q = 19701003098197239606139520050071806902539869635232723333974146702122860885748605305707133127442457820403313995153221
+ Data.Curve.Montgomery.Curve383187: type R = 2462625387274654950767440006258975862817483704404090416747124418612574880605944350369924877650606926799392131911201
+ Data.Curve.Montgomery.Curve448: _a :: Fq
+ Data.Curve.Montgomery.Curve448: _b :: Fq
+ Data.Curve.Montgomery.Curve448: _h :: Natural
+ Data.Curve.Montgomery.Curve448: _q :: Natural
+ Data.Curve.Montgomery.Curve448: _r :: Natural
+ Data.Curve.Montgomery.Curve448: _x :: Fq
+ Data.Curve.Montgomery.Curve448: _y :: Fq
+ Data.Curve.Montgomery.Curve448: data Curve448
+ Data.Curve.Montgomery.Curve448: gA :: PA
+ Data.Curve.Montgomery.Curve448: instance Data.Curve.Curve 'Data.Curve.Montgomery c Data.Curve.Montgomery.Curve448.Curve448 Data.Curve.Montgomery.Curve448.Fq Data.Curve.Montgomery.Curve448.Fr => Data.Curve.Montgomery.MCurve c Data.Curve.Montgomery.Curve448.Curve448 Data.Curve.Montgomery.Curve448.Fq Data.Curve.Montgomery.Curve448.Fr
+ Data.Curve.Montgomery.Curve448: instance Data.Curve.Montgomery.MACurve Data.Curve.Montgomery.Curve448.Curve448 Data.Curve.Montgomery.Curve448.Fq Data.Curve.Montgomery.Curve448.Fr
+ Data.Curve.Montgomery.Curve448: type Fq = Prime Q
+ Data.Curve.Montgomery.Curve448: type Fr = Prime R
+ Data.Curve.Montgomery.Curve448: type PA = MAPoint Curve448 Fq Fr
+ Data.Curve.Montgomery.Curve448: type Q = 726838724295606890549323807888004534353641360687318060281490199180612328166730772686396383698676545930088884461843637361053498018365439
+ Data.Curve.Montgomery.Curve448: type R = 181709681073901722637330951972001133588410340171829515070372549795146003961539585716195755291692375963310293709091662304773755859649779
+ Data.Curve.Montgomery.M221: _a :: Fq
+ Data.Curve.Montgomery.M221: _b :: Fq
+ Data.Curve.Montgomery.M221: _h :: Natural
+ Data.Curve.Montgomery.M221: _q :: Natural
+ Data.Curve.Montgomery.M221: _r :: Natural
+ Data.Curve.Montgomery.M221: _x :: Fq
+ Data.Curve.Montgomery.M221: _y :: Fq
+ Data.Curve.Montgomery.M221: data M221
+ Data.Curve.Montgomery.M221: gA :: PA
+ Data.Curve.Montgomery.M221: instance Data.Curve.Curve 'Data.Curve.Montgomery c Data.Curve.Montgomery.M221.M221 Data.Curve.Montgomery.M221.Fq Data.Curve.Montgomery.M221.Fr => Data.Curve.Montgomery.MCurve c Data.Curve.Montgomery.M221.M221 Data.Curve.Montgomery.M221.Fq Data.Curve.Montgomery.M221.Fr
+ Data.Curve.Montgomery.M221: instance Data.Curve.Montgomery.MACurve Data.Curve.Montgomery.M221.M221 Data.Curve.Montgomery.M221.Fq Data.Curve.Montgomery.M221.Fr
+ Data.Curve.Montgomery.M221: type Fq = Prime Q
+ Data.Curve.Montgomery.M221: type Fr = Prime R
+ Data.Curve.Montgomery.M221: type PA = MAPoint M221 Fq Fr
+ Data.Curve.Montgomery.M221: type Q = 3369993333393829974333376885877453834204643052817571560137951281149
+ Data.Curve.Montgomery.M221: type R = 421249166674228746791672110734682167926895081980396304944335052891
+ Data.Curve.Montgomery.M383: _a :: Fq
+ Data.Curve.Montgomery.M383: _b :: Fq
+ Data.Curve.Montgomery.M383: _h :: Natural
+ Data.Curve.Montgomery.M383: _q :: Natural
+ Data.Curve.Montgomery.M383: _r :: Natural
+ Data.Curve.Montgomery.M383: _x :: Fq
+ Data.Curve.Montgomery.M383: _y :: Fq
+ Data.Curve.Montgomery.M383: data M383
+ Data.Curve.Montgomery.M383: gA :: PA
+ Data.Curve.Montgomery.M383: instance Data.Curve.Curve 'Data.Curve.Montgomery c Data.Curve.Montgomery.M383.M383 Data.Curve.Montgomery.M383.Fq Data.Curve.Montgomery.M383.Fr => Data.Curve.Montgomery.MCurve c Data.Curve.Montgomery.M383.M383 Data.Curve.Montgomery.M383.Fq Data.Curve.Montgomery.M383.Fr
+ Data.Curve.Montgomery.M383: instance Data.Curve.Montgomery.MACurve Data.Curve.Montgomery.M383.M383 Data.Curve.Montgomery.M383.Fq Data.Curve.Montgomery.M383.Fr
+ Data.Curve.Montgomery.M383: type Fq = Prime Q
+ Data.Curve.Montgomery.M383: type Fr = Prime R
+ Data.Curve.Montgomery.M383: type PA = MAPoint M383 Fq Fr
+ Data.Curve.Montgomery.M383: type Q = 19701003098197239606139520050071806902539869635232723333974146702122860885748605305707133127442457820403313995153221
+ Data.Curve.Montgomery.M383: type R = 2462625387274654950767440006258975862817483704404090416746934574041288984234680883008327183083615266784870011007447
+ Data.Curve.Montgomery.M511: _a :: Fq
+ Data.Curve.Montgomery.M511: _b :: Fq
+ Data.Curve.Montgomery.M511: _h :: Natural
+ Data.Curve.Montgomery.M511: _q :: Natural
+ Data.Curve.Montgomery.M511: _r :: Natural
+ Data.Curve.Montgomery.M511: _x :: Fq
+ Data.Curve.Montgomery.M511: _y :: Fq
+ Data.Curve.Montgomery.M511: data M511
+ Data.Curve.Montgomery.M511: gA :: PA
+ Data.Curve.Montgomery.M511: instance Data.Curve.Curve 'Data.Curve.Montgomery c Data.Curve.Montgomery.M511.M511 Data.Curve.Montgomery.M511.Fq Data.Curve.Montgomery.M511.Fr => Data.Curve.Montgomery.MCurve c Data.Curve.Montgomery.M511.M511 Data.Curve.Montgomery.M511.Fq Data.Curve.Montgomery.M511.Fr
+ Data.Curve.Montgomery.M511: instance Data.Curve.Montgomery.MACurve Data.Curve.Montgomery.M511.M511 Data.Curve.Montgomery.M511.Fq Data.Curve.Montgomery.M511.Fr
+ Data.Curve.Montgomery.M511: type Fq = Prime Q
+ Data.Curve.Montgomery.M511: type Fr = Prime R
+ Data.Curve.Montgomery.M511: type PA = MAPoint M511 Fq Fr
+ Data.Curve.Montgomery.M511: type Q = 6703903964971298549787012499102923063739682910296196688861780721860882015036773488400937149083451713845015929093243025426876941405973284973216824503041861
+ Data.Curve.Montgomery.M511: type R = 837987995621412318723376562387865382967460363787024586107722590232610251879607410804876779383055508762141059258497448934987052508775626162460930737942299
+ Data.Curve.Weierstrass: a_ :: WCurve c e q r => WPoint c e q r -> q
+ Data.Curve.Weierstrass: b_ :: WCurve c e q r => WPoint c e q r -> q
+ Data.Curve.Weierstrass: class WCurve 'Affine e q r => WACurve e q r
+ Data.Curve.Weierstrass: class (GaloisField q, PrimeField r, Curve 'Weierstrass c e q r) => WCurve c e q r
+ Data.Curve.Weierstrass: class WCurve 'Jacobian e q r => WJCurve e q r
+ Data.Curve.Weierstrass: class WCurve 'Projective e q r => WPCurve e q r
+ Data.Curve.Weierstrass: gA_ :: WACurve e q r => WAPoint e q r
+ Data.Curve.Weierstrass: gJ_ :: WJCurve e q r => WJPoint e q r
+ Data.Curve.Weierstrass: gP_ :: WPCurve e q r => WPPoint e q r
+ Data.Curve.Weierstrass: h_ :: WCurve c e q r => WPoint c e q r -> Natural
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Affine e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Jacobian e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Control.DeepSeq.NFData q => Control.DeepSeq.NFData (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Projective e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Data.Curve.Weierstrass.WACurve e q r => Data.Curve.Curve 'Data.Curve.Weierstrass 'Data.Curve.Affine e q r
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Data.Curve.Weierstrass.WACurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Data.Curve.Weierstrass.WAPoint e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Data.Curve.Weierstrass.WJCurve e q r => Data.Curve.Curve 'Data.Curve.Weierstrass 'Data.Curve.Jacobian e q r
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Data.Curve.Weierstrass.WJCurve e q r => GHC.Classes.Eq (Data.Curve.Weierstrass.WJPoint e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Data.Curve.Weierstrass.WJCurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Data.Curve.Weierstrass.WJPoint e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Data.Curve.Weierstrass.WPCurve e q r => Data.Curve.Curve 'Data.Curve.Weierstrass 'Data.Curve.Projective e q r
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Data.Curve.Weierstrass.WPCurve e q r => GHC.Classes.Eq (Data.Curve.Weierstrass.WPPoint e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. Data.Curve.Weierstrass.WPCurve e q r => Text.PrettyPrint.Leijen.Text.Pretty (Data.Curve.Weierstrass.WPPoint e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Classes.Eq q => GHC.Classes.Eq (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Affine e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Generics.Generic (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Affine e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Generics.Generic (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Jacobian e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Generics.Generic (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Projective e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Affine e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Jacobian e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Read.Read q => GHC.Read.Read (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Projective e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Affine e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Jacobian e q r)
+ Data.Curve.Weierstrass: instance forall k (e :: k) q r. GHC.Show.Show q => GHC.Show.Show (Data.Curve.Point 'Data.Curve.Weierstrass 'Data.Curve.Projective e q r)
+ Data.Curve.Weierstrass: q_ :: WCurve c e q r => WPoint c e q r -> Natural
+ Data.Curve.Weierstrass: r_ :: WCurve c e q r => WPoint c e q r -> Natural
+ Data.Curve.Weierstrass: type WAPoint = WPoint 'Affine
+ Data.Curve.Weierstrass: type WJPoint = WPoint 'Jacobian
+ Data.Curve.Weierstrass: type WPPoint = WPoint 'Projective
+ Data.Curve.Weierstrass: type WPoint = Point 'Weierstrass
+ Data.Curve.Weierstrass.ANSSIFRP256V1: _a :: Fq
+ Data.Curve.Weierstrass.ANSSIFRP256V1: _b :: Fq
+ Data.Curve.Weierstrass.ANSSIFRP256V1: _h :: Natural
+ Data.Curve.Weierstrass.ANSSIFRP256V1: _q :: Natural
+ Data.Curve.Weierstrass.ANSSIFRP256V1: _r :: Natural
+ Data.Curve.Weierstrass.ANSSIFRP256V1: _x :: Fq
+ Data.Curve.Weierstrass.ANSSIFRP256V1: _y :: Fq
+ Data.Curve.Weierstrass.ANSSIFRP256V1: data ANSSIFRP256V1
+ Data.Curve.Weierstrass.ANSSIFRP256V1: gA :: PA
+ Data.Curve.Weierstrass.ANSSIFRP256V1: gJ :: PJ
+ Data.Curve.Weierstrass.ANSSIFRP256V1: gP :: PP
+ Data.Curve.Weierstrass.ANSSIFRP256V1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Data.Curve.Weierstrass.ANSSIFRP256V1.Fq Data.Curve.Weierstrass.ANSSIFRP256V1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Data.Curve.Weierstrass.ANSSIFRP256V1.Fq Data.Curve.Weierstrass.ANSSIFRP256V1.Fr
+ Data.Curve.Weierstrass.ANSSIFRP256V1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Data.Curve.Weierstrass.ANSSIFRP256V1.Fq Data.Curve.Weierstrass.ANSSIFRP256V1.Fr
+ Data.Curve.Weierstrass.ANSSIFRP256V1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Data.Curve.Weierstrass.ANSSIFRP256V1.Fq Data.Curve.Weierstrass.ANSSIFRP256V1.Fr
+ Data.Curve.Weierstrass.ANSSIFRP256V1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.ANSSIFRP256V1.ANSSIFRP256V1 Data.Curve.Weierstrass.ANSSIFRP256V1.Fq Data.Curve.Weierstrass.ANSSIFRP256V1.Fr
+ Data.Curve.Weierstrass.ANSSIFRP256V1: type Fq = Prime Q
+ Data.Curve.Weierstrass.ANSSIFRP256V1: type Fr = Prime R
+ Data.Curve.Weierstrass.ANSSIFRP256V1: type PA = WAPoint ANSSIFRP256V1 Fq Fr
+ Data.Curve.Weierstrass.ANSSIFRP256V1: type PJ = WJPoint ANSSIFRP256V1 Fq Fr
+ Data.Curve.Weierstrass.ANSSIFRP256V1: type PP = WPPoint ANSSIFRP256V1 Fq Fr
+ Data.Curve.Weierstrass.ANSSIFRP256V1: type Q = 109454571331697278617670725030735128145969349647868738157201323556196022393859
+ Data.Curve.Weierstrass.ANSSIFRP256V1: type R = 109454571331697278617670725030735128146004546811402412653072203207726079563233
+ Data.Curve.Weierstrass.Anomalous: _a :: Fq
+ Data.Curve.Weierstrass.Anomalous: _b :: Fq
+ Data.Curve.Weierstrass.Anomalous: _h :: Natural
+ Data.Curve.Weierstrass.Anomalous: _q :: Natural
+ Data.Curve.Weierstrass.Anomalous: _r :: Natural
+ Data.Curve.Weierstrass.Anomalous: _x :: Fq
+ Data.Curve.Weierstrass.Anomalous: _y :: Fq
+ Data.Curve.Weierstrass.Anomalous: data Anomalous
+ Data.Curve.Weierstrass.Anomalous: gA :: PA
+ Data.Curve.Weierstrass.Anomalous: gJ :: PJ
+ Data.Curve.Weierstrass.Anomalous: gP :: PP
+ Data.Curve.Weierstrass.Anomalous: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.Anomalous.Anomalous Data.Curve.Weierstrass.Anomalous.Fq Data.Curve.Weierstrass.Anomalous.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.Anomalous.Anomalous Data.Curve.Weierstrass.Anomalous.Fq Data.Curve.Weierstrass.Anomalous.Fr
+ Data.Curve.Weierstrass.Anomalous: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.Anomalous.Anomalous Data.Curve.Weierstrass.Anomalous.Fq Data.Curve.Weierstrass.Anomalous.Fr
+ Data.Curve.Weierstrass.Anomalous: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.Anomalous.Anomalous Data.Curve.Weierstrass.Anomalous.Fq Data.Curve.Weierstrass.Anomalous.Fr
+ Data.Curve.Weierstrass.Anomalous: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.Anomalous.Anomalous Data.Curve.Weierstrass.Anomalous.Fq Data.Curve.Weierstrass.Anomalous.Fr
+ Data.Curve.Weierstrass.Anomalous: type Fq = Prime Q
+ Data.Curve.Weierstrass.Anomalous: type Fr = Prime R
+ Data.Curve.Weierstrass.Anomalous: type PA = WAPoint Anomalous Fq Fr
+ Data.Curve.Weierstrass.Anomalous: type PJ = WJPoint Anomalous Fq Fr
+ Data.Curve.Weierstrass.Anomalous: type PP = WPPoint Anomalous Fq Fr
+ Data.Curve.Weierstrass.Anomalous: type Q = 17676318486848893030961583018778670610489016512983351739677143
+ Data.Curve.Weierstrass.Anomalous: type R = 17676318486848893030961583018778670610489016512983351739677143
+ Data.Curve.Weierstrass.BLS12381: _a :: Fq
+ Data.Curve.Weierstrass.BLS12381: _b :: Fq
+ Data.Curve.Weierstrass.BLS12381: _h :: Natural
+ Data.Curve.Weierstrass.BLS12381: _q :: Natural
+ Data.Curve.Weierstrass.BLS12381: _r :: Natural
+ Data.Curve.Weierstrass.BLS12381: _x :: Fq
+ Data.Curve.Weierstrass.BLS12381: _y :: Fq
+ Data.Curve.Weierstrass.BLS12381: data BLS12381
+ Data.Curve.Weierstrass.BLS12381: gA :: PA
+ Data.Curve.Weierstrass.BLS12381: gJ :: PJ
+ Data.Curve.Weierstrass.BLS12381: gP :: PP
+ Data.Curve.Weierstrass.BLS12381: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381.Fq Data.Curve.Weierstrass.BLS12381.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381.Fq Data.Curve.Weierstrass.BLS12381.Fr
+ Data.Curve.Weierstrass.BLS12381: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381.Fq Data.Curve.Weierstrass.BLS12381.Fr
+ Data.Curve.Weierstrass.BLS12381: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381.Fq Data.Curve.Weierstrass.BLS12381.Fr
+ Data.Curve.Weierstrass.BLS12381: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381.Fq Data.Curve.Weierstrass.BLS12381.Fr
+ Data.Curve.Weierstrass.BLS12381: type Fq = Prime Q
+ Data.Curve.Weierstrass.BLS12381: type Fr = Prime R
+ Data.Curve.Weierstrass.BLS12381: type PA = WAPoint BLS12381 Fq Fr
+ Data.Curve.Weierstrass.BLS12381: type PJ = WJPoint BLS12381 Fq Fr
+ Data.Curve.Weierstrass.BLS12381: type PP = WPPoint BLS12381 Fq Fr
+ Data.Curve.Weierstrass.BLS12381: type Q = 4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787
+ Data.Curve.Weierstrass.BLS12381: type R = 52435875175126190479447740508185965837690552500527637822603658699938581184513
+ Data.Curve.Weierstrass.BLS12381T: _a :: Fq2
+ Data.Curve.Weierstrass.BLS12381T: _b :: Fq2
+ Data.Curve.Weierstrass.BLS12381T: _h :: Natural
+ Data.Curve.Weierstrass.BLS12381T: _q :: Natural
+ Data.Curve.Weierstrass.BLS12381T: _r :: Natural
+ Data.Curve.Weierstrass.BLS12381T: _x :: Fq2
+ Data.Curve.Weierstrass.BLS12381T: _y :: Fq2
+ Data.Curve.Weierstrass.BLS12381T: data U
+ Data.Curve.Weierstrass.BLS12381T: gA :: PA
+ Data.Curve.Weierstrass.BLS12381T: gJ :: PJ
+ Data.Curve.Weierstrass.BLS12381T: gP :: PP
+ Data.Curve.Weierstrass.BLS12381T: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381T.Fq2 Data.Curve.Weierstrass.BLS12381.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381T.Fq2 Data.Curve.Weierstrass.BLS12381.Fr
+ Data.Curve.Weierstrass.BLS12381T: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381T.Fq2 Data.Curve.Weierstrass.BLS12381.Fr
+ Data.Curve.Weierstrass.BLS12381T: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381T.Fq2 Data.Curve.Weierstrass.BLS12381.Fr
+ Data.Curve.Weierstrass.BLS12381T: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BLS12381.BLS12381 Data.Curve.Weierstrass.BLS12381T.Fq2 Data.Curve.Weierstrass.BLS12381.Fr
+ Data.Curve.Weierstrass.BLS12381T: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BLS12381T.U Data.Curve.Weierstrass.BLS12381.Fq
+ Data.Curve.Weierstrass.BLS12381T: type Fq2 = Extension U Fq
+ Data.Curve.Weierstrass.BLS12381T: type PA = WAPoint BLS12381 Fq2 Fr
+ Data.Curve.Weierstrass.BLS12381T: type PJ = WJPoint BLS12381 Fq2 Fr
+ Data.Curve.Weierstrass.BLS12381T: type PP = WPPoint BLS12381 Fq2 Fr
+ Data.Curve.Weierstrass.BLS48581: _a :: Fq
+ Data.Curve.Weierstrass.BLS48581: _b :: Fq
+ Data.Curve.Weierstrass.BLS48581: _h :: Natural
+ Data.Curve.Weierstrass.BLS48581: _q :: Natural
+ Data.Curve.Weierstrass.BLS48581: _r :: Natural
+ Data.Curve.Weierstrass.BLS48581: _x :: Fq
+ Data.Curve.Weierstrass.BLS48581: _y :: Fq
+ Data.Curve.Weierstrass.BLS48581: data BLS48581
+ Data.Curve.Weierstrass.BLS48581: gA :: PA
+ Data.Curve.Weierstrass.BLS48581: gJ :: PJ
+ Data.Curve.Weierstrass.BLS48581: gP :: PP
+ Data.Curve.Weierstrass.BLS48581: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581.Fq Data.Curve.Weierstrass.BLS48581.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581.Fq Data.Curve.Weierstrass.BLS48581.Fr
+ Data.Curve.Weierstrass.BLS48581: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581.Fq Data.Curve.Weierstrass.BLS48581.Fr
+ Data.Curve.Weierstrass.BLS48581: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581.Fq Data.Curve.Weierstrass.BLS48581.Fr
+ Data.Curve.Weierstrass.BLS48581: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581.Fq Data.Curve.Weierstrass.BLS48581.Fr
+ Data.Curve.Weierstrass.BLS48581: type Fq = Prime Q
+ Data.Curve.Weierstrass.BLS48581: type Fr = Prime R
+ Data.Curve.Weierstrass.BLS48581: type PA = WAPoint BLS48581 Fq Fr
+ Data.Curve.Weierstrass.BLS48581: type PJ = WJPoint BLS48581 Fq Fr
+ Data.Curve.Weierstrass.BLS48581: type PP = WPPoint BLS48581 Fq Fr
+ Data.Curve.Weierstrass.BLS48581: type Q = 4576545538729420598762745822889397370509838601207708465545582186285824315458656151272834027217178198654229063318759931344008864619718319130560845441720114764111976549023322411
+ Data.Curve.Weierstrass.BLS48581: type R = 476342299743339008482451055637099285448102090246347886165811576342746904451443552831892849773706409097740116059681046950759420830087773258940488535108951041
+ Data.Curve.Weierstrass.BLS48581T: _a :: Fq8
+ Data.Curve.Weierstrass.BLS48581T: _b :: Fq8
+ Data.Curve.Weierstrass.BLS48581T: _h :: Natural
+ Data.Curve.Weierstrass.BLS48581T: _q :: Natural
+ Data.Curve.Weierstrass.BLS48581T: _r :: Natural
+ Data.Curve.Weierstrass.BLS48581T: _x :: Fq8
+ Data.Curve.Weierstrass.BLS48581T: _y :: Fq8
+ Data.Curve.Weierstrass.BLS48581T: data U
+ Data.Curve.Weierstrass.BLS48581T: data V
+ Data.Curve.Weierstrass.BLS48581T: data W
+ Data.Curve.Weierstrass.BLS48581T: gA :: PA
+ Data.Curve.Weierstrass.BLS48581T: gJ :: PJ
+ Data.Curve.Weierstrass.BLS48581T: gP :: PP
+ Data.Curve.Weierstrass.BLS48581T: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581T.Fq8 Data.Curve.Weierstrass.BLS48581.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581T.Fq8 Data.Curve.Weierstrass.BLS48581.Fr
+ Data.Curve.Weierstrass.BLS48581T: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581T.Fq8 Data.Curve.Weierstrass.BLS48581.Fr
+ Data.Curve.Weierstrass.BLS48581T: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581T.Fq8 Data.Curve.Weierstrass.BLS48581.Fr
+ Data.Curve.Weierstrass.BLS48581T: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BLS48581.BLS48581 Data.Curve.Weierstrass.BLS48581T.Fq8 Data.Curve.Weierstrass.BLS48581.Fr
+ Data.Curve.Weierstrass.BLS48581T: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BLS48581T.U Data.Curve.Weierstrass.BLS48581.Fq
+ Data.Curve.Weierstrass.BLS48581T: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BLS48581T.V Data.Curve.Weierstrass.BLS48581T.Fq2
+ Data.Curve.Weierstrass.BLS48581T: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BLS48581T.W Data.Curve.Weierstrass.BLS48581T.Fq4
+ Data.Curve.Weierstrass.BLS48581T: type Fq2 = Extension U Fq
+ Data.Curve.Weierstrass.BLS48581T: type Fq4 = Extension V Fq2
+ Data.Curve.Weierstrass.BLS48581T: type Fq8 = Extension W Fq4
+ Data.Curve.Weierstrass.BLS48581T: type PA = WAPoint BLS48581 Fq8 Fr
+ Data.Curve.Weierstrass.BLS48581T: type PJ = WJPoint BLS48581 Fq8 Fr
+ Data.Curve.Weierstrass.BLS48581T: type PP = WPPoint BLS48581 Fq8 Fr
+ Data.Curve.Weierstrass.BN224: _a :: Fq
+ Data.Curve.Weierstrass.BN224: _b :: Fq
+ Data.Curve.Weierstrass.BN224: _h :: Natural
+ Data.Curve.Weierstrass.BN224: _q :: Natural
+ Data.Curve.Weierstrass.BN224: _r :: Natural
+ Data.Curve.Weierstrass.BN224: _x :: Fq
+ Data.Curve.Weierstrass.BN224: _y :: Fq
+ Data.Curve.Weierstrass.BN224: data BN224
+ Data.Curve.Weierstrass.BN224: gA :: PA
+ Data.Curve.Weierstrass.BN224: gJ :: PJ
+ Data.Curve.Weierstrass.BN224: gP :: PP
+ Data.Curve.Weierstrass.BN224: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN224.BN224 Data.Curve.Weierstrass.BN224.Fq Data.Curve.Weierstrass.BN224.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN224.BN224 Data.Curve.Weierstrass.BN224.Fq Data.Curve.Weierstrass.BN224.Fr
+ Data.Curve.Weierstrass.BN224: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN224.BN224 Data.Curve.Weierstrass.BN224.Fq Data.Curve.Weierstrass.BN224.Fr
+ Data.Curve.Weierstrass.BN224: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN224.BN224 Data.Curve.Weierstrass.BN224.Fq Data.Curve.Weierstrass.BN224.Fr
+ Data.Curve.Weierstrass.BN224: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN224.BN224 Data.Curve.Weierstrass.BN224.Fq Data.Curve.Weierstrass.BN224.Fr
+ Data.Curve.Weierstrass.BN224: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN224: type Fr = Prime R
+ Data.Curve.Weierstrass.BN224: type PA = WAPoint BN224 Fq Fr
+ Data.Curve.Weierstrass.BN224: type PJ = WJPoint BN224 Fq Fr
+ Data.Curve.Weierstrass.BN224: type PP = WPPoint BN224 Fq Fr
+ Data.Curve.Weierstrass.BN224: type Q = 26959946667149205758383469736921695435015736735261155141423417423923
+ Data.Curve.Weierstrass.BN224: type R = 26959946667149205758383469736921690242718878200571531029749235996909
+ Data.Curve.Weierstrass.BN254: _a :: Fq
+ Data.Curve.Weierstrass.BN254: _b :: Fq
+ Data.Curve.Weierstrass.BN254: _h :: Natural
+ Data.Curve.Weierstrass.BN254: _q :: Natural
+ Data.Curve.Weierstrass.BN254: _r :: Natural
+ Data.Curve.Weierstrass.BN254: _x :: Fq
+ Data.Curve.Weierstrass.BN254: _y :: Fq
+ Data.Curve.Weierstrass.BN254: data BN254
+ Data.Curve.Weierstrass.BN254: gA :: PA
+ Data.Curve.Weierstrass.BN254: gJ :: PJ
+ Data.Curve.Weierstrass.BN254: gP :: PP
+ Data.Curve.Weierstrass.BN254: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254.Fq Data.Curve.Weierstrass.BN254.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254.Fq Data.Curve.Weierstrass.BN254.Fr
+ Data.Curve.Weierstrass.BN254: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254.Fq Data.Curve.Weierstrass.BN254.Fr
+ Data.Curve.Weierstrass.BN254: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254.Fq Data.Curve.Weierstrass.BN254.Fr
+ Data.Curve.Weierstrass.BN254: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254.Fq Data.Curve.Weierstrass.BN254.Fr
+ Data.Curve.Weierstrass.BN254: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN254: type Fr = Prime R
+ Data.Curve.Weierstrass.BN254: type PA = WAPoint BN254 Fq Fr
+ Data.Curve.Weierstrass.BN254: type PJ = WJPoint BN254 Fq Fr
+ Data.Curve.Weierstrass.BN254: type PP = WPPoint BN254 Fq Fr
+ Data.Curve.Weierstrass.BN254: type Q = 21888242871839275222246405745257275088696311157297823662689037894645226208583
+ Data.Curve.Weierstrass.BN254: type R = 21888242871839275222246405745257275088548364400416034343698204186575808495617
+ Data.Curve.Weierstrass.BN254A: _a :: Fq
+ Data.Curve.Weierstrass.BN254A: _b :: Fq
+ Data.Curve.Weierstrass.BN254A: _h :: Natural
+ Data.Curve.Weierstrass.BN254A: _q :: Natural
+ Data.Curve.Weierstrass.BN254A: _r :: Natural
+ Data.Curve.Weierstrass.BN254A: _x :: Fq
+ Data.Curve.Weierstrass.BN254A: _y :: Fq
+ Data.Curve.Weierstrass.BN254A: data BN254A
+ Data.Curve.Weierstrass.BN254A: gA :: PA
+ Data.Curve.Weierstrass.BN254A: gJ :: PJ
+ Data.Curve.Weierstrass.BN254A: gP :: PP
+ Data.Curve.Weierstrass.BN254A: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254A.Fq Data.Curve.Weierstrass.BN254A.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254A.Fq Data.Curve.Weierstrass.BN254A.Fr
+ Data.Curve.Weierstrass.BN254A: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254A.Fq Data.Curve.Weierstrass.BN254A.Fr
+ Data.Curve.Weierstrass.BN254A: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254A.Fq Data.Curve.Weierstrass.BN254A.Fr
+ Data.Curve.Weierstrass.BN254A: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254A.Fq Data.Curve.Weierstrass.BN254A.Fr
+ Data.Curve.Weierstrass.BN254A: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN254A: type Fr = Prime R
+ Data.Curve.Weierstrass.BN254A: type PA = WAPoint BN254A Fq Fr
+ Data.Curve.Weierstrass.BN254A: type PJ = WJPoint BN254A Fq Fr
+ Data.Curve.Weierstrass.BN254A: type PP = WPPoint BN254A Fq Fr
+ Data.Curve.Weierstrass.BN254A: type Q = 16030569034403128277756688287498649515636838101184337499778392980116222246913
+ Data.Curve.Weierstrass.BN254A: type R = 16030569034403128277756688287498649515510226217719936227669524443298095169537
+ Data.Curve.Weierstrass.BN254AT: _a :: Fq2
+ Data.Curve.Weierstrass.BN254AT: _b :: Fq2
+ Data.Curve.Weierstrass.BN254AT: _h :: Natural
+ Data.Curve.Weierstrass.BN254AT: _q :: Natural
+ Data.Curve.Weierstrass.BN254AT: _r :: Natural
+ Data.Curve.Weierstrass.BN254AT: _x :: Fq2
+ Data.Curve.Weierstrass.BN254AT: _y :: Fq2
+ Data.Curve.Weierstrass.BN254AT: data U
+ Data.Curve.Weierstrass.BN254AT: gA :: PA
+ Data.Curve.Weierstrass.BN254AT: gJ :: PJ
+ Data.Curve.Weierstrass.BN254AT: gP :: PP
+ Data.Curve.Weierstrass.BN254AT: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254AT.Fq2 Data.Curve.Weierstrass.BN254A.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254AT.Fq2 Data.Curve.Weierstrass.BN254A.Fr
+ Data.Curve.Weierstrass.BN254AT: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254AT.Fq2 Data.Curve.Weierstrass.BN254A.Fr
+ Data.Curve.Weierstrass.BN254AT: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254AT.Fq2 Data.Curve.Weierstrass.BN254A.Fr
+ Data.Curve.Weierstrass.BN254AT: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254A.BN254A Data.Curve.Weierstrass.BN254AT.Fq2 Data.Curve.Weierstrass.BN254A.Fr
+ Data.Curve.Weierstrass.BN254AT: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BN254AT.U Data.Curve.Weierstrass.BN254A.Fq
+ Data.Curve.Weierstrass.BN254AT: type Fq2 = Extension U Fq
+ Data.Curve.Weierstrass.BN254AT: type PA = WAPoint BN254A Fq2 Fr
+ Data.Curve.Weierstrass.BN254AT: type PJ = WJPoint BN254A Fq2 Fr
+ Data.Curve.Weierstrass.BN254AT: type PP = WPPoint BN254A Fq2 Fr
+ Data.Curve.Weierstrass.BN254B: _a :: Fq
+ Data.Curve.Weierstrass.BN254B: _b :: Fq
+ Data.Curve.Weierstrass.BN254B: _h :: Natural
+ Data.Curve.Weierstrass.BN254B: _q :: Natural
+ Data.Curve.Weierstrass.BN254B: _r :: Natural
+ Data.Curve.Weierstrass.BN254B: _x :: Fq
+ Data.Curve.Weierstrass.BN254B: _y :: Fq
+ Data.Curve.Weierstrass.BN254B: data BN254B
+ Data.Curve.Weierstrass.BN254B: gA :: PA
+ Data.Curve.Weierstrass.BN254B: gJ :: PJ
+ Data.Curve.Weierstrass.BN254B: gP :: PP
+ Data.Curve.Weierstrass.BN254B: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254B.Fq Data.Curve.Weierstrass.BN254B.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254B.Fq Data.Curve.Weierstrass.BN254B.Fr
+ Data.Curve.Weierstrass.BN254B: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254B.Fq Data.Curve.Weierstrass.BN254B.Fr
+ Data.Curve.Weierstrass.BN254B: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254B.Fq Data.Curve.Weierstrass.BN254B.Fr
+ Data.Curve.Weierstrass.BN254B: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254B.Fq Data.Curve.Weierstrass.BN254B.Fr
+ Data.Curve.Weierstrass.BN254B: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN254B: type Fr = Prime R
+ Data.Curve.Weierstrass.BN254B: type PA = WAPoint BN254B Fq Fr
+ Data.Curve.Weierstrass.BN254B: type PJ = WJPoint BN254B Fq Fr
+ Data.Curve.Weierstrass.BN254B: type PP = WPPoint BN254B Fq Fr
+ Data.Curve.Weierstrass.BN254B: type Q = 16798108731015832284940804142231733909889187121439069848933715426072753864723
+ Data.Curve.Weierstrass.BN254B: type R = 16798108731015832284940804142231733909759579603404752749028378864165570215949
+ Data.Curve.Weierstrass.BN254BT: _a :: Fq2
+ Data.Curve.Weierstrass.BN254BT: _b :: Fq2
+ Data.Curve.Weierstrass.BN254BT: _h :: Natural
+ Data.Curve.Weierstrass.BN254BT: _q :: Natural
+ Data.Curve.Weierstrass.BN254BT: _r :: Natural
+ Data.Curve.Weierstrass.BN254BT: _x :: Fq2
+ Data.Curve.Weierstrass.BN254BT: _y :: Fq2
+ Data.Curve.Weierstrass.BN254BT: data U
+ Data.Curve.Weierstrass.BN254BT: gA :: PA
+ Data.Curve.Weierstrass.BN254BT: gJ :: PJ
+ Data.Curve.Weierstrass.BN254BT: gP :: PP
+ Data.Curve.Weierstrass.BN254BT: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254BT.Fq2 Data.Curve.Weierstrass.BN254B.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254BT.Fq2 Data.Curve.Weierstrass.BN254B.Fr
+ Data.Curve.Weierstrass.BN254BT: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254BT.Fq2 Data.Curve.Weierstrass.BN254B.Fr
+ Data.Curve.Weierstrass.BN254BT: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254BT.Fq2 Data.Curve.Weierstrass.BN254B.Fr
+ Data.Curve.Weierstrass.BN254BT: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254B.BN254B Data.Curve.Weierstrass.BN254BT.Fq2 Data.Curve.Weierstrass.BN254B.Fr
+ Data.Curve.Weierstrass.BN254BT: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BN254BT.U Data.Curve.Weierstrass.BN254B.Fq
+ Data.Curve.Weierstrass.BN254BT: type Fq2 = Extension U Fq
+ Data.Curve.Weierstrass.BN254BT: type PA = WAPoint BN254B Fq2 Fr
+ Data.Curve.Weierstrass.BN254BT: type PJ = WJPoint BN254B Fq2 Fr
+ Data.Curve.Weierstrass.BN254BT: type PP = WPPoint BN254B Fq2 Fr
+ Data.Curve.Weierstrass.BN254C: _a :: Fq
+ Data.Curve.Weierstrass.BN254C: _b :: Fq
+ Data.Curve.Weierstrass.BN254C: _h :: Natural
+ Data.Curve.Weierstrass.BN254C: _q :: Natural
+ Data.Curve.Weierstrass.BN254C: _r :: Natural
+ Data.Curve.Weierstrass.BN254C: _x :: Fq
+ Data.Curve.Weierstrass.BN254C: _y :: Fq
+ Data.Curve.Weierstrass.BN254C: data BN254C
+ Data.Curve.Weierstrass.BN254C: gA :: PA
+ Data.Curve.Weierstrass.BN254C: gJ :: PJ
+ Data.Curve.Weierstrass.BN254C: gP :: PP
+ Data.Curve.Weierstrass.BN254C: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254C.Fq Data.Curve.Weierstrass.BN254C.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254C.Fq Data.Curve.Weierstrass.BN254C.Fr
+ Data.Curve.Weierstrass.BN254C: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254C.Fq Data.Curve.Weierstrass.BN254C.Fr
+ Data.Curve.Weierstrass.BN254C: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254C.Fq Data.Curve.Weierstrass.BN254C.Fr
+ Data.Curve.Weierstrass.BN254C: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254C.Fq Data.Curve.Weierstrass.BN254C.Fr
+ Data.Curve.Weierstrass.BN254C: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN254C: type Fr = Prime R
+ Data.Curve.Weierstrass.BN254C: type PA = WAPoint BN254C Fq Fr
+ Data.Curve.Weierstrass.BN254C: type PJ = WJPoint BN254C Fq Fr
+ Data.Curve.Weierstrass.BN254C: type PP = WPPoint BN254C Fq Fr
+ Data.Curve.Weierstrass.BN254C: type Q = 16285256166819790982212518231621426655162431556645158191885580232031059879699
+ Data.Curve.Weierstrass.BN254C: type R = 16285256166819790982212518231621426655034817857667267142801363550619237884173
+ Data.Curve.Weierstrass.BN254CT: _a :: Fq2
+ Data.Curve.Weierstrass.BN254CT: _b :: Fq2
+ Data.Curve.Weierstrass.BN254CT: _h :: Natural
+ Data.Curve.Weierstrass.BN254CT: _q :: Natural
+ Data.Curve.Weierstrass.BN254CT: _r :: Natural
+ Data.Curve.Weierstrass.BN254CT: _x :: Fq2
+ Data.Curve.Weierstrass.BN254CT: _y :: Fq2
+ Data.Curve.Weierstrass.BN254CT: data U
+ Data.Curve.Weierstrass.BN254CT: gA :: PA
+ Data.Curve.Weierstrass.BN254CT: gJ :: PJ
+ Data.Curve.Weierstrass.BN254CT: gP :: PP
+ Data.Curve.Weierstrass.BN254CT: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254CT.Fq2 Data.Curve.Weierstrass.BN254C.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254CT.Fq2 Data.Curve.Weierstrass.BN254C.Fr
+ Data.Curve.Weierstrass.BN254CT: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254CT.Fq2 Data.Curve.Weierstrass.BN254C.Fr
+ Data.Curve.Weierstrass.BN254CT: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254CT.Fq2 Data.Curve.Weierstrass.BN254C.Fr
+ Data.Curve.Weierstrass.BN254CT: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254C.BN254C Data.Curve.Weierstrass.BN254CT.Fq2 Data.Curve.Weierstrass.BN254C.Fr
+ Data.Curve.Weierstrass.BN254CT: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BN254CT.U Data.Curve.Weierstrass.BN254C.Fq
+ Data.Curve.Weierstrass.BN254CT: type Fq2 = Extension U Fq
+ Data.Curve.Weierstrass.BN254CT: type PA = WAPoint BN254C Fq2 Fr
+ Data.Curve.Weierstrass.BN254CT: type PJ = WJPoint BN254C Fq2 Fr
+ Data.Curve.Weierstrass.BN254CT: type PP = WPPoint BN254C Fq2 Fr
+ Data.Curve.Weierstrass.BN254D: _a :: Fq
+ Data.Curve.Weierstrass.BN254D: _b :: Fq
+ Data.Curve.Weierstrass.BN254D: _h :: Natural
+ Data.Curve.Weierstrass.BN254D: _q :: Natural
+ Data.Curve.Weierstrass.BN254D: _r :: Natural
+ Data.Curve.Weierstrass.BN254D: _x :: Fq
+ Data.Curve.Weierstrass.BN254D: _y :: Fq
+ Data.Curve.Weierstrass.BN254D: data BN254D
+ Data.Curve.Weierstrass.BN254D: gA :: PA
+ Data.Curve.Weierstrass.BN254D: gJ :: PJ
+ Data.Curve.Weierstrass.BN254D: gP :: PP
+ Data.Curve.Weierstrass.BN254D: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254D.Fq Data.Curve.Weierstrass.BN254D.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254D.Fq Data.Curve.Weierstrass.BN254D.Fr
+ Data.Curve.Weierstrass.BN254D: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254D.Fq Data.Curve.Weierstrass.BN254D.Fr
+ Data.Curve.Weierstrass.BN254D: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254D.Fq Data.Curve.Weierstrass.BN254D.Fr
+ Data.Curve.Weierstrass.BN254D: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254D.Fq Data.Curve.Weierstrass.BN254D.Fr
+ Data.Curve.Weierstrass.BN254D: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN254D: type Fr = Prime R
+ Data.Curve.Weierstrass.BN254D: type PA = WAPoint BN254D Fq Fr
+ Data.Curve.Weierstrass.BN254D: type PJ = WJPoint BN254D Fq Fr
+ Data.Curve.Weierstrass.BN254D: type PP = WPPoint BN254D Fq Fr
+ Data.Curve.Weierstrass.BN254D: type Q = 16283293667627659188681377855926356453849752040375959105441659307407578277003
+ Data.Curve.Weierstrass.BN254D: type R = 16283293667627659188681377855926356453722146030848085931720027730057779358709
+ Data.Curve.Weierstrass.BN254DT: _a :: Fq2
+ Data.Curve.Weierstrass.BN254DT: _b :: Fq2
+ Data.Curve.Weierstrass.BN254DT: _h :: Natural
+ Data.Curve.Weierstrass.BN254DT: _q :: Natural
+ Data.Curve.Weierstrass.BN254DT: _r :: Natural
+ Data.Curve.Weierstrass.BN254DT: _x :: Fq2
+ Data.Curve.Weierstrass.BN254DT: _y :: Fq2
+ Data.Curve.Weierstrass.BN254DT: data U
+ Data.Curve.Weierstrass.BN254DT: gA :: PA
+ Data.Curve.Weierstrass.BN254DT: gJ :: PJ
+ Data.Curve.Weierstrass.BN254DT: gP :: PP
+ Data.Curve.Weierstrass.BN254DT: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254DT.Fq2 Data.Curve.Weierstrass.BN254D.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254DT.Fq2 Data.Curve.Weierstrass.BN254D.Fr
+ Data.Curve.Weierstrass.BN254DT: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254DT.Fq2 Data.Curve.Weierstrass.BN254D.Fr
+ Data.Curve.Weierstrass.BN254DT: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254DT.Fq2 Data.Curve.Weierstrass.BN254D.Fr
+ Data.Curve.Weierstrass.BN254DT: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254D.BN254D Data.Curve.Weierstrass.BN254DT.Fq2 Data.Curve.Weierstrass.BN254D.Fr
+ Data.Curve.Weierstrass.BN254DT: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BN254DT.U Data.Curve.Weierstrass.BN254D.Fq
+ Data.Curve.Weierstrass.BN254DT: type Fq2 = Extension U Fq
+ Data.Curve.Weierstrass.BN254DT: type PA = WAPoint BN254D Fq2 Fr
+ Data.Curve.Weierstrass.BN254DT: type PJ = WJPoint BN254D Fq2 Fr
+ Data.Curve.Weierstrass.BN254DT: type PP = WPPoint BN254D Fq2 Fr
+ Data.Curve.Weierstrass.BN254T: _a :: Fq2
+ Data.Curve.Weierstrass.BN254T: _b :: Fq2
+ Data.Curve.Weierstrass.BN254T: _h :: Natural
+ Data.Curve.Weierstrass.BN254T: _q :: Natural
+ Data.Curve.Weierstrass.BN254T: _r :: Natural
+ Data.Curve.Weierstrass.BN254T: _x :: Fq2
+ Data.Curve.Weierstrass.BN254T: _y :: Fq2
+ Data.Curve.Weierstrass.BN254T: data U
+ Data.Curve.Weierstrass.BN254T: gA :: PA
+ Data.Curve.Weierstrass.BN254T: gJ :: PJ
+ Data.Curve.Weierstrass.BN254T: gP :: PP
+ Data.Curve.Weierstrass.BN254T: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254T.Fq2 Data.Curve.Weierstrass.BN254.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254T.Fq2 Data.Curve.Weierstrass.BN254.Fr
+ Data.Curve.Weierstrass.BN254T: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254T.Fq2 Data.Curve.Weierstrass.BN254.Fr
+ Data.Curve.Weierstrass.BN254T: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254T.Fq2 Data.Curve.Weierstrass.BN254.Fr
+ Data.Curve.Weierstrass.BN254T: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN254.BN254 Data.Curve.Weierstrass.BN254T.Fq2 Data.Curve.Weierstrass.BN254.Fr
+ Data.Curve.Weierstrass.BN254T: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BN254T.U Data.Curve.Weierstrass.BN254.Fq
+ Data.Curve.Weierstrass.BN254T: type Fq2 = Extension U Fq
+ Data.Curve.Weierstrass.BN254T: type PA = WAPoint BN254 Fq2 Fr
+ Data.Curve.Weierstrass.BN254T: type PJ = WJPoint BN254 Fq2 Fr
+ Data.Curve.Weierstrass.BN254T: type PP = WPPoint BN254 Fq2 Fr
+ Data.Curve.Weierstrass.BN256: _a :: Fq
+ Data.Curve.Weierstrass.BN256: _b :: Fq
+ Data.Curve.Weierstrass.BN256: _h :: Natural
+ Data.Curve.Weierstrass.BN256: _q :: Natural
+ Data.Curve.Weierstrass.BN256: _r :: Natural
+ Data.Curve.Weierstrass.BN256: _x :: Fq
+ Data.Curve.Weierstrass.BN256: _y :: Fq
+ Data.Curve.Weierstrass.BN256: data BN256
+ Data.Curve.Weierstrass.BN256: gA :: PA
+ Data.Curve.Weierstrass.BN256: gJ :: PJ
+ Data.Curve.Weierstrass.BN256: gP :: PP
+ Data.Curve.Weierstrass.BN256: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN256.BN256 Data.Curve.Weierstrass.BN256.Fq Data.Curve.Weierstrass.BN256.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN256.BN256 Data.Curve.Weierstrass.BN256.Fq Data.Curve.Weierstrass.BN256.Fr
+ Data.Curve.Weierstrass.BN256: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN256.BN256 Data.Curve.Weierstrass.BN256.Fq Data.Curve.Weierstrass.BN256.Fr
+ Data.Curve.Weierstrass.BN256: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN256.BN256 Data.Curve.Weierstrass.BN256.Fq Data.Curve.Weierstrass.BN256.Fr
+ Data.Curve.Weierstrass.BN256: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN256.BN256 Data.Curve.Weierstrass.BN256.Fq Data.Curve.Weierstrass.BN256.Fr
+ Data.Curve.Weierstrass.BN256: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN256: type Fr = Prime R
+ Data.Curve.Weierstrass.BN256: type PA = WAPoint BN256 Fq Fr
+ Data.Curve.Weierstrass.BN256: type PJ = WJPoint BN256 Fq Fr
+ Data.Curve.Weierstrass.BN256: type PP = WPPoint BN256 Fq Fr
+ Data.Curve.Weierstrass.BN256: type Q = 115792089237314936872688561244471742058375878355761205198700409522629664518163
+ Data.Curve.Weierstrass.BN256: type R = 115792089237314936872688561244471742058035595988840268584488757999429535617037
+ Data.Curve.Weierstrass.BN384: _a :: Fq
+ Data.Curve.Weierstrass.BN384: _b :: Fq
+ Data.Curve.Weierstrass.BN384: _h :: Natural
+ Data.Curve.Weierstrass.BN384: _q :: Natural
+ Data.Curve.Weierstrass.BN384: _r :: Natural
+ Data.Curve.Weierstrass.BN384: _x :: Fq
+ Data.Curve.Weierstrass.BN384: _y :: Fq
+ Data.Curve.Weierstrass.BN384: data BN384
+ Data.Curve.Weierstrass.BN384: gA :: PA
+ Data.Curve.Weierstrass.BN384: gJ :: PJ
+ Data.Curve.Weierstrass.BN384: gP :: PP
+ Data.Curve.Weierstrass.BN384: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN384.BN384 Data.Curve.Weierstrass.BN384.Fq Data.Curve.Weierstrass.BN384.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN384.BN384 Data.Curve.Weierstrass.BN384.Fq Data.Curve.Weierstrass.BN384.Fr
+ Data.Curve.Weierstrass.BN384: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN384.BN384 Data.Curve.Weierstrass.BN384.Fq Data.Curve.Weierstrass.BN384.Fr
+ Data.Curve.Weierstrass.BN384: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN384.BN384 Data.Curve.Weierstrass.BN384.Fq Data.Curve.Weierstrass.BN384.Fr
+ Data.Curve.Weierstrass.BN384: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN384.BN384 Data.Curve.Weierstrass.BN384.Fq Data.Curve.Weierstrass.BN384.Fr
+ Data.Curve.Weierstrass.BN384: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN384: type Fr = Prime R
+ Data.Curve.Weierstrass.BN384: type PA = WAPoint BN384 Fq Fr
+ Data.Curve.Weierstrass.BN384: type PJ = WJPoint BN384 Fq Fr
+ Data.Curve.Weierstrass.BN384: type PP = WPPoint BN384 Fq Fr
+ Data.Curve.Weierstrass.BN384: type Q = 39402006196394479212278605372068645601647601647604977711041989197213181721117185302456933847594895764913993728971019
+ Data.Curve.Weierstrass.BN384: type R = 39402006196394479212278605372068645601647601647604977711035712095477795040353349547661912204165862202002491141937013
+ Data.Curve.Weierstrass.BN462: _a :: Fq
+ Data.Curve.Weierstrass.BN462: _b :: Fq
+ Data.Curve.Weierstrass.BN462: _h :: Natural
+ Data.Curve.Weierstrass.BN462: _q :: Natural
+ Data.Curve.Weierstrass.BN462: _r :: Natural
+ Data.Curve.Weierstrass.BN462: _x :: Fq
+ Data.Curve.Weierstrass.BN462: _y :: Fq
+ Data.Curve.Weierstrass.BN462: data BN462
+ Data.Curve.Weierstrass.BN462: gA :: PA
+ Data.Curve.Weierstrass.BN462: gJ :: PJ
+ Data.Curve.Weierstrass.BN462: gP :: PP
+ Data.Curve.Weierstrass.BN462: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462.Fq Data.Curve.Weierstrass.BN462.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462.Fq Data.Curve.Weierstrass.BN462.Fr
+ Data.Curve.Weierstrass.BN462: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462.Fq Data.Curve.Weierstrass.BN462.Fr
+ Data.Curve.Weierstrass.BN462: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462.Fq Data.Curve.Weierstrass.BN462.Fr
+ Data.Curve.Weierstrass.BN462: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462.Fq Data.Curve.Weierstrass.BN462.Fr
+ Data.Curve.Weierstrass.BN462: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN462: type Fr = Prime R
+ Data.Curve.Weierstrass.BN462: type PA = WAPoint BN462 Fq Fr
+ Data.Curve.Weierstrass.BN462: type PJ = WJPoint BN462 Fq Fr
+ Data.Curve.Weierstrass.BN462: type PP = WPPoint BN462 Fq Fr
+ Data.Curve.Weierstrass.BN462: type Q = 6701817056313037086248947066310538444882082605308124576230408038843357549886356779857393369967010764802541005796711440355753503701056323603
+ Data.Curve.Weierstrass.BN462: type R = 6701817056313037086248947066310538444882082605308124576230408038843354961099564416871567745979441241809893679037520753402159179772451651597
+ Data.Curve.Weierstrass.BN462T: _a :: Fq2
+ Data.Curve.Weierstrass.BN462T: _b :: Fq2
+ Data.Curve.Weierstrass.BN462T: _h :: Natural
+ Data.Curve.Weierstrass.BN462T: _q :: Natural
+ Data.Curve.Weierstrass.BN462T: _r :: Natural
+ Data.Curve.Weierstrass.BN462T: _x :: Fq2
+ Data.Curve.Weierstrass.BN462T: _y :: Fq2
+ Data.Curve.Weierstrass.BN462T: data U
+ Data.Curve.Weierstrass.BN462T: gA :: PA
+ Data.Curve.Weierstrass.BN462T: gJ :: PJ
+ Data.Curve.Weierstrass.BN462T: gP :: PP
+ Data.Curve.Weierstrass.BN462T: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462T.Fq2 Data.Curve.Weierstrass.BN462.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462T.Fq2 Data.Curve.Weierstrass.BN462.Fr
+ Data.Curve.Weierstrass.BN462T: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462T.Fq2 Data.Curve.Weierstrass.BN462.Fr
+ Data.Curve.Weierstrass.BN462T: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462T.Fq2 Data.Curve.Weierstrass.BN462.Fr
+ Data.Curve.Weierstrass.BN462T: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN462.BN462 Data.Curve.Weierstrass.BN462T.Fq2 Data.Curve.Weierstrass.BN462.Fr
+ Data.Curve.Weierstrass.BN462T: instance Data.Field.Galois.Extension.IrreducibleMonic Data.Curve.Weierstrass.BN462T.U Data.Curve.Weierstrass.BN462.Fq
+ Data.Curve.Weierstrass.BN462T: type Fq2 = Extension U Fq
+ Data.Curve.Weierstrass.BN462T: type PA = WAPoint BN462 Fq2 Fr
+ Data.Curve.Weierstrass.BN462T: type PJ = WJPoint BN462 Fq2 Fr
+ Data.Curve.Weierstrass.BN462T: type PP = WPPoint BN462 Fq2 Fr
+ Data.Curve.Weierstrass.BN512: _a :: Fq
+ Data.Curve.Weierstrass.BN512: _b :: Fq
+ Data.Curve.Weierstrass.BN512: _h :: Natural
+ Data.Curve.Weierstrass.BN512: _q :: Natural
+ Data.Curve.Weierstrass.BN512: _r :: Natural
+ Data.Curve.Weierstrass.BN512: _x :: Fq
+ Data.Curve.Weierstrass.BN512: _y :: Fq
+ Data.Curve.Weierstrass.BN512: data BN512
+ Data.Curve.Weierstrass.BN512: gA :: PA
+ Data.Curve.Weierstrass.BN512: gJ :: PJ
+ Data.Curve.Weierstrass.BN512: gP :: PP
+ Data.Curve.Weierstrass.BN512: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BN512.BN512 Data.Curve.Weierstrass.BN512.Fq Data.Curve.Weierstrass.BN512.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BN512.BN512 Data.Curve.Weierstrass.BN512.Fq Data.Curve.Weierstrass.BN512.Fr
+ Data.Curve.Weierstrass.BN512: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BN512.BN512 Data.Curve.Weierstrass.BN512.Fq Data.Curve.Weierstrass.BN512.Fr
+ Data.Curve.Weierstrass.BN512: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BN512.BN512 Data.Curve.Weierstrass.BN512.Fq Data.Curve.Weierstrass.BN512.Fr
+ Data.Curve.Weierstrass.BN512: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BN512.BN512 Data.Curve.Weierstrass.BN512.Fq Data.Curve.Weierstrass.BN512.Fr
+ Data.Curve.Weierstrass.BN512: type Fq = Prime Q
+ Data.Curve.Weierstrass.BN512: type Fr = Prime R
+ Data.Curve.Weierstrass.BN512: type PA = WAPoint BN512 Fq Fr
+ Data.Curve.Weierstrass.BN512: type PJ = WJPoint BN512 Fq Fr
+ Data.Curve.Weierstrass.BN512: type PP = WPPoint BN512 Fq Fr
+ Data.Curve.Weierstrass.BN512: type Q = 13407807929942597099574024998205830437246153344875111580494527427714590099881795845981157516604994291639750834285779043186149750164319950153126044364566323
+ Data.Curve.Weierstrass.BN512: type R = 13407807929942597099574024998205830437246153344875111580494527427714590099881680053891920200409570720654742146445677939306408461754626647833262056300743149
+ Data.Curve.Weierstrass.BrainpoolP160R1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP160R1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP160R1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP160R1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP160R1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP160R1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP160R1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP160R1: data BrainpoolP160R1
+ Data.Curve.Weierstrass.BrainpoolP160R1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP160R1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP160R1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP160R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Data.Curve.Weierstrass.BrainpoolP160R1.Fq Data.Curve.Weierstrass.BrainpoolP160R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Data.Curve.Weierstrass.BrainpoolP160R1.Fq Data.Curve.Weierstrass.BrainpoolP160R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP160R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Data.Curve.Weierstrass.BrainpoolP160R1.Fq Data.Curve.Weierstrass.BrainpoolP160R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP160R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Data.Curve.Weierstrass.BrainpoolP160R1.Fq Data.Curve.Weierstrass.BrainpoolP160R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP160R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP160R1.BrainpoolP160R1 Data.Curve.Weierstrass.BrainpoolP160R1.Fq Data.Curve.Weierstrass.BrainpoolP160R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP160R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP160R1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP160R1: type PA = WAPoint BrainpoolP160R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP160R1: type PJ = WJPoint BrainpoolP160R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP160R1: type PP = WPPoint BrainpoolP160R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP160R1: type Q = 1332297598440044874827085558802491743757193798159
+ Data.Curve.Weierstrass.BrainpoolP160R1: type R = 1332297598440044874827085038830181364212942568457
+ Data.Curve.Weierstrass.BrainpoolP160T1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP160T1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP160T1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP160T1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP160T1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP160T1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP160T1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP160T1: data BrainpoolP160T1
+ Data.Curve.Weierstrass.BrainpoolP160T1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP160T1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP160T1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP160T1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Data.Curve.Weierstrass.BrainpoolP160T1.Fq Data.Curve.Weierstrass.BrainpoolP160T1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Data.Curve.Weierstrass.BrainpoolP160T1.Fq Data.Curve.Weierstrass.BrainpoolP160T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP160T1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Data.Curve.Weierstrass.BrainpoolP160T1.Fq Data.Curve.Weierstrass.BrainpoolP160T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP160T1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Data.Curve.Weierstrass.BrainpoolP160T1.Fq Data.Curve.Weierstrass.BrainpoolP160T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP160T1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP160T1.BrainpoolP160T1 Data.Curve.Weierstrass.BrainpoolP160T1.Fq Data.Curve.Weierstrass.BrainpoolP160T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP160T1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP160T1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP160T1: type PA = WAPoint BrainpoolP160T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP160T1: type PJ = WJPoint BrainpoolP160T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP160T1: type PP = WPPoint BrainpoolP160T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP160T1: type Q = 1332297598440044874827085558802491743757193798159
+ Data.Curve.Weierstrass.BrainpoolP160T1: type R = 1332297598440044874827085038830181364212942568457
+ Data.Curve.Weierstrass.BrainpoolP192R1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP192R1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP192R1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP192R1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP192R1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP192R1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP192R1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP192R1: data BrainpoolP192R1
+ Data.Curve.Weierstrass.BrainpoolP192R1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP192R1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP192R1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP192R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Data.Curve.Weierstrass.BrainpoolP192R1.Fq Data.Curve.Weierstrass.BrainpoolP192R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Data.Curve.Weierstrass.BrainpoolP192R1.Fq Data.Curve.Weierstrass.BrainpoolP192R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP192R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Data.Curve.Weierstrass.BrainpoolP192R1.Fq Data.Curve.Weierstrass.BrainpoolP192R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP192R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Data.Curve.Weierstrass.BrainpoolP192R1.Fq Data.Curve.Weierstrass.BrainpoolP192R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP192R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP192R1.BrainpoolP192R1 Data.Curve.Weierstrass.BrainpoolP192R1.Fq Data.Curve.Weierstrass.BrainpoolP192R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP192R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP192R1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP192R1: type PA = WAPoint BrainpoolP192R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP192R1: type PJ = WJPoint BrainpoolP192R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP192R1: type PP = WPPoint BrainpoolP192R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP192R1: type Q = 4781668983906166242955001894344923773259119655253013193367
+ Data.Curve.Weierstrass.BrainpoolP192R1: type R = 4781668983906166242955001894269038308119863659119834868929
+ Data.Curve.Weierstrass.BrainpoolP192T1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP192T1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP192T1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP192T1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP192T1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP192T1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP192T1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP192T1: data BrainpoolP192T1
+ Data.Curve.Weierstrass.BrainpoolP192T1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP192T1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP192T1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP192T1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Data.Curve.Weierstrass.BrainpoolP192T1.Fq Data.Curve.Weierstrass.BrainpoolP192T1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Data.Curve.Weierstrass.BrainpoolP192T1.Fq Data.Curve.Weierstrass.BrainpoolP192T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP192T1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Data.Curve.Weierstrass.BrainpoolP192T1.Fq Data.Curve.Weierstrass.BrainpoolP192T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP192T1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Data.Curve.Weierstrass.BrainpoolP192T1.Fq Data.Curve.Weierstrass.BrainpoolP192T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP192T1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP192T1.BrainpoolP192T1 Data.Curve.Weierstrass.BrainpoolP192T1.Fq Data.Curve.Weierstrass.BrainpoolP192T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP192T1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP192T1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP192T1: type PA = WAPoint BrainpoolP192T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP192T1: type PJ = WJPoint BrainpoolP192T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP192T1: type PP = WPPoint BrainpoolP192T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP192T1: type Q = 4781668983906166242955001894344923773259119655253013193367
+ Data.Curve.Weierstrass.BrainpoolP192T1: type R = 4781668983906166242955001894269038308119863659119834868929
+ Data.Curve.Weierstrass.BrainpoolP224R1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP224R1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP224R1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP224R1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP224R1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP224R1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP224R1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP224R1: data BrainpoolP224R1
+ Data.Curve.Weierstrass.BrainpoolP224R1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP224R1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP224R1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP224R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Data.Curve.Weierstrass.BrainpoolP224R1.Fq Data.Curve.Weierstrass.BrainpoolP224R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Data.Curve.Weierstrass.BrainpoolP224R1.Fq Data.Curve.Weierstrass.BrainpoolP224R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP224R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Data.Curve.Weierstrass.BrainpoolP224R1.Fq Data.Curve.Weierstrass.BrainpoolP224R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP224R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Data.Curve.Weierstrass.BrainpoolP224R1.Fq Data.Curve.Weierstrass.BrainpoolP224R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP224R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP224R1.BrainpoolP224R1 Data.Curve.Weierstrass.BrainpoolP224R1.Fq Data.Curve.Weierstrass.BrainpoolP224R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP224R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP224R1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP224R1: type PA = WAPoint BrainpoolP224R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP224R1: type PJ = WJPoint BrainpoolP224R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP224R1: type PP = WPPoint BrainpoolP224R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP224R1: type Q = 22721622932454352787552537995910928073340732145944992304435472941311
+ Data.Curve.Weierstrass.BrainpoolP224R1: type R = 22721622932454352787552537995910923612567546342330757191396560966559
+ Data.Curve.Weierstrass.BrainpoolP224T1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP224T1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP224T1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP224T1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP224T1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP224T1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP224T1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP224T1: data BrainpoolP224T1
+ Data.Curve.Weierstrass.BrainpoolP224T1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP224T1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP224T1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP224T1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Data.Curve.Weierstrass.BrainpoolP224T1.Fq Data.Curve.Weierstrass.BrainpoolP224T1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Data.Curve.Weierstrass.BrainpoolP224T1.Fq Data.Curve.Weierstrass.BrainpoolP224T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP224T1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Data.Curve.Weierstrass.BrainpoolP224T1.Fq Data.Curve.Weierstrass.BrainpoolP224T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP224T1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Data.Curve.Weierstrass.BrainpoolP224T1.Fq Data.Curve.Weierstrass.BrainpoolP224T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP224T1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP224T1.BrainpoolP224T1 Data.Curve.Weierstrass.BrainpoolP224T1.Fq Data.Curve.Weierstrass.BrainpoolP224T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP224T1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP224T1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP224T1: type PA = WAPoint BrainpoolP224T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP224T1: type PJ = WJPoint BrainpoolP224T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP224T1: type PP = WPPoint BrainpoolP224T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP224T1: type Q = 22721622932454352787552537995910928073340732145944992304435472941311
+ Data.Curve.Weierstrass.BrainpoolP224T1: type R = 22721622932454352787552537995910923612567546342330757191396560966559
+ Data.Curve.Weierstrass.BrainpoolP256R1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP256R1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP256R1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP256R1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP256R1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP256R1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP256R1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP256R1: data BrainpoolP256R1
+ Data.Curve.Weierstrass.BrainpoolP256R1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP256R1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP256R1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP256R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Data.Curve.Weierstrass.BrainpoolP256R1.Fq Data.Curve.Weierstrass.BrainpoolP256R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Data.Curve.Weierstrass.BrainpoolP256R1.Fq Data.Curve.Weierstrass.BrainpoolP256R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP256R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Data.Curve.Weierstrass.BrainpoolP256R1.Fq Data.Curve.Weierstrass.BrainpoolP256R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP256R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Data.Curve.Weierstrass.BrainpoolP256R1.Fq Data.Curve.Weierstrass.BrainpoolP256R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP256R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP256R1.BrainpoolP256R1 Data.Curve.Weierstrass.BrainpoolP256R1.Fq Data.Curve.Weierstrass.BrainpoolP256R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP256R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP256R1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP256R1: type PA = WAPoint BrainpoolP256R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP256R1: type PJ = WJPoint BrainpoolP256R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP256R1: type PP = WPPoint BrainpoolP256R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP256R1: type Q = 76884956397045344220809746629001649093037950200943055203735601445031516197751
+ Data.Curve.Weierstrass.BrainpoolP256R1: type R = 76884956397045344220809746629001649092737531784414529538755519063063536359079
+ Data.Curve.Weierstrass.BrainpoolP256T1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP256T1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP256T1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP256T1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP256T1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP256T1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP256T1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP256T1: data BrainpoolP256T1
+ Data.Curve.Weierstrass.BrainpoolP256T1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP256T1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP256T1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP256T1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Data.Curve.Weierstrass.BrainpoolP256T1.Fq Data.Curve.Weierstrass.BrainpoolP256T1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Data.Curve.Weierstrass.BrainpoolP256T1.Fq Data.Curve.Weierstrass.BrainpoolP256T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP256T1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Data.Curve.Weierstrass.BrainpoolP256T1.Fq Data.Curve.Weierstrass.BrainpoolP256T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP256T1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Data.Curve.Weierstrass.BrainpoolP256T1.Fq Data.Curve.Weierstrass.BrainpoolP256T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP256T1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP256T1.BrainpoolP256T1 Data.Curve.Weierstrass.BrainpoolP256T1.Fq Data.Curve.Weierstrass.BrainpoolP256T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP256T1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP256T1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP256T1: type PA = WAPoint BrainpoolP256T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP256T1: type PJ = WJPoint BrainpoolP256T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP256T1: type PP = WPPoint BrainpoolP256T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP256T1: type Q = 76884956397045344220809746629001649093037950200943055203735601445031516197751
+ Data.Curve.Weierstrass.BrainpoolP256T1: type R = 76884956397045344220809746629001649092737531784414529538755519063063536359079
+ Data.Curve.Weierstrass.BrainpoolP320R1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP320R1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP320R1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP320R1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP320R1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP320R1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP320R1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP320R1: data BrainpoolP320R1
+ Data.Curve.Weierstrass.BrainpoolP320R1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP320R1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP320R1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP320R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Data.Curve.Weierstrass.BrainpoolP320R1.Fq Data.Curve.Weierstrass.BrainpoolP320R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Data.Curve.Weierstrass.BrainpoolP320R1.Fq Data.Curve.Weierstrass.BrainpoolP320R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP320R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Data.Curve.Weierstrass.BrainpoolP320R1.Fq Data.Curve.Weierstrass.BrainpoolP320R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP320R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Data.Curve.Weierstrass.BrainpoolP320R1.Fq Data.Curve.Weierstrass.BrainpoolP320R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP320R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP320R1.BrainpoolP320R1 Data.Curve.Weierstrass.BrainpoolP320R1.Fq Data.Curve.Weierstrass.BrainpoolP320R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP320R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP320R1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP320R1: type PA = WAPoint BrainpoolP320R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP320R1: type PJ = WJPoint BrainpoolP320R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP320R1: type PP = WPPoint BrainpoolP320R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP320R1: type Q = 1763593322239166354161909842446019520889512772719515192772960415288640868802149818095501499903527
+ Data.Curve.Weierstrass.BrainpoolP320R1: type R = 1763593322239166354161909842446019520889512772717686063760686124016784784845843468355685258203921
+ Data.Curve.Weierstrass.BrainpoolP320T1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP320T1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP320T1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP320T1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP320T1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP320T1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP320T1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP320T1: data BrainpoolP320T1
+ Data.Curve.Weierstrass.BrainpoolP320T1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP320T1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP320T1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP320T1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Data.Curve.Weierstrass.BrainpoolP320T1.Fq Data.Curve.Weierstrass.BrainpoolP320T1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Data.Curve.Weierstrass.BrainpoolP320T1.Fq Data.Curve.Weierstrass.BrainpoolP320T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP320T1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Data.Curve.Weierstrass.BrainpoolP320T1.Fq Data.Curve.Weierstrass.BrainpoolP320T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP320T1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Data.Curve.Weierstrass.BrainpoolP320T1.Fq Data.Curve.Weierstrass.BrainpoolP320T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP320T1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP320T1.BrainpoolP320T1 Data.Curve.Weierstrass.BrainpoolP320T1.Fq Data.Curve.Weierstrass.BrainpoolP320T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP320T1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP320T1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP320T1: type PA = WAPoint BrainpoolP320T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP320T1: type PJ = WJPoint BrainpoolP320T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP320T1: type PP = WPPoint BrainpoolP320T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP320T1: type Q = 1763593322239166354161909842446019520889512772719515192772960415288640868802149818095501499903527
+ Data.Curve.Weierstrass.BrainpoolP320T1: type R = 1763593322239166354161909842446019520889512772717686063760686124016784784845843468355685258203921
+ Data.Curve.Weierstrass.BrainpoolP384R1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP384R1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP384R1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP384R1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP384R1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP384R1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP384R1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP384R1: data BrainpoolP384R1
+ Data.Curve.Weierstrass.BrainpoolP384R1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP384R1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP384R1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP384R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Data.Curve.Weierstrass.BrainpoolP384R1.Fq Data.Curve.Weierstrass.BrainpoolP384R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Data.Curve.Weierstrass.BrainpoolP384R1.Fq Data.Curve.Weierstrass.BrainpoolP384R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP384R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Data.Curve.Weierstrass.BrainpoolP384R1.Fq Data.Curve.Weierstrass.BrainpoolP384R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP384R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Data.Curve.Weierstrass.BrainpoolP384R1.Fq Data.Curve.Weierstrass.BrainpoolP384R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP384R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP384R1.BrainpoolP384R1 Data.Curve.Weierstrass.BrainpoolP384R1.Fq Data.Curve.Weierstrass.BrainpoolP384R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP384R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP384R1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP384R1: type PA = WAPoint BrainpoolP384R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP384R1: type PJ = WJPoint BrainpoolP384R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP384R1: type PP = WPPoint BrainpoolP384R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP384R1: type Q = 21659270770119316173069236842332604979796116387017648600081618503821089934025961822236561982844534088440708417973331
+ Data.Curve.Weierstrass.BrainpoolP384R1: type R = 21659270770119316173069236842332604979796116387017648600075645274821611501358515537962695117368903252229601718723941
+ Data.Curve.Weierstrass.BrainpoolP384T1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP384T1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP384T1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP384T1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP384T1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP384T1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP384T1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP384T1: data BrainpoolP384T1
+ Data.Curve.Weierstrass.BrainpoolP384T1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP384T1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP384T1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP384T1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Data.Curve.Weierstrass.BrainpoolP384T1.Fq Data.Curve.Weierstrass.BrainpoolP384T1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Data.Curve.Weierstrass.BrainpoolP384T1.Fq Data.Curve.Weierstrass.BrainpoolP384T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP384T1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Data.Curve.Weierstrass.BrainpoolP384T1.Fq Data.Curve.Weierstrass.BrainpoolP384T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP384T1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Data.Curve.Weierstrass.BrainpoolP384T1.Fq Data.Curve.Weierstrass.BrainpoolP384T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP384T1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP384T1.BrainpoolP384T1 Data.Curve.Weierstrass.BrainpoolP384T1.Fq Data.Curve.Weierstrass.BrainpoolP384T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP384T1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP384T1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP384T1: type PA = WAPoint BrainpoolP384T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP384T1: type PJ = WJPoint BrainpoolP384T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP384T1: type PP = WPPoint BrainpoolP384T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP384T1: type Q = 21659270770119316173069236842332604979796116387017648600081618503821089934025961822236561982844534088440708417973331
+ Data.Curve.Weierstrass.BrainpoolP384T1: type R = 21659270770119316173069236842332604979796116387017648600075645274821611501358515537962695117368903252229601718723941
+ Data.Curve.Weierstrass.BrainpoolP512R1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP512R1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP512R1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP512R1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP512R1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP512R1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP512R1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP512R1: data BrainpoolP512R1
+ Data.Curve.Weierstrass.BrainpoolP512R1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP512R1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP512R1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP512R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Data.Curve.Weierstrass.BrainpoolP512R1.Fq Data.Curve.Weierstrass.BrainpoolP512R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Data.Curve.Weierstrass.BrainpoolP512R1.Fq Data.Curve.Weierstrass.BrainpoolP512R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP512R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Data.Curve.Weierstrass.BrainpoolP512R1.Fq Data.Curve.Weierstrass.BrainpoolP512R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP512R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Data.Curve.Weierstrass.BrainpoolP512R1.Fq Data.Curve.Weierstrass.BrainpoolP512R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP512R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP512R1.BrainpoolP512R1 Data.Curve.Weierstrass.BrainpoolP512R1.Fq Data.Curve.Weierstrass.BrainpoolP512R1.Fr
+ Data.Curve.Weierstrass.BrainpoolP512R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP512R1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP512R1: type PA = WAPoint BrainpoolP512R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP512R1: type PJ = WJPoint BrainpoolP512R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP512R1: type PP = WPPoint BrainpoolP512R1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP512R1: type Q = 8948962207650232551656602815159153422162609644098354511344597187200057010413552439917934304191956942765446530386427345937963894309923928536070534607816947
+ Data.Curve.Weierstrass.BrainpoolP512R1: type R = 8948962207650232551656602815159153422162609644098354511344597187200057010413418528378981730643524959857451398370029280583094215613882043973354392115544169
+ Data.Curve.Weierstrass.BrainpoolP512T1: _a :: Fq
+ Data.Curve.Weierstrass.BrainpoolP512T1: _b :: Fq
+ Data.Curve.Weierstrass.BrainpoolP512T1: _h :: Natural
+ Data.Curve.Weierstrass.BrainpoolP512T1: _q :: Natural
+ Data.Curve.Weierstrass.BrainpoolP512T1: _r :: Natural
+ Data.Curve.Weierstrass.BrainpoolP512T1: _x :: Fq
+ Data.Curve.Weierstrass.BrainpoolP512T1: _y :: Fq
+ Data.Curve.Weierstrass.BrainpoolP512T1: data BrainpoolP512T1
+ Data.Curve.Weierstrass.BrainpoolP512T1: gA :: PA
+ Data.Curve.Weierstrass.BrainpoolP512T1: gJ :: PJ
+ Data.Curve.Weierstrass.BrainpoolP512T1: gP :: PP
+ Data.Curve.Weierstrass.BrainpoolP512T1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Data.Curve.Weierstrass.BrainpoolP512T1.Fq Data.Curve.Weierstrass.BrainpoolP512T1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Data.Curve.Weierstrass.BrainpoolP512T1.Fq Data.Curve.Weierstrass.BrainpoolP512T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP512T1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Data.Curve.Weierstrass.BrainpoolP512T1.Fq Data.Curve.Weierstrass.BrainpoolP512T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP512T1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Data.Curve.Weierstrass.BrainpoolP512T1.Fq Data.Curve.Weierstrass.BrainpoolP512T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP512T1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.BrainpoolP512T1.BrainpoolP512T1 Data.Curve.Weierstrass.BrainpoolP512T1.Fq Data.Curve.Weierstrass.BrainpoolP512T1.Fr
+ Data.Curve.Weierstrass.BrainpoolP512T1: type Fq = Prime Q
+ Data.Curve.Weierstrass.BrainpoolP512T1: type Fr = Prime R
+ Data.Curve.Weierstrass.BrainpoolP512T1: type PA = WAPoint BrainpoolP512T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP512T1: type PJ = WJPoint BrainpoolP512T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP512T1: type PP = WPPoint BrainpoolP512T1 Fq Fr
+ Data.Curve.Weierstrass.BrainpoolP512T1: type Q = 8948962207650232551656602815159153422162609644098354511344597187200057010413552439917934304191956942765446530386427345937963894309923928536070534607816947
+ Data.Curve.Weierstrass.BrainpoolP512T1: type R = 8948962207650232551656602815159153422162609644098354511344597187200057010413418528378981730643524959857451398370029280583094215613882043973354392115544169
+ Data.Curve.Weierstrass.SECP112R1: _a :: Fq
+ Data.Curve.Weierstrass.SECP112R1: _b :: Fq
+ Data.Curve.Weierstrass.SECP112R1: _h :: Natural
+ Data.Curve.Weierstrass.SECP112R1: _q :: Natural
+ Data.Curve.Weierstrass.SECP112R1: _r :: Natural
+ Data.Curve.Weierstrass.SECP112R1: _x :: Fq
+ Data.Curve.Weierstrass.SECP112R1: _y :: Fq
+ Data.Curve.Weierstrass.SECP112R1: data SECP112R1
+ Data.Curve.Weierstrass.SECP112R1: gA :: PA
+ Data.Curve.Weierstrass.SECP112R1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP112R1: gP :: PP
+ Data.Curve.Weierstrass.SECP112R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP112R1.SECP112R1 Data.Curve.Weierstrass.SECP112R1.Fq Data.Curve.Weierstrass.SECP112R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP112R1.SECP112R1 Data.Curve.Weierstrass.SECP112R1.Fq Data.Curve.Weierstrass.SECP112R1.Fr
+ Data.Curve.Weierstrass.SECP112R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP112R1.SECP112R1 Data.Curve.Weierstrass.SECP112R1.Fq Data.Curve.Weierstrass.SECP112R1.Fr
+ Data.Curve.Weierstrass.SECP112R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP112R1.SECP112R1 Data.Curve.Weierstrass.SECP112R1.Fq Data.Curve.Weierstrass.SECP112R1.Fr
+ Data.Curve.Weierstrass.SECP112R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP112R1.SECP112R1 Data.Curve.Weierstrass.SECP112R1.Fq Data.Curve.Weierstrass.SECP112R1.Fr
+ Data.Curve.Weierstrass.SECP112R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP112R1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP112R1: type PA = WAPoint SECP112R1 Fq Fr
+ Data.Curve.Weierstrass.SECP112R1: type PJ = WJPoint SECP112R1 Fq Fr
+ Data.Curve.Weierstrass.SECP112R1: type PP = WPPoint SECP112R1 Fq Fr
+ Data.Curve.Weierstrass.SECP112R1: type Q = 4451685225093714772084598273548427
+ Data.Curve.Weierstrass.SECP112R1: type R = 4451685225093714776491891542548933
+ Data.Curve.Weierstrass.SECP112R2: _a :: Fq
+ Data.Curve.Weierstrass.SECP112R2: _b :: Fq
+ Data.Curve.Weierstrass.SECP112R2: _h :: Natural
+ Data.Curve.Weierstrass.SECP112R2: _q :: Natural
+ Data.Curve.Weierstrass.SECP112R2: _r :: Natural
+ Data.Curve.Weierstrass.SECP112R2: _x :: Fq
+ Data.Curve.Weierstrass.SECP112R2: _y :: Fq
+ Data.Curve.Weierstrass.SECP112R2: data SECP112R2
+ Data.Curve.Weierstrass.SECP112R2: gA :: PA
+ Data.Curve.Weierstrass.SECP112R2: gJ :: PJ
+ Data.Curve.Weierstrass.SECP112R2: gP :: PP
+ Data.Curve.Weierstrass.SECP112R2: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP112R2.SECP112R2 Data.Curve.Weierstrass.SECP112R2.Fq Data.Curve.Weierstrass.SECP112R2.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP112R2.SECP112R2 Data.Curve.Weierstrass.SECP112R2.Fq Data.Curve.Weierstrass.SECP112R2.Fr
+ Data.Curve.Weierstrass.SECP112R2: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP112R2.SECP112R2 Data.Curve.Weierstrass.SECP112R2.Fq Data.Curve.Weierstrass.SECP112R2.Fr
+ Data.Curve.Weierstrass.SECP112R2: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP112R2.SECP112R2 Data.Curve.Weierstrass.SECP112R2.Fq Data.Curve.Weierstrass.SECP112R2.Fr
+ Data.Curve.Weierstrass.SECP112R2: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP112R2.SECP112R2 Data.Curve.Weierstrass.SECP112R2.Fq Data.Curve.Weierstrass.SECP112R2.Fr
+ Data.Curve.Weierstrass.SECP112R2: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP112R2: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP112R2: type PA = WAPoint SECP112R2 Fq Fr
+ Data.Curve.Weierstrass.SECP112R2: type PJ = WJPoint SECP112R2 Fq Fr
+ Data.Curve.Weierstrass.SECP112R2: type PP = WPPoint SECP112R2 Fq Fr
+ Data.Curve.Weierstrass.SECP112R2: type Q = 4451685225093714772084598273548427
+ Data.Curve.Weierstrass.SECP112R2: type R = 1112921306273428674967732714786891
+ Data.Curve.Weierstrass.SECP128R1: _a :: Fq
+ Data.Curve.Weierstrass.SECP128R1: _b :: Fq
+ Data.Curve.Weierstrass.SECP128R1: _h :: Natural
+ Data.Curve.Weierstrass.SECP128R1: _q :: Natural
+ Data.Curve.Weierstrass.SECP128R1: _r :: Natural
+ Data.Curve.Weierstrass.SECP128R1: _x :: Fq
+ Data.Curve.Weierstrass.SECP128R1: _y :: Fq
+ Data.Curve.Weierstrass.SECP128R1: data SECP128R1
+ Data.Curve.Weierstrass.SECP128R1: gA :: PA
+ Data.Curve.Weierstrass.SECP128R1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP128R1: gP :: PP
+ Data.Curve.Weierstrass.SECP128R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP128R1.SECP128R1 Data.Curve.Weierstrass.SECP128R1.Fq Data.Curve.Weierstrass.SECP128R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP128R1.SECP128R1 Data.Curve.Weierstrass.SECP128R1.Fq Data.Curve.Weierstrass.SECP128R1.Fr
+ Data.Curve.Weierstrass.SECP128R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP128R1.SECP128R1 Data.Curve.Weierstrass.SECP128R1.Fq Data.Curve.Weierstrass.SECP128R1.Fr
+ Data.Curve.Weierstrass.SECP128R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP128R1.SECP128R1 Data.Curve.Weierstrass.SECP128R1.Fq Data.Curve.Weierstrass.SECP128R1.Fr
+ Data.Curve.Weierstrass.SECP128R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP128R1.SECP128R1 Data.Curve.Weierstrass.SECP128R1.Fq Data.Curve.Weierstrass.SECP128R1.Fr
+ Data.Curve.Weierstrass.SECP128R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP128R1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP128R1: type PA = WAPoint SECP128R1 Fq Fr
+ Data.Curve.Weierstrass.SECP128R1: type PJ = WJPoint SECP128R1 Fq Fr
+ Data.Curve.Weierstrass.SECP128R1: type PP = WPPoint SECP128R1 Fq Fr
+ Data.Curve.Weierstrass.SECP128R1: type Q = 340282366762482138434845932244680310783
+ Data.Curve.Weierstrass.SECP128R1: type R = 340282366762482138443322565580356624661
+ Data.Curve.Weierstrass.SECP128R2: _a :: Fq
+ Data.Curve.Weierstrass.SECP128R2: _b :: Fq
+ Data.Curve.Weierstrass.SECP128R2: _h :: Natural
+ Data.Curve.Weierstrass.SECP128R2: _q :: Natural
+ Data.Curve.Weierstrass.SECP128R2: _r :: Natural
+ Data.Curve.Weierstrass.SECP128R2: _x :: Fq
+ Data.Curve.Weierstrass.SECP128R2: _y :: Fq
+ Data.Curve.Weierstrass.SECP128R2: data SECP128R2
+ Data.Curve.Weierstrass.SECP128R2: gA :: PA
+ Data.Curve.Weierstrass.SECP128R2: gJ :: PJ
+ Data.Curve.Weierstrass.SECP128R2: gP :: PP
+ Data.Curve.Weierstrass.SECP128R2: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP128R2.SECP128R2 Data.Curve.Weierstrass.SECP128R2.Fq Data.Curve.Weierstrass.SECP128R2.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP128R2.SECP128R2 Data.Curve.Weierstrass.SECP128R2.Fq Data.Curve.Weierstrass.SECP128R2.Fr
+ Data.Curve.Weierstrass.SECP128R2: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP128R2.SECP128R2 Data.Curve.Weierstrass.SECP128R2.Fq Data.Curve.Weierstrass.SECP128R2.Fr
+ Data.Curve.Weierstrass.SECP128R2: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP128R2.SECP128R2 Data.Curve.Weierstrass.SECP128R2.Fq Data.Curve.Weierstrass.SECP128R2.Fr
+ Data.Curve.Weierstrass.SECP128R2: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP128R2.SECP128R2 Data.Curve.Weierstrass.SECP128R2.Fq Data.Curve.Weierstrass.SECP128R2.Fr
+ Data.Curve.Weierstrass.SECP128R2: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP128R2: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP128R2: type PA = WAPoint SECP128R2 Fq Fr
+ Data.Curve.Weierstrass.SECP128R2: type PJ = WJPoint SECP128R2 Fq Fr
+ Data.Curve.Weierstrass.SECP128R2: type PP = WPPoint SECP128R2 Fq Fr
+ Data.Curve.Weierstrass.SECP128R2: type Q = 340282366762482138434845932244680310783
+ Data.Curve.Weierstrass.SECP128R2: type R = 85070591690620534603955721926813660579
+ Data.Curve.Weierstrass.SECP160K1: _a :: Fq
+ Data.Curve.Weierstrass.SECP160K1: _b :: Fq
+ Data.Curve.Weierstrass.SECP160K1: _h :: Natural
+ Data.Curve.Weierstrass.SECP160K1: _q :: Natural
+ Data.Curve.Weierstrass.SECP160K1: _r :: Natural
+ Data.Curve.Weierstrass.SECP160K1: _x :: Fq
+ Data.Curve.Weierstrass.SECP160K1: _y :: Fq
+ Data.Curve.Weierstrass.SECP160K1: data SECP160K1
+ Data.Curve.Weierstrass.SECP160K1: gA :: PA
+ Data.Curve.Weierstrass.SECP160K1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP160K1: gP :: PP
+ Data.Curve.Weierstrass.SECP160K1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP160K1.SECP160K1 Data.Curve.Weierstrass.SECP160K1.Fq Data.Curve.Weierstrass.SECP160K1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP160K1.SECP160K1 Data.Curve.Weierstrass.SECP160K1.Fq Data.Curve.Weierstrass.SECP160K1.Fr
+ Data.Curve.Weierstrass.SECP160K1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP160K1.SECP160K1 Data.Curve.Weierstrass.SECP160K1.Fq Data.Curve.Weierstrass.SECP160K1.Fr
+ Data.Curve.Weierstrass.SECP160K1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP160K1.SECP160K1 Data.Curve.Weierstrass.SECP160K1.Fq Data.Curve.Weierstrass.SECP160K1.Fr
+ Data.Curve.Weierstrass.SECP160K1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP160K1.SECP160K1 Data.Curve.Weierstrass.SECP160K1.Fq Data.Curve.Weierstrass.SECP160K1.Fr
+ Data.Curve.Weierstrass.SECP160K1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP160K1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP160K1: type PA = WAPoint SECP160K1 Fq Fr
+ Data.Curve.Weierstrass.SECP160K1: type PJ = WJPoint SECP160K1 Fq Fr
+ Data.Curve.Weierstrass.SECP160K1: type PP = WPPoint SECP160K1 Fq Fr
+ Data.Curve.Weierstrass.SECP160K1: type Q = 1461501637330902918203684832716283019651637554291
+ Data.Curve.Weierstrass.SECP160K1: type R = 1461501637330902918203686915170869725397159163571
+ Data.Curve.Weierstrass.SECP160R1: _a :: Fq
+ Data.Curve.Weierstrass.SECP160R1: _b :: Fq
+ Data.Curve.Weierstrass.SECP160R1: _h :: Natural
+ Data.Curve.Weierstrass.SECP160R1: _q :: Natural
+ Data.Curve.Weierstrass.SECP160R1: _r :: Natural
+ Data.Curve.Weierstrass.SECP160R1: _x :: Fq
+ Data.Curve.Weierstrass.SECP160R1: _y :: Fq
+ Data.Curve.Weierstrass.SECP160R1: data SECP160R1
+ Data.Curve.Weierstrass.SECP160R1: gA :: PA
+ Data.Curve.Weierstrass.SECP160R1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP160R1: gP :: PP
+ Data.Curve.Weierstrass.SECP160R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP160R1.SECP160R1 Data.Curve.Weierstrass.SECP160R1.Fq Data.Curve.Weierstrass.SECP160R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP160R1.SECP160R1 Data.Curve.Weierstrass.SECP160R1.Fq Data.Curve.Weierstrass.SECP160R1.Fr
+ Data.Curve.Weierstrass.SECP160R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP160R1.SECP160R1 Data.Curve.Weierstrass.SECP160R1.Fq Data.Curve.Weierstrass.SECP160R1.Fr
+ Data.Curve.Weierstrass.SECP160R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP160R1.SECP160R1 Data.Curve.Weierstrass.SECP160R1.Fq Data.Curve.Weierstrass.SECP160R1.Fr
+ Data.Curve.Weierstrass.SECP160R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP160R1.SECP160R1 Data.Curve.Weierstrass.SECP160R1.Fq Data.Curve.Weierstrass.SECP160R1.Fr
+ Data.Curve.Weierstrass.SECP160R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP160R1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP160R1: type PA = WAPoint SECP160R1 Fq Fr
+ Data.Curve.Weierstrass.SECP160R1: type PJ = WJPoint SECP160R1 Fq Fr
+ Data.Curve.Weierstrass.SECP160R1: type PP = WPPoint SECP160R1 Fq Fr
+ Data.Curve.Weierstrass.SECP160R1: type Q = 1461501637330902918203684832716283019653785059327
+ Data.Curve.Weierstrass.SECP160R1: type R = 1461501637330902918203687197606826779884643492439
+ Data.Curve.Weierstrass.SECP160R2: _a :: Fq
+ Data.Curve.Weierstrass.SECP160R2: _b :: Fq
+ Data.Curve.Weierstrass.SECP160R2: _h :: Natural
+ Data.Curve.Weierstrass.SECP160R2: _q :: Natural
+ Data.Curve.Weierstrass.SECP160R2: _r :: Natural
+ Data.Curve.Weierstrass.SECP160R2: _x :: Fq
+ Data.Curve.Weierstrass.SECP160R2: _y :: Fq
+ Data.Curve.Weierstrass.SECP160R2: data SECP160R2
+ Data.Curve.Weierstrass.SECP160R2: gA :: PA
+ Data.Curve.Weierstrass.SECP160R2: gJ :: PJ
+ Data.Curve.Weierstrass.SECP160R2: gP :: PP
+ Data.Curve.Weierstrass.SECP160R2: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP160R2.SECP160R2 Data.Curve.Weierstrass.SECP160R2.Fq Data.Curve.Weierstrass.SECP160R2.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP160R2.SECP160R2 Data.Curve.Weierstrass.SECP160R2.Fq Data.Curve.Weierstrass.SECP160R2.Fr
+ Data.Curve.Weierstrass.SECP160R2: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP160R2.SECP160R2 Data.Curve.Weierstrass.SECP160R2.Fq Data.Curve.Weierstrass.SECP160R2.Fr
+ Data.Curve.Weierstrass.SECP160R2: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP160R2.SECP160R2 Data.Curve.Weierstrass.SECP160R2.Fq Data.Curve.Weierstrass.SECP160R2.Fr
+ Data.Curve.Weierstrass.SECP160R2: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP160R2.SECP160R2 Data.Curve.Weierstrass.SECP160R2.Fq Data.Curve.Weierstrass.SECP160R2.Fr
+ Data.Curve.Weierstrass.SECP160R2: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP160R2: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP160R2: type PA = WAPoint SECP160R2 Fq Fr
+ Data.Curve.Weierstrass.SECP160R2: type PJ = WJPoint SECP160R2 Fq Fr
+ Data.Curve.Weierstrass.SECP160R2: type PP = WPPoint SECP160R2 Fq Fr
+ Data.Curve.Weierstrass.SECP160R2: type Q = 1461501637330902918203684832716283019651637554291
+ Data.Curve.Weierstrass.SECP160R2: type R = 1461501637330902918203685083571792140653176136043
+ Data.Curve.Weierstrass.SECP192K1: _a :: Fq
+ Data.Curve.Weierstrass.SECP192K1: _b :: Fq
+ Data.Curve.Weierstrass.SECP192K1: _h :: Natural
+ Data.Curve.Weierstrass.SECP192K1: _q :: Natural
+ Data.Curve.Weierstrass.SECP192K1: _r :: Natural
+ Data.Curve.Weierstrass.SECP192K1: _x :: Fq
+ Data.Curve.Weierstrass.SECP192K1: _y :: Fq
+ Data.Curve.Weierstrass.SECP192K1: data SECP192K1
+ Data.Curve.Weierstrass.SECP192K1: gA :: PA
+ Data.Curve.Weierstrass.SECP192K1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP192K1: gP :: PP
+ Data.Curve.Weierstrass.SECP192K1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP192K1.SECP192K1 Data.Curve.Weierstrass.SECP192K1.Fq Data.Curve.Weierstrass.SECP192K1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP192K1.SECP192K1 Data.Curve.Weierstrass.SECP192K1.Fq Data.Curve.Weierstrass.SECP192K1.Fr
+ Data.Curve.Weierstrass.SECP192K1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP192K1.SECP192K1 Data.Curve.Weierstrass.SECP192K1.Fq Data.Curve.Weierstrass.SECP192K1.Fr
+ Data.Curve.Weierstrass.SECP192K1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP192K1.SECP192K1 Data.Curve.Weierstrass.SECP192K1.Fq Data.Curve.Weierstrass.SECP192K1.Fr
+ Data.Curve.Weierstrass.SECP192K1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP192K1.SECP192K1 Data.Curve.Weierstrass.SECP192K1.Fq Data.Curve.Weierstrass.SECP192K1.Fr
+ Data.Curve.Weierstrass.SECP192K1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP192K1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP192K1: type PA = WAPoint SECP192K1 Fq Fr
+ Data.Curve.Weierstrass.SECP192K1: type PJ = WJPoint SECP192K1 Fq Fr
+ Data.Curve.Weierstrass.SECP192K1: type PP = WPPoint SECP192K1 Fq Fr
+ Data.Curve.Weierstrass.SECP192K1: type Q = 6277101735386680763835789423207666416102355444459739541047
+ Data.Curve.Weierstrass.SECP192K1: type R = 6277101735386680763835789423061264271957123915200845512077
+ Data.Curve.Weierstrass.SECP192R1: _a :: Fq
+ Data.Curve.Weierstrass.SECP192R1: _b :: Fq
+ Data.Curve.Weierstrass.SECP192R1: _h :: Natural
+ Data.Curve.Weierstrass.SECP192R1: _q :: Natural
+ Data.Curve.Weierstrass.SECP192R1: _r :: Natural
+ Data.Curve.Weierstrass.SECP192R1: _x :: Fq
+ Data.Curve.Weierstrass.SECP192R1: _y :: Fq
+ Data.Curve.Weierstrass.SECP192R1: data SECP192R1
+ Data.Curve.Weierstrass.SECP192R1: gA :: PA
+ Data.Curve.Weierstrass.SECP192R1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP192R1: gP :: PP
+ Data.Curve.Weierstrass.SECP192R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP192R1.SECP192R1 Data.Curve.Weierstrass.SECP192R1.Fq Data.Curve.Weierstrass.SECP192R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP192R1.SECP192R1 Data.Curve.Weierstrass.SECP192R1.Fq Data.Curve.Weierstrass.SECP192R1.Fr
+ Data.Curve.Weierstrass.SECP192R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP192R1.SECP192R1 Data.Curve.Weierstrass.SECP192R1.Fq Data.Curve.Weierstrass.SECP192R1.Fr
+ Data.Curve.Weierstrass.SECP192R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP192R1.SECP192R1 Data.Curve.Weierstrass.SECP192R1.Fq Data.Curve.Weierstrass.SECP192R1.Fr
+ Data.Curve.Weierstrass.SECP192R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP192R1.SECP192R1 Data.Curve.Weierstrass.SECP192R1.Fq Data.Curve.Weierstrass.SECP192R1.Fr
+ Data.Curve.Weierstrass.SECP192R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP192R1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP192R1: type PA = WAPoint SECP192R1 Fq Fr
+ Data.Curve.Weierstrass.SECP192R1: type PJ = WJPoint SECP192R1 Fq Fr
+ Data.Curve.Weierstrass.SECP192R1: type PP = WPPoint SECP192R1 Fq Fr
+ Data.Curve.Weierstrass.SECP192R1: type Q = 6277101735386680763835789423207666416083908700390324961279
+ Data.Curve.Weierstrass.SECP192R1: type R = 6277101735386680763835789423176059013767194773182842284081
+ Data.Curve.Weierstrass.SECP224K1: _a :: Fq
+ Data.Curve.Weierstrass.SECP224K1: _b :: Fq
+ Data.Curve.Weierstrass.SECP224K1: _h :: Natural
+ Data.Curve.Weierstrass.SECP224K1: _q :: Natural
+ Data.Curve.Weierstrass.SECP224K1: _r :: Natural
+ Data.Curve.Weierstrass.SECP224K1: _x :: Fq
+ Data.Curve.Weierstrass.SECP224K1: _y :: Fq
+ Data.Curve.Weierstrass.SECP224K1: data SECP224K1
+ Data.Curve.Weierstrass.SECP224K1: gA :: PA
+ Data.Curve.Weierstrass.SECP224K1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP224K1: gP :: PP
+ Data.Curve.Weierstrass.SECP224K1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP224K1.SECP224K1 Data.Curve.Weierstrass.SECP224K1.Fq Data.Curve.Weierstrass.SECP224K1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP224K1.SECP224K1 Data.Curve.Weierstrass.SECP224K1.Fq Data.Curve.Weierstrass.SECP224K1.Fr
+ Data.Curve.Weierstrass.SECP224K1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP224K1.SECP224K1 Data.Curve.Weierstrass.SECP224K1.Fq Data.Curve.Weierstrass.SECP224K1.Fr
+ Data.Curve.Weierstrass.SECP224K1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP224K1.SECP224K1 Data.Curve.Weierstrass.SECP224K1.Fq Data.Curve.Weierstrass.SECP224K1.Fr
+ Data.Curve.Weierstrass.SECP224K1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP224K1.SECP224K1 Data.Curve.Weierstrass.SECP224K1.Fq Data.Curve.Weierstrass.SECP224K1.Fr
+ Data.Curve.Weierstrass.SECP224K1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP224K1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP224K1: type PA = WAPoint SECP224K1 Fq Fr
+ Data.Curve.Weierstrass.SECP224K1: type PJ = WJPoint SECP224K1 Fq Fr
+ Data.Curve.Weierstrass.SECP224K1: type PP = WPPoint SECP224K1 Fq Fr
+ Data.Curve.Weierstrass.SECP224K1: type Q = 26959946667150639794667015087019630673637144422540572481099315275117
+ Data.Curve.Weierstrass.SECP224K1: type R = 26959946667150639794667015087019640346510327083120074548994958668279
+ Data.Curve.Weierstrass.SECP224R1: _a :: Fq
+ Data.Curve.Weierstrass.SECP224R1: _b :: Fq
+ Data.Curve.Weierstrass.SECP224R1: _h :: Natural
+ Data.Curve.Weierstrass.SECP224R1: _q :: Natural
+ Data.Curve.Weierstrass.SECP224R1: _r :: Natural
+ Data.Curve.Weierstrass.SECP224R1: _x :: Fq
+ Data.Curve.Weierstrass.SECP224R1: _y :: Fq
+ Data.Curve.Weierstrass.SECP224R1: data SECP224R1
+ Data.Curve.Weierstrass.SECP224R1: gA :: PA
+ Data.Curve.Weierstrass.SECP224R1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP224R1: gP :: PP
+ Data.Curve.Weierstrass.SECP224R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP224R1.SECP224R1 Data.Curve.Weierstrass.SECP224R1.Fq Data.Curve.Weierstrass.SECP224R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP224R1.SECP224R1 Data.Curve.Weierstrass.SECP224R1.Fq Data.Curve.Weierstrass.SECP224R1.Fr
+ Data.Curve.Weierstrass.SECP224R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP224R1.SECP224R1 Data.Curve.Weierstrass.SECP224R1.Fq Data.Curve.Weierstrass.SECP224R1.Fr
+ Data.Curve.Weierstrass.SECP224R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP224R1.SECP224R1 Data.Curve.Weierstrass.SECP224R1.Fq Data.Curve.Weierstrass.SECP224R1.Fr
+ Data.Curve.Weierstrass.SECP224R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP224R1.SECP224R1 Data.Curve.Weierstrass.SECP224R1.Fq Data.Curve.Weierstrass.SECP224R1.Fr
+ Data.Curve.Weierstrass.SECP224R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP224R1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP224R1: type PA = WAPoint SECP224R1 Fq Fr
+ Data.Curve.Weierstrass.SECP224R1: type PJ = WJPoint SECP224R1 Fq Fr
+ Data.Curve.Weierstrass.SECP224R1: type PP = WPPoint SECP224R1 Fq Fr
+ Data.Curve.Weierstrass.SECP224R1: type Q = 26959946667150639794667015087019630673557916260026308143510066298881
+ Data.Curve.Weierstrass.SECP224R1: type R = 26959946667150639794667015087019625940457807714424391721682722368061
+ Data.Curve.Weierstrass.SECP256K1: _a :: Fq
+ Data.Curve.Weierstrass.SECP256K1: _b :: Fq
+ Data.Curve.Weierstrass.SECP256K1: _h :: Natural
+ Data.Curve.Weierstrass.SECP256K1: _q :: Natural
+ Data.Curve.Weierstrass.SECP256K1: _r :: Natural
+ Data.Curve.Weierstrass.SECP256K1: _x :: Fq
+ Data.Curve.Weierstrass.SECP256K1: _y :: Fq
+ Data.Curve.Weierstrass.SECP256K1: data SECP256K1
+ Data.Curve.Weierstrass.SECP256K1: gA :: PA
+ Data.Curve.Weierstrass.SECP256K1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP256K1: gP :: PP
+ Data.Curve.Weierstrass.SECP256K1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP256K1.SECP256K1 Data.Curve.Weierstrass.SECP256K1.Fq Data.Curve.Weierstrass.SECP256K1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP256K1.SECP256K1 Data.Curve.Weierstrass.SECP256K1.Fq Data.Curve.Weierstrass.SECP256K1.Fr
+ Data.Curve.Weierstrass.SECP256K1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP256K1.SECP256K1 Data.Curve.Weierstrass.SECP256K1.Fq Data.Curve.Weierstrass.SECP256K1.Fr
+ Data.Curve.Weierstrass.SECP256K1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP256K1.SECP256K1 Data.Curve.Weierstrass.SECP256K1.Fq Data.Curve.Weierstrass.SECP256K1.Fr
+ Data.Curve.Weierstrass.SECP256K1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP256K1.SECP256K1 Data.Curve.Weierstrass.SECP256K1.Fq Data.Curve.Weierstrass.SECP256K1.Fr
+ Data.Curve.Weierstrass.SECP256K1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP256K1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP256K1: type PA = WAPoint SECP256K1 Fq Fr
+ Data.Curve.Weierstrass.SECP256K1: type PJ = WJPoint SECP256K1 Fq Fr
+ Data.Curve.Weierstrass.SECP256K1: type PP = WPPoint SECP256K1 Fq Fr
+ Data.Curve.Weierstrass.SECP256K1: type Q = 115792089237316195423570985008687907853269984665640564039457584007908834671663
+ Data.Curve.Weierstrass.SECP256K1: type R = 115792089237316195423570985008687907852837564279074904382605163141518161494337
+ Data.Curve.Weierstrass.SECP256R1: _a :: Fq
+ Data.Curve.Weierstrass.SECP256R1: _b :: Fq
+ Data.Curve.Weierstrass.SECP256R1: _h :: Natural
+ Data.Curve.Weierstrass.SECP256R1: _q :: Natural
+ Data.Curve.Weierstrass.SECP256R1: _r :: Natural
+ Data.Curve.Weierstrass.SECP256R1: _x :: Fq
+ Data.Curve.Weierstrass.SECP256R1: _y :: Fq
+ Data.Curve.Weierstrass.SECP256R1: data SECP256R1
+ Data.Curve.Weierstrass.SECP256R1: gA :: PA
+ Data.Curve.Weierstrass.SECP256R1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP256R1: gP :: PP
+ Data.Curve.Weierstrass.SECP256R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP256R1.SECP256R1 Data.Curve.Weierstrass.SECP256R1.Fq Data.Curve.Weierstrass.SECP256R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP256R1.SECP256R1 Data.Curve.Weierstrass.SECP256R1.Fq Data.Curve.Weierstrass.SECP256R1.Fr
+ Data.Curve.Weierstrass.SECP256R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP256R1.SECP256R1 Data.Curve.Weierstrass.SECP256R1.Fq Data.Curve.Weierstrass.SECP256R1.Fr
+ Data.Curve.Weierstrass.SECP256R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP256R1.SECP256R1 Data.Curve.Weierstrass.SECP256R1.Fq Data.Curve.Weierstrass.SECP256R1.Fr
+ Data.Curve.Weierstrass.SECP256R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP256R1.SECP256R1 Data.Curve.Weierstrass.SECP256R1.Fq Data.Curve.Weierstrass.SECP256R1.Fr
+ Data.Curve.Weierstrass.SECP256R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP256R1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP256R1: type PA = WAPoint SECP256R1 Fq Fr
+ Data.Curve.Weierstrass.SECP256R1: type PJ = WJPoint SECP256R1 Fq Fr
+ Data.Curve.Weierstrass.SECP256R1: type PP = WPPoint SECP256R1 Fq Fr
+ Data.Curve.Weierstrass.SECP256R1: type Q = 115792089210356248762697446949407573530086143415290314195533631308867097853951
+ Data.Curve.Weierstrass.SECP256R1: type R = 115792089210356248762697446949407573529996955224135760342422259061068512044369
+ Data.Curve.Weierstrass.SECP384R1: _a :: Fq
+ Data.Curve.Weierstrass.SECP384R1: _b :: Fq
+ Data.Curve.Weierstrass.SECP384R1: _h :: Natural
+ Data.Curve.Weierstrass.SECP384R1: _q :: Natural
+ Data.Curve.Weierstrass.SECP384R1: _r :: Natural
+ Data.Curve.Weierstrass.SECP384R1: _x :: Fq
+ Data.Curve.Weierstrass.SECP384R1: _y :: Fq
+ Data.Curve.Weierstrass.SECP384R1: data SECP384R1
+ Data.Curve.Weierstrass.SECP384R1: gA :: PA
+ Data.Curve.Weierstrass.SECP384R1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP384R1: gP :: PP
+ Data.Curve.Weierstrass.SECP384R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP384R1.SECP384R1 Data.Curve.Weierstrass.SECP384R1.Fq Data.Curve.Weierstrass.SECP384R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP384R1.SECP384R1 Data.Curve.Weierstrass.SECP384R1.Fq Data.Curve.Weierstrass.SECP384R1.Fr
+ Data.Curve.Weierstrass.SECP384R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP384R1.SECP384R1 Data.Curve.Weierstrass.SECP384R1.Fq Data.Curve.Weierstrass.SECP384R1.Fr
+ Data.Curve.Weierstrass.SECP384R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP384R1.SECP384R1 Data.Curve.Weierstrass.SECP384R1.Fq Data.Curve.Weierstrass.SECP384R1.Fr
+ Data.Curve.Weierstrass.SECP384R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP384R1.SECP384R1 Data.Curve.Weierstrass.SECP384R1.Fq Data.Curve.Weierstrass.SECP384R1.Fr
+ Data.Curve.Weierstrass.SECP384R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP384R1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP384R1: type PA = WAPoint SECP384R1 Fq Fr
+ Data.Curve.Weierstrass.SECP384R1: type PJ = WJPoint SECP384R1 Fq Fr
+ Data.Curve.Weierstrass.SECP384R1: type PP = WPPoint SECP384R1 Fq Fr
+ Data.Curve.Weierstrass.SECP384R1: type Q = 39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319
+ Data.Curve.Weierstrass.SECP384R1: type R = 39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643
+ Data.Curve.Weierstrass.SECP521R1: _a :: Fq
+ Data.Curve.Weierstrass.SECP521R1: _b :: Fq
+ Data.Curve.Weierstrass.SECP521R1: _h :: Natural
+ Data.Curve.Weierstrass.SECP521R1: _q :: Natural
+ Data.Curve.Weierstrass.SECP521R1: _r :: Natural
+ Data.Curve.Weierstrass.SECP521R1: _x :: Fq
+ Data.Curve.Weierstrass.SECP521R1: _y :: Fq
+ Data.Curve.Weierstrass.SECP521R1: data SECP521R1
+ Data.Curve.Weierstrass.SECP521R1: gA :: PA
+ Data.Curve.Weierstrass.SECP521R1: gJ :: PJ
+ Data.Curve.Weierstrass.SECP521R1: gP :: PP
+ Data.Curve.Weierstrass.SECP521R1: instance Data.Curve.Curve 'Data.Curve.Weierstrass c Data.Curve.Weierstrass.SECP521R1.SECP521R1 Data.Curve.Weierstrass.SECP521R1.Fq Data.Curve.Weierstrass.SECP521R1.Fr => Data.Curve.Weierstrass.WCurve c Data.Curve.Weierstrass.SECP521R1.SECP521R1 Data.Curve.Weierstrass.SECP521R1.Fq Data.Curve.Weierstrass.SECP521R1.Fr
+ Data.Curve.Weierstrass.SECP521R1: instance Data.Curve.Weierstrass.WACurve Data.Curve.Weierstrass.SECP521R1.SECP521R1 Data.Curve.Weierstrass.SECP521R1.Fq Data.Curve.Weierstrass.SECP521R1.Fr
+ Data.Curve.Weierstrass.SECP521R1: instance Data.Curve.Weierstrass.WJCurve Data.Curve.Weierstrass.SECP521R1.SECP521R1 Data.Curve.Weierstrass.SECP521R1.Fq Data.Curve.Weierstrass.SECP521R1.Fr
+ Data.Curve.Weierstrass.SECP521R1: instance Data.Curve.Weierstrass.WPCurve Data.Curve.Weierstrass.SECP521R1.SECP521R1 Data.Curve.Weierstrass.SECP521R1.Fq Data.Curve.Weierstrass.SECP521R1.Fr
+ Data.Curve.Weierstrass.SECP521R1: type Fq = Prime Q
+ Data.Curve.Weierstrass.SECP521R1: type Fr = Prime R
+ Data.Curve.Weierstrass.SECP521R1: type PA = WAPoint SECP521R1 Fq Fr
+ Data.Curve.Weierstrass.SECP521R1: type PJ = WJPoint SECP521R1 Fq Fr
+ Data.Curve.Weierstrass.SECP521R1: type PP = WPPoint SECP521R1 Fq Fr
+ Data.Curve.Weierstrass.SECP521R1: type Q = 6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151
+ Data.Curve.Weierstrass.SECP521R1: type R = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005449

Files

ChangeLog.md view
@@ -1,5 +1,13 @@ # Change log for elliptic-curve +## 0.3.0++* Refactor library structure from `Curve` to `Data.Curve`.+* Remove `Group` class and `BN254TF` field group.+* Fix dependency issue with `galois-field`.+* Add `BN254C` and `BN254D` elliptic curves.+* Add `frob` function for elliptic curves.+ ## 0.2.2  * Fix `Arbitrary` instances for elliptic curves.
README.md view
@@ -10,7 +10,7 @@  ## Curve representations -An [**elliptic curve**](src/Curve.hs) E(K) over a field K is a *smooth projective plane algebraic cubic curve* with a specified base point `O`, and the *points* on E(K) form an *algebraic group* with identity point `O`. By the *Riemann-Roch theorem*, any elliptic curve is isomorphic to a cubic curve of the form+An [**elliptic curve**](src/Data/Curve.hs) E(K) over a field K is a *smooth projective plane algebraic cubic curve* with a specified base point `O`, and the *points* on E(K) form an *algebraic group* with identity point `O`. By the *Riemann-Roch theorem*, any elliptic curve is isomorphic to a cubic curve of the form ``` E(K) = {(x, y) | y^2 + a1xy + a3y = x^3 + a2x^2 + a4x + a6} U {O} ```@@ -18,7 +18,7 @@  ### Weierstrass curves -A (short) [**Weierstrass curve**](src/Curve/Weierstrass.hs) is an elliptic curve over GF(p) for some prime p, and is of the form+A (short) [**Weierstrass curve**](src/Data/Curve/Weierstrass.hs) is an elliptic curve over GF(p) for some prime p, and is of the form ``` E(GF(p)) = {(x, y) | y^2 = x^3 + Ax^2 + B} U {O} ```@@ -26,7 +26,7 @@  ### Binary curves -A (short Weierstrass) [**binary curve**](src/Curve/Binary.hs) is an elliptic curve over GF(2^m) for some positive m, and is of the form+A (short Weierstrass) [**binary curve**](src/Data/Curve/Binary.hs) is an elliptic curve over GF(2^m) for some positive m, and is of the form ``` E(GF(2^m)) = {(x, y) | y^2 = x^3 + Ax + B} U {O} ```@@ -34,7 +34,7 @@  ### Montgomery curves -A [**Montgomery curve**](src/Curve/Montgomery.hs) is an elliptic curve over GF(p) for some prime p, and is of the form+A [**Montgomery curve**](src/Data/Curve/Montgomery.hs) is an elliptic curve over GF(p) for some prime p, and is of the form ``` E(GF(p)) = {(x, y) | By^2 = x^3 + Ax^2 + x} U {O} ```@@ -42,7 +42,7 @@  ### Edwards curves -A (twisted) [**Edwards curve**](src/Curve/Edwards.hs) is an elliptic curve over GF(p) for some prime p, and is of the form+A (twisted) [**Edwards curve**](src/Data/Curve/Edwards.hs) is an elliptic curve over GF(p) for some prime p, and is of the form ``` E(GF(p)) = {(x, y) | Ax^2 + y^2 = 1 + Dx^2y^2} ```@@ -168,98 +168,102 @@ ### Binary curves  * SECT (NIST) curves-  * [SECT113R1](src/Curve/Binary/SECT113R1.hs)-  * [SECT113R2](src/Curve/Binary/SECT113R2.hs)-  * [SECT131R1](src/Curve/Binary/SECT131R1.hs)-  * [SECT131R2](src/Curve/Binary/SECT131R2.hs)-  * [SECT163K1](src/Curve/Binary/SECT163K1.hs)-  * [SECT163R1](src/Curve/Binary/SECT163R1.hs)-  * [SECT163R2](src/Curve/Binary/SECT163R2.hs)-  * [SECT193R1](src/Curve/Binary/SECT193R1.hs)-  * [SECT193R2](src/Curve/Binary/SECT193R2.hs)-  * [SECT233K1](src/Curve/Binary/SECT233K1.hs)-  * [SECT233R1](src/Curve/Binary/SECT233R1.hs)-  * [SECT239K1](src/Curve/Binary/SECT239K1.hs)-  * [SECT283K1](src/Curve/Binary/SECT283K1.hs)-  * [SECT283R1](src/Curve/Binary/SECT283R1.hs)-  * [SECT409K1](src/Curve/Binary/SECT409K1.hs)-  * [SECT409R1](src/Curve/Binary/SECT409R1.hs)-  * [SECT571K1](src/Curve/Binary/SECT571K1.hs)-  * [SECT571R1](src/Curve/Binary/SECT571R1.hs)+  * [SECT113R1](src/Data/Curve/Binary/SECT113R1.hs)+  * [SECT113R2](src/Data/Curve/Binary/SECT113R2.hs)+  * [SECT131R1](src/Data/Curve/Binary/SECT131R1.hs)+  * [SECT131R2](src/Data/Curve/Binary/SECT131R2.hs)+  * [SECT163K1](src/Data/Curve/Binary/SECT163K1.hs)+  * [SECT163R1](src/Data/Curve/Binary/SECT163R1.hs)+  * [SECT163R2](src/Data/Curve/Binary/SECT163R2.hs)+  * [SECT193R1](src/Data/Curve/Binary/SECT193R1.hs)+  * [SECT193R2](src/Data/Curve/Binary/SECT193R2.hs)+  * [SECT233K1](src/Data/Curve/Binary/SECT233K1.hs)+  * [SECT233R1](src/Data/Curve/Binary/SECT233R1.hs)+  * [SECT239K1](src/Data/Curve/Binary/SECT239K1.hs)+  * [SECT283K1](src/Data/Curve/Binary/SECT283K1.hs)+  * [SECT283R1](src/Data/Curve/Binary/SECT283R1.hs)+  * [SECT409K1](src/Data/Curve/Binary/SECT409K1.hs)+  * [SECT409R1](src/Data/Curve/Binary/SECT409R1.hs)+  * [SECT571K1](src/Data/Curve/Binary/SECT571K1.hs)+  * [SECT571R1](src/Data/Curve/Binary/SECT571R1.hs)  ### Edwards curves  * Edwards curves-  * [Curve1174](src/Curve/Edwards/Curve1174.hs)-  * [Curve41417](src/Curve/Edwards/Curve41417.hs)-  * [E-222](src/Curve/Edwards/E222.hs)-  * [E-382](src/Curve/Edwards/E382.hs)-  * [E-521](src/Curve/Edwards/E521.hs)-  * [Ed25519 (Curve25519)](src/Curve/Edwards/Ed25519.hs)-  * [Ed3363 (HighFive)](src/Curve/Edwards/Ed3363.hs)-  * [Ed448 (Goldilocks)](src/Curve/Edwards/Ed448.hs)-  * [JubJub](src/Curve/Edwards/JubJub.hs)+  * [Curve1174](src/Data/Curve/Edwards/Curve1174.hs)+  * [Curve41417](src/Data/Curve/Edwards/Curve41417.hs)+  * [E-222](src/Data/Curve/Edwards/E222.hs)+  * [E-382](src/Data/Curve/Edwards/E382.hs)+  * [E-521](src/Data/Curve/Edwards/E521.hs)+  * [Ed25519 (Curve25519)](src/Data/Curve/Edwards/Ed25519.hs)+  * [Ed3363 (HighFive)](src/Data/Curve/Edwards/Ed3363.hs)+  * [Ed448 (Goldilocks)](src/Data/Curve/Edwards/Ed448.hs)+  * [JubJub](src/Data/Curve/Edwards/JubJub.hs)  ### Montgomery curves  * Montgomery curves-  * [Curve25519 (Ed25519)](src/Curve/Montgomery/Curve25519.hs)-  * [Curve383187](src/Curve/Montgomery/Curve383187.hs)-  * [Curve448 (Goldilocks)](src/Curve/Montgomery/Curve448.hs)-  * [M221](src/Curve/Montgomery/M221.hs)-  * [M383](src/Curve/Montgomery/M383.hs)-  * [M511](src/Curve/Montgomery/M511.hs)+  * [Curve25519 (Ed25519)](src/Data/Curve/Montgomery/Curve25519.hs)+  * [Curve383187](src/Data/Curve/Montgomery/Curve383187.hs)+  * [Curve448 (Goldilocks)](src/Data/Curve/Montgomery/Curve448.hs)+  * [M221](src/Data/Curve/Montgomery/M221.hs)+  * [M383](src/Data/Curve/Montgomery/M383.hs)+  * [M511](src/Data/Curve/Montgomery/M511.hs)  ### Weierstrass curves -* [Anomalous](src/Curve/Weierstrass/Anomalous.hs)-* [ANSSIFRP256V1](src/Curve/Weierstrass/ANSSIFRP256V1.hs)+* [Anomalous](src/Data/Curve/Weierstrass/Anomalous.hs)+* [ANSSIFRP256V1](src/Data/Curve/Weierstrass/ANSSIFRP256V1.hs) * Barreto-Lynn-Scott (BLS) curves-  * [BLS12381](src/Curve/Weierstrass/BLS12381.hs)-  * [BLS12381T](src/Curve/Weierstrass/BLS12381T.hs)-  * [BLS48581](src/Curve/Weierstrass/BLS48581.hs)-  * [BLS48581T](src/Curve/Weierstrass/BLS48581T.hs)+  * [BLS12381](src/Data/Curve/Weierstrass/BLS12381.hs)+  * [BLS12381T](src/Data/Curve/Weierstrass/BLS12381T.hs)+  * [BLS48581](src/Data/Curve/Weierstrass/BLS48581.hs)+  * [BLS48581T](src/Data/Curve/Weierstrass/BLS48581T.hs) * Barreto-Naehrig (BN) curves-  * [BN224 (Fp224BN)](src/Curve/Weierstrass/BN224.hs)-  * [BN254 (CurveSNARK)](src/Curve/Weierstrass/BN254.hs)-  * [BN254T (CurveSNARKn2)](src/Curve/Weierstrass/BN254T.hs)-  * [BN254A (Fp254BNa)](src/Curve/Weierstrass/BN254A.hs)-  * [BN254AT (Fp254n2BNa)](src/Curve/Weierstrass/BN254AT.hs)-  * [BN254B (Fp254BNb)](src/Curve/Weierstrass/BN254B.hs)-  * [BN254BT (Fp254n2BNb)](src/Curve/Weierstrass/BN254BT.hs)-  * [BN256 (Fp256BN)](src/Curve/Weierstrass/BN256.hs)-  * [BN384 (Fp384BN)](src/Curve/Weierstrass/BN384.hs)-  * [BN462 (Fp462BN)](src/Curve/Weierstrass/BN462.hs)-  * [BN462T (Fp462n2BN)](src/Curve/Weierstrass/BN462T.hs)-  * [BN512 (Fp512BN)](src/Curve/Weierstrass/BN512.hs)+  * [BN224 (Fp224BN)](src/Data/Curve/Weierstrass/BN224.hs)+  * [BN254 (CurveSNARK)](src/Data/Curve/Weierstrass/BN254.hs)+  * [BN254T (CurveSNARKn2)](src/Data/Curve/Weierstrass/BN254T.hs)+  * [BN254A (Fp254BNa)](src/Data/Curve/Weierstrass/BN254A.hs)+  * [BN254AT (Fp254n2BNa)](src/Data/Curve/Weierstrass/BN254AT.hs)+  * [BN254B (Fp254BNb)](src/Data/Curve/Weierstrass/BN254B.hs)+  * [BN254BT (Fp254n2BNb)](src/Data/Curve/Weierstrass/BN254BT.hs)+  * [BN254C (Fp254BNc)](src/Data/Curve/Weierstrass/BN254C.hs)+  * [BN254CT (Fp254n2BNc)](src/Data/Curve/Weierstrass/BN254CT.hs)+  * [BN254D (Fp254BNd)](src/Data/Curve/Weierstrass/BN254D.hs)+  * [BN254DT (Fp254n2BNd)](src/Data/Curve/Weierstrass/BN254DT.hs)+  * [BN256 (Fp256BN)](src/Data/Curve/Weierstrass/BN256.hs)+  * [BN384 (Fp384BN)](src/Data/Curve/Weierstrass/BN384.hs)+  * [BN462 (Fp462BN)](src/Data/Curve/Weierstrass/BN462.hs)+  * [BN462T (Fp462n2BN)](src/Data/Curve/Weierstrass/BN462T.hs)+  * [BN512 (Fp512BN)](src/Data/Curve/Weierstrass/BN512.hs) * Brainpool curves-  * [BrainpoolP160R1](src/Curve/Weierstrass/BrainpoolP160R1.hs)-  * [BrainpoolP160T1](src/Curve/Weierstrass/BrainpoolP160T1.hs)-  * [BrainpoolP192R1](src/Curve/Weierstrass/BrainpoolP192R1.hs)-  * [BrainpoolP192T1](src/Curve/Weierstrass/BrainpoolP192T1.hs)-  * [BrainpoolP224R1](src/Curve/Weierstrass/BrainpoolP224R1.hs)-  * [BrainpoolP224T1](src/Curve/Weierstrass/BrainpoolP224T1.hs)-  * [BrainpoolP256R1](src/Curve/Weierstrass/BrainpoolP256R1.hs)-  * [BrainpoolP256T1](src/Curve/Weierstrass/BrainpoolP256T1.hs)-  * [BrainpoolP320R1](src/Curve/Weierstrass/BrainpoolP320R1.hs)-  * [BrainpoolP320T1](src/Curve/Weierstrass/BrainpoolP320T1.hs)-  * [BrainpoolP384R1](src/Curve/Weierstrass/BrainpoolP384R1.hs)-  * [BrainpoolP384T1](src/Curve/Weierstrass/BrainpoolP384T1.hs)-  * [BrainpoolP512R1](src/Curve/Weierstrass/BrainpoolP512R1.hs)-  * [BrainpoolP512T1](src/Curve/Weierstrass/BrainpoolP512T1.hs)+  * [BrainpoolP160R1](src/Data/Curve/Weierstrass/BrainpoolP160R1.hs)+  * [BrainpoolP160T1](src/Data/Curve/Weierstrass/BrainpoolP160T1.hs)+  * [BrainpoolP192R1](src/Data/Curve/Weierstrass/BrainpoolP192R1.hs)+  * [BrainpoolP192T1](src/Data/Curve/Weierstrass/BrainpoolP192T1.hs)+  * [BrainpoolP224R1](src/Data/Curve/Weierstrass/BrainpoolP224R1.hs)+  * [BrainpoolP224T1](src/Data/Curve/Weierstrass/BrainpoolP224T1.hs)+  * [BrainpoolP256R1](src/Data/Curve/Weierstrass/BrainpoolP256R1.hs)+  * [BrainpoolP256T1](src/Data/Curve/Weierstrass/BrainpoolP256T1.hs)+  * [BrainpoolP320R1](src/Data/Curve/Weierstrass/BrainpoolP320R1.hs)+  * [BrainpoolP320T1](src/Data/Curve/Weierstrass/BrainpoolP320T1.hs)+  * [BrainpoolP384R1](src/Data/Curve/Weierstrass/BrainpoolP384R1.hs)+  * [BrainpoolP384T1](src/Data/Curve/Weierstrass/BrainpoolP384T1.hs)+  * [BrainpoolP512R1](src/Data/Curve/Weierstrass/BrainpoolP512R1.hs)+  * [BrainpoolP512T1](src/Data/Curve/Weierstrass/BrainpoolP512T1.hs) * SECP (NIST) curves-  * [SECP112R1](src/Curve/Weierstrass/SECP112R1.hs)-  * [SECP112R2](src/Curve/Weierstrass/SECP112R2.hs)-  * [SECP128R1](src/Curve/Weierstrass/SECP128R1.hs)-  * [SECP128R2](src/Curve/Weierstrass/SECP128R2.hs)-  * [SECP160K1](src/Curve/Weierstrass/SECP160K1.hs)-  * [SECP160R1](src/Curve/Weierstrass/SECP160R1.hs)-  * [SECP160R2](src/Curve/Weierstrass/SECP160R2.hs)-  * [SECP192K1](src/Curve/Weierstrass/SECP192K1.hs)-  * [SECP192R1](src/Curve/Weierstrass/SECP192R1.hs)-  * [SECP224K1](src/Curve/Weierstrass/SECP224K1.hs)-  * [SECP224R1](src/Curve/Weierstrass/SECP224R1.hs)-  * [SECP256K1](src/Curve/Weierstrass/SECP256K1.hs)-  * [SECP256R1](src/Curve/Weierstrass/SECP256R1.hs)-  * [SECP384R1](src/Curve/Weierstrass/SECP384R1.hs)-  * [SECP521R1](src/Curve/Weierstrass/SECP521R1.hs)+  * [SECP112R1](src/Data/Curve/Weierstrass/SECP112R1.hs)+  * [SECP112R2](src/Data/Curve/Weierstrass/SECP112R2.hs)+  * [SECP128R1](src/Data/Curve/Weierstrass/SECP128R1.hs)+  * [SECP128R2](src/Data/Curve/Weierstrass/SECP128R2.hs)+  * [SECP160K1](src/Data/Curve/Weierstrass/SECP160K1.hs)+  * [SECP160R1](src/Data/Curve/Weierstrass/SECP160R1.hs)+  * [SECP160R2](src/Data/Curve/Weierstrass/SECP160R2.hs)+  * [SECP192K1](src/Data/Curve/Weierstrass/SECP192K1.hs)+  * [SECP192R1](src/Data/Curve/Weierstrass/SECP192R1.hs)+  * [SECP224K1](src/Data/Curve/Weierstrass/SECP224K1.hs)+  * [SECP224R1](src/Data/Curve/Weierstrass/SECP224R1.hs)+  * [SECP256K1](src/Data/Curve/Weierstrass/SECP256K1.hs)+  * [SECP256R1](src/Data/Curve/Weierstrass/SECP256R1.hs)+  * [SECP384R1](src/Data/Curve/Weierstrass/SECP384R1.hs)+  * [SECP521R1](src/Data/Curve/Weierstrass/SECP521R1.hs)
+ bench/Bench/Binary.hs view
@@ -0,0 +1,50 @@+module Bench.Binary where++import Criterion.Main+import qualified Data.Curve.Binary.SECT113R1 as SECT113R1+import qualified Data.Curve.Binary.SECT113R2 as SECT113R2+import qualified Data.Curve.Binary.SECT131R1 as SECT131R1+import qualified Data.Curve.Binary.SECT131R2 as SECT131R2+import qualified Data.Curve.Binary.SECT163K1 as SECT163K1+import qualified Data.Curve.Binary.SECT163R1 as SECT163R1+import qualified Data.Curve.Binary.SECT163R2 as SECT163R2+import qualified Data.Curve.Binary.SECT193R1 as SECT193R1+import qualified Data.Curve.Binary.SECT193R2 as SECT193R2+import qualified Data.Curve.Binary.SECT233K1 as SECT233K1+import qualified Data.Curve.Binary.SECT233R1 as SECT233R1+import qualified Data.Curve.Binary.SECT239K1 as SECT239K1+import qualified Data.Curve.Binary.SECT283K1 as SECT283K1+import qualified Data.Curve.Binary.SECT283R1 as SECT283R1+import qualified Data.Curve.Binary.SECT409K1 as SECT409K1+import qualified Data.Curve.Binary.SECT409R1 as SECT409R1+import qualified Data.Curve.Binary.SECT571K1 as SECT571K1+import qualified Data.Curve.Binary.SECT571R1 as SECT571R1++import Bench.Curve++benchBinary :: Benchmark+benchBinary = bgroup "Binary"+  [ benchBinary' "SECT113R1" SECT113R1.gA SECT113R1.gP+  , benchBinary' "SECT113R2" SECT113R2.gA SECT113R2.gP+  , benchBinary' "SECT131R1" SECT131R1.gA SECT131R1.gP+  , benchBinary' "SECT131R2" SECT131R2.gA SECT131R2.gP+  , benchBinary' "SECT163K1" SECT163K1.gA SECT163K1.gP+  , benchBinary' "SECT163R1" SECT163R1.gA SECT163R1.gP+  , benchBinary' "SECT163R2" SECT163R2.gA SECT163R2.gP+  , benchBinary' "SECT193R1" SECT193R1.gA SECT193R1.gP+  , benchBinary' "SECT193R2" SECT193R2.gA SECT193R2.gP+  , benchBinary' "SECT233K1" SECT233K1.gA SECT233K1.gP+  , benchBinary' "SECT233R1" SECT233R1.gA SECT233R1.gP+  , benchBinary' "SECT239K1" SECT239K1.gA SECT239K1.gP+  , benchBinary' "SECT283K1" SECT283K1.gA SECT283K1.gP+  , benchBinary' "SECT283R1" SECT283R1.gA SECT283R1.gP+  , benchBinary' "SECT409K1" SECT409K1.gA SECT409K1.gP+  , benchBinary' "SECT409R1" SECT409R1.gA SECT409R1.gP+  , benchBinary' "SECT571K1" SECT571K1.gA SECT571K1.gP+  , benchBinary' "SECT571R1" SECT571R1.gA SECT571R1.gP+  ]+  where+    benchBinary' curve affine projective = bgroup curve+      [ benchmark "Affine" affine+      , benchmark "Projective" projective+      ]
+ bench/Bench/Curve.hs view
@@ -0,0 +1,8 @@+module Bench.Curve where++import Criterion.Main+import Data.Curve+import GHC.Base++benchmark :: Curve f c e q r => String -> Point f c e q r -> Benchmark+benchmark = (. nf (flip mul' (-3 :: Int))) . bench
+ bench/Bench/Edwards.hs view
@@ -0,0 +1,32 @@+module Bench.Edwards where++import Criterion.Main+import qualified Data.Curve.Edwards.Curve1174  as Curve1174+import qualified Data.Curve.Edwards.Curve41417 as Curve41417+import qualified Data.Curve.Edwards.E222       as E222+import qualified Data.Curve.Edwards.E382       as E382+import qualified Data.Curve.Edwards.E521       as E521+import qualified Data.Curve.Edwards.Ed448      as Ed448+import qualified Data.Curve.Edwards.Ed3363     as Ed3363+import qualified Data.Curve.Edwards.Ed25519    as Ed25519+import qualified Data.Curve.Edwards.JubJub     as JubJub++import Bench.Curve++benchEdwards :: Benchmark+benchEdwards = bgroup "Edwards"+  [ benchEdwards'  "Curve1174"  Curve1174.gA  Curve1174.gP+  , benchEdwards' "Curve41417" Curve41417.gA Curve41417.gP+  , benchEdwards'       "E222"       E222.gA       E222.gP+  , benchEdwards'       "E382"       E382.gA       E382.gP+  , benchEdwards'       "E521"       E521.gA       E521.gP+  , benchEdwards'      "Ed448"      Ed448.gA      Ed448.gP+  , benchEdwards'     "Ed3363"     Ed3363.gA     Ed3363.gP+  , benchEdwards'    "Ed25519"    Ed25519.gA    Ed25519.gP+  , benchEdwards'     "JubJub"     JubJub.gA     JubJub.gP+  ]+  where+    benchEdwards' curve affine projective = bgroup curve+      [ benchmark "Affine" affine+      , benchmark "Projective" projective+      ]
+ bench/Bench/Montgomery.hs view
@@ -0,0 +1,25 @@+module Bench.Montgomery where++import Criterion.Main+import qualified Data.Curve.Montgomery.Curve448    as Curve448+import qualified Data.Curve.Montgomery.Curve25519  as Curve25519+import qualified Data.Curve.Montgomery.Curve383187 as Curve383187+import qualified Data.Curve.Montgomery.M221        as M221+import qualified Data.Curve.Montgomery.M383        as M383+import qualified Data.Curve.Montgomery.M511        as M511++import Bench.Curve++benchMontgomery :: Benchmark+benchMontgomery = bgroup "Montgomery"+  [ benchMontgomery'    "Curve448"    Curve448.gA+  , benchMontgomery'  "Curve25519"  Curve25519.gA+  , benchMontgomery' "Curve383187" Curve383187.gA+  , benchMontgomery'        "M221"        M221.gA+  , benchMontgomery'        "M383"        M383.gA+  , benchMontgomery'        "M511"        M511.gA+  ]+  where+    benchMontgomery' curve affine = bgroup curve+      [ benchmark "Affine" affine+      ]
+ bench/Bench/Weierstrass.hs view
@@ -0,0 +1,117 @@+module Bench.Weierstrass where++import Criterion.Main+import qualified Data.Curve.Weierstrass.Anomalous       as Anomalous+import qualified Data.Curve.Weierstrass.ANSSIFRP256V1   as ANSSIFRP256V1+import qualified Data.Curve.Weierstrass.BLS12381        as BLS12381+import qualified Data.Curve.Weierstrass.BLS12381T       as BLS12381T+import qualified Data.Curve.Weierstrass.BLS48581        as BLS48581+import qualified Data.Curve.Weierstrass.BLS48581T       as BLS48581T+import qualified Data.Curve.Weierstrass.BN224           as BN224+import qualified Data.Curve.Weierstrass.BN254           as BN254+import qualified Data.Curve.Weierstrass.BN254T          as BN254T+import qualified Data.Curve.Weierstrass.BN254A          as BN254A+import qualified Data.Curve.Weierstrass.BN254AT         as BN254AT+import qualified Data.Curve.Weierstrass.BN254B          as BN254B+import qualified Data.Curve.Weierstrass.BN254BT         as BN254BT+import qualified Data.Curve.Weierstrass.BN254C          as BN254C+import qualified Data.Curve.Weierstrass.BN254CT         as BN254CT+import qualified Data.Curve.Weierstrass.BN254D          as BN254D+import qualified Data.Curve.Weierstrass.BN254DT         as BN254DT+import qualified Data.Curve.Weierstrass.BN256           as BN256+import qualified Data.Curve.Weierstrass.BN384           as BN384+import qualified Data.Curve.Weierstrass.BN462           as BN462+import qualified Data.Curve.Weierstrass.BN462T          as BN462T+import qualified Data.Curve.Weierstrass.BN512           as BN512+import qualified Data.Curve.Weierstrass.BrainpoolP160R1 as BrainpoolP160R1+import qualified Data.Curve.Weierstrass.BrainpoolP160T1 as BrainpoolP160T1+import qualified Data.Curve.Weierstrass.BrainpoolP192R1 as BrainpoolP192R1+import qualified Data.Curve.Weierstrass.BrainpoolP192T1 as BrainpoolP192T1+import qualified Data.Curve.Weierstrass.BrainpoolP224R1 as BrainpoolP224R1+import qualified Data.Curve.Weierstrass.BrainpoolP224T1 as BrainpoolP224T1+import qualified Data.Curve.Weierstrass.BrainpoolP256R1 as BrainpoolP256R1+import qualified Data.Curve.Weierstrass.BrainpoolP256T1 as BrainpoolP256T1+import qualified Data.Curve.Weierstrass.BrainpoolP320R1 as BrainpoolP320R1+import qualified Data.Curve.Weierstrass.BrainpoolP320T1 as BrainpoolP320T1+import qualified Data.Curve.Weierstrass.BrainpoolP384R1 as BrainpoolP384R1+import qualified Data.Curve.Weierstrass.BrainpoolP384T1 as BrainpoolP384T1+import qualified Data.Curve.Weierstrass.BrainpoolP512R1 as BrainpoolP512R1+import qualified Data.Curve.Weierstrass.BrainpoolP512T1 as BrainpoolP512T1+import qualified Data.Curve.Weierstrass.SECP112R1       as SECP112R1+import qualified Data.Curve.Weierstrass.SECP112R2       as SECP112R2+import qualified Data.Curve.Weierstrass.SECP128R1       as SECP128R1+import qualified Data.Curve.Weierstrass.SECP128R2       as SECP128R2+import qualified Data.Curve.Weierstrass.SECP160K1       as SECP160K1+import qualified Data.Curve.Weierstrass.SECP160R1       as SECP160R1+import qualified Data.Curve.Weierstrass.SECP160R2       as SECP160R2+import qualified Data.Curve.Weierstrass.SECP192K1       as SECP192K1+import qualified Data.Curve.Weierstrass.SECP192R1       as SECP192R1+import qualified Data.Curve.Weierstrass.SECP224K1       as SECP224K1+import qualified Data.Curve.Weierstrass.SECP224R1       as SECP224R1+import qualified Data.Curve.Weierstrass.SECP256K1       as SECP256K1+import qualified Data.Curve.Weierstrass.SECP256R1       as SECP256R1+import qualified Data.Curve.Weierstrass.SECP384R1       as SECP384R1+import qualified Data.Curve.Weierstrass.SECP521R1       as SECP521R1++import Bench.Curve++benchWeierstrass :: Benchmark+benchWeierstrass = bgroup "Weierstrass"+  [ benchWeierstrass'       "Anomalous"       Anomalous.gA       Anomalous.gJ       Anomalous.gP+  , benchWeierstrass'   "ANSSIFRP256V1"   ANSSIFRP256V1.gA   ANSSIFRP256V1.gJ   ANSSIFRP256V1.gP+  , benchWeierstrass'        "BLS12381"        BLS12381.gA        BLS12381.gJ        BLS12381.gP+  , benchWeierstrass'       "BLS12381T"       BLS12381T.gA       BLS12381T.gJ       BLS12381T.gP+  , benchWeierstrass'        "BLS48581"        BLS48581.gA        BLS48581.gJ        BLS48581.gP+  , benchWeierstrass'       "BLS48581T"       BLS48581T.gA       BLS48581T.gJ       BLS48581T.gP+  , benchWeierstrass'           "BN224"           BN224.gA           BN224.gJ           BN224.gP+  , benchWeierstrass'           "BN254"           BN254.gA           BN254.gJ           BN254.gP+  , benchWeierstrass'          "BN254T"          BN254T.gA          BN254T.gJ          BN254T.gP+  , benchWeierstrass'          "BN254A"          BN254A.gA          BN254A.gJ          BN254A.gP+  , benchWeierstrass'         "BN254AT"         BN254AT.gA         BN254AT.gJ         BN254AT.gP+  , benchWeierstrass'          "BN254B"          BN254B.gA          BN254B.gJ          BN254B.gP+  , benchWeierstrass'         "BN254BT"         BN254BT.gA         BN254BT.gJ         BN254BT.gP+  , benchWeierstrass'          "BN254C"          BN254C.gA          BN254C.gJ          BN254C.gP+  , benchWeierstrass'         "BN254CT"         BN254CT.gA         BN254CT.gJ         BN254CT.gP+  , benchWeierstrass'          "BN254D"          BN254D.gA          BN254D.gJ          BN254D.gP+  , benchWeierstrass'         "BN254DT"         BN254DT.gA         BN254DT.gJ         BN254DT.gP+  , benchWeierstrass'           "BN256"           BN256.gA           BN256.gJ           BN256.gP+  , benchWeierstrass'           "BN384"           BN384.gA           BN384.gJ           BN384.gP+  , benchWeierstrass'           "BN462"           BN462.gA           BN462.gJ           BN462.gP+  , benchWeierstrass'          "BN462T"          BN462T.gA          BN462T.gJ          BN462T.gP+  , benchWeierstrass'           "BN512"           BN512.gA           BN512.gJ           BN512.gP+  , benchWeierstrass' "BrainpoolP160R1" BrainpoolP160R1.gA BrainpoolP160R1.gJ BrainpoolP160R1.gP+  , benchWeierstrass' "BrainpoolP160T1" BrainpoolP160T1.gA BrainpoolP160T1.gJ BrainpoolP160T1.gP+  , benchWeierstrass' "BrainpoolP192R1" BrainpoolP192R1.gA BrainpoolP192R1.gJ BrainpoolP192R1.gP+  , benchWeierstrass' "BrainpoolP192T1" BrainpoolP192T1.gA BrainpoolP192T1.gJ BrainpoolP192T1.gP+  , benchWeierstrass' "BrainpoolP224R1" BrainpoolP224R1.gA BrainpoolP224R1.gJ BrainpoolP224R1.gP+  , benchWeierstrass' "BrainpoolP224T1" BrainpoolP224T1.gA BrainpoolP224T1.gJ BrainpoolP224T1.gP+  , benchWeierstrass' "BrainpoolP256R1" BrainpoolP256R1.gA BrainpoolP256R1.gJ BrainpoolP256R1.gP+  , benchWeierstrass' "BrainpoolP256T1" BrainpoolP256T1.gA BrainpoolP256T1.gJ BrainpoolP256T1.gP+  , benchWeierstrass' "BrainpoolP320R1" BrainpoolP320R1.gA BrainpoolP320R1.gJ BrainpoolP320R1.gP+  , benchWeierstrass' "BrainpoolP320T1" BrainpoolP320T1.gA BrainpoolP320T1.gJ BrainpoolP320T1.gP+  , benchWeierstrass' "BrainpoolP384R1" BrainpoolP384R1.gA BrainpoolP384R1.gJ BrainpoolP384R1.gP+  , benchWeierstrass' "BrainpoolP384T1" BrainpoolP384T1.gA BrainpoolP384T1.gJ BrainpoolP384T1.gP+  , benchWeierstrass' "BrainpoolP512R1" BrainpoolP512R1.gA BrainpoolP512R1.gJ BrainpoolP512R1.gP+  , benchWeierstrass' "BrainpoolP512T1" BrainpoolP512T1.gA BrainpoolP512T1.gJ BrainpoolP512T1.gP+  , benchWeierstrass'       "SECP112R1"       SECP112R1.gA       SECP112R1.gJ       SECP112R1.gP+  , benchWeierstrass'       "SECP112R2"       SECP112R2.gA       SECP112R2.gJ       SECP112R2.gP+  , benchWeierstrass'       "SECP128R1"       SECP128R1.gA       SECP128R1.gJ       SECP128R1.gP+  , benchWeierstrass'       "SECP128R2"       SECP128R2.gA       SECP128R2.gJ       SECP128R2.gP+  , benchWeierstrass'       "SECP160K1"       SECP160K1.gA       SECP160K1.gJ       SECP160K1.gP+  , benchWeierstrass'       "SECP160R1"       SECP160R1.gA       SECP160R1.gJ       SECP160R1.gP+  , benchWeierstrass'       "SECP160R2"       SECP160R2.gA       SECP160R2.gJ       SECP160R2.gP+  , benchWeierstrass'       "SECP192K1"       SECP192K1.gA       SECP192K1.gJ       SECP192K1.gP+  , benchWeierstrass'       "SECP192R1"       SECP192R1.gA       SECP192R1.gJ       SECP192R1.gP+  , benchWeierstrass'       "SECP224K1"       SECP224K1.gA       SECP224K1.gJ       SECP224K1.gP+  , benchWeierstrass'       "SECP224R1"       SECP224R1.gA       SECP224R1.gJ       SECP224R1.gP+  , benchWeierstrass'       "SECP256K1"       SECP256K1.gA       SECP256K1.gJ       SECP256K1.gP+  , benchWeierstrass'       "SECP256R1"       SECP256R1.gA       SECP256R1.gJ       SECP256R1.gP+  , benchWeierstrass'       "SECP384R1"       SECP384R1.gA       SECP384R1.gJ       SECP384R1.gP+  , benchWeierstrass'       "SECP521R1"       SECP521R1.gA       SECP521R1.gJ       SECP521R1.gP+  ]+  where+    benchWeierstrass' curve affine jacobian projective = bgroup curve+      [ benchmark "Affine" affine+      , benchmark "Jacobian" jacobian+      , benchmark "Projective" projective+      ]
+ bench/Main.hs view
@@ -0,0 +1,14 @@+module Main where++import Protolude++import Criterion.Main++import Bench.Binary+import Bench.Edwards+import Bench.Montgomery+import Bench.Weierstrass++main :: IO ()+main = defaultMain+  [benchBinary, benchEdwards, benchMontgomery, benchWeierstrass]
− benchmarks/BinaryBenchmarks.hs
@@ -1,50 +0,0 @@-module BinaryBenchmarks where--import Criterion.Main-import qualified Curve.Binary.SECT113R1 as SECT113R1-import qualified Curve.Binary.SECT113R2 as SECT113R2-import qualified Curve.Binary.SECT131R1 as SECT131R1-import qualified Curve.Binary.SECT131R2 as SECT131R2-import qualified Curve.Binary.SECT163K1 as SECT163K1-import qualified Curve.Binary.SECT163R1 as SECT163R1-import qualified Curve.Binary.SECT163R2 as SECT163R2-import qualified Curve.Binary.SECT193R1 as SECT193R1-import qualified Curve.Binary.SECT193R2 as SECT193R2-import qualified Curve.Binary.SECT233K1 as SECT233K1-import qualified Curve.Binary.SECT233R1 as SECT233R1-import qualified Curve.Binary.SECT239K1 as SECT239K1-import qualified Curve.Binary.SECT283K1 as SECT283K1-import qualified Curve.Binary.SECT283R1 as SECT283R1-import qualified Curve.Binary.SECT409K1 as SECT409K1-import qualified Curve.Binary.SECT409R1 as SECT409R1-import qualified Curve.Binary.SECT571K1 as SECT571K1-import qualified Curve.Binary.SECT571R1 as SECT571R1--import GroupBenchmarks--benchmarkBinary :: Benchmark-benchmarkBinary = bgroup "Binary"-  [ benchmarkBinary' "SECT113R1" SECT113R1.gA SECT113R1.gP-  , benchmarkBinary' "SECT113R2" SECT113R2.gA SECT113R2.gP-  , benchmarkBinary' "SECT131R1" SECT131R1.gA SECT131R1.gP-  , benchmarkBinary' "SECT131R2" SECT131R2.gA SECT131R2.gP-  , benchmarkBinary' "SECT163K1" SECT163K1.gA SECT163K1.gP-  , benchmarkBinary' "SECT163R1" SECT163R1.gA SECT163R1.gP-  , benchmarkBinary' "SECT163R2" SECT163R2.gA SECT163R2.gP-  , benchmarkBinary' "SECT193R1" SECT193R1.gA SECT193R1.gP-  , benchmarkBinary' "SECT193R2" SECT193R2.gA SECT193R2.gP-  , benchmarkBinary' "SECT233K1" SECT233K1.gA SECT233K1.gP-  , benchmarkBinary' "SECT233R1" SECT233R1.gA SECT233R1.gP-  , benchmarkBinary' "SECT239K1" SECT239K1.gA SECT239K1.gP-  , benchmarkBinary' "SECT283K1" SECT283K1.gA SECT283K1.gP-  , benchmarkBinary' "SECT283R1" SECT283R1.gA SECT283R1.gP-  , benchmarkBinary' "SECT409K1" SECT409K1.gA SECT409K1.gP-  , benchmarkBinary' "SECT409R1" SECT409R1.gA SECT409R1.gP-  , benchmarkBinary' "SECT571K1" SECT571K1.gA SECT571K1.gP-  , benchmarkBinary' "SECT571R1" SECT571R1.gA SECT571R1.gP-  ]-  where-    benchmarkBinary' curve affine projective = bgroup curve-      [ benchmark "Affine" affine-      , benchmark "Projective" projective-      ]
− benchmarks/EdwardsBenchmarks.hs
@@ -1,32 +0,0 @@-module EdwardsBenchmarks where--import Criterion.Main-import qualified Curve.Edwards.Curve1174  as Curve1174-import qualified Curve.Edwards.Curve41417 as Curve41417-import qualified Curve.Edwards.E222       as E222-import qualified Curve.Edwards.E382       as E382-import qualified Curve.Edwards.E521       as E521-import qualified Curve.Edwards.Ed448      as Ed448-import qualified Curve.Edwards.Ed3363     as Ed3363-import qualified Curve.Edwards.Ed25519    as Ed25519-import qualified Curve.Edwards.JubJub     as JubJub--import GroupBenchmarks--benchmarkEdwards :: Benchmark-benchmarkEdwards = bgroup "Edwards"-  [ benchmarkEdwards'  "Curve1174"  Curve1174.gA  Curve1174.gP-  , benchmarkEdwards' "Curve41417" Curve41417.gA Curve41417.gP-  , benchmarkEdwards'       "E222"       E222.gA       E222.gP-  , benchmarkEdwards'       "E382"       E382.gA       E382.gP-  , benchmarkEdwards'       "E521"       E521.gA       E521.gP-  , benchmarkEdwards'      "Ed448"      Ed448.gA      Ed448.gP-  , benchmarkEdwards'     "Ed3363"     Ed3363.gA     Ed3363.gP-  , benchmarkEdwards'    "Ed25519"    Ed25519.gA    Ed25519.gP-  , benchmarkEdwards'     "JubJub"     JubJub.gA     JubJub.gP-  ]-  where-    benchmarkEdwards' curve affine projective = bgroup curve-      [ benchmark "Affine" affine-      , benchmark "Projective" projective-      ]
− benchmarks/FieldBenchmarks.hs
@@ -1,11 +0,0 @@-module FieldBenchmarks where--import Criterion.Main-import qualified Group.Field.BN254TF as BN254TF--import GroupBenchmarks--benchmarkField :: Benchmark-benchmarkField = bgroup "Field"-  [ benchmark "BN254TF" BN254TF._g-  ]
− benchmarks/GroupBenchmarks.hs
@@ -1,8 +0,0 @@-module GroupBenchmarks where--import Criterion.Main-import GHC.Base-import Group--benchmark :: Group g => String -> g -> Benchmark-benchmark = (. whnf (flip mul' 3)) . bench
− benchmarks/Main.hs
@@ -1,15 +0,0 @@-module Main where--import Protolude--import Criterion.Main--import BinaryBenchmarks-import EdwardsBenchmarks-import MontgomeryBenchmarks-import WeierstrassBenchmarks-import FieldBenchmarks--main :: IO ()-main = defaultMain-  [benchmarkBinary, benchmarkEdwards, benchmarkMontgomery, benchmarkWeierstrass, benchmarkField]
− benchmarks/MontgomeryBenchmarks.hs
@@ -1,25 +0,0 @@-module MontgomeryBenchmarks where--import Criterion.Main-import qualified Curve.Montgomery.Curve448    as Curve448-import qualified Curve.Montgomery.Curve25519  as Curve25519-import qualified Curve.Montgomery.Curve383187 as Curve383187-import qualified Curve.Montgomery.M221        as M221-import qualified Curve.Montgomery.M383        as M383-import qualified Curve.Montgomery.M511        as M511--import GroupBenchmarks--benchmarkMontgomery :: Benchmark-benchmarkMontgomery = bgroup "Montgomery"-  [ benchmarkMontgomery'    "Curve448"    Curve448.gA-  , benchmarkMontgomery'  "Curve25519"  Curve25519.gA-  , benchmarkMontgomery' "Curve383187" Curve383187.gA-  , benchmarkMontgomery'        "M221"        M221.gA-  , benchmarkMontgomery'        "M383"        M383.gA-  , benchmarkMontgomery'        "M511"        M511.gA-  ]-  where-    benchmarkMontgomery' curve affine = bgroup curve-      [ benchmark "Affine" affine-      ]
− benchmarks/WeierstrassBenchmarks.hs
@@ -1,109 +0,0 @@-module WeierstrassBenchmarks where--import Criterion.Main-import qualified Curve.Weierstrass.Anomalous       as Anomalous-import qualified Curve.Weierstrass.ANSSIFRP256V1   as ANSSIFRP256V1-import qualified Curve.Weierstrass.BLS12381        as BLS12381-import qualified Curve.Weierstrass.BLS12381T       as BLS12381T-import qualified Curve.Weierstrass.BLS48581        as BLS48581-import qualified Curve.Weierstrass.BLS48581T       as BLS48581T-import qualified Curve.Weierstrass.BN224           as BN224-import qualified Curve.Weierstrass.BN254           as BN254-import qualified Curve.Weierstrass.BN254T          as BN254T-import qualified Curve.Weierstrass.BN254A          as BN254A-import qualified Curve.Weierstrass.BN254AT         as BN254AT-import qualified Curve.Weierstrass.BN254B          as BN254B-import qualified Curve.Weierstrass.BN254BT         as BN254BT-import qualified Curve.Weierstrass.BN256           as BN256-import qualified Curve.Weierstrass.BN384           as BN384-import qualified Curve.Weierstrass.BN462           as BN462-import qualified Curve.Weierstrass.BN462T          as BN462T-import qualified Curve.Weierstrass.BN512           as BN512-import qualified Curve.Weierstrass.BrainpoolP160R1 as BrainpoolP160R1-import qualified Curve.Weierstrass.BrainpoolP160T1 as BrainpoolP160T1-import qualified Curve.Weierstrass.BrainpoolP192R1 as BrainpoolP192R1-import qualified Curve.Weierstrass.BrainpoolP192T1 as BrainpoolP192T1-import qualified Curve.Weierstrass.BrainpoolP224R1 as BrainpoolP224R1-import qualified Curve.Weierstrass.BrainpoolP224T1 as BrainpoolP224T1-import qualified Curve.Weierstrass.BrainpoolP256R1 as BrainpoolP256R1-import qualified Curve.Weierstrass.BrainpoolP256T1 as BrainpoolP256T1-import qualified Curve.Weierstrass.BrainpoolP320R1 as BrainpoolP320R1-import qualified Curve.Weierstrass.BrainpoolP320T1 as BrainpoolP320T1-import qualified Curve.Weierstrass.BrainpoolP384R1 as BrainpoolP384R1-import qualified Curve.Weierstrass.BrainpoolP384T1 as BrainpoolP384T1-import qualified Curve.Weierstrass.BrainpoolP512R1 as BrainpoolP512R1-import qualified Curve.Weierstrass.BrainpoolP512T1 as BrainpoolP512T1-import qualified Curve.Weierstrass.SECP112R1       as SECP112R1-import qualified Curve.Weierstrass.SECP112R2       as SECP112R2-import qualified Curve.Weierstrass.SECP128R1       as SECP128R1-import qualified Curve.Weierstrass.SECP128R2       as SECP128R2-import qualified Curve.Weierstrass.SECP160K1       as SECP160K1-import qualified Curve.Weierstrass.SECP160R1       as SECP160R1-import qualified Curve.Weierstrass.SECP160R2       as SECP160R2-import qualified Curve.Weierstrass.SECP192K1       as SECP192K1-import qualified Curve.Weierstrass.SECP192R1       as SECP192R1-import qualified Curve.Weierstrass.SECP224K1       as SECP224K1-import qualified Curve.Weierstrass.SECP224R1       as SECP224R1-import qualified Curve.Weierstrass.SECP256K1       as SECP256K1-import qualified Curve.Weierstrass.SECP256R1       as SECP256R1-import qualified Curve.Weierstrass.SECP384R1       as SECP384R1-import qualified Curve.Weierstrass.SECP521R1       as SECP521R1--import GroupBenchmarks--benchmarkWeierstrass :: Benchmark-benchmarkWeierstrass = bgroup "Weierstrass"-  [ benchmarkWeierstrass'       "Anomalous"       Anomalous.gA       Anomalous.gJ       Anomalous.gP-  , benchmarkWeierstrass'   "ANSSIFRP256V1"   ANSSIFRP256V1.gA   ANSSIFRP256V1.gJ   ANSSIFRP256V1.gP-  , benchmarkWeierstrass'        "BLS12381"        BLS12381.gA        BLS12381.gJ        BLS12381.gP-  , benchmarkWeierstrass'       "BLS12381T"       BLS12381T.gA       BLS12381T.gJ       BLS12381T.gP-  , benchmarkWeierstrass'        "BLS48581"        BLS48581.gA        BLS48581.gJ        BLS48581.gP-  , benchmarkWeierstrass'       "BLS48581T"       BLS48581T.gA       BLS48581T.gJ       BLS48581T.gP-  , benchmarkWeierstrass'           "BN224"           BN224.gA           BN224.gJ           BN224.gP-  , benchmarkWeierstrass'           "BN254"           BN254.gA           BN254.gJ           BN254.gP-  , benchmarkWeierstrass'          "BN254T"          BN254T.gA          BN254T.gJ          BN254T.gP-  , benchmarkWeierstrass'          "BN254A"          BN254A.gA          BN254A.gJ          BN254A.gP-  , benchmarkWeierstrass'         "BN254AT"         BN254AT.gA         BN254AT.gJ         BN254AT.gP-  , benchmarkWeierstrass'          "BN254B"          BN254B.gA          BN254B.gJ          BN254B.gP-  , benchmarkWeierstrass'         "BN254BT"         BN254BT.gA         BN254BT.gJ         BN254BT.gP-  , benchmarkWeierstrass'           "BN256"           BN256.gA           BN256.gJ           BN256.gP-  , benchmarkWeierstrass'           "BN384"           BN384.gA           BN384.gJ           BN384.gP-  , benchmarkWeierstrass'           "BN462"           BN462.gA           BN462.gJ           BN462.gP-  , benchmarkWeierstrass'          "BN462T"          BN462T.gA          BN462T.gJ          BN462T.gP-  , benchmarkWeierstrass'           "BN512"           BN512.gA           BN512.gJ           BN512.gP-  , benchmarkWeierstrass' "BrainpoolP160R1" BrainpoolP160R1.gA BrainpoolP160R1.gJ BrainpoolP160R1.gP-  , benchmarkWeierstrass' "BrainpoolP160T1" BrainpoolP160T1.gA BrainpoolP160T1.gJ BrainpoolP160T1.gP-  , benchmarkWeierstrass' "BrainpoolP192R1" BrainpoolP192R1.gA BrainpoolP192R1.gJ BrainpoolP192R1.gP-  , benchmarkWeierstrass' "BrainpoolP192T1" BrainpoolP192T1.gA BrainpoolP192T1.gJ BrainpoolP192T1.gP-  , benchmarkWeierstrass' "BrainpoolP224R1" BrainpoolP224R1.gA BrainpoolP224R1.gJ BrainpoolP224R1.gP-  , benchmarkWeierstrass' "BrainpoolP224T1" BrainpoolP224T1.gA BrainpoolP224T1.gJ BrainpoolP224T1.gP-  , benchmarkWeierstrass' "BrainpoolP256R1" BrainpoolP256R1.gA BrainpoolP256R1.gJ BrainpoolP256R1.gP-  , benchmarkWeierstrass' "BrainpoolP256T1" BrainpoolP256T1.gA BrainpoolP256T1.gJ BrainpoolP256T1.gP-  , benchmarkWeierstrass' "BrainpoolP320R1" BrainpoolP320R1.gA BrainpoolP320R1.gJ BrainpoolP320R1.gP-  , benchmarkWeierstrass' "BrainpoolP320T1" BrainpoolP320T1.gA BrainpoolP320T1.gJ BrainpoolP320T1.gP-  , benchmarkWeierstrass' "BrainpoolP384R1" BrainpoolP384R1.gA BrainpoolP384R1.gJ BrainpoolP384R1.gP-  , benchmarkWeierstrass' "BrainpoolP384T1" BrainpoolP384T1.gA BrainpoolP384T1.gJ BrainpoolP384T1.gP-  , benchmarkWeierstrass' "BrainpoolP512R1" BrainpoolP512R1.gA BrainpoolP512R1.gJ BrainpoolP512R1.gP-  , benchmarkWeierstrass' "BrainpoolP512T1" BrainpoolP512T1.gA BrainpoolP512T1.gJ BrainpoolP512T1.gP-  , benchmarkWeierstrass'       "SECP112R1"       SECP112R1.gA       SECP112R1.gJ       SECP112R1.gP-  , benchmarkWeierstrass'       "SECP112R2"       SECP112R2.gA       SECP112R2.gJ       SECP112R2.gP-  , benchmarkWeierstrass'       "SECP128R1"       SECP128R1.gA       SECP128R1.gJ       SECP128R1.gP-  , benchmarkWeierstrass'       "SECP128R2"       SECP128R2.gA       SECP128R2.gJ       SECP128R2.gP-  , benchmarkWeierstrass'       "SECP160K1"       SECP160K1.gA       SECP160K1.gJ       SECP160K1.gP-  , benchmarkWeierstrass'       "SECP160R1"       SECP160R1.gA       SECP160R1.gJ       SECP160R1.gP-  , benchmarkWeierstrass'       "SECP160R2"       SECP160R2.gA       SECP160R2.gJ       SECP160R2.gP-  , benchmarkWeierstrass'       "SECP192K1"       SECP192K1.gA       SECP192K1.gJ       SECP192K1.gP-  , benchmarkWeierstrass'       "SECP192R1"       SECP192R1.gA       SECP192R1.gJ       SECP192R1.gP-  , benchmarkWeierstrass'       "SECP224K1"       SECP224K1.gA       SECP224K1.gJ       SECP224K1.gP-  , benchmarkWeierstrass'       "SECP224R1"       SECP224R1.gA       SECP224R1.gJ       SECP224R1.gP-  , benchmarkWeierstrass'       "SECP256K1"       SECP256K1.gA       SECP256K1.gJ       SECP256K1.gP-  , benchmarkWeierstrass'       "SECP256R1"       SECP256R1.gA       SECP256R1.gJ       SECP256R1.gP-  , benchmarkWeierstrass'       "SECP384R1"       SECP384R1.gA       SECP384R1.gJ       SECP384R1.gP-  , benchmarkWeierstrass'       "SECP521R1"       SECP521R1.gA       SECP521R1.gJ       SECP521R1.gP-  ]-  where-    benchmarkWeierstrass' curve affine jacobian projective = bgroup curve-      [ benchmark "Affine" affine-      , benchmark "Jacobian" jacobian-      , benchmark "Projective" projective-      ]
elliptic-curve.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: c5865759f58bc792d7eb06624580c9d93023c42e4ec63b310c5a6d34c01e81ae+-- hash: b795e74bcfe34d3cb0d57160b2daa7b414f62bb8c56ee349b497535e99cc2aba  name:           elliptic-curve-version:        0.2.2+version:        0.3.0 synopsis:       Elliptic curve library description:    An extensible library of elliptic curves used in cryptography research category:       Cryptography@@ -27,94 +27,95 @@  library   exposed-modules:-      Curve-      Curve.Binary-      Curve.Binary.SECT113R1-      Curve.Binary.SECT113R2-      Curve.Binary.SECT131R1-      Curve.Binary.SECT131R2-      Curve.Binary.SECT163K1-      Curve.Binary.SECT163R1-      Curve.Binary.SECT163R2-      Curve.Binary.SECT193R1-      Curve.Binary.SECT193R2-      Curve.Binary.SECT233K1-      Curve.Binary.SECT233R1-      Curve.Binary.SECT239K1-      Curve.Binary.SECT283K1-      Curve.Binary.SECT283R1-      Curve.Binary.SECT409K1-      Curve.Binary.SECT409R1-      Curve.Binary.SECT571K1-      Curve.Binary.SECT571R1-      Curve.Edwards-      Curve.Edwards.Curve1174-      Curve.Edwards.Curve41417-      Curve.Edwards.E222-      Curve.Edwards.E382-      Curve.Edwards.E521-      Curve.Edwards.Ed448-      Curve.Edwards.Ed3363-      Curve.Edwards.Ed25519-      Curve.Edwards.JubJub-      Curve.Montgomery-      Curve.Montgomery.Curve448-      Curve.Montgomery.Curve25519-      Curve.Montgomery.Curve383187-      Curve.Montgomery.M221-      Curve.Montgomery.M383-      Curve.Montgomery.M511-      Curve.Weierstrass-      Curve.Weierstrass.Anomalous-      Curve.Weierstrass.ANSSIFRP256V1-      Curve.Weierstrass.BLS12381-      Curve.Weierstrass.BLS12381T-      Curve.Weierstrass.BLS48581-      Curve.Weierstrass.BLS48581T-      Curve.Weierstrass.BN224-      Curve.Weierstrass.BN254-      Curve.Weierstrass.BN254T-      Curve.Weierstrass.BN254A-      Curve.Weierstrass.BN254AT-      Curve.Weierstrass.BN254B-      Curve.Weierstrass.BN254BT-      Curve.Weierstrass.BN256-      Curve.Weierstrass.BN384-      Curve.Weierstrass.BN462-      Curve.Weierstrass.BN462T-      Curve.Weierstrass.BN512-      Curve.Weierstrass.SECP112R1-      Curve.Weierstrass.SECP112R2-      Curve.Weierstrass.SECP128R1-      Curve.Weierstrass.SECP128R2-      Curve.Weierstrass.SECP160K1-      Curve.Weierstrass.SECP160R1-      Curve.Weierstrass.SECP160R2-      Curve.Weierstrass.SECP192K1-      Curve.Weierstrass.SECP192R1-      Curve.Weierstrass.SECP224K1-      Curve.Weierstrass.SECP224R1-      Curve.Weierstrass.SECP256K1-      Curve.Weierstrass.SECP256R1-      Curve.Weierstrass.SECP384R1-      Curve.Weierstrass.SECP521R1-      Curve.Weierstrass.BrainpoolP160R1-      Curve.Weierstrass.BrainpoolP160T1-      Curve.Weierstrass.BrainpoolP192R1-      Curve.Weierstrass.BrainpoolP192T1-      Curve.Weierstrass.BrainpoolP224R1-      Curve.Weierstrass.BrainpoolP224T1-      Curve.Weierstrass.BrainpoolP256R1-      Curve.Weierstrass.BrainpoolP256T1-      Curve.Weierstrass.BrainpoolP320R1-      Curve.Weierstrass.BrainpoolP320T1-      Curve.Weierstrass.BrainpoolP384R1-      Curve.Weierstrass.BrainpoolP384T1-      Curve.Weierstrass.BrainpoolP512R1-      Curve.Weierstrass.BrainpoolP512T1-      Group-      Group.Field-      Group.Field.BN254TF+      Data.Curve+      Data.Curve.Binary+      Data.Curve.Binary.SECT113R1+      Data.Curve.Binary.SECT113R2+      Data.Curve.Binary.SECT131R1+      Data.Curve.Binary.SECT131R2+      Data.Curve.Binary.SECT163K1+      Data.Curve.Binary.SECT163R1+      Data.Curve.Binary.SECT163R2+      Data.Curve.Binary.SECT193R1+      Data.Curve.Binary.SECT193R2+      Data.Curve.Binary.SECT233K1+      Data.Curve.Binary.SECT233R1+      Data.Curve.Binary.SECT239K1+      Data.Curve.Binary.SECT283K1+      Data.Curve.Binary.SECT283R1+      Data.Curve.Binary.SECT409K1+      Data.Curve.Binary.SECT409R1+      Data.Curve.Binary.SECT571K1+      Data.Curve.Binary.SECT571R1+      Data.Curve.Edwards+      Data.Curve.Edwards.Curve1174+      Data.Curve.Edwards.Curve41417+      Data.Curve.Edwards.E222+      Data.Curve.Edwards.E382+      Data.Curve.Edwards.E521+      Data.Curve.Edwards.Ed448+      Data.Curve.Edwards.Ed3363+      Data.Curve.Edwards.Ed25519+      Data.Curve.Edwards.JubJub+      Data.Curve.Montgomery+      Data.Curve.Montgomery.Curve448+      Data.Curve.Montgomery.Curve25519+      Data.Curve.Montgomery.Curve383187+      Data.Curve.Montgomery.M221+      Data.Curve.Montgomery.M383+      Data.Curve.Montgomery.M511+      Data.Curve.Weierstrass+      Data.Curve.Weierstrass.Anomalous+      Data.Curve.Weierstrass.ANSSIFRP256V1+      Data.Curve.Weierstrass.BLS12381+      Data.Curve.Weierstrass.BLS12381T+      Data.Curve.Weierstrass.BLS48581+      Data.Curve.Weierstrass.BLS48581T+      Data.Curve.Weierstrass.BN224+      Data.Curve.Weierstrass.BN254+      Data.Curve.Weierstrass.BN254T+      Data.Curve.Weierstrass.BN254A+      Data.Curve.Weierstrass.BN254AT+      Data.Curve.Weierstrass.BN254B+      Data.Curve.Weierstrass.BN254BT+      Data.Curve.Weierstrass.BN254C+      Data.Curve.Weierstrass.BN254CT+      Data.Curve.Weierstrass.BN254D+      Data.Curve.Weierstrass.BN254DT+      Data.Curve.Weierstrass.BN256+      Data.Curve.Weierstrass.BN384+      Data.Curve.Weierstrass.BN462+      Data.Curve.Weierstrass.BN462T+      Data.Curve.Weierstrass.BN512+      Data.Curve.Weierstrass.SECP112R1+      Data.Curve.Weierstrass.SECP112R2+      Data.Curve.Weierstrass.SECP128R1+      Data.Curve.Weierstrass.SECP128R2+      Data.Curve.Weierstrass.SECP160K1+      Data.Curve.Weierstrass.SECP160R1+      Data.Curve.Weierstrass.SECP160R2+      Data.Curve.Weierstrass.SECP192K1+      Data.Curve.Weierstrass.SECP192R1+      Data.Curve.Weierstrass.SECP224K1+      Data.Curve.Weierstrass.SECP224R1+      Data.Curve.Weierstrass.SECP256K1+      Data.Curve.Weierstrass.SECP256R1+      Data.Curve.Weierstrass.SECP384R1+      Data.Curve.Weierstrass.SECP521R1+      Data.Curve.Weierstrass.BrainpoolP160R1+      Data.Curve.Weierstrass.BrainpoolP160T1+      Data.Curve.Weierstrass.BrainpoolP192R1+      Data.Curve.Weierstrass.BrainpoolP192T1+      Data.Curve.Weierstrass.BrainpoolP224R1+      Data.Curve.Weierstrass.BrainpoolP224T1+      Data.Curve.Weierstrass.BrainpoolP256R1+      Data.Curve.Weierstrass.BrainpoolP256T1+      Data.Curve.Weierstrass.BrainpoolP320R1+      Data.Curve.Weierstrass.BrainpoolP320T1+      Data.Curve.Weierstrass.BrainpoolP384R1+      Data.Curve.Weierstrass.BrainpoolP384T1+      Data.Curve.Weierstrass.BrainpoolP512R1+      Data.Curve.Weierstrass.BrainpoolP512T1   other-modules:       Generate.Binary.Curve       Generate.Binary.Generate@@ -140,13 +141,14 @@   hs-source-dirs:       src       generate-  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses PatternSynonyms PolyKinds TypeFamilyDependencies-  ghc-options: -Wall+  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses OverloadedLists PatternSynonyms PolyKinds TypeFamilyDependencies+  ghc-options: -freverse-errors -Wall   build-depends:       MonadRandom     , base >=4.10 && <5-    , galois-field >=0.4 && <0.5-    , protolude+    , galois-field >=1 && <2+    , groups+    , protolude >=0.2 && <0.3     , tasty-quickcheck     , text     , wl-pprint-text@@ -156,112 +158,24 @@   type: exitcode-stdio-1.0   main-is: Main.hs   other-modules:-      BinaryTests-      EdwardsTests-      FieldTests-      GroupTests-      MontgomeryTests-      WeierstrassTests-      Curve-      Curve.Binary-      Curve.Binary.SECT113R1-      Curve.Binary.SECT113R2-      Curve.Binary.SECT131R1-      Curve.Binary.SECT131R2-      Curve.Binary.SECT163K1-      Curve.Binary.SECT163R1-      Curve.Binary.SECT163R2-      Curve.Binary.SECT193R1-      Curve.Binary.SECT193R2-      Curve.Binary.SECT233K1-      Curve.Binary.SECT233R1-      Curve.Binary.SECT239K1-      Curve.Binary.SECT283K1-      Curve.Binary.SECT283R1-      Curve.Binary.SECT409K1-      Curve.Binary.SECT409R1-      Curve.Binary.SECT571K1-      Curve.Binary.SECT571R1-      Curve.Edwards-      Curve.Edwards.Curve1174-      Curve.Edwards.Curve41417-      Curve.Edwards.E222-      Curve.Edwards.E382-      Curve.Edwards.E521-      Curve.Edwards.Ed25519-      Curve.Edwards.Ed3363-      Curve.Edwards.Ed448-      Curve.Edwards.JubJub-      Curve.Montgomery-      Curve.Montgomery.Curve25519-      Curve.Montgomery.Curve383187-      Curve.Montgomery.Curve448-      Curve.Montgomery.M221-      Curve.Montgomery.M383-      Curve.Montgomery.M511-      Curve.Weierstrass-      Curve.Weierstrass.Anomalous-      Curve.Weierstrass.ANSSIFRP256V1-      Curve.Weierstrass.BLS12381-      Curve.Weierstrass.BLS12381T-      Curve.Weierstrass.BLS48581-      Curve.Weierstrass.BLS48581T-      Curve.Weierstrass.BN224-      Curve.Weierstrass.BN254-      Curve.Weierstrass.BN254A-      Curve.Weierstrass.BN254AT-      Curve.Weierstrass.BN254B-      Curve.Weierstrass.BN254BT-      Curve.Weierstrass.BN254T-      Curve.Weierstrass.BN256-      Curve.Weierstrass.BN384-      Curve.Weierstrass.BN462-      Curve.Weierstrass.BN462T-      Curve.Weierstrass.BN512-      Curve.Weierstrass.BrainpoolP160R1-      Curve.Weierstrass.BrainpoolP160T1-      Curve.Weierstrass.BrainpoolP192R1-      Curve.Weierstrass.BrainpoolP192T1-      Curve.Weierstrass.BrainpoolP224R1-      Curve.Weierstrass.BrainpoolP224T1-      Curve.Weierstrass.BrainpoolP256R1-      Curve.Weierstrass.BrainpoolP256T1-      Curve.Weierstrass.BrainpoolP320R1-      Curve.Weierstrass.BrainpoolP320T1-      Curve.Weierstrass.BrainpoolP384R1-      Curve.Weierstrass.BrainpoolP384T1-      Curve.Weierstrass.BrainpoolP512R1-      Curve.Weierstrass.BrainpoolP512T1-      Curve.Weierstrass.SECP112R1-      Curve.Weierstrass.SECP112R2-      Curve.Weierstrass.SECP128R1-      Curve.Weierstrass.SECP128R2-      Curve.Weierstrass.SECP160K1-      Curve.Weierstrass.SECP160R1-      Curve.Weierstrass.SECP160R2-      Curve.Weierstrass.SECP192K1-      Curve.Weierstrass.SECP192R1-      Curve.Weierstrass.SECP224K1-      Curve.Weierstrass.SECP224R1-      Curve.Weierstrass.SECP256K1-      Curve.Weierstrass.SECP256R1-      Curve.Weierstrass.SECP384R1-      Curve.Weierstrass.SECP521R1-      Group-      Group.Field-      Group.Field.BN254TF+      Test.Binary+      Test.Curve+      Test.Edwards+      Test.Field+      Test.Montgomery+      Test.Weierstrass       Paths_elliptic_curve   hs-source-dirs:-      tests-      src-  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses PatternSynonyms PolyKinds TypeFamilyDependencies-  ghc-options: -Wall -main-is Main+      test+  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses OverloadedLists PatternSynonyms PolyKinds TypeFamilyDependencies+  ghc-options: -freverse-errors -Wall -main-is Main   build-depends:       MonadRandom-    , arithmoi     , base >=4.10 && <5-    , galois-field >=0.4 && <0.5-    , protolude+    , elliptic-curve+    , galois-field >=1 && <2+    , groups+    , protolude >=0.2 && <0.3     , tasty     , tasty-hunit     , tasty-quickcheck@@ -273,112 +187,24 @@   type: exitcode-stdio-1.0   main-is: Main.hs   other-modules:-      BinaryBenchmarks-      EdwardsBenchmarks-      FieldBenchmarks-      GroupBenchmarks-      MontgomeryBenchmarks-      WeierstrassBenchmarks-      Curve-      Curve.Binary-      Curve.Binary.SECT113R1-      Curve.Binary.SECT113R2-      Curve.Binary.SECT131R1-      Curve.Binary.SECT131R2-      Curve.Binary.SECT163K1-      Curve.Binary.SECT163R1-      Curve.Binary.SECT163R2-      Curve.Binary.SECT193R1-      Curve.Binary.SECT193R2-      Curve.Binary.SECT233K1-      Curve.Binary.SECT233R1-      Curve.Binary.SECT239K1-      Curve.Binary.SECT283K1-      Curve.Binary.SECT283R1-      Curve.Binary.SECT409K1-      Curve.Binary.SECT409R1-      Curve.Binary.SECT571K1-      Curve.Binary.SECT571R1-      Curve.Edwards-      Curve.Edwards.Curve1174-      Curve.Edwards.Curve41417-      Curve.Edwards.E222-      Curve.Edwards.E382-      Curve.Edwards.E521-      Curve.Edwards.Ed25519-      Curve.Edwards.Ed3363-      Curve.Edwards.Ed448-      Curve.Edwards.JubJub-      Curve.Montgomery-      Curve.Montgomery.Curve25519-      Curve.Montgomery.Curve383187-      Curve.Montgomery.Curve448-      Curve.Montgomery.M221-      Curve.Montgomery.M383-      Curve.Montgomery.M511-      Curve.Weierstrass-      Curve.Weierstrass.Anomalous-      Curve.Weierstrass.ANSSIFRP256V1-      Curve.Weierstrass.BLS12381-      Curve.Weierstrass.BLS12381T-      Curve.Weierstrass.BLS48581-      Curve.Weierstrass.BLS48581T-      Curve.Weierstrass.BN224-      Curve.Weierstrass.BN254-      Curve.Weierstrass.BN254A-      Curve.Weierstrass.BN254AT-      Curve.Weierstrass.BN254B-      Curve.Weierstrass.BN254BT-      Curve.Weierstrass.BN254T-      Curve.Weierstrass.BN256-      Curve.Weierstrass.BN384-      Curve.Weierstrass.BN462-      Curve.Weierstrass.BN462T-      Curve.Weierstrass.BN512-      Curve.Weierstrass.BrainpoolP160R1-      Curve.Weierstrass.BrainpoolP160T1-      Curve.Weierstrass.BrainpoolP192R1-      Curve.Weierstrass.BrainpoolP192T1-      Curve.Weierstrass.BrainpoolP224R1-      Curve.Weierstrass.BrainpoolP224T1-      Curve.Weierstrass.BrainpoolP256R1-      Curve.Weierstrass.BrainpoolP256T1-      Curve.Weierstrass.BrainpoolP320R1-      Curve.Weierstrass.BrainpoolP320T1-      Curve.Weierstrass.BrainpoolP384R1-      Curve.Weierstrass.BrainpoolP384T1-      Curve.Weierstrass.BrainpoolP512R1-      Curve.Weierstrass.BrainpoolP512T1-      Curve.Weierstrass.SECP112R1-      Curve.Weierstrass.SECP112R2-      Curve.Weierstrass.SECP128R1-      Curve.Weierstrass.SECP128R2-      Curve.Weierstrass.SECP160K1-      Curve.Weierstrass.SECP160R1-      Curve.Weierstrass.SECP160R2-      Curve.Weierstrass.SECP192K1-      Curve.Weierstrass.SECP192R1-      Curve.Weierstrass.SECP224K1-      Curve.Weierstrass.SECP224R1-      Curve.Weierstrass.SECP256K1-      Curve.Weierstrass.SECP256R1-      Curve.Weierstrass.SECP384R1-      Curve.Weierstrass.SECP521R1-      Group-      Group.Field-      Group.Field.BN254TF+      Bench.Binary+      Bench.Curve+      Bench.Edwards+      Bench.Montgomery+      Bench.Weierstrass       Paths_elliptic_curve   hs-source-dirs:-      benchmarks-      src-  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses PatternSynonyms PolyKinds TypeFamilyDependencies-  ghc-options: -Wall -main-is Main+      bench+  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses OverloadedLists PatternSynonyms PolyKinds TypeFamilyDependencies+  ghc-options: -freverse-errors -Wall -main-is Main   build-depends:       MonadRandom     , base >=4.10 && <5     , criterion-    , galois-field >=0.4 && <0.5-    , protolude+    , elliptic-curve+    , galois-field >=1 && <2+    , groups+    , protolude >=0.2 && <0.3     , tasty-quickcheck     , text     , wl-pprint-text
generate/Generate/Binary/Curve.hs view
@@ -14,34 +14,29 @@ -- Curve ------------------------------------------------------------------------------- -prettyImports :: Types -> Doc-prettyImports Types{..}-  =    "module Curve.Binary." <> pretty curve+prettyImports :: Text -> Types -> Doc+prettyImports name Types{..}+  =    "module Data.Curve.Binary." <> pretty name   <$$> indent 2-    (    "( module Curve.Binary"-    <$$> ", module Curve.Binary." <> pretty curve+    (    "( module Data.Curve.Binary"     <$$> ", Point(..)"+    <$$> "-- *" <+> pretty curve <+> "curve"+    <$$> ", module Data.Curve.Binary." <> pretty name     <$$> ") where"     )   <>   prettyBreak-  <$$> prettyImport field+  <$$> prettyImport   <>   prettyBreak-  <$$> "import Curve.Binary"-  <$$> maybe mempty pretty imports+  <$$> "import Data.Curve.Binary"+  <$$> if curve == name then mempty else "import Data.Curve.Binary."+  <>   pretty curve <+> "(" <> pretty curve <> ", F2m, Fr)" -prettyTypes :: Types -> Doc-prettyTypes Types{..}+prettyTypes :: Types -> Parameters -> Doc+prettyTypes Types{..} Parameters{..}   =    prettySection "Types"-  <$$> prettyDocumentation curve'-  <$$> "data" <+> pretty curve-  <>   prettyBreak-  <$$> prettyDocumentation ("Field of points of" <+> curve')-  <$$> prettyType field-  <>   prettyBreak-  <$$> prettyDocumentation ("Field of coefficients of" <+> curve')-  <$$> prettyType field'+  <$$> prettyType curve field p r   <>   prettyBreak-  <$$> prettyDocumentation (curve' <+> "is a binary curve")+  <$$> prettyComment (curve' <+> "is a binary curve")   <$$> "instance Curve 'Binary c" <+> pretty curve <+> prettyField field   <+>  "Fr => BCurve c" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2@@ -55,16 +50,12 @@     <$$> prettyInline "p_"     <$$> "r_ = const _r"     <$$> prettyInline "r_"-    <$$> "x_ = const _x"-    <$$> prettyInline "x_"-    <$$> "y_ = const _y"-    <$$> prettyInline "y_"     )   <>   prettyBreak   <$$> prettyDocumentation ("Affine" <+> curve' <+> "point")   <$$> "type PA = BAPoint" <+> pretty curve <+> prettyField field <+> "Fr"   <>   prettyBreak-  <$$> prettyDocumentation ("Affine" <+> curve' <+> "is a binary affine curve")+  <$$> prettyComment ("Affine" <+> curve' <+> "is a binary affine curve")   <$$> "instance BACurve" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2     (    "gA_ = gA"@@ -74,7 +65,7 @@   <$$> prettyDocumentation ("Projective" <+> pretty curve <+> "point")   <$$> "type PP = BPPoint" <+> pretty curve <+> prettyField field <+> "Fr"   <>   prettyBreak-  <$$> prettyDocumentation ("Projective" <+> curve' <+> "is a binary projective curve")+  <$$> prettyComment ("Projective" <+> curve' <+> "is a binary projective curve")   <$$> "instance BPCurve" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2     (    "gP_ = gP"@@ -98,18 +89,18 @@   <$$> prettyInline "_b"   <>   prettyBreak   <$$> prettyDocumentation ("Cofactor of" <+> curve')-  <$$> "_h :: Integer"-  <$$> "_h =" <+> prettyInteger h+  <$$> "_h :: Natural"+  <$$> "_h =" <+> prettyNatural h   <$$> prettyInline "_h"   <>   prettyBreak   <$$> prettyDocumentation ("Polynomial of" <+> curve')-  <$$> "_p :: Integer"-  <$$> "_p =" <+> prettyInteger p+  <$$> "_p :: Natural"+  <$$> "_p =" <+> prettyNatural p   <$$> prettyInline "_p"   <>   prettyBreak   <$$> prettyDocumentation ("Order of" <+> curve')-  <$$> "_r :: Integer"-  <$$> "_r =" <+> prettyInteger r+  <$$> "_r :: Natural"+  <$$> "_r =" <+> prettyNatural r   <$$> prettyInline "_r"   <>   prettyBreak   <$$> prettyDocumentation ("Coordinate @X@ of" <+> curve')@@ -136,10 +127,10 @@     curve' = pretty curve <+> "curve"  prettyCurve :: Curve -> Doc-prettyCurve (Curve types parameters)-  =    prettyImports types+prettyCurve (Curve name types parameters)+  =    prettyImports name types   <>   prettyBreak-  <$$> prettyTypes types+  <$$> prettyTypes types parameters   <>   prettyBreak   <$$> prettyParameters types parameters   <>   prettyBreak
generate/Generate/Binary/Generate.hs view
@@ -23,8 +23,6 @@     <$$> ") where"     )   <>   prettyBreak-  <$$> "import Protolude"-  <>   prettyBreak   <$$> "import Generate.Binary.Types"  prettyCurves :: [Curve] -> Doc@@ -39,7 +37,7 @@     )   where     prettyCurves' :: Curve -> Doc-    prettyCurves' = pretty . toLower . curve . types+    prettyCurves' = pretty . toLower . name  prettyParameters :: [Curve] -> Doc prettyParameters curves@@ -47,26 +45,24 @@   <$$> vcat (punctuate prettyBreak (map prettyParameters' curves))   where     prettyParameters' :: Curve -> Doc-    prettyParameters' (Curve Types{..} Parameters{..})-      =    pretty (toLower curve) <+> ":: Curve"-      <$$> pretty (toLower curve) <+> "= Curve"+    prettyParameters' (Curve name Types{..} Parameters{..})+      =    pretty (toLower name) <+> ":: Curve"+      <$$> pretty (toLower name) <+> "= Curve"       <$$> indent 2-        (    "{ types = Types"+        (    "{ name =" <+> prettyText name+        <$$> ", types = Types"         <$$> indent 2-          (    "{ curve   =" <+> prettyText curve-          <$$> ", field   =" <+> prettyField field-          <$$> ", field'  =" <+> prettyField field'-          <$$> ", imports = "-          <>   maybe "Nothing" ((<>) "Just " . prettyText) imports+          (    "{ curve =" <+> prettyText curve+          <$$> ", field =" <+> prettyField field           <$$> "}"           )         <$$> ", parameters = Parameters"         <$$> indent 2           (    "{ a =" <+> prettyElement a           <$$> ", b =" <+> prettyElement b-          <$$> ", h =" <+> prettyInteger h-          <$$> ", p =" <+> prettyInteger p-          <$$> ", r =" <+> prettyInteger r+          <$$> ", h =" <+> prettyNatural h+          <$$> ", p =" <+> prettyNatural p+          <$$> ", r =" <+> prettyNatural r           <$$> ", x =" <+> prettyElement x           <$$> ", y =" <+> prettyElement y           <$$> "}"
generate/Generate/Binary/Parameters.hs view
@@ -2,8 +2,6 @@   ( curves   ) where -import Protolude- import Generate.Binary.Types  -------------------------------------------------------------------------------@@ -38,342 +36,324 @@  sect113r1 :: Curve sect113r1 = Curve-  { types = Types-    { curve   = "SECT113R1"-    , field   = BinaryField "F2m" 0x20000000000000000000000000201-    , field'  = PrimeField "Fr" 0x100000000000000d9ccec8a39e56f-    , imports = Nothing+  { name = "SECT113R1"+  , types = Types+    { curve = "SECT113R1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x3088250ca6e7c7fe649ce85820f7-    , b = BF 0xe8bee4d3e2260744188be0e9c723+    { a = B 0x3088250ca6e7c7fe649ce85820f7+    , b = B 0xe8bee4d3e2260744188be0e9c723     , h = 0x2     , p = 0x20000000000000000000000000201     , r = 0x100000000000000d9ccec8a39e56f-    , x = BF 0x9d73616f35f4ab1407d73562c10f-    , y = BF 0xa52830277958ee84d1315ed31886+    , x = B 0x9d73616f35f4ab1407d73562c10f+    , y = B 0xa52830277958ee84d1315ed31886     }   }  sect113r2 :: Curve sect113r2 = Curve-  { types = Types-    { curve   = "SECT113R2"-    , field   = BinaryField "F2m" 0x20000000000000000000000000201-    , field'  = PrimeField "Fr" 0x10000000000000108789b2496af93-    , imports = Nothing+  { name = "SECT113R2"+  , types = Types+    { curve = "SECT113R2"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x689918dbec7e5a0dd6dfc0aa55c7-    , b = BF 0x95e9a9ec9b297bd4bf36e059184f+    { a = B 0x689918dbec7e5a0dd6dfc0aa55c7+    , b = B 0x95e9a9ec9b297bd4bf36e059184f     , h = 0x2     , p = 0x20000000000000000000000000201     , r = 0x10000000000000108789b2496af93-    , x = BF 0x1a57a6a7b26ca5ef52fcdb8164797-    , y = BF 0xb3adc94ed1fe674c06e695baba1d+    , x = B 0x1a57a6a7b26ca5ef52fcdb8164797+    , y = B 0xb3adc94ed1fe674c06e695baba1d     }   }  sect131r1 :: Curve sect131r1 = Curve-  { types = Types-    { curve   = "SECT131R1"-    , field   = BinaryField "F2m" 0x80000000000000000000000000000010d-    , field'  = PrimeField "Fr" 0x400000000000000023123953a9464b54d-    , imports = Nothing+  { name = "SECT131R1"+  , types = Types+    { curve = "SECT131R1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x7a11b09a76b562144418ff3ff8c2570b8-    , b = BF 0x217c05610884b63b9c6c7291678f9d341+    { a = B 0x7a11b09a76b562144418ff3ff8c2570b8+    , b = B 0x217c05610884b63b9c6c7291678f9d341     , h = 0x2     , p = 0x80000000000000000000000000000010d     , r = 0x400000000000000023123953a9464b54d-    , x = BF 0x81baf91fdf9833c40f9c181343638399-    , y = BF 0x78c6e7ea38c001f73c8134b1b4ef9e150+    , x = B 0x81baf91fdf9833c40f9c181343638399+    , y = B 0x78c6e7ea38c001f73c8134b1b4ef9e150     }   }  sect131r2 :: Curve sect131r2 = Curve-  { types = Types-    { curve   = "SECT131R2"-    , field   = BinaryField "F2m" 0x80000000000000000000000000000010d-    , field'  = PrimeField "Fr" 0x400000000000000016954a233049ba98f-    , imports = Nothing+  { name = "SECT131R2"+  , types = Types+    { curve = "SECT131R2"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x3e5a88919d7cafcbf415f07c2176573b2-    , b = BF 0x4b8266a46c55657ac734ce38f018f2192+    { a = B 0x3e5a88919d7cafcbf415f07c2176573b2+    , b = B 0x4b8266a46c55657ac734ce38f018f2192     , h = 0x2     , p = 0x80000000000000000000000000000010d     , r = 0x400000000000000016954a233049ba98f-    , x = BF 0x356dcd8f2f95031ad652d23951bb366a8-    , y = BF 0x648f06d867940a5366d9e265de9eb240f+    , x = B 0x356dcd8f2f95031ad652d23951bb366a8+    , y = B 0x648f06d867940a5366d9e265de9eb240f     }   }  sect163k1 :: Curve sect163k1 = Curve-  { types = Types-    { curve   = "SECT163K1"-    , field   = BinaryField "F2m" 0x800000000000000000000000000000000000000c9-    , field'  = PrimeField "Fr" 0x4000000000000000000020108a2e0cc0d99f8a5ef-    , imports = Nothing+  { name = "SECT163K1"+  , types = Types+    { curve = "SECT163K1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x1-    , b = BF 0x1+    { a = B 0x1+    , b = B 0x1     , h = 0x2     , p = 0x800000000000000000000000000000000000000c9     , r = 0x4000000000000000000020108a2e0cc0d99f8a5ef-    , x = BF 0x2fe13c0537bbc11acaa07d793de4e6d5e5c94eee8-    , y = BF 0x289070fb05d38ff58321f2e800536d538ccdaa3d9+    , x = B 0x2fe13c0537bbc11acaa07d793de4e6d5e5c94eee8+    , y = B 0x289070fb05d38ff58321f2e800536d538ccdaa3d9     }   }  sect163r1 :: Curve sect163r1 = Curve-  { types = Types-    { curve   = "SECT163R1"-    , field   = BinaryField "F2m" 0x800000000000000000000000000000000000000c9-    , field'  = PrimeField "Fr" 0x3ffffffffffffffffffff48aab689c29ca710279b-    , imports = Nothing+  { name = "SECT163R1"+  , types = Types+    { curve = "SECT163R1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x7b6882caaefa84f9554ff8428bd88e246d2782ae2-    , b = BF 0x713612dcddcb40aab946bda29ca91f73af958afd9+    { a = B 0x7b6882caaefa84f9554ff8428bd88e246d2782ae2+    , b = B 0x713612dcddcb40aab946bda29ca91f73af958afd9     , h = 0x2     , p = 0x800000000000000000000000000000000000000c9     , r = 0x3ffffffffffffffffffff48aab689c29ca710279b-    , x = BF 0x369979697ab43897789566789567f787a7876a654-    , y = BF 0x435edb42efafb2989d51fefce3c80988f41ff883+    , x = B 0x369979697ab43897789566789567f787a7876a654+    , y = B 0x435edb42efafb2989d51fefce3c80988f41ff883     }   }  sect163r2 :: Curve sect163r2 = Curve-  { types = Types-    { curve   = "SECT163R2"-    , field   = BinaryField "F2m" 0x800000000000000000000000000000000000000c9-    , field'  = PrimeField "Fr" 0x40000000000000000000292fe77e70c12a4234c33-    , imports = Nothing+  { name = "SECT163R2"+  , types = Types+    { curve = "SECT163R2"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x1-    , b = BF 0x20a601907b8c953ca1481eb10512f78744a3205fd+    { a = B 0x1+    , b = B 0x20a601907b8c953ca1481eb10512f78744a3205fd     , h = 0x2     , p = 0x800000000000000000000000000000000000000c9     , r = 0x40000000000000000000292fe77e70c12a4234c33-    , x = BF 0x3f0eba16286a2d57ea0991168d4994637e8343e36-    , y = BF 0xd51fbc6c71a0094fa2cdd545b11c5c0c797324f1+    , x = B 0x3f0eba16286a2d57ea0991168d4994637e8343e36+    , y = B 0xd51fbc6c71a0094fa2cdd545b11c5c0c797324f1     }   }  sect193r1 :: Curve sect193r1 = Curve-  { types = Types-    { curve   = "SECT193R1"-    , field   = BinaryField "F2m" 0x2000000000000000000000000000000000000000000008001-    , field'  = PrimeField "Fr" 0x1000000000000000000000000c7f34a778f443acc920eba49-    , imports = Nothing+  { name = "SECT193R1"+  , types = Types+    { curve = "SECT193R1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x17858feb7a98975169e171f77b4087de098ac8a911df7b01-    , b = BF 0xfdfb49bfe6c3a89facadaa7a1e5bbc7cc1c2e5d831478814+    { a = B 0x17858feb7a98975169e171f77b4087de098ac8a911df7b01+    , b = B 0xfdfb49bfe6c3a89facadaa7a1e5bbc7cc1c2e5d831478814     , h = 0x2     , p = 0x2000000000000000000000000000000000000000000008001     , r = 0x1000000000000000000000000c7f34a778f443acc920eba49-    , x = BF 0x1f481bc5f0ff84a74ad6cdf6fdef4bf6179625372d8c0c5e1-    , y = BF 0x25e399f2903712ccf3ea9e3a1ad17fb0b3201b6af7ce1b05+    , x = B 0x1f481bc5f0ff84a74ad6cdf6fdef4bf6179625372d8c0c5e1+    , y = B 0x25e399f2903712ccf3ea9e3a1ad17fb0b3201b6af7ce1b05     }   }  sect193r2 :: Curve sect193r2 = Curve-  { types = Types-    { curve   = "SECT193R2"-    , field   = BinaryField "F2m" 0x2000000000000000000000000000000000000000000008001-    , field'  = PrimeField "Fr" 0x10000000000000000000000015aab561b005413ccd4ee99d5-    , imports = Nothing+  { name = "SECT193R2"+  , types = Types+    { curve = "SECT193R2"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x163f35a5137c2ce3ea6ed8667190b0bc43ecd69977702709b-    , b = BF 0xc9bb9e8927d4d64c377e2ab2856a5b16e3efb7f61d4316ae+    { a = B 0x163f35a5137c2ce3ea6ed8667190b0bc43ecd69977702709b+    , b = B 0xc9bb9e8927d4d64c377e2ab2856a5b16e3efb7f61d4316ae     , h = 0x2     , p = 0x2000000000000000000000000000000000000000000008001     , r = 0x10000000000000000000000015aab561b005413ccd4ee99d5-    , x = BF 0xd9b67d192e0367c803f39e1a7e82ca14a651350aae617e8f-    , y = BF 0x1ce94335607c304ac29e7defbd9ca01f596f927224cdecf6c+    , x = B 0xd9b67d192e0367c803f39e1a7e82ca14a651350aae617e8f+    , y = B 0x1ce94335607c304ac29e7defbd9ca01f596f927224cdecf6c     }   }  sect233k1 :: Curve sect233k1 = Curve-  { types = Types-    { curve   = "SECT233K1"-    , field   = BinaryField "F2m" 0x20000000000000000000000000000000000000004000000000000000001-    , field'  = PrimeField "Fr" 0x8000000000000000000000000000069d5bb915bcd46efb1ad5f173abdf-    , imports = Nothing+  { name = "SECT233K1"+  , types = Types+    { curve = "SECT233K1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x0-    , b = BF 0x1+    { a = B 0x0+    , b = B 0x1     , h = 0x4     , p = 0x20000000000000000000000000000000000000004000000000000000001     , r = 0x8000000000000000000000000000069d5bb915bcd46efb1ad5f173abdf-    , x = BF 0x17232ba853a7e731af129f22ff4149563a419c26bf50a4c9d6eefad6126-    , y = BF 0x1db537dece819b7f70f555a67c427a8cd9bf18aeb9b56e0c11056fae6a3+    , x = B 0x17232ba853a7e731af129f22ff4149563a419c26bf50a4c9d6eefad6126+    , y = B 0x1db537dece819b7f70f555a67c427a8cd9bf18aeb9b56e0c11056fae6a3     }   }  sect233r1 :: Curve sect233r1 = Curve-  { types = Types-    { curve   = "SECT233R1"-    , field   = BinaryField "F2m" 0x20000000000000000000000000000000000000004000000000000000001-    , field'  = PrimeField "Fr" 0x1000000000000000000000000000013e974e72f8a6922031d2603cfe0d7-    , imports = Nothing+  { name = "SECT233R1"+  , types = Types+    { curve = "SECT233R1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x1-    , b = BF 0x66647ede6c332c7f8c0923bb58213b333b20e9ce4281fe115f7d8f90ad+    { a = B 0x1+    , b = B 0x66647ede6c332c7f8c0923bb58213b333b20e9ce4281fe115f7d8f90ad     , h = 0x2     , p = 0x20000000000000000000000000000000000000004000000000000000001     , r = 0x1000000000000000000000000000013e974e72f8a6922031d2603cfe0d7-    , x = BF 0xfac9dfcbac8313bb2139f1bb755fef65bc391f8b36f8f8eb7371fd558b-    , y = BF 0x1006a08a41903350678e58528bebf8a0beff867a7ca36716f7e01f81052+    , x = B 0xfac9dfcbac8313bb2139f1bb755fef65bc391f8b36f8f8eb7371fd558b+    , y = B 0x1006a08a41903350678e58528bebf8a0beff867a7ca36716f7e01f81052     }   }  sect239k1 :: Curve sect239k1 = Curve-  { types = Types-    { curve   = "SECT239K1"-    , field   = BinaryField "F2m" 0x800000000000000000004000000000000000000000000000000000000001-    , field'  = PrimeField "Fr" 0x2000000000000000000000000000005a79fec67cb6e91f1c1da800e478a5-    , imports = Nothing+  { name = "SECT239K1"+  , types = Types+    { curve = "SECT239K1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x0-    , b = BF 0x1+    { a = B 0x0+    , b = B 0x1     , h = 0x4     , p = 0x800000000000000000004000000000000000000000000000000000000001     , r = 0x2000000000000000000000000000005a79fec67cb6e91f1c1da800e478a5-    , x = BF 0x29a0b6a887a983e9730988a68727a8b2d126c44cc2cc7b2a6555193035dc-    , y = BF 0x76310804f12e549bdb011c103089e73510acb275fc312a5dc6b76553f0ca+    , x = B 0x29a0b6a887a983e9730988a68727a8b2d126c44cc2cc7b2a6555193035dc+    , y = B 0x76310804f12e549bdb011c103089e73510acb275fc312a5dc6b76553f0ca     }   }  sect283k1 :: Curve sect283k1 = Curve-  { types = Types-    { curve   = "SECT283K1"-    , field   = BinaryField "F2m" 0x800000000000000000000000000000000000000000000000000000000000000000010a1-    , field'  = PrimeField "Fr" 0x1ffffffffffffffffffffffffffffffffffe9ae2ed07577265dff7f94451e061e163c61-    , imports = Nothing+  { name = "SECT283K1"+  , types = Types+    { curve = "SECT283K1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x0-    , b = BF 0x1+    { a = B 0x0+    , b = B 0x1     , h = 0x4     , p = 0x800000000000000000000000000000000000000000000000000000000000000000010a1     , r = 0x1ffffffffffffffffffffffffffffffffffe9ae2ed07577265dff7f94451e061e163c61-    , x = BF 0x503213f78ca44883f1a3b8162f188e553cd265f23c1567a16876913b0c2ac2458492836-    , y = BF 0x1ccda380f1c9e318d90f95d07e5426fe87e45c0e8184698e45962364e34116177dd2259+    , x = B 0x503213f78ca44883f1a3b8162f188e553cd265f23c1567a16876913b0c2ac2458492836+    , y = B 0x1ccda380f1c9e318d90f95d07e5426fe87e45c0e8184698e45962364e34116177dd2259     }   }  sect283r1 :: Curve sect283r1 = Curve-  { types = Types-    { curve   = "SECT283R1"-    , field   = BinaryField "F2m" 0x800000000000000000000000000000000000000000000000000000000000000000010a1-    , field'  = PrimeField "Fr" 0x3ffffffffffffffffffffffffffffffffffef90399660fc938a90165b042a7cefadb307-    , imports = Nothing+  { name = "SECT283R1"+  , types = Types+    { curve = "SECT283R1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x1-    , b = BF 0x27b680ac8b8596da5a4af8a19a0303fca97fd7645309fa2a581485af6263e313b79a2f5+    { a = B 0x1+    , b = B 0x27b680ac8b8596da5a4af8a19a0303fca97fd7645309fa2a581485af6263e313b79a2f5     , h = 0x2     , p = 0x800000000000000000000000000000000000000000000000000000000000000000010a1     , r = 0x3ffffffffffffffffffffffffffffffffffef90399660fc938a90165b042a7cefadb307-    , x = BF 0x5f939258db7dd90e1934f8c70b0dfec2eed25b8557eac9c80e2e198f8cdbecd86b12053-    , y = BF 0x3676854fe24141cb98fe6d4b20d02b4516ff702350eddb0826779c813f0df45be8112f4+    , x = B 0x5f939258db7dd90e1934f8c70b0dfec2eed25b8557eac9c80e2e198f8cdbecd86b12053+    , y = B 0x3676854fe24141cb98fe6d4b20d02b4516ff702350eddb0826779c813f0df45be8112f4     }   }  sect409k1 :: Curve sect409k1 = Curve-  { types = Types-    { curve   = "SECT409K1"-    , field   = BinaryField "F2m" 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001-    , field'  = PrimeField "Fr" 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffe5f83b2d4ea20400ec4557d5ed3e3e7ca5b4b5c83b8e01e5fcf-    , imports = Nothing+  { name = "SECT409K1"+  , types = Types+    { curve = "SECT409K1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x0-    , b = BF 0x1+    { a = B 0x0+    , b = B 0x1     , h = 0x4     , p = 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001     , r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffe5f83b2d4ea20400ec4557d5ed3e3e7ca5b4b5c83b8e01e5fcf-    , x = BF 0x60f05f658f49c1ad3ab1890f7184210efd0987e307c84c27accfb8f9f67cc2c460189eb5aaaa62ee222eb1b35540cfe9023746-    , y = BF 0x1e369050b7c4e42acba1dacbf04299c3460782f918ea427e6325165e9ea10e3da5f6c42e9c55215aa9ca27a5863ec48d8e0286b+    , x = B 0x60f05f658f49c1ad3ab1890f7184210efd0987e307c84c27accfb8f9f67cc2c460189eb5aaaa62ee222eb1b35540cfe9023746+    , y = B 0x1e369050b7c4e42acba1dacbf04299c3460782f918ea427e6325165e9ea10e3da5f6c42e9c55215aa9ca27a5863ec48d8e0286b     }   }  sect409r1 :: Curve sect409r1 = Curve-  { types = Types-    { curve   = "SECT409R1"-    , field   = BinaryField "F2m" 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001-    , field'  = PrimeField "Fr" 0x10000000000000000000000000000000000000000000000000001e2aad6a612f33307be5fa47c3c9e052f838164cd37d9a21173-    , imports = Nothing+  { name = "SECT409R1"+  , types = Types+    { curve = "SECT409R1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x1-    , b = BF 0x21a5c2c8ee9feb5c4b9a753b7b476b7fd6422ef1f3dd674761fa99d6ac27c8a9a197b272822f6cd57a55aa4f50ae317b13545f+    { a = B 0x1+    , b = B 0x21a5c2c8ee9feb5c4b9a753b7b476b7fd6422ef1f3dd674761fa99d6ac27c8a9a197b272822f6cd57a55aa4f50ae317b13545f     , h = 0x2     , p = 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001     , r = 0x10000000000000000000000000000000000000000000000000001e2aad6a612f33307be5fa47c3c9e052f838164cd37d9a21173-    , x = BF 0x15d4860d088ddb3496b0c6064756260441cde4af1771d4db01ffe5b34e59703dc255a868a1180515603aeab60794e54bb7996a7-    , y = BF 0x61b1cfab6be5f32bbfa78324ed106a7636b9c5a7bd198d0158aa4f5488d08f38514f1fdf4b4f40d2181b3681c364ba0273c706+    , x = B 0x15d4860d088ddb3496b0c6064756260441cde4af1771d4db01ffe5b34e59703dc255a868a1180515603aeab60794e54bb7996a7+    , y = B 0x61b1cfab6be5f32bbfa78324ed106a7636b9c5a7bd198d0158aa4f5488d08f38514f1fdf4b4f40d2181b3681c364ba0273c706     }   }  sect571k1 :: Curve sect571k1 = Curve-  { types = Types-    { curve   = "SECT571K1"-    , field   = BinaryField "F2m" 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425-    , field'  = PrimeField "Fr" 0x20000000000000000000000000000000000000000000000000000000000000000000000131850e1f19a63e4b391a8db917f4138b630d84be5d639381e91deb45cfe778f637c1001-    , imports = Nothing+  { name = "SECT571K1"+  , types = Types+    { curve = "SECT571K1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x0-    , b = BF 0x1+    { a = B 0x0+    , b = B 0x1     , h = 0x4     , p = 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425     , r = 0x20000000000000000000000000000000000000000000000000000000000000000000000131850e1f19a63e4b391a8db917f4138b630d84be5d639381e91deb45cfe778f637c1001-    , x = BF 0x26eb7a859923fbc82189631f8103fe4ac9ca2970012d5d46024804801841ca44370958493b205e647da304db4ceb08cbbd1ba39494776fb988b47174dca88c7e2945283a01c8972-    , y = BF 0x349dc807f4fbf374f4aeade3bca95314dd58cec9f307a54ffc61efc006d8a2c9d4979c0ac44aea74fbebbb9f772aedcb620b01a7ba7af1b320430c8591984f601cd4c143ef1c7a3+    , x = B 0x26eb7a859923fbc82189631f8103fe4ac9ca2970012d5d46024804801841ca44370958493b205e647da304db4ceb08cbbd1ba39494776fb988b47174dca88c7e2945283a01c8972+    , y = B 0x349dc807f4fbf374f4aeade3bca95314dd58cec9f307a54ffc61efc006d8a2c9d4979c0ac44aea74fbebbb9f772aedcb620b01a7ba7af1b320430c8591984f601cd4c143ef1c7a3     }   }  sect571r1 :: Curve sect571r1 = Curve-  { types = Types-    { curve   = "SECT571R1"-    , field   = BinaryField "F2m" 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425-    , field'  = PrimeField "Fr" 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47-    , imports = Nothing+  { name = "SECT571R1"+  , types = Types+    { curve = "SECT571R1"+    , field = Binary "F2m"     }   , parameters = Parameters-    { a = BF 0x1-    , b = BF 0x2f40e7e2221f295de297117b7f3d62f5c6a97ffcb8ceff1cd6ba8ce4a9a18ad84ffabbd8efa59332be7ad6756a66e294afd185a78ff12aa520e4de739baca0c7ffeff7f2955727a+    { a = B 0x1+    , b = B 0x2f40e7e2221f295de297117b7f3d62f5c6a97ffcb8ceff1cd6ba8ce4a9a18ad84ffabbd8efa59332be7ad6756a66e294afd185a78ff12aa520e4de739baca0c7ffeff7f2955727a     , h = 0x2     , p = 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425     , r = 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47-    , x = BF 0x303001d34b856296c16c0d40d3cd7750a93d1d2955fa80aa5f40fc8db7b2abdbde53950f4c0d293cdd711a35b67fb1499ae60038614f1394abfa3b4c850d927e1e7769c8eec2d19-    , y = BF 0x37bf27342da639b6dccfffeb73d69d78c6c27a6009cbbca1980f8533921e8a684423e43bab08a576291af8f461bb2a8b3531d2f0485c19b16e2f1516e23dd3c1a4827af1b8ac15b+    , x = B 0x303001d34b856296c16c0d40d3cd7750a93d1d2955fa80aa5f40fc8db7b2abdbde53950f4c0d293cdd711a35b67fb1499ae60038614f1394abfa3b4c850d927e1e7769c8eec2d19+    , y = B 0x37bf27342da639b6dccfffeb73d69d78c6c27a6009cbbca1980f8533921e8a684423e43bab08a576291af8f461bb2a8b3531d2f0485c19b16e2f1516e23dd3c1a4827af1b8ac15b     }   }
generate/Generate/Binary/Types.hs view
@@ -5,6 +5,8 @@  import Protolude +import GHC.Natural (Natural)+ import Generate.Types  -------------------------------------------------------------------------------@@ -12,16 +14,17 @@ -------------------------------------------------------------------------------  data Curve = Curve-  { types      :: Types+  { name       :: Text+  , types      :: Types   , parameters :: Parameters   }  data Parameters = Parameters   { a :: Element   , b :: Element-  , h :: Integer-  , p :: Integer-  , r :: Integer+  , h :: Natural+  , p :: Natural+  , r :: Natural   , x :: Element   , y :: Element   }
generate/Generate/Curve.hs view
@@ -4,7 +4,8 @@  import Protolude -import Text.PrettyPrint.Leijen.Text+import GHC.Natural (Natural)+import Text.PrettyPrint.Leijen.Text hiding (char)  import Generate.Pretty import Generate.Types@@ -14,49 +15,75 @@ -------------------------------------------------------------------------------  prettyElement :: Element -> Doc-prettyElement (BF n)-  = prettyInteger n-prettyElement (EF ns)-  = "toField" <+> align+prettyElement (B n)+  = prettyNatural n+prettyElement (E ns)+  = "toE'" <+> align     (    (if null ns then "[" else "[ ")     <>   hcat (punctuate "\n, " (map prettyElement ns))     <$$> "]"     )-prettyElement (PF n)-  = prettyInteger n+prettyElement (P n)+  = prettyNatural n  prettyField :: Field -> Doc-prettyField (BinaryField f2m _)+prettyField (Binary f2m)   = pretty f2m-prettyField (ExtensionField fq' _ _ _ _)+prettyField (Extension fq' _ _ _)   = pretty fq'-prettyField (PrimeField fq _)+prettyField (Prime fq)   = pretty fq -prettyImport :: Field -> Doc-prettyImport k+prettyImport :: Doc+prettyImport   =    "import Protolude"   <>   prettyBreak-  <$$> k'-  <$$> "import PrimeField"-  where-    k' = case k of-      BinaryField _ _          -> "import BinaryField"-      ExtensionField _ _ _ _ _ -> "import ExtensionField"-      _                        -> mempty+  <$$> "import Data.Field.Galois"+  <$$> "import GHC.Natural (Natural)" -prettyType :: Field -> Doc-prettyType (BinaryField f2m q)-  = "type" <+> pretty f2m <+> "= BinaryField" <+> prettyInteger q-prettyType (ExtensionField fq' fq q s k)-  =    prettyType' k-  <$$> "data" <+> pretty q-  <$$> "instance IrreducibleMonic" <+> pretty fq <+> pretty q <+> "where"-  <$$> "  split _ =" <+> pretty s-  <$$> "type" <+> pretty fq' <+> "= ExtensionField" <+> pretty fq <+> pretty q+prettyType :: Text -> Field -> Natural -> Natural -> Doc+prettyType curve (Binary f2m) p r+  =    prettyDocumentation prettyCurve+  <$$> "data" <+> pretty curve+  <>   prettyBreak+  <$$> prettyDocumentation ("Field of points of" <+> prettyCurve)+  <$$> "type" <+> pretty f2m <+> "= Binary P"+  <$$> "type P =" <+> prettyNatural p+  <>   prettyBreak+  <$$> prettyDocumentation ("Field of coefficients of" <+> prettyCurve)+  <$$> "type Fr = Prime R"+  <$$> "type R =" <+> prettyNatural r   where-    prettyType' :: Maybe Field -> Doc-    prettyType' (Just f) = prettyType f-    prettyType' _        = mempty-prettyType (PrimeField fq q)-  = "type" <+> pretty fq <+> "= PrimeField" <+> prettyInteger q+    prettyCurve :: Doc+    prettyCurve = pretty curve <+> "curve"+prettyType curve extension@(Extension _ _ _ _) _ _+  =    prettyType' extension+  where+    prettyType' :: Field -> Doc+    prettyType' (Extension fq' p x k)+      =    prettyType' k+      <$$> prettyDocumentation ("Field of points of"+      <+>  pretty curve <+> "curve over" <+> enclose "@" "@" (pretty fq'))+      <$$> "type" <+> pretty fq' <+> "= Extension" <+> pretty p <+> prettyField k+      <$$> "data" <+> pretty p+      <$$> "instance IrreducibleMonic" <+> pretty p <+> prettyField k <+> "where"+      <$$> indent 2+        (    "poly _ =" <+> pretty x+        <$$> prettyInline "poly"+        )+    prettyType' _+      = mempty+prettyType curve (Prime fq) q r+  =    prettyDocumentation prettyCurve+  <$$> "data" <+> pretty curve+  <>   prettyBreak+  <$$> prettyDocumentation ("Field of points of" <+> prettyCurve)+  <$$> "type" <+> pretty fq <+> "= Prime Q"+  <$$> "type Q =" <+> prettyNatural q+  <>   prettyBreak+  <$$> prettyDocumentation ("Field of coefficients of" <+> prettyCurve)+  <$$> "type Fr = Prime R"+  <$$> "type R =" <+> prettyNatural r+  where+    prettyCurve :: Doc+    prettyCurve = pretty curve <+> "curve"
generate/Generate/Edwards/Curve.hs view
@@ -14,34 +14,29 @@ -- Curve ------------------------------------------------------------------------------- -prettyImports :: Types -> Doc-prettyImports Types{..}-  =    "module Curve.Edwards." <> pretty curve+prettyImports :: Text -> Types -> Doc+prettyImports name Types{..}+  =    "module Data.Curve.Edwards." <> pretty name   <$$> indent 2-    (    "( module Curve.Edwards"-    <$$> ", module Curve.Edwards." <> pretty curve+    (    "( module Data.Curve.Edwards"     <$$> ", Point(..)"+    <$$> "-- *" <+> pretty curve <+> "curve"+    <$$> ", module Data.Curve.Edwards." <> pretty name     <$$> ") where"     )   <>   prettyBreak-  <$$> prettyImport field+  <$$> prettyImport   <>   prettyBreak-  <$$> "import Curve.Edwards"-  <$$> maybe mempty pretty imports+  <$$> "import Data.Curve.Edwards"+  <$$> if curve == name then mempty else "import Data.Curve.Edwards."+  <>   pretty curve <+> "(" <> pretty curve <> ", Fq, Fr)" -prettyTypes :: Types -> Doc-prettyTypes Types{..}+prettyTypes :: Types -> Parameters -> Doc+prettyTypes Types{..} Parameters{..}   =    prettySection "Types"-  <$$> prettyDocumentation curve'-  <$$> "data" <+> pretty curve-  <>   prettyBreak-  <$$> prettyDocumentation ("Field of points of" <+> curve')-  <$$> prettyType field-  <>   prettyBreak-  <$$> prettyDocumentation ("Field of coefficients of" <+> curve')-  <$$> prettyType field'+  <$$> prettyType curve field q r   <>   prettyBreak-  <$$> prettyDocumentation (curve' <+> "is an Edwards curve")+  <$$> prettyComment (curve' <+> "is an Edwards curve")   <$$> "instance Curve 'Edwards c" <+> pretty curve <+> prettyField field   <+>  "Fr => ECurve c" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2@@ -55,16 +50,12 @@     <$$> prettyInline "q_"     <$$> "r_ = const _r"     <$$> prettyInline "r_"-    <$$> "x_ = const _x"-    <$$> prettyInline "x_"-    <$$> "y_ = const _y"-    <$$> prettyInline "y_"     )   <>   prettyBreak   <$$> prettyDocumentation ("Affine" <+> curve' <+> "point")   <$$> "type PA = EAPoint" <+> pretty curve <+> prettyField field <+> "Fr"   <>   prettyBreak-  <$$> prettyDocumentation ("Affine" <+> curve' <+> "is an Edwards affine curve")+  <$$> prettyComment ("Affine" <+> curve' <+> "is an Edwards affine curve")   <$$> "instance EACurve" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2     (    "gA_ = gA"@@ -74,7 +65,7 @@   <$$> prettyDocumentation ("Projective" <+> pretty curve <+> "point")   <$$> "type PP = EPPoint" <+> pretty curve <+> prettyField field <+> "Fr"   <>   prettyBreak-  <$$> prettyDocumentation ("Projective" <+> curve' <+> "is an Edwards projective curve")+  <$$> prettyComment ("Projective" <+> curve' <+> "is an Edwards projective curve")   <$$> "instance EPCurve" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2     (    "gP_ = gP"@@ -98,18 +89,18 @@   <$$> prettyInline "_d"   <>   prettyBreak   <$$> prettyDocumentation ("Cofactor of" <+> curve')-  <$$> "_h :: Integer"-  <$$> "_h =" <+> prettyInteger h+  <$$> "_h :: Natural"+  <$$> "_h =" <+> prettyNatural h   <$$> prettyInline "_h"   <>   prettyBreak   <$$> prettyDocumentation ("Characteristic of" <+> curve')-  <$$> "_q :: Integer"-  <$$> "_q =" <+> prettyInteger q+  <$$> "_q :: Natural"+  <$$> "_q =" <+> prettyNatural q   <$$> prettyInline "_q"   <>   prettyBreak   <$$> prettyDocumentation ("Order of" <+> curve')-  <$$> "_r :: Integer"-  <$$> "_r =" <+> prettyInteger r+  <$$> "_r :: Natural"+  <$$> "_r =" <+> prettyNatural r   <$$> prettyInline "_r"   <>   prettyBreak   <$$> prettyDocumentation ("Coordinate @X@ of" <+> curve')@@ -136,10 +127,10 @@     curve' = pretty curve <+> "curve"  prettyCurve :: Curve -> Doc-prettyCurve (Curve types parameters)-  =    prettyImports types+prettyCurve (Curve name types parameters)+  =    prettyImports name types   <>   prettyBreak-  <$$> prettyTypes types+  <$$> prettyTypes types parameters   <>   prettyBreak   <$$> prettyParameters types parameters   <>   prettyBreak
generate/Generate/Edwards/Generate.hs view
@@ -23,8 +23,6 @@     <$$> ") where"     )   <>   prettyBreak-  <$$> "import Protolude"-  <>   prettyBreak   <$$> "import Generate.Edwards.Types"  prettyCurves :: [Curve] -> Doc@@ -39,7 +37,7 @@     )   where     prettyCurves' :: Curve -> Doc-    prettyCurves' = pretty . toLower . curve . types+    prettyCurves' = pretty . toLower . name  prettyParameters :: [Curve] -> Doc prettyParameters curves@@ -47,26 +45,24 @@   <$$> vcat (punctuate prettyBreak (map prettyParameters' curves))   where     prettyParameters' :: Curve -> Doc-    prettyParameters' (Curve Types{..} Parameters{..})-      =    pretty (toLower curve) <+> ":: Curve"-      <$$> pretty (toLower curve) <+> "= Curve"+    prettyParameters' (Curve name Types{..} Parameters{..})+      =    pretty (toLower name) <+> ":: Curve"+      <$$> pretty (toLower name) <+> "= Curve"       <$$> indent 2-        (    "{ types = Types"+        (    "{ name =" <+> prettyText name+        <$$> ", types = Types"         <$$> indent 2-          (    "{ curve   =" <+> prettyText curve-          <$$> ", field   =" <+> prettyField field-          <$$> ", field'  =" <+> prettyField field'-          <$$> ", imports = "-          <>   maybe "Nothing" ((<>) "Just " . prettyText) imports+          (    "{ curve =" <+> prettyText curve+          <$$> ", field =" <+> prettyField field           <$$> "}"           )         <$$> ", parameters = Parameters"         <$$> indent 2           (    "{ a =" <+> prettyElement a           <$$> ", d =" <+> prettyElement d-          <$$> ", h =" <+> prettyInteger h-          <$$> ", q =" <+> prettyInteger q-          <$$> ", r =" <+> prettyInteger r+          <$$> ", h =" <+> prettyNatural h+          <$$> ", q =" <+> prettyNatural q+          <$$> ", r =" <+> prettyNatural r           <$$> ", x =" <+> prettyElement x           <$$> ", y =" <+> prettyElement y           <$$> "}"
generate/Generate/Edwards/Parameters.hs view
@@ -2,8 +2,6 @@   ( curves   ) where -import Protolude- import Generate.Edwards.Types  -------------------------------------------------------------------------------@@ -29,171 +27,162 @@  curve1174 :: Curve curve1174 = Curve-  { types = Types-    { curve   = "Curve1174"-    , field   = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7-    , field'  = PrimeField "Fr" 0x1fffffffffffffffffffffffffffffff77965c4dfd307348944d45fd166c971-    , imports = Nothing+  { name = "Curve1174"+  , types = Types+    { curve = "Curve1174"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1-    , d = PF 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb61+    { a = P 0x1+    , d = P 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb61     , h = 0x4     , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7     , r = 0x1fffffffffffffffffffffffffffffff77965c4dfd307348944d45fd166c971-    , x = PF 0x37fbb0cea308c479343aee7c029a190c021d96a492ecd6516123f27bce29eda-    , y = PF 0x6b72f82d47fb7cc6656841169840e0c4fe2dee2af3f976ba4ccb1bf9b46360e+    , x = P 0x37fbb0cea308c479343aee7c029a190c021d96a492ecd6516123f27bce29eda+    , y = P 0x6b72f82d47fb7cc6656841169840e0c4fe2dee2af3f976ba4ccb1bf9b46360e     }   }  curve41417 :: Curve curve41417 = Curve-  { types = Types-    { curve   = "Curve41417"-    , field   = PrimeField "Fq" 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef-    , field'  = PrimeField "Fr" 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffeb3cc92414cf706022b36f1c0338ad63cf181b0e71a5e106af79-    , imports = Nothing+  { name = "Curve41417"+  , types = Types+    { curve = "Curve41417"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1-    , d = PF 0xe21+    { a = P 0x1+    , d = P 0xe21     , h = 0x8     , q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef     , r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffeb3cc92414cf706022b36f1c0338ad63cf181b0e71a5e106af79-    , x = PF 0x1a334905141443300218c0631c326e5fcd46369f44c03ec7f57ff35498a4ab4d6d6ba111301a73faa8537c64c4fd3812f3cbc595-    , y = PF 0x22+    , x = P 0x1a334905141443300218c0631c326e5fcd46369f44c03ec7f57ff35498a4ab4d6d6ba111301a73faa8537c64c4fd3812f3cbc595+    , y = P 0x22     }   }  e222 :: Curve e222 = Curve-  { types = Types-    { curve   = "E222"-    , field   = PrimeField "Fq" 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffff8b-    , field'  = PrimeField "Fr" 0xffffffffffffffffffffffffffff70cbc95e932f802f31423598cbf-    , imports = Nothing+  { name = "E222"+  , types = Types+    { curve = "E222"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1-    , d = PF 0x27166+    { a = P 0x1+    , d = P 0x27166     , h = 0x4     , q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffff8b     , r = 0xffffffffffffffffffffffffffff70cbc95e932f802f31423598cbf-    , x = PF 0x19b12bb156a389e55c9768c303316d07c23adab3736eb2bc3eb54e51-    , y = PF 0x1c+    , x = P 0x19b12bb156a389e55c9768c303316d07c23adab3736eb2bc3eb54e51+    , y = P 0x1c     }   }  e382 :: Curve e382 = Curve-  { types = Types-    { curve   = "E382"-    , field   = PrimeField "Fq" 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97-    , field'  = PrimeField "Fr" 0xfffffffffffffffffffffffffffffffffffffffffffffffd5fb21f21e95eee17c5e69281b102d2773e27e13fd3c9719-    , imports = Nothing+  { name = "E382"+  , types = Types+    { curve = "E382"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1-    , d = PF 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef8e1+    { a = P 0x1+    , d = P 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef8e1     , h = 0x4     , q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97     , r = 0xfffffffffffffffffffffffffffffffffffffffffffffffd5fb21f21e95eee17c5e69281b102d2773e27e13fd3c9719-    , x = PF 0x196f8dd0eab20391e5f05be96e8d20ae68f840032b0b64352923bab85364841193517dbce8105398ebc0cc9470f79603-    , y = PF 0x11+    , x = P 0x196f8dd0eab20391e5f05be96e8d20ae68f840032b0b64352923bab85364841193517dbce8105398ebc0cc9470f79603+    , y = P 0x11     }   }  e521 :: Curve e521 = Curve-  { types = Types-    { curve   = "E521"-    , field   = PrimeField "Fq" 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-    , field'  = PrimeField "Fr" 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd15b6c64746fc85f736b8af5e7ec53f04fbd8c4569a8f1f4540ea2435f5180d6b-    , imports = Nothing+  { name = "E521"+  , types = Types+    { curve = "E521"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1-    , d = PF 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa4331+    { a = P 0x1+    , d = P 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa4331     , h = 0x4     , q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff     , r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd15b6c64746fc85f736b8af5e7ec53f04fbd8c4569a8f1f4540ea2435f5180d6b-    , x = PF 0x752cb45c48648b189df90cb2296b2878a3bfd9f42fc6c818ec8bf3c9c0c6203913f6ecc5ccc72434b1ae949d568fc99c6059d0fb13364838aa302a940a2f19ba6c-    , y = PF 0xc+    , x = P 0x752cb45c48648b189df90cb2296b2878a3bfd9f42fc6c818ec8bf3c9c0c6203913f6ecc5ccc72434b1ae949d568fc99c6059d0fb13364838aa302a940a2f19ba6c+    , y = P 0xc     }   }  ed448 :: Curve ed448 = Curve-  { types = Types-    { curve   = "Ed448"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff-    , field'  = PrimeField "Fr" 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3-    , imports = Nothing+  { name = "Ed448"+  , types = Types+    { curve = "Ed448"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1-    , d = PF 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756+    { a = P 0x1+    , d = P 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756     , h = 0x4     , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff     , r = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3-    , x = PF 0x297ea0ea2692ff1b4faff46098453a6a26adf733245f065c3c59d0709cecfa96147eaaf3932d94c63d96c170033f4ba0c7f0de840aed939f-    , y = PF 0x13+    , x = P 0x297ea0ea2692ff1b4faff46098453a6a26adf733245f065c3c59d0709cecfa96147eaaf3932d94c63d96c170033f4ba0c7f0de840aed939f+    , y = P 0x13     }   }  ed3363 :: Curve ed3363 = Curve-  { types = Types-    { curve   = "Ed3363"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd-    , field'  = PrimeField "Fr" 0x200000000000000000000000000000000000000000071415fa9850c0bd6b87f93baa7b2f95973e9fa805-    , imports = Nothing+  { name = "Ed3363"+  , types = Types+    { curve = "Ed3363"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1-    , d = PF 0x2b67+    { a = P 0x1+    , d = P 0x2b67     , h = 0x8     , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd     , r = 0x200000000000000000000000000000000000000000071415fa9850c0bd6b87f93baa7b2f95973e9fa805-    , x = PF 0xc-    , y = PF 0xc0dc616b56502e18e1c161d007853d1b14b46c3811c7ef435b6db5d5650ca0365db12bec68505fe8632+    , x = P 0xc+    , y = P 0xc0dc616b56502e18e1c161d007853d1b14b46c3811c7ef435b6db5d5650ca0365db12bec68505fe8632     }   }  ed25519 :: Curve ed25519 = Curve-  { types = Types-    { curve   = "Ed25519"-    , field   = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed-    , field'  = PrimeField "Fr" 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed-    , imports = Nothing+  { name = "Ed25519"+  , types = Types+    { curve = "Ed25519"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec-    , d = PF 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3+    { a = P 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec+    , d = P 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3     , h = 0x8     , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed     , r = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed-    , x = PF 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a-    , y = PF 0x6666666666666666666666666666666666666666666666666666666666666658+    , x = P 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a+    , y = P 0x6666666666666666666666666666666666666666666666666666666666666658     }   }  jubjub :: Curve jubjub = Curve-  { types = Types-    { curve   = "JubJub"-    , field   = PrimeField "Fq" 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001-    , field'  = PrimeField "Fr" 0xe7db4ea6533afa906673b0101343b00a6682093ccc81082d0970e5ed6f72cb7-    , imports = Nothing+  { name = "JubJub"+  , types = Types+    { curve = "JubJub"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000-    , d = PF 0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1+    { a = P 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000+    , d = P 0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1     , h = 0x8     , q = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001     , r = 0xe7db4ea6533afa906673b0101343b00a6682093ccc81082d0970e5ed6f72cb7-    , x = PF 0x5183972af8eff38ca624b4df00384882000c546bf2f39ede7f4ecf1a74f976c4-    , y = PF 0x3b43f8472ca2fc2c9e8fcc5abd9dc308096c8707ffa6833b146bad709349702e+    , x = P 0x5183972af8eff38ca624b4df00384882000c546bf2f39ede7f4ecf1a74f976c4+    , y = P 0x3b43f8472ca2fc2c9e8fcc5abd9dc308096c8707ffa6833b146bad709349702e     }   }
generate/Generate/Edwards/Types.hs view
@@ -5,6 +5,8 @@  import Protolude +import GHC.Natural (Natural)+ import Generate.Types  -------------------------------------------------------------------------------@@ -12,16 +14,17 @@ -------------------------------------------------------------------------------  data Curve = Curve-  { types      :: Types+  { name       :: Text+  , types      :: Types   , parameters :: Parameters   }  data Parameters = Parameters   { a :: Element   , d :: Element-  , h :: Integer-  , q :: Integer-  , r :: Integer+  , h :: Natural+  , q :: Natural+  , r :: Natural   , x :: Element   , y :: Element   }
generate/Generate/Generate.hs view
@@ -14,28 +14,25 @@ -------------------------------------------------------------------------------  prettyElement :: Element -> Doc-prettyElement (BF n)-  = "BF" <+> prettyInteger n-prettyElement (EF ns)-  = "EF" <+> align+prettyElement (B n)+  = "B" <+> prettyNatural n+prettyElement (E ns)+  = "E" <+> align     (    (if null ns then "[" else "[ ")     <>   hcat (punctuate "\n, " (map prettyElement ns))     <$$> "]"     )-prettyElement (PF n)-  = "PF" <+> prettyInteger n+prettyElement (P n)+  = "P" <+> prettyNatural n  prettyField :: Field -> Doc-prettyField (BinaryField fp p)-  = "BinaryField" <+> prettyText fp <+> prettyInteger p-prettyField (ExtensionField fq fp p s k)+prettyField (Binary f2m)+  = "Binary" <+> prettyText f2m+prettyField (Extension fq p x k)   = align-    (   "ExtensionField" <+> prettyText fq <+> prettyText fp-    <+> prettyText p <+> prettyText s <+> prettyField' k+    (    "Extension" <+> prettyText fq <+> prettyText p <+> prettyText x <+> "("+    <$$> indent 2 (prettyField k)+    <$$> ")"     )-  where-    prettyField' :: Maybe Field -> Doc-    prettyField' (Just f) = "(Just" <$$> "(" <+> align (prettyField f) <$$> "))"-    prettyField' _        = "Nothing"-prettyField (PrimeField f2m p)-  = "PrimeField" <+> prettyText f2m <+> prettyInteger p+prettyField (Prime fq)+  = "Prime" <+> prettyText fq
generate/Generate/Montgomery/Curve.hs view
@@ -14,34 +14,29 @@ -- Curve ------------------------------------------------------------------------------- -prettyImports :: Types -> Doc-prettyImports Types{..}-  =    "module Curve.Montgomery." <> pretty curve+prettyImports :: Text -> Types -> Doc+prettyImports name Types{..}+  =    "module Data.Curve.Montgomery." <> pretty name   <$$> indent 2-    (    "( module Curve.Montgomery"-    <$$> ", module Curve.Montgomery." <> pretty curve+    (    "( module Data.Curve.Montgomery"     <$$> ", Point(..)"+    <$$> "-- *" <+> pretty curve <+> "curve"+    <$$> ", module Data.Curve.Montgomery." <> pretty name     <$$> ") where"     )   <>   prettyBreak-  <$$> prettyImport field+  <$$> prettyImport   <>   prettyBreak-  <$$> "import Curve.Montgomery"-  <$$> maybe mempty pretty imports+  <$$> "import Data.Curve.Montgomery"+  <$$> if curve == name then mempty else "import Data.Curve.Montgomery."+  <>   pretty curve <+> "(" <> pretty curve <> ", Fq, Fr)" -prettyTypes :: Types -> Doc-prettyTypes Types{..}+prettyTypes :: Types -> Parameters -> Doc+prettyTypes Types{..} Parameters{..}   =    prettySection "Types"-  <$$> prettyDocumentation curve'-  <$$> "data" <+> pretty curve-  <>   prettyBreak-  <$$> prettyDocumentation ("Field of points of" <+> curve')-  <$$> prettyType field-  <>   prettyBreak-  <$$> prettyDocumentation ("Field of coefficients of" <+> curve')-  <$$> prettyType field'+  <$$> prettyType curve field q r   <>   prettyBreak-  <$$> prettyDocumentation (curve' <+> "is a Montgomery curve")+  <$$> prettyComment (curve' <+> "is a Montgomery curve")   <$$> "instance Curve 'Montgomery c" <+> pretty curve <+> prettyField field   <+>  "Fr => MCurve c" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2@@ -55,16 +50,12 @@     <$$> prettyInline "q_"     <$$> "r_ = const _r"     <$$> prettyInline "r_"-    <$$> "x_ = const _x"-    <$$> prettyInline "x_"-    <$$> "y_ = const _y"-    <$$> prettyInline "y_"     )   <>   prettyBreak   <$$> prettyDocumentation ("Affine" <+> curve' <+> "point")   <$$> "type PA = MAPoint" <+> pretty curve <+> prettyField field <+> "Fr"   <>   prettyBreak-  <$$> prettyDocumentation ("Affine" <+> curve' <+> "is a Montgomery affine curve")+  <$$> prettyComment ("Affine" <+> curve' <+> "is a Montgomery affine curve")   <$$> "instance MACurve" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2     (    "gA_ = gA"@@ -88,18 +79,18 @@   <$$> prettyInline "_b"   <>   prettyBreak   <$$> prettyDocumentation ("Cofactor of" <+> curve')-  <$$> "_h :: Integer"-  <$$> "_h =" <+> prettyInteger h+  <$$> "_h :: Natural"+  <$$> "_h =" <+> prettyNatural h   <$$> prettyInline "_h"   <>   prettyBreak   <$$> prettyDocumentation ("Characteristic of" <+> curve')-  <$$> "_q :: Integer"-  <$$> "_q =" <+> prettyInteger q+  <$$> "_q :: Natural"+  <$$> "_q =" <+> prettyNatural q   <$$> prettyInline "_q"   <>   prettyBreak   <$$> prettyDocumentation ("Order of" <+> curve')-  <$$> "_r :: Integer"-  <$$> "_r =" <+> prettyInteger r+  <$$> "_r :: Natural"+  <$$> "_r =" <+> prettyNatural r   <$$> prettyInline "_r"   <>   prettyBreak   <$$> prettyDocumentation ("Coordinate @X@ of" <+> curve')@@ -121,10 +112,10 @@     curve' = pretty curve <+> "curve"  prettyCurve :: Curve -> Doc-prettyCurve (Curve types parameters)-  =    prettyImports types+prettyCurve (Curve name types parameters)+  =    prettyImports name types   <>   prettyBreak-  <$$> prettyTypes types+  <$$> prettyTypes types parameters   <>   prettyBreak   <$$> prettyParameters types parameters   <>   prettyBreak
generate/Generate/Montgomery/Generate.hs view
@@ -23,8 +23,6 @@     <$$> ") where"     )   <>   prettyBreak-  <$$> "import Protolude"-  <>   prettyBreak   <$$> "import Generate.Montgomery.Types"  prettyCurves :: [Curve] -> Doc@@ -39,7 +37,7 @@     )   where     prettyCurves' :: Curve -> Doc-    prettyCurves' = pretty . toLower . curve . types+    prettyCurves' = pretty . toLower . name  prettyParameters :: [Curve] -> Doc prettyParameters curves@@ -47,26 +45,24 @@   <$$> vcat (punctuate prettyBreak (map prettyParameters' curves))   where     prettyParameters' :: Curve -> Doc-    prettyParameters' (Curve Types{..} Parameters{..})-      =    pretty (toLower curve) <+> ":: Curve"-      <$$> pretty (toLower curve) <+> "= Curve"+    prettyParameters' (Curve name Types{..} Parameters{..})+      =    pretty (toLower name) <+> ":: Curve"+      <$$> pretty (toLower name) <+> "= Curve"       <$$> indent 2-        (    "{ types = Types"+        (    "{ name =" <+> prettyText name+        <$$> ", types = Types"         <$$> indent 2-          (    "{ curve   =" <+> prettyText curve-          <$$> ", field   =" <+> prettyField field-          <$$> ", field'  =" <+> prettyField field'-          <$$> ", imports = "-          <>   maybe "Nothing" ((<>) "Just " . prettyText) imports+          (    "{ curve =" <+> prettyText curve+          <$$> ", field =" <+> prettyField field           <$$> "}"           )         <$$> ", parameters = Parameters"         <$$> indent 2           (    "{ a =" <+> prettyElement a           <$$> ", b =" <+> prettyElement b-          <$$> ", h =" <+> prettyInteger h-          <$$> ", q =" <+> prettyInteger q-          <$$> ", r =" <+> prettyInteger r+          <$$> ", h =" <+> prettyNatural h+          <$$> ", q =" <+> prettyNatural q+          <$$> ", r =" <+> prettyNatural r           <$$> ", x =" <+> prettyElement x           <$$> ", y =" <+> prettyElement y           <$$> "}"
generate/Generate/Montgomery/Parameters.hs view
@@ -2,8 +2,6 @@   ( curves   ) where -import Protolude- import Generate.Montgomery.Types  -------------------------------------------------------------------------------@@ -26,114 +24,108 @@  curve448 :: Curve curve448 = Curve-  { types = Types-    { curve   = "Curve448"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff-    , field'  = PrimeField "Fr" 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3-    , imports = Nothing+  { name = "Curve448"+  , types = Types+    { curve = "Curve448"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x262a6-    , b = PF 0x1+    { a = P 0x262a6+    , b = P 0x1     , h = 0x4     , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff     , r = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3-    , x = PF 0x5-    , y = PF 0x7d235d1295f5b1f66c98ab6e58326fcecbae5d34f55545d060f75dc28df3f6edb8027e2346430d211312c4b150677af76fd7223d457b5b1a+    , x = P 0x5+    , y = P 0x7d235d1295f5b1f66c98ab6e58326fcecbae5d34f55545d060f75dc28df3f6edb8027e2346430d211312c4b150677af76fd7223d457b5b1a     }   }  curve25519 :: Curve curve25519 = Curve-  { types = Types-    { curve   = "Curve25519"-    , field   = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed-    , field'  = PrimeField "Fr" 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed-    , imports = Nothing+  { name = "Curve25519"+  , types = Types+    { curve = "Curve25519"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x76d06-    , b = PF 0x1+    { a = P 0x76d06+    , b = P 0x1     , h = 0x8     , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed     , r = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed-    , x = PF 0x9-    , y = PF 0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9+    , x = P 0x9+    , y = P 0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9     }   }  curve383187 :: Curve curve383187 = Curve-  { types = Types-    { curve   = "Curve383187"-    , field   = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45-    , field'  = PrimeField "Fr" 0x1000000000000000000000000000000000000000000000000e85a85287a1488acd41ae84b2b7030446f72088b00a0e21-    , imports = Nothing+  { name = "Curve383187"+  , types = Types+    { curve = "Curve383187"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x38251-    , b = PF 0x1+    { a = P 0x38251+    , b = P 0x1     , h = 0x8     , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45     , r = 0x1000000000000000000000000000000000000000000000000e85a85287a1488acd41ae84b2b7030446f72088b00a0e21-    , x = PF 0x5-    , y = PF 0x1eebe07dc1871896732b12d5504a32370471965c7a11f2c89865f855ab3cbd7c224e3620c31af3370788457dd5ce46df+    , x = P 0x5+    , y = P 0x1eebe07dc1871896732b12d5504a32370471965c7a11f2c89865f855ab3cbd7c224e3620c31af3370788457dd5ce46df     }   }  m221 :: Curve m221 = Curve-  { types = Types-    { curve   = "M221"-    , field   = PrimeField "Fq" 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd-    , field'  = PrimeField "Fr" 0x40000000000000000000000000015a08ed730e8a2f77f005042605b-    , imports = Nothing+  { name = "M221"+  , types = Types+    { curve = "M221"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1c93a-    , b = PF 0x1+    { a = P 0x1c93a+    , b = P 0x1     , h = 0x8     , q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd     , r = 0x40000000000000000000000000015a08ed730e8a2f77f005042605b-    , x = PF 0x4-    , y = PF 0xf7acdd2a4939571d1cef14eca37c228e61dbff10707dc6c08c5056d+    , x = P 0x4+    , y = P 0xf7acdd2a4939571d1cef14eca37c228e61dbff10707dc6c08c5056d     }   }  m383 :: Curve m383 = Curve-  { types = Types-    { curve   = "M383"-    , field   = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45-    , field'  = PrimeField "Fr" 0x10000000000000000000000000000000000000000000000006c79673ac36ba6e7a32576f7b1b249e46bbc225be9071d7-    , imports = Nothing+  { name = "M383"+  , types = Types+    { curve = "M383"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x1f82fe-    , b = PF 0x1+    { a = P 0x1f82fe+    , b = P 0x1     , h = 0x8     , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45     , r = 0x10000000000000000000000000000000000000000000000006c79673ac36ba6e7a32576f7b1b249e46bbc225be9071d7-    , x = PF 0xc-    , y = PF 0x1ec7ed04aaf834af310e304b2da0f328e7c165f0e8988abd3992861290f617aa1f1b2e7d0b6e332e969991b62555e77e+    , x = P 0xc+    , y = P 0x1ec7ed04aaf834af310e304b2da0f328e7c165f0e8988abd3992861290f617aa1f1b2e7d0b6e332e969991b62555e77e     }   }  m511 :: Curve m511 = Curve-  { types = Types-    { curve   = "M511"-    , field   = PrimeField "Fq" 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45-    , field'  = PrimeField "Fr" 0x100000000000000000000000000000000000000000000000000000000000000017b5feff30c7f5677ab2aeebd13779a2ac125042a6aa10bfa54c15bab76baf1b-    , imports = Nothing+  { name = "M511"+  , types = Types+    { curve = "M511"+    , field = Prime "Fq"     }   , parameters = Parameters-    { a = PF 0x81806-    , b = PF 0x1+    { a = P 0x81806+    , b = P 0x1     , h = 0x8     , q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45     , r = 0x100000000000000000000000000000000000000000000000000000000000000017b5feff30c7f5677ab2aeebd13779a2ac125042a6aa10bfa54c15bab76baf1b-    , x = PF 0x5-    , y = PF 0x2fbdc0ad8530803d28fdbad354bb488d32399ac1cf8f6e01ee3f96389b90c809422b9429e8a43dbf49308ac4455940abe9f1dbca542093a895e30a64af056fa5+    , x = P 0x5+    , y = P 0x2fbdc0ad8530803d28fdbad354bb488d32399ac1cf8f6e01ee3f96389b90c809422b9429e8a43dbf49308ac4455940abe9f1dbca542093a895e30a64af056fa5     }   }
generate/Generate/Montgomery/Types.hs view
@@ -5,6 +5,8 @@  import Protolude +import GHC.Natural (Natural)+ import Generate.Types  -------------------------------------------------------------------------------@@ -12,16 +14,17 @@ -------------------------------------------------------------------------------  data Curve = Curve-  { types      :: Types+  { name       :: Text+  , types      :: Types   , parameters :: Parameters   }  data Parameters = Parameters   { a :: Element   , b :: Element-  , h :: Integer-  , q :: Integer-  , r :: Integer+  , h :: Natural+  , q :: Natural+  , r :: Natural   , x :: Element   , y :: Element   }
generate/Generate/Pretty.hs view
@@ -4,6 +4,7 @@  import Protolude +import GHC.Natural (Natural) import Numeric (showHex) import Text.PrettyPrint.Leijen.Text @@ -15,6 +16,10 @@ prettyBreak   = linebreak +prettyComment :: Doc -> Doc+prettyComment+  = enclose "-- " dot+ prettyDocumentation :: Doc -> Doc prettyDocumentation   = enclose "-- | " dot@@ -23,13 +28,13 @@ prettyInline   = braces . enclose "-# INLINABLE " " #-" -prettyInteger :: Integer -> Doc-prettyInteger-  = (<>) "0x" . pretty . flip showHex ""- prettyLine :: Doc prettyLine   = pretty (replicate 79 '-')++prettyNatural :: Natural -> Doc+prettyNatural+  = (<>) "0x" . pretty . flip showHex ""  prettySection :: Doc -> Doc prettySection
generate/Generate/Types.hs view
@@ -4,21 +4,21 @@  import Protolude +import GHC.Natural (Natural)+ ------------------------------------------------------------------------------- -- Types ------------------------------------------------------------------------------- -data Element = BF Integer-             | EF [Element]-             | PF Integer+data Element = B Natural+             | E [Element]+             | P Natural -data Field = BinaryField Text Integer-           | ExtensionField Text Text Text Text (Maybe Field)-           | PrimeField Text Integer+data Field = Binary Text+           | Extension Text Text Text Field+           | Prime Text  data Types = Types-  { curve   :: Text-  , field   :: Field-  , field'  :: Field-  , imports :: Maybe Text+  { curve :: Text+  , field :: Field   }
generate/Generate/Weierstrass/Curve.hs view
@@ -14,34 +14,29 @@ -- Curve ------------------------------------------------------------------------------- -prettyImports :: Types -> Doc-prettyImports Types{..}-  =    "module Curve.Weierstrass." <> pretty curve+prettyImports :: Text -> Types -> Doc+prettyImports name Types{..}+  =    "module Data.Curve.Weierstrass." <> pretty name   <$$> indent 2-    (    "( module Curve.Weierstrass"-    <$$> ", module Curve.Weierstrass." <> pretty curve+    (    "( module Data.Curve.Weierstrass"     <$$> ", Point(..)"+    <$$> "-- *" <+> pretty curve <+> "curve"+    <$$> ", module Data.Curve.Weierstrass." <> pretty name     <$$> ") where"     )   <>   prettyBreak-  <$$> prettyImport field+  <$$> prettyImport   <>   prettyBreak-  <$$> "import Curve.Weierstrass"-  <$$> maybe mempty pretty imports+  <$$> "import Data.Curve.Weierstrass"+  <$$> if curve == name then mempty else "import Data.Curve.Weierstrass."+  <>   pretty curve <+> "(" <> pretty curve <> ", Fq, Fr)" -prettyTypes :: Types -> Doc-prettyTypes Types{..}+prettyTypes :: Types -> Parameters -> Doc+prettyTypes Types{..} Parameters{..}   =    prettySection "Types"-  <$$> prettyDocumentation curve'-  <$$> "data" <+> pretty curve-  <>   prettyBreak-  <$$> prettyDocumentation ("Field of points of" <+> curve')-  <$$> prettyType field-  <>   prettyBreak-  <$$> prettyDocumentation ("Field of coefficients of" <+> curve')-  <$$> prettyType field'+  <$$> prettyType curve field q r   <>   prettyBreak-  <$$> prettyDocumentation (curve' <+> "is a Weierstrass curve")+  <$$> prettyComment (curve' <+> "is a Weierstrass curve")   <$$> "instance Curve 'Weierstrass c" <+> pretty curve <+> prettyField field   <+>  "Fr => WCurve c" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2@@ -55,16 +50,12 @@     <$$> prettyInline "q_"     <$$> "r_ = const _r"     <$$> prettyInline "r_"-    <$$> "x_ = const _x"-    <$$> prettyInline "x_"-    <$$> "y_ = const _y"-    <$$> prettyInline "y_"     )   <>   prettyBreak   <$$> prettyDocumentation ("Affine" <+> curve' <+> "point")   <$$> "type PA = WAPoint" <+> pretty curve <+> prettyField field <+> "Fr"   <>   prettyBreak-  <$$> prettyDocumentation ("Affine" <+> curve' <+> "is a Weierstrass affine curve")+  <$$> prettyComment ("Affine" <+> curve' <+> "is a Weierstrass affine curve")   <$$> "instance WACurve" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2     (    "gA_ = gA"@@ -74,7 +65,7 @@   <$$> prettyDocumentation ("Jacobian" <+> pretty curve <+> "point")   <$$> "type PJ = WJPoint" <+> pretty curve <+> prettyField field <+> "Fr"   <>   prettyBreak-  <$$> prettyDocumentation ("Jacobian" <+> curve' <+> "is a Weierstrass Jacobian curve")+  <$$> prettyComment ("Jacobian" <+> curve' <+> "is a Weierstrass Jacobian curve")   <$$> "instance WJCurve" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2     (    "gJ_ = gJ"@@ -84,7 +75,7 @@   <$$> prettyDocumentation ("Projective" <+> pretty curve <+> "point")   <$$> "type PP = WPPoint" <+> pretty curve <+> prettyField field <+> "Fr"   <>   prettyBreak-  <$$> prettyDocumentation ("Projective" <+> curve' <+> "is a Weierstrass projective curve")+  <$$> prettyComment ("Projective" <+> curve' <+> "is a Weierstrass projective curve")   <$$> "instance WPCurve" <+> pretty curve <+> prettyField field <+> "Fr where"   <$$> indent 2     (    "gP_ = gP"@@ -108,18 +99,18 @@   <$$> prettyInline "_b"   <>   prettyBreak   <$$> prettyDocumentation ("Cofactor of" <+> curve')-  <$$> "_h :: Integer"-  <$$> "_h =" <+> prettyInteger h+  <$$> "_h :: Natural"+  <$$> "_h =" <+> prettyNatural h   <$$> prettyInline "_h"   <>   prettyBreak   <$$> prettyDocumentation ("Characteristic of" <+> curve')-  <$$> "_q :: Integer"-  <$$> "_q =" <+> prettyInteger q+  <$$> "_q :: Natural"+  <$$> "_q =" <+> prettyNatural q   <$$> prettyInline "_q"   <>   prettyBreak   <$$> prettyDocumentation ("Order of" <+> curve')-  <$$> "_r :: Integer"-  <$$> "_r =" <+> prettyInteger r+  <$$> "_r :: Natural"+  <$$> "_r =" <+> prettyNatural r   <$$> prettyInline "_r"   <>   prettyBreak   <$$> prettyDocumentation ("Coordinate @X@ of" <+> curve')@@ -151,10 +142,10 @@     curve' = pretty curve <+> "curve"  prettyCurve :: Curve -> Doc-prettyCurve (Curve types parameters)-  =    prettyImports types+prettyCurve (Curve name types parameters)+  =    prettyImports name types   <>   prettyBreak-  <$$> prettyTypes types+  <$$> prettyTypes types parameters   <>   prettyBreak   <$$> prettyParameters types parameters   <>   prettyBreak
generate/Generate/Weierstrass/Generate.hs view
@@ -23,8 +23,6 @@     <$$> ") where"     )   <>   prettyBreak-  <$$> "import Protolude"-  <>   prettyBreak   <$$> "import Generate.Weierstrass.Types"  prettyCurves :: [Curve] -> Doc@@ -39,7 +37,7 @@     )   where     prettyCurves' :: Curve -> Doc-    prettyCurves' = pretty . toLower . curve . types+    prettyCurves' = pretty . toLower . name  prettyParameters :: [Curve] -> Doc prettyParameters curves@@ -47,26 +45,24 @@   <$$> vcat (punctuate prettyBreak (map prettyParameters' curves))   where     prettyParameters' :: Curve -> Doc-    prettyParameters' (Curve Types{..} Parameters{..})-      =    pretty (toLower curve) <+> ":: Curve"-      <$$> pretty (toLower curve) <+> "= Curve"+    prettyParameters' (Curve name Types{..} Parameters{..})+      =    pretty (toLower name) <+> ":: Curve"+      <$$> pretty (toLower name) <+> "= Curve"       <$$> indent 2-        (    "{ types = Types"+        (    "{ name =" <+> prettyText name+        <$$> ", types = Types"         <$$> indent 2-          (    "{ curve   =" <+> prettyText curve-          <$$> ", field   =" <+> prettyField field-          <$$> ", field'  =" <+> prettyField field'-          <$$> ", imports = "-          <>   maybe "Nothing" ((<>) "Just " . prettyText) imports+          (    "{ curve =" <+> prettyText curve+          <$$> ", field =" <+> prettyField field           <$$> "}"           )         <$$> ", parameters = Parameters"         <$$> indent 2           (    "{ a =" <+> prettyElement a           <$$> ", b =" <+> prettyElement b-          <$$> ", h =" <+> prettyInteger h-          <$$> ", q =" <+> prettyInteger q-          <$$> ", r =" <+> prettyInteger r+          <$$> ", h =" <+> prettyNatural h+          <$$> ", q =" <+> prettyNatural q+          <$$> ", r =" <+> prettyNatural r           <$$> ", x =" <+> prettyElement x           <$$> ", y =" <+> prettyElement y           <$$> "}"
generate/Generate/Weierstrass/Parameters.hs view
@@ -2,1034 +2,1091 @@   ( curves   ) where -import Protolude--import Generate.Weierstrass.Types------------------------------------------------------------------------------------ Curves----------------------------------------------------------------------------------curves :: [Curve]-curves =-  [ anomalous-  , anssifrp256v1-  , bls12381-  , bls12381t-  , bls48581-  , bls48581t-  , bn224-  , bn254-  , bn254t-  , bn254a-  , bn254at-  , bn254b-  , bn254bt-  , bn256-  , bn384-  , bn462-  , bn462t-  , bn512-  , brainpoolp160r1-  , brainpoolp160t1-  , brainpoolp192r1-  , brainpoolp192t1-  , brainpoolp224r1-  , brainpoolp224t1-  , brainpoolp256r1-  , brainpoolp256t1-  , brainpoolp320r1-  , brainpoolp320t1-  , brainpoolp384r1-  , brainpoolp384t1-  , brainpoolp512r1-  , brainpoolp512t1-  , secp112r1-  , secp112r2-  , secp128r1-  , secp128r2-  , secp160k1-  , secp160r1-  , secp160r2-  , secp192k1-  , secp192r1-  , secp224k1-  , secp224r1-  , secp256k1-  , secp256r1-  , secp384r1-  , secp521r1-  ]------------------------------------------------------------------------------------ Parameters----------------------------------------------------------------------------------anomalous :: Curve-anomalous = Curve-  { types = Types-    { curve   = "Anomalous"-    , field   = PrimeField "Fq" 0xb0000000000000000000000953000000000000000000001f9d7-    , field'  = PrimeField "Fr" 0xb0000000000000000000000953000000000000000000001f9d7-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x98d0fac687d6343eb1a1f595283eb1a1f58d0fac687d635f5e4-    , b = PF 0x4a1f58d0fac687d6343eb1a5e2d6343eb1a1f58d0fac688ab3f-    , h = 0x1-    , q = 0xb0000000000000000000000953000000000000000000001f9d7-    , r = 0xb0000000000000000000000953000000000000000000001f9d7-    , x = PF 0x101efb35fd1963c4871a2d17edaafa7e249807f58f8705126c6-    , y = PF 0x22389a3954375834304ba1d509a97de6c07148ea7f5951b20e7-    }-  }--anssifrp256v1 :: Curve-anssifrp256v1 = Curve-  { types = Types-    { curve   = "ANSSIFRP256V1"-    , field   = PrimeField "Fq" 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c03-    , field'  = PrimeField "Fr" 0xf1fd178c0b3ad58f10126de8ce42435b53dc67e140d2bf941ffdd459c6d655e1-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c00-    , b = PF 0xee353fca5428a9300d4aba754a44c00fdfec0c9ae4b1a1803075ed967b7bb73f-    , h = 0x1-    , q = 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c03-    , r = 0xf1fd178c0b3ad58f10126de8ce42435b53dc67e140d2bf941ffdd459c6d655e1-    , x = PF 0xb6b3d4c356c139eb31183d4749d423958c27d2dcaf98b70164c97a2dd98f5cff-    , y = PF 0x6142e0f7c8b204911f9271f0f3ecef8c2701c307e8e4c9e183115a1554062cfb-    }-  }--bls12381 :: Curve-bls12381 = Curve-  { types = Types-    { curve   = "BLS12381"-    , field   = PrimeField "Fq" 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab-    , field'  = PrimeField "Fr" 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x4-    , h = 0x396c8c005555e1568c00aaab0000aaab-    , q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab-    , r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001-    , x = PF 0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb-    , y = PF 0x8b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1-    }-  }--bls12381t :: Curve-bls12381t = Curve-  { types = Types-    { curve   = "BLS12381T"-    , field   = ExtensionField "Fq2" "Fq" "PolynomialU" "X2 + 1" Nothing-    , field'  = PrimeField "Fr" 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001-    , imports = Just "import Curve.Weierstrass.BLS12381 (Fq)"-    }-  , parameters = Parameters-    { a = EF [-             ]-    , b = EF [ PF 0x4-             , PF 0x4-             ]-    , h = 0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5-    , q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab-    , r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001-    , x = EF [ PF 0x24aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8-             , PF 0x13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e-             ]-    , y = EF [ PF 0xce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801-             , PF 0x606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be-             ]-    }-  }--bls48581 :: Curve-bls48581 = Curve-  { types = Types-    { curve   = "BLS48581"-    , field   = PrimeField "Fq" 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b-    , field'  = PrimeField "Fr" 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x1-    , h = 0x85555841aaaec4ac-    , q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b-    , r = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01-    , x = PF 0x2af59b7ac340f2baf2b73df1e93f860de3f257e0e86868cf61abdbaedffb9f7544550546a9df6f9645847665d859236ebdbc57db368b11786cb74da5d3a1e6d8c3bce8732315af640-    , y = PF 0xcefda44f6531f91f86b3a2d1fb398a488a553c9efeb8a52e991279dd41b720ef7bb7beffb98aee53e80f678584c3ef22f487f77c2876d1b2e35f37aef7b926b576dbb5de3e2587a70-    }-  }--bls48581t :: Curve-bls48581t = Curve-  { types = Types-    { curve   = "BLS48581T"-    , field   = ExtensionField "Fq8" "Fq4" "PolynomialW" "X2 + Y X" (Just-                ( ExtensionField "Fq4" "Fq2" "PolynomialV" "X2 + 1 + Y X" (Just-                  ( ExtensionField "Fq2" "Fq" "PolynomialU" "X2 + 1" Nothing-                  ))-                ))-    , field'  = PrimeField "Fr" 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01-    , imports = Just "import Curve.Weierstrass.BLS48581 (Fq)"-    }-  , parameters = Parameters-    { a = EF [-             ]-    , b = EF [ EF [-                  ]-             , EF [ EF [-                       ]-                  , EF [ PF 0x9407b9ff9a3b7989c12718ea38095002b7427c6891098dd9df36078f9cbaa225245721d7b7041566ce6981ca7a39b6d7b41b3d2a898b877052bc7efb90d2524561f6e0aa732b2c895-                       , PF 0x9407b9ff9a3b7989c12718ea38095002b7427c6891098dd9df36078f9cbaa225245721d7b7041566ce6981ca7a39b6d7b41b3d2a898b877052bc7efb90d2524561f6e0aa732b2c896-                       ]-                  ]-             ]-    , h = 0x170e915cb0a6b7406b8d94042317f811d6bc3fc6e211ada42e58ccfcb3ac076a7e4499d700a0c23dc4b0c078f92def8c87b7fe63e1eea270db353a4ef4d38b5998ad8f0d042ea24c8f02be1c0c83992fe5d7725227bb27123a949e0876c0a8ce0a67326db0e955dcb791b867f31d6bfa62fbdd5f44a00504df04e186fae033f1eb43c1b1a08b6e086eff03c8fee9ebdd1e191a8a4b0466c90b389987de5637d5dd13dab33196bd2e5afa6cd19cf0fc3fc7db7ece1f3fac742626b1b02fcee04043b2ea96492f6afa51739597c54bb78aa6b0b99319fef9d09f768831018ee6564c68d054c62f2e0b4549426fec24ab26957a669dba2a2b6945ce40c9aec6afdeda16c79e15546cd7771fa544d5364236690ea06832679562a68731420ae52d0d35a90b8d10b688e31b6aee45f45b7a5083c71732105852decc888f64839a4de33b99521f0984a418d20fc7b0609530e454f0696fa2a8075ac01cc8ae3869e8d0fe1f3788ffac4c01aa2720e431da333c83d9663bfb1fb7a1a7b90528482c6be7892299030bb51a51dc7e91e9156874416bf4c26f1ea7ec578058563960ef92bbbb8632d3a1b695f954af10e9a78e40acffc13b06540aae9da5287fc4429485d44e6289d8c0d6a3eb2ece35012452751839fb48bc14b515478e2ff412d930ac20307561f3a5c998e6bcbfebd97effc6433033a2361bfcdc4fc74ad379a16c6dea49c209b1-    , q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b-    , r = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01-    , x = EF [ EF [ EF [ PF 0x5d615d9a7871e4a38237fa45a2775debabbefc70344dbccb7de64db3a2ef156c46ff79baad1a8c42281a63ca0612f400503004d80491f510317b79766322154dec34fd0b4ace8bfab-                       , PF 0x7c4973ece2258512069b0e86abc07e8b22bb6d980e1623e9526f6da12307f4e1c3943a00abfedf16214a76affa62504f0c3c7630d979630ffd75556a01afa143f1669b36676b47c57-                       ]-                  , EF [ PF 0x1fccc70198f1334e1b2ea1853ad83bc73a8a6ca9ae237ca7a6d6957ccbab5ab6860161c1dbd19242ffae766f0d2a6d55f028cbdfbb879d5fea8ef4cded6b3f0b46488156ca55a3e6a-                       , PF 0xbe2218c25ceb6185c78d8012954d4bfe8f5985ac62f3e5821b7b92a393f8be0cc218a95f63e1c776e6ec143b1b279b9468c31c5257c200ca52310b8cb4e80bc3f09a7033cbb7feafe-                       ]-                  ]-             , EF [ EF [ PF 0x38b91c600b35913a3c598e4caa9dd63007c675d0b1642b5675ff0e7c5805386699981f9e48199d5ac10b2ef492ae589274fad55fc1889aa80c65b5f746c9d4cbb739c3a1c53f8cce5-                       , PF 0xc96c7797eb0738603f1311e4ecda088f7b8f35dcef0977a3d1a58677bb037418181df63835d28997eb57b40b9c0b15dd7595a9f177612f097fc7960910fce3370f2004d914a3c093a-                       ]-                  , EF [ PF 0xb9b7951c6061ee3f0197a498908aee660dea41b39d13852b6db908ba2c0b7a449cef11f293b13ced0fd0caa5efcf3432aad1cbe4324c22d63334b5b0e205c3354e41607e60750e057-                       , PF 0x827d5c22fb2bdec5282624c4f4aaa2b1e5d7a9defaf47b5211cf741719728a7f9f8cfca93f29cff364a7190b7e2b0d4585479bd6aebf9fc44e56af2fc9e97c3f84e19da00fbc6ae34-                       ]-                  ]-             ]-    , y = EF [ EF [ EF [ PF 0xeb53356c375b5dfa497216452f3024b918b4238059a577e6f3b39ebfc435faab0906235afa27748d90f7336d8ae5163c1599abf77eea6d659045012ab12c0ff323edd3fe4d2d7971-                       , PF 0x284dc75979e0ff144da6531815fcadc2b75a422ba325e6fba01d72964732fcbf3afb096b243b1f192c5c3d1892ab24e1dd212fa097d760e2e588b423525ffc7b111471db936cd5665-                       ]-                  , EF [ PF 0xb36a201dd008523e421efb70367669ef2c2fc5030216d5b119d3a480d370514475f7d5c99d0e90411515536ca3295e5e2f0c1d35d51a652269cbc7c46fc3b8fde68332a526a2a8474-                       , PF 0xaec25a4621edc0688223fbbd478762b1c2cded3360dcee23dd8b0e710e122d2742c89b224333fa40dced2817742770ba10d67bda503ee5e578fb3d8b8a1e5337316213da92841589d-                       ]-                  ]-             , EF [ EF [ PF 0xd209d5a223a9c46916503fa5a88325a2554dc541b43dd93b5a959805f1129857ed85c77fa238cdce8a1e2ca4e512b64f59f430135945d137b08857fdddfcf7a43f47831f982e50137-                       , PF 0x7d0d03745736b7a513d339d5ad537b90421ad66eb16722b589d82e2055ab7504fa83420e8c270841f6824f47c180d139e3aafc198caa72b679da59ed8226cf3a594eedc58cf90bee4-                       ]-                  , EF [ PF 0x896767811be65ea25c2d05dfdd17af8a006f364fc0841b064155f14e4c819a6df98f425ae3a2864f22c1fab8c74b2618b5bb40fa639f53dccc9e884017d9aa62b3d41faeafeb23986-                       , PF 0x35e2524ff89029d393a5c07e84f981b5e068f1406be8e50c87549b6ef8eca9a9533a3f8e69c31e97e1ad0333ec719205417300d8c4ab33f748e5ac66e84069c55d667ffcb732718b6-                       ]-                  ]-             ]-    }-  }--bn224 :: Curve-bn224 = Curve-  { types = Types-    { curve   = "BN224"-    , field   = PrimeField "Fq" 0xfffffffffff107288ec29e602c4520db42180823bb907d1287127833-    , field'  = PrimeField "Fr" 0xfffffffffff107288ec29e602c4420db4218082b36c2accff76c58ed-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x3-    , h = 0x1-    , q = 0xfffffffffff107288ec29e602c4520db42180823bb907d1287127833-    , r = 0xfffffffffff107288ec29e602c4420db4218082b36c2accff76c58ed-    , x = PF 0x1-    , y = PF 0x2-    }-  }--bn254 :: Curve-bn254 = Curve-  { types = Types-    { curve   = "BN254"-    , field   = PrimeField "Fq" 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47-    , field'  = PrimeField "Fr" 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x3-    , h = 0x1-    , q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47-    , r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001-    , x = PF 0x1-    , y = PF 0x2-    }-  }--bn254t :: Curve-bn254t = Curve-  { types = Types-    { curve   = "BN254T"-    , field   = ExtensionField "Fq2" "Fq" "PolynomialU" "X2 + 1" Nothing-    , field'  = PrimeField "Fr" 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001-    , imports = Just "import Curve.Weierstrass.BN254 (Fq)"-    }-  , parameters = Parameters-    { a = EF [-             ]-    , b = EF [ PF 0x2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5-             , PF 0x9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2-             ]-    , h = 0x30644e72e131a029b85045b68181585e06ceecda572a2489345f2299c0f9fa8d-    , q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47-    , r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001-    , x = EF [ PF 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed-             , PF 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2-             ]-    , y = EF [ PF 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa-             , PF 0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b-             ]-    }-  }--bn254a :: Curve-bn254a = Curve-  { types = Types-    { curve   = "BN254A"-    , field   = PrimeField "Fq" 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001-    , field'  = PrimeField "Fr" 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x5-    , h = 0x1-    , q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001-    , r = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001-    , x = PF 0x1-    , y = PF 0xd45589b158faaf6ab0e4ad38d998e9982e7ff63964ee1460342a592677cccb0-    }-  }--bn254at :: Curve-bn254at = Curve-  { types = Types-    { curve   = "BN254AT"-    , field   = ExtensionField "Fq2" "Fq" "PolynomialU" "X2 + 5" Nothing-    , field'  = PrimeField "Fr" 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001-    , imports = Just "import Curve.Weierstrass.BN254A (Fq)"-    }-  , parameters = Parameters-    { a = EF [-             ]-    , b = EF [ PF 0x0-             , PF 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000000-             ]-    , h = 0x2370fb049d410fbe4e761a9886e50241dc42cf101e0000017e80600000000001-    , q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001-    , r = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001-    , x = EF [ PF 0x19b0bea4afe4c330da93cc3533da38a9f430b471c6f8a536e81962ed967909b5-             , PF 0xa1cf585585a61c6e9880b1f2a5c539f7d906fff238fa6341e1de1a2e45c3f72-             ]-    , y = EF [ PF 0x17abd366ebbd65333e49c711a80a0cf6d24adf1b9b3990eedcc91731384d2627-             , PF 0xee97d6de9902a27d00e952232a78700863bc9aa9be960c32f5bf9fd0a32d345-             ]-    }-  }--bn254b :: Curve-bn254b = Curve-  { types = Types-    { curve   = "BN254B"-    , field   = PrimeField "Fq" 0x2523648240000001ba344d80000000086121000000000013a700000000000013-    , field'  = PrimeField "Fr" 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x2-    , h = 0x1-    , q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013-    , r = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d-    , x = PF 0x2523648240000001ba344d80000000086121000000000013a700000000000012-    , y = PF 0x1-    }-  }--bn254bt :: Curve-bn254bt = Curve-  { types = Types-    { curve   = "BN254BT"-    , field   = ExtensionField "Fq2" "Fq" "PolynomialU" "X2 + 1" Nothing-    , field'  = PrimeField "Fr" 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d-    , imports = Just "import Curve.Weierstrass.BN254B (Fq)"-    }-  , parameters = Parameters-    { a = EF [-             ]-    , b = EF [ PF 0x1-             , PF 0x2523648240000001ba344d80000000086121000000000013a700000000000012-             ]-    , h = 0x2523648240000001ba344d8000000008c2a2800000000016ad00000000000019-    , q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013-    , r = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d-    , x = EF [ PF 0x61a10bb519eb62feb8d8c7e8c61edb6a4648bbb4898bf0d91ee4224c803fb2b-             , PF 0x516aaf9ba737833310aa78c5982aa5b1f4d746bae3784b70d8c34c1e7d54cf3-             ]-    , y = EF [ PF 0x21897a06baf93439a90e096698c822329bd0ae6bdbe09bd19f0e07891cd2b9a-             , PF 0xebb2b0e7c8b15268f6d4456f5f38d37b09006ffd739c9578a2d1aec6b3ace9b-             ]-    }-  }--bn256 :: Curve-bn256 = Curve-  { types = Types-    { curve   = "BN256"-    , field   = PrimeField "Fq" 0xfffffffffffcf0cd46e5f25eee71a49f0cdc65fb12980a82d3292ddbaed33013-    , field'  = PrimeField "Fr" 0xfffffffffffcf0cd46e5f25eee71a49e0cdc65fb1299921af62d536cd10b500d-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x3-    , h = 0x1-    , q = 0xfffffffffffcf0cd46e5f25eee71a49f0cdc65fb12980a82d3292ddbaed33013-    , r = 0xfffffffffffcf0cd46e5f25eee71a49e0cdc65fb1299921af62d536cd10b500d-    , x = PF 0x1-    , y = PF 0x2-    }-  }--bn384 :: Curve-bn384 = Curve-  { types = Types-    { curve   = "BN384"-    , field   = PrimeField "Fq" 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca024c8fbe29531892c79534f9d306328261550a7cabd7cccd10b-    , field'  = PrimeField "Fr" 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca023c8fbe29531892c795356487d8ac63e4f4db17384341a5775-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x3-    , h = 0x1-    , q = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca024c8fbe29531892c79534f9d306328261550a7cabd7cccd10b-    , r = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca023c8fbe29531892c795356487d8ac63e4f4db17384341a5775-    , x = PF 0x1-    , y = PF 0x2-    }-  }--bn462 :: Curve-bn462 = Curve-  { types = Types-    { curve   = "BN462"-    , field   = PrimeField "Fq" 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013-    , field'  = PrimeField "Fr" 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x5-    , h = 0x1-    , q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013-    , r = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d-    , x = PF 0x21a6d67ef250191fadba34a0a30160b9ac9264b6f95f63b3edbec3cf4b2e689db1bbb4e69a416a0b1e79239c0372e5cd70113c98d91f36b6980d-    , y = PF 0x118ea0460f7f7abb82b33676a7432a490eeda842cccfa7d788c659650426e6af77df11b8ae40eb80f475432c66600622ecaa8a5734d36fb03de-    }-  }--bn462t :: Curve-bn462t = Curve-  { types = Types-    { curve   = "BN462T"-    , field   = ExtensionField "Fq2" "Fq" "PolynomialU" "X2 + 1" Nothing-    , field'  = PrimeField "Fr" 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d-    , imports = Just "import Curve.Weierstrass.BN462 (Fq)"-    }-  , parameters = Parameters-    { a = EF [-             ]-    , b = EF [ PF 0x2-             , PF 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138012-             ]-    , h = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908fa1ce0227fffffffff6ff66fc63f5f7f4c0000000002401b008a0168019-    , q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013-    , r = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d-    , x = EF [ PF 0x257ccc85b58dda0dfb38e3a8cbdc5482e0337e7c1cd96ed61c913820408208f9ad2699bad92e0032ae1f0aa6a8b48807695468e3d934ae1e4df-             , PF 0x1d2e4343e8599102af8edca849566ba3c98e2a354730cbed9176884058b18134dd86bae555b783718f50af8b59bf7e850e9b73108ba6aa8cd283-             ]-    , y = EF [ PF 0xa0650439da22c1979517427a20809eca035634706e23c3fa7a6bb42fe810f1399a1f41c9ddae32e03695a140e7b11d7c3376e5b68df0db7154e-             , PF 0x73ef0cbd438cbe0172c8ae37306324d44d5e6b0c69ac57b393f1ab370fd725cc647692444a04ef87387aa68d53743493b9eba14cc552ca2a93a-             ]-    }-  }--bn512 :: Curve-bn512 = Curve-  { types = Types-    { curve   = "BN512"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef455146cf1eacbe98b8e48c65deab236fe1916a55ce5f4c6467b4eb280922adef33-    , field'  = PrimeField "Fr" 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef445146cf1eacbe98b8e48c65deab2679a34a10313e04f9a2b406a64a5f519a09ed-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x3-    , h = 0x1-    , q = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef455146cf1eacbe98b8e48c65deab236fe1916a55ce5f4c6467b4eb280922adef33-    , r = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef445146cf1eacbe98b8e48c65deab2679a34a10313e04f9a2b406a64a5f519a09ed-    , x = PF 0x1-    , y = PF 0x2-    }-  }--brainpoolp160r1 :: Curve-brainpoolp160r1 = Curve-  { types = Types-    { curve   = "BrainpoolP160R1"-    , field   = PrimeField "Fq" 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f-    , field'  = PrimeField "Fr" 0xe95e4a5f737059dc60df5991d45029409e60fc09-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x340e7be2a280eb74e2be61bada745d97e8f7c300-    , b = PF 0x1e589a8595423412134faa2dbdec95c8d8675e58-    , h = 0x1-    , q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f-    , r = 0xe95e4a5f737059dc60df5991d45029409e60fc09-    , x = PF 0xbed5af16ea3f6a4f62938c4631eb5af7bdbcdbc3-    , y = PF 0x1667cb477a1a8ec338f94741669c976316da6321-    }-  }--brainpoolp160t1 :: Curve-brainpoolp160t1 = Curve-  { types = Types-    { curve   = "BrainpoolP160T1"-    , field   = PrimeField "Fq" 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f-    , field'  = PrimeField "Fr" 0xe95e4a5f737059dc60df5991d45029409e60fc09-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xe95e4a5f737059dc60dfc7ad95b3d8139515620c-    , b = PF 0x7a556b6dae535b7b51ed2c4d7daa7a0b5c55f380-    , h = 0x1-    , q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f-    , r = 0xe95e4a5f737059dc60df5991d45029409e60fc09-    , x = PF 0xb199b13b9b34efc1397e64baeb05acc265ff2378-    , y = PF 0xadd6718b7c7c1961f0991b842443772152c9e0ad-    }-  }--brainpoolp192r1 :: Curve-brainpoolp192r1 = Curve-  { types = Types-    { curve   = "BrainpoolP192R1"-    , field   = PrimeField "Fq" 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297-    , field'  = PrimeField "Fr" 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x6a91174076b1e0e19c39c031fe8685c1cae040e5c69a28ef-    , b = PF 0x469a28ef7c28cca3dc721d044f4496bcca7ef4146fbf25c9-    , h = 0x1-    , q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297-    , r = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1-    , x = PF 0xc0a0647eaab6a48753b033c56cb0f0900a2f5c4853375fd6-    , y = PF 0x14b690866abd5bb88b5f4828c1490002e6773fa2fa299b8f-    }-  }--brainpoolp192t1 :: Curve-brainpoolp192t1 = Curve-  { types = Types-    { curve   = "BrainpoolP192T1"-    , field   = PrimeField "Fq" 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297-    , field'  = PrimeField "Fr" 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xc302f41d932a36cda7a3463093d18db78fce476de1a86294-    , b = PF 0x13d56ffaec78681e68f9deb43b35bec2fb68542e27897b79-    , h = 0x1-    , q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297-    , r = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1-    , x = PF 0x3ae9e58c82f63c30282e1fe7bbf43fa72c446af6f4618129-    , y = PF 0x97e2c5667c2223a902ab5ca449d0084b7e5b3de7ccc01c9-    }-  }--brainpoolp224r1 :: Curve-brainpoolp224r1 = Curve-  { types = Types-    { curve   = "BrainpoolP224R1"-    , field   = PrimeField "Fq" 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff-    , field'  = PrimeField "Fr" 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x68a5e62ca9ce6c1c299803a6c1530b514e182ad8b0042a59cad29f43-    , b = PF 0x2580f63ccfe44138870713b1a92369e33e2135d266dbb372386c400b-    , h = 0x1-    , q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff-    , r = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f-    , x = PF 0xd9029ad2c7e5cf4340823b2a87dc68c9e4ce3174c1e6efdee12c07d-    , y = PF 0x58aa56f772c0726f24c6b89e4ecdac24354b9e99caa3f6d3761402cd-    }-  }--brainpoolp224t1 :: Curve-brainpoolp224t1 = Curve-  { types = Types-    { curve   = "BrainpoolP224T1"-    , field   = PrimeField "Fq" 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff-    , field'  = PrimeField "Fr" 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0fc-    , b = PF 0x4b337d934104cd7bef271bf60ced1ed20da14c08b3bb64f18a60888d-    , h = 0x1-    , q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff-    , r = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f-    , x = PF 0x6ab1e344ce25ff3896424e7ffe14762ecb49f8928ac0c76029b4d580-    , y = PF 0x374e9f5143e568cd23f3f4d7c0d4b1e41c8cc0d1c6abd5f1a46db4c-    }-  }--brainpoolp256r1 :: Curve-brainpoolp256r1 = Curve-  { types = Types-    { curve   = "BrainpoolP256R1"-    , field   = PrimeField "Fq" 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377-    , field'  = PrimeField "Fr" 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x7d5a0975fc2c3057eef67530417affe7fb8055c126dc5c6ce94a4b44f330b5d9-    , b = PF 0x26dc5c6ce94a4b44f330b5d9bbd77cbf958416295cf7e1ce6bccdc18ff8c07b6-    , h = 0x1-    , q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377-    , r = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7-    , x = PF 0x8bd2aeb9cb7e57cb2c4b482ffc81b7afb9de27e1e3bd23c23a4453bd9ace3262-    , y = PF 0x547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997-    }-  }--brainpoolp256t1 :: Curve-brainpoolp256t1 = Curve-  { types = Types-    { curve   = "BrainpoolP256T1"-    , field   = PrimeField "Fq" 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377-    , field'  = PrimeField "Fr" 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5374-    , b = PF 0x662c61c430d84ea4fe66a7733d0b76b7bf93ebc4af2f49256ae58101fee92b04-    , h = 0x1-    , q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377-    , r = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7-    , x = PF 0xa3e8eb3cc1cfe7b7732213b23a656149afa142c47aafbc2b79a191562e1305f4-    , y = PF 0x2d996c823439c56d7f7b22e14644417e69bcb6de39d027001dabe8f35b25c9be-    }-  }--brainpoolp320r1 :: Curve-brainpoolp320r1 = Curve-  { types = Types-    { curve   = "BrainpoolP320R1"-    , field   = PrimeField "Fq" 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27-    , field'  = PrimeField "Fr" 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x3ee30b568fbab0f883ccebd46d3f3bb8a2a73513f5eb79da66190eb085ffa9f492f375a97d860eb4-    , b = PF 0x520883949dfdbc42d3ad198640688a6fe13f41349554b49acc31dccd884539816f5eb4ac8fb1f1a6-    , h = 0x1-    , q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27-    , r = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311-    , x = PF 0x43bd7e9afb53d8b85289bcc48ee5bfe6f20137d10a087eb6e7871e2a10a599c710af8d0d39e20611-    , y = PF 0x14fdd05545ec1cc8ab4093247f77275e0743ffed117182eaa9c77877aaac6ac7d35245d1692e8ee1-    }-  }--brainpoolp320t1 :: Curve-brainpoolp320t1 = Curve-  { types = Types-    { curve   = "BrainpoolP320T1"-    , field   = PrimeField "Fq" 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27-    , field'  = PrimeField "Fr" 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e24-    , b = PF 0xa7f561e038eb1ed560b3d147db782013064c19f27ed27c6780aaf77fb8a547ceb5b4fef422340353-    , h = 0x1-    , q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27-    , r = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311-    , x = PF 0x925be9fb01afc6fb4d3e7d4990010f813408ab106c4f09cb7ee07868cc136fff3357f624a21bed52-    , y = PF 0x63ba3a7a27483ebf6671dbef7abb30ebee084e58a0b077ad42a5a0989d1ee71b1b9bc0455fb0d2c3-    }-  }--brainpoolp384r1 :: Curve-brainpoolp384r1 = Curve-  { types = Types-    { curve   = "BrainpoolP384R1"-    , field   = PrimeField "Fq" 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53-    , field'  = PrimeField "Fr" 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x7bc382c63d8c150c3c72080ace05afa0c2bea28e4fb22787139165efba91f90f8aa5814a503ad4eb04a8c7dd22ce2826-    , b = PF 0x4a8c7dd22ce28268b39b55416f0447c2fb77de107dcd2a62e880ea53eeb62d57cb4390295dbc9943ab78696fa504c11-    , h = 0x1-    , q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53-    , r = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565-    , x = PF 0x1d1c64f068cf45ffa2a63a81b7c13f6b8847a3e77ef14fe3db7fcafe0cbd10e8e826e03436d646aaef87b2e247d4af1e-    , y = PF 0x8abe1d7520f9c2a45cb1eb8e95cfd55262b70b29feec5864e19c054ff99129280e4646217791811142820341263c5315-    }-  }--brainpoolp384t1 :: Curve-brainpoolp384t1 = Curve-  { types = Types-    { curve   = "BrainpoolP384T1"-    , field   = PrimeField "Fq" 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53-    , field'  = PrimeField "Fr" 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec50-    , b = PF 0x7f519eada7bda81bd826dba647910f8c4b9346ed8ccdc64e4b1abd11756dce1d2074aa263b88805ced70355a33b471ee-    , h = 0x1-    , q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53-    , r = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565-    , x = PF 0x18de98b02db9a306f2afcd7235f72a819b80ab12ebd653172476fecd462aabffc4ff191b946a5f54d8d0aa2f418808cc-    , y = PF 0x25ab056962d30651a114afd2755ad336747f93475b7a1fca3b88f2b6a208ccfe469408584dc2b2912675bf5b9e582928-    }-  }--brainpoolp512r1 :: Curve-brainpoolp512r1 = Curve-  { types = Types-    { curve   = "BrainpoolP512R1"-    , field   = PrimeField "Fq" 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3-    , field'  = PrimeField "Fr" 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x7830a3318b603b89e2327145ac234cc594cbdd8d3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94ca-    , b = PF 0x3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94cadc083e67984050b75ebae5dd2809bd638016f723-    , h = 0x1-    , q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3-    , r = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069-    , x = PF 0x81aee4bdd82ed9645a21322e9c4c6a9385ed9f70b5d916c1b43b62eef4d0098eff3b1f78e2d0d48d50d1687b93b97d5f7c6d5047406a5e688b352209bcb9f822-    , y = PF 0x7dde385d566332ecc0eabfa9cf7822fdf209f70024a57b1aa000c55b881f8111b2dcde494a5f485e5bca4bd88a2763aed1ca2b2fa8f0540678cd1e0f3ad80892-    }-  }--brainpoolp512t1 :: Curve-brainpoolp512t1 = Curve-  { types = Types-    { curve   = "BrainpoolP512T1"-    , field   = PrimeField "Fq" 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3-    , field'  = PrimeField "Fr" 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f0-    , b = PF 0x7cbbbcf9441cfab76e1890e46884eae321f70c0bcb4981527897504bec3e36a62bcdfa2304976540f6450085f2dae145c22553b465763689180ea2571867423e-    , h = 0x1-    , q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3-    , r = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069-    , x = PF 0x640ece5c12788717b9c1ba06cbc2a6feba85842458c56dde9db1758d39c0313d82ba51735cdb3ea499aa77a7d6943a64f7a3f25fe26f06b51baa2696fa9035da-    , y = PF 0x5b534bd595f5af0fa2c892376c84ace1bb4e3019b71634c01131159cae03cee9d9932184beef216bd71df2dadf86a627306ecff96dbb8bace198b61e00f8b332-    }-  }--secp112r1 :: Curve-secp112r1 = Curve-  { types = Types-    { curve   = "SECP112R1"-    , field   = PrimeField "Fq" 0xdb7c2abf62e35e668076bead208b-    , field'  = PrimeField "Fr" 0xdb7c2abf62e35e7628dfac6561c5-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xdb7c2abf62e35e668076bead2088-    , b = PF 0x659ef8ba043916eede8911702b22-    , h = 0x1-    , q = 0xdb7c2abf62e35e668076bead208b-    , r = 0xdb7c2abf62e35e7628dfac6561c5-    , x = PF 0x9487239995a5ee76b55f9c2f098-    , y = PF 0xa89ce5af8724c0a23e0e0ff77500-    }-  }--secp112r2 :: Curve-secp112r2 = Curve-  { types = Types-    { curve   = "SECP112R2"-    , field   = PrimeField "Fq" 0xdb7c2abf62e35e668076bead208b-    , field'  = PrimeField "Fr" 0x36df0aafd8b8d7597ca10520d04b-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x6127c24c05f38a0aaaf65c0ef02c-    , b = PF 0x51def1815db5ed74fcc34c85d709-    , h = 0x4-    , q = 0xdb7c2abf62e35e668076bead208b-    , r = 0x36df0aafd8b8d7597ca10520d04b-    , x = PF 0x4ba30ab5e892b4e1649dd0928643-    , y = PF 0xadcd46f5882e3747def36e956e97-    }-  }--secp128r1 :: Curve-secp128r1 = Curve-  { types = Types-    { curve   = "SECP128R1"-    , field   = PrimeField "Fq" 0xfffffffdffffffffffffffffffffffff-    , field'  = PrimeField "Fr" 0xfffffffe0000000075a30d1b9038a115-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xfffffffdfffffffffffffffffffffffc-    , b = PF 0xe87579c11079f43dd824993c2cee5ed3-    , h = 0x1-    , q = 0xfffffffdffffffffffffffffffffffff-    , r = 0xfffffffe0000000075a30d1b9038a115-    , x = PF 0x161ff7528b899b2d0c28607ca52c5b86-    , y = PF 0xcf5ac8395bafeb13c02da292dded7a83-    }-  }--secp128r2 :: Curve-secp128r2 = Curve-  { types = Types-    { curve   = "SECP128R2"-    , field   = PrimeField "Fq" 0xfffffffdffffffffffffffffffffffff-    , field'  = PrimeField "Fr" 0x3fffffff7fffffffbe0024720613b5a3-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xd6031998d1b3bbfebf59cc9bbff9aee1-    , b = PF 0x5eeefca380d02919dc2c6558bb6d8a5d-    , h = 0x4-    , q = 0xfffffffdffffffffffffffffffffffff-    , r = 0x3fffffff7fffffffbe0024720613b5a3-    , x = PF 0x7b6aa5d85e572983e6fb32a7cdebc140-    , y = PF 0x27b6916a894d3aee7106fe805fc34b44-    }-  }--secp160k1 :: Curve-secp160k1 = Curve-  { types = Types-    { curve   = "SECP160K1"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffeffffac73-    , field'  = PrimeField "Fr" 0x100000000000000000001b8fa16dfab9aca16b6b3-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x7-    , h = 0x1-    , q = 0xfffffffffffffffffffffffffffffffeffffac73-    , r = 0x100000000000000000001b8fa16dfab9aca16b6b3-    , x = PF 0x3b4c382ce37aa192a4019e763036f4f5dd4d7ebb-    , y = PF 0x938cf935318fdced6bc28286531733c3f03c4fee-    }-  }--secp160r1 :: Curve-secp160r1 = Curve-  { types = Types-    { curve   = "SECP160R1"-    , field   = PrimeField "Fq" 0xffffffffffffffffffffffffffffffff7fffffff-    , field'  = PrimeField "Fr" 0x100000000000000000001f4c8f927aed3ca752257-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xffffffffffffffffffffffffffffffff7ffffffc-    , b = PF 0x1c97befc54bd7a8b65acf89f81d4d4adc565fa45-    , h = 0x1-    , q = 0xffffffffffffffffffffffffffffffff7fffffff-    , r = 0x100000000000000000001f4c8f927aed3ca752257-    , x = PF 0x4a96b5688ef573284664698968c38bb913cbfc82-    , y = PF 0x23a628553168947d59dcc912042351377ac5fb32-    }-  }--secp160r2 :: Curve-secp160r2 = Curve-  { types = Types-    { curve   = "SECP160R2"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffeffffac73-    , field'  = PrimeField "Fr" 0x100000000000000000000351ee786a818f3a1a16b-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xfffffffffffffffffffffffffffffffeffffac70-    , b = PF 0xb4e134d3fb59eb8bab57274904664d5af50388ba-    , h = 0x1-    , q = 0xfffffffffffffffffffffffffffffffeffffac73-    , r = 0x100000000000000000000351ee786a818f3a1a16b-    , x = PF 0x52dcb034293a117e1f4ff11b30f7199d3144ce6d-    , y = PF 0xfeaffef2e331f296e071fa0df9982cfea7d43f2e-    }-  }--secp192k1 :: Curve-secp192k1 = Curve-  { types = Types-    { curve   = "SECP192K1"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffffffffffeffffee37-    , field'  = PrimeField "Fr" 0xfffffffffffffffffffffffe26f2fc170f69466a74defd8d-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x3-    , h = 0x1-    , q = 0xfffffffffffffffffffffffffffffffffffffffeffffee37-    , r = 0xfffffffffffffffffffffffe26f2fc170f69466a74defd8d-    , x = PF 0xdb4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d-    , y = PF 0x9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d-    }-  }--secp192r1 :: Curve-secp192r1 = Curve-  { types = Types-    { curve   = "SECP192R1"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffeffffffffffffffff-    , field'  = PrimeField "Fr" 0xffffffffffffffffffffffff99def836146bc9b1b4d22831-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xfffffffffffffffffffffffffffffffefffffffffffffffc-    , b = PF 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1-    , h = 0x1-    , q = 0xfffffffffffffffffffffffffffffffeffffffffffffffff-    , r = 0xffffffffffffffffffffffff99def836146bc9b1b4d22831-    , x = PF 0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012-    , y = PF 0x7192b95ffc8da78631011ed6b24cdd573f977a11e794811-    }-  }--secp224k1 :: Curve-secp224k1 = Curve-  { types = Types-    { curve   = "SECP224K1"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffffffffffffffffffeffffe56d-    , field'  = PrimeField "Fr" 0x10000000000000000000000000001dce8d2ec6184caf0a971769fb1f7-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x5-    , h = 0x1-    , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffeffffe56d-    , r = 0x10000000000000000000000000001dce8d2ec6184caf0a971769fb1f7-    , x = PF 0xa1455b334df099df30fc28a169a467e9e47075a90f7e650eb6b7a45c-    , y = PF 0x7e089fed7fba344282cafbd6f7e319f7c0b0bd59e2ca4bdb556d61a5-    }-  }--secp224r1 :: Curve-secp224r1 = Curve-  { types = Types-    { curve   = "SECP224R1"-    , field   = PrimeField "Fq" 0xffffffffffffffffffffffffffffffff000000000000000000000001-    , field'  = PrimeField "Fr" 0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xfffffffffffffffffffffffffffffffefffffffffffffffffffffffe-    , b = PF 0xb4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4-    , h = 0x1-    , q = 0xffffffffffffffffffffffffffffffff000000000000000000000001-    , r = 0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d-    , x = PF 0xb70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21-    , y = PF 0xbd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34-    }-  }--secp256k1 :: Curve-secp256k1 = Curve-  { types = Types-    { curve   = "SECP256K1"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f-    , field'  = PrimeField "Fr" 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x0-    , b = PF 0x7-    , h = 0x1-    , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f-    , r = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141-    , x = PF 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798-    , y = PF 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8-    }-  }--secp256r1 :: Curve-secp256r1 = Curve-  { types = Types-    { curve   = "SECP256R1"-    , field   = PrimeField "Fq" 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff-    , field'  = PrimeField "Fr" 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc-    , b = PF 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b-    , h = 0x1-    , q = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff-    , r = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551-    , x = PF 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296-    , y = PF 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5-    }-  }--secp384r1 :: Curve-secp384r1 = Curve-  { types = Types-    { curve   = "SECP384R1"-    , field   = PrimeField "Fq" 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff-    , field'  = PrimeField "Fr" 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc-    , b = PF 0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef-    , h = 0x1-    , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff-    , r = 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973-    , x = PF 0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7-    , y = PF 0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f-    }-  }--secp521r1 :: Curve-secp521r1 = Curve-  { types = Types-    { curve   = "SECP521R1"-    , field   = PrimeField "Fq" 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-    , field'  = PrimeField "Fr" 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409-    , imports = Nothing-    }-  , parameters = Parameters-    { a = PF 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc-    , b = PF 0x51953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00-    , h = 0x1-    , q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-    , r = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409-    , x = PF 0xc6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66-    , y = PF 0x11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650+import Generate.Weierstrass.Types++-------------------------------------------------------------------------------+-- Curves+-------------------------------------------------------------------------------++curves :: [Curve]+curves =+  [ anomalous+  , anssifrp256v1+  , bls12381+  , bls12381t+  , bls48581+  , bls48581t+  , bn224+  , bn254+  , bn254t+  , bn254a+  , bn254at+  , bn254b+  , bn254bt+  , bn254c+  , bn254ct+  , bn254d+  , bn254dt+  , bn256+  , bn384+  , bn462+  , bn462t+  , bn512+  , brainpoolp160r1+  , brainpoolp160t1+  , brainpoolp192r1+  , brainpoolp192t1+  , brainpoolp224r1+  , brainpoolp224t1+  , brainpoolp256r1+  , brainpoolp256t1+  , brainpoolp320r1+  , brainpoolp320t1+  , brainpoolp384r1+  , brainpoolp384t1+  , brainpoolp512r1+  , brainpoolp512t1+  , secp112r1+  , secp112r2+  , secp128r1+  , secp128r2+  , secp160k1+  , secp160r1+  , secp160r2+  , secp192k1+  , secp192r1+  , secp224k1+  , secp224r1+  , secp256k1+  , secp256r1+  , secp384r1+  , secp521r1+  ]++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++anomalous :: Curve+anomalous = Curve+  { name = "Anomalous"+  , types = Types+    { curve = "Anomalous"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x98d0fac687d6343eb1a1f595283eb1a1f58d0fac687d635f5e4+    , b = P 0x4a1f58d0fac687d6343eb1a5e2d6343eb1a1f58d0fac688ab3f+    , h = 0x1+    , q = 0xb0000000000000000000000953000000000000000000001f9d7+    , r = 0xb0000000000000000000000953000000000000000000001f9d7+    , x = P 0x101efb35fd1963c4871a2d17edaafa7e249807f58f8705126c6+    , y = P 0x22389a3954375834304ba1d509a97de6c07148ea7f5951b20e7+    }+  }++anssifrp256v1 :: Curve+anssifrp256v1 = Curve+  { name = "ANSSIFRP256V1"+  , types = Types+    { curve = "ANSSIFRP256V1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c00+    , b = P 0xee353fca5428a9300d4aba754a44c00fdfec0c9ae4b1a1803075ed967b7bb73f+    , h = 0x1+    , q = 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c03+    , r = 0xf1fd178c0b3ad58f10126de8ce42435b53dc67e140d2bf941ffdd459c6d655e1+    , x = P 0xb6b3d4c356c139eb31183d4749d423958c27d2dcaf98b70164c97a2dd98f5cff+    , y = P 0x6142e0f7c8b204911f9271f0f3ecef8c2701c307e8e4c9e183115a1554062cfb+    }+  }++bls12381 :: Curve+bls12381 = Curve+  { name = "BLS12381"+  , types = Types+    { curve = "BLS12381"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x4+    , h = 0x396c8c005555e1568c00aaab0000aaab+    , q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab+    , r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001+    , x = P 0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb+    , y = P 0x8b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1+    }+  }++bls12381t :: Curve+bls12381t = Curve+  { name = "BLS12381T"+  , types = Types+    { curve = "BLS12381"+    , field = Extension "Fq2" "U" "[1, 0, 1]" (+                Prime "Fq"+              )+    }+  , parameters = Parameters+    { a = E [+            ]+    , b = E [ P 0x4+            , P 0x4+            ]+    , h = 0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5+    , q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab+    , r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001+    , x = E [ P 0x24aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8+            , P 0x13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e+            ]+    , y = E [ P 0xce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801+            , P 0x606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be+            ]+    }+  }++bls48581 :: Curve+bls48581 = Curve+  { name = "BLS48581"+  , types = Types+    { curve = "BLS48581"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x1+    , h = 0x85555841aaaec4ac+    , q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b+    , r = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01+    , x = P 0x2af59b7ac340f2baf2b73df1e93f860de3f257e0e86868cf61abdbaedffb9f7544550546a9df6f9645847665d859236ebdbc57db368b11786cb74da5d3a1e6d8c3bce8732315af640+    , y = P 0xcefda44f6531f91f86b3a2d1fb398a488a553c9efeb8a52e991279dd41b720ef7bb7beffb98aee53e80f678584c3ef22f487f77c2876d1b2e35f37aef7b926b576dbb5de3e2587a70+    }+  }++bls48581t :: Curve+bls48581t = Curve+  { name = "BLS48581T"+  , types = Types+    { curve = "BLS48581"+    , field = Extension "Fq8" "W" "[U, 0, 1]" (+                Extension "Fq4" "V" "[U + 1, 0, 1]" (+                  Extension "Fq2" "U" "[1, 0, 1]" (+                    Prime "Fq"+                  )+                )+              )+    }+  , parameters = Parameters+    { a = E [+            ]+    , b = E [ E [+                ]+            , E [ E [+                    ]+                , E [ P 0x9407b9ff9a3b7989c12718ea38095002b7427c6891098dd9df36078f9cbaa225245721d7b7041566ce6981ca7a39b6d7b41b3d2a898b877052bc7efb90d2524561f6e0aa732b2c895+                    , P 0x9407b9ff9a3b7989c12718ea38095002b7427c6891098dd9df36078f9cbaa225245721d7b7041566ce6981ca7a39b6d7b41b3d2a898b877052bc7efb90d2524561f6e0aa732b2c896+                    ]+                ]+            ]+    , h = 0x170e915cb0a6b7406b8d94042317f811d6bc3fc6e211ada42e58ccfcb3ac076a7e4499d700a0c23dc4b0c078f92def8c87b7fe63e1eea270db353a4ef4d38b5998ad8f0d042ea24c8f02be1c0c83992fe5d7725227bb27123a949e0876c0a8ce0a67326db0e955dcb791b867f31d6bfa62fbdd5f44a00504df04e186fae033f1eb43c1b1a08b6e086eff03c8fee9ebdd1e191a8a4b0466c90b389987de5637d5dd13dab33196bd2e5afa6cd19cf0fc3fc7db7ece1f3fac742626b1b02fcee04043b2ea96492f6afa51739597c54bb78aa6b0b99319fef9d09f768831018ee6564c68d054c62f2e0b4549426fec24ab26957a669dba2a2b6945ce40c9aec6afdeda16c79e15546cd7771fa544d5364236690ea06832679562a68731420ae52d0d35a90b8d10b688e31b6aee45f45b7a5083c71732105852decc888f64839a4de33b99521f0984a418d20fc7b0609530e454f0696fa2a8075ac01cc8ae3869e8d0fe1f3788ffac4c01aa2720e431da333c83d9663bfb1fb7a1a7b90528482c6be7892299030bb51a51dc7e91e9156874416bf4c26f1ea7ec578058563960ef92bbbb8632d3a1b695f954af10e9a78e40acffc13b06540aae9da5287fc4429485d44e6289d8c0d6a3eb2ece35012452751839fb48bc14b515478e2ff412d930ac20307561f3a5c998e6bcbfebd97effc6433033a2361bfcdc4fc74ad379a16c6dea49c209b1+    , q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b+    , r = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01+    , x = E [ E [ E [ P 0x5d615d9a7871e4a38237fa45a2775debabbefc70344dbccb7de64db3a2ef156c46ff79baad1a8c42281a63ca0612f400503004d80491f510317b79766322154dec34fd0b4ace8bfab+                    , P 0x7c4973ece2258512069b0e86abc07e8b22bb6d980e1623e9526f6da12307f4e1c3943a00abfedf16214a76affa62504f0c3c7630d979630ffd75556a01afa143f1669b36676b47c57+                    ]+                , E [ P 0x1fccc70198f1334e1b2ea1853ad83bc73a8a6ca9ae237ca7a6d6957ccbab5ab6860161c1dbd19242ffae766f0d2a6d55f028cbdfbb879d5fea8ef4cded6b3f0b46488156ca55a3e6a+                    , P 0xbe2218c25ceb6185c78d8012954d4bfe8f5985ac62f3e5821b7b92a393f8be0cc218a95f63e1c776e6ec143b1b279b9468c31c5257c200ca52310b8cb4e80bc3f09a7033cbb7feafe+                    ]+                ]+            , E [ E [ P 0x38b91c600b35913a3c598e4caa9dd63007c675d0b1642b5675ff0e7c5805386699981f9e48199d5ac10b2ef492ae589274fad55fc1889aa80c65b5f746c9d4cbb739c3a1c53f8cce5+                    , P 0xc96c7797eb0738603f1311e4ecda088f7b8f35dcef0977a3d1a58677bb037418181df63835d28997eb57b40b9c0b15dd7595a9f177612f097fc7960910fce3370f2004d914a3c093a+                    ]+                , E [ P 0xb9b7951c6061ee3f0197a498908aee660dea41b39d13852b6db908ba2c0b7a449cef11f293b13ced0fd0caa5efcf3432aad1cbe4324c22d63334b5b0e205c3354e41607e60750e057+                    , P 0x827d5c22fb2bdec5282624c4f4aaa2b1e5d7a9defaf47b5211cf741719728a7f9f8cfca93f29cff364a7190b7e2b0d4585479bd6aebf9fc44e56af2fc9e97c3f84e19da00fbc6ae34+                    ]+                ]+            ]+    , y = E [ E [ E [ P 0xeb53356c375b5dfa497216452f3024b918b4238059a577e6f3b39ebfc435faab0906235afa27748d90f7336d8ae5163c1599abf77eea6d659045012ab12c0ff323edd3fe4d2d7971+                    , P 0x284dc75979e0ff144da6531815fcadc2b75a422ba325e6fba01d72964732fcbf3afb096b243b1f192c5c3d1892ab24e1dd212fa097d760e2e588b423525ffc7b111471db936cd5665+                    ]+                , E [ P 0xb36a201dd008523e421efb70367669ef2c2fc5030216d5b119d3a480d370514475f7d5c99d0e90411515536ca3295e5e2f0c1d35d51a652269cbc7c46fc3b8fde68332a526a2a8474+                    , P 0xaec25a4621edc0688223fbbd478762b1c2cded3360dcee23dd8b0e710e122d2742c89b224333fa40dced2817742770ba10d67bda503ee5e578fb3d8b8a1e5337316213da92841589d+                    ]+                ]+            , E [ E [ P 0xd209d5a223a9c46916503fa5a88325a2554dc541b43dd93b5a959805f1129857ed85c77fa238cdce8a1e2ca4e512b64f59f430135945d137b08857fdddfcf7a43f47831f982e50137+                    , P 0x7d0d03745736b7a513d339d5ad537b90421ad66eb16722b589d82e2055ab7504fa83420e8c270841f6824f47c180d139e3aafc198caa72b679da59ed8226cf3a594eedc58cf90bee4+                    ]+                , E [ P 0x896767811be65ea25c2d05dfdd17af8a006f364fc0841b064155f14e4c819a6df98f425ae3a2864f22c1fab8c74b2618b5bb40fa639f53dccc9e884017d9aa62b3d41faeafeb23986+                    , P 0x35e2524ff89029d393a5c07e84f981b5e068f1406be8e50c87549b6ef8eca9a9533a3f8e69c31e97e1ad0333ec719205417300d8c4ab33f748e5ac66e84069c55d667ffcb732718b6+                    ]+                ]+            ]+    }+  }++bn224 :: Curve+bn224 = Curve+  { name = "BN224"+  , types = Types+    { curve = "BN224"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x3+    , h = 0x1+    , q = 0xfffffffffff107288ec29e602c4520db42180823bb907d1287127833+    , r = 0xfffffffffff107288ec29e602c4420db4218082b36c2accff76c58ed+    , x = P 0x1+    , y = P 0x2+    }+  }++bn254 :: Curve+bn254 = Curve+  { name = "BN254"+  , types = Types+    { curve = "BN254"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x3+    , h = 0x1+    , q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47+    , r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001+    , x = P 0x1+    , y = P 0x2+    }+  }++bn254t :: Curve+bn254t = Curve+  { name = "BN254T"+  , types = Types+    { curve = "BN254"+    , field = Extension "Fq2" "U" "[1, 0, 1]" (+                Prime "Fq"+              )+    }+  , parameters = Parameters+    { a = E [+            ]+    , b = E [ P 0x2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5+            , P 0x9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2+            ]+    , h = 0x30644e72e131a029b85045b68181585e06ceecda572a2489345f2299c0f9fa8d+    , q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47+    , r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001+    , x = E [ P 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed+            , P 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2+            ]+    , y = E [ P 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa+            , P 0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b+            ]+    }+  }++bn254a :: Curve+bn254a = Curve+  { name = "BN254A"+  , types = Types+    { curve = "BN254A"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x5+    , h = 0x1+    , q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001+    , r = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001+    , x = P 0x1+    , y = P 0xd45589b158faaf6ab0e4ad38d998e9982e7ff63964ee1460342a592677cccb0+    }+  }++bn254at :: Curve+bn254at = Curve+  { name = "BN254AT"+  , types = Types+    { curve = "BN254A"+    , field = Extension "Fq2" "U" "[5, 0, 1]" (+                Prime "Fq"+              )+    }+  , parameters = Parameters+    { a = E [+            ]+    , b = E [ P 0x0+            , P 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000000+            ]+    , h = 0x2370fb049d410fbe4e761a9886e50241dc42cf101e0000017e80600000000001+    , q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001+    , r = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001+    , x = E [ P 0x19b0bea4afe4c330da93cc3533da38a9f430b471c6f8a536e81962ed967909b5+            , P 0xa1cf585585a61c6e9880b1f2a5c539f7d906fff238fa6341e1de1a2e45c3f72+            ]+    , y = E [ P 0x17abd366ebbd65333e49c711a80a0cf6d24adf1b9b3990eedcc91731384d2627+            , P 0xee97d6de9902a27d00e952232a78700863bc9aa9be960c32f5bf9fd0a32d345+            ]+    }+  }++bn254b :: Curve+bn254b = Curve+  { name = "BN254B"+  , types = Types+    { curve = "BN254B"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x2+    , h = 0x1+    , q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013+    , r = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d+    , x = P 0x2523648240000001ba344d80000000086121000000000013a700000000000012+    , y = P 0x1+    }+  }++bn254bt :: Curve+bn254bt = Curve+  { name = "BN254BT"+  , types = Types+    { curve = "BN254B"+    , field = Extension "Fq2" "U" "[1, 0, 1]" (+                Prime "Fq"+              )+    }+  , parameters = Parameters+    { a = E [+            ]+    , b = E [ P 0x1+            , P 0x2523648240000001ba344d80000000086121000000000013a700000000000012+            ]+    , h = 0x2523648240000001ba344d8000000008c2a2800000000016ad00000000000019+    , q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013+    , r = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d+    , x = E [ P 0x61a10bb519eb62feb8d8c7e8c61edb6a4648bbb4898bf0d91ee4224c803fb2b+            , P 0x516aaf9ba737833310aa78c5982aa5b1f4d746bae3784b70d8c34c1e7d54cf3+            ]+    , y = E [ P 0x21897a06baf93439a90e096698c822329bd0ae6bdbe09bd19f0e07891cd2b9a+            , P 0xebb2b0e7c8b15268f6d4456f5f38d37b09006ffd739c9578a2d1aec6b3ace9b+            ]+    }+  }++bn254c :: Curve+bn254c = Curve+  { name = "BN254C"+  , types = Types+    { curve = "BN254C"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x2+    , h = 0x1+    , q = 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a713+    , r = 0x240120db6517014efa0bab3696f8d5f00e88d43492b2cb363a75777e8d30210d+    , x = P 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a712+    , y = P 0x1+    }+  }++bn254ct :: Curve+bn254ct = Curve+  { name = "BN254CT"+  , types = Types+    { curve = "BN254C"+    , field = Extension "Fq2" "U" "[1, 0, 1]" (+                Prime "Fq"+              )+    }+  , parameters = Parameters+    { a = E [+            ]+    , b = E [ P 0x1+            , P 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a712+            ]+    , h = 0x240120db6517014efa0bab3696f8d5f0ce8bd6779735fe3f42c6007f50392d19+    , q = 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a713+    , r = 0x240120db6517014efa0bab3696f8d5f00e88d43492b2cb363a75777e8d30210d+    , x = E [ P 0x571af2ea9666eb2a53f3fb837172bdd809c03a95c5870f34a8cb340220bf9c0+            , P 0xf71abb712a9e6e12c07b58bc01f2f994c3b5a1531cf96609b838e5ccf05bc71+            ]+    , y = E [ P 0xb88822fe134c1695b21419bb1ab9732f707701046a2e6ff3ad10f3c70284b93+            , P 0x1659b723676b5af5231fb045b3d822c0de6fcaab171bad9c8951afc800a26775+            ]+    }+  }++bn254d :: Curve+bn254d = Curve+  { name = "BN254D"+  , types = Types+    { curve = "BN254D"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x2+    , h = 0x1+    , q = 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48b+    , r = 0x24000482410f5aadb74e200f3b89d00021cf8de127b73833d7fb71a511aa2bf5+    , x = P 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48a+    , y = P 0x1+    }+  }++bn254dt :: Curve+bn254dt = Curve+  { name = "BN254DT"+  , types = Types+    { curve = "BN254D"+    , field = Extension "Fq2" "U" "[1, 0, 1]" (+                Prime "Fq"+              )+    }+  , parameters = Parameters+    { a = E [+            ]+    , b = E [ P 0x1+            , P 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48a+            ]+    , h = 0x24000482410f5aadb74e200f3b89d000e1cf99e72a2a746ff96a46b257171d21+    , q = 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48b+    , r = 0x24000482410f5aadb74e200f3b89d00021cf8de127b73833d7fb71a511aa2bf5+    , x = E [ P 0x20cfe8b965fc444008a21b12cd2a55f843c1dd68ba12a8bb1f1dde3533b91a32+            , P 0x176f822a5ee7ada449f8f876ee001508dd43b5413e03c8f4ad3e3b38dadaf51+            ]+    , y = E [ P 0x2b27f22c2920fee3b4af218b6d92421780a9bdc66155142fecef3af7f58e872+            , P 0x14e9c62a36ebce710810576b5401fdf0b28126ad2d563bf5043be3347646dfb4+            ]+    }+  }++bn256 :: Curve+bn256 = Curve+  { name = "BN256"+  , types = Types+    { curve = "BN256"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x3+    , h = 0x1+    , q = 0xfffffffffffcf0cd46e5f25eee71a49f0cdc65fb12980a82d3292ddbaed33013+    , r = 0xfffffffffffcf0cd46e5f25eee71a49e0cdc65fb1299921af62d536cd10b500d+    , x = P 0x1+    , y = P 0x2+    }+  }++bn384 :: Curve+bn384 = Curve+  { name = "BN384"+  , types = Types+    { curve = "BN384"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x3+    , h = 0x1+    , q = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca024c8fbe29531892c79534f9d306328261550a7cabd7cccd10b+    , r = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca023c8fbe29531892c795356487d8ac63e4f4db17384341a5775+    , x = P 0x1+    , y = P 0x2+    }+  }++bn462 :: Curve+bn462 = Curve+  { name = "BN462"+  , types = Types+    { curve = "BN462"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x5+    , h = 0x1+    , q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013+    , r = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d+    , x = P 0x21a6d67ef250191fadba34a0a30160b9ac9264b6f95f63b3edbec3cf4b2e689db1bbb4e69a416a0b1e79239c0372e5cd70113c98d91f36b6980d+    , y = P 0x118ea0460f7f7abb82b33676a7432a490eeda842cccfa7d788c659650426e6af77df11b8ae40eb80f475432c66600622ecaa8a5734d36fb03de+    }+  }++bn462t :: Curve+bn462t = Curve+  { name = "BN462T"+  , types = Types+    { curve = "BN462"+    , field = Extension "Fq2" "U" "[1, 0, 1]" (+                Prime "Fq"+              )+    }+  , parameters = Parameters+    { a = E [+            ]+    , b = E [ P 0x2+            , P 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138012+            ]+    , h = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908fa1ce0227fffffffff6ff66fc63f5f7f4c0000000002401b008a0168019+    , q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013+    , r = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d+    , x = E [ P 0x257ccc85b58dda0dfb38e3a8cbdc5482e0337e7c1cd96ed61c913820408208f9ad2699bad92e0032ae1f0aa6a8b48807695468e3d934ae1e4df+            , P 0x1d2e4343e8599102af8edca849566ba3c98e2a354730cbed9176884058b18134dd86bae555b783718f50af8b59bf7e850e9b73108ba6aa8cd283+            ]+    , y = E [ P 0xa0650439da22c1979517427a20809eca035634706e23c3fa7a6bb42fe810f1399a1f41c9ddae32e03695a140e7b11d7c3376e5b68df0db7154e+            , P 0x73ef0cbd438cbe0172c8ae37306324d44d5e6b0c69ac57b393f1ab370fd725cc647692444a04ef87387aa68d53743493b9eba14cc552ca2a93a+            ]+    }+  }++bn512 :: Curve+bn512 = Curve+  { name = "BN512"+  , types = Types+    { curve = "BN512"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x3+    , h = 0x1+    , q = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef455146cf1eacbe98b8e48c65deab236fe1916a55ce5f4c6467b4eb280922adef33+    , r = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef445146cf1eacbe98b8e48c65deab2679a34a10313e04f9a2b406a64a5f519a09ed+    , x = P 0x1+    , y = P 0x2+    }+  }++brainpoolp160r1 :: Curve+brainpoolp160r1 = Curve+  { name = "BrainpoolP160R1"+  , types = Types+    { curve = "BrainpoolP160R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x340e7be2a280eb74e2be61bada745d97e8f7c300+    , b = P 0x1e589a8595423412134faa2dbdec95c8d8675e58+    , h = 0x1+    , q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f+    , r = 0xe95e4a5f737059dc60df5991d45029409e60fc09+    , x = P 0xbed5af16ea3f6a4f62938c4631eb5af7bdbcdbc3+    , y = P 0x1667cb477a1a8ec338f94741669c976316da6321+    }+  }++brainpoolp160t1 :: Curve+brainpoolp160t1 = Curve+  { name = "BrainpoolP160T1"+  , types = Types+    { curve = "BrainpoolP160T1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xe95e4a5f737059dc60dfc7ad95b3d8139515620c+    , b = P 0x7a556b6dae535b7b51ed2c4d7daa7a0b5c55f380+    , h = 0x1+    , q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f+    , r = 0xe95e4a5f737059dc60df5991d45029409e60fc09+    , x = P 0xb199b13b9b34efc1397e64baeb05acc265ff2378+    , y = P 0xadd6718b7c7c1961f0991b842443772152c9e0ad+    }+  }++brainpoolp192r1 :: Curve+brainpoolp192r1 = Curve+  { name = "BrainpoolP192R1"+  , types = Types+    { curve = "BrainpoolP192R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x6a91174076b1e0e19c39c031fe8685c1cae040e5c69a28ef+    , b = P 0x469a28ef7c28cca3dc721d044f4496bcca7ef4146fbf25c9+    , h = 0x1+    , q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297+    , r = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1+    , x = P 0xc0a0647eaab6a48753b033c56cb0f0900a2f5c4853375fd6+    , y = P 0x14b690866abd5bb88b5f4828c1490002e6773fa2fa299b8f+    }+  }++brainpoolp192t1 :: Curve+brainpoolp192t1 = Curve+  { name = "BrainpoolP192T1"+  , types = Types+    { curve = "BrainpoolP192T1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xc302f41d932a36cda7a3463093d18db78fce476de1a86294+    , b = P 0x13d56ffaec78681e68f9deb43b35bec2fb68542e27897b79+    , h = 0x1+    , q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297+    , r = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1+    , x = P 0x3ae9e58c82f63c30282e1fe7bbf43fa72c446af6f4618129+    , y = P 0x97e2c5667c2223a902ab5ca449d0084b7e5b3de7ccc01c9+    }+  }++brainpoolp224r1 :: Curve+brainpoolp224r1 = Curve+  { name = "BrainpoolP224R1"+  , types = Types+    { curve = "BrainpoolP224R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x68a5e62ca9ce6c1c299803a6c1530b514e182ad8b0042a59cad29f43+    , b = P 0x2580f63ccfe44138870713b1a92369e33e2135d266dbb372386c400b+    , h = 0x1+    , q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff+    , r = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f+    , x = P 0xd9029ad2c7e5cf4340823b2a87dc68c9e4ce3174c1e6efdee12c07d+    , y = P 0x58aa56f772c0726f24c6b89e4ecdac24354b9e99caa3f6d3761402cd+    }+  }++brainpoolp224t1 :: Curve+brainpoolp224t1 = Curve+  { name = "BrainpoolP224T1"+  , types = Types+    { curve = "BrainpoolP224T1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0fc+    , b = P 0x4b337d934104cd7bef271bf60ced1ed20da14c08b3bb64f18a60888d+    , h = 0x1+    , q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff+    , r = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f+    , x = P 0x6ab1e344ce25ff3896424e7ffe14762ecb49f8928ac0c76029b4d580+    , y = P 0x374e9f5143e568cd23f3f4d7c0d4b1e41c8cc0d1c6abd5f1a46db4c+    }+  }++brainpoolp256r1 :: Curve+brainpoolp256r1 = Curve+  { name = "BrainpoolP256R1"+  , types = Types+    { curve = "BrainpoolP256R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x7d5a0975fc2c3057eef67530417affe7fb8055c126dc5c6ce94a4b44f330b5d9+    , b = P 0x26dc5c6ce94a4b44f330b5d9bbd77cbf958416295cf7e1ce6bccdc18ff8c07b6+    , h = 0x1+    , q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377+    , r = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7+    , x = P 0x8bd2aeb9cb7e57cb2c4b482ffc81b7afb9de27e1e3bd23c23a4453bd9ace3262+    , y = P 0x547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997+    }+  }++brainpoolp256t1 :: Curve+brainpoolp256t1 = Curve+  { name = "BrainpoolP256T1"+  , types = Types+    { curve = "BrainpoolP256T1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5374+    , b = P 0x662c61c430d84ea4fe66a7733d0b76b7bf93ebc4af2f49256ae58101fee92b04+    , h = 0x1+    , q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377+    , r = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7+    , x = P 0xa3e8eb3cc1cfe7b7732213b23a656149afa142c47aafbc2b79a191562e1305f4+    , y = P 0x2d996c823439c56d7f7b22e14644417e69bcb6de39d027001dabe8f35b25c9be+    }+  }++brainpoolp320r1 :: Curve+brainpoolp320r1 = Curve+  { name = "BrainpoolP320R1"+  , types = Types+    { curve = "BrainpoolP320R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x3ee30b568fbab0f883ccebd46d3f3bb8a2a73513f5eb79da66190eb085ffa9f492f375a97d860eb4+    , b = P 0x520883949dfdbc42d3ad198640688a6fe13f41349554b49acc31dccd884539816f5eb4ac8fb1f1a6+    , h = 0x1+    , q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27+    , r = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311+    , x = P 0x43bd7e9afb53d8b85289bcc48ee5bfe6f20137d10a087eb6e7871e2a10a599c710af8d0d39e20611+    , y = P 0x14fdd05545ec1cc8ab4093247f77275e0743ffed117182eaa9c77877aaac6ac7d35245d1692e8ee1+    }+  }++brainpoolp320t1 :: Curve+brainpoolp320t1 = Curve+  { name = "BrainpoolP320T1"+  , types = Types+    { curve = "BrainpoolP320T1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e24+    , b = P 0xa7f561e038eb1ed560b3d147db782013064c19f27ed27c6780aaf77fb8a547ceb5b4fef422340353+    , h = 0x1+    , q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27+    , r = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311+    , x = P 0x925be9fb01afc6fb4d3e7d4990010f813408ab106c4f09cb7ee07868cc136fff3357f624a21bed52+    , y = P 0x63ba3a7a27483ebf6671dbef7abb30ebee084e58a0b077ad42a5a0989d1ee71b1b9bc0455fb0d2c3+    }+  }++brainpoolp384r1 :: Curve+brainpoolp384r1 = Curve+  { name = "BrainpoolP384R1"+  , types = Types+    { curve = "BrainpoolP384R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x7bc382c63d8c150c3c72080ace05afa0c2bea28e4fb22787139165efba91f90f8aa5814a503ad4eb04a8c7dd22ce2826+    , b = P 0x4a8c7dd22ce28268b39b55416f0447c2fb77de107dcd2a62e880ea53eeb62d57cb4390295dbc9943ab78696fa504c11+    , h = 0x1+    , q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53+    , r = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565+    , x = P 0x1d1c64f068cf45ffa2a63a81b7c13f6b8847a3e77ef14fe3db7fcafe0cbd10e8e826e03436d646aaef87b2e247d4af1e+    , y = P 0x8abe1d7520f9c2a45cb1eb8e95cfd55262b70b29feec5864e19c054ff99129280e4646217791811142820341263c5315+    }+  }++brainpoolp384t1 :: Curve+brainpoolp384t1 = Curve+  { name = "BrainpoolP384T1"+  , types = Types+    { curve = "BrainpoolP384T1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec50+    , b = P 0x7f519eada7bda81bd826dba647910f8c4b9346ed8ccdc64e4b1abd11756dce1d2074aa263b88805ced70355a33b471ee+    , h = 0x1+    , q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53+    , r = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565+    , x = P 0x18de98b02db9a306f2afcd7235f72a819b80ab12ebd653172476fecd462aabffc4ff191b946a5f54d8d0aa2f418808cc+    , y = P 0x25ab056962d30651a114afd2755ad336747f93475b7a1fca3b88f2b6a208ccfe469408584dc2b2912675bf5b9e582928+    }+  }++brainpoolp512r1 :: Curve+brainpoolp512r1 = Curve+  { name = "BrainpoolP512R1"+  , types = Types+    { curve = "BrainpoolP512R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x7830a3318b603b89e2327145ac234cc594cbdd8d3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94ca+    , b = P 0x3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94cadc083e67984050b75ebae5dd2809bd638016f723+    , h = 0x1+    , q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3+    , r = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069+    , x = P 0x81aee4bdd82ed9645a21322e9c4c6a9385ed9f70b5d916c1b43b62eef4d0098eff3b1f78e2d0d48d50d1687b93b97d5f7c6d5047406a5e688b352209bcb9f822+    , y = P 0x7dde385d566332ecc0eabfa9cf7822fdf209f70024a57b1aa000c55b881f8111b2dcde494a5f485e5bca4bd88a2763aed1ca2b2fa8f0540678cd1e0f3ad80892+    }+  }++brainpoolp512t1 :: Curve+brainpoolp512t1 = Curve+  { name = "BrainpoolP512T1"+  , types = Types+    { curve = "BrainpoolP512T1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f0+    , b = P 0x7cbbbcf9441cfab76e1890e46884eae321f70c0bcb4981527897504bec3e36a62bcdfa2304976540f6450085f2dae145c22553b465763689180ea2571867423e+    , h = 0x1+    , q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3+    , r = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069+    , x = P 0x640ece5c12788717b9c1ba06cbc2a6feba85842458c56dde9db1758d39c0313d82ba51735cdb3ea499aa77a7d6943a64f7a3f25fe26f06b51baa2696fa9035da+    , y = P 0x5b534bd595f5af0fa2c892376c84ace1bb4e3019b71634c01131159cae03cee9d9932184beef216bd71df2dadf86a627306ecff96dbb8bace198b61e00f8b332+    }+  }++secp112r1 :: Curve+secp112r1 = Curve+  { name = "SECP112R1"+  , types = Types+    { curve = "SECP112R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xdb7c2abf62e35e668076bead2088+    , b = P 0x659ef8ba043916eede8911702b22+    , h = 0x1+    , q = 0xdb7c2abf62e35e668076bead208b+    , r = 0xdb7c2abf62e35e7628dfac6561c5+    , x = P 0x9487239995a5ee76b55f9c2f098+    , y = P 0xa89ce5af8724c0a23e0e0ff77500+    }+  }++secp112r2 :: Curve+secp112r2 = Curve+  { name = "SECP112R2"+  , types = Types+    { curve = "SECP112R2"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x6127c24c05f38a0aaaf65c0ef02c+    , b = P 0x51def1815db5ed74fcc34c85d709+    , h = 0x4+    , q = 0xdb7c2abf62e35e668076bead208b+    , r = 0x36df0aafd8b8d7597ca10520d04b+    , x = P 0x4ba30ab5e892b4e1649dd0928643+    , y = P 0xadcd46f5882e3747def36e956e97+    }+  }++secp128r1 :: Curve+secp128r1 = Curve+  { name = "SECP128R1"+  , types = Types+    { curve = "SECP128R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xfffffffdfffffffffffffffffffffffc+    , b = P 0xe87579c11079f43dd824993c2cee5ed3+    , h = 0x1+    , q = 0xfffffffdffffffffffffffffffffffff+    , r = 0xfffffffe0000000075a30d1b9038a115+    , x = P 0x161ff7528b899b2d0c28607ca52c5b86+    , y = P 0xcf5ac8395bafeb13c02da292dded7a83+    }+  }++secp128r2 :: Curve+secp128r2 = Curve+  { name = "SECP128R2"+  , types = Types+    { curve = "SECP128R2"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xd6031998d1b3bbfebf59cc9bbff9aee1+    , b = P 0x5eeefca380d02919dc2c6558bb6d8a5d+    , h = 0x4+    , q = 0xfffffffdffffffffffffffffffffffff+    , r = 0x3fffffff7fffffffbe0024720613b5a3+    , x = P 0x7b6aa5d85e572983e6fb32a7cdebc140+    , y = P 0x27b6916a894d3aee7106fe805fc34b44+    }+  }++secp160k1 :: Curve+secp160k1 = Curve+  { name = "SECP160K1"+  , types = Types+    { curve = "SECP160K1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x7+    , h = 0x1+    , q = 0xfffffffffffffffffffffffffffffffeffffac73+    , r = 0x100000000000000000001b8fa16dfab9aca16b6b3+    , x = P 0x3b4c382ce37aa192a4019e763036f4f5dd4d7ebb+    , y = P 0x938cf935318fdced6bc28286531733c3f03c4fee+    }+  }++secp160r1 :: Curve+secp160r1 = Curve+  { name = "SECP160R1"+  , types = Types+    { curve = "SECP160R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xffffffffffffffffffffffffffffffff7ffffffc+    , b = P 0x1c97befc54bd7a8b65acf89f81d4d4adc565fa45+    , h = 0x1+    , q = 0xffffffffffffffffffffffffffffffff7fffffff+    , r = 0x100000000000000000001f4c8f927aed3ca752257+    , x = P 0x4a96b5688ef573284664698968c38bb913cbfc82+    , y = P 0x23a628553168947d59dcc912042351377ac5fb32+    }+  }++secp160r2 :: Curve+secp160r2 = Curve+  { name = "SECP160R2"+  , types = Types+    { curve = "SECP160R2"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xfffffffffffffffffffffffffffffffeffffac70+    , b = P 0xb4e134d3fb59eb8bab57274904664d5af50388ba+    , h = 0x1+    , q = 0xfffffffffffffffffffffffffffffffeffffac73+    , r = 0x100000000000000000000351ee786a818f3a1a16b+    , x = P 0x52dcb034293a117e1f4ff11b30f7199d3144ce6d+    , y = P 0xfeaffef2e331f296e071fa0df9982cfea7d43f2e+    }+  }++secp192k1 :: Curve+secp192k1 = Curve+  { name = "SECP192K1"+  , types = Types+    { curve = "SECP192K1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x3+    , h = 0x1+    , q = 0xfffffffffffffffffffffffffffffffffffffffeffffee37+    , r = 0xfffffffffffffffffffffffe26f2fc170f69466a74defd8d+    , x = P 0xdb4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d+    , y = P 0x9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d+    }+  }++secp192r1 :: Curve+secp192r1 = Curve+  { name = "SECP192R1"+  , types = Types+    { curve = "SECP192R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xfffffffffffffffffffffffffffffffefffffffffffffffc+    , b = P 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1+    , h = 0x1+    , q = 0xfffffffffffffffffffffffffffffffeffffffffffffffff+    , r = 0xffffffffffffffffffffffff99def836146bc9b1b4d22831+    , x = P 0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012+    , y = P 0x7192b95ffc8da78631011ed6b24cdd573f977a11e794811+    }+  }++secp224k1 :: Curve+secp224k1 = Curve+  { name = "SECP224K1"+  , types = Types+    { curve = "SECP224K1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x5+    , h = 0x1+    , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffeffffe56d+    , r = 0x10000000000000000000000000001dce8d2ec6184caf0a971769fb1f7+    , x = P 0xa1455b334df099df30fc28a169a467e9e47075a90f7e650eb6b7a45c+    , y = P 0x7e089fed7fba344282cafbd6f7e319f7c0b0bd59e2ca4bdb556d61a5+    }+  }++secp224r1 :: Curve+secp224r1 = Curve+  { name = "SECP224R1"+  , types = Types+    { curve = "SECP224R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xfffffffffffffffffffffffffffffffefffffffffffffffffffffffe+    , b = P 0xb4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4+    , h = 0x1+    , q = 0xffffffffffffffffffffffffffffffff000000000000000000000001+    , r = 0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d+    , x = P 0xb70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21+    , y = P 0xbd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34+    }+  }++secp256k1 :: Curve+secp256k1 = Curve+  { name = "SECP256K1"+  , types = Types+    { curve = "SECP256K1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x0+    , b = P 0x7+    , h = 0x1+    , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f+    , r = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141+    , x = P 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798+    , y = P 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8+    }+  }++secp256r1 :: Curve+secp256r1 = Curve+  { name = "SECP256R1"+  , types = Types+    { curve = "SECP256R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc+    , b = P 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b+    , h = 0x1+    , q = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff+    , r = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551+    , x = P 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296+    , y = P 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5+    }+  }++secp384r1 :: Curve+secp384r1 = Curve+  { name = "SECP384R1"+  , types = Types+    { curve = "SECP384R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc+    , b = P 0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef+    , h = 0x1+    , q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff+    , r = 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973+    , x = P 0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7+    , y = P 0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f+    }+  }++secp521r1 :: Curve+secp521r1 = Curve+  { name = "SECP521R1"+  , types = Types+    { curve = "SECP521R1"+    , field = Prime "Fq"+    }+  , parameters = Parameters+    { a = P 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc+    , b = P 0x51953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00+    , h = 0x1+    , q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff+    , r = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409+    , x = P 0xc6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66+    , y = P 0x11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650     }   }
generate/Generate/Weierstrass/Types.hs view
@@ -5,6 +5,8 @@  import Protolude +import GHC.Natural (Natural)+ import Generate.Types  -------------------------------------------------------------------------------@@ -12,16 +14,17 @@ -------------------------------------------------------------------------------  data Curve = Curve-  { types      :: Types+  { name       :: Text+  , types      :: Types   , parameters :: Parameters   }  data Parameters = Parameters   { a :: Element   , b :: Element-  , h :: Integer-  , q :: Integer-  , r :: Integer+  , h :: Natural+  , q :: Natural+  , r :: Natural   , x :: Element   , y :: Element   }
generate/Main.hs view
@@ -37,33 +37,33 @@   where     generateBinaryCurve' :: Binary.Curve -> (FilePath, Text)     generateBinaryCurve' = generateCurve'-      "Binary" Binary.curve Binary.types Binary.prettyCurve+      "Binary" Binary.name Binary.prettyCurve  generateEdwardsCurve :: [(FilePath, Text)] generateEdwardsCurve = map generateEdwardsCurve' Edwards.curves   where     generateEdwardsCurve' :: Edwards.Curve -> (FilePath, Text)     generateEdwardsCurve' = generateCurve'-      "Edwards" Edwards.curve Edwards.types Edwards.prettyCurve+      "Edwards" Edwards.name Edwards.prettyCurve  generateMontgomeryCurve :: [(FilePath, Text)] generateMontgomeryCurve = map generateMontgomeryCurve' Montgomery.curves   where     generateMontgomeryCurve' :: Montgomery.Curve -> (FilePath, Text)     generateMontgomeryCurve' = generateCurve'-      "Montgomery" Montgomery.curve Montgomery.types Montgomery.prettyCurve+      "Montgomery" Montgomery.name Montgomery.prettyCurve  generateWeierstrassCurve :: [(FilePath, Text)] generateWeierstrassCurve = map generateWeierstrassCurve' Weierstrass.curves   where     generateWeierstrassCurve' :: Weierstrass.Curve -> (FilePath, Text)     generateWeierstrassCurve' = generateCurve'-      "Weierstrass" Weierstrass.curve Weierstrass.types Weierstrass.prettyCurve+      "Weierstrass" Weierstrass.name Weierstrass.prettyCurve -generateCurve' :: Show doc => Text -> (types -> Text)-  -> (curve -> types) -> (curve -> doc) -> curve -> (FilePath, Text)-generateCurve' form curve types pretty = (,)-  <$> unpack . (<> ".hs") . (<>) ("../src/Curve/" <> form <> "/") . curve . types+generateCurve' :: Show doc => Text -> (curve -> Text)+  -> (curve -> doc) -> curve -> (FilePath, Text)+generateCurve' form curve pretty = (,)+  <$> unpack . (<> ".hs") . (<>) ("../src/Data/Curve/" <> form <> "/") . curve   <*> show . pretty  -------------------------------------------------------------------------------
− src/Curve.hs
@@ -1,129 +0,0 @@-module Curve-  ( module Curve-  , module Group-  ) where--import Protolude--import Control.Monad.Random (Random(..))-import GaloisField (GaloisField)-import PrimeField (PrimeField, toInt)-import Test.Tasty.QuickCheck (Arbitrary(..))--import Group (Group(..))------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Elliptic curves.-class (GaloisField q, PrimeField' r, Group (Point f c e q r))-  => Curve (f :: Form) (c :: Coordinates) e q r where-  {-# MINIMAL char, cof, disc, fromA, point, pointX, toA, yX #-}--  -- Parameters--  -- | Curve characteristic.-  char :: Point f c e q r -> Integer--  -- | Curve cofactor.-  cof :: Point f c e q r -> Integer--  -- | Curve discriminant.-  disc :: Point f c e q r -> q--  -- Points--  -- | Curve point.-  data family Point f c e q r :: *--  -- | Curve point multiplication.-  mul :: Point f c e q r -> r -> Point f c e q r-  mul = (. toInt') . mul'-  {-# INLINABLE mul #-}--  -- | Get point from X and Y coordinates.-  point :: q -> q -> Maybe (Point f c e q r)--  -- | Get point from X coordinate.-  pointX :: q -> Maybe (Point f c e q r)--  -- | Get Y coordinate from X coordinate.-  yX :: Point f c e q r -> q -> Maybe q--  -- Coordinates--  -- | Transform from affine coordinates.-  fromA :: Point f 'Affine e q r -> Point f c e q r--  -- | Transform to affine coordinates.-  toA :: Point f c e q r -> Point f 'Affine e q r---- | Curve forms.-data Form = Binary-          | Edwards-          | Montgomery-          | Weierstrass---- | Curve coordinates.-data Coordinates = Affine-                 | Jacobian-                 | Projective------------------------------------------------------------------------------------ Instances------------------------------------------------------------------------------------ Elliptic curve points are arbitrary.-instance Curve f c e q r => Arbitrary (Point f c e q r) where--  -- Arbitrary group element.-  arbitrary = mul gen <$> arbitrary-  {- Arbitrary curve point.-  arbitrary = suchThatMap arbitrary pointX-  -}-  {-# INLINABLE arbitrary #-}---- Elliptic curve points are monoids.-instance Curve f c e q r => Monoid (Point f c e q r) where--  mempty = id-  {-# INLINABLE mempty #-}---- Elliptic curve points are random.-instance Curve f c e q r => Random (Point f c e q r) where--  -- Random group element.-  random  = first (mul gen) . random-  {- Random curve point.-  random g = case pointX x of-    Just p -> (p, g')-    _      -> random g'-    where-      (x, g') = random g-  -}-  {-# INLINABLE random #-}--  randomR = panic "not implemented."---- Elliptic curve points are semigroups.-instance Curve f c e q r => Semigroup (Point f c e q r) where--  p <> q = if p == q then dbl p else add p q-  {-# INLINABLE (<>) #-}------------------------------------------------------------------------------------ Temporary------------------------------------------------------------------------------------ Prime field class.-class GaloisField k => PrimeField' k where-  {-# MINIMAL toInt' #-}--  toInt' :: k -> Integer---- Prime field instance.-instance KnownNat p => PrimeField' (PrimeField p) where--  toInt' = toInt-  {-# INLINABLE toInt' #-}
− src/Curve/Binary.hs
@@ -1,251 +0,0 @@-{-# OPTIONS -fno-warn-orphans #-}--module Curve.Binary-  ( module Curve-  , module Curve.Binary-  , module Group-  , Point(..)-  ) where--import Protolude--import GaloisField (GaloisField(..))-import Text.PrettyPrint.Leijen.Text (Pretty(..))--import Curve (Coordinates(..), Curve(..), Form(..), PrimeField')-import Group (Group(..))------------------------------------------------------------------------------------ Binary form------------------------------------------------------------------------------------ | Binary points.-type BPoint = Point 'Binary---- | Binary curves.-class (GaloisField q, PrimeField' r, Curve 'Binary c e q r) => BCurve c e q r where-  {-# MINIMAL a_, b_, h_, p_, r_, x_, y_ #-}-  a_ :: BPoint c e q r -> q       -- ^ Coefficient @A@.-  b_ :: BPoint c e q r -> q       -- ^ Coefficient @B@.-  h_ :: BPoint c e q r -> Integer -- ^ Curve cofactor.-  p_ :: BPoint c e q r -> Integer -- ^ Curve polynomial.-  r_ :: BPoint c e q r -> Integer -- ^ Curve order.-  x_ :: BPoint c e q r -> q       -- ^ Coordinate @X@.-  y_ :: BPoint c e q r -> q       -- ^ Coordinate @Y@.------------------------------------------------------------------------------------ Affine coordinates------------------------------------------------------------------------------------ | Binary affine points.-type BAPoint = BPoint 'Affine---- | Binary affine curves @y^2 + xy = x^3 + Ax^2 + B@.-class BCurve 'Affine e q r => BACurve e q r where-  {-# MINIMAL gA_ #-}-  gA_ :: BAPoint e q r -- ^ Curve generator.---- Binary affine curves are elliptic curves.-instance BACurve e q r => Curve 'Binary 'Affine e q r where--  data instance Point 'Binary 'Affine e q r = A q q -- ^ Affine point.-                                            | O     -- ^ Infinite point.-    deriving (Eq, Generic, NFData, Read, Show)--  char = const 2-  {-# INLINABLE char #-}--  cof = h_-  {-# INLINABLE cof #-}--  disc _ = b_ (witness :: BAPoint e q r)-  {-# INLINABLE disc #-}--  fromA = identity-  {-# INLINABLE fromA #-}--  point x y = let p = A x y in if def p then Just p else Nothing-  {-# INLINABLE point #-}--  pointX x = A x <$> yX (witness :: BAPoint e q r) x-  {-# INLINABLE pointX #-}--  toA = identity-  {-# INLINABLE toA #-}--  yX _ x = quad 1 x ((x + a) * x * x + b)-    where-      a = a_ (witness :: BAPoint e q r)-      b = b_ (witness :: BAPoint e q r)-  {-# INLINABLE yX #-}---- Binary affine points are groups.-instance BACurve e q r => Group (BAPoint e q r) where--  add p  O      = p-  add O q       = q-  add (A x1 y1) (A x2 y2)-    | xx == 0   = O-    | otherwise = A x3 y3-    where-      a  = a_ (witness :: BAPoint e q r)-      xx = x1 + x2-      yy = y1 + y2-      l  = yy / xx-      x3 = l * (l + 1) + xx + a-      y3 = l * (x1 + x3) + x3 + y1-  {-# INLINABLE add #-}--  dbl O         = O-  dbl (A x y)-    | x == 0    = O-    | otherwise = A x' y'-    where-      a  = a_ (witness :: BAPoint e q r)-      l  = x + y / x-      l' = l + 1-      x' = l * l' + a-      y' = x * x + l' * x'-  {-# INLINABLE dbl #-}--  def O       = True-  def (A x y) = ((x + a) * x + y) * x + b + y * y == 0-    where-      a = a_ (witness :: BAPoint e q r)-      b = b_ (witness :: BAPoint e q r)-  {-# INLINABLE def #-}--  gen = gA_-  {-# INLINABLE gen #-}--  id = O-  {-# INLINABLE id #-}--  inv O       = O-  inv (A x y) = A x (x + y)-  {-# INLINABLE inv #-}--  order = r_-  {-# INLINABLE order #-}---- Binary affine points are pretty.-instance BACurve e q r => Pretty (BAPoint e q r) where--  pretty (A x y) = pretty (x, y)-  pretty O       = "O"------------------------------------------------------------------------------------ Projective coordinates------------------------------------------------------------------------------------ | Binary projective points.-type BPPoint = BPoint 'Projective---- | Binary projective curves @y^2z + xyz = x^3 + Ax^2z + Bz@.-class BCurve 'Projective e q r => BPCurve e q r where-  {-# MINIMAL gP_ #-}-  gP_ :: BPPoint e q r -- ^ Curve generator.---- Binary projective curves are elliptic curves.-instance BPCurve e q r => Curve 'Binary 'Projective e q r where--  data instance Point 'Binary 'Projective e q r = P q q q -- ^ Projective point.-    deriving (Generic, NFData, Read, Show)--  char = const 2-  {-# INLINABLE char #-}--  cof = h_-  {-# INLINABLE cof #-}--  disc _ = b_ (witness :: BPPoint e q r)-  {-# INLINABLE disc #-}--  fromA (A x y) = P x y 1-  fromA _       = P 0 1 0-  {-# INLINABLE fromA #-}--  point x y = let p = P x y 1 in if def p then Just p else Nothing-  {-# INLINABLE point #-}--  pointX x = flip (P x) 1 <$> yX (witness :: BPPoint e q r) x-  {-# INLINABLE pointX #-}--  toA (P _ _ 0) = O-  toA (P x y z) = A (x / z) (y / z)-  {-# INLINABLE toA #-}--  yX _ x = quad 1 x ((x + a) * x * x + b)-    where-      a = a_ (witness :: BPPoint e q r)-      b = b_ (witness :: BPPoint e q r)-  {-# INLINABLE yX #-}---- Binary projective points are groups.-instance BPCurve e q r => Group (BPPoint e q r) where--  -- Addition formula add-2008-bl-  add  p           (P  _  _  0) = p-  add (P  _  _  0)  q           = q-  add (P x1 y1 z1) (P x2 y2 z2) = P x3 y3 z3-    where-      a'   = a_ (witness :: BPPoint e q r)-      y1z2 = y1 * z2-      x1z2 = x1 * z2-      a    = y1z2 + z1 * y2-      b    = x1z2 + z1 * x2-      ab   = a + b-      c    = b * b-      d    = z1 * z2-      e    = b * c-      f    = (a * ab + a' * c) * d + e-      x3   = b * f-      y3   = c * (a * x1z2 + b * y1z2) + ab * f-      z3   = e * d-  {-# INLINABLE add #-}--  -- Doubling formula dbl-2008-bl-  dbl (P  _  _  0) = P  0  1  0-  dbl (P x1 y1 z1) = P x3 y3 z3-    where-      a' = a_ (witness :: BPPoint e q r)-      a  = x1 * x1-      b  = a + y1 * z1-      c  = x1 * z1-      bc = b + c-      d  = c * c-      e  = b * bc + a' * d-      x3 = c * e-      y3 = bc * e + a * a * c-      z3 = c * d-  {-# INLINABLE dbl #-}--  def (P x y z) = ((x + a * z) * x + yz) * x + y * yz + b * z * z * z == 0-    where-      a  = a_ (witness :: BPPoint e q r)-      b  = b_ (witness :: BPPoint e q r)-      yz = y * z-  {-# INLINABLE def #-}--  gen = gP_-  {-# INLINABLE gen #-}--  id = P 0 1 0-  {-# INLINABLE id #-}--  inv (P x y z) = P x (x + y) z-  {-# INLINABLE inv #-}--  order = r_-  {-# INLINABLE order #-}---- Binary projective points are equatable.-instance BPCurve e q r => Eq (BPPoint e q r) where--  P x1 y1 z1 == P x2 y2 z2 = z1 == 0 && z2 == 0-    || x1 * z2 == x2 * z1 && y1 * z2 == y2 * z1---- Binary projective points are pretty.-instance BPCurve e q r => Pretty (BPPoint e q r) where--  pretty (P x y z) = pretty (x, y, z)
− src/Curve/Binary/SECT113R1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT113R1-  ( module Curve.Binary-  , module Curve.Binary.SECT113R1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT113R1 curve.-data SECT113R1---- | Field of points of SECT113R1 curve.-type F2m = BinaryField 0x20000000000000000000000000201---- | Field of coefficients of SECT113R1 curve.-type Fr = PrimeField 0x100000000000000d9ccec8a39e56f---- | SECT113R1 curve is a binary curve.-instance Curve 'Binary c SECT113R1 F2m Fr => BCurve c SECT113R1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT113R1 curve point.-type PA = BAPoint SECT113R1 F2m Fr---- | Affine SECT113R1 curve is a binary affine curve.-instance BACurve SECT113R1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT113R1 point.-type PP = BPPoint SECT113R1 F2m Fr---- | Projective SECT113R1 curve is a binary projective curve.-instance BPCurve SECT113R1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT113R1 curve.-_a :: F2m-_a = 0x3088250ca6e7c7fe649ce85820f7-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT113R1 curve.-_b :: F2m-_b = 0xe8bee4d3e2260744188be0e9c723-{-# INLINABLE _b #-}---- | Cofactor of SECT113R1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT113R1 curve.-_p :: Integer-_p = 0x20000000000000000000000000201-{-# INLINABLE _p #-}---- | Order of SECT113R1 curve.-_r :: Integer-_r = 0x100000000000000d9ccec8a39e56f-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT113R1 curve.-_x :: F2m-_x = 0x9d73616f35f4ab1407d73562c10f-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT113R1 curve.-_y :: F2m-_y = 0xa52830277958ee84d1315ed31886-{-# INLINABLE _y #-}---- | Generator of affine SECT113R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT113R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT113R2.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT113R2-  ( module Curve.Binary-  , module Curve.Binary.SECT113R2-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT113R2 curve.-data SECT113R2---- | Field of points of SECT113R2 curve.-type F2m = BinaryField 0x20000000000000000000000000201---- | Field of coefficients of SECT113R2 curve.-type Fr = PrimeField 0x10000000000000108789b2496af93---- | SECT113R2 curve is a binary curve.-instance Curve 'Binary c SECT113R2 F2m Fr => BCurve c SECT113R2 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT113R2 curve point.-type PA = BAPoint SECT113R2 F2m Fr---- | Affine SECT113R2 curve is a binary affine curve.-instance BACurve SECT113R2 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT113R2 point.-type PP = BPPoint SECT113R2 F2m Fr---- | Projective SECT113R2 curve is a binary projective curve.-instance BPCurve SECT113R2 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT113R2 curve.-_a :: F2m-_a = 0x689918dbec7e5a0dd6dfc0aa55c7-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT113R2 curve.-_b :: F2m-_b = 0x95e9a9ec9b297bd4bf36e059184f-{-# INLINABLE _b #-}---- | Cofactor of SECT113R2 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT113R2 curve.-_p :: Integer-_p = 0x20000000000000000000000000201-{-# INLINABLE _p #-}---- | Order of SECT113R2 curve.-_r :: Integer-_r = 0x10000000000000108789b2496af93-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT113R2 curve.-_x :: F2m-_x = 0x1a57a6a7b26ca5ef52fcdb8164797-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT113R2 curve.-_y :: F2m-_y = 0xb3adc94ed1fe674c06e695baba1d-{-# INLINABLE _y #-}---- | Generator of affine SECT113R2 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT113R2 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT131R1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT131R1-  ( module Curve.Binary-  , module Curve.Binary.SECT131R1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT131R1 curve.-data SECT131R1---- | Field of points of SECT131R1 curve.-type F2m = BinaryField 0x80000000000000000000000000000010d---- | Field of coefficients of SECT131R1 curve.-type Fr = PrimeField 0x400000000000000023123953a9464b54d---- | SECT131R1 curve is a binary curve.-instance Curve 'Binary c SECT131R1 F2m Fr => BCurve c SECT131R1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT131R1 curve point.-type PA = BAPoint SECT131R1 F2m Fr---- | Affine SECT131R1 curve is a binary affine curve.-instance BACurve SECT131R1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT131R1 point.-type PP = BPPoint SECT131R1 F2m Fr---- | Projective SECT131R1 curve is a binary projective curve.-instance BPCurve SECT131R1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT131R1 curve.-_a :: F2m-_a = 0x7a11b09a76b562144418ff3ff8c2570b8-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT131R1 curve.-_b :: F2m-_b = 0x217c05610884b63b9c6c7291678f9d341-{-# INLINABLE _b #-}---- | Cofactor of SECT131R1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT131R1 curve.-_p :: Integer-_p = 0x80000000000000000000000000000010d-{-# INLINABLE _p #-}---- | Order of SECT131R1 curve.-_r :: Integer-_r = 0x400000000000000023123953a9464b54d-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT131R1 curve.-_x :: F2m-_x = 0x81baf91fdf9833c40f9c181343638399-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT131R1 curve.-_y :: F2m-_y = 0x78c6e7ea38c001f73c8134b1b4ef9e150-{-# INLINABLE _y #-}---- | Generator of affine SECT131R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT131R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT131R2.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT131R2-  ( module Curve.Binary-  , module Curve.Binary.SECT131R2-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT131R2 curve.-data SECT131R2---- | Field of points of SECT131R2 curve.-type F2m = BinaryField 0x80000000000000000000000000000010d---- | Field of coefficients of SECT131R2 curve.-type Fr = PrimeField 0x400000000000000016954a233049ba98f---- | SECT131R2 curve is a binary curve.-instance Curve 'Binary c SECT131R2 F2m Fr => BCurve c SECT131R2 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT131R2 curve point.-type PA = BAPoint SECT131R2 F2m Fr---- | Affine SECT131R2 curve is a binary affine curve.-instance BACurve SECT131R2 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT131R2 point.-type PP = BPPoint SECT131R2 F2m Fr---- | Projective SECT131R2 curve is a binary projective curve.-instance BPCurve SECT131R2 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT131R2 curve.-_a :: F2m-_a = 0x3e5a88919d7cafcbf415f07c2176573b2-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT131R2 curve.-_b :: F2m-_b = 0x4b8266a46c55657ac734ce38f018f2192-{-# INLINABLE _b #-}---- | Cofactor of SECT131R2 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT131R2 curve.-_p :: Integer-_p = 0x80000000000000000000000000000010d-{-# INLINABLE _p #-}---- | Order of SECT131R2 curve.-_r :: Integer-_r = 0x400000000000000016954a233049ba98f-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT131R2 curve.-_x :: F2m-_x = 0x356dcd8f2f95031ad652d23951bb366a8-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT131R2 curve.-_y :: F2m-_y = 0x648f06d867940a5366d9e265de9eb240f-{-# INLINABLE _y #-}---- | Generator of affine SECT131R2 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT131R2 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT163K1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT163K1-  ( module Curve.Binary-  , module Curve.Binary.SECT163K1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT163K1 curve.-data SECT163K1---- | Field of points of SECT163K1 curve.-type F2m = BinaryField 0x800000000000000000000000000000000000000c9---- | Field of coefficients of SECT163K1 curve.-type Fr = PrimeField 0x4000000000000000000020108a2e0cc0d99f8a5ef---- | SECT163K1 curve is a binary curve.-instance Curve 'Binary c SECT163K1 F2m Fr => BCurve c SECT163K1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT163K1 curve point.-type PA = BAPoint SECT163K1 F2m Fr---- | Affine SECT163K1 curve is a binary affine curve.-instance BACurve SECT163K1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT163K1 point.-type PP = BPPoint SECT163K1 F2m Fr---- | Projective SECT163K1 curve is a binary projective curve.-instance BPCurve SECT163K1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT163K1 curve.-_a :: F2m-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT163K1 curve.-_b :: F2m-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of SECT163K1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT163K1 curve.-_p :: Integer-_p = 0x800000000000000000000000000000000000000c9-{-# INLINABLE _p #-}---- | Order of SECT163K1 curve.-_r :: Integer-_r = 0x4000000000000000000020108a2e0cc0d99f8a5ef-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT163K1 curve.-_x :: F2m-_x = 0x2fe13c0537bbc11acaa07d793de4e6d5e5c94eee8-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT163K1 curve.-_y :: F2m-_y = 0x289070fb05d38ff58321f2e800536d538ccdaa3d9-{-# INLINABLE _y #-}---- | Generator of affine SECT163K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT163K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT163R1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT163R1-  ( module Curve.Binary-  , module Curve.Binary.SECT163R1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT163R1 curve.-data SECT163R1---- | Field of points of SECT163R1 curve.-type F2m = BinaryField 0x800000000000000000000000000000000000000c9---- | Field of coefficients of SECT163R1 curve.-type Fr = PrimeField 0x3ffffffffffffffffffff48aab689c29ca710279b---- | SECT163R1 curve is a binary curve.-instance Curve 'Binary c SECT163R1 F2m Fr => BCurve c SECT163R1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT163R1 curve point.-type PA = BAPoint SECT163R1 F2m Fr---- | Affine SECT163R1 curve is a binary affine curve.-instance BACurve SECT163R1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT163R1 point.-type PP = BPPoint SECT163R1 F2m Fr---- | Projective SECT163R1 curve is a binary projective curve.-instance BPCurve SECT163R1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT163R1 curve.-_a :: F2m-_a = 0x7b6882caaefa84f9554ff8428bd88e246d2782ae2-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT163R1 curve.-_b :: F2m-_b = 0x713612dcddcb40aab946bda29ca91f73af958afd9-{-# INLINABLE _b #-}---- | Cofactor of SECT163R1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT163R1 curve.-_p :: Integer-_p = 0x800000000000000000000000000000000000000c9-{-# INLINABLE _p #-}---- | Order of SECT163R1 curve.-_r :: Integer-_r = 0x3ffffffffffffffffffff48aab689c29ca710279b-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT163R1 curve.-_x :: F2m-_x = 0x369979697ab43897789566789567f787a7876a654-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT163R1 curve.-_y :: F2m-_y = 0x435edb42efafb2989d51fefce3c80988f41ff883-{-# INLINABLE _y #-}---- | Generator of affine SECT163R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT163R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT163R2.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT163R2-  ( module Curve.Binary-  , module Curve.Binary.SECT163R2-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT163R2 curve.-data SECT163R2---- | Field of points of SECT163R2 curve.-type F2m = BinaryField 0x800000000000000000000000000000000000000c9---- | Field of coefficients of SECT163R2 curve.-type Fr = PrimeField 0x40000000000000000000292fe77e70c12a4234c33---- | SECT163R2 curve is a binary curve.-instance Curve 'Binary c SECT163R2 F2m Fr => BCurve c SECT163R2 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT163R2 curve point.-type PA = BAPoint SECT163R2 F2m Fr---- | Affine SECT163R2 curve is a binary affine curve.-instance BACurve SECT163R2 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT163R2 point.-type PP = BPPoint SECT163R2 F2m Fr---- | Projective SECT163R2 curve is a binary projective curve.-instance BPCurve SECT163R2 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT163R2 curve.-_a :: F2m-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT163R2 curve.-_b :: F2m-_b = 0x20a601907b8c953ca1481eb10512f78744a3205fd-{-# INLINABLE _b #-}---- | Cofactor of SECT163R2 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT163R2 curve.-_p :: Integer-_p = 0x800000000000000000000000000000000000000c9-{-# INLINABLE _p #-}---- | Order of SECT163R2 curve.-_r :: Integer-_r = 0x40000000000000000000292fe77e70c12a4234c33-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT163R2 curve.-_x :: F2m-_x = 0x3f0eba16286a2d57ea0991168d4994637e8343e36-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT163R2 curve.-_y :: F2m-_y = 0xd51fbc6c71a0094fa2cdd545b11c5c0c797324f1-{-# INLINABLE _y #-}---- | Generator of affine SECT163R2 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT163R2 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT193R1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT193R1-  ( module Curve.Binary-  , module Curve.Binary.SECT193R1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT193R1 curve.-data SECT193R1---- | Field of points of SECT193R1 curve.-type F2m = BinaryField 0x2000000000000000000000000000000000000000000008001---- | Field of coefficients of SECT193R1 curve.-type Fr = PrimeField 0x1000000000000000000000000c7f34a778f443acc920eba49---- | SECT193R1 curve is a binary curve.-instance Curve 'Binary c SECT193R1 F2m Fr => BCurve c SECT193R1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT193R1 curve point.-type PA = BAPoint SECT193R1 F2m Fr---- | Affine SECT193R1 curve is a binary affine curve.-instance BACurve SECT193R1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT193R1 point.-type PP = BPPoint SECT193R1 F2m Fr---- | Projective SECT193R1 curve is a binary projective curve.-instance BPCurve SECT193R1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT193R1 curve.-_a :: F2m-_a = 0x17858feb7a98975169e171f77b4087de098ac8a911df7b01-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT193R1 curve.-_b :: F2m-_b = 0xfdfb49bfe6c3a89facadaa7a1e5bbc7cc1c2e5d831478814-{-# INLINABLE _b #-}---- | Cofactor of SECT193R1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT193R1 curve.-_p :: Integer-_p = 0x2000000000000000000000000000000000000000000008001-{-# INLINABLE _p #-}---- | Order of SECT193R1 curve.-_r :: Integer-_r = 0x1000000000000000000000000c7f34a778f443acc920eba49-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT193R1 curve.-_x :: F2m-_x = 0x1f481bc5f0ff84a74ad6cdf6fdef4bf6179625372d8c0c5e1-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT193R1 curve.-_y :: F2m-_y = 0x25e399f2903712ccf3ea9e3a1ad17fb0b3201b6af7ce1b05-{-# INLINABLE _y #-}---- | Generator of affine SECT193R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT193R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT193R2.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT193R2-  ( module Curve.Binary-  , module Curve.Binary.SECT193R2-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT193R2 curve.-data SECT193R2---- | Field of points of SECT193R2 curve.-type F2m = BinaryField 0x2000000000000000000000000000000000000000000008001---- | Field of coefficients of SECT193R2 curve.-type Fr = PrimeField 0x10000000000000000000000015aab561b005413ccd4ee99d5---- | SECT193R2 curve is a binary curve.-instance Curve 'Binary c SECT193R2 F2m Fr => BCurve c SECT193R2 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT193R2 curve point.-type PA = BAPoint SECT193R2 F2m Fr---- | Affine SECT193R2 curve is a binary affine curve.-instance BACurve SECT193R2 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT193R2 point.-type PP = BPPoint SECT193R2 F2m Fr---- | Projective SECT193R2 curve is a binary projective curve.-instance BPCurve SECT193R2 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT193R2 curve.-_a :: F2m-_a = 0x163f35a5137c2ce3ea6ed8667190b0bc43ecd69977702709b-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT193R2 curve.-_b :: F2m-_b = 0xc9bb9e8927d4d64c377e2ab2856a5b16e3efb7f61d4316ae-{-# INLINABLE _b #-}---- | Cofactor of SECT193R2 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT193R2 curve.-_p :: Integer-_p = 0x2000000000000000000000000000000000000000000008001-{-# INLINABLE _p #-}---- | Order of SECT193R2 curve.-_r :: Integer-_r = 0x10000000000000000000000015aab561b005413ccd4ee99d5-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT193R2 curve.-_x :: F2m-_x = 0xd9b67d192e0367c803f39e1a7e82ca14a651350aae617e8f-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT193R2 curve.-_y :: F2m-_y = 0x1ce94335607c304ac29e7defbd9ca01f596f927224cdecf6c-{-# INLINABLE _y #-}---- | Generator of affine SECT193R2 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT193R2 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT233K1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT233K1-  ( module Curve.Binary-  , module Curve.Binary.SECT233K1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT233K1 curve.-data SECT233K1---- | Field of points of SECT233K1 curve.-type F2m = BinaryField 0x20000000000000000000000000000000000000004000000000000000001---- | Field of coefficients of SECT233K1 curve.-type Fr = PrimeField 0x8000000000000000000000000000069d5bb915bcd46efb1ad5f173abdf---- | SECT233K1 curve is a binary curve.-instance Curve 'Binary c SECT233K1 F2m Fr => BCurve c SECT233K1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT233K1 curve point.-type PA = BAPoint SECT233K1 F2m Fr---- | Affine SECT233K1 curve is a binary affine curve.-instance BACurve SECT233K1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT233K1 point.-type PP = BPPoint SECT233K1 F2m Fr---- | Projective SECT233K1 curve is a binary projective curve.-instance BPCurve SECT233K1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT233K1 curve.-_a :: F2m-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT233K1 curve.-_b :: F2m-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of SECT233K1 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Polynomial of SECT233K1 curve.-_p :: Integer-_p = 0x20000000000000000000000000000000000000004000000000000000001-{-# INLINABLE _p #-}---- | Order of SECT233K1 curve.-_r :: Integer-_r = 0x8000000000000000000000000000069d5bb915bcd46efb1ad5f173abdf-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT233K1 curve.-_x :: F2m-_x = 0x17232ba853a7e731af129f22ff4149563a419c26bf50a4c9d6eefad6126-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT233K1 curve.-_y :: F2m-_y = 0x1db537dece819b7f70f555a67c427a8cd9bf18aeb9b56e0c11056fae6a3-{-# INLINABLE _y #-}---- | Generator of affine SECT233K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT233K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT233R1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT233R1-  ( module Curve.Binary-  , module Curve.Binary.SECT233R1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT233R1 curve.-data SECT233R1---- | Field of points of SECT233R1 curve.-type F2m = BinaryField 0x20000000000000000000000000000000000000004000000000000000001---- | Field of coefficients of SECT233R1 curve.-type Fr = PrimeField 0x1000000000000000000000000000013e974e72f8a6922031d2603cfe0d7---- | SECT233R1 curve is a binary curve.-instance Curve 'Binary c SECT233R1 F2m Fr => BCurve c SECT233R1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT233R1 curve point.-type PA = BAPoint SECT233R1 F2m Fr---- | Affine SECT233R1 curve is a binary affine curve.-instance BACurve SECT233R1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT233R1 point.-type PP = BPPoint SECT233R1 F2m Fr---- | Projective SECT233R1 curve is a binary projective curve.-instance BPCurve SECT233R1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT233R1 curve.-_a :: F2m-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT233R1 curve.-_b :: F2m-_b = 0x66647ede6c332c7f8c0923bb58213b333b20e9ce4281fe115f7d8f90ad-{-# INLINABLE _b #-}---- | Cofactor of SECT233R1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT233R1 curve.-_p :: Integer-_p = 0x20000000000000000000000000000000000000004000000000000000001-{-# INLINABLE _p #-}---- | Order of SECT233R1 curve.-_r :: Integer-_r = 0x1000000000000000000000000000013e974e72f8a6922031d2603cfe0d7-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT233R1 curve.-_x :: F2m-_x = 0xfac9dfcbac8313bb2139f1bb755fef65bc391f8b36f8f8eb7371fd558b-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT233R1 curve.-_y :: F2m-_y = 0x1006a08a41903350678e58528bebf8a0beff867a7ca36716f7e01f81052-{-# INLINABLE _y #-}---- | Generator of affine SECT233R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT233R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT239K1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT239K1-  ( module Curve.Binary-  , module Curve.Binary.SECT239K1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT239K1 curve.-data SECT239K1---- | Field of points of SECT239K1 curve.-type F2m = BinaryField 0x800000000000000000004000000000000000000000000000000000000001---- | Field of coefficients of SECT239K1 curve.-type Fr = PrimeField 0x2000000000000000000000000000005a79fec67cb6e91f1c1da800e478a5---- | SECT239K1 curve is a binary curve.-instance Curve 'Binary c SECT239K1 F2m Fr => BCurve c SECT239K1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT239K1 curve point.-type PA = BAPoint SECT239K1 F2m Fr---- | Affine SECT239K1 curve is a binary affine curve.-instance BACurve SECT239K1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT239K1 point.-type PP = BPPoint SECT239K1 F2m Fr---- | Projective SECT239K1 curve is a binary projective curve.-instance BPCurve SECT239K1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT239K1 curve.-_a :: F2m-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT239K1 curve.-_b :: F2m-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of SECT239K1 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Polynomial of SECT239K1 curve.-_p :: Integer-_p = 0x800000000000000000004000000000000000000000000000000000000001-{-# INLINABLE _p #-}---- | Order of SECT239K1 curve.-_r :: Integer-_r = 0x2000000000000000000000000000005a79fec67cb6e91f1c1da800e478a5-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT239K1 curve.-_x :: F2m-_x = 0x29a0b6a887a983e9730988a68727a8b2d126c44cc2cc7b2a6555193035dc-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT239K1 curve.-_y :: F2m-_y = 0x76310804f12e549bdb011c103089e73510acb275fc312a5dc6b76553f0ca-{-# INLINABLE _y #-}---- | Generator of affine SECT239K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT239K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT283K1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT283K1-  ( module Curve.Binary-  , module Curve.Binary.SECT283K1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT283K1 curve.-data SECT283K1---- | Field of points of SECT283K1 curve.-type F2m = BinaryField 0x800000000000000000000000000000000000000000000000000000000000000000010a1---- | Field of coefficients of SECT283K1 curve.-type Fr = PrimeField 0x1ffffffffffffffffffffffffffffffffffe9ae2ed07577265dff7f94451e061e163c61---- | SECT283K1 curve is a binary curve.-instance Curve 'Binary c SECT283K1 F2m Fr => BCurve c SECT283K1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT283K1 curve point.-type PA = BAPoint SECT283K1 F2m Fr---- | Affine SECT283K1 curve is a binary affine curve.-instance BACurve SECT283K1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT283K1 point.-type PP = BPPoint SECT283K1 F2m Fr---- | Projective SECT283K1 curve is a binary projective curve.-instance BPCurve SECT283K1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT283K1 curve.-_a :: F2m-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT283K1 curve.-_b :: F2m-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of SECT283K1 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Polynomial of SECT283K1 curve.-_p :: Integer-_p = 0x800000000000000000000000000000000000000000000000000000000000000000010a1-{-# INLINABLE _p #-}---- | Order of SECT283K1 curve.-_r :: Integer-_r = 0x1ffffffffffffffffffffffffffffffffffe9ae2ed07577265dff7f94451e061e163c61-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT283K1 curve.-_x :: F2m-_x = 0x503213f78ca44883f1a3b8162f188e553cd265f23c1567a16876913b0c2ac2458492836-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT283K1 curve.-_y :: F2m-_y = 0x1ccda380f1c9e318d90f95d07e5426fe87e45c0e8184698e45962364e34116177dd2259-{-# INLINABLE _y #-}---- | Generator of affine SECT283K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT283K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT283R1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT283R1-  ( module Curve.Binary-  , module Curve.Binary.SECT283R1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT283R1 curve.-data SECT283R1---- | Field of points of SECT283R1 curve.-type F2m = BinaryField 0x800000000000000000000000000000000000000000000000000000000000000000010a1---- | Field of coefficients of SECT283R1 curve.-type Fr = PrimeField 0x3ffffffffffffffffffffffffffffffffffef90399660fc938a90165b042a7cefadb307---- | SECT283R1 curve is a binary curve.-instance Curve 'Binary c SECT283R1 F2m Fr => BCurve c SECT283R1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT283R1 curve point.-type PA = BAPoint SECT283R1 F2m Fr---- | Affine SECT283R1 curve is a binary affine curve.-instance BACurve SECT283R1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT283R1 point.-type PP = BPPoint SECT283R1 F2m Fr---- | Projective SECT283R1 curve is a binary projective curve.-instance BPCurve SECT283R1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT283R1 curve.-_a :: F2m-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT283R1 curve.-_b :: F2m-_b = 0x27b680ac8b8596da5a4af8a19a0303fca97fd7645309fa2a581485af6263e313b79a2f5-{-# INLINABLE _b #-}---- | Cofactor of SECT283R1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT283R1 curve.-_p :: Integer-_p = 0x800000000000000000000000000000000000000000000000000000000000000000010a1-{-# INLINABLE _p #-}---- | Order of SECT283R1 curve.-_r :: Integer-_r = 0x3ffffffffffffffffffffffffffffffffffef90399660fc938a90165b042a7cefadb307-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT283R1 curve.-_x :: F2m-_x = 0x5f939258db7dd90e1934f8c70b0dfec2eed25b8557eac9c80e2e198f8cdbecd86b12053-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT283R1 curve.-_y :: F2m-_y = 0x3676854fe24141cb98fe6d4b20d02b4516ff702350eddb0826779c813f0df45be8112f4-{-# INLINABLE _y #-}---- | Generator of affine SECT283R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT283R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT409K1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT409K1-  ( module Curve.Binary-  , module Curve.Binary.SECT409K1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT409K1 curve.-data SECT409K1---- | Field of points of SECT409K1 curve.-type F2m = BinaryField 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001---- | Field of coefficients of SECT409K1 curve.-type Fr = PrimeField 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffe5f83b2d4ea20400ec4557d5ed3e3e7ca5b4b5c83b8e01e5fcf---- | SECT409K1 curve is a binary curve.-instance Curve 'Binary c SECT409K1 F2m Fr => BCurve c SECT409K1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT409K1 curve point.-type PA = BAPoint SECT409K1 F2m Fr---- | Affine SECT409K1 curve is a binary affine curve.-instance BACurve SECT409K1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT409K1 point.-type PP = BPPoint SECT409K1 F2m Fr---- | Projective SECT409K1 curve is a binary projective curve.-instance BPCurve SECT409K1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT409K1 curve.-_a :: F2m-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT409K1 curve.-_b :: F2m-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of SECT409K1 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Polynomial of SECT409K1 curve.-_p :: Integer-_p = 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001-{-# INLINABLE _p #-}---- | Order of SECT409K1 curve.-_r :: Integer-_r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffe5f83b2d4ea20400ec4557d5ed3e3e7ca5b4b5c83b8e01e5fcf-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT409K1 curve.-_x :: F2m-_x = 0x60f05f658f49c1ad3ab1890f7184210efd0987e307c84c27accfb8f9f67cc2c460189eb5aaaa62ee222eb1b35540cfe9023746-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT409K1 curve.-_y :: F2m-_y = 0x1e369050b7c4e42acba1dacbf04299c3460782f918ea427e6325165e9ea10e3da5f6c42e9c55215aa9ca27a5863ec48d8e0286b-{-# INLINABLE _y #-}---- | Generator of affine SECT409K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT409K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT409R1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT409R1-  ( module Curve.Binary-  , module Curve.Binary.SECT409R1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT409R1 curve.-data SECT409R1---- | Field of points of SECT409R1 curve.-type F2m = BinaryField 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001---- | Field of coefficients of SECT409R1 curve.-type Fr = PrimeField 0x10000000000000000000000000000000000000000000000000001e2aad6a612f33307be5fa47c3c9e052f838164cd37d9a21173---- | SECT409R1 curve is a binary curve.-instance Curve 'Binary c SECT409R1 F2m Fr => BCurve c SECT409R1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT409R1 curve point.-type PA = BAPoint SECT409R1 F2m Fr---- | Affine SECT409R1 curve is a binary affine curve.-instance BACurve SECT409R1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT409R1 point.-type PP = BPPoint SECT409R1 F2m Fr---- | Projective SECT409R1 curve is a binary projective curve.-instance BPCurve SECT409R1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT409R1 curve.-_a :: F2m-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT409R1 curve.-_b :: F2m-_b = 0x21a5c2c8ee9feb5c4b9a753b7b476b7fd6422ef1f3dd674761fa99d6ac27c8a9a197b272822f6cd57a55aa4f50ae317b13545f-{-# INLINABLE _b #-}---- | Cofactor of SECT409R1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT409R1 curve.-_p :: Integer-_p = 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001-{-# INLINABLE _p #-}---- | Order of SECT409R1 curve.-_r :: Integer-_r = 0x10000000000000000000000000000000000000000000000000001e2aad6a612f33307be5fa47c3c9e052f838164cd37d9a21173-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT409R1 curve.-_x :: F2m-_x = 0x15d4860d088ddb3496b0c6064756260441cde4af1771d4db01ffe5b34e59703dc255a868a1180515603aeab60794e54bb7996a7-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT409R1 curve.-_y :: F2m-_y = 0x61b1cfab6be5f32bbfa78324ed106a7636b9c5a7bd198d0158aa4f5488d08f38514f1fdf4b4f40d2181b3681c364ba0273c706-{-# INLINABLE _y #-}---- | Generator of affine SECT409R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT409R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT571K1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT571K1-  ( module Curve.Binary-  , module Curve.Binary.SECT571K1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT571K1 curve.-data SECT571K1---- | Field of points of SECT571K1 curve.-type F2m = BinaryField 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425---- | Field of coefficients of SECT571K1 curve.-type Fr = PrimeField 0x20000000000000000000000000000000000000000000000000000000000000000000000131850e1f19a63e4b391a8db917f4138b630d84be5d639381e91deb45cfe778f637c1001---- | SECT571K1 curve is a binary curve.-instance Curve 'Binary c SECT571K1 F2m Fr => BCurve c SECT571K1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT571K1 curve point.-type PA = BAPoint SECT571K1 F2m Fr---- | Affine SECT571K1 curve is a binary affine curve.-instance BACurve SECT571K1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT571K1 point.-type PP = BPPoint SECT571K1 F2m Fr---- | Projective SECT571K1 curve is a binary projective curve.-instance BPCurve SECT571K1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT571K1 curve.-_a :: F2m-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT571K1 curve.-_b :: F2m-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of SECT571K1 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Polynomial of SECT571K1 curve.-_p :: Integer-_p = 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425-{-# INLINABLE _p #-}---- | Order of SECT571K1 curve.-_r :: Integer-_r = 0x20000000000000000000000000000000000000000000000000000000000000000000000131850e1f19a63e4b391a8db917f4138b630d84be5d639381e91deb45cfe778f637c1001-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT571K1 curve.-_x :: F2m-_x = 0x26eb7a859923fbc82189631f8103fe4ac9ca2970012d5d46024804801841ca44370958493b205e647da304db4ceb08cbbd1ba39494776fb988b47174dca88c7e2945283a01c8972-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT571K1 curve.-_y :: F2m-_y = 0x349dc807f4fbf374f4aeade3bca95314dd58cec9f307a54ffc61efc006d8a2c9d4979c0ac44aea74fbebbb9f772aedcb620b01a7ba7af1b320430c8591984f601cd4c143ef1c7a3-{-# INLINABLE _y #-}---- | Generator of affine SECT571K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT571K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Binary/SECT571R1.hs
@@ -1,107 +0,0 @@-module Curve.Binary.SECT571R1-  ( module Curve.Binary-  , module Curve.Binary.SECT571R1-  , Point(..)-  ) where--import Protolude--import BinaryField-import PrimeField--import Curve.Binary------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECT571R1 curve.-data SECT571R1---- | Field of points of SECT571R1 curve.-type F2m = BinaryField 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425---- | Field of coefficients of SECT571R1 curve.-type Fr = PrimeField 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47---- | SECT571R1 curve is a binary curve.-instance Curve 'Binary c SECT571R1 F2m Fr => BCurve c SECT571R1 F2m Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  p_ = const _p-  {-# INLINABLE p_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECT571R1 curve point.-type PA = BAPoint SECT571R1 F2m Fr---- | Affine SECT571R1 curve is a binary affine curve.-instance BACurve SECT571R1 F2m Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective SECT571R1 point.-type PP = BPPoint SECT571R1 F2m Fr---- | Projective SECT571R1 curve is a binary projective curve.-instance BPCurve SECT571R1 F2m Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECT571R1 curve.-_a :: F2m-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECT571R1 curve.-_b :: F2m-_b = 0x2f40e7e2221f295de297117b7f3d62f5c6a97ffcb8ceff1cd6ba8ce4a9a18ad84ffabbd8efa59332be7ad6756a66e294afd185a78ff12aa520e4de739baca0c7ffeff7f2955727a-{-# INLINABLE _b #-}---- | Cofactor of SECT571R1 curve.-_h :: Integer-_h = 0x2-{-# INLINABLE _h #-}---- | Polynomial of SECT571R1 curve.-_p :: Integer-_p = 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425-{-# INLINABLE _p #-}---- | Order of SECT571R1 curve.-_r :: Integer-_r = 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECT571R1 curve.-_x :: F2m-_x = 0x303001d34b856296c16c0d40d3cd7750a93d1d2955fa80aa5f40fc8db7b2abdbde53950f4c0d293cdd711a35b67fb1499ae60038614f1394abfa3b4c850d927e1e7769c8eec2d19-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECT571R1 curve.-_y :: F2m-_y = 0x37bf27342da639b6dccfffeb73d69d78c6c27a6009cbbca1980f8533921e8a684423e43bab08a576291af8f461bb2a8b3531d2f0485c19b16e2f1516e23dd3c1a4827af1b8ac15b-{-# INLINABLE _y #-}---- | Generator of affine SECT571R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective SECT571R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards.hs
@@ -1,243 +0,0 @@-{-# OPTIONS -fno-warn-orphans #-}--module Curve.Edwards-  ( module Curve-  , module Curve.Edwards-  , module Group-  , Point(..)-  ) where--import Protolude--import GaloisField (GaloisField(..))-import Text.PrettyPrint.Leijen.Text (Pretty(..))--import Curve (Coordinates(..), Curve(..), Form(..), PrimeField')-import Group (Group(..))------------------------------------------------------------------------------------ Edwards form------------------------------------------------------------------------------------ | Edwards points.-type EPoint = Point 'Edwards---- | Edwards curves.-class (GaloisField q, PrimeField' r, Curve 'Edwards c e q r) => ECurve c e q r where-  {-# MINIMAL a_, d_, h_, q_, r_, x_, y_ #-}-  a_ :: EPoint c e q r -> q       -- ^ Coefficient @A@.-  d_ :: EPoint c e q r -> q       -- ^ Coefficient @D@.-  h_ :: EPoint c e q r -> Integer -- ^ Curve cofactor.-  q_ :: EPoint c e q r -> Integer -- ^ Curve characteristic.-  r_ :: EPoint c e q r -> Integer -- ^ Curve order.-  x_ :: EPoint c e q r -> q       -- ^ Coordinate @X@.-  y_ :: EPoint c e q r -> q       -- ^ Coordinate @Y@.------------------------------------------------------------------------------------ Affine coordinates------------------------------------------------------------------------------------ | Edwards affine curves.-type EAPoint = EPoint 'Affine---- | Edwards affine curves @Ax^2 + y^2 = 1 + Dx^2y^2@.-class ECurve 'Affine e q r => EACurve e q r where-  {-# MINIMAL gA_ #-}-  gA_ :: EAPoint e q r -- ^ Curve generator.---- Edwards affine curves are elliptic curves.-instance EACurve e q r => Curve 'Edwards 'Affine e q r where--  data instance Point 'Edwards 'Affine e q r = A q q -- ^ Affine point.-    deriving (Eq, Generic, NFData, Read, Show)--  char = q_-  {-# INLINABLE char #-}--  cof = h_-  {-# INLINABLE cof #-}--  disc _ = d * (1 - d)-    where-      d = d_ (witness :: EAPoint e q r)-  {-# INLINABLE disc #-}--  fromA = identity-  {-# INLINABLE fromA #-}--  point x y = let p = A x y in if def p then Just p else Nothing-  {-# INLINABLE point #-}--  pointX x = A x <$> yX (witness :: EAPoint e q r) x-  {-# INLINABLE pointX #-}--  toA = identity-  {-# INLINABLE toA #-}--  yX _ x = sr ((1 - a * xx) / (1 - d * xx))-    where-      a  = a_ (witness :: EAPoint e q r)-      d  = d_ (witness :: EAPoint e q r)-      xx = x * x-  {-# INLINABLE yX #-}---- Edwards affine points are groups.-instance EACurve e q r => Group (EAPoint e q r) where--  add (A x1 y1) (A x2 y2) = A x3 y3-    where-      a    = a_ (witness :: EAPoint e q r)-      d    = d_ (witness :: EAPoint e q r)-      x1x2 = x1 * x2-      y1y2 = y1 * y2-      x1y2 = x1 * y2-      x2y1 = x2 * y1-      dxy  = d * x1x2 * y1y2-      x3   = (x1y2 + x2y1) / (1 + dxy)-      y3   = (y1y2 - a * x1x2) / (1 - dxy)-  {-# INLINABLE add #-}--  dbl = join add-  {-# INLINABLE dbl #-}--  def (A x y) = a * xx + yy == 1 + d * xx * yy-    where-      a  = a_ (witness :: EAPoint e q r)-      d  = d_ (witness :: EAPoint e q r)-      xx = x * x-      yy = y * y-  {-# INLINABLE def #-}--  gen = gA_-  {-# INLINABLE gen #-}--  id = A 0 1-  {-# INLINABLE id #-}--  inv (A x y) = A (-x) y-  {-# INLINABLE inv #-}--  order = r_-  {-# INLINABLE order #-}---- Edwards affine points are pretty.-instance EACurve e q r => Pretty (EAPoint e q r) where--  pretty (A x y) = pretty (x, y)------------------------------------------------------------------------------------ Projective coordinates------------------------------------------------------------------------------------ | Edwards projective curves.-type EPPoint = EPoint 'Projective---- | Edwards projective curves @Ax^2z^2 + y^2z^2 = z^4 + Dx^2y^2@.-class ECurve 'Projective e q r => EPCurve e q r where-  {-# MINIMAL gP_ #-}-  gP_ :: EPPoint e q r -- ^ Curve generator.---- Edwards projective curves are elliptic curves.-instance EPCurve e q r => Curve 'Edwards 'Projective e q r where--  data instance Point 'Edwards 'Projective e q r = P q q q -- ^ Projective point.-    deriving (Generic, NFData, Read, Show)--  char = q_-  {-# INLINABLE char #-}--  cof = h_-  {-# INLINABLE cof #-}--  disc _ = d * (1 - d)-    where-      d = d_ (witness :: EPPoint e q r)-  {-# INLINABLE disc #-}--  fromA (A x y) = P x y 1-  {-# INLINABLE fromA #-}--  point x y = let p = P x y 1 in if def p then Just p else Nothing-  {-# INLINABLE point #-}--  pointX x = flip (P x) 1 <$> yX (witness :: EPPoint e q r) x-  {-# INLINABLE pointX #-}--  toA (P x y z) = A (x / z) (y / z)-  {-# INLINABLE toA #-}--  yX _ x = sr ((1 - a * xx) / (1 - d * xx))-    where-      a  = a_ (witness :: EPPoint e q r)-      d  = d_ (witness :: EPPoint e q r)-      xx = x * x-  {-# INLINABLE yX #-}---- Edwards projective points are groups.-instance EPCurve e q r => Group (EPPoint e q r) where--  -- Addition formula add-2008-bbjlp-  add (P x1 y1 z1) (P x2 y2 z2) = P x3 y3 z3-    where-      a' = a_ (witness :: EPPoint e q r)-      d' = d_ (witness :: EPPoint e q r)-      a  = z1 * z2-      b  = a * a-      c  = x1 * x2-      d  = y1 * y2-      e  = d' * c * d-      f  = b - e-      g  = b + e-      x3 = a * f * ((x1 + y1) * (x2 + y2) - c - d)-      y3 = a * g * (d - a' * c)-      z3 = f * g-  {-# INLINABLE add #-}--  -- Doubling formula dbl-2008-bbjlp-  dbl (P x1 y1 z1) = P x3 y3 z3-    where-      a  = a_ (witness :: EPPoint e q r)-      xy = x1 + y1-      b  = xy * xy-      c  = x1 * x1-      d  = y1 * y1-      e  = a * c-      f  = e + d-      h  = z1 * z1-      j  = f - 2 * h-      x3 = (b - c - d) * j-      y3 = f * (e - d)-      z3 = f * j-  {-# INLINABLE dbl #-}--  def (P x y z) = (a * xx + yy - zz) * zz == d * xx * yy-    where-      a  = a_ (witness :: EPPoint e q r)-      d  = d_ (witness :: EPPoint e q r)-      xx = x * x-      yy = y * y-      zz = z * z-  {-# INLINABLE def #-}--  gen = gP_-  {-# INLINABLE gen #-}--  id = P 0 1 1-  {-# INLINABLE id #-}--  inv (P x y z) = P (-x) y z-  {-# INLINABLE inv #-}--  order = r_-  {-# INLINABLE order #-}---- Edwards projective points are equatable.-instance EPCurve e q r => Eq (EPPoint e q r) where--  P x1 y1 z1 == P x2 y2 z2 = z1 == 0 && z2 == 0-    || x1 * z2 == x2 * z1 && y1 * z2 == y2 * z1---- Edwards projective points are pretty.-instance EPCurve e q r => Pretty (EPPoint e q r) where--  pretty (P x y z) = pretty (x, y, z)
− src/Curve/Edwards/Curve1174.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.Curve1174-  ( module Curve.Edwards-  , module Curve.Edwards.Curve1174-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Curve1174 curve.-data Curve1174---- | Field of points of Curve1174 curve.-type Fq = PrimeField 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7---- | Field of coefficients of Curve1174 curve.-type Fr = PrimeField 0x1fffffffffffffffffffffffffffffff77965c4dfd307348944d45fd166c971---- | Curve1174 curve is an Edwards curve.-instance Curve 'Edwards c Curve1174 Fq Fr => ECurve c Curve1174 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Curve1174 curve point.-type PA = EAPoint Curve1174 Fq Fr---- | Affine Curve1174 curve is an Edwards affine curve.-instance EACurve Curve1174 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective Curve1174 point.-type PP = EPPoint Curve1174 Fq Fr---- | Projective Curve1174 curve is an Edwards projective curve.-instance EPCurve Curve1174 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Curve1174 curve.-_a :: Fq-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @D@ of Curve1174 curve.-_d :: Fq-_d = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb61-{-# INLINABLE _d #-}---- | Cofactor of Curve1174 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Characteristic of Curve1174 curve.-_q :: Integer-_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7-{-# INLINABLE _q #-}---- | Order of Curve1174 curve.-_r :: Integer-_r = 0x1fffffffffffffffffffffffffffffff77965c4dfd307348944d45fd166c971-{-# INLINABLE _r #-}---- | Coordinate @X@ of Curve1174 curve.-_x :: Fq-_x = 0x37fbb0cea308c479343aee7c029a190c021d96a492ecd6516123f27bce29eda-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Curve1174 curve.-_y :: Fq-_y = 0x6b72f82d47fb7cc6656841169840e0c4fe2dee2af3f976ba4ccb1bf9b46360e-{-# INLINABLE _y #-}---- | Generator of affine Curve1174 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective Curve1174 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards/Curve41417.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.Curve41417-  ( module Curve.Edwards-  , module Curve.Edwards.Curve41417-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Curve41417 curve.-data Curve41417---- | Field of points of Curve41417 curve.-type Fq = PrimeField 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef---- | Field of coefficients of Curve41417 curve.-type Fr = PrimeField 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffeb3cc92414cf706022b36f1c0338ad63cf181b0e71a5e106af79---- | Curve41417 curve is an Edwards curve.-instance Curve 'Edwards c Curve41417 Fq Fr => ECurve c Curve41417 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Curve41417 curve point.-type PA = EAPoint Curve41417 Fq Fr---- | Affine Curve41417 curve is an Edwards affine curve.-instance EACurve Curve41417 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective Curve41417 point.-type PP = EPPoint Curve41417 Fq Fr---- | Projective Curve41417 curve is an Edwards projective curve.-instance EPCurve Curve41417 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Curve41417 curve.-_a :: Fq-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @D@ of Curve41417 curve.-_d :: Fq-_d = 0xe21-{-# INLINABLE _d #-}---- | Cofactor of Curve41417 curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of Curve41417 curve.-_q :: Integer-_q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef-{-# INLINABLE _q #-}---- | Order of Curve41417 curve.-_r :: Integer-_r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffeb3cc92414cf706022b36f1c0338ad63cf181b0e71a5e106af79-{-# INLINABLE _r #-}---- | Coordinate @X@ of Curve41417 curve.-_x :: Fq-_x = 0x1a334905141443300218c0631c326e5fcd46369f44c03ec7f57ff35498a4ab4d6d6ba111301a73faa8537c64c4fd3812f3cbc595-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Curve41417 curve.-_y :: Fq-_y = 0x22-{-# INLINABLE _y #-}---- | Generator of affine Curve41417 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective Curve41417 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards/E222.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.E222-  ( module Curve.Edwards-  , module Curve.Edwards.E222-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | E222 curve.-data E222---- | Field of points of E222 curve.-type Fq = PrimeField 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffff8b---- | Field of coefficients of E222 curve.-type Fr = PrimeField 0xffffffffffffffffffffffffffff70cbc95e932f802f31423598cbf---- | E222 curve is an Edwards curve.-instance Curve 'Edwards c E222 Fq Fr => ECurve c E222 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine E222 curve point.-type PA = EAPoint E222 Fq Fr---- | Affine E222 curve is an Edwards affine curve.-instance EACurve E222 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective E222 point.-type PP = EPPoint E222 Fq Fr---- | Projective E222 curve is an Edwards projective curve.-instance EPCurve E222 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of E222 curve.-_a :: Fq-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @D@ of E222 curve.-_d :: Fq-_d = 0x27166-{-# INLINABLE _d #-}---- | Cofactor of E222 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Characteristic of E222 curve.-_q :: Integer-_q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffff8b-{-# INLINABLE _q #-}---- | Order of E222 curve.-_r :: Integer-_r = 0xffffffffffffffffffffffffffff70cbc95e932f802f31423598cbf-{-# INLINABLE _r #-}---- | Coordinate @X@ of E222 curve.-_x :: Fq-_x = 0x19b12bb156a389e55c9768c303316d07c23adab3736eb2bc3eb54e51-{-# INLINABLE _x #-}---- | Coordinate @Y@ of E222 curve.-_y :: Fq-_y = 0x1c-{-# INLINABLE _y #-}---- | Generator of affine E222 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective E222 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards/E382.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.E382-  ( module Curve.Edwards-  , module Curve.Edwards.E382-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | E382 curve.-data E382---- | Field of points of E382 curve.-type Fq = PrimeField 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97---- | Field of coefficients of E382 curve.-type Fr = PrimeField 0xfffffffffffffffffffffffffffffffffffffffffffffffd5fb21f21e95eee17c5e69281b102d2773e27e13fd3c9719---- | E382 curve is an Edwards curve.-instance Curve 'Edwards c E382 Fq Fr => ECurve c E382 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine E382 curve point.-type PA = EAPoint E382 Fq Fr---- | Affine E382 curve is an Edwards affine curve.-instance EACurve E382 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective E382 point.-type PP = EPPoint E382 Fq Fr---- | Projective E382 curve is an Edwards projective curve.-instance EPCurve E382 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of E382 curve.-_a :: Fq-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @D@ of E382 curve.-_d :: Fq-_d = 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef8e1-{-# INLINABLE _d #-}---- | Cofactor of E382 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Characteristic of E382 curve.-_q :: Integer-_q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97-{-# INLINABLE _q #-}---- | Order of E382 curve.-_r :: Integer-_r = 0xfffffffffffffffffffffffffffffffffffffffffffffffd5fb21f21e95eee17c5e69281b102d2773e27e13fd3c9719-{-# INLINABLE _r #-}---- | Coordinate @X@ of E382 curve.-_x :: Fq-_x = 0x196f8dd0eab20391e5f05be96e8d20ae68f840032b0b64352923bab85364841193517dbce8105398ebc0cc9470f79603-{-# INLINABLE _x #-}---- | Coordinate @Y@ of E382 curve.-_y :: Fq-_y = 0x11-{-# INLINABLE _y #-}---- | Generator of affine E382 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective E382 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards/E521.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.E521-  ( module Curve.Edwards-  , module Curve.Edwards.E521-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | E521 curve.-data E521---- | Field of points of E521 curve.-type Fq = PrimeField 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff---- | Field of coefficients of E521 curve.-type Fr = PrimeField 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd15b6c64746fc85f736b8af5e7ec53f04fbd8c4569a8f1f4540ea2435f5180d6b---- | E521 curve is an Edwards curve.-instance Curve 'Edwards c E521 Fq Fr => ECurve c E521 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine E521 curve point.-type PA = EAPoint E521 Fq Fr---- | Affine E521 curve is an Edwards affine curve.-instance EACurve E521 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective E521 point.-type PP = EPPoint E521 Fq Fr---- | Projective E521 curve is an Edwards projective curve.-instance EPCurve E521 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of E521 curve.-_a :: Fq-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @D@ of E521 curve.-_d :: Fq-_d = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa4331-{-# INLINABLE _d #-}---- | Cofactor of E521 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Characteristic of E521 curve.-_q :: Integer-_q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-{-# INLINABLE _q #-}---- | Order of E521 curve.-_r :: Integer-_r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd15b6c64746fc85f736b8af5e7ec53f04fbd8c4569a8f1f4540ea2435f5180d6b-{-# INLINABLE _r #-}---- | Coordinate @X@ of E521 curve.-_x :: Fq-_x = 0x752cb45c48648b189df90cb2296b2878a3bfd9f42fc6c818ec8bf3c9c0c6203913f6ecc5ccc72434b1ae949d568fc99c6059d0fb13364838aa302a940a2f19ba6c-{-# INLINABLE _x #-}---- | Coordinate @Y@ of E521 curve.-_y :: Fq-_y = 0xc-{-# INLINABLE _y #-}---- | Generator of affine E521 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective E521 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards/Ed25519.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.Ed25519-  ( module Curve.Edwards-  , module Curve.Edwards.Ed25519-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Ed25519 curve.-data Ed25519---- | Field of points of Ed25519 curve.-type Fq = PrimeField 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed---- | Field of coefficients of Ed25519 curve.-type Fr = PrimeField 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed---- | Ed25519 curve is an Edwards curve.-instance Curve 'Edwards c Ed25519 Fq Fr => ECurve c Ed25519 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Ed25519 curve point.-type PA = EAPoint Ed25519 Fq Fr---- | Affine Ed25519 curve is an Edwards affine curve.-instance EACurve Ed25519 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective Ed25519 point.-type PP = EPPoint Ed25519 Fq Fr---- | Projective Ed25519 curve is an Edwards projective curve.-instance EPCurve Ed25519 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Ed25519 curve.-_a :: Fq-_a = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec-{-# INLINABLE _a #-}---- | Coefficient @D@ of Ed25519 curve.-_d :: Fq-_d = 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3-{-# INLINABLE _d #-}---- | Cofactor of Ed25519 curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of Ed25519 curve.-_q :: Integer-_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed-{-# INLINABLE _q #-}---- | Order of Ed25519 curve.-_r :: Integer-_r = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed-{-# INLINABLE _r #-}---- | Coordinate @X@ of Ed25519 curve.-_x :: Fq-_x = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Ed25519 curve.-_y :: Fq-_y = 0x6666666666666666666666666666666666666666666666666666666666666658-{-# INLINABLE _y #-}---- | Generator of affine Ed25519 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective Ed25519 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards/Ed3363.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.Ed3363-  ( module Curve.Edwards-  , module Curve.Edwards.Ed3363-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Ed3363 curve.-data Ed3363---- | Field of points of Ed3363 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd---- | Field of coefficients of Ed3363 curve.-type Fr = PrimeField 0x200000000000000000000000000000000000000000071415fa9850c0bd6b87f93baa7b2f95973e9fa805---- | Ed3363 curve is an Edwards curve.-instance Curve 'Edwards c Ed3363 Fq Fr => ECurve c Ed3363 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Ed3363 curve point.-type PA = EAPoint Ed3363 Fq Fr---- | Affine Ed3363 curve is an Edwards affine curve.-instance EACurve Ed3363 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective Ed3363 point.-type PP = EPPoint Ed3363 Fq Fr---- | Projective Ed3363 curve is an Edwards projective curve.-instance EPCurve Ed3363 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Ed3363 curve.-_a :: Fq-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @D@ of Ed3363 curve.-_d :: Fq-_d = 0x2b67-{-# INLINABLE _d #-}---- | Cofactor of Ed3363 curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of Ed3363 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd-{-# INLINABLE _q #-}---- | Order of Ed3363 curve.-_r :: Integer-_r = 0x200000000000000000000000000000000000000000071415fa9850c0bd6b87f93baa7b2f95973e9fa805-{-# INLINABLE _r #-}---- | Coordinate @X@ of Ed3363 curve.-_x :: Fq-_x = 0xc-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Ed3363 curve.-_y :: Fq-_y = 0xc0dc616b56502e18e1c161d007853d1b14b46c3811c7ef435b6db5d5650ca0365db12bec68505fe8632-{-# INLINABLE _y #-}---- | Generator of affine Ed3363 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective Ed3363 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards/Ed448.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.Ed448-  ( module Curve.Edwards-  , module Curve.Edwards.Ed448-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Ed448 curve.-data Ed448---- | Field of points of Ed448 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff---- | Field of coefficients of Ed448 curve.-type Fr = PrimeField 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3---- | Ed448 curve is an Edwards curve.-instance Curve 'Edwards c Ed448 Fq Fr => ECurve c Ed448 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Ed448 curve point.-type PA = EAPoint Ed448 Fq Fr---- | Affine Ed448 curve is an Edwards affine curve.-instance EACurve Ed448 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective Ed448 point.-type PP = EPPoint Ed448 Fq Fr---- | Projective Ed448 curve is an Edwards projective curve.-instance EPCurve Ed448 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Ed448 curve.-_a :: Fq-_a = 0x1-{-# INLINABLE _a #-}---- | Coefficient @D@ of Ed448 curve.-_d :: Fq-_d = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756-{-# INLINABLE _d #-}---- | Cofactor of Ed448 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Characteristic of Ed448 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff-{-# INLINABLE _q #-}---- | Order of Ed448 curve.-_r :: Integer-_r = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3-{-# INLINABLE _r #-}---- | Coordinate @X@ of Ed448 curve.-_x :: Fq-_x = 0x297ea0ea2692ff1b4faff46098453a6a26adf733245f065c3c59d0709cecfa96147eaaf3932d94c63d96c170033f4ba0c7f0de840aed939f-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Ed448 curve.-_y :: Fq-_y = 0x13-{-# INLINABLE _y #-}---- | Generator of affine Ed448 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective Ed448 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Edwards/JubJub.hs
@@ -1,106 +0,0 @@-module Curve.Edwards.JubJub-  ( module Curve.Edwards-  , module Curve.Edwards.JubJub-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Edwards------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | JubJub curve.-data JubJub---- | Field of points of JubJub curve.-type Fq = PrimeField 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001---- | Field of coefficients of JubJub curve.-type Fr = PrimeField 0xe7db4ea6533afa906673b0101343b00a6682093ccc81082d0970e5ed6f72cb7---- | JubJub curve is an Edwards curve.-instance Curve 'Edwards c JubJub Fq Fr => ECurve c JubJub Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  d_ = const _d-  {-# INLINABLE d_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine JubJub curve point.-type PA = EAPoint JubJub Fq Fr---- | Affine JubJub curve is an Edwards affine curve.-instance EACurve JubJub Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Projective JubJub point.-type PP = EPPoint JubJub Fq Fr---- | Projective JubJub curve is an Edwards projective curve.-instance EPCurve JubJub Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of JubJub curve.-_a :: Fq-_a = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000-{-# INLINABLE _a #-}---- | Coefficient @D@ of JubJub curve.-_d :: Fq-_d = 0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1-{-# INLINABLE _d #-}---- | Cofactor of JubJub curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of JubJub curve.-_q :: Integer-_q = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001-{-# INLINABLE _q #-}---- | Order of JubJub curve.-_r :: Integer-_r = 0xe7db4ea6533afa906673b0101343b00a6682093ccc81082d0970e5ed6f72cb7-{-# INLINABLE _r #-}---- | Coordinate @X@ of JubJub curve.-_x :: Fq-_x = 0x5183972af8eff38ca624b4df00384882000c546bf2f39ede7f4ecf1a74f976c4-{-# INLINABLE _x #-}---- | Coordinate @Y@ of JubJub curve.-_y :: Fq-_y = 0x3b43f8472ca2fc2c9e8fcc5abd9dc308096c8707ffa6833b146bad709349702e-{-# INLINABLE _y #-}---- | Generator of affine JubJub curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of projective JubJub curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Montgomery.hs
@@ -1,137 +0,0 @@-{-# OPTIONS -fno-warn-orphans #-}--module Curve.Montgomery-  ( module Curve-  , module Curve.Montgomery-  , module Group-  , Point(..)-  ) where--import Protolude--import GaloisField (GaloisField(..))-import Text.PrettyPrint.Leijen.Text (Pretty(..))--import Curve (Coordinates(..), Curve(..), Form(..), PrimeField')-import Group (Group(..))------------------------------------------------------------------------------------ Montgomery form------------------------------------------------------------------------------------ | Montgomery points.-type MPoint = Point 'Montgomery---- | Montgomery curves.-class (GaloisField q, PrimeField' r, Curve 'Montgomery c e q r) => MCurve c e q r where-  {-# MINIMAL a_, b_, h_, q_, r_, x_, y_ #-}-  a_ :: MPoint c e q r -> q       -- ^ Coefficient @A@.-  b_ :: MPoint c e q r -> q       -- ^ Coefficient @B@.-  h_ :: MPoint c e q r -> Integer -- ^ Curve cofactor.-  q_ :: MPoint c e q r -> Integer -- ^ Curve characteristic.-  r_ :: MPoint c e q r -> Integer -- ^ Curve order.-  x_ :: MPoint c e q r -> q       -- ^ Coordinate @X@.-  y_ :: MPoint c e q r -> q       -- ^ Coordinate @Y@.------------------------------------------------------------------------------------ Affine coordinates------------------------------------------------------------------------------------ | Montgomery affine points.-type MAPoint = MPoint 'Affine---- | Montgomery affine curves @By^2 = x^3 + Ax^2 + x@.-class MCurve 'Affine e q r => MACurve e q r where-  {-# MINIMAL gA_ #-}-  gA_ :: MAPoint e q r -- ^ Curve generator.---- Montgomery affine curves are elliptic curves.-instance MACurve e q r => Curve 'Montgomery 'Affine e q r where--  data instance Point 'Montgomery 'Affine e q r = A q q -- ^ Affine point.-                                                | O     -- ^ Infinite point.-    deriving (Eq, Generic, NFData, Read, Show)--  char = q_-  {-# INLINABLE char #-}--  cof = h_-  {-# INLINABLE cof #-}--  disc _ = b * (a * a - 4)-    where-      a = a_ (witness :: MAPoint e q r)-      b = b_ (witness :: MAPoint e q r)-  {-# INLINABLE disc #-}--  fromA = identity-  {-# INLINABLE fromA #-}--  point x y = let p = A x y in if def p then Just p else Nothing-  {-# INLINABLE point #-}--  pointX x = A x <$> yX (witness :: MAPoint e q r) x-  {-# INLINABLE pointX #-}--  toA = identity-  {-# INLINABLE toA #-}--  yX _ x = sr ((((x + a) * x) + 1) * x / b)-    where-      a = a_ (witness :: MAPoint e q r)-      b = b_ (witness :: MAPoint e q r)-  {-# INLINABLE yX #-}---- Montgomery affine points are groups.-instance MACurve e q r => Group (MAPoint e q r) where--  add p  O      = p-  add O q       = q-  add (A x1 y1) (A x2 y2)-    | x1 == x2  = O-    | otherwise = A x3 y3-    where-      a  = a_ (witness :: MAPoint e q r)-      b  = b_ (witness :: MAPoint e q r)-      l  = (y2 - y1) / (x2 - x1)-      x3 = b * l * l - a - x1 - x2-      y3 = l * (x1 - x3) - y1-  {-# INLINABLE add #-}--  dbl O         = O-  dbl (A x y)-    | y == 0    = O-    | otherwise = A x' y'-    where-      a  = a_ (witness :: MAPoint e q r)-      b  = b_ (witness :: MAPoint e q r)-      l  = (x * (3 * x + 2 * a) + 1) / (2 * b * y)-      x' = b * l * l - a - 2 * x-      y' = l * (x - x') - y-  {-# INLINABLE dbl #-}--  def O       = True-  def (A x y) = b * y * y == (((x + a) * x) + 1) * x-    where-      a = a_ (witness :: MAPoint e q r)-      b = b_ (witness :: MAPoint e q r)-  {-# INLINABLE def #-}--  gen = gA_-  {-# INLINABLE gen #-}--  id = O-  {-# INLINABLE id #-}--  inv O       = O-  inv (A x y) = A x (-y)-  {-# INLINABLE inv #-}--  order = r_-  {-# INLINABLE order #-}---- Montgomery affine points are pretty.-instance MACurve e q r => Pretty (MAPoint e q r) where--  pretty (A x y) = pretty (x, y)-  pretty O       = "O"
− src/Curve/Montgomery/Curve25519.hs
@@ -1,93 +0,0 @@-module Curve.Montgomery.Curve25519-  ( module Curve.Montgomery-  , module Curve.Montgomery.Curve25519-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Montgomery------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Curve25519 curve.-data Curve25519---- | Field of points of Curve25519 curve.-type Fq = PrimeField 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed---- | Field of coefficients of Curve25519 curve.-type Fr = PrimeField 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed---- | Curve25519 curve is a Montgomery curve.-instance Curve 'Montgomery c Curve25519 Fq Fr => MCurve c Curve25519 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Curve25519 curve point.-type PA = MAPoint Curve25519 Fq Fr---- | Affine Curve25519 curve is a Montgomery affine curve.-instance MACurve Curve25519 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Curve25519 curve.-_a :: Fq-_a = 0x76d06-{-# INLINABLE _a #-}---- | Coefficient @B@ of Curve25519 curve.-_b :: Fq-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of Curve25519 curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of Curve25519 curve.-_q :: Integer-_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed-{-# INLINABLE _q #-}---- | Order of Curve25519 curve.-_r :: Integer-_r = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed-{-# INLINABLE _r #-}---- | Coordinate @X@ of Curve25519 curve.-_x :: Fq-_x = 0x9-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Curve25519 curve.-_y :: Fq-_y = 0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9-{-# INLINABLE _y #-}---- | Generator of affine Curve25519 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}
− src/Curve/Montgomery/Curve383187.hs
@@ -1,93 +0,0 @@-module Curve.Montgomery.Curve383187-  ( module Curve.Montgomery-  , module Curve.Montgomery.Curve383187-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Montgomery------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Curve383187 curve.-data Curve383187---- | Field of points of Curve383187 curve.-type Fq = PrimeField 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45---- | Field of coefficients of Curve383187 curve.-type Fr = PrimeField 0x1000000000000000000000000000000000000000000000000e85a85287a1488acd41ae84b2b7030446f72088b00a0e21---- | Curve383187 curve is a Montgomery curve.-instance Curve 'Montgomery c Curve383187 Fq Fr => MCurve c Curve383187 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Curve383187 curve point.-type PA = MAPoint Curve383187 Fq Fr---- | Affine Curve383187 curve is a Montgomery affine curve.-instance MACurve Curve383187 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Curve383187 curve.-_a :: Fq-_a = 0x38251-{-# INLINABLE _a #-}---- | Coefficient @B@ of Curve383187 curve.-_b :: Fq-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of Curve383187 curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of Curve383187 curve.-_q :: Integer-_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45-{-# INLINABLE _q #-}---- | Order of Curve383187 curve.-_r :: Integer-_r = 0x1000000000000000000000000000000000000000000000000e85a85287a1488acd41ae84b2b7030446f72088b00a0e21-{-# INLINABLE _r #-}---- | Coordinate @X@ of Curve383187 curve.-_x :: Fq-_x = 0x5-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Curve383187 curve.-_y :: Fq-_y = 0x1eebe07dc1871896732b12d5504a32370471965c7a11f2c89865f855ab3cbd7c224e3620c31af3370788457dd5ce46df-{-# INLINABLE _y #-}---- | Generator of affine Curve383187 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}
− src/Curve/Montgomery/Curve448.hs
@@ -1,93 +0,0 @@-module Curve.Montgomery.Curve448-  ( module Curve.Montgomery-  , module Curve.Montgomery.Curve448-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Montgomery------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Curve448 curve.-data Curve448---- | Field of points of Curve448 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff---- | Field of coefficients of Curve448 curve.-type Fr = PrimeField 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3---- | Curve448 curve is a Montgomery curve.-instance Curve 'Montgomery c Curve448 Fq Fr => MCurve c Curve448 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Curve448 curve point.-type PA = MAPoint Curve448 Fq Fr---- | Affine Curve448 curve is a Montgomery affine curve.-instance MACurve Curve448 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Curve448 curve.-_a :: Fq-_a = 0x262a6-{-# INLINABLE _a #-}---- | Coefficient @B@ of Curve448 curve.-_b :: Fq-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of Curve448 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Characteristic of Curve448 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff-{-# INLINABLE _q #-}---- | Order of Curve448 curve.-_r :: Integer-_r = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3-{-# INLINABLE _r #-}---- | Coordinate @X@ of Curve448 curve.-_x :: Fq-_x = 0x5-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Curve448 curve.-_y :: Fq-_y = 0x7d235d1295f5b1f66c98ab6e58326fcecbae5d34f55545d060f75dc28df3f6edb8027e2346430d211312c4b150677af76fd7223d457b5b1a-{-# INLINABLE _y #-}---- | Generator of affine Curve448 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}
− src/Curve/Montgomery/M221.hs
@@ -1,93 +0,0 @@-module Curve.Montgomery.M221-  ( module Curve.Montgomery-  , module Curve.Montgomery.M221-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Montgomery------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | M221 curve.-data M221---- | Field of points of M221 curve.-type Fq = PrimeField 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd---- | Field of coefficients of M221 curve.-type Fr = PrimeField 0x40000000000000000000000000015a08ed730e8a2f77f005042605b---- | M221 curve is a Montgomery curve.-instance Curve 'Montgomery c M221 Fq Fr => MCurve c M221 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine M221 curve point.-type PA = MAPoint M221 Fq Fr---- | Affine M221 curve is a Montgomery affine curve.-instance MACurve M221 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of M221 curve.-_a :: Fq-_a = 0x1c93a-{-# INLINABLE _a #-}---- | Coefficient @B@ of M221 curve.-_b :: Fq-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of M221 curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of M221 curve.-_q :: Integer-_q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd-{-# INLINABLE _q #-}---- | Order of M221 curve.-_r :: Integer-_r = 0x40000000000000000000000000015a08ed730e8a2f77f005042605b-{-# INLINABLE _r #-}---- | Coordinate @X@ of M221 curve.-_x :: Fq-_x = 0x4-{-# INLINABLE _x #-}---- | Coordinate @Y@ of M221 curve.-_y :: Fq-_y = 0xf7acdd2a4939571d1cef14eca37c228e61dbff10707dc6c08c5056d-{-# INLINABLE _y #-}---- | Generator of affine M221 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}
− src/Curve/Montgomery/M383.hs
@@ -1,93 +0,0 @@-module Curve.Montgomery.M383-  ( module Curve.Montgomery-  , module Curve.Montgomery.M383-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Montgomery------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | M383 curve.-data M383---- | Field of points of M383 curve.-type Fq = PrimeField 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45---- | Field of coefficients of M383 curve.-type Fr = PrimeField 0x10000000000000000000000000000000000000000000000006c79673ac36ba6e7a32576f7b1b249e46bbc225be9071d7---- | M383 curve is a Montgomery curve.-instance Curve 'Montgomery c M383 Fq Fr => MCurve c M383 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine M383 curve point.-type PA = MAPoint M383 Fq Fr---- | Affine M383 curve is a Montgomery affine curve.-instance MACurve M383 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of M383 curve.-_a :: Fq-_a = 0x1f82fe-{-# INLINABLE _a #-}---- | Coefficient @B@ of M383 curve.-_b :: Fq-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of M383 curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of M383 curve.-_q :: Integer-_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45-{-# INLINABLE _q #-}---- | Order of M383 curve.-_r :: Integer-_r = 0x10000000000000000000000000000000000000000000000006c79673ac36ba6e7a32576f7b1b249e46bbc225be9071d7-{-# INLINABLE _r #-}---- | Coordinate @X@ of M383 curve.-_x :: Fq-_x = 0xc-{-# INLINABLE _x #-}---- | Coordinate @Y@ of M383 curve.-_y :: Fq-_y = 0x1ec7ed04aaf834af310e304b2da0f328e7c165f0e8988abd3992861290f617aa1f1b2e7d0b6e332e969991b62555e77e-{-# INLINABLE _y #-}---- | Generator of affine M383 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}
− src/Curve/Montgomery/M511.hs
@@ -1,93 +0,0 @@-module Curve.Montgomery.M511-  ( module Curve.Montgomery-  , module Curve.Montgomery.M511-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Montgomery------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | M511 curve.-data M511---- | Field of points of M511 curve.-type Fq = PrimeField 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45---- | Field of coefficients of M511 curve.-type Fr = PrimeField 0x100000000000000000000000000000000000000000000000000000000000000017b5feff30c7f5677ab2aeebd13779a2ac125042a6aa10bfa54c15bab76baf1b---- | M511 curve is a Montgomery curve.-instance Curve 'Montgomery c M511 Fq Fr => MCurve c M511 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine M511 curve point.-type PA = MAPoint M511 Fq Fr---- | Affine M511 curve is a Montgomery affine curve.-instance MACurve M511 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of M511 curve.-_a :: Fq-_a = 0x81806-{-# INLINABLE _a #-}---- | Coefficient @B@ of M511 curve.-_b :: Fq-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of M511 curve.-_h :: Integer-_h = 0x8-{-# INLINABLE _h #-}---- | Characteristic of M511 curve.-_q :: Integer-_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45-{-# INLINABLE _q #-}---- | Order of M511 curve.-_r :: Integer-_r = 0x100000000000000000000000000000000000000000000000000000000000000017b5feff30c7f5677ab2aeebd13779a2ac125042a6aa10bfa54c15bab76baf1b-{-# INLINABLE _r #-}---- | Coordinate @X@ of M511 curve.-_x :: Fq-_x = 0x5-{-# INLINABLE _x #-}---- | Coordinate @Y@ of M511 curve.-_y :: Fq-_y = 0x2fbdc0ad8530803d28fdbad354bb488d32399ac1cf8f6e01ee3f96389b90c809422b9429e8a43dbf49308ac4455940abe9f1dbca542093a895e30a64af056fa5-{-# INLINABLE _y #-}---- | Generator of affine M511 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}
− src/Curve/Weierstrass.hs
@@ -1,386 +0,0 @@-{-# OPTIONS -fno-warn-orphans #-}--module Curve.Weierstrass-  ( module Curve-  , module Curve.Weierstrass-  , module Group-  , Point(..)-  ) where--import Protolude--import GaloisField (GaloisField(..))-import Text.PrettyPrint.Leijen.Text (Pretty(..))--import Curve (Coordinates(..), Curve(..), Form(..), PrimeField')-import Group (Group(..))------------------------------------------------------------------------------------ Weierstrass form------------------------------------------------------------------------------------ | Weierstrass points.-type WPoint = Point 'Weierstrass---- | Weierstrass curves.-class (GaloisField q, PrimeField' r, Curve 'Weierstrass c e q r) => WCurve c e q r where-  {-# MINIMAL a_, b_, h_, q_, r_, x_, y_ #-}-  a_ :: WPoint c e q r -> q       -- ^ Coefficient @A@.-  b_ :: WPoint c e q r -> q       -- ^ Coefficient @B@.-  h_ :: WPoint c e q r -> Integer -- ^ Curve cofactor.-  q_ :: WPoint c e q r -> Integer -- ^ Curve characteristic.-  r_ :: WPoint c e q r -> Integer -- ^ Curve order.-  x_ :: WPoint c e q r -> q       -- ^ Coordinate @X@.-  y_ :: WPoint c e q r -> q       -- ^ Coordinate @Y@.------------------------------------------------------------------------------------ Affine coordinates------------------------------------------------------------------------------------ | Weierstrass affine points.-type WAPoint = WPoint 'Affine---- | Weierstrass affine curves @y^2 = x^3 + Ax + B@.-class WCurve 'Affine e q r => WACurve e q r where-  {-# MINIMAL gA_ #-}-  gA_ :: WAPoint e q r -- ^ Curve generator.---- Weierstrass affine curves are elliptic curves.-instance WACurve e q r => Curve 'Weierstrass 'Affine e q r where--  data instance Point 'Weierstrass 'Affine e q r = A q q -- ^ Affine point.-                                                 | O     -- ^ Infinite point.-    deriving (Eq, Generic, NFData, Read, Show)--  char = q_-  {-# INLINABLE char #-}--  cof = h_-  {-# INLINABLE cof #-}--  disc _ = 4 * a * a * a + 27 * b * b-    where-      a = a_ (witness :: WAPoint e q r)-      b = b_ (witness :: WAPoint e q r)-  {-# INLINABLE disc #-}--  fromA = identity-  {-# INLINABLE fromA #-}--  point x y = let p = A x y in if def p then Just p else Nothing-  {-# INLINABLE point #-}--  pointX x = A x <$> yX (witness :: WAPoint e q r) x-  {-# INLINABLE pointX #-}--  toA = identity-  {-# INLINABLE toA #-}--  yX _ x = sr (((x * x + a) * x) + b)-    where-      a = a_ (witness :: WAPoint e q r)-      b = b_ (witness :: WAPoint e q r)-  {-# INLINABLE yX #-}---- Weierstrass affine points are groups.-instance WACurve e q r => Group (WAPoint e q r) where--  add p O       = p-  add O q       = q-  add (A x1 y1) (A x2 y2)-    | x1 == x2  = O-    | otherwise = A x3 y3-    where-      l  = (y1 - y2) / (x1 - x2)-      x3 = l * l - x1 - x2-      y3 = l * (x1 - x3) - y1-  {-# INLINABLE add #-}--  dbl O         = O-  dbl (A x y)-    | y == 0    = O-    | otherwise = A x' y'-    where-      a  = a_ (witness :: WAPoint e q r)-      l  = (3 * x * x + a) / (2 * y)-      x' = l * l - 2 * x-      y' = l * (x - x') - y-  {-# INLINABLE dbl #-}--  def O       = True-  def (A x y) = y * y == (x * x + a) * x + b-    where-      a = a_ (witness :: WAPoint e q r)-      b = b_ (witness :: WAPoint e q r)-  {-# INLINABLE def #-}--  gen = gA_-  {-# INLINABLE gen #-}--  id = O-  {-# INLINABLE id #-}--  inv O       = O-  inv (A x y) = A x (-y)-  {-# INLINABLE inv #-}--  order = r_-  {-# INLINABLE order #-}---- Weierstrass affine points are pretty.-instance WACurve e q r => Pretty (WAPoint e q r) where--  pretty (A x y) = pretty (x, y)-  pretty O       = "O"------------------------------------------------------------------------------------ Jacobian coordinates------------------------------------------------------------------------------------ | Weierstrass Jacobian points.-type WJPoint = WPoint 'Jacobian---- | Weierstrass Jacobian curves @y^2 = x^3 + Ax + B@.-class WCurve 'Jacobian e q r => WJCurve e q r where-  {-# MINIMAL gJ_ #-}-  gJ_ :: WJPoint e q r -- ^ Curve generator.---- Weierstrass Jacobian curves are elliptic curves.-instance WJCurve e q r => Curve 'Weierstrass 'Jacobian e q r where--  data instance Point 'Weierstrass 'Jacobian e q r = J q q q -- ^ Jacobian point.-    deriving (Generic, NFData, Read, Show)--  char = q_-  {-# INLINABLE char #-}--  cof = h_-  {-# INLINABLE cof #-}--  disc _ = 4 * a * a * a + 27 * b * b-    where-      a = a_ (witness :: WJPoint e q r)-      b = b_ (witness :: WJPoint e q r)-  {-# INLINABLE disc #-}--  fromA (A x y) = J x y 1-  fromA _       = J 1 1 0-  {-# INLINABLE fromA #-}--  point x y = let p = J x y 1 in if def p then Just p else Nothing-  {-# INLINABLE point #-}--  pointX x = flip (J x) 1 <$> yX (witness :: WJPoint e q r) x-  {-# INLINABLE pointX #-}--  toA (J _ _ 0) = O-  toA (J x y z) = let zz = z * z in A (x / zz) (y / (z * zz))-  {-# INLINABLE toA #-}--  yX _ x = sr (((x * x + a) * x) + b)-    where-      a = a_ (witness :: WJPoint e q r)-      b = b_ (witness :: WJPoint e q r)-  {-# INLINABLE yX #-}---- Weierstrass Jacobian points are groups.-instance WJCurve e q r => Group (WJPoint e q r) where--  -- Addition formula add-2007-bl-  add  p           (J  _  _  0) = p-  add (J  _  _  0)  q           = q-  add (J x1 y1 z1) (J x2 y2 z2) = J x3 y3 z3-    where-      z1z1 = z1 * z1-      z2z2 = z2 * z2-      z1z2 = z1 + z2-      u1   = x1 * z2z2-      u2   = x2 * z1z1-      s1   = y1 * z2 * z2z2-      s2   = y2 * z1 * z1z1-      h    = u2 - u1-      h2   = 2 * h-      i    = h2 * h2-      j    = h * i-      r    = 2 * (s2 - s1)-      v    = u1 * i-      x3   = r * r - j - 2 * v-      y3   = r * (v - x3) - 2 * s1 * j-      z3   = (z1z2 * z1z2 - z1z1 - z2z2) * h-  {-# INLINABLE add #-}--  -- Doubling formula dbl-2007-bl-  dbl (J  _  _  0) = J  1  1  0-  dbl (J x1 y1 z1) = J x3 y3 z3-    where-      a    = a_ (witness :: WJPoint e q r)-      xx   = x1 * x1-      yy   = y1 * y1-      yyyy = yy * yy-      zz   = z1 * z1-      xy   = x1 + yy-      yz   = y1 + z1-      s    = 2 * (xy * xy - xx - yyyy)-      m    = 3 * xx + a * zz * zz-      t    = m * m - 2 * s-      x3   = t-      y3   = m * (s - t) - 8 * yyyy-      z3   = yz * yz - yy - zz-  {-# INLINABLE dbl #-}--  def (J x y z) = y * y == x * x * x + zz * zz * (a * x + b * zz)-    where-      a  = a_ (witness :: WJPoint e q r)-      b  = b_ (witness :: WJPoint e q r)-      zz = z * z-  {-# INLINABLE def #-}--  gen = gJ_-  {-# INLINABLE gen #-}--  id = J 1 1 0-  {-# INLINABLE id #-}--  inv (J x y z) = J x (-y) z-  {-# INLINABLE inv #-}--  order = r_-  {-# INLINABLE order #-}---- Weierstrass Jacobian points are equatable.-instance WJCurve e q r => Eq (WJPoint e q r) where--  J x1 y1 z1 == J x2 y2 z2 = z1 == 0 && z2 == 0-    || x1 * zz2 == x2 * zz1 && y1 * z2 * zz2 == y2 * z1 * zz1-    where-      zz1 = z1 * z1-      zz2 = z2 * z2---- Weierstrass Jacobian points are pretty.-instance WJCurve e q r => Pretty (WJPoint e q r) where--  pretty (J x y z) = pretty (x, y, z)------------------------------------------------------------------------------------ Projective coordinates------------------------------------------------------------------------------------ | Weierstrass projective points.-type WPPoint = WPoint 'Projective---- | Weierstrass projective curves @y^2 = x^3 + Ax + B@.-class WCurve 'Projective e q r => WPCurve e q r where-  {-# MINIMAL gP_ #-}-  gP_ :: WPPoint e q r -- ^ Curve generator.---- Weierstrass projective curves are elliptic curves.-instance WPCurve e q r => Curve 'Weierstrass 'Projective e q r where--  data instance Point 'Weierstrass 'Projective e q r = P q q q -- ^ Projective point.-    deriving (Generic, NFData, Read, Show)--  char = q_-  {-# INLINABLE char #-}--  cof = h_-  {-# INLINABLE cof #-}--  disc _ = 4 * a * a * a + 27 * b * b-    where-      a = a_ (witness :: WPPoint e q r)-      b = b_ (witness :: WPPoint e q r)-  {-# INLINABLE disc #-}--  fromA (A x y) = P x y 1-  fromA _       = P 0 1 0-  {-# INLINABLE fromA #-}--  point x y = let p = P x y 1 in if def p then Just p else Nothing-  {-# INLINABLE point #-}--  pointX x = flip (P x) 1 <$> yX (witness :: WPPoint e q r) x-  {-# INLINABLE pointX #-}--  toA (P _ _ 0) = O-  toA (P x y z) = A (x / z) (y / z)-  {-# INLINABLE toA #-}--  yX _ x = sr (((x * x + a) * x) + b)-    where-      a = a_ (witness :: WPPoint e q r)-      b = b_ (witness :: WPPoint e q r)-  {-# INLINABLE yX #-}---- Weierstrass projective points are groups.-instance WPCurve e q r => Group (WPPoint e q r) where--  -- Addition formula add-1998-cmo-2-  add  p           (P  _  _  0) = p-  add (P  _  _  0)  q           = q-  add (P x1 y1 z1) (P x2 y2 z2) = P x3 y3 z3-    where-      y1z2 = y1 * z2-      x1z2 = x1 * z2-      z1z2 = z1 * z2-      u    = y2 * z1 - y1z2-      uu   = u * u-      v    = x2 * z1 - x1z2-      vv   = v * v-      vvv  = v * vv-      r    = vv * x1z2-      a    = uu * z1z2 - vvv - 2 * r-      x3   = v * a-      y3   = u * (r - a) - vvv * y1z2-      z3   = vvv * z1z2-  {-# INLINABLE add #-}--  -- Doubling formula dbl-2007-bl-  dbl (P  _  _  0) = P  0  1  0-  dbl (P x1 y1 z1) = P x3 y3 z3-    where-      a   = a_ (witness :: WPPoint e q r)-      xx  = x1 * x1-      zz  = z1 * z1-      w   = a * zz + 3 * xx-      s   = 2 * y1 * z1-      ss  = s * s-      sss = s * ss-      r   = y1 * s-      rr  = r * r-      xr  = x1 + r-      b   = xr * xr - xx - rr-      h   = w * w - 2 * b-      x3  = h * s-      y3  = w * (b - h) - 2 * rr-      z3  = sss-  {-# INLINABLE dbl #-}--  def (P x y z) = (x * x + a * zz) * x == (y * y - b * zz) * z-    where-      a  = a_ (witness :: WPPoint e q r)-      b  = b_ (witness :: WPPoint e q r)-      zz = z * z-  {-# INLINABLE def #-}--  gen = gP_-  {-# INLINABLE gen #-}--  id = P 0 1 0-  {-# INLINABLE id #-}--  inv (P x y z) = P x (-y) z-  {-# INLINABLE inv #-}--  order = r_-  {-# INLINABLE order #-}---- Weierstrass projective points are equatable.-instance WPCurve e q r => Eq (WPPoint e q r) where--  P x1 y1 z1 == P x2 y2 z2 = z1 == 0 && z2 == 0-    || x1 * z2 == x2 * z1 && y1 * z2 == y2 * z1---- Weierstrass projective points are pretty.-instance WPCurve e q r => Pretty (WPPoint e q r) where--  pretty (P x y z) = pretty (x, y, z)
− src/Curve/Weierstrass/ANSSIFRP256V1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.ANSSIFRP256V1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.ANSSIFRP256V1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | ANSSIFRP256V1 curve.-data ANSSIFRP256V1---- | Field of points of ANSSIFRP256V1 curve.-type Fq = PrimeField 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c03---- | Field of coefficients of ANSSIFRP256V1 curve.-type Fr = PrimeField 0xf1fd178c0b3ad58f10126de8ce42435b53dc67e140d2bf941ffdd459c6d655e1---- | ANSSIFRP256V1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c ANSSIFRP256V1 Fq Fr => WCurve c ANSSIFRP256V1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine ANSSIFRP256V1 curve point.-type PA = WAPoint ANSSIFRP256V1 Fq Fr---- | Affine ANSSIFRP256V1 curve is a Weierstrass affine curve.-instance WACurve ANSSIFRP256V1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian ANSSIFRP256V1 point.-type PJ = WJPoint ANSSIFRP256V1 Fq Fr---- | Jacobian ANSSIFRP256V1 curve is a Weierstrass Jacobian curve.-instance WJCurve ANSSIFRP256V1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective ANSSIFRP256V1 point.-type PP = WPPoint ANSSIFRP256V1 Fq Fr---- | Projective ANSSIFRP256V1 curve is a Weierstrass projective curve.-instance WPCurve ANSSIFRP256V1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of ANSSIFRP256V1 curve.-_a :: Fq-_a = 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c00-{-# INLINABLE _a #-}---- | Coefficient @B@ of ANSSIFRP256V1 curve.-_b :: Fq-_b = 0xee353fca5428a9300d4aba754a44c00fdfec0c9ae4b1a1803075ed967b7bb73f-{-# INLINABLE _b #-}---- | Cofactor of ANSSIFRP256V1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of ANSSIFRP256V1 curve.-_q :: Integer-_q = 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c03-{-# INLINABLE _q #-}---- | Order of ANSSIFRP256V1 curve.-_r :: Integer-_r = 0xf1fd178c0b3ad58f10126de8ce42435b53dc67e140d2bf941ffdd459c6d655e1-{-# INLINABLE _r #-}---- | Coordinate @X@ of ANSSIFRP256V1 curve.-_x :: Fq-_x = 0xb6b3d4c356c139eb31183d4749d423958c27d2dcaf98b70164c97a2dd98f5cff-{-# INLINABLE _x #-}---- | Coordinate @Y@ of ANSSIFRP256V1 curve.-_y :: Fq-_y = 0x6142e0f7c8b204911f9271f0f3ecef8c2701c307e8e4c9e183115a1554062cfb-{-# INLINABLE _y #-}---- | Generator of affine ANSSIFRP256V1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian ANSSIFRP256V1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective ANSSIFRP256V1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/Anomalous.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.Anomalous-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.Anomalous-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Anomalous curve.-data Anomalous---- | Field of points of Anomalous curve.-type Fq = PrimeField 0xb0000000000000000000000953000000000000000000001f9d7---- | Field of coefficients of Anomalous curve.-type Fr = PrimeField 0xb0000000000000000000000953000000000000000000001f9d7---- | Anomalous curve is a Weierstrass curve.-instance Curve 'Weierstrass c Anomalous Fq Fr => WCurve c Anomalous Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine Anomalous curve point.-type PA = WAPoint Anomalous Fq Fr---- | Affine Anomalous curve is a Weierstrass affine curve.-instance WACurve Anomalous Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian Anomalous point.-type PJ = WJPoint Anomalous Fq Fr---- | Jacobian Anomalous curve is a Weierstrass Jacobian curve.-instance WJCurve Anomalous Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective Anomalous point.-type PP = WPPoint Anomalous Fq Fr---- | Projective Anomalous curve is a Weierstrass projective curve.-instance WPCurve Anomalous Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of Anomalous curve.-_a :: Fq-_a = 0x98d0fac687d6343eb1a1f595283eb1a1f58d0fac687d635f5e4-{-# INLINABLE _a #-}---- | Coefficient @B@ of Anomalous curve.-_b :: Fq-_b = 0x4a1f58d0fac687d6343eb1a5e2d6343eb1a1f58d0fac688ab3f-{-# INLINABLE _b #-}---- | Cofactor of Anomalous curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of Anomalous curve.-_q :: Integer-_q = 0xb0000000000000000000000953000000000000000000001f9d7-{-# INLINABLE _q #-}---- | Order of Anomalous curve.-_r :: Integer-_r = 0xb0000000000000000000000953000000000000000000001f9d7-{-# INLINABLE _r #-}---- | Coordinate @X@ of Anomalous curve.-_x :: Fq-_x = 0x101efb35fd1963c4871a2d17edaafa7e249807f58f8705126c6-{-# INLINABLE _x #-}---- | Coordinate @Y@ of Anomalous curve.-_y :: Fq-_y = 0x22389a3954375834304ba1d509a97de6c07148ea7f5951b20e7-{-# INLINABLE _y #-}---- | Generator of affine Anomalous curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian Anomalous curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective Anomalous curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BLS12381.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BLS12381-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BLS12381-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BLS12381 curve.-data BLS12381---- | Field of points of BLS12381 curve.-type Fq = PrimeField 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab---- | Field of coefficients of BLS12381 curve.-type Fr = PrimeField 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001---- | BLS12381 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BLS12381 Fq Fr => WCurve c BLS12381 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BLS12381 curve point.-type PA = WAPoint BLS12381 Fq Fr---- | Affine BLS12381 curve is a Weierstrass affine curve.-instance WACurve BLS12381 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BLS12381 point.-type PJ = WJPoint BLS12381 Fq Fr---- | Jacobian BLS12381 curve is a Weierstrass Jacobian curve.-instance WJCurve BLS12381 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BLS12381 point.-type PP = WPPoint BLS12381 Fq Fr---- | Projective BLS12381 curve is a Weierstrass projective curve.-instance WPCurve BLS12381 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BLS12381 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BLS12381 curve.-_b :: Fq-_b = 0x4-{-# INLINABLE _b #-}---- | Cofactor of BLS12381 curve.-_h :: Integer-_h = 0x396c8c005555e1568c00aaab0000aaab-{-# INLINABLE _h #-}---- | Characteristic of BLS12381 curve.-_q :: Integer-_q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab-{-# INLINABLE _q #-}---- | Order of BLS12381 curve.-_r :: Integer-_r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001-{-# INLINABLE _r #-}---- | Coordinate @X@ of BLS12381 curve.-_x :: Fq-_x = 0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BLS12381 curve.-_y :: Fq-_y = 0x8b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1-{-# INLINABLE _y #-}---- | Generator of affine BLS12381 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BLS12381 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BLS12381 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BLS12381T.hs
@@ -1,131 +0,0 @@-module Curve.Weierstrass.BLS12381T-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BLS12381T-  , Point(..)-  ) where--import Protolude--import ExtensionField-import PrimeField--import Curve.Weierstrass-import Curve.Weierstrass.BLS12381 (Fq)------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BLS12381T curve.-data BLS12381T---- | Field of points of BLS12381T curve.-data PolynomialU-instance IrreducibleMonic Fq PolynomialU where-  split _ = X2 + 1-type Fq2 = ExtensionField Fq PolynomialU---- | Field of coefficients of BLS12381T curve.-type Fr = PrimeField 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001---- | BLS12381T curve is a Weierstrass curve.-instance Curve 'Weierstrass c BLS12381T Fq2 Fr => WCurve c BLS12381T Fq2 Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BLS12381T curve point.-type PA = WAPoint BLS12381T Fq2 Fr---- | Affine BLS12381T curve is a Weierstrass affine curve.-instance WACurve BLS12381T Fq2 Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BLS12381T point.-type PJ = WJPoint BLS12381T Fq2 Fr---- | Jacobian BLS12381T curve is a Weierstrass Jacobian curve.-instance WJCurve BLS12381T Fq2 Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BLS12381T point.-type PP = WPPoint BLS12381T Fq2 Fr---- | Projective BLS12381T curve is a Weierstrass projective curve.-instance WPCurve BLS12381T Fq2 Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BLS12381T curve.-_a :: Fq2-_a = toField [-             ]-{-# INLINABLE _a #-}---- | Coefficient @B@ of BLS12381T curve.-_b :: Fq2-_b = toField [ 0x4-             , 0x4-             ]-{-# INLINABLE _b #-}---- | Cofactor of BLS12381T curve.-_h :: Integer-_h = 0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5-{-# INLINABLE _h #-}---- | Characteristic of BLS12381T curve.-_q :: Integer-_q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab-{-# INLINABLE _q #-}---- | Order of BLS12381T curve.-_r :: Integer-_r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001-{-# INLINABLE _r #-}---- | Coordinate @X@ of BLS12381T curve.-_x :: Fq2-_x = toField [ 0x24aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8-             , 0x13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e-             ]-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BLS12381T curve.-_y :: Fq2-_y = toField [ 0xce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801-             , 0x606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be-             ]-{-# INLINABLE _y #-}---- | Generator of affine BLS12381T curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BLS12381T curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BLS12381T curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BLS48581.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BLS48581-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BLS48581-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BLS48581 curve.-data BLS48581---- | Field of points of BLS48581 curve.-type Fq = PrimeField 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b---- | Field of coefficients of BLS48581 curve.-type Fr = PrimeField 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01---- | BLS48581 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BLS48581 Fq Fr => WCurve c BLS48581 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BLS48581 curve point.-type PA = WAPoint BLS48581 Fq Fr---- | Affine BLS48581 curve is a Weierstrass affine curve.-instance WACurve BLS48581 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BLS48581 point.-type PJ = WJPoint BLS48581 Fq Fr---- | Jacobian BLS48581 curve is a Weierstrass Jacobian curve.-instance WJCurve BLS48581 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BLS48581 point.-type PP = WPPoint BLS48581 Fq Fr---- | Projective BLS48581 curve is a Weierstrass projective curve.-instance WPCurve BLS48581 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BLS48581 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BLS48581 curve.-_b :: Fq-_b = 0x1-{-# INLINABLE _b #-}---- | Cofactor of BLS48581 curve.-_h :: Integer-_h = 0x85555841aaaec4ac-{-# INLINABLE _h #-}---- | Characteristic of BLS48581 curve.-_q :: Integer-_q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b-{-# INLINABLE _q #-}---- | Order of BLS48581 curve.-_r :: Integer-_r = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01-{-# INLINABLE _r #-}---- | Coordinate @X@ of BLS48581 curve.-_x :: Fq-_x = 0x2af59b7ac340f2baf2b73df1e93f860de3f257e0e86868cf61abdbaedffb9f7544550546a9df6f9645847665d859236ebdbc57db368b11786cb74da5d3a1e6d8c3bce8732315af640-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BLS48581 curve.-_y :: Fq-_y = 0xcefda44f6531f91f86b3a2d1fb398a488a553c9efeb8a52e991279dd41b720ef7bb7beffb98aee53e80f678584c3ef22f487f77c2876d1b2e35f37aef7b926b576dbb5de3e2587a70-{-# INLINABLE _y #-}---- | Generator of affine BLS48581 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BLS48581 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BLS48581 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BLS48581T.hs
@@ -1,169 +0,0 @@-module Curve.Weierstrass.BLS48581T-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BLS48581T-  , Point(..)-  ) where--import Protolude--import ExtensionField-import PrimeField--import Curve.Weierstrass-import Curve.Weierstrass.BLS48581 (Fq)------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BLS48581T curve.-data BLS48581T---- | Field of points of BLS48581T curve.-data PolynomialU-instance IrreducibleMonic Fq PolynomialU where-  split _ = X2 + 1-type Fq2 = ExtensionField Fq PolynomialU-data PolynomialV-instance IrreducibleMonic Fq2 PolynomialV where-  split _ = X2 + 1 + Y X-type Fq4 = ExtensionField Fq2 PolynomialV-data PolynomialW-instance IrreducibleMonic Fq4 PolynomialW where-  split _ = X2 + Y X-type Fq8 = ExtensionField Fq4 PolynomialW---- | Field of coefficients of BLS48581T curve.-type Fr = PrimeField 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01---- | BLS48581T curve is a Weierstrass curve.-instance Curve 'Weierstrass c BLS48581T Fq8 Fr => WCurve c BLS48581T Fq8 Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BLS48581T curve point.-type PA = WAPoint BLS48581T Fq8 Fr---- | Affine BLS48581T curve is a Weierstrass affine curve.-instance WACurve BLS48581T Fq8 Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BLS48581T point.-type PJ = WJPoint BLS48581T Fq8 Fr---- | Jacobian BLS48581T curve is a Weierstrass Jacobian curve.-instance WJCurve BLS48581T Fq8 Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BLS48581T point.-type PP = WPPoint BLS48581T Fq8 Fr---- | Projective BLS48581T curve is a Weierstrass projective curve.-instance WPCurve BLS48581T Fq8 Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BLS48581T curve.-_a :: Fq8-_a = toField [-             ]-{-# INLINABLE _a #-}---- | Coefficient @B@ of BLS48581T curve.-_b :: Fq8-_b = toField [ toField [-                       ]-             , toField [ toField [-                                 ]-                       , toField [ 0x9407b9ff9a3b7989c12718ea38095002b7427c6891098dd9df36078f9cbaa225245721d7b7041566ce6981ca7a39b6d7b41b3d2a898b877052bc7efb90d2524561f6e0aa732b2c895-                                 , 0x9407b9ff9a3b7989c12718ea38095002b7427c6891098dd9df36078f9cbaa225245721d7b7041566ce6981ca7a39b6d7b41b3d2a898b877052bc7efb90d2524561f6e0aa732b2c896-                                 ]-                       ]-             ]-{-# INLINABLE _b #-}---- | Cofactor of BLS48581T curve.-_h :: Integer-_h = 0x170e915cb0a6b7406b8d94042317f811d6bc3fc6e211ada42e58ccfcb3ac076a7e4499d700a0c23dc4b0c078f92def8c87b7fe63e1eea270db353a4ef4d38b5998ad8f0d042ea24c8f02be1c0c83992fe5d7725227bb27123a949e0876c0a8ce0a67326db0e955dcb791b867f31d6bfa62fbdd5f44a00504df04e186fae033f1eb43c1b1a08b6e086eff03c8fee9ebdd1e191a8a4b0466c90b389987de5637d5dd13dab33196bd2e5afa6cd19cf0fc3fc7db7ece1f3fac742626b1b02fcee04043b2ea96492f6afa51739597c54bb78aa6b0b99319fef9d09f768831018ee6564c68d054c62f2e0b4549426fec24ab26957a669dba2a2b6945ce40c9aec6afdeda16c79e15546cd7771fa544d5364236690ea06832679562a68731420ae52d0d35a90b8d10b688e31b6aee45f45b7a5083c71732105852decc888f64839a4de33b99521f0984a418d20fc7b0609530e454f0696fa2a8075ac01cc8ae3869e8d0fe1f3788ffac4c01aa2720e431da333c83d9663bfb1fb7a1a7b90528482c6be7892299030bb51a51dc7e91e9156874416bf4c26f1ea7ec578058563960ef92bbbb8632d3a1b695f954af10e9a78e40acffc13b06540aae9da5287fc4429485d44e6289d8c0d6a3eb2ece35012452751839fb48bc14b515478e2ff412d930ac20307561f3a5c998e6bcbfebd97effc6433033a2361bfcdc4fc74ad379a16c6dea49c209b1-{-# INLINABLE _h #-}---- | Characteristic of BLS48581T curve.-_q :: Integer-_q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b-{-# INLINABLE _q #-}---- | Order of BLS48581T curve.-_r :: Integer-_r = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01-{-# INLINABLE _r #-}---- | Coordinate @X@ of BLS48581T curve.-_x :: Fq8-_x = toField [ toField [ toField [ 0x5d615d9a7871e4a38237fa45a2775debabbefc70344dbccb7de64db3a2ef156c46ff79baad1a8c42281a63ca0612f400503004d80491f510317b79766322154dec34fd0b4ace8bfab-                                 , 0x7c4973ece2258512069b0e86abc07e8b22bb6d980e1623e9526f6da12307f4e1c3943a00abfedf16214a76affa62504f0c3c7630d979630ffd75556a01afa143f1669b36676b47c57-                                 ]-                       , toField [ 0x1fccc70198f1334e1b2ea1853ad83bc73a8a6ca9ae237ca7a6d6957ccbab5ab6860161c1dbd19242ffae766f0d2a6d55f028cbdfbb879d5fea8ef4cded6b3f0b46488156ca55a3e6a-                                 , 0xbe2218c25ceb6185c78d8012954d4bfe8f5985ac62f3e5821b7b92a393f8be0cc218a95f63e1c776e6ec143b1b279b9468c31c5257c200ca52310b8cb4e80bc3f09a7033cbb7feafe-                                 ]-                       ]-             , toField [ toField [ 0x38b91c600b35913a3c598e4caa9dd63007c675d0b1642b5675ff0e7c5805386699981f9e48199d5ac10b2ef492ae589274fad55fc1889aa80c65b5f746c9d4cbb739c3a1c53f8cce5-                                 , 0xc96c7797eb0738603f1311e4ecda088f7b8f35dcef0977a3d1a58677bb037418181df63835d28997eb57b40b9c0b15dd7595a9f177612f097fc7960910fce3370f2004d914a3c093a-                                 ]-                       , toField [ 0xb9b7951c6061ee3f0197a498908aee660dea41b39d13852b6db908ba2c0b7a449cef11f293b13ced0fd0caa5efcf3432aad1cbe4324c22d63334b5b0e205c3354e41607e60750e057-                                 , 0x827d5c22fb2bdec5282624c4f4aaa2b1e5d7a9defaf47b5211cf741719728a7f9f8cfca93f29cff364a7190b7e2b0d4585479bd6aebf9fc44e56af2fc9e97c3f84e19da00fbc6ae34-                                 ]-                       ]-             ]-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BLS48581T curve.-_y :: Fq8-_y = toField [ toField [ toField [ 0xeb53356c375b5dfa497216452f3024b918b4238059a577e6f3b39ebfc435faab0906235afa27748d90f7336d8ae5163c1599abf77eea6d659045012ab12c0ff323edd3fe4d2d7971-                                 , 0x284dc75979e0ff144da6531815fcadc2b75a422ba325e6fba01d72964732fcbf3afb096b243b1f192c5c3d1892ab24e1dd212fa097d760e2e588b423525ffc7b111471db936cd5665-                                 ]-                       , toField [ 0xb36a201dd008523e421efb70367669ef2c2fc5030216d5b119d3a480d370514475f7d5c99d0e90411515536ca3295e5e2f0c1d35d51a652269cbc7c46fc3b8fde68332a526a2a8474-                                 , 0xaec25a4621edc0688223fbbd478762b1c2cded3360dcee23dd8b0e710e122d2742c89b224333fa40dced2817742770ba10d67bda503ee5e578fb3d8b8a1e5337316213da92841589d-                                 ]-                       ]-             , toField [ toField [ 0xd209d5a223a9c46916503fa5a88325a2554dc541b43dd93b5a959805f1129857ed85c77fa238cdce8a1e2ca4e512b64f59f430135945d137b08857fdddfcf7a43f47831f982e50137-                                 , 0x7d0d03745736b7a513d339d5ad537b90421ad66eb16722b589d82e2055ab7504fa83420e8c270841f6824f47c180d139e3aafc198caa72b679da59ed8226cf3a594eedc58cf90bee4-                                 ]-                       , toField [ 0x896767811be65ea25c2d05dfdd17af8a006f364fc0841b064155f14e4c819a6df98f425ae3a2864f22c1fab8c74b2618b5bb40fa639f53dccc9e884017d9aa62b3d41faeafeb23986-                                 , 0x35e2524ff89029d393a5c07e84f981b5e068f1406be8e50c87549b6ef8eca9a9533a3f8e69c31e97e1ad0333ec719205417300d8c4ab33f748e5ac66e84069c55d667ffcb732718b6-                                 ]-                       ]-             ]-{-# INLINABLE _y #-}---- | Generator of affine BLS48581T curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BLS48581T curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BLS48581T curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN224.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BN224-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN224-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN224 curve.-data BN224---- | Field of points of BN224 curve.-type Fq = PrimeField 0xfffffffffff107288ec29e602c4520db42180823bb907d1287127833---- | Field of coefficients of BN224 curve.-type Fr = PrimeField 0xfffffffffff107288ec29e602c4420db4218082b36c2accff76c58ed---- | BN224 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN224 Fq Fr => WCurve c BN224 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN224 curve point.-type PA = WAPoint BN224 Fq Fr---- | Affine BN224 curve is a Weierstrass affine curve.-instance WACurve BN224 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN224 point.-type PJ = WJPoint BN224 Fq Fr---- | Jacobian BN224 curve is a Weierstrass Jacobian curve.-instance WJCurve BN224 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN224 point.-type PP = WPPoint BN224 Fq Fr---- | Projective BN224 curve is a Weierstrass projective curve.-instance WPCurve BN224 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN224 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN224 curve.-_b :: Fq-_b = 0x3-{-# INLINABLE _b #-}---- | Cofactor of BN224 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BN224 curve.-_q :: Integer-_q = 0xfffffffffff107288ec29e602c4520db42180823bb907d1287127833-{-# INLINABLE _q #-}---- | Order of BN224 curve.-_r :: Integer-_r = 0xfffffffffff107288ec29e602c4420db4218082b36c2accff76c58ed-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN224 curve.-_x :: Fq-_x = 0x1-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN224 curve.-_y :: Fq-_y = 0x2-{-# INLINABLE _y #-}---- | Generator of affine BN224 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN224 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN224 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN254.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BN254-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN254-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN254 curve.-data BN254---- | Field of points of BN254 curve.-type Fq = PrimeField 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47---- | Field of coefficients of BN254 curve.-type Fr = PrimeField 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001---- | BN254 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN254 Fq Fr => WCurve c BN254 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN254 curve point.-type PA = WAPoint BN254 Fq Fr---- | Affine BN254 curve is a Weierstrass affine curve.-instance WACurve BN254 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN254 point.-type PJ = WJPoint BN254 Fq Fr---- | Jacobian BN254 curve is a Weierstrass Jacobian curve.-instance WJCurve BN254 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN254 point.-type PP = WPPoint BN254 Fq Fr---- | Projective BN254 curve is a Weierstrass projective curve.-instance WPCurve BN254 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN254 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN254 curve.-_b :: Fq-_b = 0x3-{-# INLINABLE _b #-}---- | Cofactor of BN254 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BN254 curve.-_q :: Integer-_q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47-{-# INLINABLE _q #-}---- | Order of BN254 curve.-_r :: Integer-_r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN254 curve.-_x :: Fq-_x = 0x1-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN254 curve.-_y :: Fq-_y = 0x2-{-# INLINABLE _y #-}---- | Generator of affine BN254 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN254 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN254 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN254A.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BN254A-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN254A-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN254A curve.-data BN254A---- | Field of points of BN254A curve.-type Fq = PrimeField 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001---- | Field of coefficients of BN254A curve.-type Fr = PrimeField 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001---- | BN254A curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN254A Fq Fr => WCurve c BN254A Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN254A curve point.-type PA = WAPoint BN254A Fq Fr---- | Affine BN254A curve is a Weierstrass affine curve.-instance WACurve BN254A Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN254A point.-type PJ = WJPoint BN254A Fq Fr---- | Jacobian BN254A curve is a Weierstrass Jacobian curve.-instance WJCurve BN254A Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN254A point.-type PP = WPPoint BN254A Fq Fr---- | Projective BN254A curve is a Weierstrass projective curve.-instance WPCurve BN254A Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN254A curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN254A curve.-_b :: Fq-_b = 0x5-{-# INLINABLE _b #-}---- | Cofactor of BN254A curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BN254A curve.-_q :: Integer-_q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001-{-# INLINABLE _q #-}---- | Order of BN254A curve.-_r :: Integer-_r = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN254A curve.-_x :: Fq-_x = 0x1-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN254A curve.-_y :: Fq-_y = 0xd45589b158faaf6ab0e4ad38d998e9982e7ff63964ee1460342a592677cccb0-{-# INLINABLE _y #-}---- | Generator of affine BN254A curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN254A curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN254A curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN254AT.hs
@@ -1,131 +0,0 @@-module Curve.Weierstrass.BN254AT-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN254AT-  , Point(..)-  ) where--import Protolude--import ExtensionField-import PrimeField--import Curve.Weierstrass-import Curve.Weierstrass.BN254A (Fq)------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN254AT curve.-data BN254AT---- | Field of points of BN254AT curve.-data PolynomialU-instance IrreducibleMonic Fq PolynomialU where-  split _ = X2 + 5-type Fq2 = ExtensionField Fq PolynomialU---- | Field of coefficients of BN254AT curve.-type Fr = PrimeField 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001---- | BN254AT curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN254AT Fq2 Fr => WCurve c BN254AT Fq2 Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN254AT curve point.-type PA = WAPoint BN254AT Fq2 Fr---- | Affine BN254AT curve is a Weierstrass affine curve.-instance WACurve BN254AT Fq2 Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN254AT point.-type PJ = WJPoint BN254AT Fq2 Fr---- | Jacobian BN254AT curve is a Weierstrass Jacobian curve.-instance WJCurve BN254AT Fq2 Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN254AT point.-type PP = WPPoint BN254AT Fq2 Fr---- | Projective BN254AT curve is a Weierstrass projective curve.-instance WPCurve BN254AT Fq2 Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN254AT curve.-_a :: Fq2-_a = toField [-             ]-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN254AT curve.-_b :: Fq2-_b = toField [ 0x0-             , 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000000-             ]-{-# INLINABLE _b #-}---- | Cofactor of BN254AT curve.-_h :: Integer-_h = 0x2370fb049d410fbe4e761a9886e50241dc42cf101e0000017e80600000000001-{-# INLINABLE _h #-}---- | Characteristic of BN254AT curve.-_q :: Integer-_q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001-{-# INLINABLE _q #-}---- | Order of BN254AT curve.-_r :: Integer-_r = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN254AT curve.-_x :: Fq2-_x = toField [ 0x19b0bea4afe4c330da93cc3533da38a9f430b471c6f8a536e81962ed967909b5-             , 0xa1cf585585a61c6e9880b1f2a5c539f7d906fff238fa6341e1de1a2e45c3f72-             ]-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN254AT curve.-_y :: Fq2-_y = toField [ 0x17abd366ebbd65333e49c711a80a0cf6d24adf1b9b3990eedcc91731384d2627-             , 0xee97d6de9902a27d00e952232a78700863bc9aa9be960c32f5bf9fd0a32d345-             ]-{-# INLINABLE _y #-}---- | Generator of affine BN254AT curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN254AT curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN254AT curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN254B.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BN254B-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN254B-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN254B curve.-data BN254B---- | Field of points of BN254B curve.-type Fq = PrimeField 0x2523648240000001ba344d80000000086121000000000013a700000000000013---- | Field of coefficients of BN254B curve.-type Fr = PrimeField 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d---- | BN254B curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN254B Fq Fr => WCurve c BN254B Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN254B curve point.-type PA = WAPoint BN254B Fq Fr---- | Affine BN254B curve is a Weierstrass affine curve.-instance WACurve BN254B Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN254B point.-type PJ = WJPoint BN254B Fq Fr---- | Jacobian BN254B curve is a Weierstrass Jacobian curve.-instance WJCurve BN254B Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN254B point.-type PP = WPPoint BN254B Fq Fr---- | Projective BN254B curve is a Weierstrass projective curve.-instance WPCurve BN254B Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN254B curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN254B curve.-_b :: Fq-_b = 0x2-{-# INLINABLE _b #-}---- | Cofactor of BN254B curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BN254B curve.-_q :: Integer-_q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013-{-# INLINABLE _q #-}---- | Order of BN254B curve.-_r :: Integer-_r = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN254B curve.-_x :: Fq-_x = 0x2523648240000001ba344d80000000086121000000000013a700000000000012-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN254B curve.-_y :: Fq-_y = 0x1-{-# INLINABLE _y #-}---- | Generator of affine BN254B curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN254B curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN254B curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN254BT.hs
@@ -1,131 +0,0 @@-module Curve.Weierstrass.BN254BT-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN254BT-  , Point(..)-  ) where--import Protolude--import ExtensionField-import PrimeField--import Curve.Weierstrass-import Curve.Weierstrass.BN254B (Fq)------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN254BT curve.-data BN254BT---- | Field of points of BN254BT curve.-data PolynomialU-instance IrreducibleMonic Fq PolynomialU where-  split _ = X2 + 1-type Fq2 = ExtensionField Fq PolynomialU---- | Field of coefficients of BN254BT curve.-type Fr = PrimeField 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d---- | BN254BT curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN254BT Fq2 Fr => WCurve c BN254BT Fq2 Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN254BT curve point.-type PA = WAPoint BN254BT Fq2 Fr---- | Affine BN254BT curve is a Weierstrass affine curve.-instance WACurve BN254BT Fq2 Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN254BT point.-type PJ = WJPoint BN254BT Fq2 Fr---- | Jacobian BN254BT curve is a Weierstrass Jacobian curve.-instance WJCurve BN254BT Fq2 Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN254BT point.-type PP = WPPoint BN254BT Fq2 Fr---- | Projective BN254BT curve is a Weierstrass projective curve.-instance WPCurve BN254BT Fq2 Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN254BT curve.-_a :: Fq2-_a = toField [-             ]-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN254BT curve.-_b :: Fq2-_b = toField [ 0x1-             , 0x2523648240000001ba344d80000000086121000000000013a700000000000012-             ]-{-# INLINABLE _b #-}---- | Cofactor of BN254BT curve.-_h :: Integer-_h = 0x2523648240000001ba344d8000000008c2a2800000000016ad00000000000019-{-# INLINABLE _h #-}---- | Characteristic of BN254BT curve.-_q :: Integer-_q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013-{-# INLINABLE _q #-}---- | Order of BN254BT curve.-_r :: Integer-_r = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN254BT curve.-_x :: Fq2-_x = toField [ 0x61a10bb519eb62feb8d8c7e8c61edb6a4648bbb4898bf0d91ee4224c803fb2b-             , 0x516aaf9ba737833310aa78c5982aa5b1f4d746bae3784b70d8c34c1e7d54cf3-             ]-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN254BT curve.-_y :: Fq2-_y = toField [ 0x21897a06baf93439a90e096698c822329bd0ae6bdbe09bd19f0e07891cd2b9a-             , 0xebb2b0e7c8b15268f6d4456f5f38d37b09006ffd739c9578a2d1aec6b3ace9b-             ]-{-# INLINABLE _y #-}---- | Generator of affine BN254BT curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN254BT curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN254BT curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN254T.hs
@@ -1,131 +0,0 @@-module Curve.Weierstrass.BN254T-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN254T-  , Point(..)-  ) where--import Protolude--import ExtensionField-import PrimeField--import Curve.Weierstrass-import Curve.Weierstrass.BN254 (Fq)------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN254T curve.-data BN254T---- | Field of points of BN254T curve.-data PolynomialU-instance IrreducibleMonic Fq PolynomialU where-  split _ = X2 + 1-type Fq2 = ExtensionField Fq PolynomialU---- | Field of coefficients of BN254T curve.-type Fr = PrimeField 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001---- | BN254T curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN254T Fq2 Fr => WCurve c BN254T Fq2 Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN254T curve point.-type PA = WAPoint BN254T Fq2 Fr---- | Affine BN254T curve is a Weierstrass affine curve.-instance WACurve BN254T Fq2 Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN254T point.-type PJ = WJPoint BN254T Fq2 Fr---- | Jacobian BN254T curve is a Weierstrass Jacobian curve.-instance WJCurve BN254T Fq2 Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN254T point.-type PP = WPPoint BN254T Fq2 Fr---- | Projective BN254T curve is a Weierstrass projective curve.-instance WPCurve BN254T Fq2 Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN254T curve.-_a :: Fq2-_a = toField [-             ]-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN254T curve.-_b :: Fq2-_b = toField [ 0x2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5-             , 0x9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2-             ]-{-# INLINABLE _b #-}---- | Cofactor of BN254T curve.-_h :: Integer-_h = 0x30644e72e131a029b85045b68181585e06ceecda572a2489345f2299c0f9fa8d-{-# INLINABLE _h #-}---- | Characteristic of BN254T curve.-_q :: Integer-_q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47-{-# INLINABLE _q #-}---- | Order of BN254T curve.-_r :: Integer-_r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN254T curve.-_x :: Fq2-_x = toField [ 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed-             , 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2-             ]-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN254T curve.-_y :: Fq2-_y = toField [ 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa-             , 0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b-             ]-{-# INLINABLE _y #-}---- | Generator of affine BN254T curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN254T curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN254T curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN256.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BN256-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN256-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN256 curve.-data BN256---- | Field of points of BN256 curve.-type Fq = PrimeField 0xfffffffffffcf0cd46e5f25eee71a49f0cdc65fb12980a82d3292ddbaed33013---- | Field of coefficients of BN256 curve.-type Fr = PrimeField 0xfffffffffffcf0cd46e5f25eee71a49e0cdc65fb1299921af62d536cd10b500d---- | BN256 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN256 Fq Fr => WCurve c BN256 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN256 curve point.-type PA = WAPoint BN256 Fq Fr---- | Affine BN256 curve is a Weierstrass affine curve.-instance WACurve BN256 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN256 point.-type PJ = WJPoint BN256 Fq Fr---- | Jacobian BN256 curve is a Weierstrass Jacobian curve.-instance WJCurve BN256 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN256 point.-type PP = WPPoint BN256 Fq Fr---- | Projective BN256 curve is a Weierstrass projective curve.-instance WPCurve BN256 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN256 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN256 curve.-_b :: Fq-_b = 0x3-{-# INLINABLE _b #-}---- | Cofactor of BN256 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BN256 curve.-_q :: Integer-_q = 0xfffffffffffcf0cd46e5f25eee71a49f0cdc65fb12980a82d3292ddbaed33013-{-# INLINABLE _q #-}---- | Order of BN256 curve.-_r :: Integer-_r = 0xfffffffffffcf0cd46e5f25eee71a49e0cdc65fb1299921af62d536cd10b500d-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN256 curve.-_x :: Fq-_x = 0x1-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN256 curve.-_y :: Fq-_y = 0x2-{-# INLINABLE _y #-}---- | Generator of affine BN256 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN256 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN256 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN384.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BN384-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN384-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN384 curve.-data BN384---- | Field of points of BN384 curve.-type Fq = PrimeField 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca024c8fbe29531892c79534f9d306328261550a7cabd7cccd10b---- | Field of coefficients of BN384 curve.-type Fr = PrimeField 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca023c8fbe29531892c795356487d8ac63e4f4db17384341a5775---- | BN384 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN384 Fq Fr => WCurve c BN384 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN384 curve point.-type PA = WAPoint BN384 Fq Fr---- | Affine BN384 curve is a Weierstrass affine curve.-instance WACurve BN384 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN384 point.-type PJ = WJPoint BN384 Fq Fr---- | Jacobian BN384 curve is a Weierstrass Jacobian curve.-instance WJCurve BN384 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN384 point.-type PP = WPPoint BN384 Fq Fr---- | Projective BN384 curve is a Weierstrass projective curve.-instance WPCurve BN384 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN384 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN384 curve.-_b :: Fq-_b = 0x3-{-# INLINABLE _b #-}---- | Cofactor of BN384 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BN384 curve.-_q :: Integer-_q = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca024c8fbe29531892c79534f9d306328261550a7cabd7cccd10b-{-# INLINABLE _q #-}---- | Order of BN384 curve.-_r :: Integer-_r = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca023c8fbe29531892c795356487d8ac63e4f4db17384341a5775-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN384 curve.-_x :: Fq-_x = 0x1-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN384 curve.-_y :: Fq-_y = 0x2-{-# INLINABLE _y #-}---- | Generator of affine BN384 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN384 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN384 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN462.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BN462-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN462-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN462 curve.-data BN462---- | Field of points of BN462 curve.-type Fq = PrimeField 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013---- | Field of coefficients of BN462 curve.-type Fr = PrimeField 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d---- | BN462 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN462 Fq Fr => WCurve c BN462 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN462 curve point.-type PA = WAPoint BN462 Fq Fr---- | Affine BN462 curve is a Weierstrass affine curve.-instance WACurve BN462 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN462 point.-type PJ = WJPoint BN462 Fq Fr---- | Jacobian BN462 curve is a Weierstrass Jacobian curve.-instance WJCurve BN462 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN462 point.-type PP = WPPoint BN462 Fq Fr---- | Projective BN462 curve is a Weierstrass projective curve.-instance WPCurve BN462 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN462 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN462 curve.-_b :: Fq-_b = 0x5-{-# INLINABLE _b #-}---- | Cofactor of BN462 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BN462 curve.-_q :: Integer-_q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013-{-# INLINABLE _q #-}---- | Order of BN462 curve.-_r :: Integer-_r = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN462 curve.-_x :: Fq-_x = 0x21a6d67ef250191fadba34a0a30160b9ac9264b6f95f63b3edbec3cf4b2e689db1bbb4e69a416a0b1e79239c0372e5cd70113c98d91f36b6980d-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN462 curve.-_y :: Fq-_y = 0x118ea0460f7f7abb82b33676a7432a490eeda842cccfa7d788c659650426e6af77df11b8ae40eb80f475432c66600622ecaa8a5734d36fb03de-{-# INLINABLE _y #-}---- | Generator of affine BN462 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN462 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN462 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN462T.hs
@@ -1,131 +0,0 @@-module Curve.Weierstrass.BN462T-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN462T-  , Point(..)-  ) where--import Protolude--import ExtensionField-import PrimeField--import Curve.Weierstrass-import Curve.Weierstrass.BN462 (Fq)------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN462T curve.-data BN462T---- | Field of points of BN462T curve.-data PolynomialU-instance IrreducibleMonic Fq PolynomialU where-  split _ = X2 + 1-type Fq2 = ExtensionField Fq PolynomialU---- | Field of coefficients of BN462T curve.-type Fr = PrimeField 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d---- | BN462T curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN462T Fq2 Fr => WCurve c BN462T Fq2 Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN462T curve point.-type PA = WAPoint BN462T Fq2 Fr---- | Affine BN462T curve is a Weierstrass affine curve.-instance WACurve BN462T Fq2 Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN462T point.-type PJ = WJPoint BN462T Fq2 Fr---- | Jacobian BN462T curve is a Weierstrass Jacobian curve.-instance WJCurve BN462T Fq2 Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN462T point.-type PP = WPPoint BN462T Fq2 Fr---- | Projective BN462T curve is a Weierstrass projective curve.-instance WPCurve BN462T Fq2 Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN462T curve.-_a :: Fq2-_a = toField [-             ]-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN462T curve.-_b :: Fq2-_b = toField [ 0x2-             , 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138012-             ]-{-# INLINABLE _b #-}---- | Cofactor of BN462T curve.-_h :: Integer-_h = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908fa1ce0227fffffffff6ff66fc63f5f7f4c0000000002401b008a0168019-{-# INLINABLE _h #-}---- | Characteristic of BN462T curve.-_q :: Integer-_q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013-{-# INLINABLE _q #-}---- | Order of BN462T curve.-_r :: Integer-_r = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN462T curve.-_x :: Fq2-_x = toField [ 0x257ccc85b58dda0dfb38e3a8cbdc5482e0337e7c1cd96ed61c913820408208f9ad2699bad92e0032ae1f0aa6a8b48807695468e3d934ae1e4df-             , 0x1d2e4343e8599102af8edca849566ba3c98e2a354730cbed9176884058b18134dd86bae555b783718f50af8b59bf7e850e9b73108ba6aa8cd283-             ]-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN462T curve.-_y :: Fq2-_y = toField [ 0xa0650439da22c1979517427a20809eca035634706e23c3fa7a6bb42fe810f1399a1f41c9ddae32e03695a140e7b11d7c3376e5b68df0db7154e-             , 0x73ef0cbd438cbe0172c8ae37306324d44d5e6b0c69ac57b393f1ab370fd725cc647692444a04ef87387aa68d53743493b9eba14cc552ca2a93a-             ]-{-# INLINABLE _y #-}---- | Generator of affine BN462T curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN462T curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN462T curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BN512.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BN512-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BN512-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BN512 curve.-data BN512---- | Field of points of BN512 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef455146cf1eacbe98b8e48c65deab236fe1916a55ce5f4c6467b4eb280922adef33---- | Field of coefficients of BN512 curve.-type Fr = PrimeField 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef445146cf1eacbe98b8e48c65deab2679a34a10313e04f9a2b406a64a5f519a09ed---- | BN512 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BN512 Fq Fr => WCurve c BN512 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BN512 curve point.-type PA = WAPoint BN512 Fq Fr---- | Affine BN512 curve is a Weierstrass affine curve.-instance WACurve BN512 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BN512 point.-type PJ = WJPoint BN512 Fq Fr---- | Jacobian BN512 curve is a Weierstrass Jacobian curve.-instance WJCurve BN512 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BN512 point.-type PP = WPPoint BN512 Fq Fr---- | Projective BN512 curve is a Weierstrass projective curve.-instance WPCurve BN512 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BN512 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BN512 curve.-_b :: Fq-_b = 0x3-{-# INLINABLE _b #-}---- | Cofactor of BN512 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BN512 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef455146cf1eacbe98b8e48c65deab236fe1916a55ce5f4c6467b4eb280922adef33-{-# INLINABLE _q #-}---- | Order of BN512 curve.-_r :: Integer-_r = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef445146cf1eacbe98b8e48c65deab2679a34a10313e04f9a2b406a64a5f519a09ed-{-# INLINABLE _r #-}---- | Coordinate @X@ of BN512 curve.-_x :: Fq-_x = 0x1-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BN512 curve.-_y :: Fq-_y = 0x2-{-# INLINABLE _y #-}---- | Generator of affine BN512 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BN512 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BN512 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP160R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP160R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP160R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP160R1 curve.-data BrainpoolP160R1---- | Field of points of BrainpoolP160R1 curve.-type Fq = PrimeField 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f---- | Field of coefficients of BrainpoolP160R1 curve.-type Fr = PrimeField 0xe95e4a5f737059dc60df5991d45029409e60fc09---- | BrainpoolP160R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP160R1 Fq Fr => WCurve c BrainpoolP160R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP160R1 curve point.-type PA = WAPoint BrainpoolP160R1 Fq Fr---- | Affine BrainpoolP160R1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP160R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP160R1 point.-type PJ = WJPoint BrainpoolP160R1 Fq Fr---- | Jacobian BrainpoolP160R1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP160R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP160R1 point.-type PP = WPPoint BrainpoolP160R1 Fq Fr---- | Projective BrainpoolP160R1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP160R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP160R1 curve.-_a :: Fq-_a = 0x340e7be2a280eb74e2be61bada745d97e8f7c300-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP160R1 curve.-_b :: Fq-_b = 0x1e589a8595423412134faa2dbdec95c8d8675e58-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP160R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP160R1 curve.-_q :: Integer-_q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f-{-# INLINABLE _q #-}---- | Order of BrainpoolP160R1 curve.-_r :: Integer-_r = 0xe95e4a5f737059dc60df5991d45029409e60fc09-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP160R1 curve.-_x :: Fq-_x = 0xbed5af16ea3f6a4f62938c4631eb5af7bdbcdbc3-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP160R1 curve.-_y :: Fq-_y = 0x1667cb477a1a8ec338f94741669c976316da6321-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP160R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP160R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP160R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP160T1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP160T1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP160T1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP160T1 curve.-data BrainpoolP160T1---- | Field of points of BrainpoolP160T1 curve.-type Fq = PrimeField 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f---- | Field of coefficients of BrainpoolP160T1 curve.-type Fr = PrimeField 0xe95e4a5f737059dc60df5991d45029409e60fc09---- | BrainpoolP160T1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP160T1 Fq Fr => WCurve c BrainpoolP160T1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP160T1 curve point.-type PA = WAPoint BrainpoolP160T1 Fq Fr---- | Affine BrainpoolP160T1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP160T1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP160T1 point.-type PJ = WJPoint BrainpoolP160T1 Fq Fr---- | Jacobian BrainpoolP160T1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP160T1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP160T1 point.-type PP = WPPoint BrainpoolP160T1 Fq Fr---- | Projective BrainpoolP160T1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP160T1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP160T1 curve.-_a :: Fq-_a = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620c-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP160T1 curve.-_b :: Fq-_b = 0x7a556b6dae535b7b51ed2c4d7daa7a0b5c55f380-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP160T1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP160T1 curve.-_q :: Integer-_q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f-{-# INLINABLE _q #-}---- | Order of BrainpoolP160T1 curve.-_r :: Integer-_r = 0xe95e4a5f737059dc60df5991d45029409e60fc09-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP160T1 curve.-_x :: Fq-_x = 0xb199b13b9b34efc1397e64baeb05acc265ff2378-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP160T1 curve.-_y :: Fq-_y = 0xadd6718b7c7c1961f0991b842443772152c9e0ad-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP160T1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP160T1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP160T1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP192R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP192R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP192R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP192R1 curve.-data BrainpoolP192R1---- | Field of points of BrainpoolP192R1 curve.-type Fq = PrimeField 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297---- | Field of coefficients of BrainpoolP192R1 curve.-type Fr = PrimeField 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1---- | BrainpoolP192R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP192R1 Fq Fr => WCurve c BrainpoolP192R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP192R1 curve point.-type PA = WAPoint BrainpoolP192R1 Fq Fr---- | Affine BrainpoolP192R1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP192R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP192R1 point.-type PJ = WJPoint BrainpoolP192R1 Fq Fr---- | Jacobian BrainpoolP192R1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP192R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP192R1 point.-type PP = WPPoint BrainpoolP192R1 Fq Fr---- | Projective BrainpoolP192R1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP192R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP192R1 curve.-_a :: Fq-_a = 0x6a91174076b1e0e19c39c031fe8685c1cae040e5c69a28ef-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP192R1 curve.-_b :: Fq-_b = 0x469a28ef7c28cca3dc721d044f4496bcca7ef4146fbf25c9-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP192R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP192R1 curve.-_q :: Integer-_q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297-{-# INLINABLE _q #-}---- | Order of BrainpoolP192R1 curve.-_r :: Integer-_r = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP192R1 curve.-_x :: Fq-_x = 0xc0a0647eaab6a48753b033c56cb0f0900a2f5c4853375fd6-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP192R1 curve.-_y :: Fq-_y = 0x14b690866abd5bb88b5f4828c1490002e6773fa2fa299b8f-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP192R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP192R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP192R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP192T1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP192T1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP192T1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP192T1 curve.-data BrainpoolP192T1---- | Field of points of BrainpoolP192T1 curve.-type Fq = PrimeField 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297---- | Field of coefficients of BrainpoolP192T1 curve.-type Fr = PrimeField 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1---- | BrainpoolP192T1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP192T1 Fq Fr => WCurve c BrainpoolP192T1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP192T1 curve point.-type PA = WAPoint BrainpoolP192T1 Fq Fr---- | Affine BrainpoolP192T1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP192T1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP192T1 point.-type PJ = WJPoint BrainpoolP192T1 Fq Fr---- | Jacobian BrainpoolP192T1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP192T1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP192T1 point.-type PP = WPPoint BrainpoolP192T1 Fq Fr---- | Projective BrainpoolP192T1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP192T1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP192T1 curve.-_a :: Fq-_a = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86294-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP192T1 curve.-_b :: Fq-_b = 0x13d56ffaec78681e68f9deb43b35bec2fb68542e27897b79-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP192T1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP192T1 curve.-_q :: Integer-_q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297-{-# INLINABLE _q #-}---- | Order of BrainpoolP192T1 curve.-_r :: Integer-_r = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP192T1 curve.-_x :: Fq-_x = 0x3ae9e58c82f63c30282e1fe7bbf43fa72c446af6f4618129-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP192T1 curve.-_y :: Fq-_y = 0x97e2c5667c2223a902ab5ca449d0084b7e5b3de7ccc01c9-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP192T1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP192T1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP192T1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP224R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP224R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP224R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP224R1 curve.-data BrainpoolP224R1---- | Field of points of BrainpoolP224R1 curve.-type Fq = PrimeField 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff---- | Field of coefficients of BrainpoolP224R1 curve.-type Fr = PrimeField 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f---- | BrainpoolP224R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP224R1 Fq Fr => WCurve c BrainpoolP224R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP224R1 curve point.-type PA = WAPoint BrainpoolP224R1 Fq Fr---- | Affine BrainpoolP224R1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP224R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP224R1 point.-type PJ = WJPoint BrainpoolP224R1 Fq Fr---- | Jacobian BrainpoolP224R1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP224R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP224R1 point.-type PP = WPPoint BrainpoolP224R1 Fq Fr---- | Projective BrainpoolP224R1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP224R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP224R1 curve.-_a :: Fq-_a = 0x68a5e62ca9ce6c1c299803a6c1530b514e182ad8b0042a59cad29f43-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP224R1 curve.-_b :: Fq-_b = 0x2580f63ccfe44138870713b1a92369e33e2135d266dbb372386c400b-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP224R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP224R1 curve.-_q :: Integer-_q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff-{-# INLINABLE _q #-}---- | Order of BrainpoolP224R1 curve.-_r :: Integer-_r = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP224R1 curve.-_x :: Fq-_x = 0xd9029ad2c7e5cf4340823b2a87dc68c9e4ce3174c1e6efdee12c07d-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP224R1 curve.-_y :: Fq-_y = 0x58aa56f772c0726f24c6b89e4ecdac24354b9e99caa3f6d3761402cd-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP224R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP224R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP224R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP224T1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP224T1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP224T1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP224T1 curve.-data BrainpoolP224T1---- | Field of points of BrainpoolP224T1 curve.-type Fq = PrimeField 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff---- | Field of coefficients of BrainpoolP224T1 curve.-type Fr = PrimeField 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f---- | BrainpoolP224T1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP224T1 Fq Fr => WCurve c BrainpoolP224T1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP224T1 curve point.-type PA = WAPoint BrainpoolP224T1 Fq Fr---- | Affine BrainpoolP224T1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP224T1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP224T1 point.-type PJ = WJPoint BrainpoolP224T1 Fq Fr---- | Jacobian BrainpoolP224T1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP224T1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP224T1 point.-type PP = WPPoint BrainpoolP224T1 Fq Fr---- | Projective BrainpoolP224T1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP224T1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP224T1 curve.-_a :: Fq-_a = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0fc-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP224T1 curve.-_b :: Fq-_b = 0x4b337d934104cd7bef271bf60ced1ed20da14c08b3bb64f18a60888d-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP224T1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP224T1 curve.-_q :: Integer-_q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff-{-# INLINABLE _q #-}---- | Order of BrainpoolP224T1 curve.-_r :: Integer-_r = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP224T1 curve.-_x :: Fq-_x = 0x6ab1e344ce25ff3896424e7ffe14762ecb49f8928ac0c76029b4d580-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP224T1 curve.-_y :: Fq-_y = 0x374e9f5143e568cd23f3f4d7c0d4b1e41c8cc0d1c6abd5f1a46db4c-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP224T1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP224T1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP224T1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP256R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP256R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP256R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP256R1 curve.-data BrainpoolP256R1---- | Field of points of BrainpoolP256R1 curve.-type Fq = PrimeField 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377---- | Field of coefficients of BrainpoolP256R1 curve.-type Fr = PrimeField 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7---- | BrainpoolP256R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP256R1 Fq Fr => WCurve c BrainpoolP256R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP256R1 curve point.-type PA = WAPoint BrainpoolP256R1 Fq Fr---- | Affine BrainpoolP256R1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP256R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP256R1 point.-type PJ = WJPoint BrainpoolP256R1 Fq Fr---- | Jacobian BrainpoolP256R1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP256R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP256R1 point.-type PP = WPPoint BrainpoolP256R1 Fq Fr---- | Projective BrainpoolP256R1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP256R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP256R1 curve.-_a :: Fq-_a = 0x7d5a0975fc2c3057eef67530417affe7fb8055c126dc5c6ce94a4b44f330b5d9-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP256R1 curve.-_b :: Fq-_b = 0x26dc5c6ce94a4b44f330b5d9bbd77cbf958416295cf7e1ce6bccdc18ff8c07b6-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP256R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP256R1 curve.-_q :: Integer-_q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377-{-# INLINABLE _q #-}---- | Order of BrainpoolP256R1 curve.-_r :: Integer-_r = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP256R1 curve.-_x :: Fq-_x = 0x8bd2aeb9cb7e57cb2c4b482ffc81b7afb9de27e1e3bd23c23a4453bd9ace3262-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP256R1 curve.-_y :: Fq-_y = 0x547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP256R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP256R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP256R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP256T1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP256T1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP256T1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP256T1 curve.-data BrainpoolP256T1---- | Field of points of BrainpoolP256T1 curve.-type Fq = PrimeField 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377---- | Field of coefficients of BrainpoolP256T1 curve.-type Fr = PrimeField 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7---- | BrainpoolP256T1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP256T1 Fq Fr => WCurve c BrainpoolP256T1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP256T1 curve point.-type PA = WAPoint BrainpoolP256T1 Fq Fr---- | Affine BrainpoolP256T1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP256T1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP256T1 point.-type PJ = WJPoint BrainpoolP256T1 Fq Fr---- | Jacobian BrainpoolP256T1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP256T1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP256T1 point.-type PP = WPPoint BrainpoolP256T1 Fq Fr---- | Projective BrainpoolP256T1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP256T1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP256T1 curve.-_a :: Fq-_a = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5374-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP256T1 curve.-_b :: Fq-_b = 0x662c61c430d84ea4fe66a7733d0b76b7bf93ebc4af2f49256ae58101fee92b04-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP256T1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP256T1 curve.-_q :: Integer-_q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377-{-# INLINABLE _q #-}---- | Order of BrainpoolP256T1 curve.-_r :: Integer-_r = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP256T1 curve.-_x :: Fq-_x = 0xa3e8eb3cc1cfe7b7732213b23a656149afa142c47aafbc2b79a191562e1305f4-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP256T1 curve.-_y :: Fq-_y = 0x2d996c823439c56d7f7b22e14644417e69bcb6de39d027001dabe8f35b25c9be-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP256T1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP256T1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP256T1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP320R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP320R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP320R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP320R1 curve.-data BrainpoolP320R1---- | Field of points of BrainpoolP320R1 curve.-type Fq = PrimeField 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27---- | Field of coefficients of BrainpoolP320R1 curve.-type Fr = PrimeField 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311---- | BrainpoolP320R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP320R1 Fq Fr => WCurve c BrainpoolP320R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP320R1 curve point.-type PA = WAPoint BrainpoolP320R1 Fq Fr---- | Affine BrainpoolP320R1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP320R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP320R1 point.-type PJ = WJPoint BrainpoolP320R1 Fq Fr---- | Jacobian BrainpoolP320R1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP320R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP320R1 point.-type PP = WPPoint BrainpoolP320R1 Fq Fr---- | Projective BrainpoolP320R1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP320R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP320R1 curve.-_a :: Fq-_a = 0x3ee30b568fbab0f883ccebd46d3f3bb8a2a73513f5eb79da66190eb085ffa9f492f375a97d860eb4-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP320R1 curve.-_b :: Fq-_b = 0x520883949dfdbc42d3ad198640688a6fe13f41349554b49acc31dccd884539816f5eb4ac8fb1f1a6-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP320R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP320R1 curve.-_q :: Integer-_q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27-{-# INLINABLE _q #-}---- | Order of BrainpoolP320R1 curve.-_r :: Integer-_r = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP320R1 curve.-_x :: Fq-_x = 0x43bd7e9afb53d8b85289bcc48ee5bfe6f20137d10a087eb6e7871e2a10a599c710af8d0d39e20611-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP320R1 curve.-_y :: Fq-_y = 0x14fdd05545ec1cc8ab4093247f77275e0743ffed117182eaa9c77877aaac6ac7d35245d1692e8ee1-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP320R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP320R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP320R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP320T1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP320T1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP320T1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP320T1 curve.-data BrainpoolP320T1---- | Field of points of BrainpoolP320T1 curve.-type Fq = PrimeField 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27---- | Field of coefficients of BrainpoolP320T1 curve.-type Fr = PrimeField 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311---- | BrainpoolP320T1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP320T1 Fq Fr => WCurve c BrainpoolP320T1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP320T1 curve point.-type PA = WAPoint BrainpoolP320T1 Fq Fr---- | Affine BrainpoolP320T1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP320T1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP320T1 point.-type PJ = WJPoint BrainpoolP320T1 Fq Fr---- | Jacobian BrainpoolP320T1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP320T1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP320T1 point.-type PP = WPPoint BrainpoolP320T1 Fq Fr---- | Projective BrainpoolP320T1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP320T1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP320T1 curve.-_a :: Fq-_a = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e24-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP320T1 curve.-_b :: Fq-_b = 0xa7f561e038eb1ed560b3d147db782013064c19f27ed27c6780aaf77fb8a547ceb5b4fef422340353-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP320T1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP320T1 curve.-_q :: Integer-_q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27-{-# INLINABLE _q #-}---- | Order of BrainpoolP320T1 curve.-_r :: Integer-_r = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP320T1 curve.-_x :: Fq-_x = 0x925be9fb01afc6fb4d3e7d4990010f813408ab106c4f09cb7ee07868cc136fff3357f624a21bed52-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP320T1 curve.-_y :: Fq-_y = 0x63ba3a7a27483ebf6671dbef7abb30ebee084e58a0b077ad42a5a0989d1ee71b1b9bc0455fb0d2c3-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP320T1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP320T1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP320T1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP384R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP384R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP384R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP384R1 curve.-data BrainpoolP384R1---- | Field of points of BrainpoolP384R1 curve.-type Fq = PrimeField 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53---- | Field of coefficients of BrainpoolP384R1 curve.-type Fr = PrimeField 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565---- | BrainpoolP384R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP384R1 Fq Fr => WCurve c BrainpoolP384R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP384R1 curve point.-type PA = WAPoint BrainpoolP384R1 Fq Fr---- | Affine BrainpoolP384R1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP384R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP384R1 point.-type PJ = WJPoint BrainpoolP384R1 Fq Fr---- | Jacobian BrainpoolP384R1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP384R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP384R1 point.-type PP = WPPoint BrainpoolP384R1 Fq Fr---- | Projective BrainpoolP384R1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP384R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP384R1 curve.-_a :: Fq-_a = 0x7bc382c63d8c150c3c72080ace05afa0c2bea28e4fb22787139165efba91f90f8aa5814a503ad4eb04a8c7dd22ce2826-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP384R1 curve.-_b :: Fq-_b = 0x4a8c7dd22ce28268b39b55416f0447c2fb77de107dcd2a62e880ea53eeb62d57cb4390295dbc9943ab78696fa504c11-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP384R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP384R1 curve.-_q :: Integer-_q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53-{-# INLINABLE _q #-}---- | Order of BrainpoolP384R1 curve.-_r :: Integer-_r = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP384R1 curve.-_x :: Fq-_x = 0x1d1c64f068cf45ffa2a63a81b7c13f6b8847a3e77ef14fe3db7fcafe0cbd10e8e826e03436d646aaef87b2e247d4af1e-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP384R1 curve.-_y :: Fq-_y = 0x8abe1d7520f9c2a45cb1eb8e95cfd55262b70b29feec5864e19c054ff99129280e4646217791811142820341263c5315-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP384R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP384R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP384R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP384T1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP384T1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP384T1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP384T1 curve.-data BrainpoolP384T1---- | Field of points of BrainpoolP384T1 curve.-type Fq = PrimeField 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53---- | Field of coefficients of BrainpoolP384T1 curve.-type Fr = PrimeField 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565---- | BrainpoolP384T1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP384T1 Fq Fr => WCurve c BrainpoolP384T1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP384T1 curve point.-type PA = WAPoint BrainpoolP384T1 Fq Fr---- | Affine BrainpoolP384T1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP384T1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP384T1 point.-type PJ = WJPoint BrainpoolP384T1 Fq Fr---- | Jacobian BrainpoolP384T1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP384T1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP384T1 point.-type PP = WPPoint BrainpoolP384T1 Fq Fr---- | Projective BrainpoolP384T1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP384T1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP384T1 curve.-_a :: Fq-_a = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec50-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP384T1 curve.-_b :: Fq-_b = 0x7f519eada7bda81bd826dba647910f8c4b9346ed8ccdc64e4b1abd11756dce1d2074aa263b88805ced70355a33b471ee-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP384T1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP384T1 curve.-_q :: Integer-_q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53-{-# INLINABLE _q #-}---- | Order of BrainpoolP384T1 curve.-_r :: Integer-_r = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP384T1 curve.-_x :: Fq-_x = 0x18de98b02db9a306f2afcd7235f72a819b80ab12ebd653172476fecd462aabffc4ff191b946a5f54d8d0aa2f418808cc-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP384T1 curve.-_y :: Fq-_y = 0x25ab056962d30651a114afd2755ad336747f93475b7a1fca3b88f2b6a208ccfe469408584dc2b2912675bf5b9e582928-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP384T1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP384T1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP384T1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP512R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP512R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP512R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP512R1 curve.-data BrainpoolP512R1---- | Field of points of BrainpoolP512R1 curve.-type Fq = PrimeField 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3---- | Field of coefficients of BrainpoolP512R1 curve.-type Fr = PrimeField 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069---- | BrainpoolP512R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP512R1 Fq Fr => WCurve c BrainpoolP512R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP512R1 curve point.-type PA = WAPoint BrainpoolP512R1 Fq Fr---- | Affine BrainpoolP512R1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP512R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP512R1 point.-type PJ = WJPoint BrainpoolP512R1 Fq Fr---- | Jacobian BrainpoolP512R1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP512R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP512R1 point.-type PP = WPPoint BrainpoolP512R1 Fq Fr---- | Projective BrainpoolP512R1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP512R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP512R1 curve.-_a :: Fq-_a = 0x7830a3318b603b89e2327145ac234cc594cbdd8d3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94ca-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP512R1 curve.-_b :: Fq-_b = 0x3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94cadc083e67984050b75ebae5dd2809bd638016f723-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP512R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP512R1 curve.-_q :: Integer-_q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3-{-# INLINABLE _q #-}---- | Order of BrainpoolP512R1 curve.-_r :: Integer-_r = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP512R1 curve.-_x :: Fq-_x = 0x81aee4bdd82ed9645a21322e9c4c6a9385ed9f70b5d916c1b43b62eef4d0098eff3b1f78e2d0d48d50d1687b93b97d5f7c6d5047406a5e688b352209bcb9f822-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP512R1 curve.-_y :: Fq-_y = 0x7dde385d566332ecc0eabfa9cf7822fdf209f70024a57b1aa000c55b881f8111b2dcde494a5f485e5bca4bd88a2763aed1ca2b2fa8f0540678cd1e0f3ad80892-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP512R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP512R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP512R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/BrainpoolP512T1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.BrainpoolP512T1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.BrainpoolP512T1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | BrainpoolP512T1 curve.-data BrainpoolP512T1---- | Field of points of BrainpoolP512T1 curve.-type Fq = PrimeField 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3---- | Field of coefficients of BrainpoolP512T1 curve.-type Fr = PrimeField 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069---- | BrainpoolP512T1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c BrainpoolP512T1 Fq Fr => WCurve c BrainpoolP512T1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine BrainpoolP512T1 curve point.-type PA = WAPoint BrainpoolP512T1 Fq Fr---- | Affine BrainpoolP512T1 curve is a Weierstrass affine curve.-instance WACurve BrainpoolP512T1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian BrainpoolP512T1 point.-type PJ = WJPoint BrainpoolP512T1 Fq Fr---- | Jacobian BrainpoolP512T1 curve is a Weierstrass Jacobian curve.-instance WJCurve BrainpoolP512T1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective BrainpoolP512T1 point.-type PP = WPPoint BrainpoolP512T1 Fq Fr---- | Projective BrainpoolP512T1 curve is a Weierstrass projective curve.-instance WPCurve BrainpoolP512T1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of BrainpoolP512T1 curve.-_a :: Fq-_a = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f0-{-# INLINABLE _a #-}---- | Coefficient @B@ of BrainpoolP512T1 curve.-_b :: Fq-_b = 0x7cbbbcf9441cfab76e1890e46884eae321f70c0bcb4981527897504bec3e36a62bcdfa2304976540f6450085f2dae145c22553b465763689180ea2571867423e-{-# INLINABLE _b #-}---- | Cofactor of BrainpoolP512T1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of BrainpoolP512T1 curve.-_q :: Integer-_q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3-{-# INLINABLE _q #-}---- | Order of BrainpoolP512T1 curve.-_r :: Integer-_r = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069-{-# INLINABLE _r #-}---- | Coordinate @X@ of BrainpoolP512T1 curve.-_x :: Fq-_x = 0x640ece5c12788717b9c1ba06cbc2a6feba85842458c56dde9db1758d39c0313d82ba51735cdb3ea499aa77a7d6943a64f7a3f25fe26f06b51baa2696fa9035da-{-# INLINABLE _x #-}---- | Coordinate @Y@ of BrainpoolP512T1 curve.-_y :: Fq-_y = 0x5b534bd595f5af0fa2c892376c84ace1bb4e3019b71634c01131159cae03cee9d9932184beef216bd71df2dadf86a627306ecff96dbb8bace198b61e00f8b332-{-# INLINABLE _y #-}---- | Generator of affine BrainpoolP512T1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian BrainpoolP512T1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective BrainpoolP512T1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP112R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP112R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP112R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP112R1 curve.-data SECP112R1---- | Field of points of SECP112R1 curve.-type Fq = PrimeField 0xdb7c2abf62e35e668076bead208b---- | Field of coefficients of SECP112R1 curve.-type Fr = PrimeField 0xdb7c2abf62e35e7628dfac6561c5---- | SECP112R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP112R1 Fq Fr => WCurve c SECP112R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP112R1 curve point.-type PA = WAPoint SECP112R1 Fq Fr---- | Affine SECP112R1 curve is a Weierstrass affine curve.-instance WACurve SECP112R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP112R1 point.-type PJ = WJPoint SECP112R1 Fq Fr---- | Jacobian SECP112R1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP112R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP112R1 point.-type PP = WPPoint SECP112R1 Fq Fr---- | Projective SECP112R1 curve is a Weierstrass projective curve.-instance WPCurve SECP112R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP112R1 curve.-_a :: Fq-_a = 0xdb7c2abf62e35e668076bead2088-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP112R1 curve.-_b :: Fq-_b = 0x659ef8ba043916eede8911702b22-{-# INLINABLE _b #-}---- | Cofactor of SECP112R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP112R1 curve.-_q :: Integer-_q = 0xdb7c2abf62e35e668076bead208b-{-# INLINABLE _q #-}---- | Order of SECP112R1 curve.-_r :: Integer-_r = 0xdb7c2abf62e35e7628dfac6561c5-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP112R1 curve.-_x :: Fq-_x = 0x9487239995a5ee76b55f9c2f098-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP112R1 curve.-_y :: Fq-_y = 0xa89ce5af8724c0a23e0e0ff77500-{-# INLINABLE _y #-}---- | Generator of affine SECP112R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP112R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP112R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP112R2.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP112R2-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP112R2-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP112R2 curve.-data SECP112R2---- | Field of points of SECP112R2 curve.-type Fq = PrimeField 0xdb7c2abf62e35e668076bead208b---- | Field of coefficients of SECP112R2 curve.-type Fr = PrimeField 0x36df0aafd8b8d7597ca10520d04b---- | SECP112R2 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP112R2 Fq Fr => WCurve c SECP112R2 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP112R2 curve point.-type PA = WAPoint SECP112R2 Fq Fr---- | Affine SECP112R2 curve is a Weierstrass affine curve.-instance WACurve SECP112R2 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP112R2 point.-type PJ = WJPoint SECP112R2 Fq Fr---- | Jacobian SECP112R2 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP112R2 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP112R2 point.-type PP = WPPoint SECP112R2 Fq Fr---- | Projective SECP112R2 curve is a Weierstrass projective curve.-instance WPCurve SECP112R2 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP112R2 curve.-_a :: Fq-_a = 0x6127c24c05f38a0aaaf65c0ef02c-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP112R2 curve.-_b :: Fq-_b = 0x51def1815db5ed74fcc34c85d709-{-# INLINABLE _b #-}---- | Cofactor of SECP112R2 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Characteristic of SECP112R2 curve.-_q :: Integer-_q = 0xdb7c2abf62e35e668076bead208b-{-# INLINABLE _q #-}---- | Order of SECP112R2 curve.-_r :: Integer-_r = 0x36df0aafd8b8d7597ca10520d04b-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP112R2 curve.-_x :: Fq-_x = 0x4ba30ab5e892b4e1649dd0928643-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP112R2 curve.-_y :: Fq-_y = 0xadcd46f5882e3747def36e956e97-{-# INLINABLE _y #-}---- | Generator of affine SECP112R2 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP112R2 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP112R2 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP128R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP128R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP128R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP128R1 curve.-data SECP128R1---- | Field of points of SECP128R1 curve.-type Fq = PrimeField 0xfffffffdffffffffffffffffffffffff---- | Field of coefficients of SECP128R1 curve.-type Fr = PrimeField 0xfffffffe0000000075a30d1b9038a115---- | SECP128R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP128R1 Fq Fr => WCurve c SECP128R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP128R1 curve point.-type PA = WAPoint SECP128R1 Fq Fr---- | Affine SECP128R1 curve is a Weierstrass affine curve.-instance WACurve SECP128R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP128R1 point.-type PJ = WJPoint SECP128R1 Fq Fr---- | Jacobian SECP128R1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP128R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP128R1 point.-type PP = WPPoint SECP128R1 Fq Fr---- | Projective SECP128R1 curve is a Weierstrass projective curve.-instance WPCurve SECP128R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP128R1 curve.-_a :: Fq-_a = 0xfffffffdfffffffffffffffffffffffc-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP128R1 curve.-_b :: Fq-_b = 0xe87579c11079f43dd824993c2cee5ed3-{-# INLINABLE _b #-}---- | Cofactor of SECP128R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP128R1 curve.-_q :: Integer-_q = 0xfffffffdffffffffffffffffffffffff-{-# INLINABLE _q #-}---- | Order of SECP128R1 curve.-_r :: Integer-_r = 0xfffffffe0000000075a30d1b9038a115-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP128R1 curve.-_x :: Fq-_x = 0x161ff7528b899b2d0c28607ca52c5b86-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP128R1 curve.-_y :: Fq-_y = 0xcf5ac8395bafeb13c02da292dded7a83-{-# INLINABLE _y #-}---- | Generator of affine SECP128R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP128R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP128R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP128R2.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP128R2-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP128R2-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP128R2 curve.-data SECP128R2---- | Field of points of SECP128R2 curve.-type Fq = PrimeField 0xfffffffdffffffffffffffffffffffff---- | Field of coefficients of SECP128R2 curve.-type Fr = PrimeField 0x3fffffff7fffffffbe0024720613b5a3---- | SECP128R2 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP128R2 Fq Fr => WCurve c SECP128R2 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP128R2 curve point.-type PA = WAPoint SECP128R2 Fq Fr---- | Affine SECP128R2 curve is a Weierstrass affine curve.-instance WACurve SECP128R2 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP128R2 point.-type PJ = WJPoint SECP128R2 Fq Fr---- | Jacobian SECP128R2 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP128R2 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP128R2 point.-type PP = WPPoint SECP128R2 Fq Fr---- | Projective SECP128R2 curve is a Weierstrass projective curve.-instance WPCurve SECP128R2 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP128R2 curve.-_a :: Fq-_a = 0xd6031998d1b3bbfebf59cc9bbff9aee1-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP128R2 curve.-_b :: Fq-_b = 0x5eeefca380d02919dc2c6558bb6d8a5d-{-# INLINABLE _b #-}---- | Cofactor of SECP128R2 curve.-_h :: Integer-_h = 0x4-{-# INLINABLE _h #-}---- | Characteristic of SECP128R2 curve.-_q :: Integer-_q = 0xfffffffdffffffffffffffffffffffff-{-# INLINABLE _q #-}---- | Order of SECP128R2 curve.-_r :: Integer-_r = 0x3fffffff7fffffffbe0024720613b5a3-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP128R2 curve.-_x :: Fq-_x = 0x7b6aa5d85e572983e6fb32a7cdebc140-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP128R2 curve.-_y :: Fq-_y = 0x27b6916a894d3aee7106fe805fc34b44-{-# INLINABLE _y #-}---- | Generator of affine SECP128R2 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP128R2 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP128R2 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP160K1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP160K1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP160K1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP160K1 curve.-data SECP160K1---- | Field of points of SECP160K1 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffeffffac73---- | Field of coefficients of SECP160K1 curve.-type Fr = PrimeField 0x100000000000000000001b8fa16dfab9aca16b6b3---- | SECP160K1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP160K1 Fq Fr => WCurve c SECP160K1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP160K1 curve point.-type PA = WAPoint SECP160K1 Fq Fr---- | Affine SECP160K1 curve is a Weierstrass affine curve.-instance WACurve SECP160K1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP160K1 point.-type PJ = WJPoint SECP160K1 Fq Fr---- | Jacobian SECP160K1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP160K1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP160K1 point.-type PP = WPPoint SECP160K1 Fq Fr---- | Projective SECP160K1 curve is a Weierstrass projective curve.-instance WPCurve SECP160K1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP160K1 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP160K1 curve.-_b :: Fq-_b = 0x7-{-# INLINABLE _b #-}---- | Cofactor of SECP160K1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP160K1 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffeffffac73-{-# INLINABLE _q #-}---- | Order of SECP160K1 curve.-_r :: Integer-_r = 0x100000000000000000001b8fa16dfab9aca16b6b3-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP160K1 curve.-_x :: Fq-_x = 0x3b4c382ce37aa192a4019e763036f4f5dd4d7ebb-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP160K1 curve.-_y :: Fq-_y = 0x938cf935318fdced6bc28286531733c3f03c4fee-{-# INLINABLE _y #-}---- | Generator of affine SECP160K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP160K1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP160K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP160R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP160R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP160R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP160R1 curve.-data SECP160R1---- | Field of points of SECP160R1 curve.-type Fq = PrimeField 0xffffffffffffffffffffffffffffffff7fffffff---- | Field of coefficients of SECP160R1 curve.-type Fr = PrimeField 0x100000000000000000001f4c8f927aed3ca752257---- | SECP160R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP160R1 Fq Fr => WCurve c SECP160R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP160R1 curve point.-type PA = WAPoint SECP160R1 Fq Fr---- | Affine SECP160R1 curve is a Weierstrass affine curve.-instance WACurve SECP160R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP160R1 point.-type PJ = WJPoint SECP160R1 Fq Fr---- | Jacobian SECP160R1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP160R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP160R1 point.-type PP = WPPoint SECP160R1 Fq Fr---- | Projective SECP160R1 curve is a Weierstrass projective curve.-instance WPCurve SECP160R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP160R1 curve.-_a :: Fq-_a = 0xffffffffffffffffffffffffffffffff7ffffffc-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP160R1 curve.-_b :: Fq-_b = 0x1c97befc54bd7a8b65acf89f81d4d4adc565fa45-{-# INLINABLE _b #-}---- | Cofactor of SECP160R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP160R1 curve.-_q :: Integer-_q = 0xffffffffffffffffffffffffffffffff7fffffff-{-# INLINABLE _q #-}---- | Order of SECP160R1 curve.-_r :: Integer-_r = 0x100000000000000000001f4c8f927aed3ca752257-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP160R1 curve.-_x :: Fq-_x = 0x4a96b5688ef573284664698968c38bb913cbfc82-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP160R1 curve.-_y :: Fq-_y = 0x23a628553168947d59dcc912042351377ac5fb32-{-# INLINABLE _y #-}---- | Generator of affine SECP160R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP160R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP160R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP160R2.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP160R2-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP160R2-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP160R2 curve.-data SECP160R2---- | Field of points of SECP160R2 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffeffffac73---- | Field of coefficients of SECP160R2 curve.-type Fr = PrimeField 0x100000000000000000000351ee786a818f3a1a16b---- | SECP160R2 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP160R2 Fq Fr => WCurve c SECP160R2 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP160R2 curve point.-type PA = WAPoint SECP160R2 Fq Fr---- | Affine SECP160R2 curve is a Weierstrass affine curve.-instance WACurve SECP160R2 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP160R2 point.-type PJ = WJPoint SECP160R2 Fq Fr---- | Jacobian SECP160R2 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP160R2 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP160R2 point.-type PP = WPPoint SECP160R2 Fq Fr---- | Projective SECP160R2 curve is a Weierstrass projective curve.-instance WPCurve SECP160R2 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP160R2 curve.-_a :: Fq-_a = 0xfffffffffffffffffffffffffffffffeffffac70-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP160R2 curve.-_b :: Fq-_b = 0xb4e134d3fb59eb8bab57274904664d5af50388ba-{-# INLINABLE _b #-}---- | Cofactor of SECP160R2 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP160R2 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffeffffac73-{-# INLINABLE _q #-}---- | Order of SECP160R2 curve.-_r :: Integer-_r = 0x100000000000000000000351ee786a818f3a1a16b-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP160R2 curve.-_x :: Fq-_x = 0x52dcb034293a117e1f4ff11b30f7199d3144ce6d-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP160R2 curve.-_y :: Fq-_y = 0xfeaffef2e331f296e071fa0df9982cfea7d43f2e-{-# INLINABLE _y #-}---- | Generator of affine SECP160R2 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP160R2 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP160R2 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP192K1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP192K1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP192K1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP192K1 curve.-data SECP192K1---- | Field of points of SECP192K1 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffffffffffeffffee37---- | Field of coefficients of SECP192K1 curve.-type Fr = PrimeField 0xfffffffffffffffffffffffe26f2fc170f69466a74defd8d---- | SECP192K1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP192K1 Fq Fr => WCurve c SECP192K1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP192K1 curve point.-type PA = WAPoint SECP192K1 Fq Fr---- | Affine SECP192K1 curve is a Weierstrass affine curve.-instance WACurve SECP192K1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP192K1 point.-type PJ = WJPoint SECP192K1 Fq Fr---- | Jacobian SECP192K1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP192K1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP192K1 point.-type PP = WPPoint SECP192K1 Fq Fr---- | Projective SECP192K1 curve is a Weierstrass projective curve.-instance WPCurve SECP192K1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP192K1 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP192K1 curve.-_b :: Fq-_b = 0x3-{-# INLINABLE _b #-}---- | Cofactor of SECP192K1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP192K1 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffffffffffeffffee37-{-# INLINABLE _q #-}---- | Order of SECP192K1 curve.-_r :: Integer-_r = 0xfffffffffffffffffffffffe26f2fc170f69466a74defd8d-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP192K1 curve.-_x :: Fq-_x = 0xdb4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP192K1 curve.-_y :: Fq-_y = 0x9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d-{-# INLINABLE _y #-}---- | Generator of affine SECP192K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP192K1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP192K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP192R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP192R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP192R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP192R1 curve.-data SECP192R1---- | Field of points of SECP192R1 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffeffffffffffffffff---- | Field of coefficients of SECP192R1 curve.-type Fr = PrimeField 0xffffffffffffffffffffffff99def836146bc9b1b4d22831---- | SECP192R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP192R1 Fq Fr => WCurve c SECP192R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP192R1 curve point.-type PA = WAPoint SECP192R1 Fq Fr---- | Affine SECP192R1 curve is a Weierstrass affine curve.-instance WACurve SECP192R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP192R1 point.-type PJ = WJPoint SECP192R1 Fq Fr---- | Jacobian SECP192R1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP192R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP192R1 point.-type PP = WPPoint SECP192R1 Fq Fr---- | Projective SECP192R1 curve is a Weierstrass projective curve.-instance WPCurve SECP192R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP192R1 curve.-_a :: Fq-_a = 0xfffffffffffffffffffffffffffffffefffffffffffffffc-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP192R1 curve.-_b :: Fq-_b = 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1-{-# INLINABLE _b #-}---- | Cofactor of SECP192R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP192R1 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffeffffffffffffffff-{-# INLINABLE _q #-}---- | Order of SECP192R1 curve.-_r :: Integer-_r = 0xffffffffffffffffffffffff99def836146bc9b1b4d22831-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP192R1 curve.-_x :: Fq-_x = 0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP192R1 curve.-_y :: Fq-_y = 0x7192b95ffc8da78631011ed6b24cdd573f977a11e794811-{-# INLINABLE _y #-}---- | Generator of affine SECP192R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP192R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP192R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP224K1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP224K1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP224K1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP224K1 curve.-data SECP224K1---- | Field of points of SECP224K1 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffffffffffffffffffeffffe56d---- | Field of coefficients of SECP224K1 curve.-type Fr = PrimeField 0x10000000000000000000000000001dce8d2ec6184caf0a971769fb1f7---- | SECP224K1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP224K1 Fq Fr => WCurve c SECP224K1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP224K1 curve point.-type PA = WAPoint SECP224K1 Fq Fr---- | Affine SECP224K1 curve is a Weierstrass affine curve.-instance WACurve SECP224K1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP224K1 point.-type PJ = WJPoint SECP224K1 Fq Fr---- | Jacobian SECP224K1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP224K1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP224K1 point.-type PP = WPPoint SECP224K1 Fq Fr---- | Projective SECP224K1 curve is a Weierstrass projective curve.-instance WPCurve SECP224K1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP224K1 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP224K1 curve.-_b :: Fq-_b = 0x5-{-# INLINABLE _b #-}---- | Cofactor of SECP224K1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP224K1 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffeffffe56d-{-# INLINABLE _q #-}---- | Order of SECP224K1 curve.-_r :: Integer-_r = 0x10000000000000000000000000001dce8d2ec6184caf0a971769fb1f7-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP224K1 curve.-_x :: Fq-_x = 0xa1455b334df099df30fc28a169a467e9e47075a90f7e650eb6b7a45c-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP224K1 curve.-_y :: Fq-_y = 0x7e089fed7fba344282cafbd6f7e319f7c0b0bd59e2ca4bdb556d61a5-{-# INLINABLE _y #-}---- | Generator of affine SECP224K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP224K1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP224K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP224R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP224R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP224R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP224R1 curve.-data SECP224R1---- | Field of points of SECP224R1 curve.-type Fq = PrimeField 0xffffffffffffffffffffffffffffffff000000000000000000000001---- | Field of coefficients of SECP224R1 curve.-type Fr = PrimeField 0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d---- | SECP224R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP224R1 Fq Fr => WCurve c SECP224R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP224R1 curve point.-type PA = WAPoint SECP224R1 Fq Fr---- | Affine SECP224R1 curve is a Weierstrass affine curve.-instance WACurve SECP224R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP224R1 point.-type PJ = WJPoint SECP224R1 Fq Fr---- | Jacobian SECP224R1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP224R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP224R1 point.-type PP = WPPoint SECP224R1 Fq Fr---- | Projective SECP224R1 curve is a Weierstrass projective curve.-instance WPCurve SECP224R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP224R1 curve.-_a :: Fq-_a = 0xfffffffffffffffffffffffffffffffefffffffffffffffffffffffe-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP224R1 curve.-_b :: Fq-_b = 0xb4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4-{-# INLINABLE _b #-}---- | Cofactor of SECP224R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP224R1 curve.-_q :: Integer-_q = 0xffffffffffffffffffffffffffffffff000000000000000000000001-{-# INLINABLE _q #-}---- | Order of SECP224R1 curve.-_r :: Integer-_r = 0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP224R1 curve.-_x :: Fq-_x = 0xb70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP224R1 curve.-_y :: Fq-_y = 0xbd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34-{-# INLINABLE _y #-}---- | Generator of affine SECP224R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP224R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP224R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP256K1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP256K1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP256K1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP256K1 curve.-data SECP256K1---- | Field of points of SECP256K1 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f---- | Field of coefficients of SECP256K1 curve.-type Fr = PrimeField 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141---- | SECP256K1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP256K1 Fq Fr => WCurve c SECP256K1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP256K1 curve point.-type PA = WAPoint SECP256K1 Fq Fr---- | Affine SECP256K1 curve is a Weierstrass affine curve.-instance WACurve SECP256K1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP256K1 point.-type PJ = WJPoint SECP256K1 Fq Fr---- | Jacobian SECP256K1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP256K1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP256K1 point.-type PP = WPPoint SECP256K1 Fq Fr---- | Projective SECP256K1 curve is a Weierstrass projective curve.-instance WPCurve SECP256K1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP256K1 curve.-_a :: Fq-_a = 0x0-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP256K1 curve.-_b :: Fq-_b = 0x7-{-# INLINABLE _b #-}---- | Cofactor of SECP256K1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP256K1 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f-{-# INLINABLE _q #-}---- | Order of SECP256K1 curve.-_r :: Integer-_r = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP256K1 curve.-_x :: Fq-_x = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP256K1 curve.-_y :: Fq-_y = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8-{-# INLINABLE _y #-}---- | Generator of affine SECP256K1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP256K1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP256K1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP256R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP256R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP256R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP256R1 curve.-data SECP256R1---- | Field of points of SECP256R1 curve.-type Fq = PrimeField 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff---- | Field of coefficients of SECP256R1 curve.-type Fr = PrimeField 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551---- | SECP256R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP256R1 Fq Fr => WCurve c SECP256R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP256R1 curve point.-type PA = WAPoint SECP256R1 Fq Fr---- | Affine SECP256R1 curve is a Weierstrass affine curve.-instance WACurve SECP256R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP256R1 point.-type PJ = WJPoint SECP256R1 Fq Fr---- | Jacobian SECP256R1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP256R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP256R1 point.-type PP = WPPoint SECP256R1 Fq Fr---- | Projective SECP256R1 curve is a Weierstrass projective curve.-instance WPCurve SECP256R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP256R1 curve.-_a :: Fq-_a = 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP256R1 curve.-_b :: Fq-_b = 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b-{-# INLINABLE _b #-}---- | Cofactor of SECP256R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP256R1 curve.-_q :: Integer-_q = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff-{-# INLINABLE _q #-}---- | Order of SECP256R1 curve.-_r :: Integer-_r = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP256R1 curve.-_x :: Fq-_x = 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP256R1 curve.-_y :: Fq-_y = 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5-{-# INLINABLE _y #-}---- | Generator of affine SECP256R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP256R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP256R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP384R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP384R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP384R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP384R1 curve.-data SECP384R1---- | Field of points of SECP384R1 curve.-type Fq = PrimeField 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff---- | Field of coefficients of SECP384R1 curve.-type Fr = PrimeField 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973---- | SECP384R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP384R1 Fq Fr => WCurve c SECP384R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP384R1 curve point.-type PA = WAPoint SECP384R1 Fq Fr---- | Affine SECP384R1 curve is a Weierstrass affine curve.-instance WACurve SECP384R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP384R1 point.-type PJ = WJPoint SECP384R1 Fq Fr---- | Jacobian SECP384R1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP384R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP384R1 point.-type PP = WPPoint SECP384R1 Fq Fr---- | Projective SECP384R1 curve is a Weierstrass projective curve.-instance WPCurve SECP384R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP384R1 curve.-_a :: Fq-_a = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP384R1 curve.-_b :: Fq-_b = 0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef-{-# INLINABLE _b #-}---- | Cofactor of SECP384R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP384R1 curve.-_q :: Integer-_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff-{-# INLINABLE _q #-}---- | Order of SECP384R1 curve.-_r :: Integer-_r = 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP384R1 curve.-_x :: Fq-_x = 0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP384R1 curve.-_y :: Fq-_y = 0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f-{-# INLINABLE _y #-}---- | Generator of affine SECP384R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP384R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP384R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
− src/Curve/Weierstrass/SECP521R1.hs
@@ -1,119 +0,0 @@-module Curve.Weierstrass.SECP521R1-  ( module Curve.Weierstrass-  , module Curve.Weierstrass.SECP521R1-  , Point(..)-  ) where--import Protolude--import PrimeField--import Curve.Weierstrass------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | SECP521R1 curve.-data SECP521R1---- | Field of points of SECP521R1 curve.-type Fq = PrimeField 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff---- | Field of coefficients of SECP521R1 curve.-type Fr = PrimeField 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409---- | SECP521R1 curve is a Weierstrass curve.-instance Curve 'Weierstrass c SECP521R1 Fq Fr => WCurve c SECP521R1 Fq Fr where-  a_ = const _a-  {-# INLINABLE a_ #-}-  b_ = const _b-  {-# INLINABLE b_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}-  x_ = const _x-  {-# INLINABLE x_ #-}-  y_ = const _y-  {-# INLINABLE y_ #-}---- | Affine SECP521R1 curve point.-type PA = WAPoint SECP521R1 Fq Fr---- | Affine SECP521R1 curve is a Weierstrass affine curve.-instance WACurve SECP521R1 Fq Fr where-  gA_ = gA-  {-# INLINABLE gA_ #-}---- | Jacobian SECP521R1 point.-type PJ = WJPoint SECP521R1 Fq Fr---- | Jacobian SECP521R1 curve is a Weierstrass Jacobian curve.-instance WJCurve SECP521R1 Fq Fr where-  gJ_ = gJ-  {-# INLINABLE gJ_ #-}---- | Projective SECP521R1 point.-type PP = WPPoint SECP521R1 Fq Fr---- | Projective SECP521R1 curve is a Weierstrass projective curve.-instance WPCurve SECP521R1 Fq Fr where-  gP_ = gP-  {-# INLINABLE gP_ #-}------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Coefficient @A@ of SECP521R1 curve.-_a :: Fq-_a = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc-{-# INLINABLE _a #-}---- | Coefficient @B@ of SECP521R1 curve.-_b :: Fq-_b = 0x51953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00-{-# INLINABLE _b #-}---- | Cofactor of SECP521R1 curve.-_h :: Integer-_h = 0x1-{-# INLINABLE _h #-}---- | Characteristic of SECP521R1 curve.-_q :: Integer-_q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-{-# INLINABLE _q #-}---- | Order of SECP521R1 curve.-_r :: Integer-_r = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409-{-# INLINABLE _r #-}---- | Coordinate @X@ of SECP521R1 curve.-_x :: Fq-_x = 0xc6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66-{-# INLINABLE _x #-}---- | Coordinate @Y@ of SECP521R1 curve.-_y :: Fq-_y = 0x11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650-{-# INLINABLE _y #-}---- | Generator of affine SECP521R1 curve.-gA :: PA-gA = A _x _y-{-# INLINABLE gA #-}---- | Generator of Jacobian SECP521R1 curve.-gJ :: PJ-gJ = J _x _y 1-{-# INLINABLE gJ #-}---- | Generator of projective SECP521R1 curve.-gP :: PP-gP = P _x _y 1-{-# INLINABLE gP #-}
+ src/Data/Curve.hs view
@@ -0,0 +1,179 @@+module Data.Curve+  (+  -- * Elliptic curves+    Curve(..)+  , mul+  , mul'+  -- ** Elliptic curve forms+  , Form(..)+  -- ** Elliptic curve coordinates+  , Coordinates(..)+  ) where++import Protolude++import Control.Monad.Random (MonadRandom, Random(..), getRandom)+import Data.Field.Galois (GaloisField, PrimeField, fromP)+import Data.Group (Group(..))+import GHC.Natural (Natural)+import Test.Tasty.QuickCheck (Arbitrary(..))+import Text.PrettyPrint.Leijen.Text (Pretty)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Elliptic curves.+class (GaloisField q, PrimeField r, Arbitrary (Point f c e q r),+       Eq (Point f c e q r), Generic (Point f c e q r), Group (Point f c e q r),+       NFData (Point f c e q r), Pretty (Point f c e q r), Random (Point f c e q r),+       Show (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where+  {-# MINIMAL add, char, cof, dbl, def, disc, frob, fromA, gen,+              id, inv, order, point, pointX, toA, yX #-}++  -- | Curve point.+  data family Point f c e q r :: *++  -- Parameters++  -- | Curve characteristic.+  char :: Point f c e q r -> Natural++  -- | Curve cofactor.+  cof :: Point f c e q r -> Natural++  -- | Curve well-defined.+  def :: Point f c e q r -> Bool++  -- | Curve discriminant.+  disc :: Point f c e q r -> q++  -- | Curve order.+  order :: Point f c e q r -> Natural++  -- Operations++  -- | Point addition.+  add :: Point f c e q r -> Point f c e q r -> Point f c e q r++  -- | Point doubling.+  dbl :: Point f c e q r -> Point f c e q r++  -- | Point identity.+  id :: Point f c e q r++  -- | Point inversion.+  inv :: Point f c e q r -> Point f c e q r++  -- Functions++  -- | Frobenius endomorphism.+  frob :: Point f c e q r -> Point f c e q r++  -- | Transform from affine coordinates.+  fromA :: Curve f 'Affine e q r => Point f 'Affine e q r -> Point f c e q r++  -- | Curve generator.+  gen :: Point f c e q r++  -- | Get point from X and Y coordinates.+  point :: q -> q -> Maybe (Point f c e q r)++  -- | Get point from X coordinate.+  pointX :: q -> Maybe (Point f c e q r)++  -- | Random point.+  rnd :: MonadRandom m => m (Point f c e q r)+  rnd = getRandom++  -- | Transform to affine coordinates.+  toA :: Curve f 'Affine e q r => Point f c e q r -> Point f 'Affine e q r++  -- | Get Y coordinate from X coordinate.+  yX :: Point f c e q r -> q -> Maybe q++-- | Point multiplication by field element.+mul :: Curve f c e q r => Point f c e q r -> r -> Point f c e q r+mul = (. fromP) . mul'+{-# INLINABLE mul #-}++-- | Point multiplication by integral element.+mul' :: (Curve f c e q r, Integral n) => Point f c e q r -> n -> Point f c e q r+mul' p n+  | n < 0     = inv $ mul' p (-n)+  | n == 0    = id+  | n == 1    = p+  | even n    = p'+  | otherwise = add p p'+  where+    p' = mul' (dbl p) (div n 2)+{-# INLINABLE mul' #-}++{-# SPECIALISE mul' ::+  Curve f c e q r => Point f c e q r -> Int -> Point f c e q r,+  Curve f c e q r => Point f c e q r -> Integer -> Point f c e q r,+  Curve f c e q r => Point f c e q r -> Natural -> Point f c e q r,+  Curve f c e q r => Point f c e q r -> Word -> Point f c e q r+  #-}++-- | Curve forms.+data Form = Binary+          | Edwards+          | Montgomery+          | Weierstrass++-- | Curve coordinates.+data Coordinates = Affine+                 | Jacobian+                 | Projective++-------------------------------------------------------------------------------+-- Instances+-------------------------------------------------------------------------------++-- Elliptic curve points are arbitrary.+instance Curve f c e q r => Arbitrary (Point f c e q r) where++  -- Arbitrary group element.+  arbitrary = mul gen <$> arbitrary+  {- Arbitrary curve point.+  arbitrary = suchThatMap arbitrary pointX+  -}+  {-# INLINABLE arbitrary #-}++-- Elliptic curve points are groups.+instance Curve f c e q r => Group (Point f c e q r) where++  invert = inv+  {-# INLINABLE invert #-}++  pow = mul'+  {-# INLINABLE pow #-}++-- Elliptic curve points are monoids.+instance Curve f c e q r => Monoid (Point f c e q r) where++  mempty = id+  {-# INLINABLE mempty #-}++-- Elliptic curve points are random.+instance Curve f c e q r => Random (Point f c e q r) where++  -- Random group element.+  random  = first (mul gen) . random+  {- Random curve point.+  random g = case pointX x of+    Just p -> (p, g')+    _      -> random g'+    where+      (x, g') = random g+  -}+  {-# INLINABLE random #-}++  randomR = panic "Curve.randomR: not implemented."++-- Elliptic curve points are semigroups.+instance Curve f c e q r => Semigroup (Point f c e q r) where++  p <> q = if p == q then dbl p else add p q+  {-# INLINABLE (<>) #-}
+ src/Data/Curve/Binary.hs view
@@ -0,0 +1,258 @@+{-# OPTIONS -fno-warn-orphans #-}++module Data.Curve.Binary+  ( module Data.Curve+  , Point(..)+  -- * Binary curves+  , BCurve(..)+  , BPoint+  -- ** Binary affine curves+  , BACurve(..)+  , BAPoint+  -- ** Binary projective curves+  , BPCurve(..)+  , BPPoint+  ) where++import Protolude++import Data.Field.Galois as F (GaloisField, PrimeField, frob, quad)+import GHC.Natural (Natural)+import Text.PrettyPrint.Leijen.Text (Pretty(..))++import Data.Curve++-------------------------------------------------------------------------------+-- Binary form+-------------------------------------------------------------------------------++-- | Binary points.+type BPoint = Point 'Binary++-- | Binary curves.+class (GaloisField q, PrimeField r, Curve 'Binary c e q r) => BCurve c e q r where+  {-# MINIMAL a_, b_, h_, p_, r_ #-}+  a_ :: BPoint c e q r -> q       -- ^ Coefficient @A@.+  b_ :: BPoint c e q r -> q       -- ^ Coefficient @B@.+  h_ :: BPoint c e q r -> Natural -- ^ Curve cofactor.+  p_ :: BPoint c e q r -> Natural -- ^ Curve polynomial.+  r_ :: BPoint c e q r -> Natural -- ^ Curve order.++-------------------------------------------------------------------------------+-- Affine coordinates+-------------------------------------------------------------------------------++-- | Binary affine points.+type BAPoint = BPoint 'Affine++-- | Binary affine curves @y^2 + xy = x^3 + Ax^2 + B@.+class BCurve 'Affine e q r => BACurve e q r where+  {-# MINIMAL gA_ #-}+  gA_ :: BAPoint e q r -- ^ Curve generator.++-- Binary affine curves are elliptic curves.+instance BACurve e q r => Curve 'Binary 'Affine e q r where++  data instance Point 'Binary 'Affine e q r = A q q -- ^ Affine point.+                                            | O     -- ^ Infinite point.+    deriving (Eq, Generic, NFData, Read, Show)++  add p O       = p+  add O q       = q+  add (A x1 y1) (A x2 y2)+    | xx == 0   = O+    | otherwise = A x3 y3+    where+      a  = a_ (witness :: BAPoint e q r)+      xx = x1 + x2+      yy = y1 + y2+      l  = yy / xx+      x3 = l * (l + 1) + xx + a+      y3 = l * (x1 + x3) + x3 + y1+  {-# INLINABLE add #-}++  char = const 2+  {-# INLINABLE char #-}++  cof = h_+  {-# INLINABLE cof #-}++  dbl O         = O+  dbl (A x y)+    | x == 0    = O+    | otherwise = A x' y'+    where+      a  = a_ (witness :: BAPoint e q r)+      l  = x + y / x+      l' = l + 1+      x' = l * l' + a+      y' = x * x + l' * x'+  {-# INLINABLE dbl #-}++  def O       = True+  def (A x y) = ((x + a) * x + y) * x + b + y * y == 0+    where+      a = a_ (witness :: BAPoint e q r)+      b = b_ (witness :: BAPoint e q r)+  {-# INLINABLE def #-}++  disc _ = b_ (witness :: BAPoint e q r)+  {-# INLINABLE disc #-}++  frob O       = O+  frob (A x y) = A (F.frob x) (F.frob y)+  {-# INLINABLE frob #-}++  fromA = identity+  {-# INLINABLE fromA #-}++  gen = gA_+  {-# INLINABLE gen #-}++  id = O+  {-# INLINABLE id #-}++  inv O       = O+  inv (A x y) = A x (x + y)+  {-# INLINABLE inv #-}++  order = r_+  {-# INLINABLE order #-}++  point x y = let p = A x y in if def p then Just p else Nothing+  {-# INLINABLE point #-}++  pointX x = A x <$> yX (witness :: BAPoint e q r) x+  {-# INLINABLE pointX #-}++  toA = identity+  {-# INLINABLE toA #-}++  yX _ x = quad 1 x ((x + a) * x * x + b)+    where+      a = a_ (witness :: BAPoint e q r)+      b = b_ (witness :: BAPoint e q r)+  {-# INLINABLE yX #-}++-- Binary affine points are pretty.+instance BACurve e q r => Pretty (BAPoint e q r) where++  pretty (A x y) = pretty (x, y)+  pretty O       = "O"++-------------------------------------------------------------------------------+-- Projective coordinates+-------------------------------------------------------------------------------++-- | Binary projective points.+type BPPoint = BPoint 'Projective++-- | Binary projective curves @y^2z + xyz = x^3 + Ax^2z + Bz@.+class BCurve 'Projective e q r => BPCurve e q r where+  {-# MINIMAL gP_ #-}+  gP_ :: BPPoint e q r -- ^ Curve generator.++-- Binary projective curves are elliptic curves.+instance BPCurve e q r => Curve 'Binary 'Projective e q r where++  data instance Point 'Binary 'Projective e q r = P q q q -- ^ Projective point.+    deriving (Generic, NFData, Read, Show)++  -- Addition formula add-2008-bl+  add  p           (P  _  _  0) = p+  add (P  _  _  0)  q           = q+  add (P x1 y1 z1) (P x2 y2 z2) = P x3 y3 z3+    where+      a'   = a_ (witness :: BPPoint e q r)+      y1z2 = y1 * z2+      x1z2 = x1 * z2+      a    = y1z2 + z1 * y2+      b    = x1z2 + z1 * x2+      ab   = a + b+      c    = b * b+      d    = z1 * z2+      e    = b * c+      f    = (a * ab + a' * c) * d + e+      x3   = b * f+      y3   = c * (a * x1z2 + b * y1z2) + ab * f+      z3   = e * d+  {-# INLINABLE add #-}++  char = const 2+  {-# INLINABLE char #-}++  cof = h_+  {-# INLINABLE cof #-}++  -- Doubling formula dbl-2008-bl+  dbl (P  _  _  0) = P  0  1  0+  dbl (P x1 y1 z1) = P x3 y3 z3+    where+      a' = a_ (witness :: BPPoint e q r)+      a  = x1 * x1+      b  = a + y1 * z1+      c  = x1 * z1+      bc = b + c+      d  = c * c+      e  = b * bc + a' * d+      x3 = c * e+      y3 = bc * e + a * a * c+      z3 = c * d+  {-# INLINABLE dbl #-}++  def (P x y z) = ((x + a * z) * x + yz) * x + y * yz + b * z * z * z == 0+    where+      a  = a_ (witness :: BPPoint e q r)+      b  = b_ (witness :: BPPoint e q r)+      yz = y * z+  {-# INLINABLE def #-}++  disc _ = b_ (witness :: BPPoint e q r)+  {-# INLINABLE disc #-}++  frob (P x y z) = P (F.frob x) (F.frob y) (F.frob z)+  {-# INLINABLE frob #-}++  fromA (A x y) = P x y 1+  fromA _       = P 0 1 0+  {-# INLINABLE fromA #-}++  gen = gP_+  {-# INLINABLE gen #-}++  id = P 0 1 0+  {-# INLINABLE id #-}++  inv (P x y z) = P x (x + y) z+  {-# INLINABLE inv #-}++  order = r_+  {-# INLINABLE order #-}++  point x y = let p = P x y 1 in if def p then Just p else Nothing+  {-# INLINABLE point #-}++  pointX x = flip (P x) 1 <$> yX (witness :: BPPoint e q r) x+  {-# INLINABLE pointX #-}++  toA (P _ _ 0) = O+  toA (P x y z) = A (x / z) (y / z)+  {-# INLINABLE toA #-}++  yX _ x = quad 1 x ((x + a) * x * x + b)+    where+      a = a_ (witness :: BPPoint e q r)+      b = b_ (witness :: BPPoint e q r)+  {-# INLINABLE yX #-}++-- Binary projective points are equatable.+instance BPCurve e q r => Eq (BPPoint e q r) where++  P x1 y1 z1 == P x2 y2 z2 = z1 == 0 && z2 == 0+    || x1 * z2 == x2 * z1 && y1 * z2 == y2 * z1+  {-# INLINABLE (==) #-}++-- Binary projective points are pretty.+instance BPCurve e q r => Pretty (BPPoint e q r) where++  pretty (P x y z) = pretty (x, y, z)
+ src/Data/Curve/Binary/SECT113R1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT113R1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT113R1 curve+  , module Data.Curve.Binary.SECT113R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT113R1 curve.+data SECT113R1++-- | Field of points of SECT113R1 curve.+type F2m = Binary P+type P = 0x20000000000000000000000000201++-- | Field of coefficients of SECT113R1 curve.+type Fr = Prime R+type R = 0x100000000000000d9ccec8a39e56f++-- SECT113R1 curve is a binary curve.+instance Curve 'Binary c SECT113R1 F2m Fr => BCurve c SECT113R1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT113R1 curve point.+type PA = BAPoint SECT113R1 F2m Fr++-- Affine SECT113R1 curve is a binary affine curve.+instance BACurve SECT113R1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT113R1 point.+type PP = BPPoint SECT113R1 F2m Fr++-- Projective SECT113R1 curve is a binary projective curve.+instance BPCurve SECT113R1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT113R1 curve.+_a :: F2m+_a = 0x3088250ca6e7c7fe649ce85820f7+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT113R1 curve.+_b :: F2m+_b = 0xe8bee4d3e2260744188be0e9c723+{-# INLINABLE _b #-}++-- | Cofactor of SECT113R1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT113R1 curve.+_p :: Natural+_p = 0x20000000000000000000000000201+{-# INLINABLE _p #-}++-- | Order of SECT113R1 curve.+_r :: Natural+_r = 0x100000000000000d9ccec8a39e56f+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT113R1 curve.+_x :: F2m+_x = 0x9d73616f35f4ab1407d73562c10f+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT113R1 curve.+_y :: F2m+_y = 0xa52830277958ee84d1315ed31886+{-# INLINABLE _y #-}++-- | Generator of affine SECT113R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT113R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT113R2.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT113R2+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT113R2 curve+  , module Data.Curve.Binary.SECT113R2+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT113R2 curve.+data SECT113R2++-- | Field of points of SECT113R2 curve.+type F2m = Binary P+type P = 0x20000000000000000000000000201++-- | Field of coefficients of SECT113R2 curve.+type Fr = Prime R+type R = 0x10000000000000108789b2496af93++-- SECT113R2 curve is a binary curve.+instance Curve 'Binary c SECT113R2 F2m Fr => BCurve c SECT113R2 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT113R2 curve point.+type PA = BAPoint SECT113R2 F2m Fr++-- Affine SECT113R2 curve is a binary affine curve.+instance BACurve SECT113R2 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT113R2 point.+type PP = BPPoint SECT113R2 F2m Fr++-- Projective SECT113R2 curve is a binary projective curve.+instance BPCurve SECT113R2 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT113R2 curve.+_a :: F2m+_a = 0x689918dbec7e5a0dd6dfc0aa55c7+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT113R2 curve.+_b :: F2m+_b = 0x95e9a9ec9b297bd4bf36e059184f+{-# INLINABLE _b #-}++-- | Cofactor of SECT113R2 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT113R2 curve.+_p :: Natural+_p = 0x20000000000000000000000000201+{-# INLINABLE _p #-}++-- | Order of SECT113R2 curve.+_r :: Natural+_r = 0x10000000000000108789b2496af93+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT113R2 curve.+_x :: F2m+_x = 0x1a57a6a7b26ca5ef52fcdb8164797+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT113R2 curve.+_y :: F2m+_y = 0xb3adc94ed1fe674c06e695baba1d+{-# INLINABLE _y #-}++-- | Generator of affine SECT113R2 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT113R2 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT131R1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT131R1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT131R1 curve+  , module Data.Curve.Binary.SECT131R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT131R1 curve.+data SECT131R1++-- | Field of points of SECT131R1 curve.+type F2m = Binary P+type P = 0x80000000000000000000000000000010d++-- | Field of coefficients of SECT131R1 curve.+type Fr = Prime R+type R = 0x400000000000000023123953a9464b54d++-- SECT131R1 curve is a binary curve.+instance Curve 'Binary c SECT131R1 F2m Fr => BCurve c SECT131R1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT131R1 curve point.+type PA = BAPoint SECT131R1 F2m Fr++-- Affine SECT131R1 curve is a binary affine curve.+instance BACurve SECT131R1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT131R1 point.+type PP = BPPoint SECT131R1 F2m Fr++-- Projective SECT131R1 curve is a binary projective curve.+instance BPCurve SECT131R1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT131R1 curve.+_a :: F2m+_a = 0x7a11b09a76b562144418ff3ff8c2570b8+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT131R1 curve.+_b :: F2m+_b = 0x217c05610884b63b9c6c7291678f9d341+{-# INLINABLE _b #-}++-- | Cofactor of SECT131R1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT131R1 curve.+_p :: Natural+_p = 0x80000000000000000000000000000010d+{-# INLINABLE _p #-}++-- | Order of SECT131R1 curve.+_r :: Natural+_r = 0x400000000000000023123953a9464b54d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT131R1 curve.+_x :: F2m+_x = 0x81baf91fdf9833c40f9c181343638399+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT131R1 curve.+_y :: F2m+_y = 0x78c6e7ea38c001f73c8134b1b4ef9e150+{-# INLINABLE _y #-}++-- | Generator of affine SECT131R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT131R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT131R2.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT131R2+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT131R2 curve+  , module Data.Curve.Binary.SECT131R2+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT131R2 curve.+data SECT131R2++-- | Field of points of SECT131R2 curve.+type F2m = Binary P+type P = 0x80000000000000000000000000000010d++-- | Field of coefficients of SECT131R2 curve.+type Fr = Prime R+type R = 0x400000000000000016954a233049ba98f++-- SECT131R2 curve is a binary curve.+instance Curve 'Binary c SECT131R2 F2m Fr => BCurve c SECT131R2 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT131R2 curve point.+type PA = BAPoint SECT131R2 F2m Fr++-- Affine SECT131R2 curve is a binary affine curve.+instance BACurve SECT131R2 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT131R2 point.+type PP = BPPoint SECT131R2 F2m Fr++-- Projective SECT131R2 curve is a binary projective curve.+instance BPCurve SECT131R2 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT131R2 curve.+_a :: F2m+_a = 0x3e5a88919d7cafcbf415f07c2176573b2+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT131R2 curve.+_b :: F2m+_b = 0x4b8266a46c55657ac734ce38f018f2192+{-# INLINABLE _b #-}++-- | Cofactor of SECT131R2 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT131R2 curve.+_p :: Natural+_p = 0x80000000000000000000000000000010d+{-# INLINABLE _p #-}++-- | Order of SECT131R2 curve.+_r :: Natural+_r = 0x400000000000000016954a233049ba98f+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT131R2 curve.+_x :: F2m+_x = 0x356dcd8f2f95031ad652d23951bb366a8+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT131R2 curve.+_y :: F2m+_y = 0x648f06d867940a5366d9e265de9eb240f+{-# INLINABLE _y #-}++-- | Generator of affine SECT131R2 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT131R2 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT163K1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT163K1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT163K1 curve+  , module Data.Curve.Binary.SECT163K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT163K1 curve.+data SECT163K1++-- | Field of points of SECT163K1 curve.+type F2m = Binary P+type P = 0x800000000000000000000000000000000000000c9++-- | Field of coefficients of SECT163K1 curve.+type Fr = Prime R+type R = 0x4000000000000000000020108a2e0cc0d99f8a5ef++-- SECT163K1 curve is a binary curve.+instance Curve 'Binary c SECT163K1 F2m Fr => BCurve c SECT163K1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT163K1 curve point.+type PA = BAPoint SECT163K1 F2m Fr++-- Affine SECT163K1 curve is a binary affine curve.+instance BACurve SECT163K1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT163K1 point.+type PP = BPPoint SECT163K1 F2m Fr++-- Projective SECT163K1 curve is a binary projective curve.+instance BPCurve SECT163K1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT163K1 curve.+_a :: F2m+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT163K1 curve.+_b :: F2m+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of SECT163K1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT163K1 curve.+_p :: Natural+_p = 0x800000000000000000000000000000000000000c9+{-# INLINABLE _p #-}++-- | Order of SECT163K1 curve.+_r :: Natural+_r = 0x4000000000000000000020108a2e0cc0d99f8a5ef+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT163K1 curve.+_x :: F2m+_x = 0x2fe13c0537bbc11acaa07d793de4e6d5e5c94eee8+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT163K1 curve.+_y :: F2m+_y = 0x289070fb05d38ff58321f2e800536d538ccdaa3d9+{-# INLINABLE _y #-}++-- | Generator of affine SECT163K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT163K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT163R1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT163R1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT163R1 curve+  , module Data.Curve.Binary.SECT163R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT163R1 curve.+data SECT163R1++-- | Field of points of SECT163R1 curve.+type F2m = Binary P+type P = 0x800000000000000000000000000000000000000c9++-- | Field of coefficients of SECT163R1 curve.+type Fr = Prime R+type R = 0x3ffffffffffffffffffff48aab689c29ca710279b++-- SECT163R1 curve is a binary curve.+instance Curve 'Binary c SECT163R1 F2m Fr => BCurve c SECT163R1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT163R1 curve point.+type PA = BAPoint SECT163R1 F2m Fr++-- Affine SECT163R1 curve is a binary affine curve.+instance BACurve SECT163R1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT163R1 point.+type PP = BPPoint SECT163R1 F2m Fr++-- Projective SECT163R1 curve is a binary projective curve.+instance BPCurve SECT163R1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT163R1 curve.+_a :: F2m+_a = 0x7b6882caaefa84f9554ff8428bd88e246d2782ae2+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT163R1 curve.+_b :: F2m+_b = 0x713612dcddcb40aab946bda29ca91f73af958afd9+{-# INLINABLE _b #-}++-- | Cofactor of SECT163R1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT163R1 curve.+_p :: Natural+_p = 0x800000000000000000000000000000000000000c9+{-# INLINABLE _p #-}++-- | Order of SECT163R1 curve.+_r :: Natural+_r = 0x3ffffffffffffffffffff48aab689c29ca710279b+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT163R1 curve.+_x :: F2m+_x = 0x369979697ab43897789566789567f787a7876a654+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT163R1 curve.+_y :: F2m+_y = 0x435edb42efafb2989d51fefce3c80988f41ff883+{-# INLINABLE _y #-}++-- | Generator of affine SECT163R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT163R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT163R2.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT163R2+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT163R2 curve+  , module Data.Curve.Binary.SECT163R2+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT163R2 curve.+data SECT163R2++-- | Field of points of SECT163R2 curve.+type F2m = Binary P+type P = 0x800000000000000000000000000000000000000c9++-- | Field of coefficients of SECT163R2 curve.+type Fr = Prime R+type R = 0x40000000000000000000292fe77e70c12a4234c33++-- SECT163R2 curve is a binary curve.+instance Curve 'Binary c SECT163R2 F2m Fr => BCurve c SECT163R2 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT163R2 curve point.+type PA = BAPoint SECT163R2 F2m Fr++-- Affine SECT163R2 curve is a binary affine curve.+instance BACurve SECT163R2 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT163R2 point.+type PP = BPPoint SECT163R2 F2m Fr++-- Projective SECT163R2 curve is a binary projective curve.+instance BPCurve SECT163R2 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT163R2 curve.+_a :: F2m+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT163R2 curve.+_b :: F2m+_b = 0x20a601907b8c953ca1481eb10512f78744a3205fd+{-# INLINABLE _b #-}++-- | Cofactor of SECT163R2 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT163R2 curve.+_p :: Natural+_p = 0x800000000000000000000000000000000000000c9+{-# INLINABLE _p #-}++-- | Order of SECT163R2 curve.+_r :: Natural+_r = 0x40000000000000000000292fe77e70c12a4234c33+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT163R2 curve.+_x :: F2m+_x = 0x3f0eba16286a2d57ea0991168d4994637e8343e36+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT163R2 curve.+_y :: F2m+_y = 0xd51fbc6c71a0094fa2cdd545b11c5c0c797324f1+{-# INLINABLE _y #-}++-- | Generator of affine SECT163R2 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT163R2 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT193R1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT193R1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT193R1 curve+  , module Data.Curve.Binary.SECT193R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT193R1 curve.+data SECT193R1++-- | Field of points of SECT193R1 curve.+type F2m = Binary P+type P = 0x2000000000000000000000000000000000000000000008001++-- | Field of coefficients of SECT193R1 curve.+type Fr = Prime R+type R = 0x1000000000000000000000000c7f34a778f443acc920eba49++-- SECT193R1 curve is a binary curve.+instance Curve 'Binary c SECT193R1 F2m Fr => BCurve c SECT193R1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT193R1 curve point.+type PA = BAPoint SECT193R1 F2m Fr++-- Affine SECT193R1 curve is a binary affine curve.+instance BACurve SECT193R1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT193R1 point.+type PP = BPPoint SECT193R1 F2m Fr++-- Projective SECT193R1 curve is a binary projective curve.+instance BPCurve SECT193R1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT193R1 curve.+_a :: F2m+_a = 0x17858feb7a98975169e171f77b4087de098ac8a911df7b01+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT193R1 curve.+_b :: F2m+_b = 0xfdfb49bfe6c3a89facadaa7a1e5bbc7cc1c2e5d831478814+{-# INLINABLE _b #-}++-- | Cofactor of SECT193R1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT193R1 curve.+_p :: Natural+_p = 0x2000000000000000000000000000000000000000000008001+{-# INLINABLE _p #-}++-- | Order of SECT193R1 curve.+_r :: Natural+_r = 0x1000000000000000000000000c7f34a778f443acc920eba49+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT193R1 curve.+_x :: F2m+_x = 0x1f481bc5f0ff84a74ad6cdf6fdef4bf6179625372d8c0c5e1+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT193R1 curve.+_y :: F2m+_y = 0x25e399f2903712ccf3ea9e3a1ad17fb0b3201b6af7ce1b05+{-# INLINABLE _y #-}++-- | Generator of affine SECT193R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT193R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT193R2.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT193R2+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT193R2 curve+  , module Data.Curve.Binary.SECT193R2+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT193R2 curve.+data SECT193R2++-- | Field of points of SECT193R2 curve.+type F2m = Binary P+type P = 0x2000000000000000000000000000000000000000000008001++-- | Field of coefficients of SECT193R2 curve.+type Fr = Prime R+type R = 0x10000000000000000000000015aab561b005413ccd4ee99d5++-- SECT193R2 curve is a binary curve.+instance Curve 'Binary c SECT193R2 F2m Fr => BCurve c SECT193R2 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT193R2 curve point.+type PA = BAPoint SECT193R2 F2m Fr++-- Affine SECT193R2 curve is a binary affine curve.+instance BACurve SECT193R2 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT193R2 point.+type PP = BPPoint SECT193R2 F2m Fr++-- Projective SECT193R2 curve is a binary projective curve.+instance BPCurve SECT193R2 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT193R2 curve.+_a :: F2m+_a = 0x163f35a5137c2ce3ea6ed8667190b0bc43ecd69977702709b+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT193R2 curve.+_b :: F2m+_b = 0xc9bb9e8927d4d64c377e2ab2856a5b16e3efb7f61d4316ae+{-# INLINABLE _b #-}++-- | Cofactor of SECT193R2 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT193R2 curve.+_p :: Natural+_p = 0x2000000000000000000000000000000000000000000008001+{-# INLINABLE _p #-}++-- | Order of SECT193R2 curve.+_r :: Natural+_r = 0x10000000000000000000000015aab561b005413ccd4ee99d5+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT193R2 curve.+_x :: F2m+_x = 0xd9b67d192e0367c803f39e1a7e82ca14a651350aae617e8f+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT193R2 curve.+_y :: F2m+_y = 0x1ce94335607c304ac29e7defbd9ca01f596f927224cdecf6c+{-# INLINABLE _y #-}++-- | Generator of affine SECT193R2 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT193R2 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT233K1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT233K1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT233K1 curve+  , module Data.Curve.Binary.SECT233K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT233K1 curve.+data SECT233K1++-- | Field of points of SECT233K1 curve.+type F2m = Binary P+type P = 0x20000000000000000000000000000000000000004000000000000000001++-- | Field of coefficients of SECT233K1 curve.+type Fr = Prime R+type R = 0x8000000000000000000000000000069d5bb915bcd46efb1ad5f173abdf++-- SECT233K1 curve is a binary curve.+instance Curve 'Binary c SECT233K1 F2m Fr => BCurve c SECT233K1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT233K1 curve point.+type PA = BAPoint SECT233K1 F2m Fr++-- Affine SECT233K1 curve is a binary affine curve.+instance BACurve SECT233K1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT233K1 point.+type PP = BPPoint SECT233K1 F2m Fr++-- Projective SECT233K1 curve is a binary projective curve.+instance BPCurve SECT233K1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT233K1 curve.+_a :: F2m+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT233K1 curve.+_b :: F2m+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of SECT233K1 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Polynomial of SECT233K1 curve.+_p :: Natural+_p = 0x20000000000000000000000000000000000000004000000000000000001+{-# INLINABLE _p #-}++-- | Order of SECT233K1 curve.+_r :: Natural+_r = 0x8000000000000000000000000000069d5bb915bcd46efb1ad5f173abdf+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT233K1 curve.+_x :: F2m+_x = 0x17232ba853a7e731af129f22ff4149563a419c26bf50a4c9d6eefad6126+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT233K1 curve.+_y :: F2m+_y = 0x1db537dece819b7f70f555a67c427a8cd9bf18aeb9b56e0c11056fae6a3+{-# INLINABLE _y #-}++-- | Generator of affine SECT233K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT233K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT233R1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT233R1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT233R1 curve+  , module Data.Curve.Binary.SECT233R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT233R1 curve.+data SECT233R1++-- | Field of points of SECT233R1 curve.+type F2m = Binary P+type P = 0x20000000000000000000000000000000000000004000000000000000001++-- | Field of coefficients of SECT233R1 curve.+type Fr = Prime R+type R = 0x1000000000000000000000000000013e974e72f8a6922031d2603cfe0d7++-- SECT233R1 curve is a binary curve.+instance Curve 'Binary c SECT233R1 F2m Fr => BCurve c SECT233R1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT233R1 curve point.+type PA = BAPoint SECT233R1 F2m Fr++-- Affine SECT233R1 curve is a binary affine curve.+instance BACurve SECT233R1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT233R1 point.+type PP = BPPoint SECT233R1 F2m Fr++-- Projective SECT233R1 curve is a binary projective curve.+instance BPCurve SECT233R1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT233R1 curve.+_a :: F2m+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT233R1 curve.+_b :: F2m+_b = 0x66647ede6c332c7f8c0923bb58213b333b20e9ce4281fe115f7d8f90ad+{-# INLINABLE _b #-}++-- | Cofactor of SECT233R1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT233R1 curve.+_p :: Natural+_p = 0x20000000000000000000000000000000000000004000000000000000001+{-# INLINABLE _p #-}++-- | Order of SECT233R1 curve.+_r :: Natural+_r = 0x1000000000000000000000000000013e974e72f8a6922031d2603cfe0d7+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT233R1 curve.+_x :: F2m+_x = 0xfac9dfcbac8313bb2139f1bb755fef65bc391f8b36f8f8eb7371fd558b+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT233R1 curve.+_y :: F2m+_y = 0x1006a08a41903350678e58528bebf8a0beff867a7ca36716f7e01f81052+{-# INLINABLE _y #-}++-- | Generator of affine SECT233R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT233R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT239K1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT239K1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT239K1 curve+  , module Data.Curve.Binary.SECT239K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT239K1 curve.+data SECT239K1++-- | Field of points of SECT239K1 curve.+type F2m = Binary P+type P = 0x800000000000000000004000000000000000000000000000000000000001++-- | Field of coefficients of SECT239K1 curve.+type Fr = Prime R+type R = 0x2000000000000000000000000000005a79fec67cb6e91f1c1da800e478a5++-- SECT239K1 curve is a binary curve.+instance Curve 'Binary c SECT239K1 F2m Fr => BCurve c SECT239K1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT239K1 curve point.+type PA = BAPoint SECT239K1 F2m Fr++-- Affine SECT239K1 curve is a binary affine curve.+instance BACurve SECT239K1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT239K1 point.+type PP = BPPoint SECT239K1 F2m Fr++-- Projective SECT239K1 curve is a binary projective curve.+instance BPCurve SECT239K1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT239K1 curve.+_a :: F2m+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT239K1 curve.+_b :: F2m+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of SECT239K1 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Polynomial of SECT239K1 curve.+_p :: Natural+_p = 0x800000000000000000004000000000000000000000000000000000000001+{-# INLINABLE _p #-}++-- | Order of SECT239K1 curve.+_r :: Natural+_r = 0x2000000000000000000000000000005a79fec67cb6e91f1c1da800e478a5+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT239K1 curve.+_x :: F2m+_x = 0x29a0b6a887a983e9730988a68727a8b2d126c44cc2cc7b2a6555193035dc+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT239K1 curve.+_y :: F2m+_y = 0x76310804f12e549bdb011c103089e73510acb275fc312a5dc6b76553f0ca+{-# INLINABLE _y #-}++-- | Generator of affine SECT239K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT239K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT283K1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT283K1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT283K1 curve+  , module Data.Curve.Binary.SECT283K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT283K1 curve.+data SECT283K1++-- | Field of points of SECT283K1 curve.+type F2m = Binary P+type P = 0x800000000000000000000000000000000000000000000000000000000000000000010a1++-- | Field of coefficients of SECT283K1 curve.+type Fr = Prime R+type R = 0x1ffffffffffffffffffffffffffffffffffe9ae2ed07577265dff7f94451e061e163c61++-- SECT283K1 curve is a binary curve.+instance Curve 'Binary c SECT283K1 F2m Fr => BCurve c SECT283K1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT283K1 curve point.+type PA = BAPoint SECT283K1 F2m Fr++-- Affine SECT283K1 curve is a binary affine curve.+instance BACurve SECT283K1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT283K1 point.+type PP = BPPoint SECT283K1 F2m Fr++-- Projective SECT283K1 curve is a binary projective curve.+instance BPCurve SECT283K1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT283K1 curve.+_a :: F2m+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT283K1 curve.+_b :: F2m+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of SECT283K1 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Polynomial of SECT283K1 curve.+_p :: Natural+_p = 0x800000000000000000000000000000000000000000000000000000000000000000010a1+{-# INLINABLE _p #-}++-- | Order of SECT283K1 curve.+_r :: Natural+_r = 0x1ffffffffffffffffffffffffffffffffffe9ae2ed07577265dff7f94451e061e163c61+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT283K1 curve.+_x :: F2m+_x = 0x503213f78ca44883f1a3b8162f188e553cd265f23c1567a16876913b0c2ac2458492836+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT283K1 curve.+_y :: F2m+_y = 0x1ccda380f1c9e318d90f95d07e5426fe87e45c0e8184698e45962364e34116177dd2259+{-# INLINABLE _y #-}++-- | Generator of affine SECT283K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT283K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT283R1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT283R1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT283R1 curve+  , module Data.Curve.Binary.SECT283R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT283R1 curve.+data SECT283R1++-- | Field of points of SECT283R1 curve.+type F2m = Binary P+type P = 0x800000000000000000000000000000000000000000000000000000000000000000010a1++-- | Field of coefficients of SECT283R1 curve.+type Fr = Prime R+type R = 0x3ffffffffffffffffffffffffffffffffffef90399660fc938a90165b042a7cefadb307++-- SECT283R1 curve is a binary curve.+instance Curve 'Binary c SECT283R1 F2m Fr => BCurve c SECT283R1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT283R1 curve point.+type PA = BAPoint SECT283R1 F2m Fr++-- Affine SECT283R1 curve is a binary affine curve.+instance BACurve SECT283R1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT283R1 point.+type PP = BPPoint SECT283R1 F2m Fr++-- Projective SECT283R1 curve is a binary projective curve.+instance BPCurve SECT283R1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT283R1 curve.+_a :: F2m+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT283R1 curve.+_b :: F2m+_b = 0x27b680ac8b8596da5a4af8a19a0303fca97fd7645309fa2a581485af6263e313b79a2f5+{-# INLINABLE _b #-}++-- | Cofactor of SECT283R1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT283R1 curve.+_p :: Natural+_p = 0x800000000000000000000000000000000000000000000000000000000000000000010a1+{-# INLINABLE _p #-}++-- | Order of SECT283R1 curve.+_r :: Natural+_r = 0x3ffffffffffffffffffffffffffffffffffef90399660fc938a90165b042a7cefadb307+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT283R1 curve.+_x :: F2m+_x = 0x5f939258db7dd90e1934f8c70b0dfec2eed25b8557eac9c80e2e198f8cdbecd86b12053+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT283R1 curve.+_y :: F2m+_y = 0x3676854fe24141cb98fe6d4b20d02b4516ff702350eddb0826779c813f0df45be8112f4+{-# INLINABLE _y #-}++-- | Generator of affine SECT283R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT283R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT409K1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT409K1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT409K1 curve+  , module Data.Curve.Binary.SECT409K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT409K1 curve.+data SECT409K1++-- | Field of points of SECT409K1 curve.+type F2m = Binary P+type P = 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001++-- | Field of coefficients of SECT409K1 curve.+type Fr = Prime R+type R = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffe5f83b2d4ea20400ec4557d5ed3e3e7ca5b4b5c83b8e01e5fcf++-- SECT409K1 curve is a binary curve.+instance Curve 'Binary c SECT409K1 F2m Fr => BCurve c SECT409K1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT409K1 curve point.+type PA = BAPoint SECT409K1 F2m Fr++-- Affine SECT409K1 curve is a binary affine curve.+instance BACurve SECT409K1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT409K1 point.+type PP = BPPoint SECT409K1 F2m Fr++-- Projective SECT409K1 curve is a binary projective curve.+instance BPCurve SECT409K1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT409K1 curve.+_a :: F2m+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT409K1 curve.+_b :: F2m+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of SECT409K1 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Polynomial of SECT409K1 curve.+_p :: Natural+_p = 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001+{-# INLINABLE _p #-}++-- | Order of SECT409K1 curve.+_r :: Natural+_r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffe5f83b2d4ea20400ec4557d5ed3e3e7ca5b4b5c83b8e01e5fcf+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT409K1 curve.+_x :: F2m+_x = 0x60f05f658f49c1ad3ab1890f7184210efd0987e307c84c27accfb8f9f67cc2c460189eb5aaaa62ee222eb1b35540cfe9023746+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT409K1 curve.+_y :: F2m+_y = 0x1e369050b7c4e42acba1dacbf04299c3460782f918ea427e6325165e9ea10e3da5f6c42e9c55215aa9ca27a5863ec48d8e0286b+{-# INLINABLE _y #-}++-- | Generator of affine SECT409K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT409K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT409R1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT409R1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT409R1 curve+  , module Data.Curve.Binary.SECT409R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT409R1 curve.+data SECT409R1++-- | Field of points of SECT409R1 curve.+type F2m = Binary P+type P = 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001++-- | Field of coefficients of SECT409R1 curve.+type Fr = Prime R+type R = 0x10000000000000000000000000000000000000000000000000001e2aad6a612f33307be5fa47c3c9e052f838164cd37d9a21173++-- SECT409R1 curve is a binary curve.+instance Curve 'Binary c SECT409R1 F2m Fr => BCurve c SECT409R1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT409R1 curve point.+type PA = BAPoint SECT409R1 F2m Fr++-- Affine SECT409R1 curve is a binary affine curve.+instance BACurve SECT409R1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT409R1 point.+type PP = BPPoint SECT409R1 F2m Fr++-- Projective SECT409R1 curve is a binary projective curve.+instance BPCurve SECT409R1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT409R1 curve.+_a :: F2m+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT409R1 curve.+_b :: F2m+_b = 0x21a5c2c8ee9feb5c4b9a753b7b476b7fd6422ef1f3dd674761fa99d6ac27c8a9a197b272822f6cd57a55aa4f50ae317b13545f+{-# INLINABLE _b #-}++-- | Cofactor of SECT409R1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT409R1 curve.+_p :: Natural+_p = 0x2000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000001+{-# INLINABLE _p #-}++-- | Order of SECT409R1 curve.+_r :: Natural+_r = 0x10000000000000000000000000000000000000000000000000001e2aad6a612f33307be5fa47c3c9e052f838164cd37d9a21173+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT409R1 curve.+_x :: F2m+_x = 0x15d4860d088ddb3496b0c6064756260441cde4af1771d4db01ffe5b34e59703dc255a868a1180515603aeab60794e54bb7996a7+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT409R1 curve.+_y :: F2m+_y = 0x61b1cfab6be5f32bbfa78324ed106a7636b9c5a7bd198d0158aa4f5488d08f38514f1fdf4b4f40d2181b3681c364ba0273c706+{-# INLINABLE _y #-}++-- | Generator of affine SECT409R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT409R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT571K1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT571K1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT571K1 curve+  , module Data.Curve.Binary.SECT571K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT571K1 curve.+data SECT571K1++-- | Field of points of SECT571K1 curve.+type F2m = Binary P+type P = 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425++-- | Field of coefficients of SECT571K1 curve.+type Fr = Prime R+type R = 0x20000000000000000000000000000000000000000000000000000000000000000000000131850e1f19a63e4b391a8db917f4138b630d84be5d639381e91deb45cfe778f637c1001++-- SECT571K1 curve is a binary curve.+instance Curve 'Binary c SECT571K1 F2m Fr => BCurve c SECT571K1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT571K1 curve point.+type PA = BAPoint SECT571K1 F2m Fr++-- Affine SECT571K1 curve is a binary affine curve.+instance BACurve SECT571K1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT571K1 point.+type PP = BPPoint SECT571K1 F2m Fr++-- Projective SECT571K1 curve is a binary projective curve.+instance BPCurve SECT571K1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT571K1 curve.+_a :: F2m+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT571K1 curve.+_b :: F2m+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of SECT571K1 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Polynomial of SECT571K1 curve.+_p :: Natural+_p = 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425+{-# INLINABLE _p #-}++-- | Order of SECT571K1 curve.+_r :: Natural+_r = 0x20000000000000000000000000000000000000000000000000000000000000000000000131850e1f19a63e4b391a8db917f4138b630d84be5d639381e91deb45cfe778f637c1001+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT571K1 curve.+_x :: F2m+_x = 0x26eb7a859923fbc82189631f8103fe4ac9ca2970012d5d46024804801841ca44370958493b205e647da304db4ceb08cbbd1ba39494776fb988b47174dca88c7e2945283a01c8972+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT571K1 curve.+_y :: F2m+_y = 0x349dc807f4fbf374f4aeade3bca95314dd58cec9f307a54ffc61efc006d8a2c9d4979c0ac44aea74fbebbb9f772aedcb620b01a7ba7af1b320430c8591984f601cd4c143ef1c7a3+{-# INLINABLE _y #-}++-- | Generator of affine SECT571K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT571K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Binary/SECT571R1.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Binary.SECT571R1+  ( module Data.Curve.Binary+  , Point(..)+  -- * SECT571R1 curve+  , module Data.Curve.Binary.SECT571R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Binary++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECT571R1 curve.+data SECT571R1++-- | Field of points of SECT571R1 curve.+type F2m = Binary P+type P = 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425++-- | Field of coefficients of SECT571R1 curve.+type Fr = Prime R+type R = 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47++-- SECT571R1 curve is a binary curve.+instance Curve 'Binary c SECT571R1 F2m Fr => BCurve c SECT571R1 F2m Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  p_ = const _p+  {-# INLINABLE p_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECT571R1 curve point.+type PA = BAPoint SECT571R1 F2m Fr++-- Affine SECT571R1 curve is a binary affine curve.+instance BACurve SECT571R1 F2m Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective SECT571R1 point.+type PP = BPPoint SECT571R1 F2m Fr++-- Projective SECT571R1 curve is a binary projective curve.+instance BPCurve SECT571R1 F2m Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECT571R1 curve.+_a :: F2m+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECT571R1 curve.+_b :: F2m+_b = 0x2f40e7e2221f295de297117b7f3d62f5c6a97ffcb8ceff1cd6ba8ce4a9a18ad84ffabbd8efa59332be7ad6756a66e294afd185a78ff12aa520e4de739baca0c7ffeff7f2955727a+{-# INLINABLE _b #-}++-- | Cofactor of SECT571R1 curve.+_h :: Natural+_h = 0x2+{-# INLINABLE _h #-}++-- | Polynomial of SECT571R1 curve.+_p :: Natural+_p = 0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425+{-# INLINABLE _p #-}++-- | Order of SECT571R1 curve.+_r :: Natural+_r = 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECT571R1 curve.+_x :: F2m+_x = 0x303001d34b856296c16c0d40d3cd7750a93d1d2955fa80aa5f40fc8db7b2abdbde53950f4c0d293cdd711a35b67fb1499ae60038614f1394abfa3b4c850d927e1e7769c8eec2d19+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECT571R1 curve.+_y :: F2m+_y = 0x37bf27342da639b6dccfffeb73d69d78c6c27a6009cbbca1980f8533921e8a684423e43bab08a576291af8f461bb2a8b3531d2f0485c19b16e2f1516e23dd3c1a4827af1b8ac15b+{-# INLINABLE _y #-}++-- | Generator of affine SECT571R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective SECT571R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards.hs view
@@ -0,0 +1,249 @@+{-# OPTIONS -fno-warn-orphans #-}++module Data.Curve.Edwards+  ( module Data.Curve+  , Point(..)+  -- * Edwards curves+  , ECurve(..)+  , EPoint+  -- ** Edwards affine curves+  , EACurve(..)+  , EAPoint+  -- ** Edwards projective curves+  , EPCurve(..)+  , EPPoint+  ) where++import Protolude++import Data.Field.Galois as F (GaloisField, PrimeField, frob, sr)+import GHC.Natural (Natural)+import Text.PrettyPrint.Leijen.Text (Pretty(..))++import Data.Curve++-------------------------------------------------------------------------------+-- Edwards form+-------------------------------------------------------------------------------++-- | Edwards points.+type EPoint = Point 'Edwards++-- | Edwards curves.+class (GaloisField q, PrimeField r, Curve 'Edwards c e q r) => ECurve c e q r where+  {-# MINIMAL a_, d_, h_, q_, r_ #-}+  a_ :: EPoint c e q r -> q       -- ^ Coefficient @A@.+  d_ :: EPoint c e q r -> q       -- ^ Coefficient @D@.+  h_ :: EPoint c e q r -> Natural -- ^ Curve cofactor.+  q_ :: EPoint c e q r -> Natural -- ^ Curve characteristic.+  r_ :: EPoint c e q r -> Natural -- ^ Curve order.++-------------------------------------------------------------------------------+-- Affine coordinates+-------------------------------------------------------------------------------++-- | Edwards affine curves.+type EAPoint = EPoint 'Affine++-- | Edwards affine curves @Ax^2 + y^2 = 1 + Dx^2y^2@.+class ECurve 'Affine e q r => EACurve e q r where+  {-# MINIMAL gA_ #-}+  gA_ :: EAPoint e q r -- ^ Curve generator.++-- Edwards affine curves are elliptic curves.+instance EACurve e q r => Curve 'Edwards 'Affine e q r where++  data instance Point 'Edwards 'Affine e q r = A q q -- ^ Affine point.+    deriving (Eq, Generic, NFData, Read, Show)++  add (A x1 y1) (A x2 y2) = A x3 y3+    where+      a    = a_ (witness :: EAPoint e q r)+      d    = d_ (witness :: EAPoint e q r)+      x1x2 = x1 * x2+      y1y2 = y1 * y2+      x1y2 = x1 * y2+      x2y1 = x2 * y1+      dxy  = d * x1x2 * y1y2+      x3   = (x1y2 + x2y1) / (1 + dxy)+      y3   = (y1y2 - a * x1x2) / (1 - dxy)+  {-# INLINABLE add #-}++  char = q_+  {-# INLINABLE char #-}++  cof = h_+  {-# INLINABLE cof #-}++  dbl = join add+  {-# INLINABLE dbl #-}++  def (A x y) = a * xx + yy == 1 + d * xx * yy+    where+      a  = a_ (witness :: EAPoint e q r)+      d  = d_ (witness :: EAPoint e q r)+      xx = x * x+      yy = y * y+  {-# INLINABLE def #-}++  disc _ = d * (1 - d)+    where+      d = d_ (witness :: EAPoint e q r)+  {-# INLINABLE disc #-}++  frob (A x y) = A (F.frob x) (F.frob y)+  {-# INLINABLE frob #-}++  fromA = identity+  {-# INLINABLE fromA #-}++  gen = gA_+  {-# INLINABLE gen #-}++  id = A 0 1+  {-# INLINABLE id #-}++  inv (A x y) = A (-x) y+  {-# INLINABLE inv #-}++  order = r_+  {-# INLINABLE order #-}++  point x y = let p = A x y in if def p then Just p else Nothing+  {-# INLINABLE point #-}++  pointX x = A x <$> yX (witness :: EAPoint e q r) x+  {-# INLINABLE pointX #-}++  toA = identity+  {-# INLINABLE toA #-}++  yX _ x = sr ((1 - a * xx) / (1 - d * xx))+    where+      a  = a_ (witness :: EAPoint e q r)+      d  = d_ (witness :: EAPoint e q r)+      xx = x * x+  {-# INLINABLE yX #-}++-- Edwards affine points are pretty.+instance EACurve e q r => Pretty (EAPoint e q r) where++  pretty (A x y) = pretty (x, y)++-------------------------------------------------------------------------------+-- Projective coordinates+-------------------------------------------------------------------------------++-- | Edwards projective curves.+type EPPoint = EPoint 'Projective++-- | Edwards projective curves @Ax^2z^2 + y^2z^2 = z^4 + Dx^2y^2@.+class ECurve 'Projective e q r => EPCurve e q r where+  {-# MINIMAL gP_ #-}+  gP_ :: EPPoint e q r -- ^ Curve generator.++-- Edwards projective curves are elliptic curves.+instance EPCurve e q r => Curve 'Edwards 'Projective e q r where++  data instance Point 'Edwards 'Projective e q r = P q q q -- ^ Projective point.+    deriving (Generic, NFData, Read, Show)++  -- Addition formula add-2008-bbjlp+  add (P x1 y1 z1) (P x2 y2 z2) = P x3 y3 z3+    where+      a' = a_ (witness :: EPPoint e q r)+      d' = d_ (witness :: EPPoint e q r)+      a  = z1 * z2+      b  = a * a+      c  = x1 * x2+      d  = y1 * y2+      e  = d' * c * d+      f  = b - e+      g  = b + e+      x3 = a * f * ((x1 + y1) * (x2 + y2) - c - d)+      y3 = a * g * (d - a' * c)+      z3 = f * g+  {-# INLINABLE add #-}++  char = q_+  {-# INLINABLE char #-}++  cof = h_+  {-# INLINABLE cof #-}++  -- Doubling formula dbl-2008-bbjlp+  dbl (P x1 y1 z1) = P x3 y3 z3+    where+      a  = a_ (witness :: EPPoint e q r)+      xy = x1 + y1+      b  = xy * xy+      c  = x1 * x1+      d  = y1 * y1+      e  = a * c+      f  = e + d+      h  = z1 * z1+      j  = f - 2 * h+      x3 = (b - c - d) * j+      y3 = f * (e - d)+      z3 = f * j+  {-# INLINABLE dbl #-}++  def (P x y z) = (a * xx + yy - zz) * zz == d * xx * yy+    where+      a  = a_ (witness :: EPPoint e q r)+      d  = d_ (witness :: EPPoint e q r)+      xx = x * x+      yy = y * y+      zz = z * z+  {-# INLINABLE def #-}++  disc _ = d * (1 - d)+    where+      d = d_ (witness :: EPPoint e q r)+  {-# INLINABLE disc #-}++  frob (P x y z) = P (F.frob x) (F.frob y) (F.frob z)+  {-# INLINABLE frob #-}++  fromA (A x y) = P x y 1+  {-# INLINABLE fromA #-}++  gen = gP_+  {-# INLINABLE gen #-}++  id = P 0 1 1+  {-# INLINABLE id #-}++  inv (P x y z) = P (-x) y z+  {-# INLINABLE inv #-}++  order = r_+  {-# INLINABLE order #-}++  point x y = let p = P x y 1 in if def p then Just p else Nothing+  {-# INLINABLE point #-}++  pointX x = flip (P x) 1 <$> yX (witness :: EPPoint e q r) x+  {-# INLINABLE pointX #-}++  toA (P x y z) = A (x / z) (y / z)+  {-# INLINABLE toA #-}++  yX _ x = sr ((1 - a * xx) / (1 - d * xx))+    where+      a  = a_ (witness :: EPPoint e q r)+      d  = d_ (witness :: EPPoint e q r)+      xx = x * x+  {-# INLINABLE yX #-}++-- Edwards projective points are equatable.+instance EPCurve e q r => Eq (EPPoint e q r) where++  P x1 y1 z1 == P x2 y2 z2 = z1 == 0 && z2 == 0+    || x1 * z2 == x2 * z1 && y1 * z2 == y2 * z1+  {-# INLINABLE (==) #-}++-- Edwards projective points are pretty.+instance EPCurve e q r => Pretty (EPPoint e q r) where++  pretty (P x y z) = pretty (x, y, z)
+ src/Data/Curve/Edwards/Curve1174.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.Curve1174+  ( module Data.Curve.Edwards+  , Point(..)+  -- * Curve1174 curve+  , module Data.Curve.Edwards.Curve1174+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Curve1174 curve.+data Curve1174++-- | Field of points of Curve1174 curve.+type Fq = Prime Q+type Q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7++-- | Field of coefficients of Curve1174 curve.+type Fr = Prime R+type R = 0x1fffffffffffffffffffffffffffffff77965c4dfd307348944d45fd166c971++-- Curve1174 curve is an Edwards curve.+instance Curve 'Edwards c Curve1174 Fq Fr => ECurve c Curve1174 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Curve1174 curve point.+type PA = EAPoint Curve1174 Fq Fr++-- Affine Curve1174 curve is an Edwards affine curve.+instance EACurve Curve1174 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective Curve1174 point.+type PP = EPPoint Curve1174 Fq Fr++-- Projective Curve1174 curve is an Edwards projective curve.+instance EPCurve Curve1174 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Curve1174 curve.+_a :: Fq+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @D@ of Curve1174 curve.+_d :: Fq+_d = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb61+{-# INLINABLE _d #-}++-- | Cofactor of Curve1174 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Characteristic of Curve1174 curve.+_q :: Natural+_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7+{-# INLINABLE _q #-}++-- | Order of Curve1174 curve.+_r :: Natural+_r = 0x1fffffffffffffffffffffffffffffff77965c4dfd307348944d45fd166c971+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Curve1174 curve.+_x :: Fq+_x = 0x37fbb0cea308c479343aee7c029a190c021d96a492ecd6516123f27bce29eda+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Curve1174 curve.+_y :: Fq+_y = 0x6b72f82d47fb7cc6656841169840e0c4fe2dee2af3f976ba4ccb1bf9b46360e+{-# INLINABLE _y #-}++-- | Generator of affine Curve1174 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective Curve1174 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards/Curve41417.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.Curve41417+  ( module Data.Curve.Edwards+  , Point(..)+  -- * Curve41417 curve+  , module Data.Curve.Edwards.Curve41417+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Curve41417 curve.+data Curve41417++-- | Field of points of Curve41417 curve.+type Fq = Prime Q+type Q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef++-- | Field of coefficients of Curve41417 curve.+type Fr = Prime R+type R = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffeb3cc92414cf706022b36f1c0338ad63cf181b0e71a5e106af79++-- Curve41417 curve is an Edwards curve.+instance Curve 'Edwards c Curve41417 Fq Fr => ECurve c Curve41417 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Curve41417 curve point.+type PA = EAPoint Curve41417 Fq Fr++-- Affine Curve41417 curve is an Edwards affine curve.+instance EACurve Curve41417 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective Curve41417 point.+type PP = EPPoint Curve41417 Fq Fr++-- Projective Curve41417 curve is an Edwards projective curve.+instance EPCurve Curve41417 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Curve41417 curve.+_a :: Fq+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @D@ of Curve41417 curve.+_d :: Fq+_d = 0xe21+{-# INLINABLE _d #-}++-- | Cofactor of Curve41417 curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of Curve41417 curve.+_q :: Natural+_q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef+{-# INLINABLE _q #-}++-- | Order of Curve41417 curve.+_r :: Natural+_r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffeb3cc92414cf706022b36f1c0338ad63cf181b0e71a5e106af79+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Curve41417 curve.+_x :: Fq+_x = 0x1a334905141443300218c0631c326e5fcd46369f44c03ec7f57ff35498a4ab4d6d6ba111301a73faa8537c64c4fd3812f3cbc595+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Curve41417 curve.+_y :: Fq+_y = 0x22+{-# INLINABLE _y #-}++-- | Generator of affine Curve41417 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective Curve41417 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards/E222.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.E222+  ( module Data.Curve.Edwards+  , Point(..)+  -- * E222 curve+  , module Data.Curve.Edwards.E222+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | E222 curve.+data E222++-- | Field of points of E222 curve.+type Fq = Prime Q+type Q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffff8b++-- | Field of coefficients of E222 curve.+type Fr = Prime R+type R = 0xffffffffffffffffffffffffffff70cbc95e932f802f31423598cbf++-- E222 curve is an Edwards curve.+instance Curve 'Edwards c E222 Fq Fr => ECurve c E222 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine E222 curve point.+type PA = EAPoint E222 Fq Fr++-- Affine E222 curve is an Edwards affine curve.+instance EACurve E222 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective E222 point.+type PP = EPPoint E222 Fq Fr++-- Projective E222 curve is an Edwards projective curve.+instance EPCurve E222 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of E222 curve.+_a :: Fq+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @D@ of E222 curve.+_d :: Fq+_d = 0x27166+{-# INLINABLE _d #-}++-- | Cofactor of E222 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Characteristic of E222 curve.+_q :: Natural+_q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffff8b+{-# INLINABLE _q #-}++-- | Order of E222 curve.+_r :: Natural+_r = 0xffffffffffffffffffffffffffff70cbc95e932f802f31423598cbf+{-# INLINABLE _r #-}++-- | Coordinate @X@ of E222 curve.+_x :: Fq+_x = 0x19b12bb156a389e55c9768c303316d07c23adab3736eb2bc3eb54e51+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of E222 curve.+_y :: Fq+_y = 0x1c+{-# INLINABLE _y #-}++-- | Generator of affine E222 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective E222 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards/E382.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.E382+  ( module Data.Curve.Edwards+  , Point(..)+  -- * E382 curve+  , module Data.Curve.Edwards.E382+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | E382 curve.+data E382++-- | Field of points of E382 curve.+type Fq = Prime Q+type Q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97++-- | Field of coefficients of E382 curve.+type Fr = Prime R+type R = 0xfffffffffffffffffffffffffffffffffffffffffffffffd5fb21f21e95eee17c5e69281b102d2773e27e13fd3c9719++-- E382 curve is an Edwards curve.+instance Curve 'Edwards c E382 Fq Fr => ECurve c E382 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine E382 curve point.+type PA = EAPoint E382 Fq Fr++-- Affine E382 curve is an Edwards affine curve.+instance EACurve E382 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective E382 point.+type PP = EPPoint E382 Fq Fr++-- Projective E382 curve is an Edwards projective curve.+instance EPCurve E382 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of E382 curve.+_a :: Fq+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @D@ of E382 curve.+_d :: Fq+_d = 0x3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef8e1+{-# INLINABLE _d #-}++-- | Cofactor of E382 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Characteristic of E382 curve.+_q :: Natural+_q = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff97+{-# INLINABLE _q #-}++-- | Order of E382 curve.+_r :: Natural+_r = 0xfffffffffffffffffffffffffffffffffffffffffffffffd5fb21f21e95eee17c5e69281b102d2773e27e13fd3c9719+{-# INLINABLE _r #-}++-- | Coordinate @X@ of E382 curve.+_x :: Fq+_x = 0x196f8dd0eab20391e5f05be96e8d20ae68f840032b0b64352923bab85364841193517dbce8105398ebc0cc9470f79603+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of E382 curve.+_y :: Fq+_y = 0x11+{-# INLINABLE _y #-}++-- | Generator of affine E382 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective E382 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards/E521.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.E521+  ( module Data.Curve.Edwards+  , Point(..)+  -- * E521 curve+  , module Data.Curve.Edwards.E521+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | E521 curve.+data E521++-- | Field of points of E521 curve.+type Fq = Prime Q+type Q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff++-- | Field of coefficients of E521 curve.+type Fr = Prime R+type R = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd15b6c64746fc85f736b8af5e7ec53f04fbd8c4569a8f1f4540ea2435f5180d6b++-- E521 curve is an Edwards curve.+instance Curve 'Edwards c E521 Fq Fr => ECurve c E521 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine E521 curve point.+type PA = EAPoint E521 Fq Fr++-- Affine E521 curve is an Edwards affine curve.+instance EACurve E521 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective E521 point.+type PP = EPPoint E521 Fq Fr++-- Projective E521 curve is an Edwards projective curve.+instance EPCurve E521 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of E521 curve.+_a :: Fq+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @D@ of E521 curve.+_d :: Fq+_d = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa4331+{-# INLINABLE _d #-}++-- | Cofactor of E521 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Characteristic of E521 curve.+_q :: Natural+_q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff+{-# INLINABLE _q #-}++-- | Order of E521 curve.+_r :: Natural+_r = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd15b6c64746fc85f736b8af5e7ec53f04fbd8c4569a8f1f4540ea2435f5180d6b+{-# INLINABLE _r #-}++-- | Coordinate @X@ of E521 curve.+_x :: Fq+_x = 0x752cb45c48648b189df90cb2296b2878a3bfd9f42fc6c818ec8bf3c9c0c6203913f6ecc5ccc72434b1ae949d568fc99c6059d0fb13364838aa302a940a2f19ba6c+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of E521 curve.+_y :: Fq+_y = 0xc+{-# INLINABLE _y #-}++-- | Generator of affine E521 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective E521 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards/Ed25519.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.Ed25519+  ( module Data.Curve.Edwards+  , Point(..)+  -- * Ed25519 curve+  , module Data.Curve.Edwards.Ed25519+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Ed25519 curve.+data Ed25519++-- | Field of points of Ed25519 curve.+type Fq = Prime Q+type Q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed++-- | Field of coefficients of Ed25519 curve.+type Fr = Prime R+type R = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed++-- Ed25519 curve is an Edwards curve.+instance Curve 'Edwards c Ed25519 Fq Fr => ECurve c Ed25519 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Ed25519 curve point.+type PA = EAPoint Ed25519 Fq Fr++-- Affine Ed25519 curve is an Edwards affine curve.+instance EACurve Ed25519 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective Ed25519 point.+type PP = EPPoint Ed25519 Fq Fr++-- Projective Ed25519 curve is an Edwards projective curve.+instance EPCurve Ed25519 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Ed25519 curve.+_a :: Fq+_a = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec+{-# INLINABLE _a #-}++-- | Coefficient @D@ of Ed25519 curve.+_d :: Fq+_d = 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3+{-# INLINABLE _d #-}++-- | Cofactor of Ed25519 curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of Ed25519 curve.+_q :: Natural+_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed+{-# INLINABLE _q #-}++-- | Order of Ed25519 curve.+_r :: Natural+_r = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Ed25519 curve.+_x :: Fq+_x = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Ed25519 curve.+_y :: Fq+_y = 0x6666666666666666666666666666666666666666666666666666666666666658+{-# INLINABLE _y #-}++-- | Generator of affine Ed25519 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective Ed25519 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards/Ed3363.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.Ed3363+  ( module Data.Curve.Edwards+  , Point(..)+  -- * Ed3363 curve+  , module Data.Curve.Edwards.Ed3363+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Ed3363 curve.+data Ed3363++-- | Field of points of Ed3363 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd++-- | Field of coefficients of Ed3363 curve.+type Fr = Prime R+type R = 0x200000000000000000000000000000000000000000071415fa9850c0bd6b87f93baa7b2f95973e9fa805++-- Ed3363 curve is an Edwards curve.+instance Curve 'Edwards c Ed3363 Fq Fr => ECurve c Ed3363 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Ed3363 curve point.+type PA = EAPoint Ed3363 Fq Fr++-- Affine Ed3363 curve is an Edwards affine curve.+instance EACurve Ed3363 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective Ed3363 point.+type PP = EPPoint Ed3363 Fq Fr++-- Projective Ed3363 curve is an Edwards projective curve.+instance EPCurve Ed3363 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Ed3363 curve.+_a :: Fq+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @D@ of Ed3363 curve.+_d :: Fq+_d = 0x2b67+{-# INLINABLE _d #-}++-- | Cofactor of Ed3363 curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of Ed3363 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd+{-# INLINABLE _q #-}++-- | Order of Ed3363 curve.+_r :: Natural+_r = 0x200000000000000000000000000000000000000000071415fa9850c0bd6b87f93baa7b2f95973e9fa805+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Ed3363 curve.+_x :: Fq+_x = 0xc+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Ed3363 curve.+_y :: Fq+_y = 0xc0dc616b56502e18e1c161d007853d1b14b46c3811c7ef435b6db5d5650ca0365db12bec68505fe8632+{-# INLINABLE _y #-}++-- | Generator of affine Ed3363 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective Ed3363 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards/Ed448.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.Ed448+  ( module Data.Curve.Edwards+  , Point(..)+  -- * Ed448 curve+  , module Data.Curve.Edwards.Ed448+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Ed448 curve.+data Ed448++-- | Field of points of Ed448 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff++-- | Field of coefficients of Ed448 curve.+type Fr = Prime R+type R = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3++-- Ed448 curve is an Edwards curve.+instance Curve 'Edwards c Ed448 Fq Fr => ECurve c Ed448 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Ed448 curve point.+type PA = EAPoint Ed448 Fq Fr++-- Affine Ed448 curve is an Edwards affine curve.+instance EACurve Ed448 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective Ed448 point.+type PP = EPPoint Ed448 Fq Fr++-- Projective Ed448 curve is an Edwards projective curve.+instance EPCurve Ed448 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Ed448 curve.+_a :: Fq+_a = 0x1+{-# INLINABLE _a #-}++-- | Coefficient @D@ of Ed448 curve.+_d :: Fq+_d = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756+{-# INLINABLE _d #-}++-- | Cofactor of Ed448 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Characteristic of Ed448 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff+{-# INLINABLE _q #-}++-- | Order of Ed448 curve.+_r :: Natural+_r = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Ed448 curve.+_x :: Fq+_x = 0x297ea0ea2692ff1b4faff46098453a6a26adf733245f065c3c59d0709cecfa96147eaaf3932d94c63d96c170033f4ba0c7f0de840aed939f+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Ed448 curve.+_y :: Fq+_y = 0x13+{-# INLINABLE _y #-}++-- | Generator of affine Ed448 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective Ed448 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Edwards/JubJub.hs view
@@ -0,0 +1,106 @@+module Data.Curve.Edwards.JubJub+  ( module Data.Curve.Edwards+  , Point(..)+  -- * JubJub curve+  , module Data.Curve.Edwards.JubJub+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Edwards++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | JubJub curve.+data JubJub++-- | Field of points of JubJub curve.+type Fq = Prime Q+type Q = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001++-- | Field of coefficients of JubJub curve.+type Fr = Prime R+type R = 0xe7db4ea6533afa906673b0101343b00a6682093ccc81082d0970e5ed6f72cb7++-- JubJub curve is an Edwards curve.+instance Curve 'Edwards c JubJub Fq Fr => ECurve c JubJub Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  d_ = const _d+  {-# INLINABLE d_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine JubJub curve point.+type PA = EAPoint JubJub Fq Fr++-- Affine JubJub curve is an Edwards affine curve.+instance EACurve JubJub Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Projective JubJub point.+type PP = EPPoint JubJub Fq Fr++-- Projective JubJub curve is an Edwards projective curve.+instance EPCurve JubJub Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of JubJub curve.+_a :: Fq+_a = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000+{-# INLINABLE _a #-}++-- | Coefficient @D@ of JubJub curve.+_d :: Fq+_d = 0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1+{-# INLINABLE _d #-}++-- | Cofactor of JubJub curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of JubJub curve.+_q :: Natural+_q = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001+{-# INLINABLE _q #-}++-- | Order of JubJub curve.+_r :: Natural+_r = 0xe7db4ea6533afa906673b0101343b00a6682093ccc81082d0970e5ed6f72cb7+{-# INLINABLE _r #-}++-- | Coordinate @X@ of JubJub curve.+_x :: Fq+_x = 0x5183972af8eff38ca624b4df00384882000c546bf2f39ede7f4ecf1a74f976c4+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of JubJub curve.+_y :: Fq+_y = 0x3b43f8472ca2fc2c9e8fcc5abd9dc308096c8707ffa6833b146bad709349702e+{-# INLINABLE _y #-}++-- | Generator of affine JubJub curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of projective JubJub curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Montgomery.hs view
@@ -0,0 +1,141 @@+{-# OPTIONS -fno-warn-orphans #-}++module Data.Curve.Montgomery+  ( module Data.Curve+  , Point(..)+  -- * Montgomery curves+  , MCurve(..)+  , MPoint+  -- ** Montgomery affine curves+  , MACurve(..)+  , MAPoint+  ) where++import Protolude++import Data.Field.Galois as F (GaloisField, PrimeField, frob, sr)+import GHC.Natural (Natural)+import Text.PrettyPrint.Leijen.Text (Pretty(..))++import Data.Curve++-------------------------------------------------------------------------------+-- Montgomery form+-------------------------------------------------------------------------------++-- | Montgomery points.+type MPoint = Point 'Montgomery++-- | Montgomery curves.+class (GaloisField q, PrimeField r, Curve 'Montgomery c e q r) => MCurve c e q r where+  {-# MINIMAL a_, b_, h_, q_, r_ #-}+  a_ :: MPoint c e q r -> q       -- ^ Coefficient @A@.+  b_ :: MPoint c e q r -> q       -- ^ Coefficient @B@.+  h_ :: MPoint c e q r -> Natural -- ^ Curve cofactor.+  q_ :: MPoint c e q r -> Natural -- ^ Curve characteristic.+  r_ :: MPoint c e q r -> Natural -- ^ Curve order.++-------------------------------------------------------------------------------+-- Affine coordinates+-------------------------------------------------------------------------------++-- | Montgomery affine points.+type MAPoint = MPoint 'Affine++-- | Montgomery affine curves @By^2 = x^3 + Ax^2 + x@.+class MCurve 'Affine e q r => MACurve e q r where+  {-# MINIMAL gA_ #-}+  gA_ :: MAPoint e q r -- ^ Curve generator.++-- Montgomery affine curves are elliptic curves.+instance MACurve e q r => Curve 'Montgomery 'Affine e q r where++  data instance Point 'Montgomery 'Affine e q r = A q q -- ^ Affine point.+                                                | O     -- ^ Infinite point.+    deriving (Eq, Generic, NFData, Read, Show)++  add p O       = p+  add O q       = q+  add (A x1 y1) (A x2 y2)+    | x1 == x2  = O+    | otherwise = A x3 y3+    where+      a  = a_ (witness :: MAPoint e q r)+      b  = b_ (witness :: MAPoint e q r)+      l  = (y2 - y1) / (x2 - x1)+      x3 = b * l * l - a - x1 - x2+      y3 = l * (x1 - x3) - y1+  {-# INLINABLE add #-}++  char = q_+  {-# INLINABLE char #-}++  cof = h_+  {-# INLINABLE cof #-}++  dbl O         = O+  dbl (A x y)+    | y == 0    = O+    | otherwise = A x' y'+    where+      a  = a_ (witness :: MAPoint e q r)+      b  = b_ (witness :: MAPoint e q r)+      by = b * y+      l  = (x * (x + x + x + a + a) + 1) / (by + by)+      x' = b * l * l - a - x - x+      y' = l * (x - x') - y+  {-# INLINABLE dbl #-}++  def O       = True+  def (A x y) = b * y * y == (((x + a) * x) + 1) * x+    where+      a = a_ (witness :: MAPoint e q r)+      b = b_ (witness :: MAPoint e q r)+  {-# INLINABLE def #-}++  disc _ = b * (a * a - 4)+    where+      a = a_ (witness :: MAPoint e q r)+      b = b_ (witness :: MAPoint e q r)+  {-# INLINABLE disc #-}++  frob O       = O+  frob (A x y) = A (F.frob x) (F.frob y)+  {-# INLINABLE frob #-}++  fromA = identity+  {-# INLINABLE fromA #-}++  gen = gA_+  {-# INLINABLE gen #-}++  id = O+  {-# INLINABLE id #-}++  inv O       = O+  inv (A x y) = A x (-y)+  {-# INLINABLE inv #-}++  order = r_+  {-# INLINABLE order #-}++  point x y = let p = A x y in if def p then Just p else Nothing+  {-# INLINABLE point #-}++  pointX x = A x <$> yX (witness :: MAPoint e q r) x+  {-# INLINABLE pointX #-}++  toA = identity+  {-# INLINABLE toA #-}++  yX _ x = sr ((((x + a) * x) + 1) * x / b)+    where+      a = a_ (witness :: MAPoint e q r)+      b = b_ (witness :: MAPoint e q r)+  {-# INLINABLE yX #-}++-- Montgomery affine points are pretty.+instance MACurve e q r => Pretty (MAPoint e q r) where++  pretty (A x y) = pretty (x, y)+  pretty O       = "O"
+ src/Data/Curve/Montgomery/Curve25519.hs view
@@ -0,0 +1,93 @@+module Data.Curve.Montgomery.Curve25519+  ( module Data.Curve.Montgomery+  , Point(..)+  -- * Curve25519 curve+  , module Data.Curve.Montgomery.Curve25519+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Montgomery++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Curve25519 curve.+data Curve25519++-- | Field of points of Curve25519 curve.+type Fq = Prime Q+type Q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed++-- | Field of coefficients of Curve25519 curve.+type Fr = Prime R+type R = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed++-- Curve25519 curve is a Montgomery curve.+instance Curve 'Montgomery c Curve25519 Fq Fr => MCurve c Curve25519 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Curve25519 curve point.+type PA = MAPoint Curve25519 Fq Fr++-- Affine Curve25519 curve is a Montgomery affine curve.+instance MACurve Curve25519 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Curve25519 curve.+_a :: Fq+_a = 0x76d06+{-# INLINABLE _a #-}++-- | Coefficient @B@ of Curve25519 curve.+_b :: Fq+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of Curve25519 curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of Curve25519 curve.+_q :: Natural+_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed+{-# INLINABLE _q #-}++-- | Order of Curve25519 curve.+_r :: Natural+_r = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Curve25519 curve.+_x :: Fq+_x = 0x9+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Curve25519 curve.+_y :: Fq+_y = 0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9+{-# INLINABLE _y #-}++-- | Generator of affine Curve25519 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}
+ src/Data/Curve/Montgomery/Curve383187.hs view
@@ -0,0 +1,93 @@+module Data.Curve.Montgomery.Curve383187+  ( module Data.Curve.Montgomery+  , Point(..)+  -- * Curve383187 curve+  , module Data.Curve.Montgomery.Curve383187+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Montgomery++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Curve383187 curve.+data Curve383187++-- | Field of points of Curve383187 curve.+type Fq = Prime Q+type Q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45++-- | Field of coefficients of Curve383187 curve.+type Fr = Prime R+type R = 0x1000000000000000000000000000000000000000000000000e85a85287a1488acd41ae84b2b7030446f72088b00a0e21++-- Curve383187 curve is a Montgomery curve.+instance Curve 'Montgomery c Curve383187 Fq Fr => MCurve c Curve383187 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Curve383187 curve point.+type PA = MAPoint Curve383187 Fq Fr++-- Affine Curve383187 curve is a Montgomery affine curve.+instance MACurve Curve383187 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Curve383187 curve.+_a :: Fq+_a = 0x38251+{-# INLINABLE _a #-}++-- | Coefficient @B@ of Curve383187 curve.+_b :: Fq+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of Curve383187 curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of Curve383187 curve.+_q :: Natural+_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45+{-# INLINABLE _q #-}++-- | Order of Curve383187 curve.+_r :: Natural+_r = 0x1000000000000000000000000000000000000000000000000e85a85287a1488acd41ae84b2b7030446f72088b00a0e21+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Curve383187 curve.+_x :: Fq+_x = 0x5+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Curve383187 curve.+_y :: Fq+_y = 0x1eebe07dc1871896732b12d5504a32370471965c7a11f2c89865f855ab3cbd7c224e3620c31af3370788457dd5ce46df+{-# INLINABLE _y #-}++-- | Generator of affine Curve383187 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}
+ src/Data/Curve/Montgomery/Curve448.hs view
@@ -0,0 +1,93 @@+module Data.Curve.Montgomery.Curve448+  ( module Data.Curve.Montgomery+  , Point(..)+  -- * Curve448 curve+  , module Data.Curve.Montgomery.Curve448+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Montgomery++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Curve448 curve.+data Curve448++-- | Field of points of Curve448 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff++-- | Field of coefficients of Curve448 curve.+type Fr = Prime R+type R = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3++-- Curve448 curve is a Montgomery curve.+instance Curve 'Montgomery c Curve448 Fq Fr => MCurve c Curve448 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Curve448 curve point.+type PA = MAPoint Curve448 Fq Fr++-- Affine Curve448 curve is a Montgomery affine curve.+instance MACurve Curve448 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Curve448 curve.+_a :: Fq+_a = 0x262a6+{-# INLINABLE _a #-}++-- | Coefficient @B@ of Curve448 curve.+_b :: Fq+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of Curve448 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Characteristic of Curve448 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff+{-# INLINABLE _q #-}++-- | Order of Curve448 curve.+_r :: Natural+_r = 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Curve448 curve.+_x :: Fq+_x = 0x5+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Curve448 curve.+_y :: Fq+_y = 0x7d235d1295f5b1f66c98ab6e58326fcecbae5d34f55545d060f75dc28df3f6edb8027e2346430d211312c4b150677af76fd7223d457b5b1a+{-# INLINABLE _y #-}++-- | Generator of affine Curve448 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}
+ src/Data/Curve/Montgomery/M221.hs view
@@ -0,0 +1,93 @@+module Data.Curve.Montgomery.M221+  ( module Data.Curve.Montgomery+  , Point(..)+  -- * M221 curve+  , module Data.Curve.Montgomery.M221+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Montgomery++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | M221 curve.+data M221++-- | Field of points of M221 curve.+type Fq = Prime Q+type Q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd++-- | Field of coefficients of M221 curve.+type Fr = Prime R+type R = 0x40000000000000000000000000015a08ed730e8a2f77f005042605b++-- M221 curve is a Montgomery curve.+instance Curve 'Montgomery c M221 Fq Fr => MCurve c M221 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine M221 curve point.+type PA = MAPoint M221 Fq Fr++-- Affine M221 curve is a Montgomery affine curve.+instance MACurve M221 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of M221 curve.+_a :: Fq+_a = 0x1c93a+{-# INLINABLE _a #-}++-- | Coefficient @B@ of M221 curve.+_b :: Fq+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of M221 curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of M221 curve.+_q :: Natural+_q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffd+{-# INLINABLE _q #-}++-- | Order of M221 curve.+_r :: Natural+_r = 0x40000000000000000000000000015a08ed730e8a2f77f005042605b+{-# INLINABLE _r #-}++-- | Coordinate @X@ of M221 curve.+_x :: Fq+_x = 0x4+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of M221 curve.+_y :: Fq+_y = 0xf7acdd2a4939571d1cef14eca37c228e61dbff10707dc6c08c5056d+{-# INLINABLE _y #-}++-- | Generator of affine M221 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}
+ src/Data/Curve/Montgomery/M383.hs view
@@ -0,0 +1,93 @@+module Data.Curve.Montgomery.M383+  ( module Data.Curve.Montgomery+  , Point(..)+  -- * M383 curve+  , module Data.Curve.Montgomery.M383+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Montgomery++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | M383 curve.+data M383++-- | Field of points of M383 curve.+type Fq = Prime Q+type Q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45++-- | Field of coefficients of M383 curve.+type Fr = Prime R+type R = 0x10000000000000000000000000000000000000000000000006c79673ac36ba6e7a32576f7b1b249e46bbc225be9071d7++-- M383 curve is a Montgomery curve.+instance Curve 'Montgomery c M383 Fq Fr => MCurve c M383 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine M383 curve point.+type PA = MAPoint M383 Fq Fr++-- Affine M383 curve is a Montgomery affine curve.+instance MACurve M383 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of M383 curve.+_a :: Fq+_a = 0x1f82fe+{-# INLINABLE _a #-}++-- | Coefficient @B@ of M383 curve.+_b :: Fq+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of M383 curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of M383 curve.+_q :: Natural+_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45+{-# INLINABLE _q #-}++-- | Order of M383 curve.+_r :: Natural+_r = 0x10000000000000000000000000000000000000000000000006c79673ac36ba6e7a32576f7b1b249e46bbc225be9071d7+{-# INLINABLE _r #-}++-- | Coordinate @X@ of M383 curve.+_x :: Fq+_x = 0xc+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of M383 curve.+_y :: Fq+_y = 0x1ec7ed04aaf834af310e304b2da0f328e7c165f0e8988abd3992861290f617aa1f1b2e7d0b6e332e969991b62555e77e+{-# INLINABLE _y #-}++-- | Generator of affine M383 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}
+ src/Data/Curve/Montgomery/M511.hs view
@@ -0,0 +1,93 @@+module Data.Curve.Montgomery.M511+  ( module Data.Curve.Montgomery+  , Point(..)+  -- * M511 curve+  , module Data.Curve.Montgomery.M511+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Montgomery++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | M511 curve.+data M511++-- | Field of points of M511 curve.+type Fq = Prime Q+type Q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45++-- | Field of coefficients of M511 curve.+type Fr = Prime R+type R = 0x100000000000000000000000000000000000000000000000000000000000000017b5feff30c7f5677ab2aeebd13779a2ac125042a6aa10bfa54c15bab76baf1b++-- M511 curve is a Montgomery curve.+instance Curve 'Montgomery c M511 Fq Fr => MCurve c M511 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine M511 curve point.+type PA = MAPoint M511 Fq Fr++-- Affine M511 curve is a Montgomery affine curve.+instance MACurve M511 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of M511 curve.+_a :: Fq+_a = 0x81806+{-# INLINABLE _a #-}++-- | Coefficient @B@ of M511 curve.+_b :: Fq+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of M511 curve.+_h :: Natural+_h = 0x8+{-# INLINABLE _h #-}++-- | Characteristic of M511 curve.+_q :: Natural+_q = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45+{-# INLINABLE _q #-}++-- | Order of M511 curve.+_r :: Natural+_r = 0x100000000000000000000000000000000000000000000000000000000000000017b5feff30c7f5677ab2aeebd13779a2ac125042a6aa10bfa54c15bab76baf1b+{-# INLINABLE _r #-}++-- | Coordinate @X@ of M511 curve.+_x :: Fq+_x = 0x5+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of M511 curve.+_y :: Fq+_y = 0x2fbdc0ad8530803d28fdbad354bb488d32399ac1cf8f6e01ee3f96389b90c809422b9429e8a43dbf49308ac4455940abe9f1dbca542093a895e30a64af056fa5+{-# INLINABLE _y #-}++-- | Generator of affine M511 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}
+ src/Data/Curve/Weierstrass.hs view
@@ -0,0 +1,398 @@+{-# OPTIONS -fno-warn-orphans #-}++module Data.Curve.Weierstrass+  ( module Data.Curve+  , Point(..)+  -- * Weierstrass curves+  , WCurve(..)+  , WPoint+  -- ** Weierstrass affine curves+  , WACurve(..)+  , WAPoint+  -- ** Weierstrass Jacobian curves+  , WJCurve(..)+  , WJPoint+  -- ** Weierstrass projective curves+  , WPCurve(..)+  , WPPoint+  ) where++import Protolude++import Data.Field.Galois as F (GaloisField, PrimeField, frob, sr)+import GHC.Natural (Natural)+import Text.PrettyPrint.Leijen.Text (Pretty(..))++import Data.Curve++-------------------------------------------------------------------------------+-- Weierstrass form+-------------------------------------------------------------------------------++-- | Weierstrass points.+type WPoint = Point 'Weierstrass++-- | Weierstrass curves.+class (GaloisField q, PrimeField r, Curve 'Weierstrass c e q r) => WCurve c e q r where+  {-# MINIMAL a_, b_, h_, q_, r_ #-}+  a_ :: WPoint c e q r -> q       -- ^ Coefficient @A@.+  b_ :: WPoint c e q r -> q       -- ^ Coefficient @B@.+  h_ :: WPoint c e q r -> Natural -- ^ Curve cofactor.+  q_ :: WPoint c e q r -> Natural -- ^ Curve characteristic.+  r_ :: WPoint c e q r -> Natural -- ^ Curve order.++-------------------------------------------------------------------------------+-- Affine coordinates+-------------------------------------------------------------------------------++-- | Weierstrass affine points.+type WAPoint = WPoint 'Affine++-- | Weierstrass affine curves @y^2 = x^3 + Ax + B@.+class WCurve 'Affine e q r => WACurve e q r where+  {-# MINIMAL gA_ #-}+  gA_ :: WAPoint e q r -- ^ Curve generator.++-- Weierstrass affine curves are elliptic curves.+instance WACurve e q r => Curve 'Weierstrass 'Affine e q r where++  data instance Point 'Weierstrass 'Affine e q r = A q q -- ^ Affine point.+                                                 | O     -- ^ Infinite point.+    deriving (Eq, Generic, NFData, Read, Show)++  add p O       = p+  add O q       = q+  add (A x1 y1) (A x2 y2)+    | x1 == x2  = O+    | otherwise = A x3 y3+    where+      l  = (y1 - y2) / (x1 - x2)+      x3 = l * l - x1 - x2+      y3 = l * (x1 - x3) - y1+  {-# INLINABLE add #-}++  char = q_+  {-# INLINABLE char #-}++  cof = h_+  {-# INLINABLE cof #-}++  dbl O         = O+  dbl (A x y)+    | y == 0    = O+    | otherwise = A x' y'+    where+      a  = a_ (witness :: WAPoint e q r)+      xx = x * x+      l  = (xx + xx + xx + a) / (y + y)+      x' = l * l - x - x+      y' = l * (x - x') - y+  {-# INLINABLE dbl #-}++  def O       = True+  def (A x y) = y * y == (x * x + a) * x + b+    where+      a = a_ (witness :: WAPoint e q r)+      b = b_ (witness :: WAPoint e q r)+  {-# INLINABLE def #-}++  disc _ = 4 * a * a * a + 27 * b * b+    where+      a = a_ (witness :: WAPoint e q r)+      b = b_ (witness :: WAPoint e q r)+  {-# INLINABLE disc #-}++  frob O       = O+  frob (A x y) = A (F.frob x) (F.frob y)+  {-# INLINABLE frob #-}++  fromA = identity+  {-# INLINABLE fromA #-}++  gen = gA_+  {-# INLINABLE gen #-}++  id = O+  {-# INLINABLE id #-}++  inv O       = O+  inv (A x y) = A x (-y)+  {-# INLINABLE inv #-}++  order = r_+  {-# INLINABLE order #-}++  point x y = let p = A x y in if def p then Just p else Nothing+  {-# INLINABLE point #-}++  pointX x = A x <$> yX (witness :: WAPoint e q r) x+  {-# INLINABLE pointX #-}++  toA = identity+  {-# INLINABLE toA #-}++  yX _ x = sr (((x * x + a) * x) + b)+    where+      a = a_ (witness :: WAPoint e q r)+      b = b_ (witness :: WAPoint e q r)+  {-# INLINABLE yX #-}++-- Weierstrass affine points are pretty.+instance WACurve e q r => Pretty (WAPoint e q r) where++  pretty (A x y) = pretty (x, y)+  pretty O       = "O"++-------------------------------------------------------------------------------+-- Jacobian coordinates+-------------------------------------------------------------------------------++-- | Weierstrass Jacobian points.+type WJPoint = WPoint 'Jacobian++-- | Weierstrass Jacobian curves @y^2 = x^3 + Ax + B@.+class WCurve 'Jacobian e q r => WJCurve e q r where+  {-# MINIMAL gJ_ #-}+  gJ_ :: WJPoint e q r -- ^ Curve generator.++-- Weierstrass Jacobian curves are elliptic curves.+instance WJCurve e q r => Curve 'Weierstrass 'Jacobian e q r where++  data instance Point 'Weierstrass 'Jacobian e q r = J q q q -- ^ Jacobian point.+    deriving (Generic, NFData, Read, Show)++  -- Addition formula add-2007-bl+  add  p           (J  _  _  0) = p+  add (J  _  _  0)  q           = q+  add (J x1 y1 z1) (J x2 y2 z2) = J x3 y3 z3+    where+      z1z1 = z1 * z1+      z2z2 = z2 * z2+      z1z2 = z1 + z2+      u1   = x1 * z2z2+      u2   = x2 * z1z1+      s1   = y1 * z2 * z2z2+      s2   = y2 * z1 * z1z1+      h    = u2 - u1+      h2   = 2 * h+      i    = h2 * h2+      j    = h * i+      r    = 2 * (s2 - s1)+      v    = u1 * i+      x3   = r * r - j - 2 * v+      y3   = r * (v - x3) - 2 * s1 * j+      z3   = (z1z2 * z1z2 - z1z1 - z2z2) * h+  {-# INLINABLE add #-}++  char = q_+  {-# INLINABLE char #-}++  cof = h_+  {-# INLINABLE cof #-}++  -- Doubling formula dbl-2007-bl+  dbl (J  _  _  0) = J  1  1  0+  dbl (J x1 y1 z1) = J x3 y3 z3+    where+      a    = a_ (witness :: WJPoint e q r)+      xx   = x1 * x1+      yy   = y1 * y1+      yyyy = yy * yy+      zz   = z1 * z1+      xy   = x1 + yy+      yz   = y1 + z1+      s    = 2 * (xy * xy - xx - yyyy)+      m    = 3 * xx + a * zz * zz+      t    = m * m - 2 * s+      x3   = t+      y3   = m * (s - t) - 8 * yyyy+      z3   = yz * yz - yy - zz+  {-# INLINABLE dbl #-}++  def (J x y z) = y * y == x * x * x + zz * zz * (a * x + b * zz)+    where+      a  = a_ (witness :: WJPoint e q r)+      b  = b_ (witness :: WJPoint e q r)+      zz = z * z+  {-# INLINABLE def #-}++  disc _ = 4 * a * a * a + 27 * b * b+    where+      a = a_ (witness :: WJPoint e q r)+      b = b_ (witness :: WJPoint e q r)+  {-# INLINABLE disc #-}++  frob (J x y z) = J (F.frob x) (F.frob y) (F.frob z)+  {-# INLINABLE frob #-}++  fromA (A x y) = J x y 1+  fromA _       = J 1 1 0+  {-# INLINABLE fromA #-}++  gen = gJ_+  {-# INLINABLE gen #-}++  id = J 1 1 0+  {-# INLINABLE id #-}++  inv (J x y z) = J x (-y) z+  {-# INLINABLE inv #-}++  order = r_+  {-# INLINABLE order #-}++  point x y = let p = J x y 1 in if def p then Just p else Nothing+  {-# INLINABLE point #-}++  pointX x = flip (J x) 1 <$> yX (witness :: WJPoint e q r) x+  {-# INLINABLE pointX #-}++  toA (J _ _ 0) = O+  toA (J x y z) = let zz = z * z in A (x / zz) (y / (z * zz))+  {-# INLINABLE toA #-}++  yX _ x = sr (((x * x + a) * x) + b)+    where+      a = a_ (witness :: WJPoint e q r)+      b = b_ (witness :: WJPoint e q r)+  {-# INLINABLE yX #-}++-- Weierstrass Jacobian points are equatable.+instance WJCurve e q r => Eq (WJPoint e q r) where++  J x1 y1 z1 == J x2 y2 z2 = z1 == 0 && z2 == 0+    || x1 * zz2 == x2 * zz1 && y1 * z2 * zz2 == y2 * z1 * zz1+    where+      zz1 = z1 * z1+      zz2 = z2 * z2+  {-# INLINABLE (==) #-}++-- Weierstrass Jacobian points are pretty.+instance WJCurve e q r => Pretty (WJPoint e q r) where++  pretty (J x y z) = pretty (x, y, z)++-------------------------------------------------------------------------------+-- Projective coordinates+-------------------------------------------------------------------------------++-- | Weierstrass projective points.+type WPPoint = WPoint 'Projective++-- | Weierstrass projective curves @y^2 = x^3 + Ax + B@.+class WCurve 'Projective e q r => WPCurve e q r where+  {-# MINIMAL gP_ #-}+  gP_ :: WPPoint e q r -- ^ Curve generator.++-- Weierstrass projective curves are elliptic curves.+instance WPCurve e q r => Curve 'Weierstrass 'Projective e q r where++  data instance Point 'Weierstrass 'Projective e q r = P q q q -- ^ Projective point.+    deriving (Generic, NFData, Read, Show)++  -- Addition formula add-1998-cmo-2+  add  p           (P  _  _  0) = p+  add (P  _  _  0)  q           = q+  add (P x1 y1 z1) (P x2 y2 z2) = P x3 y3 z3+    where+      y1z2 = y1 * z2+      x1z2 = x1 * z2+      z1z2 = z1 * z2+      u    = y2 * z1 - y1z2+      uu   = u * u+      v    = x2 * z1 - x1z2+      vv   = v * v+      vvv  = v * vv+      r    = vv * x1z2+      a    = uu * z1z2 - vvv - 2 * r+      x3   = v * a+      y3   = u * (r - a) - vvv * y1z2+      z3   = vvv * z1z2+  {-# INLINABLE add #-}++  char = q_+  {-# INLINABLE char #-}++  cof = h_+  {-# INLINABLE cof #-}++  -- Doubling formula dbl-2007-bl+  dbl (P  _  _  0) = P  0  1  0+  dbl (P x1 y1 z1) = P x3 y3 z3+    where+      a   = a_ (witness :: WPPoint e q r)+      xx  = x1 * x1+      zz  = z1 * z1+      w   = a * zz + 3 * xx+      s   = 2 * y1 * z1+      ss  = s * s+      sss = s * ss+      r   = y1 * s+      rr  = r * r+      xr  = x1 + r+      b   = xr * xr - xx - rr+      h   = w * w - 2 * b+      x3  = h * s+      y3  = w * (b - h) - 2 * rr+      z3  = sss+  {-# INLINABLE dbl #-}++  def (P x y z) = (x * x + a * zz) * x == (y * y - b * zz) * z+    where+      a  = a_ (witness :: WPPoint e q r)+      b  = b_ (witness :: WPPoint e q r)+      zz = z * z+  {-# INLINABLE def #-}++  disc _ = 4 * a * a * a + 27 * b * b+    where+      a = a_ (witness :: WPPoint e q r)+      b = b_ (witness :: WPPoint e q r)+  {-# INLINABLE disc #-}++  frob (P x y z) = P (F.frob x) (F.frob y) (F.frob z)+  {-# INLINABLE frob #-}++  fromA (A x y) = P x y 1+  fromA _       = P 0 1 0+  {-# INLINABLE fromA #-}++  gen = gP_+  {-# INLINABLE gen #-}++  id = P 0 1 0+  {-# INLINABLE id #-}++  inv (P x y z) = P x (-y) z+  {-# INLINABLE inv #-}++  order = r_+  {-# INLINABLE order #-}++  point x y = let p = P x y 1 in if def p then Just p else Nothing+  {-# INLINABLE point #-}++  pointX x = flip (P x) 1 <$> yX (witness :: WPPoint e q r) x+  {-# INLINABLE pointX #-}++  toA (P _ _ 0) = O+  toA (P x y z) = A (x / z) (y / z)+  {-# INLINABLE toA #-}++  yX _ x = sr (((x * x + a) * x) + b)+    where+      a = a_ (witness :: WPPoint e q r)+      b = b_ (witness :: WPPoint e q r)+  {-# INLINABLE yX #-}++-- Weierstrass projective points are equatable.+instance WPCurve e q r => Eq (WPPoint e q r) where++  P x1 y1 z1 == P x2 y2 z2 = z1 == 0 && z2 == 0+    || x1 * z2 == x2 * z1 && y1 * z2 == y2 * z1+  {-# INLINABLE (==) #-}++-- Weierstrass projective points are pretty.+instance WPCurve e q r => Pretty (WPPoint e q r) where++  pretty (P x y z) = pretty (x, y, z)
+ src/Data/Curve/Weierstrass/ANSSIFRP256V1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.ANSSIFRP256V1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * ANSSIFRP256V1 curve+  , module Data.Curve.Weierstrass.ANSSIFRP256V1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | ANSSIFRP256V1 curve.+data ANSSIFRP256V1++-- | Field of points of ANSSIFRP256V1 curve.+type Fq = Prime Q+type Q = 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c03++-- | Field of coefficients of ANSSIFRP256V1 curve.+type Fr = Prime R+type R = 0xf1fd178c0b3ad58f10126de8ce42435b53dc67e140d2bf941ffdd459c6d655e1++-- ANSSIFRP256V1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c ANSSIFRP256V1 Fq Fr => WCurve c ANSSIFRP256V1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine ANSSIFRP256V1 curve point.+type PA = WAPoint ANSSIFRP256V1 Fq Fr++-- Affine ANSSIFRP256V1 curve is a Weierstrass affine curve.+instance WACurve ANSSIFRP256V1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian ANSSIFRP256V1 point.+type PJ = WJPoint ANSSIFRP256V1 Fq Fr++-- Jacobian ANSSIFRP256V1 curve is a Weierstrass Jacobian curve.+instance WJCurve ANSSIFRP256V1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective ANSSIFRP256V1 point.+type PP = WPPoint ANSSIFRP256V1 Fq Fr++-- Projective ANSSIFRP256V1 curve is a Weierstrass projective curve.+instance WPCurve ANSSIFRP256V1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of ANSSIFRP256V1 curve.+_a :: Fq+_a = 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c00+{-# INLINABLE _a #-}++-- | Coefficient @B@ of ANSSIFRP256V1 curve.+_b :: Fq+_b = 0xee353fca5428a9300d4aba754a44c00fdfec0c9ae4b1a1803075ed967b7bb73f+{-# INLINABLE _b #-}++-- | Cofactor of ANSSIFRP256V1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of ANSSIFRP256V1 curve.+_q :: Natural+_q = 0xf1fd178c0b3ad58f10126de8ce42435b3961adbcabc8ca6de8fcf353d86e9c03+{-# INLINABLE _q #-}++-- | Order of ANSSIFRP256V1 curve.+_r :: Natural+_r = 0xf1fd178c0b3ad58f10126de8ce42435b53dc67e140d2bf941ffdd459c6d655e1+{-# INLINABLE _r #-}++-- | Coordinate @X@ of ANSSIFRP256V1 curve.+_x :: Fq+_x = 0xb6b3d4c356c139eb31183d4749d423958c27d2dcaf98b70164c97a2dd98f5cff+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of ANSSIFRP256V1 curve.+_y :: Fq+_y = 0x6142e0f7c8b204911f9271f0f3ecef8c2701c307e8e4c9e183115a1554062cfb+{-# INLINABLE _y #-}++-- | Generator of affine ANSSIFRP256V1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian ANSSIFRP256V1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective ANSSIFRP256V1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/Anomalous.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.Anomalous+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * Anomalous curve+  , module Data.Curve.Weierstrass.Anomalous+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Anomalous curve.+data Anomalous++-- | Field of points of Anomalous curve.+type Fq = Prime Q+type Q = 0xb0000000000000000000000953000000000000000000001f9d7++-- | Field of coefficients of Anomalous curve.+type Fr = Prime R+type R = 0xb0000000000000000000000953000000000000000000001f9d7++-- Anomalous curve is a Weierstrass curve.+instance Curve 'Weierstrass c Anomalous Fq Fr => WCurve c Anomalous Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine Anomalous curve point.+type PA = WAPoint Anomalous Fq Fr++-- Affine Anomalous curve is a Weierstrass affine curve.+instance WACurve Anomalous Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian Anomalous point.+type PJ = WJPoint Anomalous Fq Fr++-- Jacobian Anomalous curve is a Weierstrass Jacobian curve.+instance WJCurve Anomalous Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective Anomalous point.+type PP = WPPoint Anomalous Fq Fr++-- Projective Anomalous curve is a Weierstrass projective curve.+instance WPCurve Anomalous Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of Anomalous curve.+_a :: Fq+_a = 0x98d0fac687d6343eb1a1f595283eb1a1f58d0fac687d635f5e4+{-# INLINABLE _a #-}++-- | Coefficient @B@ of Anomalous curve.+_b :: Fq+_b = 0x4a1f58d0fac687d6343eb1a5e2d6343eb1a1f58d0fac688ab3f+{-# INLINABLE _b #-}++-- | Cofactor of Anomalous curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of Anomalous curve.+_q :: Natural+_q = 0xb0000000000000000000000953000000000000000000001f9d7+{-# INLINABLE _q #-}++-- | Order of Anomalous curve.+_r :: Natural+_r = 0xb0000000000000000000000953000000000000000000001f9d7+{-# INLINABLE _r #-}++-- | Coordinate @X@ of Anomalous curve.+_x :: Fq+_x = 0x101efb35fd1963c4871a2d17edaafa7e249807f58f8705126c6+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of Anomalous curve.+_y :: Fq+_y = 0x22389a3954375834304ba1d509a97de6c07148ea7f5951b20e7+{-# INLINABLE _y #-}++-- | Generator of affine Anomalous curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian Anomalous curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective Anomalous curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BLS12381.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BLS12381+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BLS12381 curve+  , module Data.Curve.Weierstrass.BLS12381+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BLS12381 curve.+data BLS12381++-- | Field of points of BLS12381 curve.+type Fq = Prime Q+type Q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab++-- | Field of coefficients of BLS12381 curve.+type Fr = Prime R+type R = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001++-- BLS12381 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BLS12381 Fq Fr => WCurve c BLS12381 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BLS12381 curve point.+type PA = WAPoint BLS12381 Fq Fr++-- Affine BLS12381 curve is a Weierstrass affine curve.+instance WACurve BLS12381 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BLS12381 point.+type PJ = WJPoint BLS12381 Fq Fr++-- Jacobian BLS12381 curve is a Weierstrass Jacobian curve.+instance WJCurve BLS12381 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BLS12381 point.+type PP = WPPoint BLS12381 Fq Fr++-- Projective BLS12381 curve is a Weierstrass projective curve.+instance WPCurve BLS12381 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BLS12381 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BLS12381 curve.+_b :: Fq+_b = 0x4+{-# INLINABLE _b #-}++-- | Cofactor of BLS12381 curve.+_h :: Natural+_h = 0x396c8c005555e1568c00aaab0000aaab+{-# INLINABLE _h #-}++-- | Characteristic of BLS12381 curve.+_q :: Natural+_q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab+{-# INLINABLE _q #-}++-- | Order of BLS12381 curve.+_r :: Natural+_r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BLS12381 curve.+_x :: Fq+_x = 0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BLS12381 curve.+_y :: Fq+_y = 0x8b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1+{-# INLINABLE _y #-}++-- | Generator of affine BLS12381 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BLS12381 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BLS12381 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BLS12381T.hs view
@@ -0,0 +1,123 @@+module Data.Curve.Weierstrass.BLS12381T+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BLS12381 curve+  , module Data.Curve.Weierstrass.BLS12381T+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass+import Data.Curve.Weierstrass.BLS12381 (BLS12381, Fq, Fr)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Field of points of BLS12381 curve over @Fq2@.+type Fq2 = Extension U Fq+data U+instance IrreducibleMonic U Fq where+  poly _ = [1, 0, 1]+  {-# INLINABLE poly #-}++-- BLS12381 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BLS12381 Fq2 Fr => WCurve c BLS12381 Fq2 Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BLS12381 curve point.+type PA = WAPoint BLS12381 Fq2 Fr++-- Affine BLS12381 curve is a Weierstrass affine curve.+instance WACurve BLS12381 Fq2 Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BLS12381 point.+type PJ = WJPoint BLS12381 Fq2 Fr++-- Jacobian BLS12381 curve is a Weierstrass Jacobian curve.+instance WJCurve BLS12381 Fq2 Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BLS12381 point.+type PP = WPPoint BLS12381 Fq2 Fr++-- Projective BLS12381 curve is a Weierstrass projective curve.+instance WPCurve BLS12381 Fq2 Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BLS12381 curve.+_a :: Fq2+_a = toE' [+          ]+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BLS12381 curve.+_b :: Fq2+_b = toE' [ 0x4+          , 0x4+          ]+{-# INLINABLE _b #-}++-- | Cofactor of BLS12381 curve.+_h :: Natural+_h = 0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5+{-# INLINABLE _h #-}++-- | Characteristic of BLS12381 curve.+_q :: Natural+_q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab+{-# INLINABLE _q #-}++-- | Order of BLS12381 curve.+_r :: Natural+_r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BLS12381 curve.+_x :: Fq2+_x = toE' [ 0x24aa2b2f08f0a91260805272dc51051c6e47ad4fa403b02b4510b647ae3d1770bac0326a805bbefd48056c8c121bdb8+          , 0x13e02b6052719f607dacd3a088274f65596bd0d09920b61ab5da61bbdc7f5049334cf11213945d57e5ac7d055d042b7e+          ]+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BLS12381 curve.+_y :: Fq2+_y = toE' [ 0xce5d527727d6e118cc9cdc6da2e351aadfd9baa8cbdd3a76d429a695160d12c923ac9cc3baca289e193548608b82801+          , 0x606c4a02ea734cc32acd2b02bc28b99cb3e287e85a763af267492ab572e99ab3f370d275cec1da1aaa9075ff05f79be+          ]+{-# INLINABLE _y #-}++-- | Generator of affine BLS12381 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BLS12381 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BLS12381 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BLS48581.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BLS48581+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BLS48581 curve+  , module Data.Curve.Weierstrass.BLS48581+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BLS48581 curve.+data BLS48581++-- | Field of points of BLS48581 curve.+type Fq = Prime Q+type Q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b++-- | Field of coefficients of BLS48581 curve.+type Fr = Prime R+type R = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01++-- BLS48581 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BLS48581 Fq Fr => WCurve c BLS48581 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BLS48581 curve point.+type PA = WAPoint BLS48581 Fq Fr++-- Affine BLS48581 curve is a Weierstrass affine curve.+instance WACurve BLS48581 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BLS48581 point.+type PJ = WJPoint BLS48581 Fq Fr++-- Jacobian BLS48581 curve is a Weierstrass Jacobian curve.+instance WJCurve BLS48581 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BLS48581 point.+type PP = WPPoint BLS48581 Fq Fr++-- Projective BLS48581 curve is a Weierstrass projective curve.+instance WPCurve BLS48581 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BLS48581 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BLS48581 curve.+_b :: Fq+_b = 0x1+{-# INLINABLE _b #-}++-- | Cofactor of BLS48581 curve.+_h :: Natural+_h = 0x85555841aaaec4ac+{-# INLINABLE _h #-}++-- | Characteristic of BLS48581 curve.+_q :: Natural+_q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b+{-# INLINABLE _q #-}++-- | Order of BLS48581 curve.+_r :: Natural+_r = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BLS48581 curve.+_x :: Fq+_x = 0x2af59b7ac340f2baf2b73df1e93f860de3f257e0e86868cf61abdbaedffb9f7544550546a9df6f9645847665d859236ebdbc57db368b11786cb74da5d3a1e6d8c3bce8732315af640+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BLS48581 curve.+_y :: Fq+_y = 0xcefda44f6531f91f86b3a2d1fb398a488a553c9efeb8a52e991279dd41b720ef7bb7beffb98aee53e80f678584c3ef22f487f77c2876d1b2e35f37aef7b926b576dbb5de3e2587a70+{-# INLINABLE _y #-}++-- | Generator of affine BLS48581 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BLS48581 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BLS48581 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BLS48581T.hs view
@@ -0,0 +1,165 @@+module Data.Curve.Weierstrass.BLS48581T+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BLS48581 curve+  , module Data.Curve.Weierstrass.BLS48581T+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass+import Data.Curve.Weierstrass.BLS48581 (BLS48581, Fq, Fr)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Field of points of BLS48581 curve over @Fq2@.+type Fq2 = Extension U Fq+data U+instance IrreducibleMonic U Fq where+  poly _ = [1, 0, 1]+  {-# INLINABLE poly #-}+-- | Field of points of BLS48581 curve over @Fq4@.+type Fq4 = Extension V Fq2+data V+instance IrreducibleMonic V Fq2 where+  poly _ = [U + 1, 0, 1]+  {-# INLINABLE poly #-}+-- | Field of points of BLS48581 curve over @Fq8@.+type Fq8 = Extension W Fq4+data W+instance IrreducibleMonic W Fq4 where+  poly _ = [U, 0, 1]+  {-# INLINABLE poly #-}++-- BLS48581 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BLS48581 Fq8 Fr => WCurve c BLS48581 Fq8 Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BLS48581 curve point.+type PA = WAPoint BLS48581 Fq8 Fr++-- Affine BLS48581 curve is a Weierstrass affine curve.+instance WACurve BLS48581 Fq8 Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BLS48581 point.+type PJ = WJPoint BLS48581 Fq8 Fr++-- Jacobian BLS48581 curve is a Weierstrass Jacobian curve.+instance WJCurve BLS48581 Fq8 Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BLS48581 point.+type PP = WPPoint BLS48581 Fq8 Fr++-- Projective BLS48581 curve is a Weierstrass projective curve.+instance WPCurve BLS48581 Fq8 Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BLS48581 curve.+_a :: Fq8+_a = toE' [+          ]+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BLS48581 curve.+_b :: Fq8+_b = toE' [ toE' [+                 ]+          , toE' [ toE' [+                        ]+                 , toE' [ 0x9407b9ff9a3b7989c12718ea38095002b7427c6891098dd9df36078f9cbaa225245721d7b7041566ce6981ca7a39b6d7b41b3d2a898b877052bc7efb90d2524561f6e0aa732b2c895+                        , 0x9407b9ff9a3b7989c12718ea38095002b7427c6891098dd9df36078f9cbaa225245721d7b7041566ce6981ca7a39b6d7b41b3d2a898b877052bc7efb90d2524561f6e0aa732b2c896+                        ]+                 ]+          ]+{-# INLINABLE _b #-}++-- | Cofactor of BLS48581 curve.+_h :: Natural+_h = 0x170e915cb0a6b7406b8d94042317f811d6bc3fc6e211ada42e58ccfcb3ac076a7e4499d700a0c23dc4b0c078f92def8c87b7fe63e1eea270db353a4ef4d38b5998ad8f0d042ea24c8f02be1c0c83992fe5d7725227bb27123a949e0876c0a8ce0a67326db0e955dcb791b867f31d6bfa62fbdd5f44a00504df04e186fae033f1eb43c1b1a08b6e086eff03c8fee9ebdd1e191a8a4b0466c90b389987de5637d5dd13dab33196bd2e5afa6cd19cf0fc3fc7db7ece1f3fac742626b1b02fcee04043b2ea96492f6afa51739597c54bb78aa6b0b99319fef9d09f768831018ee6564c68d054c62f2e0b4549426fec24ab26957a669dba2a2b6945ce40c9aec6afdeda16c79e15546cd7771fa544d5364236690ea06832679562a68731420ae52d0d35a90b8d10b688e31b6aee45f45b7a5083c71732105852decc888f64839a4de33b99521f0984a418d20fc7b0609530e454f0696fa2a8075ac01cc8ae3869e8d0fe1f3788ffac4c01aa2720e431da333c83d9663bfb1fb7a1a7b90528482c6be7892299030bb51a51dc7e91e9156874416bf4c26f1ea7ec578058563960ef92bbbb8632d3a1b695f954af10e9a78e40acffc13b06540aae9da5287fc4429485d44e6289d8c0d6a3eb2ece35012452751839fb48bc14b515478e2ff412d930ac20307561f3a5c998e6bcbfebd97effc6433033a2361bfcdc4fc74ad379a16c6dea49c209b1+{-# INLINABLE _h #-}++-- | Characteristic of BLS48581 curve.+_q :: Natural+_q = 0x1280f73ff3476f313824e31d47012a0056e84f8d122131bb3be6c0f1f3975444a48ae43af6e082acd9cd30394f4736daf68367a5513170ee0a578fdf721a4a48ac3edc154e6565912b+{-# INLINABLE _q #-}++-- | Order of BLS48581 curve.+_r :: Natural+_r = 0x2386f8a925e2885e233a9ccc1615c0d6c635387a3f0b3cbe003fad6bc972c2e6e741969d34c4c92016a85c7cd0562303c4ccbe599467c24da118a5fe6fcd671c01+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BLS48581 curve.+_x :: Fq8+_x = toE' [ toE' [ toE' [ 0x5d615d9a7871e4a38237fa45a2775debabbefc70344dbccb7de64db3a2ef156c46ff79baad1a8c42281a63ca0612f400503004d80491f510317b79766322154dec34fd0b4ace8bfab+                        , 0x7c4973ece2258512069b0e86abc07e8b22bb6d980e1623e9526f6da12307f4e1c3943a00abfedf16214a76affa62504f0c3c7630d979630ffd75556a01afa143f1669b36676b47c57+                        ]+                 , toE' [ 0x1fccc70198f1334e1b2ea1853ad83bc73a8a6ca9ae237ca7a6d6957ccbab5ab6860161c1dbd19242ffae766f0d2a6d55f028cbdfbb879d5fea8ef4cded6b3f0b46488156ca55a3e6a+                        , 0xbe2218c25ceb6185c78d8012954d4bfe8f5985ac62f3e5821b7b92a393f8be0cc218a95f63e1c776e6ec143b1b279b9468c31c5257c200ca52310b8cb4e80bc3f09a7033cbb7feafe+                        ]+                 ]+          , toE' [ toE' [ 0x38b91c600b35913a3c598e4caa9dd63007c675d0b1642b5675ff0e7c5805386699981f9e48199d5ac10b2ef492ae589274fad55fc1889aa80c65b5f746c9d4cbb739c3a1c53f8cce5+                        , 0xc96c7797eb0738603f1311e4ecda088f7b8f35dcef0977a3d1a58677bb037418181df63835d28997eb57b40b9c0b15dd7595a9f177612f097fc7960910fce3370f2004d914a3c093a+                        ]+                 , toE' [ 0xb9b7951c6061ee3f0197a498908aee660dea41b39d13852b6db908ba2c0b7a449cef11f293b13ced0fd0caa5efcf3432aad1cbe4324c22d63334b5b0e205c3354e41607e60750e057+                        , 0x827d5c22fb2bdec5282624c4f4aaa2b1e5d7a9defaf47b5211cf741719728a7f9f8cfca93f29cff364a7190b7e2b0d4585479bd6aebf9fc44e56af2fc9e97c3f84e19da00fbc6ae34+                        ]+                 ]+          ]+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BLS48581 curve.+_y :: Fq8+_y = toE' [ toE' [ toE' [ 0xeb53356c375b5dfa497216452f3024b918b4238059a577e6f3b39ebfc435faab0906235afa27748d90f7336d8ae5163c1599abf77eea6d659045012ab12c0ff323edd3fe4d2d7971+                        , 0x284dc75979e0ff144da6531815fcadc2b75a422ba325e6fba01d72964732fcbf3afb096b243b1f192c5c3d1892ab24e1dd212fa097d760e2e588b423525ffc7b111471db936cd5665+                        ]+                 , toE' [ 0xb36a201dd008523e421efb70367669ef2c2fc5030216d5b119d3a480d370514475f7d5c99d0e90411515536ca3295e5e2f0c1d35d51a652269cbc7c46fc3b8fde68332a526a2a8474+                        , 0xaec25a4621edc0688223fbbd478762b1c2cded3360dcee23dd8b0e710e122d2742c89b224333fa40dced2817742770ba10d67bda503ee5e578fb3d8b8a1e5337316213da92841589d+                        ]+                 ]+          , toE' [ toE' [ 0xd209d5a223a9c46916503fa5a88325a2554dc541b43dd93b5a959805f1129857ed85c77fa238cdce8a1e2ca4e512b64f59f430135945d137b08857fdddfcf7a43f47831f982e50137+                        , 0x7d0d03745736b7a513d339d5ad537b90421ad66eb16722b589d82e2055ab7504fa83420e8c270841f6824f47c180d139e3aafc198caa72b679da59ed8226cf3a594eedc58cf90bee4+                        ]+                 , toE' [ 0x896767811be65ea25c2d05dfdd17af8a006f364fc0841b064155f14e4c819a6df98f425ae3a2864f22c1fab8c74b2618b5bb40fa639f53dccc9e884017d9aa62b3d41faeafeb23986+                        , 0x35e2524ff89029d393a5c07e84f981b5e068f1406be8e50c87549b6ef8eca9a9533a3f8e69c31e97e1ad0333ec719205417300d8c4ab33f748e5ac66e84069c55d667ffcb732718b6+                        ]+                 ]+          ]+{-# INLINABLE _y #-}++-- | Generator of affine BLS48581 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BLS48581 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BLS48581 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN224.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN224+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN224 curve+  , module Data.Curve.Weierstrass.BN224+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN224 curve.+data BN224++-- | Field of points of BN224 curve.+type Fq = Prime Q+type Q = 0xfffffffffff107288ec29e602c4520db42180823bb907d1287127833++-- | Field of coefficients of BN224 curve.+type Fr = Prime R+type R = 0xfffffffffff107288ec29e602c4420db4218082b36c2accff76c58ed++-- BN224 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN224 Fq Fr => WCurve c BN224 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN224 curve point.+type PA = WAPoint BN224 Fq Fr++-- Affine BN224 curve is a Weierstrass affine curve.+instance WACurve BN224 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN224 point.+type PJ = WJPoint BN224 Fq Fr++-- Jacobian BN224 curve is a Weierstrass Jacobian curve.+instance WJCurve BN224 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN224 point.+type PP = WPPoint BN224 Fq Fr++-- Projective BN224 curve is a Weierstrass projective curve.+instance WPCurve BN224 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN224 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN224 curve.+_b :: Fq+_b = 0x3+{-# INLINABLE _b #-}++-- | Cofactor of BN224 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN224 curve.+_q :: Natural+_q = 0xfffffffffff107288ec29e602c4520db42180823bb907d1287127833+{-# INLINABLE _q #-}++-- | Order of BN224 curve.+_r :: Natural+_r = 0xfffffffffff107288ec29e602c4420db4218082b36c2accff76c58ed+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN224 curve.+_x :: Fq+_x = 0x1+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN224 curve.+_y :: Fq+_y = 0x2+{-# INLINABLE _y #-}++-- | Generator of affine BN224 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN224 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN224 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN254+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254 curve+  , module Data.Curve.Weierstrass.BN254+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN254 curve.+data BN254++-- | Field of points of BN254 curve.+type Fq = Prime Q+type Q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47++-- | Field of coefficients of BN254 curve.+type Fr = Prime R+type R = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001++-- BN254 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254 Fq Fr => WCurve c BN254 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254 curve point.+type PA = WAPoint BN254 Fq Fr++-- Affine BN254 curve is a Weierstrass affine curve.+instance WACurve BN254 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254 point.+type PJ = WJPoint BN254 Fq Fr++-- Jacobian BN254 curve is a Weierstrass Jacobian curve.+instance WJCurve BN254 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254 point.+type PP = WPPoint BN254 Fq Fr++-- Projective BN254 curve is a Weierstrass projective curve.+instance WPCurve BN254 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254 curve.+_b :: Fq+_b = 0x3+{-# INLINABLE _b #-}++-- | Cofactor of BN254 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN254 curve.+_q :: Natural+_q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47+{-# INLINABLE _q #-}++-- | Order of BN254 curve.+_r :: Natural+_r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254 curve.+_x :: Fq+_x = 0x1+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254 curve.+_y :: Fq+_y = 0x2+{-# INLINABLE _y #-}++-- | Generator of affine BN254 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254A.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN254A+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254A curve+  , module Data.Curve.Weierstrass.BN254A+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN254A curve.+data BN254A++-- | Field of points of BN254A curve.+type Fq = Prime Q+type Q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001++-- | Field of coefficients of BN254A curve.+type Fr = Prime R+type R = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001++-- BN254A curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254A Fq Fr => WCurve c BN254A Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254A curve point.+type PA = WAPoint BN254A Fq Fr++-- Affine BN254A curve is a Weierstrass affine curve.+instance WACurve BN254A Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254A point.+type PJ = WJPoint BN254A Fq Fr++-- Jacobian BN254A curve is a Weierstrass Jacobian curve.+instance WJCurve BN254A Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254A point.+type PP = WPPoint BN254A Fq Fr++-- Projective BN254A curve is a Weierstrass projective curve.+instance WPCurve BN254A Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254A curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254A curve.+_b :: Fq+_b = 0x5+{-# INLINABLE _b #-}++-- | Cofactor of BN254A curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN254A curve.+_q :: Natural+_q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001+{-# INLINABLE _q #-}++-- | Order of BN254A curve.+_r :: Natural+_r = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254A curve.+_x :: Fq+_x = 0x1+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254A curve.+_y :: Fq+_y = 0xd45589b158faaf6ab0e4ad38d998e9982e7ff63964ee1460342a592677cccb0+{-# INLINABLE _y #-}++-- | Generator of affine BN254A curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254A curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254A curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254AT.hs view
@@ -0,0 +1,123 @@+module Data.Curve.Weierstrass.BN254AT+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254A curve+  , module Data.Curve.Weierstrass.BN254AT+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass+import Data.Curve.Weierstrass.BN254A (BN254A, Fq, Fr)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Field of points of BN254A curve over @Fq2@.+type Fq2 = Extension U Fq+data U+instance IrreducibleMonic U Fq where+  poly _ = [5, 0, 1]+  {-# INLINABLE poly #-}++-- BN254A curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254A Fq2 Fr => WCurve c BN254A Fq2 Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254A curve point.+type PA = WAPoint BN254A Fq2 Fr++-- Affine BN254A curve is a Weierstrass affine curve.+instance WACurve BN254A Fq2 Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254A point.+type PJ = WJPoint BN254A Fq2 Fr++-- Jacobian BN254A curve is a Weierstrass Jacobian curve.+instance WJCurve BN254A Fq2 Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254A point.+type PP = WPPoint BN254A Fq2 Fr++-- Projective BN254A curve is a Weierstrass projective curve.+instance WPCurve BN254A Fq2 Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254A curve.+_a :: Fq2+_a = toE' [+          ]+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254A curve.+_b :: Fq2+_b = toE' [ 0x0+          , 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000000+          ]+{-# INLINABLE _b #-}++-- | Cofactor of BN254A curve.+_h :: Natural+_h = 0x2370fb049d410fbe4e761a9886e50241dc42cf101e0000017e80600000000001+{-# INLINABLE _h #-}++-- | Characteristic of BN254A curve.+_q :: Natural+_q = 0x2370fb049d410fbe4e761a9886e502417d023f40180000017e80600000000001+{-# INLINABLE _q #-}++-- | Order of BN254A curve.+_r :: Natural+_r = 0x2370fb049d410fbe4e761a9886e502411dc1af70120000017e80600000000001+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254A curve.+_x :: Fq2+_x = toE' [ 0x19b0bea4afe4c330da93cc3533da38a9f430b471c6f8a536e81962ed967909b5+          , 0xa1cf585585a61c6e9880b1f2a5c539f7d906fff238fa6341e1de1a2e45c3f72+          ]+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254A curve.+_y :: Fq2+_y = toE' [ 0x17abd366ebbd65333e49c711a80a0cf6d24adf1b9b3990eedcc91731384d2627+          , 0xee97d6de9902a27d00e952232a78700863bc9aa9be960c32f5bf9fd0a32d345+          ]+{-# INLINABLE _y #-}++-- | Generator of affine BN254A curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254A curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254A curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254B.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN254B+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254B curve+  , module Data.Curve.Weierstrass.BN254B+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN254B curve.+data BN254B++-- | Field of points of BN254B curve.+type Fq = Prime Q+type Q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013++-- | Field of coefficients of BN254B curve.+type Fr = Prime R+type R = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d++-- BN254B curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254B Fq Fr => WCurve c BN254B Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254B curve point.+type PA = WAPoint BN254B Fq Fr++-- Affine BN254B curve is a Weierstrass affine curve.+instance WACurve BN254B Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254B point.+type PJ = WJPoint BN254B Fq Fr++-- Jacobian BN254B curve is a Weierstrass Jacobian curve.+instance WJCurve BN254B Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254B point.+type PP = WPPoint BN254B Fq Fr++-- Projective BN254B curve is a Weierstrass projective curve.+instance WPCurve BN254B Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254B curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254B curve.+_b :: Fq+_b = 0x2+{-# INLINABLE _b #-}++-- | Cofactor of BN254B curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN254B curve.+_q :: Natural+_q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013+{-# INLINABLE _q #-}++-- | Order of BN254B curve.+_r :: Natural+_r = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254B curve.+_x :: Fq+_x = 0x2523648240000001ba344d80000000086121000000000013a700000000000012+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254B curve.+_y :: Fq+_y = 0x1+{-# INLINABLE _y #-}++-- | Generator of affine BN254B curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254B curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254B curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254BT.hs view
@@ -0,0 +1,123 @@+module Data.Curve.Weierstrass.BN254BT+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254B curve+  , module Data.Curve.Weierstrass.BN254BT+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass+import Data.Curve.Weierstrass.BN254B (BN254B, Fq, Fr)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Field of points of BN254B curve over @Fq2@.+type Fq2 = Extension U Fq+data U+instance IrreducibleMonic U Fq where+  poly _ = [1, 0, 1]+  {-# INLINABLE poly #-}++-- BN254B curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254B Fq2 Fr => WCurve c BN254B Fq2 Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254B curve point.+type PA = WAPoint BN254B Fq2 Fr++-- Affine BN254B curve is a Weierstrass affine curve.+instance WACurve BN254B Fq2 Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254B point.+type PJ = WJPoint BN254B Fq2 Fr++-- Jacobian BN254B curve is a Weierstrass Jacobian curve.+instance WJCurve BN254B Fq2 Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254B point.+type PP = WPPoint BN254B Fq2 Fr++-- Projective BN254B curve is a Weierstrass projective curve.+instance WPCurve BN254B Fq2 Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254B curve.+_a :: Fq2+_a = toE' [+          ]+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254B curve.+_b :: Fq2+_b = toE' [ 0x1+          , 0x2523648240000001ba344d80000000086121000000000013a700000000000012+          ]+{-# INLINABLE _b #-}++-- | Cofactor of BN254B curve.+_h :: Natural+_h = 0x2523648240000001ba344d8000000008c2a2800000000016ad00000000000019+{-# INLINABLE _h #-}++-- | Characteristic of BN254B curve.+_q :: Natural+_q = 0x2523648240000001ba344d80000000086121000000000013a700000000000013+{-# INLINABLE _q #-}++-- | Order of BN254B curve.+_r :: Natural+_r = 0x2523648240000001ba344d8000000007ff9f800000000010a10000000000000d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254B curve.+_x :: Fq2+_x = toE' [ 0x61a10bb519eb62feb8d8c7e8c61edb6a4648bbb4898bf0d91ee4224c803fb2b+          , 0x516aaf9ba737833310aa78c5982aa5b1f4d746bae3784b70d8c34c1e7d54cf3+          ]+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254B curve.+_y :: Fq2+_y = toE' [ 0x21897a06baf93439a90e096698c822329bd0ae6bdbe09bd19f0e07891cd2b9a+          , 0xebb2b0e7c8b15268f6d4456f5f38d37b09006ffd739c9578a2d1aec6b3ace9b+          ]+{-# INLINABLE _y #-}++-- | Generator of affine BN254B curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254B curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254B curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254C.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN254C+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254C curve+  , module Data.Curve.Weierstrass.BN254C+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN254C curve.+data BN254C++-- | Field of points of BN254C curve.+type Fq = Prime Q+type Q = 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a713++-- | Field of coefficients of BN254C curve.+type Fr = Prime R+type R = 0x240120db6517014efa0bab3696f8d5f00e88d43492b2cb363a75777e8d30210d++-- BN254C curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254C Fq Fr => WCurve c BN254C Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254C curve point.+type PA = WAPoint BN254C Fq Fr++-- Affine BN254C curve is a Weierstrass affine curve.+instance WACurve BN254C Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254C point.+type PJ = WJPoint BN254C Fq Fr++-- Jacobian BN254C curve is a Weierstrass Jacobian curve.+instance WJCurve BN254C Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254C point.+type PP = WPPoint BN254C Fq Fr++-- Projective BN254C curve is a Weierstrass projective curve.+instance WPCurve BN254C Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254C curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254C curve.+_b :: Fq+_b = 0x2+{-# INLINABLE _b #-}++-- | Cofactor of BN254C curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN254C curve.+_q :: Natural+_q = 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a713+{-# INLINABLE _q #-}++-- | Order of BN254C curve.+_r :: Natural+_r = 0x240120db6517014efa0bab3696f8d5f00e88d43492b2cb363a75777e8d30210d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254C curve.+_x :: Fq+_x = 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a712+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254C curve.+_y :: Fq+_y = 0x1+{-# INLINABLE _y #-}++-- | Generator of affine BN254C curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254C curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254C curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254CT.hs view
@@ -0,0 +1,123 @@+module Data.Curve.Weierstrass.BN254CT+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254C curve+  , module Data.Curve.Weierstrass.BN254CT+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass+import Data.Curve.Weierstrass.BN254C (BN254C, Fq, Fr)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Field of points of BN254C curve over @Fq2@.+type Fq2 = Extension U Fq+data U+instance IrreducibleMonic U Fq where+  poly _ = [1, 0, 1]+  {-# INLINABLE poly #-}++-- BN254C curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254C Fq2 Fr => WCurve c BN254C Fq2 Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254C curve point.+type PA = WAPoint BN254C Fq2 Fr++-- Affine BN254C curve is a Weierstrass affine curve.+instance WACurve BN254C Fq2 Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254C point.+type PJ = WJPoint BN254C Fq2 Fr++-- Jacobian BN254C curve is a Weierstrass Jacobian curve.+instance WJCurve BN254C Fq2 Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254C point.+type PP = WPPoint BN254C Fq2 Fr++-- Projective BN254C curve is a Weierstrass projective curve.+instance WPCurve BN254C Fq2 Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254C curve.+_a :: Fq2+_a = toE' [+          ]+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254C curve.+_b :: Fq2+_b = toE' [ 0x1+          , 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a712+          ]+{-# INLINABLE _b #-}++-- | Cofactor of BN254C curve.+_h :: Natural+_h = 0x240120db6517014efa0bab3696f8d5f0ce8bd6779735fe3f42c6007f50392d19+{-# INLINABLE _h #-}++-- | Characteristic of BN254C curve.+_q :: Natural+_q = 0x240120db6517014efa0bab3696f8d5f06e8a555614f464babe9dbbfeeeb4a713+{-# INLINABLE _q #-}++-- | Order of BN254C curve.+_r :: Natural+_r = 0x240120db6517014efa0bab3696f8d5f00e88d43492b2cb363a75777e8d30210d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254C curve.+_x :: Fq2+_x = toE' [ 0x571af2ea9666eb2a53f3fb837172bdd809c03a95c5870f34a8cb340220bf9c0+          , 0xf71abb712a9e6e12c07b58bc01f2f994c3b5a1531cf96609b838e5ccf05bc71+          ]+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254C curve.+_y :: Fq2+_y = toE' [ 0xb88822fe134c1695b21419bb1ab9732f707701046a2e6ff3ad10f3c70284b93+          , 0x1659b723676b5af5231fb045b3d822c0de6fcaab171bad9c8951afc800a26775+          ]+{-# INLINABLE _y #-}++-- | Generator of affine BN254C curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254C curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254C curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254D.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN254D+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254D curve+  , module Data.Curve.Weierstrass.BN254D+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN254D curve.+data BN254D++-- | Field of points of BN254D curve.+type Fq = Prime Q+type Q = 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48b++-- | Field of coefficients of BN254D curve.+type Fr = Prime R+type R = 0x24000482410f5aadb74e200f3b89d00021cf8de127b73833d7fb71a511aa2bf5++-- BN254D curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254D Fq Fr => WCurve c BN254D Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254D curve point.+type PA = WAPoint BN254D Fq Fr++-- Affine BN254D curve is a Weierstrass affine curve.+instance WACurve BN254D Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254D point.+type PJ = WJPoint BN254D Fq Fr++-- Jacobian BN254D curve is a Weierstrass Jacobian curve.+instance WJCurve BN254D Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254D point.+type PP = WPPoint BN254D Fq Fr++-- Projective BN254D curve is a Weierstrass projective curve.+instance WPCurve BN254D Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254D curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254D curve.+_b :: Fq+_b = 0x2+{-# INLINABLE _b #-}++-- | Cofactor of BN254D curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN254D curve.+_q :: Natural+_q = 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48b+{-# INLINABLE _q #-}++-- | Order of BN254D curve.+_r :: Natural+_r = 0x24000482410f5aadb74e200f3b89d00021cf8de127b73833d7fb71a511aa2bf5+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254D curve.+_x :: Fq+_x = 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48a+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254D curve.+_y :: Fq+_y = 0x1+{-# INLINABLE _y #-}++-- | Generator of affine BN254D curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254D curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254D curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254DT.hs view
@@ -0,0 +1,123 @@+module Data.Curve.Weierstrass.BN254DT+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254D curve+  , module Data.Curve.Weierstrass.BN254DT+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass+import Data.Curve.Weierstrass.BN254D (BN254D, Fq, Fr)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Field of points of BN254D curve over @Fq2@.+type Fq2 = Extension U Fq+data U+instance IrreducibleMonic U Fq where+  poly _ = [1, 0, 1]+  {-# INLINABLE poly #-}++-- BN254D curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254D Fq2 Fr => WCurve c BN254D Fq2 Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254D curve point.+type PA = WAPoint BN254D Fq2 Fr++-- Affine BN254D curve is a Weierstrass affine curve.+instance WACurve BN254D Fq2 Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254D point.+type PJ = WJPoint BN254D Fq2 Fr++-- Jacobian BN254D curve is a Weierstrass Jacobian curve.+instance WJCurve BN254D Fq2 Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254D point.+type PP = WPPoint BN254D Fq2 Fr++-- Projective BN254D curve is a Weierstrass projective curve.+instance WPCurve BN254D Fq2 Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254D curve.+_a :: Fq2+_a = toE' [+          ]+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254D curve.+_b :: Fq2+_b = toE' [ 0x1+          , 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48a+          ]+{-# INLINABLE _b #-}++-- | Cofactor of BN254D curve.+_h :: Natural+_h = 0x24000482410f5aadb74e200f3b89d000e1cf99e72a2a746ff96a46b257171d21+{-# INLINABLE _h #-}++-- | Characteristic of BN254D curve.+_q :: Natural+_q = 0x24000482410f5aadb74e200f3b89d00081cf93e428f0d651e8b2dc2bb460a48b+{-# INLINABLE _q #-}++-- | Order of BN254D curve.+_r :: Natural+_r = 0x24000482410f5aadb74e200f3b89d00021cf8de127b73833d7fb71a511aa2bf5+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254D curve.+_x :: Fq2+_x = toE' [ 0x20cfe8b965fc444008a21b12cd2a55f843c1dd68ba12a8bb1f1dde3533b91a32+          , 0x176f822a5ee7ada449f8f876ee001508dd43b5413e03c8f4ad3e3b38dadaf51+          ]+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254D curve.+_y :: Fq2+_y = toE' [ 0x2b27f22c2920fee3b4af218b6d92421780a9bdc66155142fecef3af7f58e872+          , 0x14e9c62a36ebce710810576b5401fdf0b28126ad2d563bf5043be3347646dfb4+          ]+{-# INLINABLE _y #-}++-- | Generator of affine BN254D curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254D curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254D curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN254T.hs view
@@ -0,0 +1,123 @@+module Data.Curve.Weierstrass.BN254T+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN254 curve+  , module Data.Curve.Weierstrass.BN254T+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass+import Data.Curve.Weierstrass.BN254 (BN254, Fq, Fr)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Field of points of BN254 curve over @Fq2@.+type Fq2 = Extension U Fq+data U+instance IrreducibleMonic U Fq where+  poly _ = [1, 0, 1]+  {-# INLINABLE poly #-}++-- BN254 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN254 Fq2 Fr => WCurve c BN254 Fq2 Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN254 curve point.+type PA = WAPoint BN254 Fq2 Fr++-- Affine BN254 curve is a Weierstrass affine curve.+instance WACurve BN254 Fq2 Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN254 point.+type PJ = WJPoint BN254 Fq2 Fr++-- Jacobian BN254 curve is a Weierstrass Jacobian curve.+instance WJCurve BN254 Fq2 Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN254 point.+type PP = WPPoint BN254 Fq2 Fr++-- Projective BN254 curve is a Weierstrass projective curve.+instance WPCurve BN254 Fq2 Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN254 curve.+_a :: Fq2+_a = toE' [+          ]+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN254 curve.+_b :: Fq2+_b = toE' [ 0x2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5+          , 0x9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2+          ]+{-# INLINABLE _b #-}++-- | Cofactor of BN254 curve.+_h :: Natural+_h = 0x30644e72e131a029b85045b68181585e06ceecda572a2489345f2299c0f9fa8d+{-# INLINABLE _h #-}++-- | Characteristic of BN254 curve.+_q :: Natural+_q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47+{-# INLINABLE _q #-}++-- | Order of BN254 curve.+_r :: Natural+_r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN254 curve.+_x :: Fq2+_x = toE' [ 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed+          , 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2+          ]+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN254 curve.+_y :: Fq2+_y = toE' [ 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa+          , 0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b+          ]+{-# INLINABLE _y #-}++-- | Generator of affine BN254 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN254 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN254 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN256.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN256+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN256 curve+  , module Data.Curve.Weierstrass.BN256+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN256 curve.+data BN256++-- | Field of points of BN256 curve.+type Fq = Prime Q+type Q = 0xfffffffffffcf0cd46e5f25eee71a49f0cdc65fb12980a82d3292ddbaed33013++-- | Field of coefficients of BN256 curve.+type Fr = Prime R+type R = 0xfffffffffffcf0cd46e5f25eee71a49e0cdc65fb1299921af62d536cd10b500d++-- BN256 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN256 Fq Fr => WCurve c BN256 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN256 curve point.+type PA = WAPoint BN256 Fq Fr++-- Affine BN256 curve is a Weierstrass affine curve.+instance WACurve BN256 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN256 point.+type PJ = WJPoint BN256 Fq Fr++-- Jacobian BN256 curve is a Weierstrass Jacobian curve.+instance WJCurve BN256 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN256 point.+type PP = WPPoint BN256 Fq Fr++-- Projective BN256 curve is a Weierstrass projective curve.+instance WPCurve BN256 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN256 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN256 curve.+_b :: Fq+_b = 0x3+{-# INLINABLE _b #-}++-- | Cofactor of BN256 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN256 curve.+_q :: Natural+_q = 0xfffffffffffcf0cd46e5f25eee71a49f0cdc65fb12980a82d3292ddbaed33013+{-# INLINABLE _q #-}++-- | Order of BN256 curve.+_r :: Natural+_r = 0xfffffffffffcf0cd46e5f25eee71a49e0cdc65fb1299921af62d536cd10b500d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN256 curve.+_x :: Fq+_x = 0x1+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN256 curve.+_y :: Fq+_y = 0x2+{-# INLINABLE _y #-}++-- | Generator of affine BN256 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN256 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN256 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN384.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN384+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN384 curve+  , module Data.Curve.Weierstrass.BN384+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN384 curve.+data BN384++-- | Field of points of BN384 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca024c8fbe29531892c79534f9d306328261550a7cabd7cccd10b++-- | Field of coefficients of BN384 curve.+type Fr = Prime R+type R = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca023c8fbe29531892c795356487d8ac63e4f4db17384341a5775++-- BN384 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN384 Fq Fr => WCurve c BN384 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN384 curve point.+type PA = WAPoint BN384 Fq Fr++-- Affine BN384 curve is a Weierstrass affine curve.+instance WACurve BN384 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN384 point.+type PJ = WJPoint BN384 Fq Fr++-- Jacobian BN384 curve is a Weierstrass Jacobian curve.+instance WJCurve BN384 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN384 point.+type PP = WPPoint BN384 Fq Fr++-- Projective BN384 curve is a Weierstrass projective curve.+instance WPCurve BN384 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN384 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN384 curve.+_b :: Fq+_b = 0x3+{-# INLINABLE _b #-}++-- | Cofactor of BN384 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN384 curve.+_q :: Natural+_q = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca024c8fbe29531892c79534f9d306328261550a7cabd7cccd10b+{-# INLINABLE _q #-}++-- | Order of BN384 curve.+_r :: Natural+_r = 0xfffffffffffffffffff2a96823d5920d2a127e3f6fbca023c8fbe29531892c795356487d8ac63e4f4db17384341a5775+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN384 curve.+_x :: Fq+_x = 0x1+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN384 curve.+_y :: Fq+_y = 0x2+{-# INLINABLE _y #-}++-- | Generator of affine BN384 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN384 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN384 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN462.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN462+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN462 curve+  , module Data.Curve.Weierstrass.BN462+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN462 curve.+data BN462++-- | Field of points of BN462 curve.+type Fq = Prime Q+type Q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013++-- | Field of coefficients of BN462 curve.+type Fr = Prime R+type R = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d++-- BN462 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN462 Fq Fr => WCurve c BN462 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN462 curve point.+type PA = WAPoint BN462 Fq Fr++-- Affine BN462 curve is a Weierstrass affine curve.+instance WACurve BN462 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN462 point.+type PJ = WJPoint BN462 Fq Fr++-- Jacobian BN462 curve is a Weierstrass Jacobian curve.+instance WJCurve BN462 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN462 point.+type PP = WPPoint BN462 Fq Fr++-- Projective BN462 curve is a Weierstrass projective curve.+instance WPCurve BN462 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN462 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN462 curve.+_b :: Fq+_b = 0x5+{-# INLINABLE _b #-}++-- | Cofactor of BN462 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN462 curve.+_q :: Natural+_q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013+{-# INLINABLE _q #-}++-- | Order of BN462 curve.+_r :: Natural+_r = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN462 curve.+_x :: Fq+_x = 0x21a6d67ef250191fadba34a0a30160b9ac9264b6f95f63b3edbec3cf4b2e689db1bbb4e69a416a0b1e79239c0372e5cd70113c98d91f36b6980d+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN462 curve.+_y :: Fq+_y = 0x118ea0460f7f7abb82b33676a7432a490eeda842cccfa7d788c659650426e6af77df11b8ae40eb80f475432c66600622ecaa8a5734d36fb03de+{-# INLINABLE _y #-}++-- | Generator of affine BN462 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN462 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN462 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN462T.hs view
@@ -0,0 +1,123 @@+module Data.Curve.Weierstrass.BN462T+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN462 curve+  , module Data.Curve.Weierstrass.BN462T+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass+import Data.Curve.Weierstrass.BN462 (BN462, Fq, Fr)++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | Field of points of BN462 curve over @Fq2@.+type Fq2 = Extension U Fq+data U+instance IrreducibleMonic U Fq where+  poly _ = [1, 0, 1]+  {-# INLINABLE poly #-}++-- BN462 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN462 Fq2 Fr => WCurve c BN462 Fq2 Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN462 curve point.+type PA = WAPoint BN462 Fq2 Fr++-- Affine BN462 curve is a Weierstrass affine curve.+instance WACurve BN462 Fq2 Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN462 point.+type PJ = WJPoint BN462 Fq2 Fr++-- Jacobian BN462 curve is a Weierstrass Jacobian curve.+instance WJCurve BN462 Fq2 Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN462 point.+type PP = WPPoint BN462 Fq2 Fr++-- Projective BN462 curve is a Weierstrass projective curve.+instance WPCurve BN462 Fq2 Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN462 curve.+_a :: Fq2+_a = toE' [+          ]+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN462 curve.+_b :: Fq2+_b = toE' [ 0x2+          , 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138012+          ]+{-# INLINABLE _b #-}++-- | Cofactor of BN462 curve.+_h :: Natural+_h = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908fa1ce0227fffffffff6ff66fc63f5f7f4c0000000002401b008a0168019+{-# INLINABLE _h #-}++-- | Characteristic of BN462 curve.+_q :: Natural+_q = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908f41c8020ffffffffff6ff66fc6ff687f640000000002401b00840138013+{-# INLINABLE _q #-}++-- | Order of BN462 curve.+_r :: Natural+_r = 0x240480360120023ffffffffff6ff0cf6b7d9bfca0000000000d812908ee1c201f7fffffffff6ff66fc7bf717f7c0000000002401b007e010800d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN462 curve.+_x :: Fq2+_x = toE' [ 0x257ccc85b58dda0dfb38e3a8cbdc5482e0337e7c1cd96ed61c913820408208f9ad2699bad92e0032ae1f0aa6a8b48807695468e3d934ae1e4df+          , 0x1d2e4343e8599102af8edca849566ba3c98e2a354730cbed9176884058b18134dd86bae555b783718f50af8b59bf7e850e9b73108ba6aa8cd283+          ]+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN462 curve.+_y :: Fq2+_y = toE' [ 0xa0650439da22c1979517427a20809eca035634706e23c3fa7a6bb42fe810f1399a1f41c9ddae32e03695a140e7b11d7c3376e5b68df0db7154e+          , 0x73ef0cbd438cbe0172c8ae37306324d44d5e6b0c69ac57b393f1ab370fd725cc647692444a04ef87387aa68d53743493b9eba14cc552ca2a93a+          ]+{-# INLINABLE _y #-}++-- | Generator of affine BN462 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN462 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN462 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BN512.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BN512+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BN512 curve+  , module Data.Curve.Weierstrass.BN512+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BN512 curve.+data BN512++-- | Field of points of BN512 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef455146cf1eacbe98b8e48c65deab236fe1916a55ce5f4c6467b4eb280922adef33++-- | Field of coefficients of BN512 curve.+type Fr = Prime R+type R = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef445146cf1eacbe98b8e48c65deab2679a34a10313e04f9a2b406a64a5f519a09ed++-- BN512 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BN512 Fq Fr => WCurve c BN512 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BN512 curve point.+type PA = WAPoint BN512 Fq Fr++-- Affine BN512 curve is a Weierstrass affine curve.+instance WACurve BN512 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BN512 point.+type PJ = WJPoint BN512 Fq Fr++-- Jacobian BN512 curve is a Weierstrass Jacobian curve.+instance WJCurve BN512 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BN512 point.+type PP = WPPoint BN512 Fq Fr++-- Projective BN512 curve is a Weierstrass projective curve.+instance WPCurve BN512 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BN512 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BN512 curve.+_b :: Fq+_b = 0x3+{-# INLINABLE _b #-}++-- | Cofactor of BN512 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BN512 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef455146cf1eacbe98b8e48c65deab236fe1916a55ce5f4c6467b4eb280922adef33+{-# INLINABLE _q #-}++-- | Order of BN512 curve.+_r :: Natural+_r = 0xfffffffffffffffffffffffffff9ec7f01c60ba1d8cb5307c0bbe3c111b0ef445146cf1eacbe98b8e48c65deab2679a34a10313e04f9a2b406a64a5f519a09ed+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BN512 curve.+_x :: Fq+_x = 0x1+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BN512 curve.+_y :: Fq+_y = 0x2+{-# INLINABLE _y #-}++-- | Generator of affine BN512 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BN512 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BN512 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP160R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP160R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP160R1 curve+  , module Data.Curve.Weierstrass.BrainpoolP160R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP160R1 curve.+data BrainpoolP160R1++-- | Field of points of BrainpoolP160R1 curve.+type Fq = Prime Q+type Q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f++-- | Field of coefficients of BrainpoolP160R1 curve.+type Fr = Prime R+type R = 0xe95e4a5f737059dc60df5991d45029409e60fc09++-- BrainpoolP160R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP160R1 Fq Fr => WCurve c BrainpoolP160R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP160R1 curve point.+type PA = WAPoint BrainpoolP160R1 Fq Fr++-- Affine BrainpoolP160R1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP160R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP160R1 point.+type PJ = WJPoint BrainpoolP160R1 Fq Fr++-- Jacobian BrainpoolP160R1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP160R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP160R1 point.+type PP = WPPoint BrainpoolP160R1 Fq Fr++-- Projective BrainpoolP160R1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP160R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP160R1 curve.+_a :: Fq+_a = 0x340e7be2a280eb74e2be61bada745d97e8f7c300+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP160R1 curve.+_b :: Fq+_b = 0x1e589a8595423412134faa2dbdec95c8d8675e58+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP160R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP160R1 curve.+_q :: Natural+_q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f+{-# INLINABLE _q #-}++-- | Order of BrainpoolP160R1 curve.+_r :: Natural+_r = 0xe95e4a5f737059dc60df5991d45029409e60fc09+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP160R1 curve.+_x :: Fq+_x = 0xbed5af16ea3f6a4f62938c4631eb5af7bdbcdbc3+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP160R1 curve.+_y :: Fq+_y = 0x1667cb477a1a8ec338f94741669c976316da6321+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP160R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP160R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP160R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP160T1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP160T1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP160T1 curve+  , module Data.Curve.Weierstrass.BrainpoolP160T1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP160T1 curve.+data BrainpoolP160T1++-- | Field of points of BrainpoolP160T1 curve.+type Fq = Prime Q+type Q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f++-- | Field of coefficients of BrainpoolP160T1 curve.+type Fr = Prime R+type R = 0xe95e4a5f737059dc60df5991d45029409e60fc09++-- BrainpoolP160T1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP160T1 Fq Fr => WCurve c BrainpoolP160T1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP160T1 curve point.+type PA = WAPoint BrainpoolP160T1 Fq Fr++-- Affine BrainpoolP160T1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP160T1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP160T1 point.+type PJ = WJPoint BrainpoolP160T1 Fq Fr++-- Jacobian BrainpoolP160T1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP160T1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP160T1 point.+type PP = WPPoint BrainpoolP160T1 Fq Fr++-- Projective BrainpoolP160T1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP160T1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP160T1 curve.+_a :: Fq+_a = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620c+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP160T1 curve.+_b :: Fq+_b = 0x7a556b6dae535b7b51ed2c4d7daa7a0b5c55f380+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP160T1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP160T1 curve.+_q :: Natural+_q = 0xe95e4a5f737059dc60dfc7ad95b3d8139515620f+{-# INLINABLE _q #-}++-- | Order of BrainpoolP160T1 curve.+_r :: Natural+_r = 0xe95e4a5f737059dc60df5991d45029409e60fc09+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP160T1 curve.+_x :: Fq+_x = 0xb199b13b9b34efc1397e64baeb05acc265ff2378+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP160T1 curve.+_y :: Fq+_y = 0xadd6718b7c7c1961f0991b842443772152c9e0ad+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP160T1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP160T1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP160T1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP192R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP192R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP192R1 curve+  , module Data.Curve.Weierstrass.BrainpoolP192R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP192R1 curve.+data BrainpoolP192R1++-- | Field of points of BrainpoolP192R1 curve.+type Fq = Prime Q+type Q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297++-- | Field of coefficients of BrainpoolP192R1 curve.+type Fr = Prime R+type R = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1++-- BrainpoolP192R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP192R1 Fq Fr => WCurve c BrainpoolP192R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP192R1 curve point.+type PA = WAPoint BrainpoolP192R1 Fq Fr++-- Affine BrainpoolP192R1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP192R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP192R1 point.+type PJ = WJPoint BrainpoolP192R1 Fq Fr++-- Jacobian BrainpoolP192R1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP192R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP192R1 point.+type PP = WPPoint BrainpoolP192R1 Fq Fr++-- Projective BrainpoolP192R1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP192R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP192R1 curve.+_a :: Fq+_a = 0x6a91174076b1e0e19c39c031fe8685c1cae040e5c69a28ef+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP192R1 curve.+_b :: Fq+_b = 0x469a28ef7c28cca3dc721d044f4496bcca7ef4146fbf25c9+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP192R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP192R1 curve.+_q :: Natural+_q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297+{-# INLINABLE _q #-}++-- | Order of BrainpoolP192R1 curve.+_r :: Natural+_r = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP192R1 curve.+_x :: Fq+_x = 0xc0a0647eaab6a48753b033c56cb0f0900a2f5c4853375fd6+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP192R1 curve.+_y :: Fq+_y = 0x14b690866abd5bb88b5f4828c1490002e6773fa2fa299b8f+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP192R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP192R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP192R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP192T1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP192T1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP192T1 curve+  , module Data.Curve.Weierstrass.BrainpoolP192T1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP192T1 curve.+data BrainpoolP192T1++-- | Field of points of BrainpoolP192T1 curve.+type Fq = Prime Q+type Q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297++-- | Field of coefficients of BrainpoolP192T1 curve.+type Fr = Prime R+type R = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1++-- BrainpoolP192T1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP192T1 Fq Fr => WCurve c BrainpoolP192T1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP192T1 curve point.+type PA = WAPoint BrainpoolP192T1 Fq Fr++-- Affine BrainpoolP192T1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP192T1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP192T1 point.+type PJ = WJPoint BrainpoolP192T1 Fq Fr++-- Jacobian BrainpoolP192T1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP192T1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP192T1 point.+type PP = WPPoint BrainpoolP192T1 Fq Fr++-- Projective BrainpoolP192T1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP192T1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP192T1 curve.+_a :: Fq+_a = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86294+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP192T1 curve.+_b :: Fq+_b = 0x13d56ffaec78681e68f9deb43b35bec2fb68542e27897b79+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP192T1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP192T1 curve.+_q :: Natural+_q = 0xc302f41d932a36cda7a3463093d18db78fce476de1a86297+{-# INLINABLE _q #-}++-- | Order of BrainpoolP192T1 curve.+_r :: Natural+_r = 0xc302f41d932a36cda7a3462f9e9e916b5be8f1029ac4acc1+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP192T1 curve.+_x :: Fq+_x = 0x3ae9e58c82f63c30282e1fe7bbf43fa72c446af6f4618129+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP192T1 curve.+_y :: Fq+_y = 0x97e2c5667c2223a902ab5ca449d0084b7e5b3de7ccc01c9+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP192T1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP192T1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP192T1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP224R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP224R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP224R1 curve+  , module Data.Curve.Weierstrass.BrainpoolP224R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP224R1 curve.+data BrainpoolP224R1++-- | Field of points of BrainpoolP224R1 curve.+type Fq = Prime Q+type Q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff++-- | Field of coefficients of BrainpoolP224R1 curve.+type Fr = Prime R+type R = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f++-- BrainpoolP224R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP224R1 Fq Fr => WCurve c BrainpoolP224R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP224R1 curve point.+type PA = WAPoint BrainpoolP224R1 Fq Fr++-- Affine BrainpoolP224R1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP224R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP224R1 point.+type PJ = WJPoint BrainpoolP224R1 Fq Fr++-- Jacobian BrainpoolP224R1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP224R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP224R1 point.+type PP = WPPoint BrainpoolP224R1 Fq Fr++-- Projective BrainpoolP224R1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP224R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP224R1 curve.+_a :: Fq+_a = 0x68a5e62ca9ce6c1c299803a6c1530b514e182ad8b0042a59cad29f43+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP224R1 curve.+_b :: Fq+_b = 0x2580f63ccfe44138870713b1a92369e33e2135d266dbb372386c400b+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP224R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP224R1 curve.+_q :: Natural+_q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff+{-# INLINABLE _q #-}++-- | Order of BrainpoolP224R1 curve.+_r :: Natural+_r = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP224R1 curve.+_x :: Fq+_x = 0xd9029ad2c7e5cf4340823b2a87dc68c9e4ce3174c1e6efdee12c07d+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP224R1 curve.+_y :: Fq+_y = 0x58aa56f772c0726f24c6b89e4ecdac24354b9e99caa3f6d3761402cd+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP224R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP224R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP224R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP224T1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP224T1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP224T1 curve+  , module Data.Curve.Weierstrass.BrainpoolP224T1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP224T1 curve.+data BrainpoolP224T1++-- | Field of points of BrainpoolP224T1 curve.+type Fq = Prime Q+type Q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff++-- | Field of coefficients of BrainpoolP224T1 curve.+type Fr = Prime R+type R = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f++-- BrainpoolP224T1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP224T1 Fq Fr => WCurve c BrainpoolP224T1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP224T1 curve point.+type PA = WAPoint BrainpoolP224T1 Fq Fr++-- Affine BrainpoolP224T1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP224T1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP224T1 point.+type PJ = WJPoint BrainpoolP224T1 Fq Fr++-- Jacobian BrainpoolP224T1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP224T1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP224T1 point.+type PP = WPPoint BrainpoolP224T1 Fq Fr++-- Projective BrainpoolP224T1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP224T1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP224T1 curve.+_a :: Fq+_a = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0fc+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP224T1 curve.+_b :: Fq+_b = 0x4b337d934104cd7bef271bf60ced1ed20da14c08b3bb64f18a60888d+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP224T1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP224T1 curve.+_q :: Natural+_q = 0xd7c134aa264366862a18302575d1d787b09f075797da89f57ec8c0ff+{-# INLINABLE _q #-}++-- | Order of BrainpoolP224T1 curve.+_r :: Natural+_r = 0xd7c134aa264366862a18302575d0fb98d116bc4b6ddebca3a5a7939f+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP224T1 curve.+_x :: Fq+_x = 0x6ab1e344ce25ff3896424e7ffe14762ecb49f8928ac0c76029b4d580+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP224T1 curve.+_y :: Fq+_y = 0x374e9f5143e568cd23f3f4d7c0d4b1e41c8cc0d1c6abd5f1a46db4c+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP224T1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP224T1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP224T1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP256R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP256R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP256R1 curve+  , module Data.Curve.Weierstrass.BrainpoolP256R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP256R1 curve.+data BrainpoolP256R1++-- | Field of points of BrainpoolP256R1 curve.+type Fq = Prime Q+type Q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377++-- | Field of coefficients of BrainpoolP256R1 curve.+type Fr = Prime R+type R = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7++-- BrainpoolP256R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP256R1 Fq Fr => WCurve c BrainpoolP256R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP256R1 curve point.+type PA = WAPoint BrainpoolP256R1 Fq Fr++-- Affine BrainpoolP256R1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP256R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP256R1 point.+type PJ = WJPoint BrainpoolP256R1 Fq Fr++-- Jacobian BrainpoolP256R1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP256R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP256R1 point.+type PP = WPPoint BrainpoolP256R1 Fq Fr++-- Projective BrainpoolP256R1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP256R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP256R1 curve.+_a :: Fq+_a = 0x7d5a0975fc2c3057eef67530417affe7fb8055c126dc5c6ce94a4b44f330b5d9+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP256R1 curve.+_b :: Fq+_b = 0x26dc5c6ce94a4b44f330b5d9bbd77cbf958416295cf7e1ce6bccdc18ff8c07b6+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP256R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP256R1 curve.+_q :: Natural+_q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377+{-# INLINABLE _q #-}++-- | Order of BrainpoolP256R1 curve.+_r :: Natural+_r = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP256R1 curve.+_x :: Fq+_x = 0x8bd2aeb9cb7e57cb2c4b482ffc81b7afb9de27e1e3bd23c23a4453bd9ace3262+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP256R1 curve.+_y :: Fq+_y = 0x547ef835c3dac4fd97f8461a14611dc9c27745132ded8e545c1d54c72f046997+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP256R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP256R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP256R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP256T1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP256T1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP256T1 curve+  , module Data.Curve.Weierstrass.BrainpoolP256T1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP256T1 curve.+data BrainpoolP256T1++-- | Field of points of BrainpoolP256T1 curve.+type Fq = Prime Q+type Q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377++-- | Field of coefficients of BrainpoolP256T1 curve.+type Fr = Prime R+type R = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7++-- BrainpoolP256T1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP256T1 Fq Fr => WCurve c BrainpoolP256T1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP256T1 curve point.+type PA = WAPoint BrainpoolP256T1 Fq Fr++-- Affine BrainpoolP256T1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP256T1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP256T1 point.+type PJ = WJPoint BrainpoolP256T1 Fq Fr++-- Jacobian BrainpoolP256T1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP256T1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP256T1 point.+type PP = WPPoint BrainpoolP256T1 Fq Fr++-- Projective BrainpoolP256T1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP256T1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP256T1 curve.+_a :: Fq+_a = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5374+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP256T1 curve.+_b :: Fq+_b = 0x662c61c430d84ea4fe66a7733d0b76b7bf93ebc4af2f49256ae58101fee92b04+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP256T1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP256T1 curve.+_q :: Natural+_q = 0xa9fb57dba1eea9bc3e660a909d838d726e3bf623d52620282013481d1f6e5377+{-# INLINABLE _q #-}++-- | Order of BrainpoolP256T1 curve.+_r :: Natural+_r = 0xa9fb57dba1eea9bc3e660a909d838d718c397aa3b561a6f7901e0e82974856a7+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP256T1 curve.+_x :: Fq+_x = 0xa3e8eb3cc1cfe7b7732213b23a656149afa142c47aafbc2b79a191562e1305f4+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP256T1 curve.+_y :: Fq+_y = 0x2d996c823439c56d7f7b22e14644417e69bcb6de39d027001dabe8f35b25c9be+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP256T1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP256T1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP256T1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP320R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP320R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP320R1 curve+  , module Data.Curve.Weierstrass.BrainpoolP320R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP320R1 curve.+data BrainpoolP320R1++-- | Field of points of BrainpoolP320R1 curve.+type Fq = Prime Q+type Q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27++-- | Field of coefficients of BrainpoolP320R1 curve.+type Fr = Prime R+type R = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311++-- BrainpoolP320R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP320R1 Fq Fr => WCurve c BrainpoolP320R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP320R1 curve point.+type PA = WAPoint BrainpoolP320R1 Fq Fr++-- Affine BrainpoolP320R1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP320R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP320R1 point.+type PJ = WJPoint BrainpoolP320R1 Fq Fr++-- Jacobian BrainpoolP320R1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP320R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP320R1 point.+type PP = WPPoint BrainpoolP320R1 Fq Fr++-- Projective BrainpoolP320R1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP320R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP320R1 curve.+_a :: Fq+_a = 0x3ee30b568fbab0f883ccebd46d3f3bb8a2a73513f5eb79da66190eb085ffa9f492f375a97d860eb4+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP320R1 curve.+_b :: Fq+_b = 0x520883949dfdbc42d3ad198640688a6fe13f41349554b49acc31dccd884539816f5eb4ac8fb1f1a6+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP320R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP320R1 curve.+_q :: Natural+_q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27+{-# INLINABLE _q #-}++-- | Order of BrainpoolP320R1 curve.+_r :: Natural+_r = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP320R1 curve.+_x :: Fq+_x = 0x43bd7e9afb53d8b85289bcc48ee5bfe6f20137d10a087eb6e7871e2a10a599c710af8d0d39e20611+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP320R1 curve.+_y :: Fq+_y = 0x14fdd05545ec1cc8ab4093247f77275e0743ffed117182eaa9c77877aaac6ac7d35245d1692e8ee1+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP320R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP320R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP320R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP320T1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP320T1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP320T1 curve+  , module Data.Curve.Weierstrass.BrainpoolP320T1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP320T1 curve.+data BrainpoolP320T1++-- | Field of points of BrainpoolP320T1 curve.+type Fq = Prime Q+type Q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27++-- | Field of coefficients of BrainpoolP320T1 curve.+type Fr = Prime R+type R = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311++-- BrainpoolP320T1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP320T1 Fq Fr => WCurve c BrainpoolP320T1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP320T1 curve point.+type PA = WAPoint BrainpoolP320T1 Fq Fr++-- Affine BrainpoolP320T1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP320T1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP320T1 point.+type PJ = WJPoint BrainpoolP320T1 Fq Fr++-- Jacobian BrainpoolP320T1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP320T1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP320T1 point.+type PP = WPPoint BrainpoolP320T1 Fq Fr++-- Projective BrainpoolP320T1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP320T1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP320T1 curve.+_a :: Fq+_a = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e24+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP320T1 curve.+_b :: Fq+_b = 0xa7f561e038eb1ed560b3d147db782013064c19f27ed27c6780aaf77fb8a547ceb5b4fef422340353+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP320T1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP320T1 curve.+_q :: Natural+_q = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa6f6f40def4f92b9ec7893ec28fcd412b1f1b32e27+{-# INLINABLE _q #-}++-- | Order of BrainpoolP320T1 curve.+_r :: Natural+_r = 0xd35e472036bc4fb7e13c785ed201e065f98fcfa5b68f12a32d482ec7ee8658e98691555b44c59311+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP320T1 curve.+_x :: Fq+_x = 0x925be9fb01afc6fb4d3e7d4990010f813408ab106c4f09cb7ee07868cc136fff3357f624a21bed52+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP320T1 curve.+_y :: Fq+_y = 0x63ba3a7a27483ebf6671dbef7abb30ebee084e58a0b077ad42a5a0989d1ee71b1b9bc0455fb0d2c3+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP320T1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP320T1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP320T1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP384R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP384R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP384R1 curve+  , module Data.Curve.Weierstrass.BrainpoolP384R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP384R1 curve.+data BrainpoolP384R1++-- | Field of points of BrainpoolP384R1 curve.+type Fq = Prime Q+type Q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53++-- | Field of coefficients of BrainpoolP384R1 curve.+type Fr = Prime R+type R = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565++-- BrainpoolP384R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP384R1 Fq Fr => WCurve c BrainpoolP384R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP384R1 curve point.+type PA = WAPoint BrainpoolP384R1 Fq Fr++-- Affine BrainpoolP384R1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP384R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP384R1 point.+type PJ = WJPoint BrainpoolP384R1 Fq Fr++-- Jacobian BrainpoolP384R1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP384R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP384R1 point.+type PP = WPPoint BrainpoolP384R1 Fq Fr++-- Projective BrainpoolP384R1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP384R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP384R1 curve.+_a :: Fq+_a = 0x7bc382c63d8c150c3c72080ace05afa0c2bea28e4fb22787139165efba91f90f8aa5814a503ad4eb04a8c7dd22ce2826+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP384R1 curve.+_b :: Fq+_b = 0x4a8c7dd22ce28268b39b55416f0447c2fb77de107dcd2a62e880ea53eeb62d57cb4390295dbc9943ab78696fa504c11+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP384R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP384R1 curve.+_q :: Natural+_q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53+{-# INLINABLE _q #-}++-- | Order of BrainpoolP384R1 curve.+_r :: Natural+_r = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP384R1 curve.+_x :: Fq+_x = 0x1d1c64f068cf45ffa2a63a81b7c13f6b8847a3e77ef14fe3db7fcafe0cbd10e8e826e03436d646aaef87b2e247d4af1e+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP384R1 curve.+_y :: Fq+_y = 0x8abe1d7520f9c2a45cb1eb8e95cfd55262b70b29feec5864e19c054ff99129280e4646217791811142820341263c5315+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP384R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP384R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP384R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP384T1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP384T1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP384T1 curve+  , module Data.Curve.Weierstrass.BrainpoolP384T1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP384T1 curve.+data BrainpoolP384T1++-- | Field of points of BrainpoolP384T1 curve.+type Fq = Prime Q+type Q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53++-- | Field of coefficients of BrainpoolP384T1 curve.+type Fr = Prime R+type R = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565++-- BrainpoolP384T1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP384T1 Fq Fr => WCurve c BrainpoolP384T1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP384T1 curve point.+type PA = WAPoint BrainpoolP384T1 Fq Fr++-- Affine BrainpoolP384T1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP384T1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP384T1 point.+type PJ = WJPoint BrainpoolP384T1 Fq Fr++-- Jacobian BrainpoolP384T1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP384T1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP384T1 point.+type PP = WPPoint BrainpoolP384T1 Fq Fr++-- Projective BrainpoolP384T1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP384T1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP384T1 curve.+_a :: Fq+_a = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec50+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP384T1 curve.+_b :: Fq+_b = 0x7f519eada7bda81bd826dba647910f8c4b9346ed8ccdc64e4b1abd11756dce1d2074aa263b88805ced70355a33b471ee+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP384T1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP384T1 curve.+_q :: Natural+_q = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b412b1da197fb71123acd3a729901d1a71874700133107ec53+{-# INLINABLE _q #-}++-- | Order of BrainpoolP384T1 curve.+_r :: Natural+_r = 0x8cb91e82a3386d280f5d6f7e50e641df152f7109ed5456b31f166e6cac0425a7cf3ab6af6b7fc3103b883202e9046565+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP384T1 curve.+_x :: Fq+_x = 0x18de98b02db9a306f2afcd7235f72a819b80ab12ebd653172476fecd462aabffc4ff191b946a5f54d8d0aa2f418808cc+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP384T1 curve.+_y :: Fq+_y = 0x25ab056962d30651a114afd2755ad336747f93475b7a1fca3b88f2b6a208ccfe469408584dc2b2912675bf5b9e582928+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP384T1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP384T1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP384T1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP512R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP512R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP512R1 curve+  , module Data.Curve.Weierstrass.BrainpoolP512R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP512R1 curve.+data BrainpoolP512R1++-- | Field of points of BrainpoolP512R1 curve.+type Fq = Prime Q+type Q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3++-- | Field of coefficients of BrainpoolP512R1 curve.+type Fr = Prime R+type R = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069++-- BrainpoolP512R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP512R1 Fq Fr => WCurve c BrainpoolP512R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP512R1 curve point.+type PA = WAPoint BrainpoolP512R1 Fq Fr++-- Affine BrainpoolP512R1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP512R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP512R1 point.+type PJ = WJPoint BrainpoolP512R1 Fq Fr++-- Jacobian BrainpoolP512R1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP512R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP512R1 point.+type PP = WPPoint BrainpoolP512R1 Fq Fr++-- Projective BrainpoolP512R1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP512R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP512R1 curve.+_a :: Fq+_a = 0x7830a3318b603b89e2327145ac234cc594cbdd8d3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94ca+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP512R1 curve.+_b :: Fq+_b = 0x3df91610a83441caea9863bc2ded5d5aa8253aa10a2ef1c98b9ac8b57f1117a72bf2c7b9e7c1ac4d77fc94cadc083e67984050b75ebae5dd2809bd638016f723+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP512R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP512R1 curve.+_q :: Natural+_q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3+{-# INLINABLE _q #-}++-- | Order of BrainpoolP512R1 curve.+_r :: Natural+_r = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP512R1 curve.+_x :: Fq+_x = 0x81aee4bdd82ed9645a21322e9c4c6a9385ed9f70b5d916c1b43b62eef4d0098eff3b1f78e2d0d48d50d1687b93b97d5f7c6d5047406a5e688b352209bcb9f822+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP512R1 curve.+_y :: Fq+_y = 0x7dde385d566332ecc0eabfa9cf7822fdf209f70024a57b1aa000c55b881f8111b2dcde494a5f485e5bca4bd88a2763aed1ca2b2fa8f0540678cd1e0f3ad80892+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP512R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP512R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP512R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/BrainpoolP512T1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.BrainpoolP512T1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * BrainpoolP512T1 curve+  , module Data.Curve.Weierstrass.BrainpoolP512T1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | BrainpoolP512T1 curve.+data BrainpoolP512T1++-- | Field of points of BrainpoolP512T1 curve.+type Fq = Prime Q+type Q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3++-- | Field of coefficients of BrainpoolP512T1 curve.+type Fr = Prime R+type R = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069++-- BrainpoolP512T1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c BrainpoolP512T1 Fq Fr => WCurve c BrainpoolP512T1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine BrainpoolP512T1 curve point.+type PA = WAPoint BrainpoolP512T1 Fq Fr++-- Affine BrainpoolP512T1 curve is a Weierstrass affine curve.+instance WACurve BrainpoolP512T1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian BrainpoolP512T1 point.+type PJ = WJPoint BrainpoolP512T1 Fq Fr++-- Jacobian BrainpoolP512T1 curve is a Weierstrass Jacobian curve.+instance WJCurve BrainpoolP512T1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective BrainpoolP512T1 point.+type PP = WPPoint BrainpoolP512T1 Fq Fr++-- Projective BrainpoolP512T1 curve is a Weierstrass projective curve.+instance WPCurve BrainpoolP512T1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of BrainpoolP512T1 curve.+_a :: Fq+_a = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of BrainpoolP512T1 curve.+_b :: Fq+_b = 0x7cbbbcf9441cfab76e1890e46884eae321f70c0bcb4981527897504bec3e36a62bcdfa2304976540f6450085f2dae145c22553b465763689180ea2571867423e+{-# INLINABLE _b #-}++-- | Cofactor of BrainpoolP512T1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of BrainpoolP512T1 curve.+_q :: Natural+_q = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca703308717d4d9b009bc66842aecda12ae6a380e62881ff2f2d82c68528aa6056583a48f3+{-# INLINABLE _q #-}++-- | Order of BrainpoolP512T1 curve.+_r :: Natural+_r = 0xaadd9db8dbe9c48b3fd4e6ae33c9fc07cb308db3b3c9d20ed6639cca70330870553e5c414ca92619418661197fac10471db1d381085ddaddb58796829ca90069+{-# INLINABLE _r #-}++-- | Coordinate @X@ of BrainpoolP512T1 curve.+_x :: Fq+_x = 0x640ece5c12788717b9c1ba06cbc2a6feba85842458c56dde9db1758d39c0313d82ba51735cdb3ea499aa77a7d6943a64f7a3f25fe26f06b51baa2696fa9035da+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of BrainpoolP512T1 curve.+_y :: Fq+_y = 0x5b534bd595f5af0fa2c892376c84ace1bb4e3019b71634c01131159cae03cee9d9932184beef216bd71df2dadf86a627306ecff96dbb8bace198b61e00f8b332+{-# INLINABLE _y #-}++-- | Generator of affine BrainpoolP512T1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian BrainpoolP512T1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective BrainpoolP512T1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP112R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP112R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP112R1 curve+  , module Data.Curve.Weierstrass.SECP112R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP112R1 curve.+data SECP112R1++-- | Field of points of SECP112R1 curve.+type Fq = Prime Q+type Q = 0xdb7c2abf62e35e668076bead208b++-- | Field of coefficients of SECP112R1 curve.+type Fr = Prime R+type R = 0xdb7c2abf62e35e7628dfac6561c5++-- SECP112R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP112R1 Fq Fr => WCurve c SECP112R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP112R1 curve point.+type PA = WAPoint SECP112R1 Fq Fr++-- Affine SECP112R1 curve is a Weierstrass affine curve.+instance WACurve SECP112R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP112R1 point.+type PJ = WJPoint SECP112R1 Fq Fr++-- Jacobian SECP112R1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP112R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP112R1 point.+type PP = WPPoint SECP112R1 Fq Fr++-- Projective SECP112R1 curve is a Weierstrass projective curve.+instance WPCurve SECP112R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP112R1 curve.+_a :: Fq+_a = 0xdb7c2abf62e35e668076bead2088+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP112R1 curve.+_b :: Fq+_b = 0x659ef8ba043916eede8911702b22+{-# INLINABLE _b #-}++-- | Cofactor of SECP112R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP112R1 curve.+_q :: Natural+_q = 0xdb7c2abf62e35e668076bead208b+{-# INLINABLE _q #-}++-- | Order of SECP112R1 curve.+_r :: Natural+_r = 0xdb7c2abf62e35e7628dfac6561c5+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP112R1 curve.+_x :: Fq+_x = 0x9487239995a5ee76b55f9c2f098+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP112R1 curve.+_y :: Fq+_y = 0xa89ce5af8724c0a23e0e0ff77500+{-# INLINABLE _y #-}++-- | Generator of affine SECP112R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP112R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP112R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP112R2.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP112R2+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP112R2 curve+  , module Data.Curve.Weierstrass.SECP112R2+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP112R2 curve.+data SECP112R2++-- | Field of points of SECP112R2 curve.+type Fq = Prime Q+type Q = 0xdb7c2abf62e35e668076bead208b++-- | Field of coefficients of SECP112R2 curve.+type Fr = Prime R+type R = 0x36df0aafd8b8d7597ca10520d04b++-- SECP112R2 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP112R2 Fq Fr => WCurve c SECP112R2 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP112R2 curve point.+type PA = WAPoint SECP112R2 Fq Fr++-- Affine SECP112R2 curve is a Weierstrass affine curve.+instance WACurve SECP112R2 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP112R2 point.+type PJ = WJPoint SECP112R2 Fq Fr++-- Jacobian SECP112R2 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP112R2 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP112R2 point.+type PP = WPPoint SECP112R2 Fq Fr++-- Projective SECP112R2 curve is a Weierstrass projective curve.+instance WPCurve SECP112R2 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP112R2 curve.+_a :: Fq+_a = 0x6127c24c05f38a0aaaf65c0ef02c+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP112R2 curve.+_b :: Fq+_b = 0x51def1815db5ed74fcc34c85d709+{-# INLINABLE _b #-}++-- | Cofactor of SECP112R2 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Characteristic of SECP112R2 curve.+_q :: Natural+_q = 0xdb7c2abf62e35e668076bead208b+{-# INLINABLE _q #-}++-- | Order of SECP112R2 curve.+_r :: Natural+_r = 0x36df0aafd8b8d7597ca10520d04b+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP112R2 curve.+_x :: Fq+_x = 0x4ba30ab5e892b4e1649dd0928643+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP112R2 curve.+_y :: Fq+_y = 0xadcd46f5882e3747def36e956e97+{-# INLINABLE _y #-}++-- | Generator of affine SECP112R2 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP112R2 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP112R2 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP128R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP128R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP128R1 curve+  , module Data.Curve.Weierstrass.SECP128R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP128R1 curve.+data SECP128R1++-- | Field of points of SECP128R1 curve.+type Fq = Prime Q+type Q = 0xfffffffdffffffffffffffffffffffff++-- | Field of coefficients of SECP128R1 curve.+type Fr = Prime R+type R = 0xfffffffe0000000075a30d1b9038a115++-- SECP128R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP128R1 Fq Fr => WCurve c SECP128R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP128R1 curve point.+type PA = WAPoint SECP128R1 Fq Fr++-- Affine SECP128R1 curve is a Weierstrass affine curve.+instance WACurve SECP128R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP128R1 point.+type PJ = WJPoint SECP128R1 Fq Fr++-- Jacobian SECP128R1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP128R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP128R1 point.+type PP = WPPoint SECP128R1 Fq Fr++-- Projective SECP128R1 curve is a Weierstrass projective curve.+instance WPCurve SECP128R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP128R1 curve.+_a :: Fq+_a = 0xfffffffdfffffffffffffffffffffffc+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP128R1 curve.+_b :: Fq+_b = 0xe87579c11079f43dd824993c2cee5ed3+{-# INLINABLE _b #-}++-- | Cofactor of SECP128R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP128R1 curve.+_q :: Natural+_q = 0xfffffffdffffffffffffffffffffffff+{-# INLINABLE _q #-}++-- | Order of SECP128R1 curve.+_r :: Natural+_r = 0xfffffffe0000000075a30d1b9038a115+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP128R1 curve.+_x :: Fq+_x = 0x161ff7528b899b2d0c28607ca52c5b86+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP128R1 curve.+_y :: Fq+_y = 0xcf5ac8395bafeb13c02da292dded7a83+{-# INLINABLE _y #-}++-- | Generator of affine SECP128R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP128R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP128R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP128R2.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP128R2+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP128R2 curve+  , module Data.Curve.Weierstrass.SECP128R2+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP128R2 curve.+data SECP128R2++-- | Field of points of SECP128R2 curve.+type Fq = Prime Q+type Q = 0xfffffffdffffffffffffffffffffffff++-- | Field of coefficients of SECP128R2 curve.+type Fr = Prime R+type R = 0x3fffffff7fffffffbe0024720613b5a3++-- SECP128R2 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP128R2 Fq Fr => WCurve c SECP128R2 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP128R2 curve point.+type PA = WAPoint SECP128R2 Fq Fr++-- Affine SECP128R2 curve is a Weierstrass affine curve.+instance WACurve SECP128R2 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP128R2 point.+type PJ = WJPoint SECP128R2 Fq Fr++-- Jacobian SECP128R2 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP128R2 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP128R2 point.+type PP = WPPoint SECP128R2 Fq Fr++-- Projective SECP128R2 curve is a Weierstrass projective curve.+instance WPCurve SECP128R2 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP128R2 curve.+_a :: Fq+_a = 0xd6031998d1b3bbfebf59cc9bbff9aee1+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP128R2 curve.+_b :: Fq+_b = 0x5eeefca380d02919dc2c6558bb6d8a5d+{-# INLINABLE _b #-}++-- | Cofactor of SECP128R2 curve.+_h :: Natural+_h = 0x4+{-# INLINABLE _h #-}++-- | Characteristic of SECP128R2 curve.+_q :: Natural+_q = 0xfffffffdffffffffffffffffffffffff+{-# INLINABLE _q #-}++-- | Order of SECP128R2 curve.+_r :: Natural+_r = 0x3fffffff7fffffffbe0024720613b5a3+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP128R2 curve.+_x :: Fq+_x = 0x7b6aa5d85e572983e6fb32a7cdebc140+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP128R2 curve.+_y :: Fq+_y = 0x27b6916a894d3aee7106fe805fc34b44+{-# INLINABLE _y #-}++-- | Generator of affine SECP128R2 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP128R2 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP128R2 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP160K1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP160K1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP160K1 curve+  , module Data.Curve.Weierstrass.SECP160K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP160K1 curve.+data SECP160K1++-- | Field of points of SECP160K1 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffeffffac73++-- | Field of coefficients of SECP160K1 curve.+type Fr = Prime R+type R = 0x100000000000000000001b8fa16dfab9aca16b6b3++-- SECP160K1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP160K1 Fq Fr => WCurve c SECP160K1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP160K1 curve point.+type PA = WAPoint SECP160K1 Fq Fr++-- Affine SECP160K1 curve is a Weierstrass affine curve.+instance WACurve SECP160K1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP160K1 point.+type PJ = WJPoint SECP160K1 Fq Fr++-- Jacobian SECP160K1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP160K1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP160K1 point.+type PP = WPPoint SECP160K1 Fq Fr++-- Projective SECP160K1 curve is a Weierstrass projective curve.+instance WPCurve SECP160K1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP160K1 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP160K1 curve.+_b :: Fq+_b = 0x7+{-# INLINABLE _b #-}++-- | Cofactor of SECP160K1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP160K1 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffeffffac73+{-# INLINABLE _q #-}++-- | Order of SECP160K1 curve.+_r :: Natural+_r = 0x100000000000000000001b8fa16dfab9aca16b6b3+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP160K1 curve.+_x :: Fq+_x = 0x3b4c382ce37aa192a4019e763036f4f5dd4d7ebb+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP160K1 curve.+_y :: Fq+_y = 0x938cf935318fdced6bc28286531733c3f03c4fee+{-# INLINABLE _y #-}++-- | Generator of affine SECP160K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP160K1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP160K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP160R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP160R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP160R1 curve+  , module Data.Curve.Weierstrass.SECP160R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP160R1 curve.+data SECP160R1++-- | Field of points of SECP160R1 curve.+type Fq = Prime Q+type Q = 0xffffffffffffffffffffffffffffffff7fffffff++-- | Field of coefficients of SECP160R1 curve.+type Fr = Prime R+type R = 0x100000000000000000001f4c8f927aed3ca752257++-- SECP160R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP160R1 Fq Fr => WCurve c SECP160R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP160R1 curve point.+type PA = WAPoint SECP160R1 Fq Fr++-- Affine SECP160R1 curve is a Weierstrass affine curve.+instance WACurve SECP160R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP160R1 point.+type PJ = WJPoint SECP160R1 Fq Fr++-- Jacobian SECP160R1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP160R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP160R1 point.+type PP = WPPoint SECP160R1 Fq Fr++-- Projective SECP160R1 curve is a Weierstrass projective curve.+instance WPCurve SECP160R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP160R1 curve.+_a :: Fq+_a = 0xffffffffffffffffffffffffffffffff7ffffffc+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP160R1 curve.+_b :: Fq+_b = 0x1c97befc54bd7a8b65acf89f81d4d4adc565fa45+{-# INLINABLE _b #-}++-- | Cofactor of SECP160R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP160R1 curve.+_q :: Natural+_q = 0xffffffffffffffffffffffffffffffff7fffffff+{-# INLINABLE _q #-}++-- | Order of SECP160R1 curve.+_r :: Natural+_r = 0x100000000000000000001f4c8f927aed3ca752257+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP160R1 curve.+_x :: Fq+_x = 0x4a96b5688ef573284664698968c38bb913cbfc82+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP160R1 curve.+_y :: Fq+_y = 0x23a628553168947d59dcc912042351377ac5fb32+{-# INLINABLE _y #-}++-- | Generator of affine SECP160R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP160R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP160R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP160R2.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP160R2+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP160R2 curve+  , module Data.Curve.Weierstrass.SECP160R2+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP160R2 curve.+data SECP160R2++-- | Field of points of SECP160R2 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffeffffac73++-- | Field of coefficients of SECP160R2 curve.+type Fr = Prime R+type R = 0x100000000000000000000351ee786a818f3a1a16b++-- SECP160R2 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP160R2 Fq Fr => WCurve c SECP160R2 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP160R2 curve point.+type PA = WAPoint SECP160R2 Fq Fr++-- Affine SECP160R2 curve is a Weierstrass affine curve.+instance WACurve SECP160R2 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP160R2 point.+type PJ = WJPoint SECP160R2 Fq Fr++-- Jacobian SECP160R2 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP160R2 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP160R2 point.+type PP = WPPoint SECP160R2 Fq Fr++-- Projective SECP160R2 curve is a Weierstrass projective curve.+instance WPCurve SECP160R2 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP160R2 curve.+_a :: Fq+_a = 0xfffffffffffffffffffffffffffffffeffffac70+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP160R2 curve.+_b :: Fq+_b = 0xb4e134d3fb59eb8bab57274904664d5af50388ba+{-# INLINABLE _b #-}++-- | Cofactor of SECP160R2 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP160R2 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffeffffac73+{-# INLINABLE _q #-}++-- | Order of SECP160R2 curve.+_r :: Natural+_r = 0x100000000000000000000351ee786a818f3a1a16b+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP160R2 curve.+_x :: Fq+_x = 0x52dcb034293a117e1f4ff11b30f7199d3144ce6d+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP160R2 curve.+_y :: Fq+_y = 0xfeaffef2e331f296e071fa0df9982cfea7d43f2e+{-# INLINABLE _y #-}++-- | Generator of affine SECP160R2 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP160R2 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP160R2 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP192K1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP192K1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP192K1 curve+  , module Data.Curve.Weierstrass.SECP192K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP192K1 curve.+data SECP192K1++-- | Field of points of SECP192K1 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffffffffffeffffee37++-- | Field of coefficients of SECP192K1 curve.+type Fr = Prime R+type R = 0xfffffffffffffffffffffffe26f2fc170f69466a74defd8d++-- SECP192K1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP192K1 Fq Fr => WCurve c SECP192K1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP192K1 curve point.+type PA = WAPoint SECP192K1 Fq Fr++-- Affine SECP192K1 curve is a Weierstrass affine curve.+instance WACurve SECP192K1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP192K1 point.+type PJ = WJPoint SECP192K1 Fq Fr++-- Jacobian SECP192K1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP192K1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP192K1 point.+type PP = WPPoint SECP192K1 Fq Fr++-- Projective SECP192K1 curve is a Weierstrass projective curve.+instance WPCurve SECP192K1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP192K1 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP192K1 curve.+_b :: Fq+_b = 0x3+{-# INLINABLE _b #-}++-- | Cofactor of SECP192K1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP192K1 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffffffffffeffffee37+{-# INLINABLE _q #-}++-- | Order of SECP192K1 curve.+_r :: Natural+_r = 0xfffffffffffffffffffffffe26f2fc170f69466a74defd8d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP192K1 curve.+_x :: Fq+_x = 0xdb4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP192K1 curve.+_y :: Fq+_y = 0x9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d+{-# INLINABLE _y #-}++-- | Generator of affine SECP192K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP192K1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP192K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP192R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP192R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP192R1 curve+  , module Data.Curve.Weierstrass.SECP192R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP192R1 curve.+data SECP192R1++-- | Field of points of SECP192R1 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffeffffffffffffffff++-- | Field of coefficients of SECP192R1 curve.+type Fr = Prime R+type R = 0xffffffffffffffffffffffff99def836146bc9b1b4d22831++-- SECP192R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP192R1 Fq Fr => WCurve c SECP192R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP192R1 curve point.+type PA = WAPoint SECP192R1 Fq Fr++-- Affine SECP192R1 curve is a Weierstrass affine curve.+instance WACurve SECP192R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP192R1 point.+type PJ = WJPoint SECP192R1 Fq Fr++-- Jacobian SECP192R1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP192R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP192R1 point.+type PP = WPPoint SECP192R1 Fq Fr++-- Projective SECP192R1 curve is a Weierstrass projective curve.+instance WPCurve SECP192R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP192R1 curve.+_a :: Fq+_a = 0xfffffffffffffffffffffffffffffffefffffffffffffffc+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP192R1 curve.+_b :: Fq+_b = 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1+{-# INLINABLE _b #-}++-- | Cofactor of SECP192R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP192R1 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffeffffffffffffffff+{-# INLINABLE _q #-}++-- | Order of SECP192R1 curve.+_r :: Natural+_r = 0xffffffffffffffffffffffff99def836146bc9b1b4d22831+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP192R1 curve.+_x :: Fq+_x = 0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP192R1 curve.+_y :: Fq+_y = 0x7192b95ffc8da78631011ed6b24cdd573f977a11e794811+{-# INLINABLE _y #-}++-- | Generator of affine SECP192R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP192R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP192R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP224K1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP224K1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP224K1 curve+  , module Data.Curve.Weierstrass.SECP224K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP224K1 curve.+data SECP224K1++-- | Field of points of SECP224K1 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffffffffffffffffffeffffe56d++-- | Field of coefficients of SECP224K1 curve.+type Fr = Prime R+type R = 0x10000000000000000000000000001dce8d2ec6184caf0a971769fb1f7++-- SECP224K1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP224K1 Fq Fr => WCurve c SECP224K1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP224K1 curve point.+type PA = WAPoint SECP224K1 Fq Fr++-- Affine SECP224K1 curve is a Weierstrass affine curve.+instance WACurve SECP224K1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP224K1 point.+type PJ = WJPoint SECP224K1 Fq Fr++-- Jacobian SECP224K1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP224K1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP224K1 point.+type PP = WPPoint SECP224K1 Fq Fr++-- Projective SECP224K1 curve is a Weierstrass projective curve.+instance WPCurve SECP224K1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP224K1 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP224K1 curve.+_b :: Fq+_b = 0x5+{-# INLINABLE _b #-}++-- | Cofactor of SECP224K1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP224K1 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffeffffe56d+{-# INLINABLE _q #-}++-- | Order of SECP224K1 curve.+_r :: Natural+_r = 0x10000000000000000000000000001dce8d2ec6184caf0a971769fb1f7+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP224K1 curve.+_x :: Fq+_x = 0xa1455b334df099df30fc28a169a467e9e47075a90f7e650eb6b7a45c+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP224K1 curve.+_y :: Fq+_y = 0x7e089fed7fba344282cafbd6f7e319f7c0b0bd59e2ca4bdb556d61a5+{-# INLINABLE _y #-}++-- | Generator of affine SECP224K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP224K1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP224K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP224R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP224R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP224R1 curve+  , module Data.Curve.Weierstrass.SECP224R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP224R1 curve.+data SECP224R1++-- | Field of points of SECP224R1 curve.+type Fq = Prime Q+type Q = 0xffffffffffffffffffffffffffffffff000000000000000000000001++-- | Field of coefficients of SECP224R1 curve.+type Fr = Prime R+type R = 0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d++-- SECP224R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP224R1 Fq Fr => WCurve c SECP224R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP224R1 curve point.+type PA = WAPoint SECP224R1 Fq Fr++-- Affine SECP224R1 curve is a Weierstrass affine curve.+instance WACurve SECP224R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP224R1 point.+type PJ = WJPoint SECP224R1 Fq Fr++-- Jacobian SECP224R1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP224R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP224R1 point.+type PP = WPPoint SECP224R1 Fq Fr++-- Projective SECP224R1 curve is a Weierstrass projective curve.+instance WPCurve SECP224R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP224R1 curve.+_a :: Fq+_a = 0xfffffffffffffffffffffffffffffffefffffffffffffffffffffffe+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP224R1 curve.+_b :: Fq+_b = 0xb4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4+{-# INLINABLE _b #-}++-- | Cofactor of SECP224R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP224R1 curve.+_q :: Natural+_q = 0xffffffffffffffffffffffffffffffff000000000000000000000001+{-# INLINABLE _q #-}++-- | Order of SECP224R1 curve.+_r :: Natural+_r = 0xffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP224R1 curve.+_x :: Fq+_x = 0xb70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP224R1 curve.+_y :: Fq+_y = 0xbd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34+{-# INLINABLE _y #-}++-- | Generator of affine SECP224R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP224R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP224R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP256K1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP256K1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP256K1 curve+  , module Data.Curve.Weierstrass.SECP256K1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP256K1 curve.+data SECP256K1++-- | Field of points of SECP256K1 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f++-- | Field of coefficients of SECP256K1 curve.+type Fr = Prime R+type R = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141++-- SECP256K1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP256K1 Fq Fr => WCurve c SECP256K1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP256K1 curve point.+type PA = WAPoint SECP256K1 Fq Fr++-- Affine SECP256K1 curve is a Weierstrass affine curve.+instance WACurve SECP256K1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP256K1 point.+type PJ = WJPoint SECP256K1 Fq Fr++-- Jacobian SECP256K1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP256K1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP256K1 point.+type PP = WPPoint SECP256K1 Fq Fr++-- Projective SECP256K1 curve is a Weierstrass projective curve.+instance WPCurve SECP256K1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP256K1 curve.+_a :: Fq+_a = 0x0+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP256K1 curve.+_b :: Fq+_b = 0x7+{-# INLINABLE _b #-}++-- | Cofactor of SECP256K1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP256K1 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f+{-# INLINABLE _q #-}++-- | Order of SECP256K1 curve.+_r :: Natural+_r = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP256K1 curve.+_x :: Fq+_x = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP256K1 curve.+_y :: Fq+_y = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8+{-# INLINABLE _y #-}++-- | Generator of affine SECP256K1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP256K1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP256K1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP256R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP256R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP256R1 curve+  , module Data.Curve.Weierstrass.SECP256R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP256R1 curve.+data SECP256R1++-- | Field of points of SECP256R1 curve.+type Fq = Prime Q+type Q = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff++-- | Field of coefficients of SECP256R1 curve.+type Fr = Prime R+type R = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551++-- SECP256R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP256R1 Fq Fr => WCurve c SECP256R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP256R1 curve point.+type PA = WAPoint SECP256R1 Fq Fr++-- Affine SECP256R1 curve is a Weierstrass affine curve.+instance WACurve SECP256R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP256R1 point.+type PJ = WJPoint SECP256R1 Fq Fr++-- Jacobian SECP256R1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP256R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP256R1 point.+type PP = WPPoint SECP256R1 Fq Fr++-- Projective SECP256R1 curve is a Weierstrass projective curve.+instance WPCurve SECP256R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP256R1 curve.+_a :: Fq+_a = 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP256R1 curve.+_b :: Fq+_b = 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b+{-# INLINABLE _b #-}++-- | Cofactor of SECP256R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP256R1 curve.+_q :: Natural+_q = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff+{-# INLINABLE _q #-}++-- | Order of SECP256R1 curve.+_r :: Natural+_r = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP256R1 curve.+_x :: Fq+_x = 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP256R1 curve.+_y :: Fq+_y = 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5+{-# INLINABLE _y #-}++-- | Generator of affine SECP256R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP256R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP256R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP384R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP384R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP384R1 curve+  , module Data.Curve.Weierstrass.SECP384R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP384R1 curve.+data SECP384R1++-- | Field of points of SECP384R1 curve.+type Fq = Prime Q+type Q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff++-- | Field of coefficients of SECP384R1 curve.+type Fr = Prime R+type R = 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973++-- SECP384R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP384R1 Fq Fr => WCurve c SECP384R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP384R1 curve point.+type PA = WAPoint SECP384R1 Fq Fr++-- Affine SECP384R1 curve is a Weierstrass affine curve.+instance WACurve SECP384R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP384R1 point.+type PJ = WJPoint SECP384R1 Fq Fr++-- Jacobian SECP384R1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP384R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP384R1 point.+type PP = WPPoint SECP384R1 Fq Fr++-- Projective SECP384R1 curve is a Weierstrass projective curve.+instance WPCurve SECP384R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP384R1 curve.+_a :: Fq+_a = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP384R1 curve.+_b :: Fq+_b = 0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef+{-# INLINABLE _b #-}++-- | Cofactor of SECP384R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP384R1 curve.+_q :: Natural+_q = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff+{-# INLINABLE _q #-}++-- | Order of SECP384R1 curve.+_r :: Natural+_r = 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP384R1 curve.+_x :: Fq+_x = 0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP384R1 curve.+_y :: Fq+_y = 0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f+{-# INLINABLE _y #-}++-- | Generator of affine SECP384R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP384R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP384R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
+ src/Data/Curve/Weierstrass/SECP521R1.hs view
@@ -0,0 +1,119 @@+module Data.Curve.Weierstrass.SECP521R1+  ( module Data.Curve.Weierstrass+  , Point(..)+  -- * SECP521R1 curve+  , module Data.Curve.Weierstrass.SECP521R1+  ) where++import Protolude++import Data.Field.Galois+import GHC.Natural (Natural)++import Data.Curve.Weierstrass++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++-- | SECP521R1 curve.+data SECP521R1++-- | Field of points of SECP521R1 curve.+type Fq = Prime Q+type Q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff++-- | Field of coefficients of SECP521R1 curve.+type Fr = Prime R+type R = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409++-- SECP521R1 curve is a Weierstrass curve.+instance Curve 'Weierstrass c SECP521R1 Fq Fr => WCurve c SECP521R1 Fq Fr where+  a_ = const _a+  {-# INLINABLE a_ #-}+  b_ = const _b+  {-# INLINABLE b_ #-}+  h_ = const _h+  {-# INLINABLE h_ #-}+  q_ = const _q+  {-# INLINABLE q_ #-}+  r_ = const _r+  {-# INLINABLE r_ #-}++-- | Affine SECP521R1 curve point.+type PA = WAPoint SECP521R1 Fq Fr++-- Affine SECP521R1 curve is a Weierstrass affine curve.+instance WACurve SECP521R1 Fq Fr where+  gA_ = gA+  {-# INLINABLE gA_ #-}++-- | Jacobian SECP521R1 point.+type PJ = WJPoint SECP521R1 Fq Fr++-- Jacobian SECP521R1 curve is a Weierstrass Jacobian curve.+instance WJCurve SECP521R1 Fq Fr where+  gJ_ = gJ+  {-# INLINABLE gJ_ #-}++-- | Projective SECP521R1 point.+type PP = WPPoint SECP521R1 Fq Fr++-- Projective SECP521R1 curve is a Weierstrass projective curve.+instance WPCurve SECP521R1 Fq Fr where+  gP_ = gP+  {-# INLINABLE gP_ #-}++-------------------------------------------------------------------------------+-- Parameters+-------------------------------------------------------------------------------++-- | Coefficient @A@ of SECP521R1 curve.+_a :: Fq+_a = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc+{-# INLINABLE _a #-}++-- | Coefficient @B@ of SECP521R1 curve.+_b :: Fq+_b = 0x51953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00+{-# INLINABLE _b #-}++-- | Cofactor of SECP521R1 curve.+_h :: Natural+_h = 0x1+{-# INLINABLE _h #-}++-- | Characteristic of SECP521R1 curve.+_q :: Natural+_q = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff+{-# INLINABLE _q #-}++-- | Order of SECP521R1 curve.+_r :: Natural+_r = 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409+{-# INLINABLE _r #-}++-- | Coordinate @X@ of SECP521R1 curve.+_x :: Fq+_x = 0xc6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66+{-# INLINABLE _x #-}++-- | Coordinate @Y@ of SECP521R1 curve.+_y :: Fq+_y = 0x11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650+{-# INLINABLE _y #-}++-- | Generator of affine SECP521R1 curve.+gA :: PA+gA = A _x _y+{-# INLINABLE gA #-}++-- | Generator of Jacobian SECP521R1 curve.+gJ :: PJ+gJ = J _x _y 1+{-# INLINABLE gJ #-}++-- | Generator of projective SECP521R1 curve.+gP :: PP+gP = P _x _y 1+{-# INLINABLE gP #-}
− src/Group.hs
@@ -1,56 +0,0 @@-module Group-  ( Group(..)-  ) where--import Protolude--import Control.Monad.Random (MonadRandom, Random, getRandom)-import Test.Tasty.QuickCheck (Arbitrary)-import Text.PrettyPrint.Leijen.Text (Pretty)------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Groups.-class (Arbitrary g, Eq g, Generic g,-       Monoid g, Pretty g, Random g, Show g) => Group g where-  {-# MINIMAL add, dbl, def, gen, id, inv, order #-}--  -- | Element addition.-  add :: g -> g -> g--  -- | Element doubling.-  dbl :: g -> g--  -- | Check well-defined.-  def :: g -> Bool--  -- | Group generator.-  gen :: g--  -- | Identity element.-  id :: g--  -- | Element inversion.-  inv :: g -> g--  -- | Element multiplication.-  mul' :: g -> Integer -> g-  mul' p n-    | n < 0     = inv (mul' p (-n))-    | n == 0    = id-    | n == 1    = p-    | even n    = p'-    | otherwise = add p p'-    where-      p' = mul' (dbl p) (div n 2)-  {-# INLINABLE mul' #-}--  -- | Curve order.-  order :: g -> Integer--  -- | Random element.-  rnd :: MonadRandom m => m g-  rnd = getRandom-  {-# INLINABLE rnd #-}
− src/Group/Field.hs
@@ -1,109 +0,0 @@-module Group.Field-  ( module Group-  , module Group.Field-  ) where--import Protolude--import Control.Monad.Random (Random(..))-import GaloisField (GaloisField(..))-import Test.Tasty.QuickCheck (Arbitrary(..))-import Text.PrettyPrint.Leijen.Text (Pretty(..))--import Curve (PrimeField')-import Group (Group(..))------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Field groups.-class (GaloisField q, PrimeField' r) => FGroup r q where-  {-# MINIMAL g_, h_, q_, r_ #-}-  g_ :: Element r q            -- ^ Group generator.-  h_ :: Element r q -> Integer -- ^ Group cofactor.-  q_ :: Element r q -> Integer -- ^ Group characteristic.-  r_ :: Element r q -> Integer -- ^ Group order.---- | Field elements.-newtype Element r q = F q-  deriving (Eq, Functor, Generic, NFData, Read, Show)------------------------------------------------------------------------------------ Operations------------------------------------------------------------------------------------ Field elements are groups.-instance FGroup r q => Group (Element r q) where--  add = (<>)-  {-# INLINABLE add #-}--  dbl = join (<>)-  {-# INLINABLE dbl #-}--  def (F x) = x /= 0-  {-# INLINABLE def #-}--  gen = g_-  {-# INLINABLE gen #-}--  id = mempty-  {-# INLINABLE id #-}--  inv = (<$>) recip-  {-# INLINABLE inv #-}--  mul' = (. flip pow) . flip (<$>)-  {-# INLINABLE mul' #-}--  order = r_-  {-# INLINABLE order #-}---- Field elements are monoids.-instance FGroup r q => Monoid (Element r q) where--  mempty = F 1-  {-# INLINABLE mempty #-}---- Field elements are semigroups.-instance FGroup r q => Semigroup (Element r q) where--  F x <> F y = F (x * y)-  {-# INLINABLE (<>) #-}------------------------------------------------------------------------------------ Instances------------------------------------------------------------------------------------ Field elements are arbitrary.-instance FGroup r q => Arbitrary (Element r q) where--  -- Arbitrary group element.-  arbitrary = mul' gen <$> arbitrary-  {- Arbitrary field element.-  arbitrary = suchThatMap arbitrary defX-    where-      defX 0 = Nothing-      defX x = Just (F x)-  -}-  {-# INLINABLE arbitrary #-}---- Field elements are pretty.-instance FGroup r q => Pretty (Element r q) where--  pretty (F x) = pretty x---- Field elements are random.-instance FGroup r q => Random (Element r q) where--  -- Random group element.-  random = first (mul' gen) . random-  {- Random field element.-  random g = case random g of-    (0, g') -> random g'-    (x, g') -> (F x, g')-  -}-  {-# INLINABLE random #-}--  randomR  = panic "not implemented."
− src/Group/Field/BN254TF.hs
@@ -1,94 +0,0 @@-module Group.Field.BN254TF-  ( module Group-  , module Group.Field-  , module Group.Field.BN254TF-  ) where--import Protolude--import ExtensionField-import PrimeField--import Curve.Weierstrass.BN254T (Fq2)-import Group-import Group.Field------------------------------------------------------------------------------------ Types------------------------------------------------------------------------------------ | Field of coefficients of BN254TF group.-type Fr = PrimeField 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001---- | Field of elements of BN254TF group.-data PolynomialV-instance IrreducibleMonic Fq2 PolynomialV where-  split _ = X3 - Y X - 9-type Fq6 = ExtensionField Fq2 PolynomialV-data PolynomialW-instance IrreducibleMonic Fq6 PolynomialW where-  split _ = X2 - Y X-type Fq12 = ExtensionField Fq6 PolynomialW---- | BN254TF group is a field group.-instance FGroup Fr Fq12 where-  g_ = _g-  {-# INLINABLE g_ #-}-  h_ = const _h-  {-# INLINABLE h_ #-}-  q_ = const _q-  {-# INLINABLE q_ #-}-  r_ = const _r-  {-# INLINABLE r_ #-}---- | Element of BN254TF group.-type P = Element Fr Fq12------------------------------------------------------------------------------------ Parameters------------------------------------------------------------------------------------ | Generator of BN254TF group.-_g :: P-_g = F _x-{-# INLINABLE _g #-}---- | Cofactor of BN254TF group.-_h :: Integer-_h = 0x2f4b6dc97020fddadf107d20bc842d43bf6369b1ff6a1c71015f3f7be2e1e30a73bb94fec0daf15466b2383a5d3ec3d15ad524d8f70c54efee1bd8c3b21377e563a09a1b705887e72eceaddea3790364a61f676baaf977870e88d5c6c8fef0781361e443ae77f5b63a2a2264487f2940a8b1ddb3d15062cd0fb2015dfc6668449aed3cc48a82d0d602d268c7daab6a41294c0cc4ebe5664568dfc50e1648a45a4a1e3a5195846a3ed011a337a02088ec80e0ebae8755cfe107acf3aafb40494e406f804216bb10cf430b0f37856b42db8dc5514724ee93dfb10826f0dd4a0364b9580291d2cd65664814fde37ca80bb4ea44eacc5e641bbadf423f9a2cbf813b8d145da90029baee7ddadda71c7f3811c4105262945bba1668c3be69a3c230974d83561841d766f9c9d570bb7fbe04c7e8a6c3c760c0de81def35692da361102b6b9b2b918837fa97896e84abb40a4efb7e54523a486964b64ca86f120-{-# INLINABLE _h #-}---- | Characteristic of BN254TF group.-_q :: Integer-_q = 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47-{-# INLINABLE _q #-}---- | Order of BN254TF group.-_r :: Integer-_r = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001-{-# INLINABLE _r #-}---- | Element @X@ of BN254TF group.-_x :: Fq12-_x = toField [ toField [ toField [ 0x12c70e90e12b7874510cd1707e8856f71bf7f61d72631e268fca81000db9a1f5-                                 , 0x84f330485b09e866bc2f2ea2b897394deaf3f12aa31f28cb0552990967d4704-                                 ]-                       , toField [ 0xe841c2ac18a4003ac9326b9558380e0bc27fdd375e3605f96b819a358d34bde-                                 , 0x2067586885c3318eeffa1938c754fe3c60224ee5ae15e66af6b5104c47c8c5d8-                                 ]-                       , toField [ 0x1676555de427abc409c4a394bc5426886302996919d4bf4bdd02236e14b3636-                                 , 0x2b03614464f04dd772d86df88674c270ffc8747ea13e72da95e3594468f222c4-                                 ]-                       ]-             , toField [ toField [ 0x2c53748bcd21a7c038fb30ddc8ac3bf0af25d7859cfbc12c30c866276c565909-                                 , 0x27ed208e7a0b55ae6e710bbfbd2fd922669c026360e37cc5b2ab862411536104-                                 ]-                       , toField [ 0x1ad9db1937fd72f4ac462173d31d3d6117411fa48dba8d499d762b47edb3b54a-                                 , 0x279db296f9d479292532c7c493d8e0722b6efae42158387564889c79fc038ee3-                                 ]-                       , toField [ 0xdc26f240656bbe2029bd441d77c221f0ba4c70c94b29b5f17f0f6d08745a069-                                 , 0x108c19d15f9446f744d0f110405d3856d6cc3bda6c4d537663729f5257628417-                                 ]-                       ]-             ]-{-# INLINABLE _x #-}
+ test/Main.hs view
@@ -0,0 +1,14 @@+module Main where++import Protolude++import Test.Tasty++import Test.Binary+import Test.Edwards+import Test.Montgomery+import Test.Weierstrass++main :: IO ()+main = defaultMain $+  testGroup "Tests" [testBinary, testEdwards, testMontgomery, testWeierstrass]
+ test/Test/Binary.hs view
@@ -0,0 +1,53 @@+module Test.Binary where++import Protolude++import qualified Data.Curve.Binary.SECT113R1 as SECT113R1+import qualified Data.Curve.Binary.SECT113R2 as SECT113R2+import qualified Data.Curve.Binary.SECT131R1 as SECT131R1+import qualified Data.Curve.Binary.SECT131R2 as SECT131R2+import qualified Data.Curve.Binary.SECT163K1 as SECT163K1+import qualified Data.Curve.Binary.SECT163R1 as SECT163R1+import qualified Data.Curve.Binary.SECT163R2 as SECT163R2+import qualified Data.Curve.Binary.SECT193R1 as SECT193R1+import qualified Data.Curve.Binary.SECT193R2 as SECT193R2+import qualified Data.Curve.Binary.SECT233K1 as SECT233K1+import qualified Data.Curve.Binary.SECT233R1 as SECT233R1+import qualified Data.Curve.Binary.SECT239K1 as SECT239K1+import qualified Data.Curve.Binary.SECT283K1 as SECT283K1+import qualified Data.Curve.Binary.SECT283R1 as SECT283R1+import qualified Data.Curve.Binary.SECT409K1 as SECT409K1+import qualified Data.Curve.Binary.SECT409R1 as SECT409R1+import qualified Data.Curve.Binary.SECT571K1 as SECT571K1+import qualified Data.Curve.Binary.SECT571R1 as SECT571R1+import Test.Tasty+import Test.Tasty.QuickCheck++import Test.Curve++testBinary :: TestTree+testBinary = testGroup "Binary"+  [ testBinary' 0 "SECT113R1" SECT113R1._h 2 SECT113R1._r SECT113R1.gA SECT113R1.gP+  , testBinary' 0 "SECT113R2" SECT113R2._h 2 SECT113R2._r SECT113R2.gA SECT113R2.gP+  , testBinary' 0 "SECT131R1" SECT131R1._h 2 SECT131R1._r SECT131R1.gA SECT131R1.gP+  , testBinary' 0 "SECT131R2" SECT131R2._h 2 SECT131R2._r SECT131R2.gA SECT131R2.gP+  , testBinary' 0 "SECT163K1" SECT163K1._h 2 SECT163K1._r SECT163K1.gA SECT163K1.gP+  , testBinary' 0 "SECT163R1" SECT163R1._h 2 SECT163R1._r SECT163R1.gA SECT163R1.gP+  , testBinary' 0 "SECT163R2" SECT163R2._h 2 SECT163R2._r SECT163R2.gA SECT163R2.gP+  , testBinary' 0 "SECT193R1" SECT193R1._h 2 SECT193R1._r SECT193R1.gA SECT193R1.gP+  , testBinary' 0 "SECT193R2" SECT193R2._h 2 SECT193R2._r SECT193R2.gA SECT193R2.gP+  , testBinary' 0 "SECT233K1" SECT233K1._h 2 SECT233K1._r SECT233K1.gA SECT233K1.gP+  , testBinary' 0 "SECT233R1" SECT233R1._h 2 SECT233R1._r SECT233R1.gA SECT233R1.gP+  , testBinary' 0 "SECT239K1" SECT239K1._h 2 SECT239K1._r SECT239K1.gA SECT239K1.gP+  , testBinary' 0 "SECT283K1" SECT283K1._h 2 SECT283K1._r SECT283K1.gA SECT283K1.gP+  , testBinary' 0 "SECT283R1" SECT283R1._h 2 SECT283R1._r SECT283R1.gA SECT283R1.gP+  , testBinary' 0 "SECT409K1" SECT409K1._h 2 SECT409K1._r SECT409K1.gA SECT409K1.gP+  , testBinary' 0 "SECT409R1" SECT409R1._h 2 SECT409R1._r SECT409R1.gA SECT409R1.gP+  , testBinary' 0 "SECT571K1" SECT571K1._h 2 SECT571K1._r SECT571K1.gA SECT571K1.gP+  , testBinary' 0 "SECT571R1" SECT571R1._h 2 SECT571R1._r SECT571R1.gA SECT571R1.gP+  ]+  where+    testBinary' n c h q r a p = localOption (QuickCheckTests n) $ testGroup c+      [ test "Affine" a h q r+      , test "Projective" p h q r+      ]
+ test/Test/Curve.hs view
@@ -0,0 +1,78 @@+module Test.Curve where++import Protolude++import Data.Curve+import qualified Data.Field.Galois as F+import Data.Group+import GHC.Natural+import Test.Tasty+import Test.Tasty.HUnit+import Test.Tasty.QuickCheck++import Test.Field++hasseTheorem :: Natural -> Natural -> Natural -> Bool+hasseTheorem h r q = join (*) (naturalToInteger (h * r) - naturalToInteger q - 1) <= 4 * naturalToInteger q++doubleIdentities :: (Eq a, Eq b) => (a -> b) -> (b -> a) -> a -> b -> Bool+doubleIdentities f t e e' = f e == e' && t e' == e++doubleDefined :: (a -> Bool) -> (b -> Bool) -> (b -> a) -> b -> Bool+doubleDefined d d' t x = d' x && d (t x)++doubleInverses :: (Eq a, Eq b) => (a -> b) -> (b -> a) -> b -> Bool+doubleInverses f t x = f (t x) == x && t (f (t x)) == t x++doubleHomeomorphism :: (Eq a, Eq b) => (a -> a) -> (b -> b) -> (a -> b) -> (b -> a) -> b -> Bool+doubleHomeomorphism op op' f t x = t (op' x) == op (t x) && f (op (t x)) == op' x++curveAxioms :: forall f c e q r . (Curve f 'Affine e q r, Curve f c e q r)+  => Point f c e q r -> Natural -> Natural -> Natural -> TestTree+curveAxioms g h q r = testGroup "Curve axioms"+  [ testCase "identity closure" $+    def (mempty :: Point f c e q r) @?= True+  , testProperty "point closure" $+    (def :: Point f c e q r -> Bool)+  , testProperty "inversion closure" $+    def . (inv :: Point f c e q r -> Point f c e q r)+  , testProperty "addition closure" $+    (.) def . ((<>) :: Point f c e q r -> Point f c e q r -> Point f c e q r)+  , testProperty "doubling closure" $+    def . (join (<>) :: Point f c e q r -> Point f c e q r)+  , testProperty "multiplication closure" $+    def . (flip mul' (-3 :: Int) :: Point f c e q r -> Point f c e q r)+  , testCase "generator is parametrised" $+    gen @?= g+  , testCase "cofactor is parametrised" $+    cof g @?= h+  , testCase "characteristic is parametrised" $+    char g @?= q+  , testCase "order is parametrised" $+    order g @?= r+  , testCase "discriminant is nonzero" $+    disc g /= 0 @?= True+  , testCase "generator is well-defined" $+    def g @?= True+  , testCase "generator is in cyclic subgroup" $+    mul' g r @?= mempty+  , testCase "hasse theorem holds" $+    hasseTheorem h r (F.order (witness :: q)) @?= True+  , testCase "affine transformation is doubly identity-preserving" $+    doubleIdentities fromA (toA :: Point f c e q r -> Point f 'Affine e q r) mempty mempty @?= True+  , testProperty "affine transformation is doubly well-defined" $+    doubleDefined def def (toA :: Point f c e q r -> Point f 'Affine e q r)+  , testProperty "affine transformation is doubly invertible" $+    doubleInverses fromA (toA :: Point f c e q r -> Point f 'Affine e q r)+  , testProperty "affine transformation is doubly homeomorphic" $+    doubleHomeomorphism (flip mul 3) (flip mul 3) fromA (toA :: Point f c e q r -> Point f 'Affine e q r)+  ]++test :: forall f c e q r . (Curve f c e q r, Curve f 'Affine e q r)+  => TestName -> Point f c e q r -> Natural -> Natural -> Natural -> TestTree+test s g h q r = testGroup s+  [ testField "Field of points" (witness :: q)+  , testField "Field of coefficients" (witness :: r)+  , testGroup "Group axioms" $ groupAxioms (<>) invert (mempty :: Point f c e q r) (const True)+  , curveAxioms g h q r+  ]
+ test/Test/Edwards.hs view
@@ -0,0 +1,35 @@+module Test.Edwards where++import Protolude++import qualified Data.Curve.Edwards.Curve1174  as Curve1174+import qualified Data.Curve.Edwards.Curve41417 as Curve41417+import qualified Data.Curve.Edwards.E222       as E222+import qualified Data.Curve.Edwards.E382       as E382+import qualified Data.Curve.Edwards.E521       as E521+import qualified Data.Curve.Edwards.Ed448      as Ed448+import qualified Data.Curve.Edwards.Ed3363     as Ed3363+import qualified Data.Curve.Edwards.Ed25519    as Ed25519+import qualified Data.Curve.Edwards.JubJub     as JubJub+import Test.Tasty+import Test.Tasty.QuickCheck++import Test.Curve++testEdwards :: TestTree+testEdwards = testGroup "Edwards"+  [ testEdwards' 100  "Curve1174"  Curve1174._h  Curve1174._q  Curve1174._r  Curve1174.gA  Curve1174.gP+  , testEdwards' 100 "Curve41417" Curve41417._h Curve41417._q Curve41417._r Curve41417.gA Curve41417.gP+  , testEdwards' 100       "E222"       E222._h       E222._q       E222._r       E222.gA       E222.gP+  , testEdwards' 100       "E382"       E382._h       E382._q       E382._r       E382.gA       E382.gP+  , testEdwards' 100       "E521"       E521._h       E521._q       E521._r       E521.gA       E521.gP+  , testEdwards' 100      "Ed448"      Ed448._h      Ed448._q      Ed448._r      Ed448.gA      Ed448.gP+  , testEdwards' 100     "Ed3363"     Ed3363._h     Ed3363._q     Ed3363._r     Ed3363.gA     Ed3363.gP+  , testEdwards' 100    "Ed25519"    Ed25519._h    Ed25519._q    Ed25519._r    Ed25519.gA    Ed25519.gP+  , testEdwards' 100     "JubJub"     JubJub._h     JubJub._q     JubJub._r     JubJub.gA     JubJub.gP+  ]+  where+    testEdwards' n c h q r a p = localOption (QuickCheckTests n) $ testGroup c+      [ test "Affine" a h q r+      , test "Projective" p h q r+      ]
+ test/Test/Field.hs view
@@ -0,0 +1,72 @@+module Test.Field where++import Protolude++import Data.Field.Galois hiding (recip)+import Test.Tasty+import Test.Tasty.QuickCheck++annihilation :: Eq a => (a -> a -> a) -> a -> a -> Bool+annihilation op e x = op x e == e && op e x == e++associativity :: Eq a => (a -> a -> a) -> a -> a -> a -> Bool+associativity op x y z = op x (op y z) == op (op x y) z++commutativity :: Eq a => (a -> a -> a) -> a -> a -> Bool+commutativity op x y = op x y == op y x++distributivity :: Eq a => (a -> a -> a) -> (a -> a -> a) -> a -> a -> a -> Bool+distributivity op op' x y z = op (op' x y) z == op' (op x z) (op y z)+                           && op x (op' y z) == op' (op x y) (op x z)++identities :: Eq a => (a -> a -> a) -> a -> a -> Bool+identities op e x = op x e == x && op e x == x++inverses :: Eq a => (a -> a -> a) -> (a -> a) -> a -> a -> Bool+inverses op inv e x = op x (inv x) == e && op (inv x) x == e++groupAxioms :: forall g . (Arbitrary g, Eq g, Show g)+  => (g -> g -> g) -> (g -> g) -> g -> (g -> Bool) -> [TestTree]+groupAxioms add inv id cond =+  [ testProperty "associativity" $+    associativity add+  , testProperty "commutativity" $+    commutativity add+  , testProperty "identity" $+    identities add id+  , testProperty "inverses" $+    \x -> cond x ==> inverses add inv id x+  ]++fieldAxioms :: forall k . GaloisField k => k -> TestTree+fieldAxioms _ = testGroup "Field axioms"+  [ testGroup "additive group axioms" $+    groupAxioms (+) negate (0 :: k) (const True)+  , testGroup "multiplicative group axioms" $+    groupAxioms (*) recip (1 :: k) (/= 0)+  , testProperty "distributivity of multiplication over addition" $+    distributivity ((*) :: k -> k -> k) (+)+  , testProperty "multiplicative annihilation" $+    annihilation ((*) :: k -> k -> k) 0+  ]++frobeniusEndomorphisms :: forall k . GaloisField k => k -> TestTree+frobeniusEndomorphisms _ = testGroup "Frobenius endomorphisms"+  [ testProperty "frobenius endomorphisms are characteristic powers" $+    \(x :: k) -> frob x == pow x (char (witness :: k))+  , testProperty "frobenius endomorphisms are ring homomorphisms" $+    \(x :: k) (y :: k) (z :: k) -> frob (x * y + z) == frob x * frob y + frob z+  ]++squareRoots :: forall k . GaloisField k => k -> TestTree+squareRoots _ = localOption (QuickCheckMaxRatio 100) $ testGroup "Square roots"+  [ testProperty "squares of square roots" $+    \(x :: k) -> qr x+    ==> ((join (*) <$> sr x) == Just x)+  , testProperty "solutions of quadratic equations" $+    \(a :: k) (b :: k) (c :: k) -> a /= 0 && isJust (quad a b c)+    ==> (((\x -> (a * x + b) * x + c) <$> quad a b c) == Just 0)+  ]++testField :: forall k . GaloisField k => TestName -> k -> TestTree+testField s x = testGroup s [fieldAxioms x, frobeniusEndomorphisms x, squareRoots x]
+ test/Test/Montgomery.hs view
@@ -0,0 +1,28 @@+module Test.Montgomery where++import Protolude++import qualified Data.Curve.Montgomery.Curve448    as Curve448+import qualified Data.Curve.Montgomery.Curve25519  as Curve25519+import qualified Data.Curve.Montgomery.Curve383187 as Curve383187+import qualified Data.Curve.Montgomery.M221        as M221+import qualified Data.Curve.Montgomery.M383        as M383+import qualified Data.Curve.Montgomery.M511        as M511+import Test.Tasty+import Test.Tasty.QuickCheck++import Test.Curve++testMontgomery :: TestTree+testMontgomery = testGroup "Montgomery"+  [ testMontgomery' 100    "Curve448"    Curve448._h    Curve448._q    Curve448._r    Curve448.gA+  , testMontgomery' 100  "Curve25519"  Curve25519._h  Curve25519._q  Curve25519._r  Curve25519.gA+  , testMontgomery' 100 "Curve383187" Curve383187._h Curve383187._q Curve383187._r Curve383187.gA+  , testMontgomery' 100        "M221"        M221._h        M221._q        M221._r        M221.gA+  , testMontgomery' 100        "M383"        M383._h        M383._q        M383._r        M383.gA+  , testMontgomery' 100        "M511"        M511._h        M511._q        M511._r        M511.gA+  ]+  where+    testMontgomery' n c h q r a = localOption (QuickCheckTests n) $ testGroup c+      [ test "Affine" a h q r+      ]
+ test/Test/Weierstrass.hs view
@@ -0,0 +1,120 @@+module Test.Weierstrass where++import Protolude++import qualified Data.Curve.Weierstrass.Anomalous       as Anomalous+import qualified Data.Curve.Weierstrass.ANSSIFRP256V1   as ANSSIFRP256V1+import qualified Data.Curve.Weierstrass.BLS12381        as BLS12381+import qualified Data.Curve.Weierstrass.BLS12381T       as BLS12381T+import qualified Data.Curve.Weierstrass.BLS48581        as BLS48581+import qualified Data.Curve.Weierstrass.BLS48581T       as BLS48581T+import qualified Data.Curve.Weierstrass.BN224           as BN224+import qualified Data.Curve.Weierstrass.BN254           as BN254+import qualified Data.Curve.Weierstrass.BN254T          as BN254T+import qualified Data.Curve.Weierstrass.BN254A          as BN254A+import qualified Data.Curve.Weierstrass.BN254AT         as BN254AT+import qualified Data.Curve.Weierstrass.BN254B          as BN254B+import qualified Data.Curve.Weierstrass.BN254BT         as BN254BT+import qualified Data.Curve.Weierstrass.BN254C          as BN254C+import qualified Data.Curve.Weierstrass.BN254CT         as BN254CT+import qualified Data.Curve.Weierstrass.BN254D          as BN254D+import qualified Data.Curve.Weierstrass.BN254DT         as BN254DT+import qualified Data.Curve.Weierstrass.BN256           as BN256+import qualified Data.Curve.Weierstrass.BN384           as BN384+import qualified Data.Curve.Weierstrass.BN462           as BN462+import qualified Data.Curve.Weierstrass.BN462T          as BN462T+import qualified Data.Curve.Weierstrass.BN512           as BN512+import qualified Data.Curve.Weierstrass.BrainpoolP160R1 as BrainpoolP160R1+import qualified Data.Curve.Weierstrass.BrainpoolP160T1 as BrainpoolP160T1+import qualified Data.Curve.Weierstrass.BrainpoolP192R1 as BrainpoolP192R1+import qualified Data.Curve.Weierstrass.BrainpoolP192T1 as BrainpoolP192T1+import qualified Data.Curve.Weierstrass.BrainpoolP224R1 as BrainpoolP224R1+import qualified Data.Curve.Weierstrass.BrainpoolP224T1 as BrainpoolP224T1+import qualified Data.Curve.Weierstrass.BrainpoolP256R1 as BrainpoolP256R1+import qualified Data.Curve.Weierstrass.BrainpoolP256T1 as BrainpoolP256T1+import qualified Data.Curve.Weierstrass.BrainpoolP320R1 as BrainpoolP320R1+import qualified Data.Curve.Weierstrass.BrainpoolP320T1 as BrainpoolP320T1+import qualified Data.Curve.Weierstrass.BrainpoolP384R1 as BrainpoolP384R1+import qualified Data.Curve.Weierstrass.BrainpoolP384T1 as BrainpoolP384T1+import qualified Data.Curve.Weierstrass.BrainpoolP512R1 as BrainpoolP512R1+import qualified Data.Curve.Weierstrass.BrainpoolP512T1 as BrainpoolP512T1+import qualified Data.Curve.Weierstrass.SECP112R1       as SECP112R1+import qualified Data.Curve.Weierstrass.SECP112R2       as SECP112R2+import qualified Data.Curve.Weierstrass.SECP128R1       as SECP128R1+import qualified Data.Curve.Weierstrass.SECP128R2       as SECP128R2+import qualified Data.Curve.Weierstrass.SECP160K1       as SECP160K1+import qualified Data.Curve.Weierstrass.SECP160R1       as SECP160R1+import qualified Data.Curve.Weierstrass.SECP160R2       as SECP160R2+import qualified Data.Curve.Weierstrass.SECP192K1       as SECP192K1+import qualified Data.Curve.Weierstrass.SECP192R1       as SECP192R1+import qualified Data.Curve.Weierstrass.SECP224K1       as SECP224K1+import qualified Data.Curve.Weierstrass.SECP224R1       as SECP224R1+import qualified Data.Curve.Weierstrass.SECP256K1       as SECP256K1+import qualified Data.Curve.Weierstrass.SECP256R1       as SECP256R1+import qualified Data.Curve.Weierstrass.SECP384R1       as SECP384R1+import qualified Data.Curve.Weierstrass.SECP521R1       as SECP521R1+import Test.Tasty+import Test.Tasty.QuickCheck++import Test.Curve++testWeierstrass :: TestTree+testWeierstrass = testGroup "Weierstrass"+  [ testWeierstrass' 100       "Anomalous"       Anomalous._h       Anomalous._q       Anomalous._r       Anomalous.gA       Anomalous.gJ       Anomalous.gP+  , testWeierstrass' 100   "ANSSIFRP256V1"   ANSSIFRP256V1._h   ANSSIFRP256V1._q   ANSSIFRP256V1._r   ANSSIFRP256V1.gA   ANSSIFRP256V1.gJ   ANSSIFRP256V1.gP+  , testWeierstrass' 100        "BLS12381"        BLS12381._h        BLS12381._q        BLS12381._r        BLS12381.gA        BLS12381.gJ        BLS12381.gP+  , testWeierstrass'  10       "BLS12381T"       BLS12381T._h       BLS12381T._q       BLS12381T._r       BLS12381T.gA       BLS12381T.gJ       BLS12381T.gP+  , testWeierstrass' 100        "BLS48581"        BLS48581._h        BLS48581._q        BLS48581._r        BLS48581.gA        BLS48581.gJ        BLS48581.gP+  , testWeierstrass'   0       "BLS48581T"       BLS48581T._h       BLS48581T._q       BLS48581T._r       BLS48581T.gA       BLS48581T.gJ       BLS48581T.gP+  , testWeierstrass' 100           "BN224"           BN224._h           BN224._q           BN224._r           BN224.gA           BN224.gJ           BN224.gP+  , testWeierstrass' 100           "BN254"           BN254._h           BN254._q           BN254._r           BN254.gA           BN254.gJ           BN254.gP+  , testWeierstrass'  10          "BN254T"          BN254T._h          BN254T._q          BN254T._r          BN254T.gA          BN254T.gJ          BN254T.gP+  , testWeierstrass' 100          "BN254A"          BN254A._h          BN254A._q          BN254A._r          BN254A.gA          BN254A.gJ          BN254A.gP+  , testWeierstrass'  10         "BN254AT"         BN254AT._h         BN254AT._q         BN254AT._r         BN254AT.gA         BN254AT.gJ         BN254AT.gP+  , testWeierstrass' 100          "BN254B"          BN254B._h          BN254B._q          BN254B._r          BN254B.gA          BN254B.gJ          BN254B.gP+  , testWeierstrass'  10         "BN254BT"         BN254BT._h         BN254BT._q         BN254BT._r         BN254BT.gA         BN254BT.gJ         BN254BT.gP+  , testWeierstrass' 100          "BN254C"          BN254C._h          BN254C._q          BN254C._r          BN254C.gA          BN254C.gJ          BN254C.gP+  , testWeierstrass'  10         "BN254CT"         BN254CT._h         BN254CT._q         BN254CT._r         BN254CT.gA         BN254CT.gJ         BN254CT.gP+  , testWeierstrass' 100          "BN254D"          BN254D._h          BN254D._q          BN254D._r          BN254D.gA          BN254D.gJ          BN254D.gP+  , testWeierstrass'  10         "BN254DT"         BN254DT._h         BN254DT._q         BN254DT._r         BN254DT.gA         BN254DT.gJ         BN254DT.gP+  , testWeierstrass' 100           "BN256"           BN256._h           BN256._q           BN256._r           BN256.gA           BN256.gJ           BN256.gP+  , testWeierstrass' 100           "BN384"           BN384._h           BN384._q           BN384._r           BN384.gA           BN384.gJ           BN384.gP+  , testWeierstrass' 100           "BN462"           BN462._h           BN462._q           BN462._r           BN462.gA           BN462.gJ           BN462.gP+  , testWeierstrass'  10          "BN462T"          BN462T._h          BN462T._q          BN462T._r          BN462T.gA          BN462T.gJ          BN462T.gP+  , testWeierstrass' 100           "BN512"           BN512._h           BN512._q           BN512._r           BN512.gA           BN512.gJ           BN512.gP+  , testWeierstrass' 100 "BrainpoolP160R1" BrainpoolP160R1._h BrainpoolP160R1._q BrainpoolP160R1._r BrainpoolP160R1.gA BrainpoolP160R1.gJ BrainpoolP160R1.gP+  , testWeierstrass' 100 "BrainpoolP160T1" BrainpoolP160T1._h BrainpoolP160T1._q BrainpoolP160T1._r BrainpoolP160T1.gA BrainpoolP160T1.gJ BrainpoolP160T1.gP+  , testWeierstrass' 100 "BrainpoolP192R1" BrainpoolP192R1._h BrainpoolP192R1._q BrainpoolP192R1._r BrainpoolP192R1.gA BrainpoolP192R1.gJ BrainpoolP192R1.gP+  , testWeierstrass' 100 "BrainpoolP192T1" BrainpoolP192T1._h BrainpoolP192T1._q BrainpoolP192T1._r BrainpoolP192T1.gA BrainpoolP192T1.gJ BrainpoolP192T1.gP+  , testWeierstrass' 100 "BrainpoolP224R1" BrainpoolP224R1._h BrainpoolP224R1._q BrainpoolP224R1._r BrainpoolP224R1.gA BrainpoolP224R1.gJ BrainpoolP224R1.gP+  , testWeierstrass' 100 "BrainpoolP224T1" BrainpoolP224T1._h BrainpoolP224T1._q BrainpoolP224T1._r BrainpoolP224T1.gA BrainpoolP224T1.gJ BrainpoolP224T1.gP+  , testWeierstrass' 100 "BrainpoolP256R1" BrainpoolP256R1._h BrainpoolP256R1._q BrainpoolP256R1._r BrainpoolP256R1.gA BrainpoolP256R1.gJ BrainpoolP256R1.gP+  , testWeierstrass' 100 "BrainpoolP256T1" BrainpoolP256T1._h BrainpoolP256T1._q BrainpoolP256T1._r BrainpoolP256T1.gA BrainpoolP256T1.gJ BrainpoolP256T1.gP+  , testWeierstrass' 100 "BrainpoolP320R1" BrainpoolP320R1._h BrainpoolP320R1._q BrainpoolP320R1._r BrainpoolP320R1.gA BrainpoolP320R1.gJ BrainpoolP320R1.gP+  , testWeierstrass' 100 "BrainpoolP320T1" BrainpoolP320T1._h BrainpoolP320T1._q BrainpoolP320T1._r BrainpoolP320T1.gA BrainpoolP320T1.gJ BrainpoolP320T1.gP+  , testWeierstrass' 100 "BrainpoolP384R1" BrainpoolP384R1._h BrainpoolP384R1._q BrainpoolP384R1._r BrainpoolP384R1.gA BrainpoolP384R1.gJ BrainpoolP384R1.gP+  , testWeierstrass' 100 "BrainpoolP384T1" BrainpoolP384T1._h BrainpoolP384T1._q BrainpoolP384T1._r BrainpoolP384T1.gA BrainpoolP384T1.gJ BrainpoolP384T1.gP+  , testWeierstrass' 100 "BrainpoolP512R1" BrainpoolP512R1._h BrainpoolP512R1._q BrainpoolP512R1._r BrainpoolP512R1.gA BrainpoolP512R1.gJ BrainpoolP512R1.gP+  , testWeierstrass' 100 "BrainpoolP512T1" BrainpoolP512T1._h BrainpoolP512T1._q BrainpoolP512T1._r BrainpoolP512T1.gA BrainpoolP512T1.gJ BrainpoolP512T1.gP+  , testWeierstrass' 100       "SECP112R1"       SECP112R1._h       SECP112R1._q       SECP112R1._r       SECP112R1.gA       SECP112R1.gJ       SECP112R1.gP+  , testWeierstrass' 100       "SECP112R2"       SECP112R2._h       SECP112R2._q       SECP112R2._r       SECP112R2.gA       SECP112R2.gJ       SECP112R2.gP+  , testWeierstrass' 100       "SECP128R1"       SECP128R1._h       SECP128R1._q       SECP128R1._r       SECP128R1.gA       SECP128R1.gJ       SECP128R1.gP+  , testWeierstrass' 100       "SECP128R2"       SECP128R2._h       SECP128R2._q       SECP128R2._r       SECP128R2.gA       SECP128R2.gJ       SECP128R2.gP+  , testWeierstrass' 100       "SECP160K1"       SECP160K1._h       SECP160K1._q       SECP160K1._r       SECP160K1.gA       SECP160K1.gJ       SECP160K1.gP+  , testWeierstrass' 100       "SECP160R1"       SECP160R1._h       SECP160R1._q       SECP160R1._r       SECP160R1.gA       SECP160R1.gJ       SECP160R1.gP+  , testWeierstrass' 100       "SECP160R2"       SECP160R2._h       SECP160R2._q       SECP160R2._r       SECP160R2.gA       SECP160R2.gJ       SECP160R2.gP+  , testWeierstrass' 100       "SECP192K1"       SECP192K1._h       SECP192K1._q       SECP192K1._r       SECP192K1.gA       SECP192K1.gJ       SECP192K1.gP+  , testWeierstrass' 100       "SECP192R1"       SECP192R1._h       SECP192R1._q       SECP192R1._r       SECP192R1.gA       SECP192R1.gJ       SECP192R1.gP+  , testWeierstrass' 100       "SECP224K1"       SECP224K1._h       SECP224K1._q       SECP224K1._r       SECP224K1.gA       SECP224K1.gJ       SECP224K1.gP+  , testWeierstrass' 100       "SECP224R1"       SECP224R1._h       SECP224R1._q       SECP224R1._r       SECP224R1.gA       SECP224R1.gJ       SECP224R1.gP+  , testWeierstrass' 100       "SECP256K1"       SECP256K1._h       SECP256K1._q       SECP256K1._r       SECP256K1.gA       SECP256K1.gJ       SECP256K1.gP+  , testWeierstrass' 100       "SECP256R1"       SECP256R1._h       SECP256R1._q       SECP256R1._r       SECP256R1.gA       SECP256R1.gJ       SECP256R1.gP+  , testWeierstrass' 100       "SECP384R1"       SECP384R1._h       SECP384R1._q       SECP384R1._r       SECP384R1.gA       SECP384R1.gJ       SECP384R1.gP+  , testWeierstrass' 100       "SECP521R1"       SECP521R1._h       SECP521R1._q       SECP521R1._r       SECP521R1.gA       SECP521R1.gJ       SECP521R1.gP+  ]+  where+    testWeierstrass' n c h q r a j p = localOption (QuickCheckTests n) $ testGroup c+      [ test "Affine" a h q r+      , test "Jacobian" j h q r+      , test "Projective" p h q r+      ]
− tests/BinaryTests.hs
@@ -1,53 +0,0 @@-module BinaryTests where--import Protolude--import qualified Curve.Binary.SECT113R1 as SECT113R1-import qualified Curve.Binary.SECT113R2 as SECT113R2-import qualified Curve.Binary.SECT131R1 as SECT131R1-import qualified Curve.Binary.SECT131R2 as SECT131R2-import qualified Curve.Binary.SECT163K1 as SECT163K1-import qualified Curve.Binary.SECT163R1 as SECT163R1-import qualified Curve.Binary.SECT163R2 as SECT163R2-import qualified Curve.Binary.SECT193R1 as SECT193R1-import qualified Curve.Binary.SECT193R2 as SECT193R2-import qualified Curve.Binary.SECT233K1 as SECT233K1-import qualified Curve.Binary.SECT233R1 as SECT233R1-import qualified Curve.Binary.SECT239K1 as SECT239K1-import qualified Curve.Binary.SECT283K1 as SECT283K1-import qualified Curve.Binary.SECT283R1 as SECT283R1-import qualified Curve.Binary.SECT409K1 as SECT409K1-import qualified Curve.Binary.SECT409R1 as SECT409R1-import qualified Curve.Binary.SECT571K1 as SECT571K1-import qualified Curve.Binary.SECT571R1 as SECT571R1-import Test.Tasty-import Test.Tasty.QuickCheck--import GroupTests--testBinary :: TestTree-testBinary = testGroup "Binary"-  [ testBinary' 1 "SECT113R1" SECT113R1._h 2 SECT113R1._r SECT113R1.gA SECT113R1.gP-  , testBinary' 1 "SECT113R2" SECT113R2._h 2 SECT113R2._r SECT113R2.gA SECT113R2.gP-  , testBinary' 1 "SECT131R1" SECT131R1._h 2 SECT131R1._r SECT131R1.gA SECT131R1.gP-  , testBinary' 1 "SECT131R2" SECT131R2._h 2 SECT131R2._r SECT131R2.gA SECT131R2.gP-  , testBinary' 1 "SECT163K1" SECT163K1._h 2 SECT163K1._r SECT163K1.gA SECT163K1.gP-  , testBinary' 1 "SECT163R1" SECT163R1._h 2 SECT163R1._r SECT163R1.gA SECT163R1.gP-  , testBinary' 1 "SECT163R2" SECT163R2._h 2 SECT163R2._r SECT163R2.gA SECT163R2.gP-  , testBinary' 1 "SECT193R1" SECT193R1._h 2 SECT193R1._r SECT193R1.gA SECT193R1.gP-  , testBinary' 1 "SECT193R2" SECT193R2._h 2 SECT193R2._r SECT193R2.gA SECT193R2.gP-  , testBinary' 1 "SECT233K1" SECT233K1._h 2 SECT233K1._r SECT233K1.gA SECT233K1.gP-  , testBinary' 1 "SECT233R1" SECT233R1._h 2 SECT233R1._r SECT233R1.gA SECT233R1.gP-  , testBinary' 1 "SECT239K1" SECT239K1._h 2 SECT239K1._r SECT239K1.gA SECT239K1.gP-  , testBinary' 1 "SECT283K1" SECT283K1._h 2 SECT283K1._r SECT283K1.gA SECT283K1.gP-  , testBinary' 1 "SECT283R1" SECT283R1._h 2 SECT283R1._r SECT283R1.gA SECT283R1.gP-  , testBinary' 1 "SECT409K1" SECT409K1._h 2 SECT409K1._r SECT409K1.gA SECT409K1.gP-  , testBinary' 1 "SECT409R1" SECT409R1._h 2 SECT409R1._r SECT409R1.gA SECT409R1.gP-  , testBinary' 1 "SECT571K1" SECT571K1._h 2 SECT571K1._r SECT571K1.gA SECT571K1.gP-  , testBinary' 1 "SECT571R1" SECT571R1._h 2 SECT571R1._r SECT571R1.gA SECT571R1.gP-  ]-  where-    testBinary' n c h q r a p = localOption (QuickCheckTests n) $ testGroup c-      [ test "Affine" a h q r-      , test "Projective" p h q r-      ]
− tests/EdwardsTests.hs
@@ -1,35 +0,0 @@-module EdwardsTests where--import Protolude--import qualified Curve.Edwards.Curve1174  as Curve1174-import qualified Curve.Edwards.Curve41417 as Curve41417-import qualified Curve.Edwards.E222       as E222-import qualified Curve.Edwards.E382       as E382-import qualified Curve.Edwards.E521       as E521-import qualified Curve.Edwards.Ed448      as Ed448-import qualified Curve.Edwards.Ed3363     as Ed3363-import qualified Curve.Edwards.Ed25519    as Ed25519-import qualified Curve.Edwards.JubJub     as JubJub-import Test.Tasty-import Test.Tasty.QuickCheck--import GroupTests--testEdwards :: TestTree-testEdwards = testGroup "Edwards"-  [ testEdwards' 100  "Curve1174"  Curve1174._h  Curve1174._q  Curve1174._r  Curve1174.gA  Curve1174.gP-  , testEdwards' 100 "Curve41417" Curve41417._h Curve41417._q Curve41417._r Curve41417.gA Curve41417.gP-  , testEdwards' 100       "E222"       E222._h       E222._q       E222._r       E222.gA       E222.gP-  , testEdwards' 100       "E382"       E382._h       E382._q       E382._r       E382.gA       E382.gP-  , testEdwards' 100       "E521"       E521._h       E521._q       E521._r       E521.gA       E521.gP-  , testEdwards' 100      "Ed448"      Ed448._h      Ed448._q      Ed448._r      Ed448.gA      Ed448.gP-  , testEdwards' 100     "Ed3363"     Ed3363._h     Ed3363._q     Ed3363._r     Ed3363.gA     Ed3363.gP-  , testEdwards' 100    "Ed25519"    Ed25519._h    Ed25519._q    Ed25519._r    Ed25519.gA    Ed25519.gP-  , testEdwards' 100     "JubJub"     JubJub._h     JubJub._q     JubJub._r     JubJub.gA     JubJub.gP-  ]-  where-    testEdwards' n c h q r a p = localOption (QuickCheckTests n) $ testGroup c-      [ test "Affine" a h q r-      , test "Projective" p h q r-      ]
− tests/FieldTests.hs
@@ -1,11 +0,0 @@-module FieldTests where--import qualified Group.Field.BN254TF as BN254TF-import Test.Tasty--import GroupTests--testField :: TestTree-testField = testGroup "Field"-  [ test' "BN254TF" BN254TF._g BN254TF._h BN254TF._q BN254TF._r-  ]
− tests/GroupTests.hs
@@ -1,125 +0,0 @@-module GroupTests where--import Protolude--import Curve-import GaloisField-import Group-import Group.Field-import Math.NumberTheory.Primes.Testing-import Test.Tasty-import Test.Tasty.HUnit-import Test.Tasty.QuickCheck--identities :: Eq a => (a -> a -> a) -> a -> a -> Bool-identities op e x = op x e == x && op e x == x--inverses :: Eq a => (a -> a -> a) -> (a -> a) -> a -> a -> Bool-inverses op neg e x = op x (neg x) == e && op (neg x) x == e--commutativity :: Eq a => (a -> a -> a) -> a -> a -> Bool-commutativity op x y = op x y == op y x--associativity :: Eq a => (a -> a -> a) -> a -> a -> a -> Bool-associativity op x y z = op x (op y z) == op (op x y) z--groupAxioms :: forall g . Group g => g -> TestTree-groupAxioms _ = testGroup "Group axioms"-  [ testCase "identity closure" $-    def (mempty :: g) @?= True-  , testProperty "point closure" $-    (def :: g -> Bool)-  , testProperty "inversion closure" $-    def . (inv :: g -> g)-  , testProperty "addition closure" $-    (.) def . ((<>) :: g -> g -> g)-  , testProperty "doubling closure" $-    def . (join (<>) :: g -> g)-  , testProperty "multiplication closure" $-    def . (flip mul' (-3) :: g -> g)-  , testProperty "identity" $-    identities ((<>) :: g -> g -> g) mempty-  , testProperty "inverses" $-    inverses ((<>) :: g -> g -> g) inv mempty-  , testProperty "commutativity" $-    commutativity ((<>) :: g -> g -> g)-  , testProperty "associativity" $-    associativity ((<>) :: g -> g -> g)-  ]--hasseTheorem :: Integer -> Integer -> Integer -> Bool-hasseTheorem h r q = join (*) (h * r - q - 1) <= 4 * q--doubleIdentities :: (Eq a, Eq b) => (a -> b) -> (b -> a) -> a -> b -> Bool-doubleIdentities f t e e' = f e == e' && t e' == e--doubleDefined :: (a -> Bool) -> (b -> Bool) -> (b -> a) -> b -> Bool-doubleDefined d d' t x = d' x && d (t x)--doubleInverses :: (Eq a, Eq b) => (a -> b) -> (b -> a) -> b -> Bool-doubleInverses f t x = f (t x) == x && t (f (t x)) == t x--doubleHomeomorphism :: (Eq a, Eq b) => (a -> a) -> (b -> b) -> (a -> b) -> (b -> a) -> b -> Bool-doubleHomeomorphism op op' f t x = t (op' x) == op (t x) && f (op (t x)) == op' x--curveParameters :: forall f c e q r . (Curve f 'Affine e q r, Curve f c e q r)-  => Point f c e q r -> Integer -> Integer -> Integer -> TestTree-curveParameters g h q r = testGroup "Curve parameters"-  [ testCase "generator is parametrised" $-    gen @?= g-  , testCase "cofactor is parametrised" $-    cof g @?= h-  , testCase "characteristic is parametrised" $-    Curve.char g @?= q-  , testCase "order is parametrised" $-    Group.order g @?= r-  , testCase "characteristic is prime" $-    isPrime q @?= True-  , testCase "discriminant is nonzero" $-    disc g /= 0 @?= True-  , testCase "generator is well-defined" $-    def g @?= True-  , testCase "generator is in cyclic subgroup" $-    mul' g r @?= mempty-  , testCase "cyclic subgroup has prime order" $-    isPrime r @?= True-  , testCase "hasse theorem holds" $-    hasseTheorem h r (GaloisField.order (witness :: q)) @?= True-  , testCase "affine transformation is doubly identity-preserving" $-    doubleIdentities fromA (toA :: Point f c e q r -> Point f 'Affine e q r) mempty mempty @?= True-  , testProperty "affine transformation is doubly well-defined" $-    doubleDefined def def (toA :: Point f c e q r -> Point f 'Affine e q r)-  , testProperty "affine transformation is doubly invertible" $-    doubleInverses fromA (toA :: Point f c e q r -> Point f 'Affine e q r)-  , testProperty "affine transformation is doubly homeomorphic" $-    doubleHomeomorphism (flip mul 3) (flip mul 3) fromA (toA :: Point f c e q r -> Point f 'Affine e q r)-  ]--test :: (Curve f c e q r, Curve f 'Affine e q r)-  => TestName -> Point f c e q r -> Integer -> Integer -> Integer -> TestTree-test s g h q r = testGroup s [groupAxioms g, curveParameters g h q r]--fieldParameters :: forall q r . FGroup r q-  => Element r q -> Integer -> Integer -> Integer -> TestTree-fieldParameters g h q r = testGroup "Group parameters"-  [ testCase "generator is parametrised" $-    gen @?= g-  , testCase "characteristic is parametrised" $-    GaloisField.char (witness :: q) @?= q-  , testCase "order is parametrised" $-    Group.order g @?= r-  , testCase "characteristic is prime" $-    isPrime q @?= True-  , testCase "generator is well-defined" $-    def g @?= True-  , testCase "generator is in cyclic subgroup" $-    mul' g r @?= mempty-  , testCase "cyclic subgroup has prime order" $-    isPrime r @?= True-  , testCase "hasse theorem holds" $-    hasseTheorem h r (GaloisField.order (witness :: q)) @?= True-  ]--test' :: FGroup r q-  => TestName -> Element r q -> Integer -> Integer -> Integer -> TestTree-test' s g h q r = testGroup s [groupAxioms g, fieldParameters g h q r]
− tests/Main.hs
@@ -1,15 +0,0 @@-module Main where--import Protolude--import Test.Tasty--import BinaryTests-import EdwardsTests-import FieldTests-import MontgomeryTests-import WeierstrassTests--main :: IO ()-main = defaultMain $-  testGroup "Tests" [testBinary, testEdwards, testMontgomery, testWeierstrass, testField]
− tests/MontgomeryTests.hs
@@ -1,28 +0,0 @@-module MontgomeryTests where--import Protolude--import qualified Curve.Montgomery.Curve448    as Curve448-import qualified Curve.Montgomery.Curve25519  as Curve25519-import qualified Curve.Montgomery.Curve383187 as Curve383187-import qualified Curve.Montgomery.M221        as M221-import qualified Curve.Montgomery.M383        as M383-import qualified Curve.Montgomery.M511        as M511-import Test.Tasty-import Test.Tasty.QuickCheck--import GroupTests--testMontgomery :: TestTree-testMontgomery = testGroup "Montgomery"-  [ testMontgomery' 100    "Curve448"    Curve448._h    Curve448._q    Curve448._r    Curve448.gA-  , testMontgomery' 100  "Curve25519"  Curve25519._h  Curve25519._q  Curve25519._r  Curve25519.gA-  , testMontgomery' 100 "Curve383187" Curve383187._h Curve383187._q Curve383187._r Curve383187.gA-  , testMontgomery' 100        "M221"        M221._h        M221._q        M221._r        M221.gA-  , testMontgomery' 100        "M383"        M383._h        M383._q        M383._r        M383.gA-  , testMontgomery' 100        "M511"        M511._h        M511._q        M511._r        M511.gA-  ]-  where-    testMontgomery' n c h q r a = localOption (QuickCheckTests n) $ testGroup c-      [ test "Affine" a h q r-      ]
− tests/WeierstrassTests.hs
@@ -1,112 +0,0 @@-module WeierstrassTests where--import Protolude--import qualified Curve.Weierstrass.Anomalous       as Anomalous-import qualified Curve.Weierstrass.ANSSIFRP256V1   as ANSSIFRP256V1-import qualified Curve.Weierstrass.BLS12381        as BLS12381-import qualified Curve.Weierstrass.BLS12381T       as BLS12381T-import qualified Curve.Weierstrass.BLS48581        as BLS48581-import qualified Curve.Weierstrass.BLS48581T       as BLS48581T-import qualified Curve.Weierstrass.BN224           as BN224-import qualified Curve.Weierstrass.BN254           as BN254-import qualified Curve.Weierstrass.BN254T          as BN254T-import qualified Curve.Weierstrass.BN254A          as BN254A-import qualified Curve.Weierstrass.BN254AT         as BN254AT-import qualified Curve.Weierstrass.BN254B          as BN254B-import qualified Curve.Weierstrass.BN254BT         as BN254BT-import qualified Curve.Weierstrass.BN256           as BN256-import qualified Curve.Weierstrass.BN384           as BN384-import qualified Curve.Weierstrass.BN462           as BN462-import qualified Curve.Weierstrass.BN462T          as BN462T-import qualified Curve.Weierstrass.BN512           as BN512-import qualified Curve.Weierstrass.BrainpoolP160R1 as BrainpoolP160R1-import qualified Curve.Weierstrass.BrainpoolP160T1 as BrainpoolP160T1-import qualified Curve.Weierstrass.BrainpoolP192R1 as BrainpoolP192R1-import qualified Curve.Weierstrass.BrainpoolP192T1 as BrainpoolP192T1-import qualified Curve.Weierstrass.BrainpoolP224R1 as BrainpoolP224R1-import qualified Curve.Weierstrass.BrainpoolP224T1 as BrainpoolP224T1-import qualified Curve.Weierstrass.BrainpoolP256R1 as BrainpoolP256R1-import qualified Curve.Weierstrass.BrainpoolP256T1 as BrainpoolP256T1-import qualified Curve.Weierstrass.BrainpoolP320R1 as BrainpoolP320R1-import qualified Curve.Weierstrass.BrainpoolP320T1 as BrainpoolP320T1-import qualified Curve.Weierstrass.BrainpoolP384R1 as BrainpoolP384R1-import qualified Curve.Weierstrass.BrainpoolP384T1 as BrainpoolP384T1-import qualified Curve.Weierstrass.BrainpoolP512R1 as BrainpoolP512R1-import qualified Curve.Weierstrass.BrainpoolP512T1 as BrainpoolP512T1-import qualified Curve.Weierstrass.SECP112R1       as SECP112R1-import qualified Curve.Weierstrass.SECP112R2       as SECP112R2-import qualified Curve.Weierstrass.SECP128R1       as SECP128R1-import qualified Curve.Weierstrass.SECP128R2       as SECP128R2-import qualified Curve.Weierstrass.SECP160K1       as SECP160K1-import qualified Curve.Weierstrass.SECP160R1       as SECP160R1-import qualified Curve.Weierstrass.SECP160R2       as SECP160R2-import qualified Curve.Weierstrass.SECP192K1       as SECP192K1-import qualified Curve.Weierstrass.SECP192R1       as SECP192R1-import qualified Curve.Weierstrass.SECP224K1       as SECP224K1-import qualified Curve.Weierstrass.SECP224R1       as SECP224R1-import qualified Curve.Weierstrass.SECP256K1       as SECP256K1-import qualified Curve.Weierstrass.SECP256R1       as SECP256R1-import qualified Curve.Weierstrass.SECP384R1       as SECP384R1-import qualified Curve.Weierstrass.SECP521R1       as SECP521R1-import Test.Tasty-import Test.Tasty.QuickCheck--import GroupTests--testWeierstrass :: TestTree-testWeierstrass = testGroup "Weierstrass"-  [ testWeierstrass' 100       "Anomalous"       Anomalous._h       Anomalous._q       Anomalous._r       Anomalous.gA       Anomalous.gJ       Anomalous.gP-  , testWeierstrass' 100   "ANSSIFRP256V1"   ANSSIFRP256V1._h   ANSSIFRP256V1._q   ANSSIFRP256V1._r   ANSSIFRP256V1.gA   ANSSIFRP256V1.gJ   ANSSIFRP256V1.gP-  , testWeierstrass' 100        "BLS12381"        BLS12381._h        BLS12381._q        BLS12381._r        BLS12381.gA        BLS12381.gJ        BLS12381.gP-  , testWeierstrass'  10       "BLS12381T"       BLS12381T._h       BLS12381T._q       BLS12381T._r       BLS12381T.gA       BLS12381T.gJ       BLS12381T.gP-  , testWeierstrass' 100        "BLS48581"        BLS48581._h        BLS48581._q        BLS48581._r        BLS48581.gA        BLS48581.gJ        BLS48581.gP-  , testWeierstrass'   0       "BLS48581T"       BLS48581T._h       BLS48581T._q       BLS48581T._r       BLS48581T.gA       BLS48581T.gJ       BLS48581T.gP-  , testWeierstrass' 100           "BN224"           BN224._h           BN224._q           BN224._r           BN224.gA           BN224.gJ           BN224.gP-  , testWeierstrass' 100           "BN254"           BN254._h           BN254._q           BN254._r           BN254.gA           BN254.gJ           BN254.gP-  , testWeierstrass'  10          "BN254T"          BN254T._h          BN254T._q          BN254T._r          BN254T.gA          BN254T.gJ          BN254T.gP-  , testWeierstrass' 100          "BN254A"          BN254A._h          BN254A._q          BN254A._r          BN254A.gA          BN254A.gJ          BN254A.gP-  , testWeierstrass'  10         "BN254AT"         BN254AT._h         BN254AT._q         BN254AT._r         BN254AT.gA         BN254AT.gJ         BN254AT.gP-  , testWeierstrass' 100          "BN254B"          BN254B._h          BN254B._q          BN254B._r          BN254B.gA          BN254B.gJ          BN254B.gP-  , testWeierstrass'  10         "BN254BT"         BN254BT._h         BN254BT._q         BN254BT._r         BN254BT.gA         BN254BT.gJ         BN254BT.gP-  , testWeierstrass' 100           "BN256"           BN256._h           BN256._q           BN256._r           BN256.gA           BN256.gJ           BN256.gP-  , testWeierstrass' 100           "BN384"           BN384._h           BN384._q           BN384._r           BN384.gA           BN384.gJ           BN384.gP-  , testWeierstrass' 100           "BN462"           BN462._h           BN462._q           BN462._r           BN462.gA           BN462.gJ           BN462.gP-  , testWeierstrass'  10          "BN462T"          BN462T._h          BN462T._q          BN462T._r          BN462T.gA          BN462T.gJ          BN462T.gP-  , testWeierstrass' 100           "BN512"           BN512._h           BN512._q           BN512._r           BN512.gA           BN512.gJ           BN512.gP-  , testWeierstrass' 100 "BrainpoolP160R1" BrainpoolP160R1._h BrainpoolP160R1._q BrainpoolP160R1._r BrainpoolP160R1.gA BrainpoolP160R1.gJ BrainpoolP160R1.gP-  , testWeierstrass' 100 "BrainpoolP160T1" BrainpoolP160T1._h BrainpoolP160T1._q BrainpoolP160T1._r BrainpoolP160T1.gA BrainpoolP160T1.gJ BrainpoolP160T1.gP-  , testWeierstrass' 100 "BrainpoolP192R1" BrainpoolP192R1._h BrainpoolP192R1._q BrainpoolP192R1._r BrainpoolP192R1.gA BrainpoolP192R1.gJ BrainpoolP192R1.gP-  , testWeierstrass' 100 "BrainpoolP192T1" BrainpoolP192T1._h BrainpoolP192T1._q BrainpoolP192T1._r BrainpoolP192T1.gA BrainpoolP192T1.gJ BrainpoolP192T1.gP-  , testWeierstrass' 100 "BrainpoolP224R1" BrainpoolP224R1._h BrainpoolP224R1._q BrainpoolP224R1._r BrainpoolP224R1.gA BrainpoolP224R1.gJ BrainpoolP224R1.gP-  , testWeierstrass' 100 "BrainpoolP224T1" BrainpoolP224T1._h BrainpoolP224T1._q BrainpoolP224T1._r BrainpoolP224T1.gA BrainpoolP224T1.gJ BrainpoolP224T1.gP-  , testWeierstrass' 100 "BrainpoolP256R1" BrainpoolP256R1._h BrainpoolP256R1._q BrainpoolP256R1._r BrainpoolP256R1.gA BrainpoolP256R1.gJ BrainpoolP256R1.gP-  , testWeierstrass' 100 "BrainpoolP256T1" BrainpoolP256T1._h BrainpoolP256T1._q BrainpoolP256T1._r BrainpoolP256T1.gA BrainpoolP256T1.gJ BrainpoolP256T1.gP-  , testWeierstrass' 100 "BrainpoolP320R1" BrainpoolP320R1._h BrainpoolP320R1._q BrainpoolP320R1._r BrainpoolP320R1.gA BrainpoolP320R1.gJ BrainpoolP320R1.gP-  , testWeierstrass' 100 "BrainpoolP320T1" BrainpoolP320T1._h BrainpoolP320T1._q BrainpoolP320T1._r BrainpoolP320T1.gA BrainpoolP320T1.gJ BrainpoolP320T1.gP-  , testWeierstrass' 100 "BrainpoolP384R1" BrainpoolP384R1._h BrainpoolP384R1._q BrainpoolP384R1._r BrainpoolP384R1.gA BrainpoolP384R1.gJ BrainpoolP384R1.gP-  , testWeierstrass' 100 "BrainpoolP384T1" BrainpoolP384T1._h BrainpoolP384T1._q BrainpoolP384T1._r BrainpoolP384T1.gA BrainpoolP384T1.gJ BrainpoolP384T1.gP-  , testWeierstrass' 100 "BrainpoolP512R1" BrainpoolP512R1._h BrainpoolP512R1._q BrainpoolP512R1._r BrainpoolP512R1.gA BrainpoolP512R1.gJ BrainpoolP512R1.gP-  , testWeierstrass' 100 "BrainpoolP512T1" BrainpoolP512T1._h BrainpoolP512T1._q BrainpoolP512T1._r BrainpoolP512T1.gA BrainpoolP512T1.gJ BrainpoolP512T1.gP-  , testWeierstrass' 100       "SECP112R1"       SECP112R1._h       SECP112R1._q       SECP112R1._r       SECP112R1.gA       SECP112R1.gJ       SECP112R1.gP-  , testWeierstrass' 100       "SECP112R2"       SECP112R2._h       SECP112R2._q       SECP112R2._r       SECP112R2.gA       SECP112R2.gJ       SECP112R2.gP-  , testWeierstrass' 100       "SECP128R1"       SECP128R1._h       SECP128R1._q       SECP128R1._r       SECP128R1.gA       SECP128R1.gJ       SECP128R1.gP-  , testWeierstrass' 100       "SECP128R2"       SECP128R2._h       SECP128R2._q       SECP128R2._r       SECP128R2.gA       SECP128R2.gJ       SECP128R2.gP-  , testWeierstrass' 100       "SECP160K1"       SECP160K1._h       SECP160K1._q       SECP160K1._r       SECP160K1.gA       SECP160K1.gJ       SECP160K1.gP-  , testWeierstrass' 100       "SECP160R1"       SECP160R1._h       SECP160R1._q       SECP160R1._r       SECP160R1.gA       SECP160R1.gJ       SECP160R1.gP-  , testWeierstrass' 100       "SECP160R2"       SECP160R2._h       SECP160R2._q       SECP160R2._r       SECP160R2.gA       SECP160R2.gJ       SECP160R2.gP-  , testWeierstrass' 100       "SECP192K1"       SECP192K1._h       SECP192K1._q       SECP192K1._r       SECP192K1.gA       SECP192K1.gJ       SECP192K1.gP-  , testWeierstrass' 100       "SECP192R1"       SECP192R1._h       SECP192R1._q       SECP192R1._r       SECP192R1.gA       SECP192R1.gJ       SECP192R1.gP-  , testWeierstrass' 100       "SECP224K1"       SECP224K1._h       SECP224K1._q       SECP224K1._r       SECP224K1.gA       SECP224K1.gJ       SECP224K1.gP-  , testWeierstrass' 100       "SECP224R1"       SECP224R1._h       SECP224R1._q       SECP224R1._r       SECP224R1.gA       SECP224R1.gJ       SECP224R1.gP-  , testWeierstrass' 100       "SECP256K1"       SECP256K1._h       SECP256K1._q       SECP256K1._r       SECP256K1.gA       SECP256K1.gJ       SECP256K1.gP-  , testWeierstrass' 100       "SECP256R1"       SECP256R1._h       SECP256R1._q       SECP256R1._r       SECP256R1.gA       SECP256R1.gJ       SECP256R1.gP-  , testWeierstrass' 100       "SECP384R1"       SECP384R1._h       SECP384R1._q       SECP384R1._r       SECP384R1.gA       SECP384R1.gJ       SECP384R1.gP-  , testWeierstrass' 100       "SECP521R1"       SECP521R1._h       SECP521R1._q       SECP521R1._r       SECP521R1.gA       SECP521R1.gJ       SECP521R1.gP-  ]-  where-    testWeierstrass' n c h q r a j p = localOption (QuickCheckTests n) $ testGroup c-      [ test "Affine" a h q r-      , test "Jacobian" j h q r-      , test "Projective" p h q r-      ]