Skip to content

fix: add Ed25519 detached-signature verification to manifest/skill fetch (PILOT-111)#3

Merged
TeoSlayer merged 1 commit into
mainfrom
openclaw/pilot-111-20260528-085738
May 28, 2026
Merged

fix: add Ed25519 detached-signature verification to manifest/skill fetch (PILOT-111)#3
TeoSlayer merged 1 commit into
mainfrom
openclaw/pilot-111-20260528-085738

Conversation

@matthew-pilot
Copy link
Copy Markdown
Collaborator

What

Adds optional Ed25519 detached-signature verification to the skillinject fetcher. When ManifestPublicKey is set in Config, the fetcher retrieves <url>.sig alongside each resource and verifies before accepting. When nil, behavior is unchanged (full backward compatibility).

Why

The manifest and skill files are fetched over HTTPS without any payload integrity check beyond the TLS chain. A compromised or mis-issued CA (corporate proxy, captive portal, rogue CDN edge) could serve a forged manifest that installs arbitrary plugin code running with full daemon trust. This adds a cryptographic second factor independent of the TLS PKI.

Changes

  • manifest.go: fetcher gets a publicKey field; new getOrVerify() method fetches <url> and <url>.sig, verifies via ed25519.Verify. Backward compatible when key is nil.
  • skillinject.go: Config gains ManifestPublicKey ed25519.PublicKey.
  • zz_extra_branches_test.go: Three new tests — valid sig, wrong key, missing .sig.

3 files changed, +128/-3 lines.

Ticket

🔗 https://vulturelabs.atlassian.net/browse/PILOT-111

Test plan

go build ./...
go test ./...
go vet ./...

All existing tests pass. Three new tests cover the signature verification path.

…tch (PILOT-111)

manifest.go: add ManifestPublicKey to fetcher, getOrVerify() fetches
<url>.sig alongside each resource and verifies before accepting. Nil
key preserves backward-compatible behavior (no verification).

skillinject.go: add ManifestPublicKey ed25519.PublicKey to Config.

zz_extra_branches_test.go: three tests covering valid-sig, wrong-key,
and missing-.sig paths.
@codecov
Copy link
Copy Markdown

codecov Bot commented May 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@TeoSlayer TeoSlayer merged commit 6436778 into main May 28, 2026
2 checks passed
@TeoSlayer TeoSlayer deleted the openclaw/pilot-111-20260528-085738 branch May 28, 2026 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants