curve25519-0.2.3: Fast implementations of the curve25519 elliptic curve primitives.

Safe HaskellNone
LanguageHaskell2010

Crypto.Curve25519.Pure

Description

An implementation of the core methods of the elliptic curve Curve25519 suite. These functions are largely wrappers over the curve25519-donna library from Google. While this version is theoretically pure, in that it doesn't generate any exceptions, you should be warned that it uses unsafePerformIO under the hood.

Synopsis

Documentation

data PrivateKey Source #

The type of a Curve25519 private key.

data PublicKey Source #

The type of a Curve25519 public key.

importPublic :: ByteString -> Maybe PublicKey Source #

Import a public key from a ByteString. The ByteString must be exactly 32 bytes long for this to work.

exportPublic :: PublicKey -> ByteString Source #

Export a public key to a ByteString.

importPrivate :: ByteString -> Maybe PrivateKey Source #

Imports a ByteString to use as private key. The ByteString must be exactly 32 bytes long for this to work.

Though minor changes may be made to create a valid key this property is guaranteed: prop> (x -> importPrivate x >>= (importPrivate . exportPrivate)) = importPrivate

exportPrivate :: PrivateKey -> ByteString Source #

Export a private key to a ByteString

generatePrivate :: CryptoRandomGen g => g -> Either GenError (PrivateKey, g) Source #

Randomly generate a Curve25519 private key.

generatePublic :: PrivateKey -> PublicKey Source #

Randomly generate a Curve25519 public key.

generateKeyPair :: CryptoRandomGen g => g -> Either GenError (PrivateKey, PublicKey, g) Source #

Randomly generate a key pair.

makeShared :: PrivateKey -> PublicKey -> ByteString Source #

Generate a shared secret from a private key and a public key.