crypto-pubkey-types-0.4.3: Generic cryptography Public keys algorithm types

LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
StabilityExperimental
PortabilityExcellent
Safe HaskellSafe
LanguageHaskell98

Crypto.Types.PubKey.ECC

Contents

Description

Synopsis

Documentation

data Curve #

Define either a binary curve or a prime curve.

Constructors

CurveF2m CurveBinary

𝔽(2^m)

CurveFP CurvePrime

𝔽p

Instances
Eq Curve # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Methods

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

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

Data Curve # 
Instance details

Defined in Crypto.Types.PubKey.ECC

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 # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Show Curve # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Methods

showsPrec :: Int -> Curve -> ShowS #

show :: Curve -> String #

showList :: [Curve] -> ShowS #

data Point #

Define a point on a curve.

Constructors

Point Integer Integer 
PointO

Point at Infinity

Instances
Eq Point # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Methods

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

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

Data Point # 
Instance details

Defined in Crypto.Types.PubKey.ECC

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 # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Show Point # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Methods

showsPrec :: Int -> Point -> ShowS #

show :: Point -> String #

showList :: [Point] -> ShowS #

type PublicPoint = Point #

ECC Public Point

type PrivateNumber = Integer #

ECC Private Number

data CurveBinary #

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

Instances
Eq CurveBinary # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Data CurveBinary # 
Instance details

Defined in Crypto.Types.PubKey.ECC

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 # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Show CurveBinary # 
Instance details

Defined in Crypto.Types.PubKey.ECC

data CurvePrime #

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

Instances
Eq CurvePrime # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Data CurvePrime # 
Instance details

Defined in Crypto.Types.PubKey.ECC

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 # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Show CurvePrime # 
Instance details

Defined in Crypto.Types.PubKey.ECC

common_curve :: Curve -> CurveCommon #

Parameters in common between binary and prime curves.

ecc_fx :: CurveBinary -> Integer #

Irreducible polynomial representing the characteristic of a CurveBinary.

ecc_p :: CurvePrime -> Integer #

Prime number representing the characteristic of a CurvePrime.

data CurveCommon #

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

Constructors

CurveCommon 

Fields

Instances
Eq CurveCommon # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Data CurveCommon # 
Instance details

Defined in Crypto.Types.PubKey.ECC

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 # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Show CurveCommon # 
Instance details

Defined in Crypto.Types.PubKey.ECC

recommended curves definition

data CurveName #

Define names for known recommended curves.

Instances
Enum CurveName # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Eq CurveName # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Data CurveName # 
Instance details

Defined in Crypto.Types.PubKey.ECC

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 # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Read CurveName # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Show CurveName # 
Instance details

Defined in Crypto.Types.PubKey.ECC

OIDable CurveName # 
Instance details

Defined in Crypto.Types.PubKey.ECC

Methods

getObjectID :: CurveName -> OID #

OIDNameable CurveName # 
Instance details

Defined in Crypto.Types.PubKey.ECC

getCurveByName :: CurveName -> Curve #

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