defmodule StellarBase.KeyPair.Default do @moduledoc """ Functions for Ed25519 KeyPairs. """ alias StellarBase.Ed25519.{PublicKey, SecretSeed} @behaviour StellarBase.KeyPair.Spec @impl true def random do {secret, public_key} = Ed25519.generate_key_pair() encoded_public_key = PublicKey.encode!(public_key) encoded_secret = SecretSeed.encode!(secret) {encoded_public_key, encoded_secret} end @impl true def from_secret(secret) do decoded_secret = SecretSeed.decode!(secret) derived_public_key = Ed25519.derive_public_key(decoded_secret) encoded_public_key = PublicKey.encode!(derived_public_key) {encoded_public_key, secret} end end