toolkit-zero 4.0.2

A feature-selective Rust utility crate — a modular collection of opt-in utilities spanning encryption, HTTP networking, geolocation, and build-time fingerprinting. Enable only the features your project requires.
Documentation
[package]
name = "toolkit-zero"
version = "4.0.2"
edition = "2024"
rust-version = "1.85"
build = "build.rs"
authors = ["Soumyo Deep Gupta <deep.main.ac@gmail.com>"]
description = "A feature-selective Rust utility crate — a modular collection of opt-in utilities spanning encryption, HTTP networking, geolocation, and build-time fingerprinting. Enable only the features your project requires."
license = "MIT"
repository = "https://github.com/d33p0st/toolkit-zero.git"
homepage = "https://d33p0st.github.io/toolkit-zero/"
documentation = "https://docs.rs/toolkit-zero"
readme = "README.md"
keywords = ["encryption", "kdf", "timelock", "socket", "geolocation"]
categories = ["cryptography", "network-programming", "web-programming", "asynchronous", "authentication"]
include = [
    "src/**/*",
    "examples/**/*",
    "build.rs",
    "assets/chacha20poly1305.wasm",
    "Cargo.toml",
    "LICENSE",
    "README.md",
]

[badges]
maintenance = { status = "actively-developed" }

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
argon2  = { version = "0.5", optional = true, features = ["zeroize"] }
base64  = { version = "0.22", optional = true }
bincode = { version = "2", optional = true }
bytes   = { version = "1", optional = true }
chacha20poly1305 = { version = "0.10", optional = true }
chrono  = { version = "0.4", default-features = false, features = ["clock", "std"], optional = true }
http    = { version = "1", optional = true }
http-body-util = { version = "0.1", optional = true }
hyper   = { version = "1", features = ["server", "http1", "http2"], optional = true }
hyper-util = { version = "0.1", features = ["server", "server-auto", "server-graceful", "tokio"], optional = true }
log     = { version = "0.4.29", optional = true }
rand    = { version = "0.9", optional = true }
reqwest = { version = "0.13.2", optional = true, features = ["blocking", "json", "query"] }
scrypt      = { version = "0.11", optional = true }
serde       = { version = "1.0.228", optional = true }
serde_json  = { version = "1", optional = true }
sha2        = { version = "0.10", optional = true }
serde_urlencoded = { version = "0.7", optional = true }
tokio   = { version = "1.50.0", features = ["full"], optional = true }
webbrowser = { version = "0.8", optional = true }
zeroize = { version = "1", optional = true, features = ["derive"] }
toolkit-zero-macros = { path = "toolkit-zero-macros", version = "1.0.0", optional = true }

[features]
default = []
serialization = ["dep:bincode", "dep:base64", "dep:zeroize", "zeroize/derive", "dep:sha2", "dep:rand", "dep:chacha20poly1305", "dep:toolkit-zero-macros", "toolkit-zero-macros/serialization"]
socket = ["socket-server", "socket-client"]
socket-server = [
    "serialization",
    "dep:bytes",
    "dep:serde",
    "serde/derive",
    "dep:serde_json",
    "dep:serde_urlencoded",
    "dep:http",
    "dep:http-body-util",
    "dep:hyper",
    "dep:hyper-util",
    "dep:log",
    "dep:tokio",
    "tokio/rt",
    "tokio/net",
    "tokio/sync",
    "dep:toolkit-zero-macros",
    "toolkit-zero-macros/socket-server",
]
socket-client = [
    "serialization",
    "dep:reqwest",
    "reqwest/blocking",
    "reqwest/json",
    "reqwest/query",
    "dep:serde",
    "serde/derive",
    "dep:tokio",
    "tokio/rt",
    "dep:log",
    "dep:toolkit-zero-macros",
    "toolkit-zero-macros/socket-client",
]
location = ["location-browser"]
location-browser = ["socket-server", "dep:webbrowser", "dep:tokio", "tokio/rt", "tokio/sync", "dep:serde", "dep:rand", "dep:toolkit-zero-macros", "toolkit-zero-macros/location-browser"]
encryption = ["enc-timelock-keygen-now", "enc-timelock-keygen-input", "enc-timelock-async-keygen-now", "enc-timelock-async-keygen-input"]
enc-timelock-keygen-now = ["dep:argon2", "dep:scrypt", "dep:zeroize", "dep:chrono", "dep:rand", "dep:toolkit-zero-macros", "toolkit-zero-macros/enc-timelock-keygen-now"]
enc-timelock-keygen-input = ["dep:argon2", "dep:scrypt", "dep:zeroize", "dep:chrono", "dep:rand", "dep:toolkit-zero-macros", "toolkit-zero-macros/enc-timelock-keygen-input"]
enc-timelock-async-keygen-now = ["enc-timelock-keygen-now", "dep:tokio", "tokio/rt", "toolkit-zero-macros/enc-timelock-async-keygen-now"]
enc-timelock-async-keygen-input = ["enc-timelock-keygen-input", "dep:tokio", "tokio/rt", "toolkit-zero-macros/enc-timelock-async-keygen-input"]
dependency-graph-build = ["dep:serde_json", "dep:sha2"]
dependency-graph-capture = ["dep:serde_json", "dep:toolkit-zero-macros", "toolkit-zero-macros/dep-graph-capture"]
backend-deps = []

[[example]]
name = "timelock_round_trip"
required-features = ["encryption"]

[[example]]
name = "seal_open"
required-features = ["serialization"]

[[example]]
name = "socket_client_server"
required-features = ["socket"]

[[example]]
name = "location_browser"
required-features = ["location"]

[[example]]
name = "socket_macros"
required-features = ["socket"]

[[example]]
name = "serialization_macros"
required-features = ["serialization"]

[[example]]
name = "browser_macro"
required-features = ["location"]

[workspace]
members = ["testcrate","toolkit-zero-macros"]

[profile.release]
opt-level       = 3        # maximum optimisation
lto             = "fat"    # whole-program LTO — dead code eliminated, attack surface reduced
codegen-units   = 1        # single codegen unit → best inlining + hardest to reverse
panic           = "abort"  # no unwinding on panic; prevents intermediate state leakage
overflow-checks = true     # catch integer overflows even in release (security-critical)
strip           = "debuginfo"  # strip DWARF info; keep symbol names for usable stack traces