# 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.85.0"
name = "ant-quic"
version = "0.14.161"
build = false
exclude = [
    ".github/",
    ".githooks/",
    ".serena/",
    ".codecov.yml",
    ".DS_Store",
    "*.DS_Store",
    "release-build/",
    "docs/rfcs/*.pdf",
    "docs/diagrams/",
    "docs/planning/",
    "target/",
    "scripts/",
    "tests/data/large_files/",
    "benches/",
    "examples/chat_demo.rs",
    "examples/dashboard_demo.rs",
    "examples/simple_chat.rs",
    "examples/nat_simulation.rs",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "QUIC transport protocol with advanced NAT traversal for P2P networks"
readme = "README.md"
keywords = [
    "quic",
    "nat-traversal",
    "p2p",
    "autonomi",
    "networking",
]
categories = [
    "network-programming",
    "asynchronous",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dirvine/ant-quic"

[package.metadata.docs.rs]
features = [
    "rustls-aws-lc-rs",
    "platform-verifier",
    "log",
]

[package.metadata.cargo-machete]
ignored = [
    "proptest-derive",
    "rust-embed",
    "tokio-tungstenite",
    "x25519-dalek",
]

[features]
__qlog = ["dep:qlog"]
arbitrary = ["dep:arbitrary"]
aws-lc-rs = [
    "dep:aws-lc-rs",
    "aws-lc-rs?/aws-lc-sys",
    "aws-lc-rs?/prebuilt-nasm",
]
bloom = []
default = [
    "platform-verifier",
    "network-discovery",
    "runtime-tokio",
    "rustls-aws-lc-rs",
]
fuzzing = ["arbitrary"]
log = ["tracing/log"]
low_memory = []
network-discovery = [
    "dep:socket2",
    "dep:nix",
]
platform-verifier = ["dep:rustls-platform-verifier"]
prometheus = [
    "dep:prometheus",
    "dep:warp",
]
property_testing = [
    "proptest",
    "proptest-derive",
]
runtime-smol = [
    "dep:smol",
    "dep:async-io",
]
runtime-tokio = []
rustls-aws-lc-rs = [
    "dep:rustls",
    "rustls?/aws-lc-rs",
    "aws-lc-rs",
]
test-utils = []
trace = []
trace-full = ["trace"]
web-dashboard = [
    "dep:rust-embed",
    "dep:tokio-tungstenite",
]

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

[[bin]]
name = "ant-quic"
path = "src/bin/ant-quic.rs"

[[bin]]
name = "interop-test"
path = "src/bin/interop-test.rs"

[[bin]]
name = "test-public-endpoints"
path = "src/bin/test_public_endpoints.rs"

[[bin]]
name = "e2e-test-node"
path = "src/bin/e2e-test-node.rs"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[[test]]
name = "long"
path = "tests/long/main.rs"
harness = false

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[[test]]
name = "property_tests"
path = "tests/property_tests/main.rs"

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

[[test]]
name = "quick"
path = "tests/quick/main.rs"

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

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

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

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

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

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

[[test]]
name = "standard"
path = "tests/standard/main.rs"

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

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

[dependencies.anyhow]
version = "1"

[dependencies.arbitrary]
version = "1.3"
features = ["derive"]
optional = true

[dependencies.async-io]
version = "2.0"
optional = true

[dependencies.aws-lc-rs]
version = "1.12"
features = ["unstable"]
optional = true
default-features = false

[dependencies.bytes]
version = "1"

[dependencies.chrono]
version = "0.4"
features = ["serde"]

[dependencies.clap]
version = "4"
features = ["derive"]

[dependencies.dashmap]
version = "6"

[dependencies.dirs]
version = "5.0"

[dependencies.futures-util]
version = "0.3"

[dependencies.hex]
version = "0.4"

[dependencies.indexmap]
version = "2.0"

[dependencies.keyring]
version = "3"

[dependencies.lru-slab]
version = "0.1.2"

[dependencies.nix]
version = "0.29"
features = [
    "resource",
    "net",
]
optional = true

[dependencies.once_cell]
version = "1.21"

[dependencies.parking_lot]
version = "0.12"

[dependencies.pin-project-lite]
version = "0.2"

[dependencies.prometheus]
version = "0.14"
optional = true

[dependencies.proptest]
version = "1.5"
features = ["std"]
optional = true

[dependencies.proptest-derive]
version = "0.5"
optional = true

[dependencies.qlog]
version = "0.13"
optional = true

[dependencies.quinn-udp]
version = "0.5"
features = [
    "log",
    "tracing",
]

[dependencies.rand]
version = "0.8"

[dependencies.rcgen]
version = "0.14"

[dependencies.regex]
version = "1.11"

[dependencies.reqwest]
version = "0.12"
features = [
    "json",
    "rustls-tls",
]
default-features = false

[dependencies.rust-embed]
version = "8.0"
optional = true

[dependencies.rustc-hash]
version = "2"

[dependencies.rustls]
version = "0.23.35"
features = ["std"]
optional = true
default-features = false

[dependencies.rustls-native-certs]
version = "0.8"

[dependencies.rustls-pemfile]
version = "2.0"

[dependencies.rustls-platform-verifier]
version = "0.6"
optional = true

[dependencies.rustls-post-quantum]
version = "0.2"
features = ["aws-lc-rs-unstable"]

[dependencies.saorsa-pqc]
version = "0.3.5"

[dependencies.serde]
version = "1"
features = ["derive"]

[dependencies.serde_json]
version = "1"

[dependencies.serde_yaml]
version = "0.9"

[dependencies.sha2]
version = "0.10"

[dependencies.slab]
version = "0.4.11"

[dependencies.smol]
version = "2.0"
optional = true

[dependencies.socket2]
version = "0.5"
optional = true

[dependencies.thiserror]
version = "2.0.3"

[dependencies.time]
version = "0.3"

[dependencies.tinyvec]
version = "1.1"
features = ["alloc"]

[dependencies.tokio]
version = "1.28.1"
features = ["full"]

[dependencies.tokio-tungstenite]
version = "0.23"
optional = true

[dependencies.tokio-util]
version = "0.7"

[dependencies.tracing]
version = "0.1.10"
features = [
    "std",
    "attributes",
    "log",
]
default-features = false

[dependencies.tracing-subscriber]
version = "0.3.0"
features = [
    "env-filter",
    "fmt",
    "ansi",
    "time",
    "local-time",
    "json",
]
default-features = false

[dependencies.unicode-width]
version = "=0.2.0"

[dependencies.uuid]
version = "1.0"
features = [
    "v4",
    "serde",
]

[dependencies.warp]
version = "0.3"
optional = true

[dependencies.x25519-dalek]
version = "2.0"
features = ["static_secrets"]

[dependencies.zeroize]
version = "1.8"
features = ["derive"]

[dev-dependencies.anyhow]
version = "1"

[dev-dependencies.assert_matches]
version = "1.1"

[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]

[dev-dependencies.hex-literal]
version = "0.4"

[dev-dependencies.lazy_static]
version = "1"

[dev-dependencies.proptest]
version = "1.5"
features = ["std"]

[dev-dependencies.proptest-derive]
version = "0.5"

[dev-dependencies.quickcheck]
version = "1.0"

[dev-dependencies.quickcheck_macros]
version = "1.0"

[dev-dependencies.rand_pcg]
version = "0.3"

[dev-dependencies.rcgen]
version = "0.14"

[dev-dependencies.serde_json]
version = "1"

[dev-dependencies.serde_yaml]
version = "0.9"

[dev-dependencies.tempfile]
version = "3"

[dev-dependencies.tokio]
version = "1.36"
features = ["full"]

[dev-dependencies.tracing-subscriber]
version = "0.3.0"
features = [
    "env-filter",
    "fmt",
    "ansi",
    "time",
    "local-time",
    "json",
]
default-features = false

[dev-dependencies.webpki-roots]
version = "1.0"

[target.'cfg(target_os = "linux")'.dependencies.hex]
version = "0.4"

[target.'cfg(target_os = "linux")'.dependencies.sha2]
version = "0.10"

[target.'cfg(target_os = "macos")'.dependencies.core-foundation]
version = "0.9"

[target.'cfg(target_os = "macos")'.dependencies.system-configuration]
version = "0.6"

[target."cfg(unix)".dependencies.libc]
version = "0.2"

[target."cfg(windows)".dependencies.windows]
version = "0.58"
features = [
    "Win32_Foundation",
    "Win32_NetworkManagement_IpHelper",
    "Win32_NetworkManagement_Ndis",
    "Win32_Networking_WinSock",
    "Win32_System",
    "Win32_System_IO",
    "Win32_System_Threading",
]

[lints.clippy.all]
level = "warn"
priority = -1

[lints.clippy.arithmetic_side_effects]
level = "allow"
priority = 2

[lints.clippy.complexity]
level = "warn"
priority = 0

[lints.clippy.correctness]
level = "deny"
priority = 1

[lints.clippy.enum_variant_names]
level = "allow"
priority = 2

[lints.clippy.excessive_nesting]
level = "allow"
priority = 2

[lints.clippy.expect_used]
level = "deny"
priority = 1

[lints.clippy.indexing_slicing]
level = "allow"
priority = 2

[lints.clippy.missing_errors_doc]
level = "allow"
priority = 2

[lints.clippy.missing_panics_doc]
level = "allow"
priority = 2

[lints.clippy.module_name_repetitions]
level = "allow"
priority = 2

[lints.clippy.must_use_candidate]
level = "allow"
priority = 2

[lints.clippy.pedantic]
level = "allow"
priority = -1

[lints.clippy.perf]
level = "warn"
priority = 0

[lints.clippy.print_stderr]
level = "allow"
priority = 2

[lints.clippy.print_stdout]
level = "allow"
priority = 2

[lints.clippy.restriction]
level = "allow"
priority = -1

[lints.clippy.suspicious]
level = "warn"
priority = 0

[lints.clippy.unwrap_used]
level = "deny"
priority = 1

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
    "cfg(fuzzing)",
    "cfg(wasm_browser)",
    'cfg(feature, values("arbitrary", "__qlog", "bloom", "low_memory", "prometheus", "runtime-smol"))',
]

[profile.release]
lto = "thin"
debug = 0
split-debuginfo = "off"
strip = "symbols"
