2 releases

Uses new Rust 2024

0.85.3-beta.5 Dec 2, 2025
0.85.3-beta.4 Nov 20, 2025

#2741 in Cryptography


Used in 4 crates (via syft-crypto-protocol)

AGPL-3.0-only

1.5MB
22K SLoC

Rust 18K SLoC // 0.1% comments F* 4K SLoC // 0.3% comments Python 92 SLoC // 0.1% comments Shell 9 SLoC // 0.2% comments

Rust implementation of the Signal Protocol for asynchronous forward-secret public-key cryptography.

In particular, this library implements operations conforming to the following specifications:


libsignal-protocol-syft (vendored)

This directory contains a vendored copy of the libsignal crates we need for syft-crypto-core. The upstream source lives under third_party/libsignal as a git submodule. We only copy the minimal subset of crates that the syft protocol depends on (libsignal-core, signal-crypto, and libsignal-protocol).

To refresh the vendored crates after updating the submodule, run:

cd vendor/libsignal-protocol-syft
python3 sync.py

The sync script:

  1. Copies third_party/libsignal/rust/{core,crypto,protocol} into crates/.
  2. Renames the crates to libsignal-core-syft, signal-crypto-syft, and libsignal-protocol-syft.
  3. Rewrites their manifests so that workspace = true dependencies become explicit version requirements, and so local dependencies point at the vendored siblings.

The generated crates are ready to be published to crates.io and can also be used in development via a path dependency in the outer workspace.

Dependencies

~10–14MB
~270K SLoC