Verify with sigstore-python#
Use the standard sigstore command to check a raw bundle independently of the
conda-specific verifier.
Install the inspection tools#
The owning conda-sigstore environment already contains the sigstore CLI.
The inspection command also needs jq, which you can install with your system
package manager. Confirm that both commands are available:
sigstore --version
jq --version
Start with a package and raw Bundle v0.3 object created by Sign a package.
Inspect the bundle#
jq -r '.mediaType, .dsseEnvelope.payloadType' \
./demo-package-1.0-0.conda.sigstore.json
The expected values are:
application/vnd.dev.sigstore.bundle.v0.3+json
application/vnd.in-toto+json
Supply the expected signer#
Obtain the certificate identity and issuer from the publisher’s documented release workflow, not from the bundle being checked.
export EXPECTED_CERTIFICATE_IDENTITY='https://github.com/OWNER/REPOSITORY/.github/workflows/release.yml@refs/tags/v1.0.0'
export EXPECTED_OIDC_ISSUER='https://token.actions.githubusercontent.com'
sigstore verify identity \
--bundle ./demo-package-1.0-0.conda.sigstore.json \
--cert-identity "$EXPECTED_CERTIFICATE_IDENTITY" \
--cert-oidc-issuer "$EXPECTED_OIDC_ISSUER" \
./demo-package-1.0-0.conda
$env:EXPECTED_CERTIFICATE_IDENTITY = 'https://github.com/OWNER/REPOSITORY/.github/workflows/release.yml@refs/tags/v1.0.0'
$env:EXPECTED_OIDC_ISSUER = 'https://token.actions.githubusercontent.com'
sigstore verify identity `
--bundle ./demo-package-1.0-0.conda.sigstore.json `
--cert-identity $env:EXPECTED_CERTIFICATE_IDENTITY `
--cert-oidc-issuer $env:EXPECTED_OIDC_ISSUER `
./demo-package-1.0-0.conda
A successful command prints the verified in-toto statement. It checks the Sigstore material, expected identity, issuer, and subject digest. It does not enforce CEP 27’s exact filename, single-subject, predicate, or target-channel rules.
Run conda sigstore verify as well when those checks are required.
Repeat the independent check offline#
After an online verification initializes Sigstore’s production trust material,
add --offline:
sigstore verify identity --offline \
--bundle ./demo-package-1.0-0.conda.sigstore.json \
--cert-identity "$EXPECTED_CERTIFICATE_IDENTITY" \
--cert-oidc-issuer "$EXPECTED_OIDC_ISSUER" \
./demo-package-1.0-0.conda
sigstore verify identity --offline `
--bundle ./demo-package-1.0-0.conda.sigstore.json `
--cert-identity $env:EXPECTED_CERTIFICATE_IDENTITY `
--cert-oidc-issuer $env:EXPECTED_OIDC_ISSUER `
./demo-package-1.0-0.conda
Missing local trust material causes the command to fail.