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

View Source

Key Helper utilities for Signal Protocol group encryption, ported from src/Signal/Group/keyhelper.ts.

The sender signing key is a Curve25519 pair (signed with XEd25519), not Ed25519 — same scheme as the identity key. The public key is returned in wire form (33 bytes, 0x05-prefixed) to match libsignal's generateKeyPair.

Summary

Functions

Generates a random sender key (chain key seed).

Generates a random sender key ID.

Generates a Curve25519 sender signing key pair. Returns {public, private} with public 0x05-prefixed (33 bytes).

Functions

generate_sender_key()

@spec generate_sender_key() :: binary()

Generates a random sender key (chain key seed).

generate_sender_key_id()

@spec generate_sender_key_id() :: integer()

Generates a random sender key ID.

generate_sender_signing_key()

@spec generate_sender_signing_key() :: {binary(), binary()}

Generates a Curve25519 sender signing key pair. Returns {public, private} with public 0x05-prefixed (33 bytes).