ExWapp.Session.Outbound.Encryptor (ExWapp v0.1.2)

Copy Markdown View Source

Encrypts one outbound payload for all resolved target devices.

This module owns Signal JID aliases, target accumulation, prekey wire diagnostics, fanout coverage checks, and retry-session invalidation. It does not build message payloads, send transport nodes, or persist chat state.

Summary

Functions

Clears cached Signal sessions for retry targets and their PN/LID aliases.

Encrypts the selected payload independently for every target device.

Returns target specs that do not have a corresponding encrypted participant node.

Types

encrypted_payloads()

@type encrypted_payloads() ::
  ExWapp.Session.Outbound.Direct.payloads() | %{recipient: binary()}

prekey_bundle_map()

@type prekey_bundle_map() :: %{optional(String.t()) => map()}

result()

@type result() ::
  {:ok, [ExWapp.Binary.Node.t()], ExWapp.Signal.SessionStore.t(), boolean()}
  | {:error, {:no_encrypted_targets, [{String.t(), term()}]}}

target_spec()

@type target_spec() :: %{jid: String.t(), payload_kind: atom()}

Functions

clear_sessions_for_targets(signal_sessions, targets, store)

@spec clear_sessions_for_targets(
  ExWapp.Signal.SessionStore.t(),
  [target_spec() | String.t()],
  ExWapp.Store.t()
) :: ExWapp.Signal.SessionStore.t()

Clears cached Signal sessions for retry targets and their PN/LID aliases.

encrypt_for_targets(store, signal_sessions, target_specs, payloads, prekey_bundles)

Encrypts the selected payload independently for every target device.

missing_expected_targets(target_specs, participant_nodes)

@spec missing_expected_targets([target_spec()], [ExWapp.Binary.Node.t()]) :: [
  target_spec()
]

Returns target specs that do not have a corresponding encrypted participant node.