| License | BSD-style | 
|---|---|
| Maintainer | Vincent Hanquez <vincent@snarc.org> | 
| Stability | experimental | 
| Portability | Good | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
Crypto.PubKey.DSA
Description
An implementation of the Digital Signature Algorithm (DSA)
- data Params = Params {}
- data Signature = Signature {}
- data PublicKey = PublicKey {}
- data PrivateKey = PrivateKey {}
- type PublicNumber = Integer
- type PrivateNumber = Integer
- generatePrivate :: MonadRandom m => Params -> m PrivateNumber
- calculatePublic :: Params -> PrivateNumber -> PublicNumber
- sign :: (ByteArrayAccess msg, HashAlgorithm hash, MonadRandom m) => PrivateKey -> hash -> msg -> m Signature
- signWith :: (ByteArrayAccess msg, HashAlgorithm hash) => Integer -> PrivateKey -> hash -> msg -> Maybe Signature
- verify :: (ByteArrayAccess msg, HashAlgorithm hash) => hash -> PublicKey -> Signature -> msg -> Bool
- data KeyPair = KeyPair Params PublicNumber PrivateNumber
- toPublicKey :: KeyPair -> PublicKey
- toPrivateKey :: KeyPair -> PrivateKey
Documentation
Represent DSA parameters namely P, G, and Q.
Represent a DSA signature namely R and S.
Represent a DSA public key.
Constructors
| PublicKey | |
| Fields 
 | |
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 
 | |
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.
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
Represent a DSA key pair
Constructors
| KeyPair Params PublicNumber PrivateNumber | 
toPublicKey :: KeyPair -> PublicKey Source
Public key of a DSA Key pair
toPrivateKey :: KeyPair -> PrivateKey Source
Private key of a DSA Key pair