cryptonite-0.22: Cryptography Primitives sink

LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
StabilityExperimental
PortabilityExcellent
Safe HaskellNone
LanguageHaskell2010

Crypto.PubKey.ECC.Types

Contents

Description

Synopsis

Documentation

data Curve Source #

Define either a binary curve or a prime curve.

Constructors

CurveF2m CurveBinary

𝔽(2^m)

CurveFP CurvePrime

𝔽p

Instances

Eq Curve Source # 

Methods

(==) :: Curve -> Curve -> Bool #

(/=) :: Curve -> Curve -> Bool #

Data Curve Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Curve -> c Curve #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Curve #

toConstr :: Curve -> Constr #

dataTypeOf :: Curve -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Curve) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Curve) #

gmapT :: (forall b. Data b => b -> b) -> Curve -> Curve #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Curve -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Curve -> r #

gmapQ :: (forall d. Data d => d -> u) -> Curve -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Curve -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Curve -> m Curve #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Curve -> m Curve #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Curve -> m Curve #

Read Curve Source # 
Show Curve Source # 

Methods

showsPrec :: Int -> Curve -> ShowS #

show :: Curve -> String #

showList :: [Curve] -> ShowS #

data Point Source #

Define a point on a curve.

Constructors

Point Integer Integer 
PointO

Point at Infinity

Instances

Eq Point Source # 

Methods

(==) :: Point -> Point -> Bool #

(/=) :: Point -> Point -> Bool #

Data Point Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Point -> c Point #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Point #

toConstr :: Point -> Constr #

dataTypeOf :: Point -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Point) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Point) #

gmapT :: (forall b. Data b => b -> b) -> Point -> Point #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Point -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Point -> r #

gmapQ :: (forall d. Data d => d -> u) -> Point -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Point -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Point -> m Point #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Point -> m Point #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Point -> m Point #

Read Point Source # 
Show Point Source # 

Methods

showsPrec :: Int -> Point -> ShowS #

show :: Point -> String #

showList :: [Point] -> ShowS #

NFData Point Source # 

Methods

rnf :: Point -> () #

type PublicPoint = Point Source #

ECC Public Point

type PrivateNumber = Integer Source #

ECC Private Number

data CurveBinary Source #

Define an elliptic curve in 𝔽(2^m). The firt parameter is the Integer representatioin of the irreducible polynomial f(x).

Instances

Eq CurveBinary Source # 
Data CurveBinary Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CurveBinary -> c CurveBinary #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CurveBinary #

toConstr :: CurveBinary -> Constr #

dataTypeOf :: CurveBinary -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c CurveBinary) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CurveBinary) #

gmapT :: (forall b. Data b => b -> b) -> CurveBinary -> CurveBinary #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CurveBinary -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CurveBinary -> r #

gmapQ :: (forall d. Data d => d -> u) -> CurveBinary -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CurveBinary -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CurveBinary -> m CurveBinary #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CurveBinary -> m CurveBinary #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CurveBinary -> m CurveBinary #

Read CurveBinary Source # 
Show CurveBinary Source # 
NFData CurveBinary Source # 

Methods

rnf :: CurveBinary -> () #

data CurvePrime Source #

Define an elliptic curve in 𝔽p. The first parameter is the Prime Number.

Instances

Eq CurvePrime Source # 
Data CurvePrime Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CurvePrime -> c CurvePrime #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CurvePrime #

toConstr :: CurvePrime -> Constr #

dataTypeOf :: CurvePrime -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c CurvePrime) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CurvePrime) #

gmapT :: (forall b. Data b => b -> b) -> CurvePrime -> CurvePrime #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CurvePrime -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CurvePrime -> r #

gmapQ :: (forall d. Data d => d -> u) -> CurvePrime -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CurvePrime -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CurvePrime -> m CurvePrime #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CurvePrime -> m CurvePrime #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CurvePrime -> m CurvePrime #

Read CurvePrime Source # 
Show CurvePrime Source # 

common_curve :: Curve -> CurveCommon Source #

Parameters in common between binary and prime curves.

curveSizeBits :: Curve -> Int Source #

get the size of the curve in bits

ecc_fx :: CurveBinary -> Integer Source #

Irreducible polynomial representing the characteristic of a CurveBinary.

ecc_p :: CurvePrime -> Integer Source #

Prime number representing the characteristic of a CurvePrime.

data CurveCommon Source #

Define common parameters in a curve definition of the form: y^2 = x^3 + ax + b.

Constructors

CurveCommon 

Fields

Instances

Eq CurveCommon Source # 
Data CurveCommon Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CurveCommon -> c CurveCommon #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CurveCommon #

toConstr :: CurveCommon -> Constr #

dataTypeOf :: CurveCommon -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c CurveCommon) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CurveCommon) #

gmapT :: (forall b. Data b => b -> b) -> CurveCommon -> CurveCommon #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CurveCommon -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CurveCommon -> r #

gmapQ :: (forall d. Data d => d -> u) -> CurveCommon -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CurveCommon -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CurveCommon -> m CurveCommon #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CurveCommon -> m CurveCommon #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CurveCommon -> m CurveCommon #

Read CurveCommon Source # 
Show CurveCommon Source # 

recommended curves definition

data CurveName Source #

Define names for known recommended curves.

Instances

Bounded CurveName Source # 
Enum CurveName Source # 
Eq CurveName Source # 
Data CurveName Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CurveName -> c CurveName #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CurveName #

toConstr :: CurveName -> Constr #

dataTypeOf :: CurveName -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c CurveName) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CurveName) #

gmapT :: (forall b. Data b => b -> b) -> CurveName -> CurveName #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CurveName -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CurveName -> r #

gmapQ :: (forall d. Data d => d -> u) -> CurveName -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CurveName -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CurveName -> m CurveName #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CurveName -> m CurveName #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CurveName -> m CurveName #

Ord CurveName Source # 
Read CurveName Source # 
Show CurveName Source # 

getCurveByName :: CurveName -> Curve Source #

Get the curve definition associated with a recommended known curve name.