Amarula.Protocol.Signal.Group.SenderKeyState (amarula v0.1.0)

View Source

Represents the state of a sender key for group encryption.

Manages the sender chain key, signing key, and message keys for a specific sender.

Summary

Functions

Adds a sender message key to the state.

Gets the sender key ID.

Gets the current sender chain key.

Gets the private signing key.

Gets the public signing key.

Checks if a message key exists for the given iteration.

Removes and returns a sender message key for the given iteration.

Checks if the state is valid.

Types

signing_key()

@type signing_key() :: %{public: binary(), private: binary() | nil}

t()

@type t() :: %Amarula.Protocol.Signal.Group.SenderKeyState{
  sender_chain_key: Amarula.Protocol.Signal.Group.SenderChainKey.t(),
  sender_key_id: non_neg_integer(),
  sender_message_keys: [Amarula.Protocol.Signal.Group.SenderMessageKey.t()],
  sender_signing_key: signing_key()
}

Functions

add_sender_message_key(state, message_key)

@spec add_sender_message_key(t(), Amarula.Protocol.Signal.Group.SenderMessageKey.t()) ::
  t()

Adds a sender message key to the state.

get_key_id(sender_key_state)

@spec get_key_id(t()) :: non_neg_integer()

Gets the sender key ID.

get_sender_chain_key(sender_key_state)

@spec get_sender_chain_key(t()) :: Amarula.Protocol.Signal.Group.SenderChainKey.t()

Gets the current sender chain key.

get_signing_key_private(sender_key_state)

@spec get_signing_key_private(t()) :: binary() | nil

Gets the private signing key.

get_signing_key_public(sender_key_state)

@spec get_signing_key_public(t()) :: binary()

Gets the public signing key.

has_sender_message_key(sender_key_state, iteration)

@spec has_sender_message_key(t(), non_neg_integer()) :: boolean()

Checks if a message key exists for the given iteration.

new(sender_key_id, iteration, chain_key_seed, signing_key)

@spec new(non_neg_integer(), non_neg_integer(), binary(), signing_key()) :: t()

Creates a new SenderKeyState.

remove_sender_message_key(state, iteration)

@spec remove_sender_message_key(t(), non_neg_integer()) ::
  {Amarula.Protocol.Signal.Group.SenderMessageKey.t() | nil, t()}

Removes and returns a sender message key for the given iteration.

set_sender_chain_key(state, sender_chain_key)

@spec set_sender_chain_key(t(), Amarula.Protocol.Signal.Group.SenderChainKey.t()) ::
  t()

Sets the sender chain key.

valid?(sender_key_state)

@spec valid?(t()) :: boolean()

Checks if the state is valid.