typhoon-protocol 0.1.0

A sample implementation of TYPHOON protocol
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"
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