OpenShield release artifacts are produced only from a GitHub-verified signed annotated tag. GitHub Actions generates a deterministic source archive, a CycloneDX SBOM and SHA-256 checksums, then creates identity-bound Sigstore provenance attestations before uploading the files to the release.
Download all release assets into one directory, then run:
sha256sum --check SHA256SUMSInstall the GitHub CLI and verify each artifact against this repository:
gh attestation verify openshield-vX.Y.Z.tar.gz \
--repo openshield-org/openshield \
--signer-workflow openshield-org/openshield/.github/workflows/release.yml
gh attestation verify openshield-vX.Y.Z-sbom.cyclonedx.json \
--repo openshield-org/openshield \
--signer-workflow openshield-org/openshield/.github/workflows/release.yml
gh attestation verify SHA256SUMS \
--repo openshield-org/openshield \
--signer-workflow openshield-org/openshield/.github/workflows/release.ymlSuccessful verification proves that the artifact digest was attested by the OpenShield release workflow for this public repository. It does not mean that GitHub or Sigstore audited the source code.
- Confirm the release commit is on the approved
mainhistory and CI passes. - Create a signed annotated tag:
git tag -s vX.Y.Z -m "OpenShield vX.Y.Z". SSH signing may be used when Git is configured withgpg.format=ssh. - Verify locally with
git tag -v vX.Y.Zusing the project's trusted signer configuration. - Push only the tag:
git push origin vX.Y.Z. - The workflow independently asks GitHub to verify the tag signature. A lightweight or unverified tag fails before artifacts are produced.
- After publication, download and verify every asset using the commands above.
Existing historical lightweight tags are not retroactively described as signed.