Go Client Overview

sigstore-go is the Go language client library for Sigstore.

sigstore-go is intended as a minimal dependency library for signing and verifying. It’s not intended to replace cosign, which provides a CLI with many features for interacting with Sigstore. Over time, cosign will use sigstore-go for verification.

  • Friendly API for integrating Go code with Sigstore
  • Smaller dependency tree
  • Focuses on newly specified data structures in sigstore/protobuf-specs
  • Perfect for simple signing and verififcation tasks

sigstore-go is currently in beta.

Features

  • Signing and verification of Sigstore bundles
  • Verification of raw Sigstore signatures
  • Signing and verifying with a Timestamp Authority (TSA)
  • Online and offline signing and verifying with Rekor (Artifact Transparency Log)
  • Structured verification results including certificate metadata
  • TUF support
  • Verification support for custom trusted root
  • Basic CLI

Installation

Main CLI installation

sigstore-go requires Go 1.21 or greater. The package is tested with Go 1.23.

To compile/install the CLI, clone sigstore-go and run.

make install

Alternatively, you can use go run cmd/sigstore-go/main.go to access the CLI, as show in the example.

Example

CLI example

The following is an example of using the sigstore-go CLI to verify a signature.

go run cmd/sigstore-go/main.go \
  -artifact-digest 76176ffa33808b54602c7c35de5c6e9a4deb96066dba6533f50ac234f4f1f4c6b3527515dc17c06fbe2860030f410eee69ea20079bd3a2c6f3dcf3b329b10751 \
  -artifact-digest-algorithm sha512 \
  -expectedIssuer https://token.actions.githubusercontent.com \
  -expectedSAN https://github.com/sigstore/sigstore-js/.github/workflows/release.yml@refs/heads/main \
  examples/bundle-provenance.json
Verification successful!
{
   "version": 20230823,
   "statement": {
      "_type": "https://in-toto.io/Statement/v0.1",
      "predicateType": "https://slsa.dev/provenance/v0.2",
      "subject": ...
    },
    ...
}

Additional examples

Additional examples are available in the project documentation.