Pure Elixir Signal adapter.
Historically this project had both Rust NIF and Elixir implementations.
To keep protocol debugging predictable, the adapter now exposes a single
implementation: ExWapp.Signal.Session.
Summary
Functions
Creates a new session using X3DH key agreement.
Debug: dump a message's structure.
Decrypts a regular Signal message.
Decrypts a PreKeySignalMessage (initial message from new sender).
Decrypts a PreKeySignalMessage using an existing session.
Encrypts a message using the session.
Encrypts a first message (PreKeySignalMessage).
Generate a new Curve25519 key pair.
Generate a signed prekey with XEdDSA signature.
Returns info about the current implementation.
Verify XEdDSA signature.
Types
Functions
Creates a new session using X3DH key agreement.
Debug: dump a message's structure.
Decrypts a regular Signal message.
Decrypts a PreKeySignalMessage (initial message from new sender).
@spec decrypt_prekey_message_with_session(map(), binary()) :: {:ok, binary(), map()} | {:error, term()}
Decrypts a PreKeySignalMessage using an existing session.
Encrypts a message using the session.
Options
:is_prekey- Whether to wrap in PreKeySignalMessage (default: false):bundle_info- Bundle info for PreKeySignalMessage (required if is_prekey)
Returns {:ok, ciphertext, updated_session}.
Encrypts a first message (PreKeySignalMessage).
Convenience wrapper for encrypt/3 with is_prekey: true.
Generate a new Curve25519 key pair.
Generate a signed prekey with XEdDSA signature.
@spec get_impl() :: impl()
@spec impl_module() :: module()
@spec info() :: map()
Returns info about the current implementation.
@spec set_impl(:elixir | :native) :: :ok
Verify XEdDSA signature.