Skip to content

Harden plugin catalog validation and release signing - #1147

Closed
krotname wants to merge 5 commits into
notepad-plus-plus:masterfrom
krotname:agent/harden-plugin-list-validation
Closed

Harden plugin catalog validation and release signing#1147
krotname wants to merge 5 commits into
notepad-plus-plus:masterfrom
krotname:agent/harden-plugin-list-validation

Conversation

@krotname

Copy link
Copy Markdown
Contributor

What changed

  • add strict schema, semantic, duplicate-key, archive, URL, hash, and DLL validation
  • make offline catalog and generated-document checks deterministic
  • retain the merged transient-download retry behavior in the hardened downloader
  • pin workflow actions and Python dependencies by immutable versions and hashes
  • isolate OIDC signing from build jobs, sign only the catalog DLL, and verify Authenticode output
  • add 30 regression and repository-policy tests

Root cause

The previous validator trusted redirects and archives too broadly, mixed network and local validation, and offered limited protection against malformed catalogs or hostile packages. The release job also exposed signing authority to a broader build scope and selected a floating signing tool version.

Validation

  • python -m unittest discover -s tests -v (30 tests)
  • python validator.py all --offline
  • Python compile check
  • YAML parse of both GitHub Actions workflows
  • lock file regenerated with Python 3.12 and pip-compile --generate-hashes
  • git diff --check for authored changes; upstream catalogs retain their existing CRLF lines

@krotname
krotname marked this pull request as ready for review July 29, 2026 23:01
@krotname krotname closed this Jul 29, 2026
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.

1 participant