# Mnemo


Elixir implementation of [BIP39](

> (...) implementation of a mnemonic code or mnemonic sentence -- a group of easy to remember words -- for the generation of deterministic wallets.

`mnemo` library exposes the following interfaces:

  - [x] Generate random English mnemonic
  - [x] Generate English mnemonic for pre-existing binary entropy
  - [x] Convert English mnemonic back to its binary entropy
  - [x] Derive a PBKDF2 hex-encoded seed from any mnemonic 

The library is tested against reference vectors from [Trezor's implementation]( Additionally, a simple property test guarantees mnemonic <-> entropy <-> mnemonic correctness.

## Examples

iex(1)> Mnemo.generate
"seminar depart parent awake canal relief age emotion swap area always near voyage exist idea aunt around burst uphold web tumble mimic reopen note"

iex(1)> mnemonic = "insect miracle play mad cream upgrade engage march absorb pyramid december observe jazz senior
 betray family valve peasant cargo marriage table laundry melody morning"
iex(2)> Mnemo.entropy(mnemonic, hex: true)

iex(1)> Mnemo.mnemonic :crypto.strong_rand_bytes(16)
"emotion enroll aspect taxi nerve warrior become lens cactus stand stage pretty"

iex(1)> Mnemo.generate |> Mnemo.seed

## Installation

The package can be installed by adding `mnemo` to your list of dependencies in `mix.exs`:

def deps do
    {:mnemo, "~> 0.1.0"}

## Documentation

Documentation can be generated locally with [ExDoc](

The docs can be found at [](