cryptonite-0.25: Cryptography Primitives sink

License | BSD-style
Maintainer | John Galt <jgalt@centromere.net>
Stability | experimental
Portability | unknown
Safe Haskell | None
Language | Haskell2010

Crypto.PubKey.Curve448

Contents

- Smart constructors
- Methods

Description

Curve448 support

Internally uses Decaf point compression to omit the cofactor and implementation by Mike Hamburg. Externally API and data types are compatible with the encoding specified in RFC 7748.

Synopsis

- data SecretKey
- data PublicKey
- data DhSecret
- dhSecret :: ByteArrayAccess b => b -> CryptoFailable DhSecret
- publicKey :: ByteArrayAccess bs => bs -> CryptoFailable PublicKey
- secretKey :: ByteArrayAccess bs => bs -> CryptoFailable SecretKey
- dh :: PublicKey -> SecretKey -> DhSecret
- toPublic :: SecretKey -> PublicKey
- generateSecretKey :: MonadRandom m => m SecretKey

# Documentation

data SecretKey #

A Curve448 Secret key

Instances

Eq SecretKey # |
Instance details Defined in Crypto.PubKey.Curve448 Methods (==) :: SecretKey -> SecretKey -> Bool # (/=) :: SecretKey -> SecretKey -> Bool #
Show SecretKey # |
Instance details Defined in Crypto.PubKey.Curve448 Methods showsPrec :: Int -> SecretKey -> ShowS # show :: SecretKey -> String # showList :: [SecretKey] -> ShowS #
NFData SecretKey # |
Instance details Defined in Crypto.PubKey.Curve448 Methods rnf :: SecretKey -> () #
ByteArrayAccess SecretKey # |
Instance details Defined in Crypto.PubKey.Curve448 Methods length :: SecretKey -> Int # withByteArray :: SecretKey -> (Ptr p -> IO a) -> IO a # copyByteArrayToPtr :: SecretKey -> Ptr p -> IO () #

data PublicKey #

A Curve448 public key

Instances

Eq PublicKey # |
Instance details Defined in Crypto.PubKey.Curve448 Methods (==) :: PublicKey -> PublicKey -> Bool # (/=) :: PublicKey -> PublicKey -> Bool #
Show PublicKey # |
Instance details Defined in Crypto.PubKey.Curve448 Methods showsPrec :: Int -> PublicKey -> ShowS # show :: PublicKey -> String # showList :: [PublicKey] -> ShowS #
NFData PublicKey # |
Instance details Defined in Crypto.PubKey.Curve448 Methods rnf :: PublicKey -> () #
ByteArrayAccess PublicKey # |
Instance details Defined in Crypto.PubKey.Curve448 Methods length :: PublicKey -> Int # withByteArray :: PublicKey -> (Ptr p -> IO a) -> IO a # copyByteArrayToPtr :: PublicKey -> Ptr p -> IO () #

data DhSecret #

A Curve448 Diffie Hellman secret related to a public key and a secret key.

Instances

Eq DhSecret # |
Instance details Defined in Crypto.PubKey.Curve448 Methods (==) :: DhSecret -> DhSecret -> Bool # (/=) :: DhSecret -> DhSecret -> Bool #
Show DhSecret # |
Instance details Defined in Crypto.PubKey.Curve448 Methods showsPrec :: Int -> DhSecret -> ShowS # show :: DhSecret -> String # showList :: [DhSecret] -> ShowS #
NFData DhSecret # |
Instance details Defined in Crypto.PubKey.Curve448 Methods rnf :: DhSecret -> () #
ByteArrayAccess DhSecret # |
Instance details Defined in Crypto.PubKey.Curve448 Methods length :: DhSecret -> Int # withByteArray :: DhSecret -> (Ptr p -> IO a) -> IO a # copyByteArrayToPtr :: DhSecret -> Ptr p -> IO () #

# Smart constructors

dhSecret :: ByteArrayAccess b => b -> CryptoFailable DhSecret #

Create a DhSecret from a bytearray object

publicKey :: ByteArrayAccess bs => bs -> CryptoFailable PublicKey #

Try to build a public key from a bytearray

secretKey :: ByteArrayAccess bs => bs -> CryptoFailable SecretKey #

Try to build a secret key from a bytearray

# Methods

dh :: PublicKey -> SecretKey -> DhSecret #

Compute the Diffie Hellman secret from a public key and a secret key.

This implementation may return an all-zero value as it does not check for the condition.

toPublic :: SecretKey -> PublicKey #

Create a public key from a secret key

generateSecretKey :: MonadRandom m => m SecretKey #

Generate a secret key.