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