Current section

Files

Jump to
eth_wallet lib eth_wallet.ex
Raw

lib/eth_wallet.ex

defmodule EthWallet do
@moduledoc """
Documentation for `EthWallet`.
"""
alias Utils.Crypto
@doc """
generate keys with/without privkey.
## Examples
iex> EthWallet.generate_keys()
%{
addr: "0xd705f740d934acfb27df7bf71aadc00f20d03c7a",
priv: <<21, ..., 166>>,
pub: <<4, ..., 165, ...>>
}
"""
def generate_keys() do
%{pub: pub}
= result
= Crypto.generate_key_secp256k1()
do_generate_keys(result, pub)
end
@doc """
iex> EthWallet.generate_keys(<<21, ..., 166>>)
%{
addr: "0xd705f740d934acfb27df7bf71aadc00f20d03c7a",
priv: <<21, ..., 166, ...>>,
pub: <<4, ..., 165, ...>>
}
"""
def generate_keys(priv) do
%{pub: pub}
= result
= Crypto.generate_key_secp256k1(priv)
do_generate_keys(result, pub)
end
defp do_generate_keys(result, pub) do
addr = Crypto.pubkey_to_address(pub)
Map.put(result, :addr, addr)
end
end