[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