Verify Prefix.dev sidecars#

Prefix.dev currently serves a JSON bundle array at <channel>/<subdir>/<artifact>.v0.sigs.

Verify a sidecar explicitly#

Download the fixed public package:

curl --fail --location --remote-name \
  https://prefix.dev/sigstore-example/linux-64/signed-package-2.1.0-hb0f4dca_0.conda
Invoke-WebRequest `
  -Uri https://prefix.dev/sigstore-example/linux-64/signed-package-2.1.0-hb0f4dca_0.conda `
  -OutFile signed-package-2.1.0-hb0f4dca_0.conda

Pass its adjacent sidecar URL explicitly:

conda sigstore verify signed-package-2.1.0-hb0f4dca_0.conda \
  --bundle https://prefix.dev/sigstore-example/linux-64/signed-package-2.1.0-hb0f4dca_0.conda.v0.sigs \
  --channel https://prefix.dev/sigstore-example

The command should report verified, the GitHub Actions certificate identity, and https://prefix.dev/sigstore-example as the target channel. JSON output sets prefix_sidecar to true.

Require evidence during installation#

Use process-scoped enforcement for the fixed Linux package:

CONDA_PLUGINS_CONDA_SIGSTORE_ENFORCE=true conda create \
  --name sigstore-example \
  --yes \
  --override-channels \
  --channel https://prefix.dev/sigstore-example \
  --subdir linux-64 \
  --solver classic \
  --no-deps \
  signed-package=2.1.0=hb0f4dca_0
$env:CONDA_PLUGINS_CONDA_SIGSTORE_ENFORCE = 'true'
conda create `
  --name sigstore-example `
  --yes `
  --override-channels `
  --channel https://prefix.dev/sigstore-example `
  --subdir linux-64 `
  --solver classic `
  --no-deps `
  signed-package=2.1.0=hb0f4dca_0
Remove-Item Env:CONDA_PLUGINS_CONDA_SIGSTORE_ENFORCE

The environment is created only after the adjacent bundle verifies and binds the exact package. Remove the example environment when finished:

conda env remove --name sigstore-example

Account for the transport limit#

Current Prefix.dev repodata does not commit to the .v0.sigs bytes. The verified statement still binds the exact package, but the result does not establish Prefix.dev’s publisher-admission policy.

See Standards and formats for the integrity-bound draft transport and Publish attestations to Prefix.dev for the producer workflow.