Commands#
The plugin registers one conda sigstore subcommand. It uses the active conda
configuration and target prefix.
Human output uses terminal styling when supported. --json writes one
unstyled JSON value without human status lines or ANSI escapes. See
JSON output and exit status for the machine contract.
conda sigstore attest#
conda sigstore attest PACKAGE --target-channel URL [--output PATH]
Create and keylessly sign one strict CEP 27 publication statement for
PACKAGE. The command writes one Sigstore Bundle v0.3 JSON object. It does not
upload the package or assemble a channel sidecar.
Argument |
Required |
Meaning |
|---|---|---|
|
yes |
Local |
|
yes |
Credential-free HTTP or HTTPS channel recorded as |
|
no |
Bundle output path, defaulting to |
The command refuses to replace the input package or an existing output file. It rehashes the package before committing the output so a package changed during the OIDC and signing flow cannot produce a successful command.
The output is a single bundle object. Channel tooling wraps one or more
complete bundle objects in the JSON array served byte-for-byte at mutable
<PACKAGE>.sigs and immutable <PACKAGE>.sigs.<sha256> for the PR 142
transport. The current Prefix.dev compatibility transport instead uses
<PACKAGE>.v0.sigs.
conda sigstore verify#
conda sigstore verify ARTIFACT --bundle PATH_OR_URL [--channel URL] \
[--cert-identity IDENTITY --cert-oidc-issuer URL] [--json]
Verify a local package archive against a local or remote Bundle v0.3 object or nonempty bundle array.
Argument |
Required |
Meaning |
|---|---|---|
|
yes |
Local package archive whose filename and SHA-256 must match the statement |
|
yes |
Local file or HTTP or HTTPS URL containing one bundle object or a nonempty bundle array |
|
no |
Expected channel for an included |
|
paired |
Exact certificate Subject Alternative Name required for this invocation |
|
paired |
Exact certificate OIDC issuer required for this invocation |
|
no |
Write the version 1 verification result as JSON |
|
no |
Select human output or structured plugin result output |
|
no |
Increase conda logging verbosity, repeatable up to trace output |
|
no |
Disable conda progress output |
--cert-identity and --cert-oidc-issuer must be supplied together. Their
values must come from an independent publisher or release configuration, not
from the bundle being checked. They apply only to this command and are not
stored as channel policy.
--json and --console json select the same conda-sigstore result after
verification runs. Only --json also selects conda’s JSON error reporter for
argument, input, and configuration failures. --verbose controls conda
logging. --quiet controls conda progress output, although this command does
not create a progress bar.
Verification checks:
the SHA-256 and exact filename of the artifact
the bundle structure and DSSE signature
the Fulcio certificate chain and OIDC issuer evidence
Rekor inclusion and checkpoint material
supported signed timestamp material
the strict CEP 27 statement structure
an included target-channel claim
the exact signer pair when both signer options are supplied
When --channel is supplied, an included targetChannel must match it.
Without --channel, the claim is validated and reported but is not compared
with an expected channel.
The result reports the authenticated certificate identity and issuer. It does not claim that the channel authorized that signer.
conda sigstore audit#
conda sigstore audit [-n ENVIRONMENT | -p PREFIX] [--sources] \
[--prefix-sidecars] [--json]
Audit package records in an existing conda environment. If neither target option is supplied, conda’s active target prefix is used.
Argument |
Required |
Meaning |
|---|---|---|
|
no |
Named conda environment to audit |
|
no |
Environment prefix to audit |
|
no |
Audit draft embedded source-attestation evidence after package publication verification succeeds |
|
no |
Use Prefix.dev’s current adjacent |
|
no |
Write the version 1 audit report as JSON |
|
no |
Select human output or structured plugin result output |
|
no |
Increase conda logging verbosity, repeatable up to trace output |
|
no |
Disable conda progress output |
--name and --prefix are mutually exclusive. --json and --console json
select the same audit report after auditing runs. Only --json also selects
conda’s JSON error reporter for command setup failures. --verbose controls
conda logging. --quiet controls conda progress output, although this command
does not create a progress bar.
By default, audit reads only repodata-advertised immutable sidecars. The
package record must preserve attestations_sha256 as exactly 64 lowercase
hexadecimal characters. The client derives
<artifact>.sigs.<attestations_sha256>, applies its configured streaming limit,
verifies the exact SHA-256, and only then parses the sidecar. An absent field is
not probed and reports missing.
Current conda PackageRecord objects and solver conversion paths do not
preserve attestations_sha256. Real installed-environment audits therefore
need a conda change before they can select the PR 142 transport. An audit can
report missing even when a channel serves the immutable sidecar.
--prefix-sidecars explicitly selects Prefix.dev’s current, repodata-unpinned
.v0.sigs convention. It never runs as an automatic audit fallback.
--sources reads draft source-attestation declarations and embedded bundles
from a retained package archive. See
Source-attestation audit format for the exact input
contract. SLSA and source evidence are report-only. The audit does not assign a
SLSA level or authorize a package publisher.
An audit describes evidence currently available to the client. It does not prove that a package was verified before extraction or installation.
Opt-in package verification#
The plugin registers a direct package-verifier hook against the unreleased
conda API in conda/conda#16518.
It yields no verifier unless plugins.conda_sigstore_enforce is true. The
standard environment override is:
CONDA_PLUGINS_CONDA_SIGSTORE_ENFORCE=true conda install PACKAGE
Enabled verification rejects a package unless its selected evidence verifies.
The PR 142 path also requires conda to preserve attestations_sha256 on the
selected PackageRecord. Until conda adds that support, solver and install
flows select the separate adjacent Prefix.dev compatibility path when the field
is absent.
See Upstream integration contracts for the hook and
evidence-selection rules.