Packages
Deterministic protocol verification for cryptographically bounded proof-of-possession authority.
Current section
Files
Jump to
Current section
Files
bounded_authority_protocol
mix.exs
mix.exs
defmodule BoundedAuthorityProtocol.MixProject do
use Mix.Project
@version "0.1.0"
@source_url "https://github.com/baselabs/bounded_authority_protocol"
def project do
[
app: :bounded_authority_protocol,
version: @version,
elixir: "~> 1.18",
deps: deps(),
package: package(),
docs: docs(),
aliases: aliases(),
escript: [
main_module: BoundedAuthorityProtocol.Conformance.Cli.Main,
name: "bounded_authority_conformance"
],
name: "Bounded Authority Protocol",
description:
"Deterministic protocol verification for cryptographically bounded " <>
"proof-of-possession authority.",
source_url: @source_url,
homepage_url: @source_url,
test_coverage: [
summary: [threshold: 100],
ignore_modules: [BoundedAuthorityProtocol.Conformance.Cli.Main]
],
dialyzer: [
plt_core_path: "_build/plts",
plt_local_path: "_build/plts"
]
]
end
def cli do
[
preferred_envs: [
architecture: :test,
audit: :test,
"bap03.performance": :test,
"bap04.performance": :test,
"chain_archive.mutations": :test,
"conformance.mutations": :test,
"conformance.verify": :test,
"license.check": :test,
"package.check": :test,
quality: :test,
"release.candidate": :test,
"sbom.check": :test,
"sbom.generate": :test
]
]
end
def application do
[extra_applications: [:crypto]]
end
defp deps do
[
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:ex_doc, "~> 0.40.3", only: [:dev, :test], runtime: false},
{:jsonschex, "~> 0.8.1", only: [:dev, :test], runtime: false},
{:mix_audit, "~> 2.1", only: [:dev, :test], runtime: false},
{:sbom, "~> 0.10.0", only: [:dev, :test], runtime: false},
{:stream_data, "~> 1.1", only: [:dev, :test], runtime: false}
]
end
defp package do
[
maintainers: ["rjpalermo"],
files: [
"lib",
"priv/conformance/v1/corpus",
"priv/conformance/v1/schemas",
".formatter.exs",
"mix.exs",
"README.md",
"CHANGELOG.md",
"LICENSE",
"NOTICE",
"SECURITY.md",
"usage-rules.md",
"docs/adr/0001-public-protocol-verifier-boundary.md",
"docs/adr/0002-normative-v1-parsing-profile.md",
"docs/adr/0003-standard-jws-and-verified-grant-results.md",
"docs/adr/0004-consumption-chain-rollover-and-anchored-export-verification.md",
"docs/adr/0005-portable-conformance-corpus-and-verifier-cli.md",
"docs/adr/0006-standards-evolution-suite-identity-and-delegation-posture.md",
"docs/adr/0007-normative-requirement-identifiers.md",
"docs/adr/0008-release-candidate-contract.md",
"docs/adr/0009-cryptographic-suite-succession-and-cross-suite-evidence-longevity.md",
"docs/adr/0010-delegation-with-attenuation.md",
"docs/adr/0011-published-governance.md",
"docs/adr/0012-security-release-accelerated-deprecation-window.md",
"docs/adr/0013-capability-authorization-extension.md",
"docs/adr/0014-cross-language-verifier-sdks.md",
"docs/adr/0015-sdk-graduation-and-publish-topology.md",
"docs/adr/0016-offline-eligible-grant-claims.md",
"docs/adr/0017-inter-sdk-behavioral-contract.md",
"docs/adr/0018-sdk-bounds-contract.md",
"docs/adr/0019-corpus-artifact-distribution.md",
"docs/adr/0020-bounds-aware-assembly-and-issuer-reauthorization-posture.md",
"docs/protocol-v1.md",
"docs/release-candidate-contract.md",
"docs/errata.md",
"docs/governance.md",
"docs/design/conformance-contract.md",
"docs/design/offline-authorization-requirements.md",
"docs/design/protocol-charter.md",
"docs/design/registries.md",
"docs/design/requirement-map.md",
"docs/design/standards-track.md",
"docs/design/threat-model.md"
],
licenses: ["Apache-2.0"],
links: %{
"GitHub" => @source_url,
"Changelog" => "#{@source_url}/blob/main/CHANGELOG.md",
"Security policy" => "#{@source_url}/blob/main/SECURITY.md"
}
]
end
defp docs do
[
main: "readme",
source_ref: "v#{@version}",
source_url: @source_url,
extras: [
"README.md",
"CHANGELOG.md",
"LICENSE",
"NOTICE",
"SECURITY.md",
"usage-rules.md",
"docs/protocol-v1.md",
"docs/release-candidate-contract.md",
"docs/adr/0001-public-protocol-verifier-boundary.md",
"docs/adr/0002-normative-v1-parsing-profile.md",
"docs/adr/0003-standard-jws-and-verified-grant-results.md",
"docs/adr/0004-consumption-chain-rollover-and-anchored-export-verification.md",
"docs/adr/0005-portable-conformance-corpus-and-verifier-cli.md",
"docs/adr/0006-standards-evolution-suite-identity-and-delegation-posture.md",
"docs/adr/0007-normative-requirement-identifiers.md",
"docs/adr/0008-release-candidate-contract.md",
"docs/adr/0009-cryptographic-suite-succession-and-cross-suite-evidence-longevity.md",
"docs/adr/0010-delegation-with-attenuation.md",
"docs/adr/0011-published-governance.md",
"docs/adr/0012-security-release-accelerated-deprecation-window.md",
"docs/adr/0013-capability-authorization-extension.md",
"docs/adr/0014-cross-language-verifier-sdks.md",
"docs/adr/0015-sdk-graduation-and-publish-topology.md",
"docs/adr/0016-offline-eligible-grant-claims.md",
"docs/adr/0017-inter-sdk-behavioral-contract.md",
"docs/adr/0018-sdk-bounds-contract.md",
"docs/adr/0019-corpus-artifact-distribution.md",
"docs/adr/0020-bounds-aware-assembly-and-issuer-reauthorization-posture.md",
"docs/errata.md",
"docs/governance.md",
"docs/design/conformance-contract.md",
"docs/design/offline-authorization-requirements.md",
"docs/design/protocol-charter.md",
"docs/design/registries.md",
"docs/design/requirement-map.md",
"docs/design/standards-track.md",
"docs/design/threat-model.md"
]
]
end
defp aliases do
[
architecture: [
"compile --warnings-as-errors",
"cmd elixir scripts/check_architecture.exs"
],
audit: [
"deps.unlock --check-unused",
"hex.audit",
"deps.audit",
"sbom.generate",
"license.check",
"sbom.check"
],
"bap03.performance": [
"run --no-start scripts/check_bap03_performance.exs"
],
"bap04.performance": [
"run --no-start scripts/check_chain_archive_performance.exs"
],
"chain_archive.mutations": [
"run --no-start scripts/check_chain_archive_mutations.exs"
],
"conformance.mutations": [
"run --no-start scripts/check_conformance_mutations.exs"
],
"conformance.verify": [
"escript.build",
"cmd ./bounded_authority_conformance --corpus priv/conformance/v1/corpus"
],
"license.check": [
"cmd elixir scripts/check_dependency_licenses.exs artifacts/tooling.cdx.json"
],
"package.check": ["run --no-start scripts/check_package.exs"],
"release.candidate": ["run --no-start scripts/check_release_candidate.exs"],
"sbom.generate": [
&prepare_artifacts/1,
"cmd mix sbom.cyclonedx --only prod --exclude-system-dependencies --classification library --schema 1.6 --format json --output artifacts/release.cdx.json --force",
"cmd elixir scripts/prune_release_sbom.exs artifacts/release.cdx.json",
"cmd mix sbom.cyclonedx --exclude-system-dependencies --classification library --schema 1.6 --format json --output artifacts/tooling.cdx.json --force"
],
"sbom.check": [
"cmd elixir scripts/check_sbom.exs artifacts/release.cdx.json artifacts/tooling.cdx.json"
],
quality: [
"format --check-formatted",
"compile --warnings-as-errors",
"architecture",
"credo --strict",
"bap03.performance",
"bap04.performance",
"test --cover --seed 42",
"dialyzer",
"docs --warnings-as-errors",
"audit",
"package.check",
"release.candidate",
"chain_archive.mutations",
"conformance.mutations",
"conformance.verify"
]
]
end
defp prepare_artifacts(_args), do: File.mkdir_p!("artifacts")
end