cardano-addresses
Safe HaskellNone
LanguageHaskell2010

Cardano.Address.Crypto.BIP39

Description

Vendored from cardano-crypto (Apache-2.0). Original: Crypto.Encoding.BIP39

Basement types replaced with standard Haskell equivalents.

Synopsis

Entropy

data Entropy (n :: Nat) #

Instances

Instances details
NFData (Entropy n) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

rnf :: Entropy n -> () #

Show (Entropy n) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

showsPrec :: Int -> Entropy n -> ShowS #

show :: Entropy n -> String #

showList :: [Entropy n] -> ShowS #

Eq (Entropy n) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

(==) :: Entropy n -> Entropy n -> Bool #

(/=) :: Entropy n -> Entropy n -> Bool #

type ValidEntropySize (n :: Nat) = (KnownNat n, Elem n '[96, 128, 160, 192, 224, 256]) #

data Checksum (bits :: Nat) #

Instances

Instances details
NFData (Checksum bits) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

rnf :: Checksum bits -> () #

Show (Checksum bits) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

showsPrec :: Int -> Checksum bits -> ShowS #

show :: Checksum bits -> String #

showList :: [Checksum bits] -> ShowS #

Eq (Checksum bits) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

(==) :: Checksum bits -> Checksum bits -> Bool #

(/=) :: Checksum bits -> Checksum bits -> Bool #

type ValidChecksumSize (ent :: Nat) (csz :: Nat) = (KnownNat csz, Elem csz '[3, 4, 5, 6, 7, 8], CheckSumBits ent ~ csz) #

type family MnemonicWords (n :: Nat) :: Nat where ... #

Equations

MnemonicWords 96 = 9 
MnemonicWords 128 = 12 
MnemonicWords 160 = 15 
MnemonicWords 192 = 18 
MnemonicWords 224 = 21 
MnemonicWords 256 = 24 

type family EntropySize (n :: Nat) :: Nat where ... #

Equations

EntropySize 9 = 96 
EntropySize 12 = 128 
EntropySize 15 = 160 
EntropySize 18 = 192 
EntropySize 21 = 224 
EntropySize 24 = 256 

toEntropy :: forall (n :: Nat) (csz :: Nat) ba. (ValidEntropySize n, ValidChecksumSize n csz, ByteArrayAccess ba) => ba -> Either (EntropyError csz) (Entropy n) #

entropyToWords :: forall (n :: Nat) (csz :: Nat) (mw :: Nat). ConsistentEntropy n mw csz => Entropy n -> MnemonicSentence mw #

wordsToEntropy :: forall (ent :: Nat) (csz :: Nat) (mw :: Nat). ConsistentEntropy ent mw csz => MnemonicSentence mw -> Either (EntropyError csz) (Entropy ent) #

Seed

data Seed #

Instances

Instances details
NFData Seed # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

rnf :: Seed -> () #

Monoid Seed # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

mempty :: Seed #

mappend :: Seed -> Seed -> Seed #

mconcat :: [Seed] -> Seed #

Semigroup Seed # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

(<>) :: Seed -> Seed -> Seed #

sconcat :: NonEmpty Seed -> Seed #

stimes :: Integral b => b -> Seed -> Seed #

Show Seed # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

showsPrec :: Int -> Seed -> ShowS #

show :: Seed -> String #

showList :: [Seed] -> ShowS #

Eq Seed # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

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

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

Ord Seed # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

compare :: Seed -> Seed -> Ordering #

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

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

(>) :: Seed -> Seed -> Bool #

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

max :: Seed -> Seed -> Seed #

min :: Seed -> Seed -> Seed #

ByteArray Seed # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

allocRet :: Int -> (Ptr p -> IO a) -> IO (a, Seed) #

ByteArrayAccess Seed # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

length :: Seed -> Int #

withByteArray :: Seed -> (Ptr p -> IO a) -> IO a #

copyByteArrayToPtr :: Seed -> Ptr p -> IO () #

Mnemonic Sentence

newtype MnemonicSentence (mw :: Nat) #

Instances

Instances details
NFData (MnemonicSentence mw) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

rnf :: MnemonicSentence mw -> () #

Show (MnemonicSentence mw) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Eq (MnemonicSentence mw) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

data MnemonicPhrase (mw :: Nat) #

Instances

Instances details
NFData (MnemonicPhrase mw) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Methods

rnf :: MnemonicPhrase mw -> () #

Show (MnemonicPhrase mw) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Eq (MnemonicPhrase mw) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

type ValidMnemonicSentence (mw :: Nat) = (KnownNat mw, Elem mw '[9, 12, 15, 18, 21, 24]) #

Dictionary

data Dictionary #

Describes the properties of a BIP39 word dictionary.

data WordIndex #

Index of a mnemonic word in the Dictionary.

WordIndex values are in the range [0..2047].

wordIndex :: Word16 -> WordIndex #

Create a WordIndex, erroring if out of range.

unWordIndex :: WordIndex -> Word16 #

Extract the raw index.

helpers

type ConsistentEntropy (ent :: Nat) (mw :: Nat) (csz :: Nat) = (ValidEntropySize ent, ValidChecksumSize ent csz, ValidMnemonicSentence mw, MnemonicWords ent ~ mw) #

type family CheckSumBits (n :: Nat) :: Nat where ... #

Equations

CheckSumBits 96 = 3 
CheckSumBits 128 = 4 
CheckSumBits 160 = 5 
CheckSumBits 192 = 6 
CheckSumBits 224 = 7 
CheckSumBits 256 = 8 

type family Elem (e :: Nat) (l :: [Nat]) where ... #

Equations

Elem e ('[] :: [Nat]) = TypeError (('Text "offset: field " ':<>: 'ShowType e) ':<>: 'Text " not element of valid values") :: Constraint 
Elem e (e ': _1) = () 
Elem e (_1 ': xs) = Elem e xs 

Errors

newtype DictionaryError #

Errors from dictionary lookup.

data EntropyError (csz :: Nat) #

Instances

Instances details
NFData (EntropyError csz) # 
Instance details

Defined in Cardano.Mnemonic

Methods

rnf :: EntropyError csz -> () #

Show (EntropyError csz) # 
Instance details

Defined in Cardano.Address.Crypto.BIP39

Eq (EntropyError czs) # 
Instance details

Defined in Cardano.Mnemonic

Methods

(==) :: EntropyError czs -> EntropyError czs -> Bool #

(/=) :: EntropyError czs -> EntropyError czs -> Bool #