Jul 20, 2023

Platform-agnostic APIs used by the official Signal clients and servers

libsignal contains platform-agnostic APIs used by the official Signal clients and servers, exposed as a Java, Swift, or TypeScript library. The underlying implementations are written in Rust

  • libsignal-protocol Implements the Signal protocol, including the Double Ratchet algorithm. A replacement for libsignal-protocol-java and libsignal-metadata-java.
  • signal-crypto Cryptographic primitives such as AES-GCM. We use RustCrypto’s where we can but sometimes have differing needs.
  • device-transfer Support logic for Signal’s device-to-device transfer feature.
  • attest Functionality for remote attestation of SGX enclaves and server-side HSMs.
  • zkgroup Functionality for zero-knowledge groups and related features available in Signal.
  • poksho Utilities for implementing zero-knowledge proofs such as those used by zkgroup; stands for “proof-of-knowledge, stateful-hash-object”.

Checkout these related ports:
  • Zoom - Zoom videoconferencing client (CAVEAT Sound doesn't yet work)
  • Zkgroup - Library for the Signal Private Group System
  • Zephyr - Enterprise-scale distributed messaging system
  • Yume - Encrypted peer-to-peer IPv6 UDP messaging terminal
  • Yoono - Client for Twitter and other social networks
  • Xmpp-client - XMPP client with OTR support
  • Vqcc-gtk - LAN chat client compatible with quickChat and Vypress Chat (TM)
  • Utox - Lightweight Tox client
  • Twirssi - Twitter script to irssi
  • Tut - TUI for Mastodon
  • Toxins - Collection of small programs using toxcore
  • Toxic - Console client for Tox
  • Toxext - Extension library for tox
  • Toxbot - Groupchat control bot for Tox
  • Tox_extension_messages - Message extension library for tox