View Source Kcl.State (KCl v1.4.2)

On-going KCl session state

Some helpers to maintain state between messages

Summary

Functions

Initialize a new state

update the state for a new peer

Types

@type t() :: %Kcl.State{
  our_private: term(),
  our_public: term(),
  previous_nonce: term(),
  shared_secret: term(),
  their_public: term()
}

Functions

Link to this function

init(our_private, our_public \\ nil)

View Source
@spec init(Kcl.key(), Kcl.key() | nil) :: t()

Initialize a new state

The private key will be used to derive the public one, if such is not supplied. There is, otherwise, no verification that the supplied keys form a valid pair.

Link to this function

new_peer(state, their_public)

View Source
@spec new_peer(t(), Kcl.key()) :: t() | :error

update the state for a new peer

The shared secret is computed from the state and new peer public key. The previous_nonce value is also reset to 0.