cryptonite-0.1: Cryptography Primitives sink

LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
Stabilityexperimental
PortabilityGood
Safe HaskellNone
LanguageHaskell2010

Crypto.PubKey.DSA

Contents

Description

An implementation of the Digital Signature Algorithm (DSA)

Synopsis

Documentation

data Params Source

Represent DSA parameters namely P, G, and Q.

Constructors

Params 

Fields

params_p :: Integer

DSA p

params_g :: Integer

DSA g

params_q :: Integer

DSA q

data Signature Source

Represent a DSA signature namely R and S.

Constructors

Signature 

Fields

sign_r :: Integer

DSA r

sign_s :: Integer

DSA s

data PublicKey Source

Represent a DSA public key.

Constructors

PublicKey 

Fields

public_params :: Params

DSA parameters

public_y :: PublicNumber

DSA public Y

data PrivateKey Source

Represent a DSA private key.

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

Constructors

PrivateKey 

Fields

private_params :: Params

DSA parameters

private_x :: PrivateNumber

DSA private X

type PublicNumber = Integer Source

DSA Public Number, usually embedded in DSA Public Key

type PrivateNumber = Integer Source

DSA Private Number, usually embedded in DSA Private Key

generation

generatePrivate :: MonadRandom m => Params -> m PrivateNumber Source

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

calculatePublic :: Params -> PrivateNumber -> PublicNumber Source

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 Source

sign message using the private key.

signWith Source

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 Source

verify a bytestring using the public key.

Key pair

toPublicKey :: KeyPair -> PublicKey Source

Public key of a DSA Key pair

toPrivateKey :: KeyPair -> PrivateKey Source

Private key of a DSA Key pair