[package]
name        = "chameleon-pq"
version     = "0.5.2"
edition     = "2021"
rust-version = "1.80"
license     = "Apache-2.0"
description = "Experimental hybrid post-quantum VPN (Kyber768 + X25519 key agreement, hybrid Ed25519 + ML-DSA peer auth). UNAUDITED — for learning and reference, not for protecting real traffic."
readme      = "README.md"
repository  = "https://github.com/btdt1983/chameleon-pq"
homepage    = "https://github.com/btdt1983/chameleon-pq"
keywords    = ["vpn", "post-quantum", "cryptography", "kyber", "wireguard"]
categories  = ["cryptography", "network-programming", "command-line-utilities"]
exclude     = ["/.github"]

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

[[bin]]
name = "chameleon-pq"
path = "src/main.rs"

[dependencies]
# Crypto
ring              = "0.17"
aegis             = "0.9"
x25519-dalek      = { version = "2", features = ["static_secrets"] }
pqcrypto-kyber    = "0.8"
pqcrypto-mldsa    = "0.1"
pqcrypto-traits   = "0.3"
hkdf              = "0.12"
sha2              = "0.10"
zeroize           = { version = "1", features = ["derive"] }

# Async + networking
tokio             = { version = "1", features = ["full"] }
bytes             = "1"
# Batched UDP I/O (GSO/GRO on Linux, cross-platform + per-packet fallback).
quinn-udp         = "0.5"

# TUN interface (cross-platform; Windows needs wintun.dll alongside binary)
tun               = { version = "0.6", features = ["async"] }

# Config
serde             = { version = "1", features = ["derive"] }
toml              = "0.7"
clap = { version = "4", features = ["derive"] }

# Utilities
rayon             = "1"      # data-parallelle crypto over CPU-cores (Fase C)
rand              = "0.8"
thiserror         = "1"
parking_lot       = "0.12"
tracing           = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
anyhow             = "1"

[dev-dependencies]
# Voor #[tokio::test] loopback-tests van de gebatchte UDP-I/O.
tokio = { version = "1", features = ["macros", "rt-multi-thread", "net", "time"] }

[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.52", features = [
    "Win32_Foundation",
    "Win32_NetworkManagement_IpHelper",
]}
