cachekit-core 0.1.0

LZ4 compression, xxHash3 integrity, AES-256-GCM encryption for byte payloads
Documentation
# cargo-deny configuration for cachekit security policy
# Enforces license compliance, vulnerability scanning, and dependency policy
# See: https://embarkstudios.github.io/cargo-deny/

# ═══════════════════════════════════════════════════════════════
# GRAPH - Dependency Graph Configuration
# ═══════════════════════════════════════════════════════════════
[graph]
# Target platforms for cachekit (cross-platform library)
targets = [
    "x86_64-unknown-linux-gnu",
    "aarch64-unknown-linux-gnu",
    "x86_64-apple-darwin",
    "aarch64-apple-darwin",
    "x86_64-pc-windows-msvc",
]
# Use all features for comprehensive analysis
all-features = true

# ═══════════════════════════════════════════════════════════════
# ADVISORIES - Vulnerability Scanning (RustSec Database)
# ═══════════════════════════════════════════════════════════════
[advisories]
# Check all workspace crates for unmaintained dependencies
unmaintained = "workspace"

# Exemptions for advisories in transitive dependencies
ignore = []

# ═══════════════════════════════════════════════════════════════
# LICENSES - License Policy Enforcement
# ═══════════════════════════════════════════════════════════════
[licenses]
# High confidence threshold for license detection
confidence-threshold = 0.8

# Allowed licenses (MIT/Apache-2.0/BSD-3-Clause compatible with cachekit MIT license)
allow = [
    "MIT",
    "Apache-2.0",
    "Apache-2.0 WITH LLVM-exception",  # LLVM runtime exception
    "BSD-2-Clause",
    "BSD-3-Clause",
    "ISC",
    "Unicode-3.0",  # Unicode License v3 (OSI approved, permissive)
    "CC0-1.0",  # Public domain
    "MPL-2.0",  # Mozilla Public License 2.0 (cbindgen build dependency)
    "BSL-1.0",  # Boost Software License 1.0 (xxhash-rust)
]

# License exceptions for specific crates (use sparingly)
# Format: { allow = ["LICENSE"], crate = "crate-name" }
exceptions = []

# ═══════════════════════════════════════════════════════════════
# BANS - Dependency Policy Enforcement
# ═══════════════════════════════════════════════════════════════
[bans]
# Deny multiple versions of the same crate (reduces binary size, prevents subtle bugs)
multiple-versions = "deny"

# Deny wildcard dependencies (e.g., "serde = *")
wildcards = "deny"

# Highlight all duplicate versions for review
highlight = "all"

# Ban specific crates (use-instead provides alternative)
# Format: { crate = "name", reason = "explanation", use-instead = "alternative" }
deny = []

# Skip specific dependencies from multiple-version checks
# These are transitive dependencies where version duplication is unavoidable
skip = [
    # bitflags 1.x via cbindgen → clap 3.x, bitflags 2.x via proptest/rustix
    { crate = "bitflags@1.3.2", reason = "Transitive via cbindgen build dep" },
    # getrandom 0.2.x via ring, getrandom 0.3.x via proptest/tempfile
    { crate = "getrandom@0.2.16", reason = "Transitive via ring crypto lib" },
    # syn 1.x via cbindgen, syn 2.x via derive macros
    { crate = "syn@1.0.109", reason = "Transitive via cbindgen build dep" },
]

# Skip crate trees entirely (e.g., frequently-updated foundational crates)
# Format: { crate = "name", reason = "explanation" }
skip-tree = []

# ═══════════════════════════════════════════════════════════════
# SOURCES - Source Registry Policy
# ═══════════════════════════════════════════════════════════════
[sources]
# Deny unknown registry sources (prevent supply chain attacks)
unknown-registry = "deny"

# Deny unknown git sources (prevent malicious repos)
unknown-git = "deny"

# Only allow crates.io as the source registry
allow-registry = ["https://github.com/rust-lang/crates.io-index"]

# No git dependencies allowed (use crates.io releases for stability)
allow-git = []