uselesskey 0.3.0

Deterministic cryptographic key and certificate fixtures for Rust tests. Seed-stable, cached, scanner-safe.
Documentation
[package]
name = "uselesskey"
version = "0.3.0"
edition.workspace = true
license.workspace = true
rust-version.workspace = true
repository.workspace = true
description = "Deterministic cryptographic key and certificate fixtures for Rust tests. Seed-stable, cached, scanner-safe."
categories.workspace = true
keywords = ["test", "fixtures", "crypto", "deterministic", "x509"]
readme = "README.md"
exclude = ["fuzz/**", "corpus/**", "**/*.der", "**/*.pem"]
homepage.workspace = true
documentation = "https://docs.rs/uselesskey"
authors.workspace = true

[badges]
github-actions = { repository = "EffortlessMetrics/uselesskey", workflow = "CI" }
maintenance = { status = "actively-developed" }

[package.metadata.docs.rs]
features = ["full"]

[dependencies]
uselesskey-core = { path = "../uselesskey-core", version = "0.3.0" }

# Key type crates - all optional
uselesskey-jwk = { path = "../uselesskey-jwk", version = "0.3.0", optional = true }
uselesskey-rsa = { path = "../uselesskey-rsa", version = "0.3.0", optional = true }
uselesskey-ecdsa = { path = "../uselesskey-ecdsa", version = "0.3.0", optional = true }
uselesskey-ed25519 = { path = "../uselesskey-ed25519", version = "0.3.0", optional = true }
uselesskey-hmac = { path = "../uselesskey-hmac", version = "0.3.0", optional = true }
uselesskey-token = { path = "../uselesskey-token", version = "0.3.0", optional = true }
uselesskey-pgp = { path = "../uselesskey-pgp", version = "0.3.0", optional = true }
uselesskey-x509 = { path = "../uselesskey-x509", version = "0.3.0", optional = true }

[features]
default = []

# Key types (additive)
rsa = ["dep:uselesskey-rsa"]
ecdsa = ["dep:uselesskey-ecdsa"]
ed25519 = ["dep:uselesskey-ed25519"]
hmac = ["dep:uselesskey-hmac"]
token = ["dep:uselesskey-token"]
pgp = ["dep:uselesskey-pgp"]

# X.509 certificates (implies rsa for now)
x509 = ["dep:uselesskey-x509", "rsa", "uselesskey-x509/jwk"]

# Output formats (pass-through to enabled key crates)
jwk = [
    "dep:uselesskey-jwk",
    "uselesskey-rsa?/jwk",
    "uselesskey-ecdsa?/jwk",
    "uselesskey-ed25519?/jwk",
    "uselesskey-hmac?/jwk",
]

# Convenience bundles
all-keys = ["rsa", "ecdsa", "ed25519", "hmac", "pgp"]
full = ["all-keys", "token", "x509", "jwk"]

[dev-dependencies]
tempfile.workspace = true
proptest.workspace = true
criterion.workspace = true
insta = { workspace = true }
pem = "3"
x509-parser = "0.18"
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
jsonwebtoken = { workspace = true, features = ["rust_crypto"] }
uselesskey-jsonwebtoken = { path = "../uselesskey-jsonwebtoken", version = "0.3.0", features = ["all"] }
uselesskey-rustls = { path = "../uselesskey-rustls", version = "0.3.0", features = ["all", "tls-config", "rustls-ring"] }
rustls-pki-types.workspace = true

[[bench]]
name = "keygen"
harness = false
required-features = ["full"]