View Source Mobilizon.Federation.HTTPSignatures.Signature (Mobilizon v4.1.0-alpha.1)

Adapter for the HTTPSignatures lib that handles signing and providing public keys to verify HTTPSignatures

Summary

Functions

@spec build_digest(String.t()) :: String.t()
@spec fetch_public_key(Plug.Conn.t()) ::
  {:ok, String.t()}
  | {:error, :actor_not_found | :pem_decode_error | :no_signature_in_conn}

Callback implementation for HTTPSignatures.Adapter.fetch_public_key/1.

@spec generate_date_header() :: String.t()
Link to this function

generate_date_header(date)

View Source
@spec generate_date_header(NaiveDateTime.t()) :: String.t()
Link to this function

generate_request_target(method, path)

View Source
@spec generate_request_target(String.t(), String.t()) :: String.t()
Link to this function

key_id_to_actor_url(key_id)

View Source
@spec key_id_to_actor_url(String.t()) :: String.t()
Link to this function

prepare_public_key(public_key_code)

View Source
@spec prepare_public_key(String.t()) :: {:ok, tuple()} | {:error, :pem_decode_error}

Convert internal PEM encoded keys to public key format.

Link to this function

refetch_public_key(conn)

View Source
@spec refetch_public_key(Plug.Conn.t()) ::
  {:ok, String.t()}
  | {:error, :actor_fetch_error | :actor_not_fetchable | :pem_decode_error,
     :actor_is_local}

Callback implementation for HTTPSignatures.Adapter.refetch_public_key/1.

@spec sign(Mobilizon.Actors.Actor.t(), map()) ::
  String.t() | {:error, :pem_decode_error} | no_return()