| License | BSD-style |
|---|---|
| Maintainer | Vincent Hanquez <[email protected]> |
| Stability | experimental |
| Portability | Good |
| Safe Haskell | None |
| Language | Haskell2010 |
Crypto.PubKey.DH
Description
- data Params = Params {}
- newtype PublicNumber = PublicNumber Integer
- newtype PrivateNumber = PrivateNumber Integer
- newtype SharedKey = SharedKey ScrubbedBytes
- generateParams :: MonadRandom m => Int -> Integer -> m Params
- generatePrivate :: MonadRandom m => Params -> m PrivateNumber
- calculatePublic :: Params -> PrivateNumber -> PublicNumber
- generatePublic :: Params -> PrivateNumber -> PublicNumber
- getShared :: Params -> PrivateNumber -> PublicNumber -> SharedKey
Documentation
Represent Diffie Hellman parameters namely P (prime), and G (generator).
newtype PublicNumber Source #
Represent Diffie Hellman public number Y.
Constructors
| PublicNumber Integer |
newtype PrivateNumber Source #
Represent Diffie Hellman private number X.
Constructors
| PrivateNumber Integer |
Arguments
| :: MonadRandom m | |
| => Int | number of bits |
| -> Integer | generator |
| -> m Params |
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 :: MonadRandom m => Params -> m PrivateNumber 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