Files
libsignal/Cargo.toml
Jordan Rose 02d51454f2 Update hpke-rs to avoid old libcrux-sha3 version
(We don't actually use it, but it still shows up in the dependency
graph.)
2025-12-01 11:07:47 -08:00

232 lines
6.8 KiB
TOML

[workspace]
# When adding new members, consider updating the log filter in rust/bridge/shared/src/logging.rs.
members = [
"rust/attest",
"rust/crypto",
"rust/device-transfer",
"rust/keytrans",
"rust/media",
"rust/message-backup",
"rust/net",
"rust/net/chat",
"rust/net/infra",
"rust/account-keys",
"rust/poksho",
"rust/protocol",
"rust/usernames",
"rust/zkcredential",
"rust/zkgroup",
"rust/bridge/ffi",
"rust/bridge/jni",
"rust/bridge/jni/impl",
"rust/bridge/jni/testing",
"rust/bridge/node",
]
default-members = [
"rust/crypto",
"rust/device-transfer",
"rust/media",
"rust/message-backup",
"rust/account-keys",
"rust/poksho",
"rust/protocol",
"rust/usernames",
"rust/zkcredential",
"rust/zkgroup",
]
resolver = "2" # so that our dev-dependency features don't leak into products
[workspace.package]
version = "0.86.6"
authors = ["Signal Messenger LLC"]
license = "AGPL-3.0-only"
rust-version = "1.85"
[workspace.lints.clippy]
# Prefer TryFrom between integers unless truncation is desired.
# For converting between floats and integers, there may not be an alternative.
cast_possible_truncation = "warn"
[workspace.lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = [
'cfg(fuzzing)',
'cfg(tokio_unstable)',
] }
[workspace.dependencies]
# Our own crates, so that we don't have to depend on them by inter-crate paths
attest = { path = "rust/attest" }
device-transfer = { path = "rust/device-transfer" }
libsignal-account-keys = { path = "rust/account-keys" }
libsignal-cli-utils = { path = "rust/cli-utils" }
libsignal-core = { path = "rust/core" }
libsignal-keytrans = { path = "rust/keytrans" }
libsignal-message-backup = { path = "rust/message-backup" }
libsignal-net = { path = "rust/net" }
libsignal-net-chat = { path = "rust/net/chat" }
libsignal-net-grpc = { path = "rust/net/grpc" }
libsignal-protocol = { path = "rust/protocol" }
libsignal-svrb = { path = "rust/svrb" }
poksho = { path = "rust/poksho" }
signal-crypto = { path = "rust/crypto" }
signal-media = { path = "rust/media" }
usernames = { path = "rust/usernames" }
zkcredential = { path = "rust/zkcredential" }
zkgroup = { path = "rust/zkgroup" }
libsignal-bridge = { path = "rust/bridge/shared" }
libsignal-bridge-macros = { path = "rust/bridge/shared/macros" }
libsignal-bridge-testing = { path = "rust/bridge/shared/testing" }
libsignal-bridge-types = { path = "rust/bridge/shared/types" }
libsignal-jni-impl = { path = "rust/bridge/jni/impl" }
signal-neon-futures = { path = "rust/bridge/node/futures" }
# Our forks of some dependencies, accessible as xxx_signal so that usages of them are obvious in source code. Crates
# that want to use the real things can depend on those directly.
boring-signal = { git = "https://github.com/signalapp/boring", tag = "signal-v4.18.0", package = "boring", default-features = false }
curve25519-dalek-signal = { git = 'https://github.com/signalapp/curve25519-dalek', package = "curve25519-dalek", tag = 'signal-curve25519-4.1.3' }
spqr = { git = "https://github.com/signalapp/SparsePostQuantumRatchet.git", tag = "v1.2.0" }
tokio-boring-signal = { git = "https://github.com/signalapp/boring", package = "tokio-boring", tag = "signal-v4.18.0" }
aes = "0.8.3"
aes-gcm-siv = "0.11.1"
anyhow = "1.0.97"
argon2 = "0.5.0"
arrayvec = "0.7.4"
asn1 = "0.21.0"
assert_cmd = "2.0.13"
assert_matches = "1.5"
async-compression = "0.4.5"
async-trait = "0.1.79"
atomic-take = "1.1.0"
auto_enums = "0.8.7"
base64 = "0.22.1"
bincode = "1.3.2"
bitflags = "2.9"
bitstream-io = "1.10.0"
blake2 = "0.10.6"
boring = { version = "4.6.0", default-features = false }
boring-sys = { version = "4.6.0", default-features = false }
bytes = "1.9.0"
cbc = "0.1.2"
cfg-if = "1.0.0"
chacha20poly1305 = "0.10.1"
chrono = "0.4.23"
clap = "4.4.11"
clap-stdin = "0.6.0"
const-str = "0.6.2"
criterion = "0.5"
ctr = "0.9.2"
curve25519-dalek = "4.1.3"
data-encoding-macro = "0.1.18"
derive-where = "1.2.7"
derive_more = "2.0.0"
dir-test = "0.4.1"
displaydoc = "0.2.5"
ed25519-dalek = "2.1.0"
either = "1.13.0"
env_logger = "0.11.7"
flate2 = { version = "1.1.1", default-features = false }
foreign-types = "0.5"
futures = "0.3"
futures-util = "0.3"
ghash = "0.5.0"
heck = "0.5"
hex = "0.4.3"
hickory-proto = "0.24.1"
hkdf = "0.12"
hmac = "0.12.0"
hpke-rs = "0.4.0"
hpke-rs-crypto = "0.3.0"
http = "1.3.0"
http-body = "1.0.1"
http-body-util = "0.1.3"
hyper = "1.7"
hyper-util = "0.1.17"
indexmap = "2.1.0"
intmap = "3.1.2"
itertools = "0.14.0"
jni = "0.21"
libc = "0.2.175"
libcrux-ml-kem = { version = "0.0.2", default-features = false }
linkme = "0.3.33"
log = "0.4.21"
log-panics = "2.1.0"
macro_rules_attribute = "0.2.0"
mediasan-common = "0.5.3"
minidump = { version = "0.22.1", default-features = false }
minidump-processor = { version = "0.22.1", default-features = false }
minidump-unwind = { version = "0.22.1", default-features = false }
mp4san = "0.5.3"
neon = { version = "1.1.0", default-features = false }
nonzero_ext = "0.3.0"
once_cell = "1.19.0"
partial-default = "0.1.0"
paste = "1.0.15"
pin-project = "1.1.5"
pretty_assertions = "1.4.0"
proc-macro2 = "1.0.93"
proptest = "1.7"
proptest-state-machine = "0.4"
prost = "0.13.5"
prost-build = "0.13.5"
protobuf = "3.7.2"
protobuf-codegen = "3.7.2"
protobuf-json-mapping = "3.7.2"
quote = "1.0.38"
rand = "0.9"
rand_chacha = "0.9"
rand_core = "0.9"
rangemap = "1.5.1"
rayon = "1.8.0"
rcgen = "0.13.0"
rustls = { version = "0.23.25", default-features = false }
rustls-platform-verifier = "0.5.1"
scopeguard = "1.0"
serde = "1.0.203"
serde_json = "1.0.45"
serde_json5 = "0.2.1"
serde_with = "3.1.0"
sha1 = "0.10"
sha2 = "0.10"
snow = { version = "0.10", default-features = false }
socks5-server = "0.10.1"
static_assertions = "1.1"
strum = "0.27.0"
subtle = "2.6"
syn = "2.0.98"
syn-mid = "0.6"
test-case = "3.3"
test-log = "0.2.16"
testing_logger = "0.1.1"
thiserror = "2.0.11"
tls-parser = "0.12.2"
tokio = "1.45"
tokio-socks = "0.5.2"
tokio-stream = "0.1.16"
tokio-tungstenite = "0.27.0"
tokio-util = "0.7.11"
tonic = { version = "0.13.1", default-features = false }
tonic-build = "0.13.1"
tower-service = "0.3.3"
tungstenite = "0.27.0"
unicode-segmentation = "1.12.0"
url = "2.4.1"
uuid = "1.5"
visibility = "0.1.1"
warp = "0.4.2"
webpsan = { version = "0.5.3", default-features = false }
x25519-dalek = "2.0.0"
zerocopy = "0.8.24"
[patch.crates-io]
# When building libsignal, just use our forks so we don't end up with two different versions of the libraries.
boring = { git = 'https://github.com/signalapp/boring', tag = 'signal-v4.18.0' }
boring-sys = { git = 'https://github.com/signalapp/boring', tag = 'signal-v4.18.0' }
curve25519-dalek = { git = 'https://github.com/signalapp/curve25519-dalek', tag = 'signal-curve25519-4.1.3' }
[profile.dev.package.argon2]
opt-level = 2 # libsignal-account-keys unit tests are too slow with an unoptimized argon2