dcrypt 3.0.0

Rust APIs for classical, post-quantum, and hybrid cryptographic primitives
Documentation
schema-version = 2

published-packages = [
    "dcrypt-internal",
    "dcrypt-params",
    "dcrypt-api",
    "dcrypt-common",
    "dcrypt-algorithms",
    "dcrypt-symmetric",
    "dcrypt-kem",
    "dcrypt-sign",
    "dcrypt-pke",
    "dcrypt-utils",
    "dcrypt-hybrid",
    "dcrypt",
]

# Exact name/version snapshot of every external package currently reachable
# through a published package's normal/build dependency closure. Any addition
# is a policy change and fails closed; forbidden/native/oracle checks remain
# independently authoritative for entries already recorded here.
allowed-normal-build-packages = [
    "base64@0.22.1",
    "hex@0.4.3",
]

# These packages either cross a native boundary, commonly construct one, or
# obtain entropy from an operating-system interface. The source audit remains
# authoritative; this list provides an early, explicit failure.
forbidden-packages = [
    "bindgen",
    "cc",
    "clang-sys",
    "cmake",
    "getrandom",
    "libc",
    "libloading",
    "nasm-rs",
    "openssl-sys",
    "pkg-config",
    "r-efi",
    "ring",
    "vcpkg",
    "wasi",
    "windows-link",
]
forbidden-package-suffixes = ["-sys", "_sys"]

# Cryptographic implementations used for differential testing belong in the
# isolated, non-published verification workspace, never in a published
# package's dependency table or the main workspace dependency graph.
test-oracle-packages = [
    "chacha20",
    "chacha20poly1305",
    "curve25519-dalek",
    "ed25519-dalek",
    "fips204",
    "hkdf",
    "hmac",
    "libcrux-intrinsics",
    "libcrux-ml-dsa",
    "libcrux-platform",
    "libcrux-secrets",
    "libcrux-sha3",
    "libcrux-traits",
    "ml-dsa",
    "pbkdf2",
    "poly1305",
    "sha2",
]
verification-workspace = "verification"

# cargo-fuzz is a deliberately non-production test harness. Its native bridge
# is disclosed separately and is not part of the published zero-native claim.
# The scanner still audits every repository-owned source in this closure and
# requires this external snapshot to remain exact.
fuzz-workspace = "fuzz"
fuzz-allowed-external-normal-build-packages = [
    "arbitrary@1.4.2",
    "base64@0.22.1",
    "cc@1.4.2",
    "cfg-if@1.0.4",
    "find-msvc-tools@0.1.10",
    "getrandom@0.4.3",
    "hex@0.4.3",
    "jobserver@0.1.35",
    "libc@0.2.189",
    "libfuzzer-sys@0.4.13",
    "r-efi@6.0.0",
    "shlex@2.0.1",
]

native-extensions = [
    ".a",
    ".asm",
    ".bc",
    ".c",
    ".c++",
    ".cc",
    ".cp",
    ".cpp",
    ".cppm",
    ".cu",
    ".cuh",
    ".d",
    ".cxx",
    ".dll",
    ".dylib",
    ".exp",
    ".f",
    ".f03",
    ".f08",
    ".f77",
    ".f90",
    ".f95",
    ".for",
    ".framework",
    ".go",
    ".h",
    ".hh",
    ".hpp",
    ".hxx",
    ".inc",
    ".la",
    ".lib",
    ".m",
    ".metal",
    ".mm",
    ".node",
    ".o",
    ".obj",
    ".pdb",
    ".rlib",
    ".s",
    ".so",
    ".sx",
    ".wasm",
    ".xcframework",
    ".zig",
]

[targets]
linux-x86-64 = "x86_64-unknown-linux-gnu"
linux-aarch64 = "aarch64-unknown-linux-gnu"
wasm = "wasm32-unknown-unknown"
no-std = "thumbv7em-none-eabihf"

# Functional allocator-backed no_std profiles for every published crate. The
# checker also retains a separate workspace-wide bare --no-default-features
# build, so these profiles add coverage rather than weakening it.
[no-std-package-features]
dcrypt-internal = ["alloc"]
dcrypt-params = []
dcrypt-api = ["alloc"]
dcrypt-common = ["alloc"]
dcrypt-algorithms = ["alloc", "hash", "xof", "aead", "block", "kdf", "mac", "stream", "ec"]
dcrypt-symmetric = ["alloc"]
dcrypt-kem = ["alloc", "traditional", "post-quantum"]
dcrypt-sign = ["alloc", "traditional", "post-quantum"]
dcrypt-pke = ["alloc"]
dcrypt-utils = ["alloc"]
dcrypt-hybrid = ["alloc"]
dcrypt = ["alloc", "algorithms", "symmetric", "kem", "sign", "pke", "hybrid", "traditional", "post-quantum"]

# Owned tools that must remain separate, non-published Cargo workspaces while
# still satisfying the same zero-unsafe/zero-native/zero-FFI normal/build
# boundary. External dependency snapshots are exact and workspace-specific.
[[owned-excluded-workspaces]]
path = "migration/legacy-xchacha20poly1305"
allowed-external-normal-build-packages = [
    "base64@0.22.1",
    "hex@0.4.3",
]