chore(CI): add github actions for supply chain protection (#579)

This commit is contained in:
Paul Spooren
2025-02-06 08:48:27 +00:00
committed by GitHub
8 changed files with 2609 additions and 83 deletions

71
.github/workflows/supply-chain.yml vendored Normal file
View File

@@ -0,0 +1,71 @@
name: Supply-Chain
on:
pull_request:
push:
branches: [main]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
cargo-deny:
name: Deny dependencies with vulnerabilities or incompatible licenses
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v2
cargo-supply-chain:
name: Supply Chain Report
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cache/cargo-supply-chain/
key: cargo-supply-chain-cache
- uses: actions/cache@v4
with:
path: ${{ runner.tool_cache }}/cargo-supply-chain
key: cargo-supply-chain-bin
- name: Add the tool cache directory to the search path
run: echo "${{ runner.tool_cache }}/cargo-supply-chain/bin" >> $GITHUB_PATH
- name: Ensure that the tool cache is populated with the cargo-supply-chain binary
run: cargo install --root ${{ runner.tool_cache }}/cargo-supply-chain cargo-supply-chain
- name: Update data for cargo-supply-chain
run: cargo supply-chain update
- name: Generate cargo-supply-chain report about publishers
run: cargo supply-chain publishers
- name: Generate cargo-supply-chain report about crates
run: cargo supply-chain crates
# The setup for cargo-vet follows the recommendations in the cargo-vet documentation: https://mozilla.github.io/cargo-vet/configuring-ci.html
cargo-vet:
name: Vet Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
key: cargo-vet-cache
- name: Install stable toolchain # Since we are running/compiling cargo-vet, we should rely on the stable toolchain.
run: |
rustup toolchain install stable
rustup default stable
- uses: actions/cache@v4
with:
path: ${{ runner.tool_cache }}/cargo-vet
key: cargo-vet-bin
- name: Add the tool cache directory to the search path
run: echo "${{ runner.tool_cache }}/cargo-vet/bin" >> $GITHUB_PATH
- name: Ensure that the tool cache is populated with the cargo-vet binary
run: cargo install --root ${{ runner.tool_cache }}/cargo-vet cargo-vet
- name: Invoke cargo-vet
run: cargo vet --locked

95
Cargo.lock generated
View File

@@ -134,17 +134,6 @@ dependencies = [
"critical-section",
]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi 0.1.19",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
version = "1.4.0"
@@ -367,18 +356,6 @@ dependencies = [
"libloading",
]
[[package]]
name = "clap"
version = "3.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
dependencies = [
"bitflags 1.3.2",
"clap_lex 0.2.4",
"indexmap 1.9.3",
"textwrap",
]
[[package]]
name = "clap"
version = "4.5.23"
@@ -397,7 +374,7 @@ checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838"
dependencies = [
"anstream",
"anstyle",
"clap_lex 0.7.4",
"clap_lex",
"strsim 0.11.1",
]
@@ -407,7 +384,7 @@ version = "4.5.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac2e663e3e3bed2d32d065a8404024dad306e699a04263ec59919529f803aee9"
dependencies = [
"clap 4.5.23",
"clap",
]
[[package]]
@@ -422,15 +399,6 @@ dependencies = [
"syn 2.0.87",
]
[[package]]
name = "clap_lex"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
dependencies = [
"os_str_bytes",
]
[[package]]
name = "clap_lex"
version = "0.7.4"
@@ -443,7 +411,7 @@ version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbae9cbfdc5d4fa8711c09bd7b83f644cb48281ac35bf97af3e47b0675864bdf"
dependencies = [
"clap 4.5.23",
"clap",
"roff",
]
@@ -489,19 +457,19 @@ dependencies = [
[[package]]
name = "criterion"
version = "0.4.0"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
dependencies = [
"anes",
"atty",
"cast",
"ciborium",
"clap 3.2.25",
"clap",
"criterion-plot",
"is-terminal",
"itertools",
"lazy_static",
"num-traits",
"once_cell",
"oorandom",
"plotters",
"rayon",
@@ -1012,12 +980,6 @@ dependencies = [
"byteorder",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.15.2"
@@ -1044,15 +1006,6 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "hermit-abi"
version = "0.4.0"
@@ -1092,16 +1045,6 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]]
name = "indexmap"
version = "2.6.0"
@@ -1109,7 +1052,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
dependencies = [
"equivalent",
"hashbrown 0.15.2",
"hashbrown",
]
[[package]]
@@ -1146,7 +1089,7 @@ version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
dependencies = [
"hermit-abi 0.4.0",
"hermit-abi",
"libc",
"windows-sys 0.52.0",
]
@@ -1552,12 +1495,6 @@ dependencies = [
"pkg-config",
]
[[package]]
name = "os_str_bytes"
version = "6.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
[[package]]
name = "parking_lot"
version = "0.12.3"
@@ -1823,7 +1760,7 @@ name = "rosenpass"
version = "0.3.0-dev"
dependencies = [
"anyhow",
"clap 4.5.23",
"clap",
"clap_complete",
"clap_mangen",
"command-fds",
@@ -1970,7 +1907,7 @@ name = "rosenpass-wireguard-broker"
version = "0.1.0"
dependencies = [
"anyhow",
"clap 4.5.23",
"clap",
"derive_builder 0.20.2",
"env_logger",
"libc",
@@ -2342,12 +2279,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e7a7de15468c6e65dd7db81cf3822c1ec94c71b2a3c1a976ea8e4696c91115c"
[[package]]
name = "textwrap"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
[[package]]
name = "thiserror"
version = "1.0.69"
@@ -2434,7 +2365,7 @@ version = "0.19.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
"indexmap 2.6.0",
"indexmap",
"serde",
"serde_spanned",
"toml_datetime",

View File

@@ -82,7 +82,7 @@ tempfile = "3"
stacker = "0.1.17"
libfuzzer-sys = "0.4"
test_bin = "0.4.0"
criterion = "0.4.0"
criterion = "0.5.1"
allocator-api2-tests = "0.2.15"
procspawn = { version = "1.0.1", features = ["test-support"] }

124
deny.toml Normal file
View File

@@ -0,0 +1,124 @@
# The graph table configures how the dependency graph is constructed and thus
# which crates the checks are performed against
[graph]
# If true, metadata will be collected with `--all-features`. Note that this can't
# be toggled off if true, if you want to conditionally enable `--all-features` it
# is recommended to pass `--all-features` on the cmd line instead
all-features = true
# If true, metadata will be collected with `--no-default-features`. The same
# caveat with `all-features` applies
no-default-features = false
# The output table provides options for how/if diagnostics are outputted
[output]
# When outputting inclusion graphs in diagnostics that include features, this
# option can be used to specify the depth at which feature edges will be added.
# This option is included since the graphs can be quite large and the addition
# of features from the crate(s) to all of the graph roots can be far too verbose.
# This option can be overridden via `--feature-depth` on the cmd line
feature-depth = 1
# This section is considered when running `cargo deny check advisories`
# More documentation for the advisories section can be found here:
# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html
[advisories]
# A list of advisory IDs to ignore. Note that ignored advisories will still
# output a note when they are encountered.
ignore = [
]
# If this is true, then cargo deny will use the git executable to fetch advisory database.
# If this is false, then it uses a built-in git library.
# Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support.
# See Git Authentication for more information about setting up git authentication.
#git-fetch-with-cli = true
# This section is considered when running `cargo deny check #licenses`
# More documentation for the licenses section can be found here:
# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html
[licenses]
# List of explicitly allowed licenses
# See https://spdx.org/licenses/ for list of possible licenses
# [possible values: any SPDX 3.11 short identifier (+ optional exception)].
allow = [
"MIT",
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"BSD-3-Clause",
"ISC",
]
# The confidence threshold for detecting a license from license text.
# The higher the value, the more closely the license text must be to the
# canonical license text of a valid SPDX license file.
# [possible values: any between 0.0 and 1.0].
confidence-threshold = 0.8
# Allow 1 or more licenses on a per-crate basis, so that particular licenses
# aren't accepted for every possible crate as with the normal allow list
exceptions = [
# Each entry is the crate and version constraint, and its specific allow
# list
{ allow = ["Unicode-DFS-2016"], crate = "unicode-ident" },
]
[licenses.private]
# If true, ignores workspace crates that aren't published, or are only
# published to private registries.
# To see how to mark a crate as unpublished (to the official registry),
# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field.
ignore = true
# This section is considered when running `cargo deny check bans`.
# More documentation about the 'bans' section can be found here:
# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html
[bans]
# Lint level for when multiple versions of the same crate are detected
multiple-versions = "warn"
# Lint level for when a crate version requirement is `*`
wildcards = "allow"
# The graph highlighting used when creating dotgraphs for crates
# with multiple versions
# * lowest-version - The path to the lowest versioned duplicate is highlighted
# * simplest-path - The path to the version with the fewest edges is highlighted
# * all - Both lowest-version and simplest-path are used
highlight = "all"
# The default lint level for `default` features for crates that are members of
# the workspace that is being checked. This can be overridden by allowing/denying
# `default` on a crate-by-crate basis if desired.
workspace-default-features = "allow"
# The default lint level for `default` features for external crates that are not
# members of the workspace. This can be overridden by allowing/denying `default`
# on a crate-by-crate basis if desired.
external-default-features = "allow"
# List of crates that are allowed. Use with care!
allow = [
]
# List of crates to deny
deny = [
]
skip-tree = [
]
# This section is considered when running `cargo deny check sources`.
# More documentation about the 'sources' section can be found here:
# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html
[sources]
# Lint level for what to happen when a crate from a crate registry that is not
# in the allow list is encountered
unknown-registry = "warn"
# Lint level for what to happen when a crate from a git repository that is not
# in the allow list is encountered
unknown-git = "warn"
# List of URLs for allowed crate registries. Defaults to the crates.io index
# if not specified. If it is specified but empty, no registries are allowed.
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
# List of URLs for allowed Git repositories
allow-git = ["git+https://github.com/rosenpass/memsec.git?branch=master"]
[sources.allow-org]
# github.com organizations to allow git sources for
github = []
# gitlab.com organizations to allow git sources for
gitlab = []
# bitbucket.org organizations to allow git sources for
bitbucket = []

View File

@@ -0,0 +1,66 @@
# Supply Chain Protection
The CI for this repository uses the following tools to protect the supply chain:
- [cargo-vet](https://github.com/mozilla/cargo-vet): vets dependencies based on existing audits with the aim of incrementally using fewer and fewer unaudited dependencies.
- [cargo-deny](https://github.com/EmbarkStudios/cargo-deny): checks for unwanted licenses, crates, and other security issues.
- [cargo-supply-chain](https://github.com/rust-secure-code/cargo-supply-chain): generates reports on dependencies and their authors.
Below, we briefly explain how to configure these tools and how to make appropriate adjustments when dependencies change.
## cargo-vet
`cargo-vet` vets dependencies based on performed audits. In order to avoid redundant work, it encourages the use of already
performed audits by trusted organizations or people. As of now, we trust audits performed by the
[actix team](https://raw.githubusercontent.com/actix/supply-chain/main/audits.toml), the [bytecode-alliance](https://raw.githubusercontent.com/bytecodealliance/wasmtime/main/supply-chain/audits.toml)
[embark-studios](https://raw.githubusercontent.com/EmbarkStudios/rust-ecosystem/main/audits.toml),
[fermyon](https://raw.githubusercontent.com/fermyon/spin/main/supply-chain/audits.toml),
[google](https://raw.githubusercontent.com/google/supply-chain/main/audits.toml),
the [ISRG](https://raw.githubusercontent.com/divviup/libprio-rs/main/supply-chain/audits.toml),
the [mozilla team](https://raw.githubusercontent.com/mozilla/cargo-vet/main/audits.toml),
and the [ZCash foundaton](https://raw.githubusercontent.com/zcash/rust-ecosystem/main/supply-chain/audits.toml).
Since, as of now, only a minority of crates have been audited, the tool aims at incrementally using fewer and fewer unaudited dependencies by initially exempting all dependencies
from the need to be audited for the CI to pass. When more and more crates are audited, the tool prompts to reevaluate
the list of exemptions and remove as many as possible.
### Configuration
The configuration files for cargo-vet are located in the `supply-chain` directory. The central configuration file is
`config.toml`, where the lst of trusted organizations and the list of exemptions are defined.
### Adding new dependencies
Make sure to [install cargo vet](https://mozilla.github.io/cargo-vet/install.html) first.
Then, when adding new dependencies, run `cargo vet suggest` before committing. If the dependency is not safe-to-deploy,
add it to the exemptions in the file `supply-chain/config.toml`.
For all further configration options, please refer to the [cargo-vet documentation](https://mozilla.github.io/cargo-vet/).
## cargo-deny
`cargo-deny` checks for unwanted licenses, crates, and other security issues. It is configured in the file `deny.toml`.
### Licenses
The only allowed licenses are the MIT license, the Apache-2.0 license, Apache-2.0 license WITH LLVM-exception,
BSD-3-Clause license and the ISC license. All other licenses are banned. An exception is made for the
`unicode-ident`-crate, for which we allow the Unicode-DFS-2016 license.
### Security vulnerabilities
The tool checks for security vulnerabilities in dependencies. If a vulnerability is found, the CI will fail. If you must,
you can add exceptions in the `deny.toml` file, but this should only be a last resort.
### Adding new dependencies
Make sure to [install cargo deny](https://embarkstudios.github.io/cargo-deny/) first. Then, when adding new dependencies,
run `cargo deny check` before committing. If there are issues wth the dependency reported by `cargo deny check`, you
should try to resolve it appropriately. If this is not possible thoroughly consider if the dependency is necessary and
an exception should be made in the `deny.toml` file.
For all further configration options, please refer to the [cargo-deny documentation](https://embarkstudios.github.io/cargo-deny/).
## cargo-supply-chain
`cargo-supply-chain` generates reports on dependencies and their authors. These reports should be reviewed regularly.
However, they will not cause the CI to fail.

4
supply-chain/audits.toml Normal file
View File

@@ -0,0 +1,4 @@
# cargo-vet audits file
[audits]

886
supply-chain/config.toml Normal file
View File

@@ -0,0 +1,886 @@
# cargo-vet config file
[cargo-vet]
version = "0.10"
[imports.actix]
url = "https://raw.githubusercontent.com/actix/supply-chain/main/audits.toml"
[imports.bytecode-alliance]
url = "https://raw.githubusercontent.com/bytecodealliance/wasmtime/main/supply-chain/audits.toml"
[imports.embark-studios]
url = "https://raw.githubusercontent.com/EmbarkStudios/rust-ecosystem/main/audits.toml"
[imports.fermyon]
url = "https://raw.githubusercontent.com/fermyon/spin/main/supply-chain/audits.toml"
[imports.google]
url = "https://raw.githubusercontent.com/google/supply-chain/main/audits.toml"
[imports.isrg]
url = "https://raw.githubusercontent.com/divviup/libprio-rs/main/supply-chain/audits.toml"
[imports.mozilla]
url = "https://raw.githubusercontent.com/mozilla/supply-chain/main/audits.toml"
[imports.zcash]
url = "https://raw.githubusercontent.com/zcash/rust-ecosystem/main/supply-chain/audits.toml"
[policy.memsec]
audit-as-crates-io = true
[policy.rosenpass]
audit-as-crates-io = false
[policy.uds]
audit-as-crates-io = true
[[exemptions.addr2line]]
version = "0.24.2"
criteria = "safe-to-deploy"
[[exemptions.aead]]
version = "0.5.2"
criteria = "safe-to-deploy"
[[exemptions.aho-corasick]]
version = "1.1.3"
criteria = "safe-to-deploy"
[[exemptions.allocator-api2-tests]]
version = "0.2.15"
criteria = "safe-to-run"
[[exemptions.anstream]]
version = "0.6.15"
criteria = "safe-to-deploy"
[[exemptions.anstyle]]
version = "1.0.8"
criteria = "safe-to-deploy"
[[exemptions.anstyle-parse]]
version = "0.2.5"
criteria = "safe-to-deploy"
[[exemptions.anstyle-query]]
version = "1.1.1"
criteria = "safe-to-deploy"
[[exemptions.anstyle-wincon]]
version = "3.0.4"
criteria = "safe-to-deploy"
[[exemptions.anyhow]]
version = "1.0.95"
criteria = "safe-to-deploy"
[[exemptions.atomic-polyfill]]
version = "1.0.3"
criteria = "safe-to-deploy"
[[exemptions.backtrace]]
version = "0.3.74"
criteria = "safe-to-deploy"
[[exemptions.base64ct]]
version = "1.6.0"
criteria = "safe-to-deploy"
[[exemptions.bincode]]
version = "1.3.3"
criteria = "safe-to-run"
[[exemptions.blake2]]
version = "0.10.6"
criteria = "safe-to-deploy"
[[exemptions.build-deps]]
version = "0.1.4"
criteria = "safe-to-deploy"
[[exemptions.bytes]]
version = "1.7.2"
criteria = "safe-to-deploy"
[[exemptions.cc]]
version = "1.1.30"
criteria = "safe-to-deploy"
[[exemptions.chacha20]]
version = "0.9.1"
criteria = "safe-to-deploy"
[[exemptions.chacha20poly1305]]
version = "0.10.1"
criteria = "safe-to-deploy"
[[exemptions.ciborium]]
version = "0.2.2"
criteria = "safe-to-run"
[[exemptions.ciborium-io]]
version = "0.2.2"
criteria = "safe-to-run"
[[exemptions.ciborium-ll]]
version = "0.2.2"
criteria = "safe-to-run"
[[exemptions.clang-sys]]
version = "1.8.1"
criteria = "safe-to-deploy"
[[exemptions.clap]]
version = "4.5.23"
criteria = "safe-to-deploy"
[[exemptions.clap_builder]]
version = "4.5.23"
criteria = "safe-to-deploy"
[[exemptions.clap_complete]]
version = "4.5.40"
criteria = "safe-to-deploy"
[[exemptions.clap_derive]]
version = "4.5.18"
criteria = "safe-to-deploy"
[[exemptions.clap_lex]]
version = "0.7.4"
criteria = "safe-to-deploy"
[[exemptions.clap_mangen]]
version = "0.2.24"
criteria = "safe-to-deploy"
[[exemptions.cmake]]
version = "0.1.51"
criteria = "safe-to-deploy"
[[exemptions.colorchoice]]
version = "1.0.2"
criteria = "safe-to-deploy"
[[exemptions.command-fds]]
version = "0.2.3"
criteria = "safe-to-deploy"
[[exemptions.cpufeatures]]
version = "0.2.14"
criteria = "safe-to-deploy"
[[exemptions.criterion]]
version = "0.5.1"
criteria = "safe-to-run"
[[exemptions.criterion-plot]]
version = "0.5.0"
criteria = "safe-to-run"
[[exemptions.critical-section]]
version = "1.2.0"
criteria = "safe-to-deploy"
[[exemptions.crossbeam-utils]]
version = "0.8.20"
criteria = "safe-to-run"
[[exemptions.ctrlc-async]]
version = "3.2.2"
criteria = "safe-to-deploy"
[[exemptions.curve25519-dalek]]
version = "4.1.3"
criteria = "safe-to-deploy"
[[exemptions.curve25519-dalek-derive]]
version = "0.1.1"
criteria = "safe-to-deploy"
[[exemptions.darling]]
version = "0.12.4"
criteria = "safe-to-deploy"
[[exemptions.darling]]
version = "0.20.10"
criteria = "safe-to-deploy"
[[exemptions.darling_core]]
version = "0.12.4"
criteria = "safe-to-deploy"
[[exemptions.darling_core]]
version = "0.20.10"
criteria = "safe-to-deploy"
[[exemptions.darling_macro]]
version = "0.12.4"
criteria = "safe-to-deploy"
[[exemptions.darling_macro]]
version = "0.20.10"
criteria = "safe-to-deploy"
[[exemptions.derive_arbitrary]]
version = "1.4.1"
criteria = "safe-to-deploy"
[[exemptions.derive_builder]]
version = "0.10.2"
criteria = "safe-to-deploy"
[[exemptions.derive_builder]]
version = "0.20.2"
criteria = "safe-to-deploy"
[[exemptions.derive_builder_core]]
version = "0.10.2"
criteria = "safe-to-deploy"
[[exemptions.derive_builder_core]]
version = "0.20.2"
criteria = "safe-to-deploy"
[[exemptions.derive_builder_macro]]
version = "0.10.2"
criteria = "safe-to-deploy"
[[exemptions.derive_builder_macro]]
version = "0.20.2"
criteria = "safe-to-deploy"
[[exemptions.digest]]
version = "0.10.7"
criteria = "safe-to-deploy"
[[exemptions.embedded-io]]
version = "0.6.1"
criteria = "safe-to-deploy"
[[exemptions.env_logger]]
version = "0.10.2"
criteria = "safe-to-deploy"
[[exemptions.findshlibs]]
version = "0.10.2"
criteria = "safe-to-run"
[[exemptions.futures-task]]
version = "0.3.31"
criteria = "safe-to-deploy"
[[exemptions.futures-util]]
version = "0.3.31"
criteria = "safe-to-deploy"
[[exemptions.generic-array]]
version = "0.14.7"
criteria = "safe-to-deploy"
[[exemptions.genetlink]]
version = "0.2.5"
criteria = "safe-to-deploy"
[[exemptions.getrandom]]
version = "0.2.15"
criteria = "safe-to-deploy"
[[exemptions.gimli]]
version = "0.31.1"
criteria = "safe-to-deploy"
[[exemptions.half]]
version = "2.4.1"
criteria = "safe-to-run"
[[exemptions.hash32]]
version = "0.2.1"
criteria = "safe-to-deploy"
[[exemptions.hashbrown]]
version = "0.15.2"
criteria = "safe-to-deploy"
[[exemptions.heapless]]
version = "0.7.17"
criteria = "safe-to-deploy"
[[exemptions.hermit-abi]]
version = "0.4.0"
criteria = "safe-to-deploy"
[[exemptions.hex-literal]]
version = "0.4.1"
criteria = "safe-to-deploy"
[[exemptions.home]]
version = "0.5.9"
criteria = "safe-to-deploy"
[[exemptions.humantime]]
version = "2.1.0"
criteria = "safe-to-deploy"
[[exemptions.indexmap]]
version = "2.6.0"
criteria = "safe-to-deploy"
[[exemptions.ipc-channel]]
version = "0.18.3"
criteria = "safe-to-run"
[[exemptions.is-terminal]]
version = "0.4.13"
criteria = "safe-to-deploy"
[[exemptions.is_terminal_polyfill]]
version = "1.70.1"
criteria = "safe-to-deploy"
[[exemptions.jobserver]]
version = "0.1.32"
criteria = "safe-to-deploy"
[[exemptions.js-sys]]
version = "0.3.72"
criteria = "safe-to-deploy"
[[exemptions.lazycell]]
version = "1.3.0"
criteria = "safe-to-deploy"
[[exemptions.libc]]
version = "0.2.168"
criteria = "safe-to-deploy"
[[exemptions.libcrux]]
version = "0.0.2-pre.2"
criteria = "safe-to-deploy"
[[exemptions.libcrux-hacl]]
version = "0.0.2-pre.2"
criteria = "safe-to-deploy"
[[exemptions.libcrux-platform]]
version = "0.0.2-pre.2"
criteria = "safe-to-deploy"
[[exemptions.libfuzzer-sys]]
version = "0.4.8"
criteria = "safe-to-deploy"
[[exemptions.libjade-sys]]
version = "0.0.2-pre.2"
criteria = "safe-to-deploy"
[[exemptions.libloading]]
version = "0.8.5"
criteria = "safe-to-deploy"
[[exemptions.linux-raw-sys]]
version = "0.4.14"
criteria = "safe-to-deploy"
[[exemptions.lock_api]]
version = "0.4.12"
criteria = "safe-to-deploy"
[[exemptions.memchr]]
version = "2.7.4"
criteria = "safe-to-deploy"
[[exemptions.memoffset]]
version = "0.6.5"
criteria = "safe-to-deploy"
[[exemptions.memoffset]]
version = "0.9.1"
criteria = "safe-to-deploy"
[[exemptions.memsec]]
version = "0.6.3@git:aceb9baee8aec6844125bd6612f92e9a281373df"
criteria = "safe-to-deploy"
[[exemptions.minimal-lexical]]
version = "0.2.1"
criteria = "safe-to-deploy"
[[exemptions.mio]]
version = "1.0.3"
criteria = "safe-to-deploy"
[[exemptions.neli]]
version = "0.6.3"
criteria = "safe-to-deploy"
[[exemptions.neli-proc-macros]]
version = "0.1.3"
criteria = "safe-to-deploy"
[[exemptions.netlink-packet-core]]
version = "0.7.0"
criteria = "safe-to-deploy"
[[exemptions.netlink-packet-generic]]
version = "0.3.3"
criteria = "safe-to-deploy"
[[exemptions.netlink-packet-route]]
version = "0.19.0"
criteria = "safe-to-deploy"
[[exemptions.netlink-packet-utils]]
version = "0.5.2"
criteria = "safe-to-deploy"
[[exemptions.netlink-packet-wireguard]]
version = "0.2.3"
criteria = "safe-to-deploy"
[[exemptions.netlink-proto]]
version = "0.11.3"
criteria = "safe-to-deploy"
[[exemptions.netlink-sys]]
version = "0.8.6"
criteria = "safe-to-deploy"
[[exemptions.nix]]
version = "0.23.2"
criteria = "safe-to-deploy"
[[exemptions.nix]]
version = "0.27.1"
criteria = "safe-to-deploy"
[[exemptions.object]]
version = "0.36.5"
criteria = "safe-to-deploy"
[[exemptions.once_cell]]
version = "1.20.2"
criteria = "safe-to-deploy"
[[exemptions.oqs-sys]]
version = "0.9.1+liboqs-0.9.0"
criteria = "safe-to-deploy"
[[exemptions.parking_lot]]
version = "0.12.3"
criteria = "safe-to-deploy"
[[exemptions.parking_lot_core]]
version = "0.9.10"
criteria = "safe-to-deploy"
[[exemptions.paste]]
version = "1.0.15"
criteria = "safe-to-deploy"
[[exemptions.pkg-config]]
version = "0.3.31"
criteria = "safe-to-deploy"
[[exemptions.plotters]]
version = "0.3.7"
criteria = "safe-to-run"
[[exemptions.plotters-backend]]
version = "0.3.7"
criteria = "safe-to-run"
[[exemptions.plotters-svg]]
version = "0.3.7"
criteria = "safe-to-run"
[[exemptions.poly1305]]
version = "0.8.0"
criteria = "safe-to-deploy"
[[exemptions.postcard]]
version = "1.1.1"
criteria = "safe-to-deploy"
[[exemptions.ppv-lite86]]
version = "0.2.20"
criteria = "safe-to-deploy"
[[exemptions.prettyplease]]
version = "0.2.22"
criteria = "safe-to-deploy"
[[exemptions.procspawn]]
version = "1.0.1"
criteria = "safe-to-run"
[[exemptions.psm]]
version = "0.1.23"
criteria = "safe-to-deploy"
[[exemptions.rand]]
version = "0.8.5"
criteria = "safe-to-deploy"
[[exemptions.redox_syscall]]
version = "0.5.7"
criteria = "safe-to-deploy"
[[exemptions.regex]]
version = "1.11.0"
criteria = "safe-to-deploy"
[[exemptions.regex-automata]]
version = "0.4.8"
criteria = "safe-to-deploy"
[[exemptions.roff]]
version = "0.2.2"
criteria = "safe-to-deploy"
[[exemptions.rtnetlink]]
version = "0.14.1"
criteria = "safe-to-deploy"
[[exemptions.rustix]]
version = "0.38.42"
criteria = "safe-to-deploy"
[[exemptions.ryu]]
version = "1.0.18"
criteria = "safe-to-run"
[[exemptions.scc]]
version = "2.2.1"
criteria = "safe-to-run"
[[exemptions.scopeguard]]
version = "1.2.0"
criteria = "safe-to-deploy"
[[exemptions.sdd]]
version = "3.0.4"
criteria = "safe-to-run"
[[exemptions.serde_spanned]]
version = "0.6.8"
criteria = "safe-to-deploy"
[[exemptions.serial_test]]
version = "3.2.0"
criteria = "safe-to-run"
[[exemptions.serial_test_derive]]
version = "3.2.0"
criteria = "safe-to-run"
[[exemptions.signal-hook]]
version = "0.3.17"
criteria = "safe-to-deploy"
[[exemptions.signal-hook-registry]]
version = "1.4.2"
criteria = "safe-to-deploy"
[[exemptions.slab]]
version = "0.4.9"
criteria = "safe-to-deploy"
[[exemptions.socket2]]
version = "0.5.7"
criteria = "safe-to-deploy"
[[exemptions.spin]]
version = "0.9.8"
criteria = "safe-to-deploy"
[[exemptions.stacker]]
version = "0.1.17"
criteria = "safe-to-deploy"
[[exemptions.syn]]
version = "1.0.109"
criteria = "safe-to-deploy"
[[exemptions.syn]]
version = "2.0.87"
criteria = "safe-to-deploy"
[[exemptions.take-until]]
version = "0.1.0"
criteria = "safe-to-deploy"
[[exemptions.tempfile]]
version = "3.14.0"
criteria = "safe-to-deploy"
[[exemptions.termcolor]]
version = "1.4.1"
criteria = "safe-to-deploy"
[[exemptions.test_bin]]
version = "0.4.0"
criteria = "safe-to-run"
[[exemptions.thiserror]]
version = "1.0.69"
criteria = "safe-to-deploy"
[[exemptions.thiserror-impl]]
version = "1.0.69"
criteria = "safe-to-deploy"
[[exemptions.tokio]]
version = "1.42.0"
criteria = "safe-to-deploy"
[[exemptions.tokio-macros]]
version = "2.4.0"
criteria = "safe-to-deploy"
[[exemptions.toml]]
version = "0.7.8"
criteria = "safe-to-deploy"
[[exemptions.toml_datetime]]
version = "0.6.8"
criteria = "safe-to-deploy"
[[exemptions.toml_edit]]
version = "0.19.15"
criteria = "safe-to-deploy"
[[exemptions.typenum]]
version = "1.17.0"
criteria = "safe-to-deploy"
[[exemptions.uds]]
version = "0.4.2@git:b47934fe52422e559f7278938875f9105f91c5a2"
criteria = "safe-to-deploy"
[[exemptions.utf8parse]]
version = "0.2.2"
criteria = "safe-to-deploy"
[[exemptions.uuid]]
version = "1.10.0"
criteria = "safe-to-run"
[[exemptions.version_check]]
version = "0.9.5"
criteria = "safe-to-deploy"
[[exemptions.walkdir]]
version = "2.5.0"
criteria = "safe-to-run"
[[exemptions.wasi]]
version = "0.11.0+wasi-snapshot-preview1"
criteria = "safe-to-deploy"
[[exemptions.wasm-bindgen]]
version = "0.2.95"
criteria = "safe-to-deploy"
[[exemptions.wasm-bindgen-backend]]
version = "0.2.95"
criteria = "safe-to-deploy"
[[exemptions.wasm-bindgen-macro]]
version = "0.2.95"
criteria = "safe-to-deploy"
[[exemptions.wasm-bindgen-macro-support]]
version = "0.2.95"
criteria = "safe-to-deploy"
[[exemptions.wasm-bindgen-shared]]
version = "0.2.95"
criteria = "safe-to-deploy"
[[exemptions.web-sys]]
version = "0.3.72"
criteria = "safe-to-run"
[[exemptions.which]]
version = "4.4.2"
criteria = "safe-to-deploy"
[[exemptions.winapi]]
version = "0.3.9"
criteria = "safe-to-deploy"
[[exemptions.winapi-i686-pc-windows-gnu]]
version = "0.4.0"
criteria = "safe-to-deploy"
[[exemptions.winapi-util]]
version = "0.1.9"
criteria = "safe-to-deploy"
[[exemptions.winapi-x86_64-pc-windows-gnu]]
version = "0.4.0"
criteria = "safe-to-deploy"
[[exemptions.windows]]
version = "0.58.0"
criteria = "safe-to-run"
[[exemptions.windows-core]]
version = "0.58.0"
criteria = "safe-to-run"
[[exemptions.windows-implement]]
version = "0.58.0"
criteria = "safe-to-run"
[[exemptions.windows-interface]]
version = "0.58.0"
criteria = "safe-to-run"
[[exemptions.windows-result]]
version = "0.2.0"
criteria = "safe-to-run"
[[exemptions.windows-strings]]
version = "0.1.0"
criteria = "safe-to-run"
[[exemptions.windows-sys]]
version = "0.45.0"
criteria = "safe-to-deploy"
[[exemptions.windows-sys]]
version = "0.48.0"
criteria = "safe-to-run"
[[exemptions.windows-sys]]
version = "0.52.0"
criteria = "safe-to-deploy"
[[exemptions.windows-sys]]
version = "0.59.0"
criteria = "safe-to-deploy"
[[exemptions.windows-targets]]
version = "0.42.2"
criteria = "safe-to-deploy"
[[exemptions.windows-targets]]
version = "0.48.5"
criteria = "safe-to-run"
[[exemptions.windows-targets]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.windows_aarch64_gnullvm]]
version = "0.42.2"
criteria = "safe-to-deploy"
[[exemptions.windows_aarch64_gnullvm]]
version = "0.48.5"
criteria = "safe-to-run"
[[exemptions.windows_aarch64_gnullvm]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.windows_aarch64_msvc]]
version = "0.42.2"
criteria = "safe-to-deploy"
[[exemptions.windows_aarch64_msvc]]
version = "0.48.5"
criteria = "safe-to-run"
[[exemptions.windows_aarch64_msvc]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.windows_i686_gnu]]
version = "0.42.2"
criteria = "safe-to-deploy"
[[exemptions.windows_i686_gnu]]
version = "0.48.5"
criteria = "safe-to-run"
[[exemptions.windows_i686_gnu]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.windows_i686_gnullvm]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.windows_i686_msvc]]
version = "0.42.2"
criteria = "safe-to-deploy"
[[exemptions.windows_i686_msvc]]
version = "0.48.5"
criteria = "safe-to-run"
[[exemptions.windows_i686_msvc]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.windows_x86_64_gnu]]
version = "0.42.2"
criteria = "safe-to-deploy"
[[exemptions.windows_x86_64_gnu]]
version = "0.48.5"
criteria = "safe-to-run"
[[exemptions.windows_x86_64_gnu]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.windows_x86_64_gnullvm]]
version = "0.42.2"
criteria = "safe-to-deploy"
[[exemptions.windows_x86_64_gnullvm]]
version = "0.48.5"
criteria = "safe-to-run"
[[exemptions.windows_x86_64_gnullvm]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.windows_x86_64_msvc]]
version = "0.42.2"
criteria = "safe-to-deploy"
[[exemptions.windows_x86_64_msvc]]
version = "0.48.5"
criteria = "safe-to-run"
[[exemptions.windows_x86_64_msvc]]
version = "0.52.6"
criteria = "safe-to-deploy"
[[exemptions.winnow]]
version = "0.5.40"
criteria = "safe-to-deploy"
[[exemptions.wireguard-uapi]]
version = "3.0.0"
criteria = "safe-to-deploy"
[[exemptions.x25519-dalek]]
version = "2.0.1"
criteria = "safe-to-deploy"
[[exemptions.zerocopy]]
version = "0.7.35"
criteria = "safe-to-deploy"
[[exemptions.zerocopy-derive]]
version = "0.7.35"
criteria = "safe-to-deploy"

1444
supply-chain/imports.lock Normal file

File diff suppressed because it is too large Load Diff