Metadata-Version: 2.4
Name: conda-sigstore
Version: 0.1.1
Summary: Create and verify Sigstore attestations for conda packages
Project-URL: Changelog, https://github.com/jezdez/conda-sigstore/blob/main/CHANGELOG.md
Project-URL: Documentation, https://jezdez.github.io/conda-sigstore
Project-URL: Homepage, https://github.com/jezdez/conda-sigstore
Project-URL: Issues, https://github.com/jezdez/conda-sigstore/issues
Project-URL: Repository, https://github.com/jezdez/conda-sigstore
Project-URL: Security, https://github.com/jezdez/conda-sigstore/security/policy
Author-email: Jannis Leidel <jannis@leidel.info>
Maintainer-email: Jannis Leidel <jannis@leidel.info>
License-Expression: BSD-3-Clause
License-File: LICENSE
Keywords: conda,in-toto,plugin,sigstore,supply-chain-security
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Software Distribution
Requires-Python: >=3.11
Requires-Dist: cryptography>=42
Requires-Dist: pyasn1~=0.6
Requires-Dist: rich>=13
Requires-Dist: sigstore<5,>=4.5
Description-Content-Type: text/markdown

# conda-sigstore

`conda-sigstore` creates and verifies Sigstore attestations for conda packages.
It can also audit installed environments and, when explicitly enabled, reject a
package before extraction when acceptable evidence is unavailable or invalid.

The project is alpha software. Version 0.1.1 is distributed through PyPI. The
opt-in install integration requires the unreleased package-verifier API in
[conda/conda#16518](https://github.com/conda/conda/pull/16518), and draft
transport and source-evidence formats may still change incompatibly.

## What it does

- Verify a package against a local or remote Sigstore bundle.
- Create a signed [CEP 27](https://github.com/conda/ceps/blob/main/cep-0027.md)
  publication statement.
- Audit installed packages for publication, provenance, and recipe source
  evidence.
- Require valid CEP 27 evidence before conda extracts a package.
- Read the draft repodata-advertised immutable `.sigs.<sha256>` transport and,
  separately, Prefix.dev's current `.v0.sigs` convention.

The draft transport follows
[conda/ceps#142](https://github.com/conda/ceps/pull/142) at commit
`241d1cf43f4db5af484be59ad0b840a1b9e5d616`. Current conda `PackageRecord`
objects do not preserve its `attestations_sha256` field, so real solver,
install, and installed-environment audit flows require a corresponding conda
change before they can select the draft transport.

## Install

conda-sigstore requires Python 3.11 or newer. Install it in the Python
environment that owns the `conda` executable.

conda 26.5 and newer include the
[`conda-pypi`](https://conda.github.io/conda-pypi/quickstart/) plugin. For a
standard conda installation, activate `base` and install 0.1.1 from PyPI as a
conda package:

```console
conda activate base
conda pypi install "conda-sigstore==0.1.1"
```

If `conda pypi` is not available, follow the
[installation guide](https://jezdez.github.io/conda-sigstore/how-to/install/)
to install the wheel with pip. The guide also documents the source preview and
the separate requirements for install enforcement.

## Commands

```console
conda sigstore attest PACKAGE --target-channel URL [--output PATH]
conda sigstore verify ARTIFACT --bundle PATH_OR_URL [--channel URL] \
  [--cert-identity IDENTITY --cert-oidc-issuer URL] [--json]
conda sigstore audit [-n ENV | -p PREFIX] [--sources] [--prefix-sidecars] [--json]
```

Choose the path that matches your task:

- [Verify a public package](https://jezdez.github.io/conda-sigstore/tutorials/getting-started/)
- [Sign a package](https://jezdez.github.io/conda-sigstore/tutorials/sign-package/)
- [Audit an installed environment](https://jezdez.github.io/conda-sigstore/how-to/audit-environment/)
- [Configure install verification](https://jezdez.github.io/conda-sigstore/how-to/configure-verification/)
- [Publish attestations to Prefix.dev](https://jezdez.github.io/conda-sigstore/how-to/publish-prefix/)
- [Look up commands and output formats](https://jezdez.github.io/conda-sigstore/reference/commands/)

## Security boundary

A successful result proves that Sigstore verified the bundle and that its CEP
27 statement binds the package filename and SHA-256. It reports the
authenticated signer and can compare an included target-channel claim.

It does not prove that the signer was authorized to publish to that channel,
that the package was built safely, or that its contents are benign.

Read the
[security model](https://jezdez.github.io/conda-sigstore/explanation/security-model/)
and report vulnerabilities according to the
[security policy](https://github.com/jezdez/conda-sigstore/security/policy).

## Development

```console
pixi run --locked -e dev check
pixi run --locked -e test test
pixi run --locked -e test bench
pixi run --locked -e docs docs
```

See the
[contribution guide](https://github.com/jezdez/conda-sigstore/blob/main/CONTRIBUTING.md)
for the full development and release workflow. `conda-sigstore` is licensed
under the BSD 3-Clause License.
