web3-crypto-1.0.0.0: Cryptograhical primitives for Haskell Web3 library.
CopyrightAleksandr Krupenkin 2016-2021
LicenseApache-2.0
Maintainermail@akru.me
Stabilityexperimental
Portabilityunportable
Safe HaskellNone
LanguageHaskell2010

Crypto.Ethereum

Description

Ethereum cryptography primitives.

Synopsis

ECDSA crypto key ops

data PrivateKey #

ECDSA Private Key.

Instances

Instances details
Eq PrivateKey 
Instance details

Defined in Crypto.PubKey.ECC.ECDSA

Data PrivateKey 
Instance details

Defined in Crypto.PubKey.ECC.ECDSA

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PrivateKey -> c PrivateKey #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PrivateKey #

toConstr :: PrivateKey -> Constr #

dataTypeOf :: PrivateKey -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PrivateKey) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PrivateKey) #

gmapT :: (forall b. Data b => b -> b) -> PrivateKey -> PrivateKey #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PrivateKey -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PrivateKey -> r #

gmapQ :: (forall d. Data d => d -> u) -> PrivateKey -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> PrivateKey -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PrivateKey -> m PrivateKey #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PrivateKey -> m PrivateKey #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PrivateKey -> m PrivateKey #

Read PrivateKey 
Instance details

Defined in Crypto.PubKey.ECC.ECDSA

Show PrivateKey 
Instance details

Defined in Crypto.PubKey.ECC.ECDSA

data PublicKey #

ECDSA Public Key.

Instances

Instances details
Eq PublicKey 
Instance details

Defined in Crypto.PubKey.ECC.ECDSA

Data PublicKey 
Instance details

Defined in Crypto.PubKey.ECC.ECDSA

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PublicKey -> c PublicKey #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PublicKey #

toConstr :: PublicKey -> Constr #

dataTypeOf :: PublicKey -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PublicKey) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PublicKey) #

gmapT :: (forall b. Data b => b -> b) -> PublicKey -> PublicKey #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PublicKey -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PublicKey -> r #

gmapQ :: (forall d. Data d => d -> u) -> PublicKey -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> PublicKey -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PublicKey -> m PublicKey #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PublicKey -> m PublicKey #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PublicKey -> m PublicKey #

Read PublicKey 
Instance details

Defined in Crypto.PubKey.ECC.ECDSA

Show PublicKey 
Instance details

Defined in Crypto.PubKey.ECC.ECDSA

importKey :: ByteArrayAccess privateKey => privateKey -> PrivateKey Source #

Import ECDSA private key from byte array.

Input array should have 32 byte length.

derivePubKey :: PrivateKey -> PublicKey Source #

Get public key appropriate to private key.

WARNING: Vulnerable to timing attacks.

Digital Signature Algorithm

signMessage :: (ByteArrayAccess message, ByteArray rsv) => PrivateKey -> message -> rsv Source #

Make Ethereum standard signature.

The message is before enveloped as follows: "x19Ethereum Signed Message:n" + message.length + message

WARNING: Vulnerable to timing attacks.

Hash function

keccak256 :: (ByteArrayAccess bin, ByteArray bout) => bin -> bout Source #

Keccak 256 hash function.