[package]
edition = "2024"
name = "typhoon-protocol"
version = "0.1.0"
authors = ["Alexander Sergeev <aleksandr.sergeev.dm@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A sample implementation of TYPHOON protocol"
readme = "README.md"
license = "GPL-3.0-only"
repository = "https://github.com/pseusys/TYPHOON"
[features]
async-std = [
"dep:async-channel",
"dep:async-executor",
"dep:async-io",
"dep:async-lock",
]
capture = []
client = []
debug = [
"client",
"server",
]
default = [
"fast_software",
"server",
"client",
"tokio",
]
fast_hardware = [
"dep:aes",
"dep:ctr",
]
fast_software = ["dep:chacha20"]
full_hardware = [
"dep:aes",
"dep:ctr",
"dep:aes-gcm",
]
full_software = [
"dep:chacha20",
"dep:chacha20poly1305",
]
server = ["dep:socket2"]
tokio = ["dep:tokio"]
[lib]
name = "typhoon"
path = "src/lib.rs"
[[bin]]
name = "typhoon-debug"
path = "src/bin/typhoon_debug.rs"
required-features = ["debug"]
[[bin]]
name = "typhoon-gen-key"
path = "src/bin/typhoon_gen_key.rs"
required-features = [
"server",
"clap",
]
[[example]]
name = "debug_probe"
path = "example/debug_probe.rs"
required-features = ["debug"]
[[example]]
name = "flat_iat_decoy"
path = "example/flat_iat_decoy.rs"
required-features = [
"client",
"server",
]
[[example]]
name = "heavy_traffic"
path = "example/heavy_traffic.rs"
required-features = [
"client",
"server",
]
[[example]]
name = "hello_world"
path = "example/hello_world.rs"
required-features = [
"client",
"server",
]
[[example]]
name = "long_session"
path = "example/long_session.rs"
required-features = [
"client",
"server",
]
[[example]]
name = "mirror_decoy"
path = "example/mirror_decoy.rs"
required-features = [
"client",
"server",
]
[[example]]
name = "multi_client"
path = "example/multi_client.rs"
required-features = [
"client",
"server",
]
[[example]]
name = "multi_flow"
path = "example/multi_flow.rs"
required-features = [
"client",
"server",
]
[[example]]
name = "use_case"
path = "example/use_case.rs"
required-features = [
"client",
"server",
]
[[test]]
name = "network"
path = "tests/network/main.rs"
required-features = [
"client",
"server",
"tokio",
]
[[bench]]
name = "handshake"
path = "benches/handshake.rs"
harness = false
required-features = [
"client",
"server",
"tokio",
]
[[bench]]
name = "roundtrip"
path = "benches/roundtrip.rs"
harness = false
required-features = [
"client",
"server",
"tokio",
]
[dependencies.aes]
version = "^0.8.4"
optional = true
[dependencies.aes-gcm]
version = "^0.10.3"
features = ["std"]
optional = true
[dependencies.arc-swap]
version = "^1.7"
[dependencies.async-channel]
version = "^2.5.0"
optional = true
[dependencies.async-executor]
version = "^1.13.3"
optional = true
[dependencies.async-io]
version = "^2.6.0"
optional = true
[dependencies.async-lock]
version = "^3.4.2"
optional = true
[dependencies.async-trait]
version = "^0.1"
[dependencies.bitflags]
version = "^2.10.0"
[dependencies.blake3]
version = "^1.8.3"
[dependencies.cfg-if]
version = "^1.0.4"
[dependencies.chacha20]
version = "^0.10.0"
features = ["xchacha"]
optional = true
[dependencies.chacha20poly1305]
version = "^0.10.1"
features = ["std"]
optional = true
[dependencies.clap]
version = "^4.5"
features = ["derive"]
optional = true
[dependencies.classic-mceliece-rust]
version = "^3.1.0"
features = ["mceliece348864"]
[dependencies.crossbeam]
version = "^0.8.4"
[dependencies.ctr]
version = "^0.9.2"
optional = true
[dependencies.ed25519-dalek]
version = "^2.2.0"
[dependencies.futures]
version = "^0.3.31"
[dependencies.log]
version = "^0.4.29"
[dependencies.rand]
version = "^0.8.5"
[dependencies.rand_distr]
version = "^0.4.3"
[dependencies.socket2]
version = "^0.5"
features = ["all"]
optional = true
[dependencies.subtle]
version = "^2.6.1"
[dependencies.thiserror]
version = "^2.0.18"
[dependencies.tokio]
version = "^1.47.1"
features = [
"net",
"sync",
"time",
"rt",
"rt-multi-thread",
"macros",
]
optional = true
[dependencies.weighted_rand]
version = "^0.4.2"
[dependencies.x25519-dalek]
version = "^2.0.1"
features = ["static_secrets"]
[dev-dependencies.criterion]
version = "^0.5"
features = ["async_tokio"]
[dev-dependencies.env_logger]
version = "^0.11"
[dev-dependencies.rand_chacha]
version = "^0.3"
[dev-dependencies.tempfile]
version = "^3.15"
[target.'cfg(target_os = "linux")'.dependencies.libc]
version = "^0.2"
[lints.clippy]
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
doc_markdown = "allow"
float_cmp = "allow"
large_enum_variant = "allow"
large_stack_arrays = "allow"
len_without_is_empty = "allow"
missing_errors_doc = "allow"
missing_fields_in_debug = "allow"
missing_panics_doc = "allow"
module_inception = "allow"
must_use_candidate = "allow"
mut_from_ref = "allow"
needless_pass_by_value = "allow"
return_self_not_must_use = "allow"
same_length_and_capacity = "allow"
similar_names = "allow"
too_many_arguments = "allow"
too_many_lines = "allow"
trivially_copy_pass_by_ref = "allow"
type_complexity = "allow"
unnecessary_wraps = "allow"
unused_async = "allow"
wildcard_imports = "allow"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[profile.release]
debug = 1