jwtiny 1.8.2

Minimal JWT validation library for build web services
Documentation
[package]
name = "jwtiny"
readme = "../../README.md"

authors.workspace = true
categories.workspace = true
description.workspace = true
documentation.workspace = true
edition.workspace = true
homepage.workspace = true
keywords.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
version = "1.8.2"

[dependencies]
# Core - minimal JSON serialization
miniserde = "0.1"

# Error handling
thiserror = "2.0"

# RSA algorithms (always enabled with aws-lc-rs backend)
aws-lc-rs = "1.15.2"

# Remote fetching (JWKS, OIDC discovery)
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }

# DER encoding for JWKS
spki = { version = "0.7", default-features = false, features = ["alloc"] }
der = { version = "0.7", default-features = false, features = ["alloc", "derive", "oid"] }

# URL parsing for validation
url = "2.5"

# Base64URL encoding/decoding (minimal features)
base64 = { version = "0.22", default-features = false, features = ["alloc"] }

# High-performance caching with lock-free reads and LRU eviction
moka = { version = "0.12", features = ["future"] }

jwtiny-derive = { path = "../jwtiny-derive" , version = "1.8.2" }

[dev-dependencies]
tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] }
# For RSA key generation in tests
rsa = { version = "0.9", features = ["std"] }
rand = "0.8"
# HTTP client for test helper (only used in tests)
# reqwest moved to dependencies (without json feature to avoid serde in main deps)
serde_json = "1.0"  # Only for tests - main library uses miniserde
# For benchmarking
criterion = { version = "0.5", features = ["html_reports"] }
# HTTP mocking for tests
mockito = "1.0"
# base64 moved to dependencies (0.22)
# For cross-validation testing
jsonwebtoken = "9.3"
async-trait = "0.1"
serde = { version = "1.0", features = ["derive"] }
reqwest = { version = "0.12", features = ["json", "rustls-tls"] }
# For ECDSA key generation in benchmarks
p256 = { version = "0.13", features = ["ecdsa", "pkcs8"] }
p384 = { version = "0.13", features = ["ecdsa", "pkcs8"] }
p521 = { version = "0.13", features = ["ecdsa", "pkcs8"] }
elliptic-curve = { version = "0.13", features = ["pkcs8"] }
# For Rocket integration benchmarks and examples
rocket = { version = "0.5", features = ["json"] }
# For framework examples
axum = "0.8.7"
poem = "2.0"
warp = "0.3"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }

[[bench]]
name = "rsa_validation"
harness = false
path = "../../benches/validation/rsa_validation.rs"

[[bench]]
name = "jwks_validation"
harness = false
path = "../../benches/remote/jwks_validation.rs"

[[bench]]
name = "token_size"
harness = false
path = "../../benches/validation/token_size.rs"

[[bench]]
name = "rocket_integration"
harness = false
path = "../../benches/remote/rocket_integration.rs"

[[example]]
name = "axum"
path = "../../examples/axum.rs"

[[example]]
name = "poem"
path = "../../examples/poem.rs"

[[example]]
name = "rocket"
path = "../../examples/rocket.rs"

[[example]]
name = "warp"
path = "../../examples/warp.rs"

[lints]
workspace = true