cryptonite-0.23: Cryptography Primitives sink

Crypto.PubKey.DSA

Description

An implementation of the Digital Signature Algorithm (DSA)

Synopsis

# Documentation

data Params #

Represent DSA parameters namely P, G, and Q.

Constructors

 Params Fieldsparams_p :: IntegerDSA pparams_g :: IntegerDSA gparams_q :: IntegerDSA q

Instances

 # Methods(==) :: Params -> Params -> Bool #(/=) :: Params -> Params -> Bool # # Methodsgfoldl :: (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 #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 :: (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 # # Methods # MethodsshowsPrec :: Int -> Params -> ShowS #showList :: [Params] -> ShowS # # Methodsrnf :: Params -> () #

data Signature #

Represent a DSA signature namely R and S.

Constructors

 Signature Fieldssign_r :: IntegerDSA rsign_s :: IntegerDSA s

Instances

 # Methods # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Signature -> c Signature #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Signature #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Signature) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Signature) #gmapT :: (forall b. Data b => b -> b) -> Signature -> Signature #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Signature -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Signature -> r #gmapQ :: (forall d. Data d => d -> u) -> Signature -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Signature -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Signature -> m Signature #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Signature -> m Signature #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Signature -> m Signature # # Methods # MethodsshowList :: [Signature] -> ShowS # # Methodsrnf :: Signature -> () #

data PublicKey #

Represent a DSA public key.

Constructors

 PublicKey Fieldspublic_params :: ParamsDSA parameterspublic_y :: PublicNumberDSA public Y

Instances

 # Methods # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PublicKey -> c PublicKey #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PublicKey #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c PublicKey) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PublicKey) #gmapT :: (forall b. Data b => b -> b) -> PublicKey -> PublicKey #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PublicKey -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PublicKey -> r #gmapQ :: (forall d. Data d => d -> u) -> PublicKey -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> PublicKey -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> PublicKey -> m PublicKey #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PublicKey -> m PublicKey #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PublicKey -> m PublicKey # # Methods # MethodsshowList :: [PublicKey] -> ShowS # # Methodsrnf :: PublicKey -> () #

data PrivateKey #

Represent a DSA private key.

Only x need to be secret. the DSA parameters are publicly shared with the other side.

Constructors

 PrivateKey Fieldsprivate_params :: ParamsDSA parametersprivate_x :: PrivateNumberDSA private X

Instances

 # Methods # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PrivateKey -> c PrivateKey #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PrivateKey #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c PrivateKey) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PrivateKey) #gmapT :: (forall b. Data b => b -> b) -> PrivateKey -> PrivateKey #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PrivateKey -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PrivateKey -> r #gmapQ :: (forall d. Data d => d -> u) -> PrivateKey -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> PrivateKey -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> PrivateKey -> m PrivateKey #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PrivateKey -> m PrivateKey #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PrivateKey -> m PrivateKey # # Methods # MethodsshowList :: [PrivateKey] -> ShowS # # Methodsrnf :: PrivateKey -> () #

type PublicNumber = Integer #

DSA Public Number, usually embedded in DSA Public Key

DSA Private Number, usually embedded in DSA Private Key

# generation

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

Calculate the public number from the parameters and the private key

# signature primitive

sign :: (ByteArrayAccess msg, HashAlgorithm hash, MonadRandom m) => PrivateKey -> hash -> msg -> m Signature #

sign message using the private key.

Arguments

 :: (ByteArrayAccess msg, HashAlgorithm hash) => Integer k random number -> PrivateKey private key -> hash hash function -> msg message to sign -> Maybe Signature

sign message using the private key and an explicit k number.

# verification primitive

verify :: (ByteArrayAccess msg, HashAlgorithm hash) => hash -> PublicKey -> Signature -> msg -> Bool #

verify a bytestring using the public key.

# Key pair

data KeyPair #

Represent a DSA key pair

Constructors

 KeyPair Params PublicNumber PrivateNumber

Instances

 # Methods(==) :: KeyPair -> KeyPair -> Bool #(/=) :: KeyPair -> KeyPair -> Bool # # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> KeyPair -> c KeyPair #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c KeyPair #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c KeyPair) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c KeyPair) #gmapT :: (forall b. Data b => b -> b) -> KeyPair -> KeyPair #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> KeyPair -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> KeyPair -> r #gmapQ :: (forall d. Data d => d -> u) -> KeyPair -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> KeyPair -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> KeyPair -> m KeyPair #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> KeyPair -> m KeyPair #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> KeyPair -> m KeyPair # # Methods # MethodsshowList :: [KeyPair] -> ShowS # # Methodsrnf :: KeyPair -> () #

Public key of a DSA Key pair

Private key of a DSA Key pair