libsignal
Home to the Signal Protocol and other cryptographic primitives
libsignal is the foundational cryptographic library that implements the Signal Protocol and other essential primitives used across the official Signal clients and servers, enabling secure end-to-end encrypted communication. Written primarily in Rust with bindings and APIs surfaced for Java, Swift, and TypeScript, this library encapsulates critical algorithms like the Double Ratchet, prekey mechanisms, secure key storage, and zero-knowledge group primitives, along with additional utilities for media handling and device key transfer. libsignal abstracts complex cryptographic constructions into reusable components that client applications can adopt to ensure forward secrecy, authentication, and integrity without re-implementing core security logic. Although its primary use is within the Signal ecosystem, its documentation and exposed interfaces allow developers to explore modern secure messaging primitives or use pieces of the protocol in experimental applications.