[package]
name = "skyauth"
version = "0.3.4"
edition = "2021"
rust-version = "1.88"
authors = ["Mike <mike@example.com>"]
description = "High-assurance, formally verified OAuth 2.1 and RFC 9449 DPoP authentication engine for the AT Protocol (Bluesky)"
license = "MIT OR Apache-2.0"
repository = "https://github.com/mike10010100/skyauth"
homepage = "https://github.com/mike10010100/skyauth"
documentation = "https://docs.rs/skyauth"
keywords = ["atproto", "bluesky", "oauth", "dpop", "pkce"]
categories = ["authentication", "cryptography", "web-programming"]
readme = "README.md"
[lib]
name = "skyauth"
path = "src/lib.rs"
[dependencies]
p256 = { version = "0.13", default-features = false, features = ["ecdsa", "std", "pkcs8", "pem"] }
sha2 = { version = "0.10", default-features = false }
hmac = { version = "0.12", default-features = false }
subtle = { version = "2.6", default-features = false }
base64 = { version = "0.22", default-features = false, features = ["std"] }
rand = { version = "0.8", default-features = false, features = ["std", "std_rng"] }
rand_core = { version = "0.6", default-features = false, features = ["std"] }
zeroize = { version = "1.8", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_urlencoded = "0.7"
url = { version = "2.5", features = ["serde"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
tokio = { version = "1.40", default-features = false, features = ["rt-multi-thread", "net", "time", "sync", "macros"] }
tokio-util = "0.7"
parking_lot = "0.12"
ahash = "0.8"
thiserror = "1.0"
tracing = "0.1"
http = "1.1"
axum = { version = "0.7", optional = true, default-features = false, features = ["json", "query", "tokio"] }
actix-web = { version = "4.9", optional = true, default-features = false }
tower = { version = "0.5", optional = true, default-features = false, features = ["util"] }
tower-service = { version = "0.3", optional = true }
tower-layer = { version = "0.3", optional = true }
aes-gcm = { version = "0.10", default-features = false, features = ["aes", "alloc", "getrandom"] }
[features]
default = []
axum = ["dep:axum"]
actix = ["dep:actix-web"]
tower = ["dep:tower", "dep:tower-service", "dep:tower-layer"]
[dev-dependencies]
proptest = "1.5"
wiremock = "0.6"
jsonschema = "0.26"
hex = "0.4"
serde_urlencoded = "0.7"
reqwest = { version = "0.12", default-features = false, features = ["json"] }
http-body-util = "0.1"
[lints.rust]
unsafe_code = "forbid"
missing_docs = "deny"
rust_2018_idioms = { level = "deny", priority = -1 }
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(kani)', 'cfg(verus)', 'cfg(verus_keep_ghost)'] }
[lints.clippy]
all = { level = "deny", priority = -1 }