kingfisher/crates/kingfisher-scanner/Cargo.toml

198 lines
5.4 KiB
TOML

[package]
name = "kingfisher-scanner"
version = "0.1.0"
description = "High-level scanning API for Kingfisher secret scanner"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
homepage.workspace = true
repository.workspace = true
publish = false
[features]
default = []
# Core validation support (includes HTTP validation)
validation = ["validation-http"]
# HTTP-based validation for API tokens
validation-http = [
"dep:reqwest",
"dep:tokio",
"dep:liquid",
"dep:liquid-core",
"dep:quick-xml",
"dep:sha1",
]
# AWS credential validation
validation-aws = [
"validation-http",
"dep:aws-config",
"dep:aws-credential-types",
"dep:aws-sdk-iam",
"dep:aws-sdk-sts",
"dep:aws-types",
"dep:aws-smithy-http-client",
"dep:aws-smithy-runtime-api",
"dep:aws-smithy-types",
"dep:base32",
"dep:byteorder",
"dep:rand",
]
# Azure credential validation
validation-azure = [
"validation-http",
"dep:chrono",
"dep:hmac",
"dep:sha2",
]
# Coinbase credential validation
validation-coinbase = [
"validation-http",
"dep:chrono",
"dep:ed25519-dalek",
"dep:p256",
"dep:rand",
"dep:hex",
]
# GCP credential validation
validation-gcp = [
"validation-http",
"dep:chrono",
"dep:pem",
"dep:percent-encoding",
"dep:ring",
"dep:tokio",
]
# JWT validation
validation-jwt = [
"validation-http",
"dep:chrono",
"dep:ipnet",
"dep:jsonwebtoken",
"dep:tokio",
]
# Database validation (MongoDB/MySQL/Postgres/JDBC)
validation-database = [
"validation-http",
"dep:bson",
"dep:mongodb",
"dep:mysql_async",
"dep:tokio-postgres",
"dep:tokio-postgres-rustls",
"dep:rustls",
"dep:rustls-native-certs",
"dep:url",
"dep:sha1",
]
# All validation features
validation-all = [
"validation",
"validation-aws",
"validation-azure",
"validation-coinbase",
"validation-gcp",
"validation-jwt",
"validation-database",
]
[dependencies]
# Internal dependencies
kingfisher-core = { path = "../kingfisher-core" }
kingfisher-rules = { path = "../kingfisher-rules" }
# Error handling
anyhow.workspace = true
thiserror.workspace = true
# Serialization
serde.workspace = true
serde_json.workspace = true
schemars.workspace = true
# Regex
regex.workspace = true
# Hashing
xxhash-rust.workspace = true
# Vectorscan
vectorscan-rs.workspace = true
# Collections
smallvec.workspace = true
rustc-hash.workspace = true
# Concurrency
parking_lot.workspace = true
thread_local = "1.1"
once_cell.workspace = true
crossbeam-skiplist = "0.1.3"
# HTTP status codes
http.workspace = true
# Byte strings
bstr.workspace = true
# Base64 for decoding
base64.workspace = true
# Logging
tracing.workspace = true
# ---- Optional validation dependencies ----
# HTTP validation
reqwest = { version = "0.12", default-features = false, features = [
"json", "gzip", "brotli", "deflate", "stream", "rustls-tls", "rustls-tls-native-roots", "multipart"
], optional = true }
tokio = { version = "1.48", features = ["net", "time", "sync"], optional = true }
liquid = { version = "0.26", optional = true }
liquid-core = { version = "0.26", optional = true }
quick-xml = { version = "0.38", features = ["serde", "serialize"], optional = true }
sha1 = { workspace = true, optional = true }
chrono = { version = "0.4.42", optional = true }
hmac = { workspace = true, optional = true }
sha2 = { workspace = true, optional = true }
pem = { version = "3.0.6", optional = true }
percent-encoding = { workspace = true, optional = true }
ring = { version = "0.17", optional = true }
ipnet = { version = "2.11", optional = true }
jsonwebtoken = { version = "10.2.0", features = ["aws-lc-rs"], optional = true }
p256 = { version = "0.13.2", optional = true }
ed25519-dalek = { version = "2.2", features = ["pkcs8"], optional = true }
hex = { workspace = true, optional = true }
url = { version = "2.5.7", optional = true }
bson = { version = "2.15.0", optional = true }
mongodb = { version = "3.4", default-features = false, features = ["rustls-tls", "aws-auth", "compat-3-0-0", "dns-resolver"], optional = true }
mysql_async = { version = "0.34.2", default-features = false, features = ["default-rustls"], optional = true }
tokio-postgres = { version = "0.7", default-features = false, features = ["runtime"], optional = true }
tokio-postgres-rustls = { version = "0.13.0", optional = true }
rustls = { version = "0.23.35", optional = true }
rustls-native-certs = { version = "0.8.2", optional = true }
# AWS validation
aws-config = { version = "1.8.14", default-features = false, features = ["default-https-client", "rt-tokio"], optional = true }
aws-credential-types = { version = "1.2.12", optional = true }
aws-sdk-iam = { version = "1.104.0", default-features = false, features = ["default-https-client", "rt-tokio"], optional = true }
aws-sdk-sts = { version = "1.98.0", default-features = false, features = ["default-https-client", "rt-tokio"], optional = true }
aws-types = { version = "1.3.12", optional = true }
aws-smithy-http-client = { version = "1.1.10", optional = true }
aws-smithy-runtime-api = { version = "1.11.4", optional = true }
aws-smithy-types = { version = "1.4.4", optional = true }
base32 = { version = "0.5", optional = true }
byteorder = { version = "1.5", optional = true }
rand = { version = "0.9", optional = true }
[dev-dependencies]
pretty_assertions = "1.4"
tempfile = "3.23"