Amarula.Protocol.Signal.Repository (amarula v0.1.0)

View Source

Signal Protocol Repository - Main interface for Signal protocol operations.

This module provides the high-level API for all Signal protocol operations, including group message encryption/decryption, sender key management, and LID mapping integration.

Summary

Functions

Returns a specification to start this module under a supervisor.

Gets LID for a phone number.

Gets phone number for a LID.

Processes a sender key distribution message.

Starts the Signal Repository.

Types

t()

@type t() :: %Amarula.Protocol.Signal.Repository{
  key_store: module(),
  lid_mapping_store: pid(),
  logger: module(),
  sender_key_store: module()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

decrypt_group_message(server \\ __MODULE__, map)

@spec decrypt_group_message(GenServer.server(), map()) ::
  {:ok, binary()} | {:error, String.t()}

Decrypts a group message.

encrypt_group_message(server \\ __MODULE__, map)

@spec encrypt_group_message(GenServer.server(), map()) ::
  {:ok, map()} | {:error, String.t()}

Encrypts a group message.

get_lid_for_pn(server \\ __MODULE__, pn)

@spec get_lid_for_pn(GenServer.server(), String.t()) ::
  {:ok, String.t()} | {:error, String.t()}

Gets LID for a phone number.

get_pn_for_lid(server \\ __MODULE__, lid)

@spec get_pn_for_lid(GenServer.server(), String.t()) ::
  {:ok, String.t()} | {:error, String.t()}

Gets phone number for a LID.

process_sender_key_distribution_message(server \\ __MODULE__, map)

@spec process_sender_key_distribution_message(GenServer.server(), map()) ::
  :ok | {:error, String.t()}

Processes a sender key distribution message.

start_link(opts \\ [])

@spec start_link(keyword()) :: GenServer.on_start()

Starts the Signal Repository.