Scope
Split from #106 (supply-chain hardening) because this piece is blocked on obtaining a code-signing certificate, whereas the SBOM / SLSA attestation / consumer-verification pieces can proceed without one.
Sign the released .nupkg with a verifiable code-signing certificate so consumers can run nuget verify on the package and be sure it came from this repo unaltered.
Two candidate paths
- Traditional PKI (NuGet Trusted Signers) — buy a code-signing cert from a CA (DigiCert, Sectigo, SSL.com; typically $200–$500/yr for a standard code-signing cert, more for EV). Store the cert in a secure signing service (Azure Key Vault, GitHub-hosted signer, or a physical HSM) and invoke
dotnet nuget sign in release.yaml. Consumers verify via nuget verify -Signatures <package>.nupkg.
- Sigstore (keyless, OIDC-based) — no cert to buy; the workflow's OIDC identity is the signer.
sigstore-cosign-style verification. Newer, less established in the .NET ecosystem, but no procurement path.
Prerequisite
Acceptance criteria
Notes
Scope
Split from #106 (supply-chain hardening) because this piece is blocked on obtaining a code-signing certificate, whereas the SBOM / SLSA attestation / consumer-verification pieces can proceed without one.
Sign the released
.nupkgwith a verifiable code-signing certificate so consumers can runnuget verifyon the package and be sure it came from this repo unaltered.Two candidate paths
dotnet nuget signinrelease.yaml. Consumers verify vianuget verify -Signatures <package>.nupkg.sigstore-cosign-style verification. Newer, less established in the .NET ecosystem, but no procurement path.Prerequisite
Acceptance criteria
release.yamlsigns the.nupkgbefore uploading to NuGet.org.nuget verify -Signaturessucceeds on the published package.SECURITY.md(per [Maintenance] security: Supply chain hardening — SBOM + SLSA attestation #106) documents how to validate the signature.Notes