[package]
name = "pktkit"
version = "0.1.2"
edition = "2021"
rust-version = "1.75"
authors = ["Karpeles Lab Inc."]
license = "MIT"
description = "Zero-copy L2/L3 packet handling toolkit. Frames, packets, hubs, adapters, NAT, virtual TCP/IP, WireGuard, OpenVPN, QEMU networking, TUN/TAP, AF_XDP — all gated behind opt-in cargo features."
repository = "https://github.com/KarpelesLab/pktkit-rs"
homepage = "https://github.com/KarpelesLab/pktkit-rs"
documentation = "https://docs.rs/pktkit"
readme = "README.md"
keywords = ["networking", "packet", "tcp", "wireguard", "tun"]
categories = ["network-programming", "virtualization"]
[features]
default = []
l2adapter = []
dhcp = []
qemu = []
tuntap = ["dep:libc"]
afxdp = ["dep:libc"]
vtcp = []
slirp = ["vtcp"]
vclient = ["vtcp"]
nat = ["vtcp"]
wg = [
"dep:curve25519-dalek",
"dep:chacha20poly1305",
"dep:blake2",
"dep:hmac",
"dep:zeroize",
"dep:rand_core",
"dep:getrandom",
]
ovpn = [
"dep:aes",
"dep:aes-gcm",
"dep:cbc",
"dep:hmac",
"dep:sha1",
"dep:sha2",
"dep:rsa",
"dep:rand_core",
"dep:getrandom",
"dep:rustls",
"dep:rustls-rustcrypto",
"dep:rustls-pemfile",
]
full = [
"l2adapter",
"dhcp",
"qemu",
"tuntap",
"afxdp",
"vtcp",
"slirp",
"vclient",
"nat",
"wg",
"ovpn",
]
[dependencies]
libc = { version = "0.2", optional = true }
curve25519-dalek = { version = "4", optional = true, default-features = false, features = ["alloc", "zeroize"] }
chacha20poly1305 = { version = "0.10", optional = true, default-features = false, features = ["alloc"] }
aes = { version = "0.8", optional = true }
aes-gcm = { version = "0.10", optional = true, default-features = false, features = ["alloc", "aes"] }
cbc = { version = "0.1", optional = true, features = ["alloc"] }
blake2 = { version = "0.10", optional = true }
sha1 = { version = "0.10", optional = true }
sha2 = { version = "0.10", optional = true }
hmac = { version = "0.12", optional = true }
rsa = { version = "0.9", optional = true, default-features = false }
zeroize = { version = "1", optional = true, default-features = false, features = ["zeroize_derive"] }
rand_core = { version = "0.6", optional = true }
getrandom = { version = "0.2", optional = true }
rustls = { version = "0.23", optional = true, default-features = false, features = ["std", "tls12"] }
rustls-rustcrypto = { version = "=0.0.2-alpha", optional = true }
rustls-pemfile = { version = "2", optional = true }
[dev-dependencies]
[lib]
name = "pktkit"
path = "src/lib.rs"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]