trust-tasks-https 0.1.1

HTTPS transport binding for the Trust Tasks framework — typed client + axum-based server with bearer-auth identity, suitable for demos, mockups, and end-to-end testing.
[package]
name = "trust-tasks-https"
version = "0.1.1"
edition.workspace = true
rust-version = "1.95"
license.workspace = true
repository.workspace = true
description = "HTTPS transport binding for the Trust Tasks framework — typed client + axum-based server with bearer-auth identity, suitable for demos, mockups, and end-to-end testing."
keywords = ["trust-tasks", "https", "axum", "reqwest", "transport"]
categories = ["network-programming", "web-programming::http-server"]
publish = true

[features]
default = ["client", "server"]
client = ["dep:reqwest"]
server = ["dep:axum", "dep:tokio", "dep:tower"]
# Opt-in: JwtBearerAuth wraps an asymmetric-key JWT verifier into the
# Auth trait. Off by default because most callers ship an opaque-token
# directory (see BearerAuth) and don't want to pay for the jsonwebtoken
# crate's transitive deps.
jwt = ["dep:jsonwebtoken"]

[dependencies]
trust-tasks-rs = { path = "../trust-tasks-rs", version = "0.1" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
uuid = { version = "1", features = ["v4"] }
chrono = { version = "0.4", default-features = false, features = ["clock"] }

# Server (feature-gated)
axum = { version = "0.8", optional = true, default-features = false, features = [
  "http1",
  "json",
  "tokio",
] }
tower = { version = "0.5", optional = true, default-features = false }
tokio = { version = "1", optional = true, features = [
  "net",
  "rt",
  "macros",
  "sync",
] }

# Client (feature-gated)
reqwest = { version = "0.13", optional = true, default-features = false, features = [
  "json",
  "rustls",
] }

# JWT bearer-auth adapter (feature-gated under `jwt`).
# jsonwebtoken 10 split crypto into provider features — at least one of
# `rust_crypto` / `aws_lc_rs` MUST be enabled. We pick `aws_lc_rs`:
# the `rust_crypto` provider transitively pulls in `rsa` 0.9, which
# carries the open Marvin-Attack advisory RUSTSEC-2023-0071 with no
# patch available. `aws-lc-rs` is already in the workspace dep graph
# via rustls, so reusing it here costs nothing extra.
jsonwebtoken = { version = "10", optional = true, default-features = false, features = [
  "aws_lc_rs",
] }

[dev-dependencies]
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.13", default-features = false, features = [
  "json",
  "rustls",
] }
async-trait = "0.1"