@spec gen_key_pair() :: {:ok, binary(), binary()} | {:error, atom()}
@spec gen_keys_from_seed(binary()) :: {:ok, binary(), binary()} | {:error, atom()}
@spec gen_pub_key(binary()) :: {:ok, binary()} | {:error, atom()}
@spec sign(binary(), binary()) :: {:ok, binary()} | {:error, atom()}
@spec verify(binary(), binary(), binary()) :: :ok | :error