# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.88"
name = "basil-core"
version = "0.7.1"
authors = ["info@openbasil.org"]
build = false
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Basil daemon core, broker services, transport, and offline admin command implementations."
homepage = "https://github.com/openbasil/basil"
documentation = "https://docs.rs/basil-core"
readme = "README.md"
keywords = [
    "basil",
    "vault",
    "broker",
    "cryptography",
    "kms",
]
categories = [
    "cryptography",
    "network-programming",
    "authentication",
]
license = "Apache-2.0"
repository = "https://github.com/openbasil/basil"

[features]
aws-kms = [
    "dep:aws-config",
    "dep:aws-sdk-kms",
]
db-keystore = [
    "keystore-backend",
    "basil-keystore-backend/db-keystore",
]
default = [
    "http",
    "unlock-age-yubikey",
    "unlock-bip39",
]
gcp-kms = [
    "dep:google-cloud-kms",
    "dep:google-cloud-gax",
]
http = ["dep:axum"]
http-tls = [
    "http",
    "dep:hyper",
    "dep:hyper-util",
    "dep:tokio-rustls",
]
keystore-backend = ["dep:basil-keystore-backend"]
live-e2e = []
onepassword = [
    "keystore-backend",
    "basil-keystore-backend/onepassword",
]
otlp = [
    "dep:opentelemetry_sdk",
    "dep:opentelemetry-otlp",
    "dep:opentelemetry-appender-tracing",
]
tpm2 = ["dep:hex"]
unlock-age-yubikey = []
unlock-bip39 = ["dep:bip39"]
unlock-tpm = ["dep:tpm2-protocol"]

[lib]
name = "basil_core"
path = "src/lib.rs"

[dependencies.aes]
version = "0.8"
features = ["zeroize"]
default-features = false

[dependencies.aes-gcm]
version = "0.10"
features = [
    "aes",
    "alloc",
    "zeroize",
]
default-features = false

[dependencies.aes-kw]
version = "0.3"

[dependencies.age]
version = "0.11"
features = ["plugin"]

[dependencies.anyhow]
version = "1"

[dependencies.arc-swap]
version = "1.9.2"

[dependencies.argon2]
version = "0.5"

[dependencies.async-trait]
version = "0.1"

[dependencies.aws-config]
version = "=1.8.18"
features = ["rt-tokio"]
optional = true
default-features = false

[dependencies.aws-sdk-kms]
version = "=1.111.0"
features = [
    "rustls",
    "rt-tokio",
    "behavior-version-latest",
]
optional = true
default-features = false

[dependencies.axum]
version = "0.8.9"
features = [
    "http1",
    "tokio",
]
optional = true
default-features = false

[dependencies.base64]
version = "0.22"
features = [
    "alloc",
    "std",
]
default-features = false

[dependencies.basil-cose]
version = "0.7.1"

[dependencies.basil-keystore-backend]
version = "0.7.1"
optional = true

[dependencies.basil-nats]
version = "0.7.1"

[dependencies.basil-proto]
version = "0.7.1"

[dependencies.bip39]
version = "2"
optional = true

[dependencies.chacha20poly1305]
version = "0.10"
default-features = false

[dependencies.clap]
version = "4"
features = [
    "derive",
    "env",
]

[dependencies.ed25519-dalek]
version = "2"
features = ["zeroize"]
default-features = false

[dependencies.futures]
version = "0.3"

[dependencies.getrandom]
version = "0.4.3"
default-features = false

[dependencies.google-cloud-gax]
version = "0.19.2"
optional = true

[dependencies.google-cloud-kms]
version = "=0.6.0"
features = [
    "auth",
    "rustls-tls",
]
optional = true
default-features = false

[dependencies.hex]
version = "0.4"
optional = true

[dependencies.hkdf]
version = "0.12"
default-features = false

[dependencies.hyper]
version = "1"
features = [
    "http1",
    "server",
]
optional = true
default-features = false

[dependencies.hyper-util]
version = "0.1"
features = [
    "http1",
    "server-auto",
    "service",
    "tokio",
]
optional = true
default-features = false

[dependencies.jsonwebtoken]
version = "10.4.0"
features = ["rust_crypto"]

[dependencies.ml-dsa]
version = "0.1.1"
features = ["zeroize"]

[dependencies.ml-kem]
version = "0.3"
features = [
    "getrandom",
    "zeroize",
]

[dependencies.opentelemetry-appender-tracing]
version = "0.32"
optional = true

[dependencies.opentelemetry-otlp]
version = "0.32"
features = [
    "logs",
    "http-proto",
    "http-json",
    "grpc-tonic",
    "reqwest-blocking-client",
]
optional = true

[dependencies.opentelemetry_sdk]
version = "0.32"
features = ["logs"]
optional = true

[dependencies.p256]
version = "0.13"
features = [
    "ecdsa",
    "pem",
    "pkcs8",
    "std",
]
default-features = false

[dependencies.p384]
version = "0.13"
features = ["ecdsa"]

[dependencies.p521]
version = "0.13"
features = ["ecdsa"]

[dependencies.percent-encoding]
version = "2.3"

[dependencies.prost]
version = "0.14.4"

[dependencies.prost-types]
version = "0.14.4"

[dependencies.rand]
version = "0.8"

[dependencies.rand_core]
version = "0.10.1"

[dependencies.reqwest]
version = "0.13.4"
features = [
    "json",
    "rustls-no-provider",
]
default-features = false

[dependencies.rsa]
version = "0.9"
features = ["pem"]

[dependencies.rustix]
version = "1"
features = [
    "fs",
    "process",
]

[dependencies.rustls]
version = "0.23.41"
features = [
    "ring",
    "std",
]
default-features = false

[dependencies.serde]
version = "1"
features = [
    "alloc",
    "derive",
    "std",
]
default-features = false

[dependencies.serde_json]
version = "1"
features = [
    "alloc",
    "arbitrary_precision",
    "std",
]
default-features = false

[dependencies.serde_yaml]
version = "0.9"

[dependencies.sha2]
version = "0.10"
default-features = false

[dependencies.thiserror]
version = "2.0.18"

[dependencies.tokio]
version = "1"
features = [
    "rt-multi-thread",
    "net",
    "macros",
    "io-util",
    "time",
    "signal",
    "sync",
]

[dependencies.tokio-rustls]
version = "0.26"
features = ["ring"]
optional = true
default-features = false

[dependencies.tokio-stream]
version = "0.1"
features = ["net"]

[dependencies.toml]
version = "1.1.2"

[dependencies.tonic]
version = "0.14.6"

[dependencies.tpm2-protocol]
version = "=1.0.0"
optional = true

[dependencies.tracing]
version = "0.1.44"

[dependencies.tracing-appender]
version = "0.2.5"

[dependencies.tracing-journald]
version = "0.3"

[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]

[dependencies.url]
version = "2.5"

[dependencies.uuid]
version = "1"
features = ["v4"]

[dependencies.x25519-dalek]
version = "2"
features = [
    "static_secrets",
    "zeroize",
]
default-features = false

[dependencies.zero-secrets]
version = "0.2.0"

[dependencies.zeroize]
version = "1"
features = [
    "derive",
    "alloc",
]
default-features = false

[dev-dependencies.basil]
version = "0.7.1"

[dev-dependencies.basil-cose]
version = "0.7.1"
features = ["fixtures"]

[dev-dependencies.hyper-util]
version = "0.1"
features = [
    "http1",
    "server-auto",
    "service",
    "tokio",
]
default-features = false

[dev-dependencies.minicbor]
version = "2.2.2"
features = ["alloc"]
default-features = false

[dev-dependencies.nkeys]
version = "0.4"
features = ["xkeys"]

[dev-dependencies.tower]
version = "0.5.3"

[lints.clippy.expect_used]
level = "deny"
priority = 0

[lints.clippy.get_unwrap]
level = "deny"
priority = 0

[lints.clippy.indexing_slicing]
level = "deny"
priority = 0

[lints.clippy.missing_errors_doc]
level = "allow"
priority = 0

[lints.clippy.nursery]
level = "deny"
priority = -1

[lints.clippy.panic]
level = "deny"
priority = 0

[lints.clippy.panic_in_result_fn]
level = "deny"
priority = 0

[lints.clippy.pedantic]
level = "deny"
priority = -1

[lints.clippy.todo]
level = "deny"
priority = 0

[lints.clippy.unimplemented]
level = "deny"
priority = 0

[lints.clippy.unreachable]
level = "deny"
priority = 0

[lints.clippy.unwrap_used]
level = "deny"
priority = 0

[lints.rust.unsafe_code]
level = "forbid"
priority = 1
