Help us shape the future of Go! Take the 2026 Go Developer Survey

trustdisclosure

package
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 12, 2026 License: AGPL-3.0, AGPL-3.0-only Imports: 4 Imported by: 0

Documentation

Overview

Package trustdisclosure interprets a publish ResultsManifest into a STRUCTURED trust disclosure — typed facts, never pre-baked prose. It is the first narrow slice of trust-CONSUMPTION logic lifted out of the release command, so the publisher stays a transcriber: the release renderer (and later an API, a policy UI, or the verification engine) formats these facts however it needs, rather than each re-deriving "the primary signature" or "which layers" from raw outcomes.

Interpretation here is PURE — no filesystem, no config, no rendering. The continuity anchor is loaded at the edge (impure: state dir + identity) and passed IN, so this package is a total function of (results, anchor). That keeps the boundary the rest of the subsystem already holds: interpretation pure, acquisition impure. As the verification engine matures it will own this summarization; the release renderer is then a formatter around its output.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Anchor

type Anchor struct {
	Fingerprint string
	Asset       string // release-asset filename for the public key (e.g. "cosign.pub")
}

Anchor is the pinnable continuity identity — loaded at the edge and passed to Build.

type AttestationFact

type AttestationFact struct {
	PredicateType    string
	Class            string
	Tier             string
	TrustDomain      string
	NonExportable    bool
	PhysicalPresence bool
	VerifiedDigest   string
}

AttestationFact is one provenance attestation's recorded dimensions.

type Disclosure

type Disclosure struct {
	Primary      *SignatureFact    // headline signature (Tier-0 first, else first); nil if no signatures
	Layers       []SignatureFact   // other signatures, deduped, primary excluded
	Attestations []AttestationFact // provenance attestations, deduped
	Anchor       *Anchor           // pinnable continuity anchor, when this release carries a Tier-0 sig + a loaded identity
}

Disclosure is the structured trust disclosure for one release.

func Build

func Build(results *artifact.ResultsManifest, anchor *Anchor) *Disclosure

Build interprets the results manifest into a structured disclosure. Pure: the caller loads the identity (if any) and passes it as anchor; Build attaches it only when this release actually carries a Tier-0 signature (never a stale anchor for a release it did not sign). Returns nil when there is nothing to disclose.

func (*Disclosure) ChecksumSig

func (d *Disclosure) ChecksumSig() string

ChecksumSig returns the detached-checksum signature asset for a verify recipe — the first blob signature (Tier-0 preferred, since signatures are sorted Tier-0-first).

type SignatureFact

type SignatureFact struct {
	Class            string // key | oidc | kms | hardware
	Tier             string // raw tier ("tier0-software", …); the renderer maps to a human label
	TrustDomain      string // oidc/keyless ecosystem ("public-sigstore", a label, a Fulcio host)
	SignerRef        string
	Transparency     bool
	NonExportable    bool
	PhysicalPresence bool
	Asset            string // detached-signature filename (blob) or image digest ref
	IsBlob           bool
}

SignatureFact is one signature's recorded trust dimensions — the SAME type for the primary and for additional layers (a layer is just a non-primary signature).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL