HsOpenSSL-0.11.1.1: Partial OpenSSL binding for Haskell

Safe HaskellNone
LanguageHaskell98

OpenSSL.DSA

Contents

Description

The Digital Signature Algorithm (FIPS 186-2). See http://www.openssl.org/docs/crypto/dsa.html

Synopsis

Type

class DSAKey k where Source

DSAKey a is either DSAPubKey or DSAKeyPair.

Minimal complete definition

withDSAPtr, peekDSAPtr, absorbDSAPtr

Methods

dsaSize :: k -> Int Source

Return the length of key.

dsaP :: k -> Integer Source

Return the public prime number of the key.

dsaQ :: k -> Integer Source

Return the public 160-bit subprime, q | p - 1 of the key.

dsaG :: k -> Integer Source

Return the public generator of subgroup of the key.

dsaPublic :: k -> Integer Source

Return the public key y = g^x.

withDSAPtr :: k -> (Ptr DSA -> IO a) -> IO a Source

peekDSAPtr :: Ptr DSA -> IO (Maybe k) Source

absorbDSAPtr :: Ptr DSA -> IO (Maybe k) Source

data DSAPubKey Source

The type of a DSA public key, includes parameters p, q, g and public.

data DSAKeyPair Source

The type of a DSA keypair, includes parameters p, q, g, public and private.

Key and parameter generation

generateDSAParameters Source

Arguments

:: Int

The number of bits in the generated prime: 512 <= x <= 1024

-> Maybe ByteString

optional seed, its length must be 20 bytes

-> IO (Int, Int, Integer, Integer, Integer)

(iteration count, generator count, p, q, g)

Generate DSA parameters (*not* a key, but required for a key). This is a compute intensive operation. See FIPS 186-2, app 2. This agrees with the test vectors given in FIP 186-2, app 5

generateDSAKey Source

Arguments

:: Integer

p

-> Integer

q

-> Integer

g

-> IO DSAKeyPair 

Generate a new DSA keypair, given valid parameters

generateDSAParametersAndKey Source

Arguments

:: Int

The number of bits in the generated prime: 512 <= x <= 1024

-> Maybe ByteString

optional seed, its length must be 20 bytes

-> IO DSAKeyPair 

A utility function to generate both the parameters and the key pair at the same time. Saves serialising and deserialising the parameters too

Signing and verification

signDigestedDataWithDSA :: DSAKeyPair -> ByteString -> IO (Integer, Integer) Source

Sign pre-digested data. The DSA specs call for SHA1 to be used so, if you use anything else, YMMV. Returns a pair of Integers which, together, are the signature

verifyDigestedDataWithDSA :: DSAKey k => k -> ByteString -> (Integer, Integer) -> IO Bool Source

Verify pre-digested data given a signature.

Extracting fields of DSA objects

dsaPrivate :: DSAKeyPair -> Integer Source

Return the private key x.

dsaPubKeyToTuple :: DSAKeyPair -> (Integer, Integer, Integer, Integer) Source

Convert a DSAPubKey object to a tuple of its members in the order p, q, g, and public.

dsaKeyPairToTuple :: DSAKeyPair -> (Integer, Integer, Integer, Integer, Integer) Source

Convert a DSAKeyPair object to a tuple of its members in the order p, q, g, public and private.

tupleToDSAPubKey :: (Integer, Integer, Integer, Integer) -> DSAPubKey Source

Convert a tuple of members (in the same format as from dsaPubKeyToTuple) into a DSAPubKey object

tupleToDSAKeyPair :: (Integer, Integer, Integer, Integer, Integer) -> DSAKeyPair Source

Convert a tuple of members (in the same format as from dsaPubKeyToTuple) into a DSAPubKey object