mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-03 03:47:42 +00:00
119 lines
4.4 KiB
TOML
119 lines
4.4 KiB
TOML
# Copyright 2024 RustFS Team
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
[package]
|
|
name = "rustfs-kms"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
version.workspace = true
|
|
homepage.workspace = true
|
|
description = "Key Management Service for RustFS, providing secure key generation, storage, and object encryption capabilities."
|
|
keywords = ["kms", "encryption", "key-management", "rustfs", "security"]
|
|
categories = ["cryptography", "web-programming", "authentication"]
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
hotpath.workspace = true
|
|
# Core dependencies
|
|
async-trait = { workspace = true }
|
|
tokio = { workspace = true, features = ["fs", "io-util", "macros", "rt-multi-thread", "sync", "time"] }
|
|
uuid = { workspace = true, features = ["serde", "v4", "fast-rng", "macro-diagnostics"] }
|
|
jiff = { workspace = true, features = ["serde"] }
|
|
serde = { workspace = true, features = ["derive"] }
|
|
serde_json = { workspace = true, features = ["raw_value"] }
|
|
tracing = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
# Operation metrics emitted by the retry policy engine (crate::policy).
|
|
metrics = { workspace = true }
|
|
|
|
# Cryptography
|
|
aes-gcm = { workspace = true, features = ["rand_core"] }
|
|
argon2 = { workspace = true }
|
|
chacha20poly1305 = { workspace = true }
|
|
rand = { workspace = true, features = ["serde"] }
|
|
base64 = { workspace = true }
|
|
hex = { workspace = true }
|
|
sha2 = { workspace = true }
|
|
subtle = { workspace = true }
|
|
zeroize = { workspace = true, features = ["derive"] }
|
|
|
|
# Configuration and storage
|
|
url = { workspace = true }
|
|
tempfile = { workspace = true }
|
|
|
|
# Caching
|
|
moka = { workspace = true, features = ["future"] }
|
|
|
|
# Additional dependencies
|
|
md-5 = { workspace = true }
|
|
arc-swap = { workspace = true }
|
|
rustfs-utils = { workspace = true }
|
|
rustfs-security-governance = { workspace = true }
|
|
# `EventName` for KMS audit records. A leaf crate with no rustfs dependencies,
|
|
# so the audit sink can live outside this crate without a second, drifting
|
|
# copy of the event vocabulary.
|
|
rustfs-s3-types = { workspace = true }
|
|
|
|
# HTTP client for Vault
|
|
reqwest = { workspace = true }
|
|
vaultrs = { workspace = true }
|
|
# vaultrs surfaces transport-level failures as wrapped rustify errors; the
|
|
# operation policy needs the concrete type to classify them for retry decisions.
|
|
rustify = { workspace = true }
|
|
tokio-util = { workspace = true }
|
|
|
|
# AWS KMS backend. Credentials come from the standard aws-config provider chain
|
|
# (environment, shared profile, IMDS/container roles); this crate never handles
|
|
# AWS credential material itself.
|
|
aws-config = { workspace = true }
|
|
aws-sdk-kms = { workspace = true, default-features = false, features = ["default-https-client", "rt-tokio"] }
|
|
# SdkError variants and raw HTTP status are needed to classify AWS failures for
|
|
# the operation policy's retry decisions.
|
|
aws-smithy-runtime-api = { workspace = true, features = ["http-1x"] }
|
|
aws-smithy-types = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
anyhow = { workspace = true }
|
|
# Debugging recorder for asserting emitted metrics in tests.
|
|
metrics-util = { version = "0.20", features = ["debugging"] }
|
|
insta = { workspace = true, features = ["yaml", "json"] }
|
|
tempfile = { workspace = true }
|
|
temp-env = { workspace = true }
|
|
# "net" backs the scripted loopback Vault used by the policy wiring tests.
|
|
tokio = { workspace = true, features = ["net", "test-util"] }
|
|
# Replays canned AWS KMS HTTP exchanges so the AWS backend tests stay offline.
|
|
aws-smithy-http-client = { workspace = true, default-features = false, features = ["test-util"] }
|
|
http = { workspace = true }
|
|
|
|
[features]
|
|
default = []
|
|
hotpath = [
|
|
"hotpath/hotpath",
|
|
"hotpath/tokio",
|
|
"hotpath/reqwest-0-13",
|
|
"rustfs-security-governance/hotpath",
|
|
"rustfs-utils/hotpath",
|
|
]
|
|
hotpath-alloc = [
|
|
"hotpath",
|
|
"hotpath/hotpath-alloc",
|
|
"rustfs-security-governance/hotpath-alloc",
|
|
"rustfs-utils/hotpath-alloc",
|
|
]
|
|
hotpath-cpu = ["hotpath", "hotpath/hotpath-cpu", "rustfs-security-governance/hotpath-cpu", "rustfs-utils/hotpath-cpu"]
|