Sigra.Passkeys (Sigra v0.2.5)

Copy Markdown View Source

Public passkey context for registration and credential management helpers.

Summary

Functions

authenticate(config, user, assertion, opts \\ [])

@spec authenticate(Sigra.Config.t(), user :: map(), map(), keyword()) ::
  {:ok, Sigra.Passkeys.Credential.t()}
  | {:error, :credential_not_owned}
  | {:error, :sign_count_regression}
  | {:error, term()}

config()

@spec config() :: Sigra.Config.t()

count_for_user(config, user, opts \\ [])

@spec count_for_user(Sigra.Config.t(), user :: map(), keyword()) :: non_neg_integer()

delete(config, user, credential_id, opts \\ [])

@spec delete(Sigra.Config.t(), user :: map(), credential_id :: binary(), keyword()) ::
  {:ok, Sigra.Passkeys.Credential.t()} | {:error, :not_found} | {:error, term()}

known_transport?(transport)

@spec known_transport?(String.t() | atom()) :: boolean()

list_for_user(config, user, opts \\ [])

@spec list_for_user(Sigra.Config.t(), user :: map(), keyword()) :: [
  Sigra.Passkeys.Credential.t()
]

rate_limit_ceremony(config, user_id, ceremony)

@spec rate_limit_ceremony(
  Sigra.Config.t(),
  user_id :: term(),
  :registration | :authentication
) ::
  :ok | {:error, :rate_limited, %{retry_after_ms: pos_integer()}}

register(config, user, attestation_params, opts \\ [])

@spec register(Sigra.Config.t(), user :: map(), map(), keyword()) ::
  {:ok, Sigra.Passkeys.Credential.t()}
  | {:error, :passkey_cap_reached,
     %{count: non_neg_integer(), cap: pos_integer()}}
  | {:error, Ecto.Changeset.t()}
  | {:error, term()}

rename(config, user, credential_id, new_nickname, opts \\ [])

@spec rename(
  Sigra.Config.t(),
  user :: map(),
  credential_id :: binary(),
  new_nickname :: String.t(),
  keyword()
) ::
  {:ok, Sigra.Passkeys.Credential.t()}
  | {:error, :not_found}
  | {:error, Ecto.Changeset.t()}
  | {:error, term()}

reset_cached_config()

@spec reset_cached_config() :: :ok