crypto-pubkey-0.2.8: Public Key cryptography
LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
Stabilityexperimental
PortabilityGood
Safe HaskellNone
LanguageHaskell98

Crypto.PubKey.DH

Description

 
Synopsis

Documentation

data Params Source #

Represent Diffie Hellman parameters namely P (prime), and G (generator).

Constructors

Params 

Fields

Instances

Instances details
Eq Params 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

(==) :: Params -> Params -> Bool

(/=) :: Params -> Params -> Bool

Data Params 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

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

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

toConstr :: Params -> Constr

dataTypeOf :: Params -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Params)

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

gmapT :: (forall b. Data b => b -> b) -> Params -> Params

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

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

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

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

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

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

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

Read Params 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

readsPrec :: Int -> ReadS Params

readList :: ReadS [Params]

readPrec :: ReadPrec Params

readListPrec :: ReadPrec [Params]

Show Params 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

showsPrec :: Int -> Params -> ShowS

show :: Params -> String

showList :: [Params] -> ShowS

ASN1Object Params 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

toASN1 :: Params -> ASN1S

fromASN1 :: [ASN1] -> Either String (Params, [ASN1])

data PublicNumber Source #

Represent Diffie Hellman public number Y.

Instances

Instances details
Enum PublicNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Eq PublicNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

(==) :: PublicNumber -> PublicNumber -> Bool

(/=) :: PublicNumber -> PublicNumber -> Bool

Num PublicNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Ord PublicNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Read PublicNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

readsPrec :: Int -> ReadS PublicNumber

readList :: ReadS [PublicNumber]

readPrec :: ReadPrec PublicNumber

readListPrec :: ReadPrec [PublicNumber]

Real PublicNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

toRational :: PublicNumber -> Rational

Show PublicNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

showsPrec :: Int -> PublicNumber -> ShowS

show :: PublicNumber -> String

showList :: [PublicNumber] -> ShowS

data PrivateNumber Source #

Represent Diffie Hellman private number X.

Instances

Instances details
Enum PrivateNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Eq PrivateNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Num PrivateNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Ord PrivateNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Read PrivateNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

readsPrec :: Int -> ReadS PrivateNumber

readList :: ReadS [PrivateNumber]

readPrec :: ReadPrec PrivateNumber

readListPrec :: ReadPrec [PrivateNumber]

Real PrivateNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

toRational :: PrivateNumber -> Rational

Show PrivateNumber 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

showsPrec :: Int -> PrivateNumber -> ShowS

show :: PrivateNumber -> String

showList :: [PrivateNumber] -> ShowS

data SharedKey Source #

Represent Diffie Hellman shared secret.

Instances

Instances details
Enum SharedKey 
Instance details

Defined in Crypto.Types.PubKey.DH

Eq SharedKey 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

(==) :: SharedKey -> SharedKey -> Bool

(/=) :: SharedKey -> SharedKey -> Bool

Num SharedKey 
Instance details

Defined in Crypto.Types.PubKey.DH

Ord SharedKey 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

compare :: SharedKey -> SharedKey -> Ordering

(<) :: SharedKey -> SharedKey -> Bool

(<=) :: SharedKey -> SharedKey -> Bool

(>) :: SharedKey -> SharedKey -> Bool

(>=) :: SharedKey -> SharedKey -> Bool

max :: SharedKey -> SharedKey -> SharedKey

min :: SharedKey -> SharedKey -> SharedKey

Read SharedKey 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

readsPrec :: Int -> ReadS SharedKey

readList :: ReadS [SharedKey]

readPrec :: ReadPrec SharedKey

readListPrec :: ReadPrec [SharedKey]

Real SharedKey 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

toRational :: SharedKey -> Rational

Show SharedKey 
Instance details

Defined in Crypto.Types.PubKey.DH

Methods

showsPrec :: Int -> SharedKey -> ShowS

show :: SharedKey -> String

showList :: [SharedKey] -> ShowS

generateParams :: CPRG g => g -> Int -> Integer -> (Params, g) Source #

generate params from a specific generator (2 or 5 are common values) we generate a safe prime (a prime number of the form 2p+1 where p is also prime)

generatePrivate :: CPRG g => g -> Params -> (PrivateNumber, g) Source #

generate a private number with no specific property this number is usually called X in DH text.

calculatePublic :: Params -> PrivateNumber -> PublicNumber Source #

calculate the public number from the parameters and the private key this number is usually called Y in DH text.

generatePublic :: Params -> PrivateNumber -> PublicNumber Source #

calculate the public number from the parameters and the private key this number is usually called Y in DH text.

DEPRECATED use calculatePublic

getShared :: Params -> PrivateNumber -> PublicNumber -> SharedKey Source #

generate a shared key using our private number and the other party public number