slither 0.3.0

Encrypted peer-to-peer UDP transport: reliable messages, streams and datagrams, authenticated by raw public keys - no certificates, no TLS. WireGuard-shaped handshake, QUIC-shaped frames.
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.96"
name = "slither"
version = "0.3.0"
authors = ["Nicolas Di Prima <nicolas@primetype.co.uk>"]
build = false
exclude = [
    "/.github",
    "/CLAUDE.md",
    "/TODO.md",
    "/deny.toml",
    "/.gitignore",
    "/.serena",
    "/.claude",
    "/.spec-v2-clean-slate",
    "/.spec-v2-pipeline",
    "/.slices",
    "/PLAN.md",
    "/STORIES.md",
    "/demo",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Encrypted peer-to-peer UDP transport: reliable messages, streams and datagrams, authenticated by raw public keys - no certificates, no TLS. WireGuard-shaped handshake, QUIC-shaped frames."
homepage = "https://primetype.co.uk/slither/"
documentation = "https://docs.rs/slither"
readme = "README.md"
keywords = [
    "noise",
    "udp",
    "wireguard",
    "quic",
    "datagram",
]
categories = [
    "cryptography",
    "network-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/primetype/slither"

[package.metadata.docs.rs]
all-features = true

[features]
codec = [
    "sink",
    "dep:tokio-util",
]
default = []
sink = [
    "dep:futures-core",
    "dep:futures-sink",
]
test-util = []
tower = ["dep:tower-service"]

[lib]
name = "slither"
path = "src/lib.rs"

[[example]]
name = "audit_udp"
path = "examples/audit_udp.rs"

[[example]]
name = "bench_vs_tcp"
path = "examples/bench_vs_tcp.rs"

[[example]]
name = "echo"
path = "examples/echo.rs"

[[test]]
name = "spec_ack_burst"
path = "tests/spec_ack_burst.rs"
required-features = ["test-util"]

[[test]]
name = "spec_compat"
path = "tests/spec_compat.rs"
required-features = [
    "test-util",
    "sink",
]

[[test]]
name = "spec_constants"
path = "tests/spec_constants.rs"

[[test]]
name = "spec_errors"
path = "tests/spec_errors.rs"

[[test]]
name = "spec_packet"
path = "tests/spec_packet.rs"

[[test]]
name = "spec_rekey"
path = "tests/spec_rekey.rs"
required-features = ["test-util"]

[[test]]
name = "spec_shell"
path = "tests/spec_shell.rs"
required-features = ["test-util"]

[[test]]
name = "spec_streams"
path = "tests/spec_streams.rs"
required-features = ["test-util"]

[[test]]
name = "story_codec"
path = "tests/story_codec.rs"
required-features = [
    "test-util",
    "codec",
]

[[test]]
name = "story_compat"
path = "tests/story_compat.rs"
required-features = [
    "test-util",
    "sink",
]

[[test]]
name = "story_datagram"
path = "tests/story_datagram.rs"
required-features = ["test-util"]

[[test]]
name = "story_dial"
path = "tests/story_dial.rs"
required-features = ["test-util"]

[[test]]
name = "story_flow"
path = "tests/story_flow.rs"
required-features = ["test-util"]

[[test]]
name = "story_intro"
path = "tests/story_intro.rs"
required-features = ["test-util"]

[[test]]
name = "story_keepalive"
path = "tests/story_keepalive.rs"
required-features = ["test-util"]

[[test]]
name = "story_lifecycle"
path = "tests/story_lifecycle.rs"
required-features = ["test-util"]

[[test]]
name = "story_message"
path = "tests/story_message.rs"
required-features = ["test-util"]

[[test]]
name = "story_mobility"
path = "tests/story_mobility.rs"
required-features = ["test-util"]

[[test]]
name = "story_pairing"
path = "tests/story_pairing.rs"
required-features = ["test-util"]

[[test]]
name = "story_park"
path = "tests/story_park.rs"
required-features = ["test-util"]

[[test]]
name = "story_path"
path = "tests/story_path.rs"
required-features = ["test-util"]

[[test]]
name = "story_reassembly"
path = "tests/story_reassembly.rs"
required-features = ["test-util"]

[[test]]
name = "story_rekey"
path = "tests/story_rekey.rs"
required-features = ["test-util"]

[[test]]
name = "story_reliability"
path = "tests/story_reliability.rs"
required-features = ["test-util"]

[[test]]
name = "story_streams"
path = "tests/story_streams.rs"
required-features = ["test-util"]

[[test]]
name = "story_suite"
path = "tests/story_suite.rs"
required-features = ["test-util"]

[[test]]
name = "story_tower"
path = "tests/story_tower.rs"
required-features = [
    "test-util",
    "tower",
]

[[test]]
name = "story_traced"
path = "tests/story_traced.rs"
required-features = ["test-util"]

[[test]]
name = "story_wrong_static"
path = "tests/story_wrong_static.rs"
required-features = ["test-util"]

[[bench]]
name = "throughput"
path = "benches/throughput.rs"
test = false
harness = false
required-features = ["test-util"]

[dependencies.cryptoxide]
version = ">=0.6.3, <0.7"
features = ["blake2"]
default-features = false

[dependencies.futures-core]
version = "0.3"
optional = true

[dependencies.futures-sink]
version = "0.3"
optional = true

[dependencies.getrandom]
version = "0.4"

[dependencies.hiss]
version = "0.4.1"
default-features = false

[dependencies.packtool]
version = "0.6"

[dependencies.rand_chacha]
version = "0.10"

[dependencies.rand_core]
version = "0.10"

[dependencies.thiserror]
version = "2"

[dependencies.tokio]
version = "1"
features = [
    "rt",
    "time",
    "sync",
    "macros",
]

[dependencies.tokio-util]
version = "0.7"
features = ["codec"]
optional = true
default-features = false

[dependencies.tower-service]
version = "0.3"
optional = true

[dependencies.tracing]
version = "0.1"

[dev-dependencies.cryptoxide]
version = ">=0.6.3, <0.7"
features = [
    "chacha",
    "poly1305",
]
default-features = false

[dev-dependencies.futures-util]
version = "0.3"
features = ["sink"]

[dev-dependencies.hiss]
version = "0.4.1"
features = ["x25519-cryptoxide"]

[dev-dependencies.tokio]
version = "1"
features = [
    "test-util",
    "rt",
    "macros",
    "time",
    "net",
    "sync",
    "io-util",
]

[dev-dependencies.tower]
version = "0.5"
features = ["util"]
default-features = false

[target.'cfg(not(target_family = "wasm"))'.dependencies.tokio]
version = "1"
features = ["net"]