cryptonite-0.25: Cryptography Primitives sink

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

Crypto.PubKey.ECIES

Description

IES with Elliptic curve https://en.wikipedia.org/wiki/Integrated_Encryption_Scheme

This is a simple cryptographic system between 2 parties using Elliptic Curve.

The sending party create a shared secret using the receiver public key, and use the shared secret to generate cryptographic material for an symmetric encryption scheme (preferably authenticated encryption).

The receiving party receive the temporary ephemeral public key which is combined to its secret key to create the shared secret which just like on the sending is used to generate cryptographic material.

This module doesn't provide any symmetric data encryption capability or any mean to derive cryptographic key material for a symmetric key from the shared secret. this is left to the user for now.

Synopsis

Documentation

deriveEncrypt #

Arguments

:: (MonadRandom randomly, EllipticCurveDH curve) 
=> proxy curve

representation of the curve

-> Point curve

the public key of the receiver

-> randomly (CryptoFailable (Point curve, SharedSecret)) 

Generate random a new Shared secret and the associated point to do a ECIES style encryption

deriveDecrypt #

Arguments

:: EllipticCurveDH curve 
=> proxy curve

representation of the curve

-> Point curve

The received R (supposedly, randomly generated on the encrypt side)

-> Scalar curve

The secret key of the receiver

-> CryptoFailable SharedSecret 

Derive the shared secret with the receiver key and the R point of the scheme.