Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Coordinates
- = Affine
- | Jacobian
- | Projective
- data Form
- class (GaloisField q, GaloisField r, Group (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where
- data Point f c e q r :: *
- char :: Point f c e q r -> Integer
- cof :: Point f c e q r -> Integer
- disc :: Point f c e q r -> q
- mul :: r ~ PrimeField p => Point f c e q r -> r -> Point f c e q r
- point :: q -> q -> Maybe (Point f c e q r)
- pointX :: q -> Maybe (Point f c e q r)
- yX :: Point f c e q r -> q -> Maybe q
- fromA :: Point f Affine e q r -> Point f c e q r
- toA :: Point f c e q r -> Point f Affine e q r
- class BCurve Projective e q r => BPCurve e q r where
- type BPPoint = BPoint Projective
- class BCurve Affine e q r => BACurve e q r where
- type BAPoint = BPoint Affine
- class (GaloisField q, GaloisField r, Curve Binary c e q r) => BCurve c e q r where
- type BPoint = Point Binary
- class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g where
Documentation
class (GaloisField q, GaloisField r, Group (Point f c e q r)) => Curve (f :: Form) (c :: Coordinates) e q r where Source #
Elliptic curves.
char :: Point f c e q r -> Integer Source #
Curve characteristic.
cof :: Point f c e q r -> Integer Source #
Curve cofactor.
disc :: Point f c e q r -> q Source #
Curve discriminant.
mul :: r ~ PrimeField p => Point f c e q r -> r -> Point f c e q r Source #
Curve point multiplication.
point :: q -> q -> Maybe (Point f c e q r) Source #
Get point from X and Y coordinates.
pointX :: q -> Maybe (Point f c e q r) Source #
Get point from X coordinate.
yX :: Point f c e q r -> q -> Maybe q Source #
Get Y coordinate from X coordinate.
fromA :: Point f Affine e q r -> Point f c e q r Source #
Transform from affine coordinates.
toA :: Point f c e q r -> Point f Affine e q r Source #
Transform to affine coordinates.
Instances
class BCurve Projective e q r => BPCurve e q r where Source #
Binary projective curves y^2z + xyz = x^3 + Ax^2z + Bz
.
Instances
BPCurve SECT571R1 F2m Fr Source # | Projective SECT571R1 curve is a binary projective curve. |
BPCurve SECT571K1 F2m Fr Source # | Projective SECT571K1 curve is a binary projective curve. |
BPCurve SECT409R1 F2m Fr Source # | Projective SECT409R1 curve is a binary projective curve. |
BPCurve SECT409K1 F2m Fr Source # | Projective SECT409K1 curve is a binary projective curve. |
BPCurve SECT283R1 F2m Fr Source # | Projective SECT283R1 curve is a binary projective curve. |
BPCurve SECT283K1 F2m Fr Source # | Projective SECT283K1 curve is a binary projective curve. |
BPCurve SECT239K1 F2m Fr Source # | Projective SECT239K1 curve is a binary projective curve. |
BPCurve SECT233R1 F2m Fr Source # | Projective SECT233R1 curve is a binary projective curve. |
BPCurve SECT233K1 F2m Fr Source # | Projective SECT233K1 curve is a binary projective curve. |
BPCurve SECT193R2 F2m Fr Source # | Projective SECT193R2 curve is a binary projective curve. |
BPCurve SECT193R1 F2m Fr Source # | Projective SECT193R1 curve is a binary projective curve. |
BPCurve SECT163R2 F2m Fr Source # | Projective SECT163R2 curve is a binary projective curve. |
BPCurve SECT163R1 F2m Fr Source # | Projective SECT163R1 curve is a binary projective curve. |
BPCurve SECT163K1 F2m Fr Source # | Projective SECT163K1 curve is a binary projective curve. |
BPCurve SECT131R2 F2m Fr Source # | Projective SECT131R2 curve is a binary projective curve. |
BPCurve SECT131R1 F2m Fr Source # | Projective SECT131R1 curve is a binary projective curve. |
BPCurve SECT113R2 F2m Fr Source # | Projective SECT113R2 curve is a binary projective curve. |
BPCurve SECT113R1 F2m Fr Source # | Projective SECT113R1 curve is a binary projective curve. |
type BPPoint = BPoint Projective Source #
Binary projective points.
class BCurve Affine e q r => BACurve e q r where Source #
Binary affine curves y^2 + xy = x^3 + Ax^2 + B
.
Instances
BACurve SECT571R1 F2m Fr Source # | Affine SECT571R1 curve is a binary affine curve. |
BACurve SECT571K1 F2m Fr Source # | Affine SECT571K1 curve is a binary affine curve. |
BACurve SECT409R1 F2m Fr Source # | Affine SECT409R1 curve is a binary affine curve. |
BACurve SECT409K1 F2m Fr Source # | Affine SECT409K1 curve is a binary affine curve. |
BACurve SECT283R1 F2m Fr Source # | Affine SECT283R1 curve is a binary affine curve. |
BACurve SECT283K1 F2m Fr Source # | Affine SECT283K1 curve is a binary affine curve. |
BACurve SECT239K1 F2m Fr Source # | Affine SECT239K1 curve is a binary affine curve. |
BACurve SECT233R1 F2m Fr Source # | Affine SECT233R1 curve is a binary affine curve. |
BACurve SECT233K1 F2m Fr Source # | Affine SECT233K1 curve is a binary affine curve. |
BACurve SECT193R2 F2m Fr Source # | Affine SECT193R2 curve is a binary affine curve. |
BACurve SECT193R1 F2m Fr Source # | Affine SECT193R1 curve is a binary affine curve. |
BACurve SECT163R2 F2m Fr Source # | Affine SECT163R2 curve is a binary affine curve. |
BACurve SECT163R1 F2m Fr Source # | Affine SECT163R1 curve is a binary affine curve. |
BACurve SECT163K1 F2m Fr Source # | Affine SECT163K1 curve is a binary affine curve. |
BACurve SECT131R2 F2m Fr Source # | Affine SECT131R2 curve is a binary affine curve. |
BACurve SECT131R1 F2m Fr Source # | Affine SECT131R1 curve is a binary affine curve. |
BACurve SECT113R2 F2m Fr Source # | Affine SECT113R2 curve is a binary affine curve. |
BACurve SECT113R1 F2m Fr Source # | Affine SECT113R1 curve is a binary affine curve. |
class (GaloisField q, GaloisField r, Curve Binary c e q r) => BCurve c e q r where Source #
Binary curves.
:: BPoint c e q r | |
-> q | Coefficient |
:: BPoint c e q r | |
-> q | Coefficient |
:: BPoint c e q r | |
-> q | Coordinate |
:: BPoint c e q r | |
-> q | Coordinate |
Instances
class (Arbitrary g, Eq g, Generic g, Monoid g, Pretty g, Random g, Show g) => Group g where Source #
Groups.
Element addition.
Element doubling.
Check well-defined.
Group generator.
Identity element.
Element inversion.
mul' :: g -> Integer -> g Source #
Element multiplication.
order :: g -> Integer Source #
Curve order.
rnd :: MonadRandom m => m g Source #
Random element.