Lockspire.Storage.KeyStore behaviour (lockspire v1.0.0)

Copy Markdown

Domain-level persistence contract for signing keys.

Summary

Types

store_error()

@type store_error() :: term()

Callbacks

activate_signing_key(integer, t)

@callback activate_signing_key(integer(), DateTime.t()) ::
  {:ok,
   %{
     activated_key: Lockspire.Domain.SigningKey.t(),
     retiring_key: Lockspire.Domain.SigningKey.t() | nil
   }}
  | {:error, store_error()}

fetch_active_signing_key(keyword)

@callback fetch_active_signing_key(keyword()) ::
  {:ok, Lockspire.Domain.SigningKey.t() | nil} | {:error, store_error()}

fetch_signing_key_by_id(integer)

@callback fetch_signing_key_by_id(integer()) ::
  {:ok, Lockspire.Domain.SigningKey.t() | nil} | {:error, store_error()}

list_active_keys()

@callback list_active_keys() ::
  {:ok, [Lockspire.Domain.SigningKey.t()]} | {:error, store_error()}

list_decryption_keys()

@callback list_decryption_keys() ::
  {:ok, [Lockspire.Domain.SigningKey.t()]} | {:error, store_error()}

list_publishable_keys(keyword)

@callback list_publishable_keys(keyword()) ::
  {:ok, [Lockspire.Domain.SigningKey.t()]} | {:error, store_error()}

list_signing_keys(keyword)

@callback list_signing_keys(keyword()) ::
  {:ok, [Lockspire.Domain.SigningKey.t()]} | {:error, store_error()}

publish_key(t)

@callback publish_key(Lockspire.Domain.SigningKey.t()) ::
  {:ok, Lockspire.Domain.SigningKey.t()} | {:error, store_error()}

publish_signing_key(integer, t)

@callback publish_signing_key(integer(), DateTime.t()) ::
  {:ok, Lockspire.Domain.SigningKey.t()} | {:error, store_error()}

retire_signing_key(integer, t)

@callback retire_signing_key(integer(), DateTime.t()) ::
  {:ok, Lockspire.Domain.SigningKey.t()} | {:error, store_error()}