toolkit-zero 3.2.0

A feature-selective Rust utility toolkit — a growing collection of categorized utilities you can opt into via Cargo features, including only what you need.
Documentation
[package]
name = "toolkit-zero"
version = "3.2.0"
edition = "2024"
rust-version = "1.85"
authors = ["Soumyo Deep Gupta <deep.main.ac@gmail.com>"]
description = "A feature-selective Rust utility toolkit — a growing collection of categorized utilities you can opt into via Cargo features, including only what you need."
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"]
exclude = ["target/", ".github/", "*.d"]

[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 }
chrono  = { version = "0.4", default-features = false, features = ["clock", "std"], 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_urlencoded = { version = "0.7", optional = true }
tokio   = { version = "1.50.0", features = ["rt", "sync", "net"], optional = true }
warp    = { version = "0.4.2", optional = true }
webbrowser = { version = "0.8", optional = true }
zeroize = { version = "1", optional = true, features = ["derive"] }

[features]
default = []
serialization = ["dep:bincode", "dep:base64"]
socket = ["socket-server", "socket-client"]
socket-server = [
    "serialization",
    "dep:bytes",
    "dep:serde",
    "serde/derive",
    "dep:serde_urlencoded",
    "dep:warp",
    "warp/server",
    "dep:log",
    "dep:tokio",
    "tokio/rt",
    "tokio/net",
    "tokio/sync",
]
socket-client = [
    "serialization",
    "dep:reqwest",
    "reqwest/blocking",
    "reqwest/json",
    "reqwest/query",
    "dep:serde",
    "serde/derive",
    "dep:tokio",
    "tokio/rt",
    "dep:log",
]
location = ["location-native"]
location-native = ["socket-server", "dep:webbrowser", "dep:tokio", "tokio/rt", "tokio/sync", "dep:serde", "dep:rand"]
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"]
enc-timelock-keygen-input = ["dep:argon2", "dep:scrypt", "dep:zeroize", "dep:chrono", "dep:rand"]
enc-timelock-async-keygen-now = ["enc-timelock-keygen-now", "dep:tokio", "tokio/rt"]
enc-timelock-async-keygen-input = ["enc-timelock-keygen-input", "dep:tokio", "tokio/rt"]
backend-deps = []

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

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

[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