Skip to content
getnextpdf.com

Supply-chain integrity

NextPDF’s supply-chain controls operate at two points: CI gates that run on every dependency-changing pull request and every version tag, and the release workflow, which configures provenance generation, keyless signing, and SBOM emission.

ControlType
CycloneDX 1.7 SBOM of the buildCI gate, hard
in-toto statement committing to the build inputsCI gate, hard
SHA-256 dependency-fingerprint diff against a pinned baselineCI gate, hard
OpenVEX consistency check against the dependency advisory policyCI gate, hard
Cross-fixture determinism checkCI check, best-effort
Pinned slsa-github-generator provenance generationWorkflow configuration — release workflow
Sigstore cosign keyless signing with Rekor transparency loggingWorkflow configuration — release workflow
CycloneDX 1.7 and SPDX 2.3 SBOM emissionWorkflow configuration — release workflow
Nightly php-fuzzer matrix over the parser and writer pathsScheduled CI

Every pull request that touches dependencies, and every version tag, runs:

CheckWhat it doesGate
InventoryEmits a CycloneDX 1.7 SBOM of the buildHard
Build-input recordEmits an in-toto statement committing to the build inputsHard
Dependency integrityDiffs SHA-256 byte-fingerprints against a pinned baselineHard
VEX consistencyRequires every entry in the dependency advisory policy to have a matching statement in the repository’s OpenVEX v0.2.0 documentHard
ReproducibilityRuns a determinism check across fixturesBest-effort

The dependency-integrity gate diffs SHA-256 byte-fingerprints of the dependency tree against a baseline pinned in the repository, independent of package metadata.

The release workflow pins the canonical slsa-github-generator reusable workflow, which is configured to generate in-toto provenance inside an isolated, ephemeral builder, and configures slsa-verifier to run inline against the generator’s output.

Signing and transparency — workflow configuration

Section titled “Signing and transparency — workflow configuration”

The release workflow configures Sigstore cosign keyless signing for the artifact bundle, with transparency logging to Rekor. Keyless signing derives a short-lived certificate from the workflow’s GitHub Actions OIDC identity (https://token.actions.githubusercontent.com) for each run.

The release workflow configures dual SBOM emission — a CycloneDX 1.7 document and an SPDX 2.3 document.

A nightly php-fuzzer matrix, together with an AST/structure-tree harness, exercises the parser and writer paths.