cryptonite-0.21: Cryptography Primitives sink

LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Crypto.ECC

Description

Elliptic Curve Cryptography

Synopsis

Documentation

class EllipticCurve curve where #

Associated Types

type Point curve :: * #

Point on an Elliptic Curve

type Scalar curve :: * #

Scalar in the Elliptic Curve domain

Methods

curveGenerateScalar :: MonadRandom randomly => proxy curve -> randomly (Scalar curve) #

Generate a new random scalar on the curve. The scalar will represent a number between 1 and the order of the curve non included

curveGenerateKeyPair :: MonadRandom randomly => proxy curve -> randomly (KeyPair curve) #

Generate a new random keypair

curveSizeBits :: proxy curve -> Int #

Get the curve size in bits

encodePoint :: ByteArray bs => proxy curve -> Point curve -> bs #

Encode a elliptic curve point into binary form

decodePoint :: ByteArray bs => proxy curve -> bs -> CryptoFailable (Point curve) #

Try to decode the binary form of an elliptic curve point

Instances

EllipticCurve Curve_X448 # 

Associated Types

type Point Curve_X448 :: * #

type Scalar Curve_X448 :: * #

EllipticCurve Curve_X25519 # 
EllipticCurve Curve_P521R1 # 
EllipticCurve Curve_P384R1 # 
EllipticCurve Curve_P256R1 # 

class EllipticCurve curve => EllipticCurveDH curve where #

Minimal complete definition

ecdh

Methods

ecdh :: proxy curve -> Scalar curve -> Point curve -> SharedSecret #

Generate a Diffie hellman secret value.

This is generally just the .x coordinate of the resulting point, that is not hashed.

use pointSmul to keep the result in Point format.

data KeyPair curve #

An elliptic curve key pair composed of the private part (a scalar), and the associated point.

Constructors

KeyPair 

Fields