Crosswake.Companions.Sigra.Contracts (crosswake v0.1.2)

View Source

Typed auth contracts for the Sigra backend seam.

Backend-projected authority and client/device evidence are separated by design. Evidence may inform projection later, but cannot set route activation authority.

Summary

Functions

assurance_level_meets?(current, required)

@spec assurance_level_meets?(atom(), atom()) :: boolean()

assurance_level_vocabulary()

@spec assurance_level_vocabulary() :: [atom()]

auth_age_seconds(auth_context)

authority_state_vocabulary()

@spec authority_state_vocabulary() :: [atom()]

lane_auth_age_seconds(lane, as_of)

mfa_level_meets?(current, required)

@spec mfa_level_meets?(atom(), atom()) :: boolean()

mfa_level_vocabulary()

@spec mfa_level_vocabulary() :: [atom()]

new_auth_context(attrs)

@spec new_auth_context(map() | keyword()) ::
  {:ok, Crosswake.Companions.Sigra.Contracts.AuthContext.t()}
  | {:error, keyword()}

new_session_authority_lane(attrs)

@spec new_session_authority_lane(map() | keyword()) ::
  {:ok, Crosswake.Companions.Sigra.Contracts.SessionAuthorityLane.t()}
  | {:error, keyword()}

new_step_up_challenge(attrs)

@spec new_step_up_challenge(map() | keyword()) ::
  {:ok, Crosswake.Companions.Sigra.Contracts.StepUpChallenge.t()}
  | {:error, keyword()}

normalize_timestamp(value)

@spec normalize_timestamp(String.t() | DateTime.t()) ::
  {:ok, String.t()} | {:error, term()}

timestamp_before_or_equal?(left, right)

@spec timestamp_before_or_equal?(
  String.t() | DateTime.t() | nil,
  String.t() | DateTime.t() | nil
) :: boolean()

validate_auth_context(auth_context)

@spec validate_auth_context(Crosswake.Companions.Sigra.Contracts.AuthContext.t()) ::
  :ok | {:error, keyword()}

validate_evidence_lane(evidence)

@spec validate_evidence_lane(map() | keyword()) :: :ok | {:error, keyword()}

validate_session_authority_lane(lane)

@spec validate_session_authority_lane(
  Crosswake.Companions.Sigra.Contracts.SessionAuthorityLane.t()
) ::
  :ok | {:error, keyword()}

validate_step_up_challenge(challenge)

@spec validate_step_up_challenge(
  Crosswake.Companions.Sigra.Contracts.StepUpChallenge.t()
) ::
  :ok | {:error, keyword()}