Cargo.toml 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. [package]
  2. name = "d-oauth"
  3. version = "0.1.0"
  4. edition = "2024"
  5. description = "OAuth 2.1-only authorization server"
  6. license = "ISC"
  7. [lib]
  8. name = "d_oauth"
  9. path = "src/lib.rs"
  10. [[bin]]
  11. name = "d-oauth-server"
  12. path = "src/main.rs"
  13. [dependencies]
  14. argon2 = "0.6.0"
  15. askama = "0.16.1"
  16. axum = "0.8"
  17. axum-extra = { version = "0.12.6", features = ["cookie"] }
  18. backon = "1.6.0"
  19. base32 = "0.5.1"
  20. base64 = "0.23.1"
  21. base64ct = "1.8.3"
  22. clap = { version = "4.6.7", features = ["derive"] }
  23. config = "0.15.27"
  24. ed25519-dalek = { version = "2.2.0", default-features = false, features = ["zeroize"] }
  25. hmac = "0.13.0"
  26. hyper = "1.11.1"
  27. hyper-util = { version = "0.1.21", features = ["server-auto", "tokio", "service"] }
  28. jsonwebtoken = { version = "11.1.0", features = ["rust_crypto"] }
  29. password-hash = "0.6.1"
  30. p256 = { version = "0.13.2", default-features = false, features = ["ecdsa", "arithmetic"] }
  31. # TOTP enrollment QR: SVG-only (no `image` codecs), embedded inline in the
  32. # server-rendered setup page under a `script-src 'none'` policy.
  33. qrcode = { version = "0.14.1", default-features = false, features = ["svg"] }
  34. rand = { version = "0.10.3", features = ["std_rng"] }
  35. redis = { version = "1.7.1", features = ["tokio-comp", "connection-manager", "sentinel", "cluster-async", "tls-rustls", "tokio-rustls-comp", "tls-rustls-webpki-roots"] }
  36. # Task 22: the JAR validator fetches pre-registered `request_uri` objects
  37. # through an SSRF-guarded client (https-only, no redirects, size/timeout
  38. # caps). Pinned spec mirrors the existing dev entry; the dev copy is kept
  39. # so test-only users of reqwest keep compiling.
  40. reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-webpki-roots", "json"] }
  41. ring = "0.17"
  42. rustls = { version = "0.23.46", default-features = false, features = ["ring", "std", "tls12"] }
  43. rustls-pki-types = "1.15.1"
  44. secrecy = "0.10.3"
  45. serde = { version = "1.0.229", features = ["derive"] }
  46. serde_json = "1.0.151"
  47. sha2 = "0.11.0"
  48. sqlx = { version = "0.9", features = ["runtime-tokio", "postgres", "migrate", "macros", "uuid", "time", "tls-rustls-ring-webpki"] }
  49. subtle = "2.6.1"
  50. thiserror = "2.0.21"
  51. time = "0.3.55"
  52. tokio = { version = "1.53.2", features = ["full", "macros", "rt-multi-thread", "net", "signal", "time"] }
  53. tokio-rustls = { version = "0.26.6", default-features = false, features = ["ring", "tls12", "logging"] }
  54. totp-rs = "6.0.0"
  55. tower = { version = "0.5.3", features = ["util", "timeout", "limit", "load-shed"] }
  56. tower-http = { version = "0.7.1", features = ["cors", "limit"] }
  57. tracing = "0.1.44"
  58. tracing-subscriber = { version = "0.3.23", features = ["json", "env-filter"] }
  59. uuid = { version = "1.27.0", features = ["v4", "v7"] }
  60. validator = "0.21.0"
  61. x509-parser = "0.18.1"
  62. zeroize = "1.9.0"
  63. [dev-dependencies]
  64. http-body-util = "0.1.5"
  65. insta = "1.49.0"
  66. oauth2 = { version = "5.0.0", default-features = false, features = ["reqwest", "rustls-tls"] }
  67. proptest = "1.11.0"
  68. redis-test = "1.0.4"
  69. testcontainers = "0.27"
  70. testcontainers-modules = "0.15.0"
  71. tower = { version = "0.5.3", features = ["util"] }
  72. [lints.rust]
  73. unsafe_code = "forbid"
  74. [lints.clippy]
  75. unwrap_used = "deny"
  76. expect_used = "deny"
  77. panic = "deny"
  78. [profile.release]
  79. opt-level = 3
  80. lto = "thin"
  81. codegen-units = 1
  82. strip = "symbols"