Signal-specific Curve25519 helpers matching the Baileys Curve contract.
This module keeps the native surface narrow by delegating X25519 agreement to
BaileysEx.Crypto and XEdDSA signing/verification to BaileysEx.Native.XEdDSA.
Summary
Functions
Generate a Curve25519 key pair for Signal session and pre-key usage.
Prefix a 32-byte public key with the Signal version byte.
Derive a shared X25519 secret from a private key and peer public key.
Sign a payload with a Curve25519 private key using XEdDSA.
Generate a signed pre-key payload matching Baileys signedKeyPair.
Verify a XEdDSA signature against either a raw or Signal-prefixed public key.
Types
@type key_error() ::
:invalid_private_key | :invalid_public_key | :invalid_identity_key
@type key_pair() :: BaileysEx.Crypto.key_pair()
@type signed_key_pair() :: %{ key_pair: key_pair(), signature: binary(), key_id: non_neg_integer() }
Functions
Generate a Curve25519 key pair for Signal session and pre-key usage.
Prefix a 32-byte public key with the Signal version byte.
Already-prefixed keys are returned unchanged.
Sign a payload with a Curve25519 private key using XEdDSA.
@spec signed_key_pair(map(), non_neg_integer(), keyword()) :: {:ok, signed_key_pair()} | {:error, key_error()}
Generate a signed pre-key payload matching Baileys signedKeyPair.
Verify a XEdDSA signature against either a raw or Signal-prefixed public key.