# 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]
version = 2
yanked = "warn"

# 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"
highlight = "all"
# List of crates to deny
deny = [{ name = "openssl" }]
# Certain crates/versions that will be skipped when doing duplicate detection.
skip = []
# Similarly to `skip` allows you to skip certain crates during duplicate
# detection. Unlike skip, it also includes the entire tree of transitive
# dependencies starting at the specified crate, up to a certain depth, which is
# by default infinite
skip-tree = []

[licenses]
version = 2
confidence-threshold = 0.8

# List of explicitly allowed licenses
# See https://spdx.org/licenses/ for list of possible licenses
# [possible values: any SPDX 3.7 short identifier (+ optional exception)].
allow = [
    "MIT",
    "MIT-0",
    "Apache-2.0",
    "Apache-2.0 WITH LLVM-exception",
    "BSD-2-Clause",
    "BSD-3-Clause",
    "0BSD",
    "ISC",
    "Unicode-DFS-2016",
    "Unlicense",
    "Unicode-3.0",
    "Zlib",
    # https://github.com/briansmith/ring/issues/902
    "LicenseRef-ring",
    # https://github.com/rustls/webpki/blob/main/LICENSE ISC Style
    "LicenseRef-rustls-webpki",
]

# 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 = [
    # CC0 is a permissive license but somewhat unclear status for source code
    # so we prefer to not have dependencies using it
    # https://tldrlegal.com/license/creative-commons-cc0-1.0-universal
    { allow = ["CC0-1.0"], name = "secp256k1" },
    { allow = ["CC0-1.0"], name = "secp256k1-sys" },
    { allow = ["CC0-1.0"], name = "tiny-keccak" },
    { allow = ["CC0-1.0"], name = "more-asserts" },
    { allow = ["CC0-1.0"], name = "to_method" },
    { allow = ["CC0-1.0"], name = "aurora-engine-modexp" },
    # TODO: decide on MPL-2.0 handling
    # These dependencies are grandfathered in in https://github.com/paradigmxyz/reth/pull/6980
    { allow = ["MPL-2.0"], name = "option-ext" },
    { allow = ["MPL-2.0"], name = "webpki-roots" },
]

[[licenses.clarify]]
name = "ring"
expression = "LicenseRef-ring"
license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }]

[[licenses.clarify]]
name = "rustls-webpki"
expression = "LicenseRef-rustls-webpki"
license-files = [{ path = "LICENSE", hash = 0x001c7e6c }]

# 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 = "deny"
allow-git = [
    # TODO: Please avoid adding new entries to this list.
    "https://github.com/alloy-rs/alloy",
    "https://github.com/foundry-rs/block-explorers",
    "https://github.com/bluealloy/revm",
    "https://github.com/paradigmxyz/revm-inspectors",
]
