signable-0.4: Deterministic serialisation and signatures with proto-lens support

Safe HaskellNone
LanguageHaskell2010

Data.Signable

Description

Digital signature is common security-related practice. One of the main difficulties of digital signature usage is necessity of determenistic data serialization agreement. This library provides Signable class which represents the idea of such agreement. Also worth mentioning generic proto-lens compatible implementation of serialization/signing algorithm described here. It's implemented as separate protoc plugin signable-haskell-protoc which generates Signable class instances for given proto-lens messages and enums.

Documentation

safeFromIntegral :: forall a b. (Integral a, Integral b, Bounded b) => a -> Maybe b Source #

ifThenElse :: (a -> Bool) -> (a -> b) -> (a -> b) -> a -> b Source #

class Signable a where Source #

Methods

toBinary :: a -> ByteString Source #

Instances
Signable Bool Source # 
Instance details

Defined in Data.Signable.Class

Signable Double Source # 
Instance details

Defined in Data.Signable.Class

Signable Float Source # 
Instance details

Defined in Data.Signable.Class

Signable Int32 Source # 
Instance details

Defined in Data.Signable.Class

Signable Int64 Source # 
Instance details

Defined in Data.Signable.Class

Signable Word32 Source # 
Instance details

Defined in Data.Signable.Class

Signable Word64 Source # 
Instance details

Defined in Data.Signable.Class

Signable ByteString Source # 
Instance details

Defined in Data.Signable.Class

Signable ByteString Source # 
Instance details

Defined in Data.Signable.Class

Signable Text Source # 
Instance details

Defined in Data.Signable.Class

(Foldable f, Signable a) => Signable (f a) Source # 
Instance details

Defined in Data.Signable.Class

Methods

toBinary :: f a -> ByteString Source #

data Sig Source #

Instances
Eq Sig Source # 
Instance details

Defined in Data.Signable.Class

Methods

(==) :: Sig -> Sig -> Bool #

(/=) :: Sig -> Sig -> Bool #

Show Sig Source # 
Instance details

Defined in Data.Signable.Class

Methods

showsPrec :: Int -> Sig -> ShowS #

show :: Sig -> String #

showList :: [Sig] -> ShowS #

data PrvKey Source #

Instances
Eq PrvKey Source # 
Instance details

Defined in Data.Signable.Class

Methods

(==) :: PrvKey -> PrvKey -> Bool #

(/=) :: PrvKey -> PrvKey -> Bool #

Show PrvKey Source # 
Instance details

Defined in Data.Signable.Class

data PubKey Source #

Instances
Eq PubKey Source # 
Instance details

Defined in Data.Signable.Class

Methods

(==) :: PubKey -> PubKey -> Bool #

(/=) :: PubKey -> PubKey -> Bool #

Show PubKey Source # 
Instance details

Defined in Data.Signable.Class

data Alg Source #

Constructors

AlgSecp256k1 
Instances
Eq Alg Source # 
Instance details

Defined in Data.Signable.Class

Methods

(==) :: Alg -> Alg -> Bool #

(/=) :: Alg -> Alg -> Bool #

Ord Alg Source # 
Instance details

Defined in Data.Signable.Class

Methods

compare :: Alg -> Alg -> Ordering #

(<) :: Alg -> Alg -> Bool #

(<=) :: Alg -> Alg -> Bool #

(>) :: Alg -> Alg -> Bool #

(>=) :: Alg -> Alg -> Bool #

max :: Alg -> Alg -> Alg #

min :: Alg -> Alg -> Alg #

Show Alg Source # 
Instance details

Defined in Data.Signable.Class

Methods

showsPrec :: Int -> Alg -> ShowS #

show :: Alg -> String #

showList :: [Alg] -> ShowS #

sign :: Signable a => PrvKey -> a -> Sig Source #

verify :: Signable a => PubKey -> Sig -> a -> Bool Source #