content: [workspace]
  members = [
      "configuration_server",
      "demo/demo_index",
      "demo/demo_issuer",
      "demo/demo_relying_party",
      "demo/demo_utils",
      "flutter_api",
      "flutter_api/flutter_api_macros",
      "gba_hc_converter",
      "lib/android_attest",
      "lib/apple_app_attest",
      "lib/attestation_data",
      "lib/attestation_types",
      "lib/crypto",
      "lib/dcql",
      "lib/error_category",
      "lib/error_category/error_category_derive",
      "lib/hsm",
      "lib/http_utils",
      "lib/jwt",
      "lib/mdoc",
      "lib/openid4vc",
      "lib/openid4vc_server",
      "lib/sd_jwt",
      "lib/sd_jwt_vc_metadata",
      "lib/token_status_list",
      "lib/utils",
      "lib/wscd",
      "tests_integration",
      "update_policy/model",
      "update_policy/server",
      "wallet",
      "wallet/configuration",
      "wallet/entity",
      "wallet/migrations",
      "wallet/platform_support",
      "wallet_ca",
      "wallet_provider",
      "wallet_provider/database_settings",
      "wallet_provider/domain",
      "wallet_provider/migrations",
      "wallet_provider/persistence",
      "wallet_provider/service",
      "wallet_provider/wallet_account",
      "wallet_server/issuance_server",
      "wallet_server/issuance_server/migrations",
      "wallet_server/issuer_settings",
      "wallet_server/pid_issuer",
      "wallet_server/pid_issuer/migrations",
      "wallet_server/server_utils",
      "wallet_server/server_utils/migrations",
      "wallet_server/verification_server",
      "wallet_server/verification_server/migrations",
  ]
  exclude = ["uniffi-bindgen"]
  resolver = "2"
  
  [workspace.package]
  version = "0.4.0-dev"
  edition = "2024"
  rust-version = "1.90"
  
  [workspace.lints.rust]
  async_fn_in_trait = "allow"
  unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] }
  
  [workspace.lints.clippy]
  allow_attributes = "deny"
  cloned_instead_of_copied = "warn"
  expl_impl_clone_on_copy = "warn"
  explicit_into_iter_loop = "warn"
  explicit_iter_loop = "warn"
  needless_pass_by_value = "warn"
  redundant_allocation = "warn"
  trivially_copy_pass_by_ref = "warn"
  unnecessary_join = "warn"
  unnecessary_literal_bound = "warn"
  unnecessary_wraps = "warn"
  unused_async = "warn"
  unused_self = "warn"
  
  [workspace.dependencies]
  accept-language = "3.1.0"
  aes-gcm = "0.10.3"
  android_logger = { version = "0.14.1", default-features = false }
  anyhow = "1.0.95"
  askama = "0.14.0"
  askama_web = "0.14.0"
  assert-json-diff = "2.0.2"
  assert_cmd = "2.0.16"
  assert_fs = "1.1.2"
  assert_matches = "1.5.0"
  async-dropper = "0.3.1"
  async-trait = "0.1.86"
  axum = { version = "0.8.1", default-features = false }
  axum-extra = "0.10.0"
  axum-server = "0.7.1"
  axum_csrf = "0.11.0"
  backtrace = "0.3.74"
  base64 = "0.22.1"
  biscuit = "0.7.0"
  bitflags = "2.8.0"
  built = "0.7.5"
  bytes = "1.10.1"
  cfg-if = "1.0.0"
  cfg_eval = "0.1.2"
  chrono = { version = "0.4.39", default-features = false }
  ciborium = "0.2.2"
  clap = "4.5.28"
  clio = "0.3.5"
  config = { version = "0.15.7", default-features = false }
  const-decoder = "0.4.0"
  coset = "0.3.8"
  # Pin on newer version due to https://github.com/parallaxsecond/rust-cryptoki/pull/291
  cryptoki = { git = "https://github.com/parallaxsecond/rust-cryptoki.git", rev = "2765af619ed245f8787e46987483bf96179e30cd" }
  crypto-common = "0.1.6"
  cstr = "0.2.12"
  csv = "1.3.1"
  ctor = "0.2.9"
  dashmap = "6.1.0"
  data-url = "0.3.1"
  der = "0.7.9"
  derive_more = "2.0.1"
  dotenvy = "0.15.7"
  etag = "4.0.0"
  flate2 = "1.1.2"
  flutter_rust_bridge = { version = "2.11.1", default-features = false }
  futures = { version = "0.3.31", default-features = false }
  gcloud-auth = { version = "1.0.0", default-features = false }
  hex = "0.4.3"
  hex-literal = "0.4.1"
  http = "1.2.0"
  http-cache-reqwest = { version = "0.15.1", default-features = false }
  hmac = "0.12.1"
  indexmap = "2.7.1"
  int-enum = "1.1.2"
  itertools = "0.14.0"
  jni = "0.21.1"
  josekit = "0.10.1"
  jsonschema = { version = "0.29.0", default-features = false }
  jsonwebtoken = { version = "9.3.0", default-features = false }
  libc = "0.2.174"
  # held back by sea-orm / sqlx
  libsqlite3-sys = { version = "0.30.1", default-features = false }
  log = "0.4.25"
  mime = "0.3.17"
  mockall = "0.13.1"
  nom = "8.0.0"
  nonempty-collections = "1.0.0"
  num-bigint = "0.4.6"
  num-traits = "0.2.19"
  nutype = "0.6.0"
  oslog = { version = "0.2.0", default-features = false }
  p256 = { version = "0.13.2", default-features = false }
  passkey-types = "0.4.0"
  parking_lot = "0.12.3"
  pem = "3.0.4"
  postcard = { version = "1.1.1", default-features = false }
  predicates = { version = "3.1.3", default-features = false }
  proc-macro2 = "1.0.93"
  quick-xml = "0.38.0"
  quote = "1.0.38"
  # Using custom version that uses same cryptoki
  r2d2-cryptoki = { git = "https://github.com/middagj/r2d2-cryptoki", rev = "4ce05e39a5dfc8b54d6f6d74b5ace9ca9bffe40f" }
  # these two crates are held back by p256
  rand = "0.8.5"
  rand_core = "0.6.4"
  rasn = "0.24.0"
  rcgen = { version = "0.13.2", default-features = false }
  regex = "1.11.1"
  reqwest = { version = "0.12.12", default-features = false }
  reqwest-middleware = { version = "0.4.0", default-features = false }
  ring = "0.17.12"
  rpassword = "7.3.1"
  rsa = { version = "0.9.7", default-features = false }
  rstest = "0.24.0"
  # held back by sea-orm / sqlx via libsqlite3-sys
  rusqlite = "0.32.1"
  rustls = { version = "0.23.22", default-features = false }
  rustls-pki-types = "1.11.0"
  rustls-webpki = "0.102.8"
  sanitize-filename = "0.6.0"
  sea-orm = { version = "1.1.16", default-features = false }
  sea-orm-migration = { version = "1.1.16", default-features = false }
  sea-query = { version = "0.32.7", default-features = false }
  sec1 = "0.7.3"
  semver = "1.0.25"
  sentry = { version = "0.36.0", default-features = false }
  serde = "1.0.227"
  serde-aux = "4.5.0"
  serde_bytes = "0.11.15"
  serde_json = { version = "1.0.138", default-features = false }
  serde_repr = "0.1.19"
  serde_urlencoded = "0.7.1"
  serde_valid = "1.0.5"
  serde_with = "3.12.0"
  serial_test = "3.2.0"
  sha2 = "0.10.8"
  spki = "0.7.3"
  ssri = "9.2.0"
  strfmt = "0.2.4"
  strum = "0.26.3"
  syn = "2.0.98"
  tempfile = "3.16.0"
  thiserror = "2.0.11"
  time = "0.3.37"
  tokio = { version = "1.44.2", default-features = false }
  toml = "0.8.22"
  tower = { version = "0.5.2", default-features = false }
  tower-http = { version = "0.6.2", default-features = false }
  tracing = "0.1.41"
  tracing-subscriber = { version = "0.3.19", default-features = false }
  tracing-test = "0.2.5"
  trait-variant = "0.1.2"
  trybuild = "1.0.103"
  ts-rs = "11.0.1"
  uniffi = { version = "0.29.3", default-features = false }
  url = "2.5.4"
  uuid = "1.15.1"
  wiremock = "0.6.2"
  x509-cert = { version = "0.2.5", default-features = false }
  x509-parser = "0.17.0"
  yoke = "0.7.5"
  