• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 33511308889
70%

Build:
DEFAULT BRANCH: main
Ran 01 Sep 2026 01:13PM UTC
Jobs 1
Files 904
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

01 Sep 2026 01:05PM UTC coverage: 69.732% (-0.006%) from 69.738%
33511308889

push

github

web-flow
Verify key-signed skill installs against a public key (#6447)

* Encode and bound the pinned cosign public key

The lock file stores a pinned key as single-line base64 DER SPKI because
provenance values must be graphic and whitespace-free, so PEM armor cannot
be stored verbatim. Nothing converted between the two forms yet, and the
field shared the reference length bound, which is narrower than the key
material it now has to hold.

Add EncodePublicKey/DecodePublicKey as the single conversion between a
cosign.pub file and the stored form. Encoding refuses a private key by its
PEM label rather than by whatever a PKIX parse makes of its bytes: the
result is sent over the API and written to the lock file, and neither is
somewhere private material should reach by accident. Decoding re-validates
rather than trusting its input, since the value arrives from a request body
or a hand-editable file and is the artifact's only trust anchor.

Give publicKey its own bound: an RSA-4096 SPKI encodes to 736 characters,
so the 512 reference limit would reject a legitimate anchor rather than the
oversized garbage these limits exist to stop. Run the syntactic field checks
before the anchor's decode, so the length is bounded by a checked number
instead of the allocation being sized off an unchecked one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Signed-off-by: Samuele Verzi <samu@stacklok.com>

* Verify key-signed skill installs by public key

A skill pushed with `thv skill push --key` could be published but never
installed project-scoped: the keyless path has no trust root to chain a
key-pair signature to, and the signing key is recoverable from neither the
artifact nor its bundle, so nothing could supply the anchor. The previous
change made that refusal honest; this one gives it a way through.

Add `--public-key` to `thv skill install`, carried to the service as encoded
key material rather than as a path, since the server may be another process
o... (continued)

186 of 225 new or added lines in 9 files covered. (82.67%)

52 existing lines in 4 files now uncovered.

76644 of 109912 relevant lines covered (69.73%)

91.87 hits per line

Uncovered Changes

Lines Coverage ∆ File
19
18.99
-0.66% cmd/thv/app/skill_install.go
9
89.54
1.4% pkg/skills/skillsvc/verify.go
5
84.85
pkg/skills/verifier/publickey.go
4
73.68
3.84% pkg/skills/verifier/oci.go
2
77.27
-0.55% pkg/skills/skillsvc/install.go

Coverage Regressions

Lines Coverage ∆ File
47
59.42
-4.68% pkg/workloads/manager.go
3
0.0
-100.0% pkg/workloads/sysproc_unix.go
1
94.96
0.0% pkg/authserver/storage/memory.go
1
81.07
-0.12% pkg/vmcp/composer/workflow_engine.go
Jobs
ID Job ID Ran Files Coverage
1 33511308889.1 01 Sep 2026 01:13PM UTC 904
69.73
GitHub Action Run
Source Files on build 33511308889
  • Tree
  • List 904
  • Changed 17
  • Source Changed 9
  • Coverage Changed 16
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33511308889
  • 1af4f80d on github
  • Prev Build on main (#33420391085)
  • Next Build on main (#33531463669)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc