#key #security #verify #interact #integration #cosign #fulcio

sigstore

An experimental crate to interact with sigstore

15 unstable releases (7 breaking)

0.10.0 Sep 11, 2024
0.9.0 Mar 27, 2024
0.8.0 Dec 15, 2023
0.7.2 Jul 7, 2023
0.1.0 Aug 19, 2021

#88 in Cryptography

Download history 505/week @ 2024-06-13 387/week @ 2024-06-20 248/week @ 2024-06-27 571/week @ 2024-07-04 229/week @ 2024-07-11 117/week @ 2024-07-18 362/week @ 2024-07-25 194/week @ 2024-08-01 277/week @ 2024-08-08 222/week @ 2024-08-15 590/week @ 2024-08-22 629/week @ 2024-08-29 951/week @ 2024-09-05 932/week @ 2024-09-12 1055/week @ 2024-09-19 1043/week @ 2024-09-26

4,152 downloads per month
Used in 7 crates (5 directly)

Apache-2.0

560KB
10K SLoC

Continuous integration Docs License Crate version Crate downloads
Continuous integration Docs License: Apache 2.0 Crate version Crate downloads

A crate to interact with sigstore.

This crate is under active development and will not be considered stable until the 1.0 release.

Features

Cosign Sign and Verify

The crate implements the following verification mechanisms:

  • Sign using a cosign key and store the signature in a registry
  • Verify using a given key
  • Verify bundle produced by transparency log (Rekor)
  • Verify signature produced in keyless mode, using Fulcio Web-PKI

Signature annotations and certificate email can be provided at verification time.

Fulcio Integration

For use with Fulcio ephemeral key signing, an OpenID connect API is available, along with a fulcio client implementation.

Rekor Client

All rekor client APIs can be leveraged to interact with the transparency log.

Key Interface

Cryptographic key management with the following key interfaces:

  • Generate a key pair
  • Sign data
  • Verify signature
  • Export public / (encrypted) private key in PEM / DER format
  • Import public / (encrypted) private key in PEM / DER format

Known limitations

  • The crate does not handle verification of attestations yet.

Examples

The examples directory contains demo programs using the library.

Each example can be executed with the cargo run --example <name> command.

For example, openidconnect can be run with the following command:

cargo run --example openidconnect

WebAssembly/WASM support

To embedded this crate in WASM modules, build it using the wasm cargo feature:

cargo build --no-default-features --features wasm --target wasm32-unknown-unknown

NOTE: The wasm32-wasi target architecture is not yet supported.

Contributing

Contributions are welcome! Please see the contributing guidelines for more information.

Security

Should you discover any security issues, please refer to sigstores security process

Dependencies

~23–41MB
~785K SLoC