SignedNote.Signer (signed_note v1.0.0)

Copy Markdown View Source

An Ed25519 note signer: a key name and private key, with the key ID computed per the C2SP signed-note recommendation.

Signers are created from an existing 32-byte Ed25519 seed with from_ed25519_seed/2 or freshly with generate/1. The corresponding SignedNote.Verifier comes from verifier/1.

Summary

Types

t()

An Ed25519 signer: key name, 4-byte key ID, seed and public key.

Functions

Builds a signer from a key name and a 32-byte Ed25519 private-key seed (RFC 8032).

Parses the reference implementation's private-key encoding

Generates a new Ed25519 signer under name.

Renders this signer in the reference implementation's private-key encoding.

The verifier for this signer's public key.

Types

t()

@type t() :: %SignedNote.Signer{
  key_id: <<_::4*8>>,
  name: String.t(),
  public_key: <<_::32*8>>,
  seed: <<_::32*8>>
}

An Ed25519 signer: key name, 4-byte key ID, seed and public key.

Functions

from_ed25519_seed(name, seed)

@spec from_ed25519_seed(String.t(), <<_::32*8>>) ::
  {:ok, t()} | {:error, SignedNote.Error.t()}

Builds a signer from a key name and a 32-byte Ed25519 private-key seed (RFC 8032).

from_string(arg1)

@spec from_string(String.t()) :: {:ok, t()} | {:error, SignedNote.Error.t()}

Parses the reference implementation's private-key encoding:

PRIVATE+KEY+<name>+<hex key ID>+<base64(0x01 || seed)>

The embedded key ID must match the ID computed from the name and the seed's public key.

generate(name)

@spec generate(String.t()) :: {:ok, t()} | {:error, SignedNote.Error.t()}

Generates a new Ed25519 signer under name.

to_string(signer)

@spec to_string(t()) :: String.t()

Renders this signer in the reference implementation's private-key encoding.

verifier(signer)

@spec verifier(t()) :: SignedNote.Verifier.t()

The verifier for this signer's public key.