GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Implements signed index support by zooba · Pull Request #312 · python/pymanager

Conversation

@zooba

@zooba zooba commented Apr 13, 2026

Copy link
Copy Markdown
Member

Fixes #308

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
zooba added 16 commits April 10, 2026 15:53
@zooba
[WIP] Implement feed signatures
f97911a
@zooba
[WIP] More implementation
8ab05e6
@zooba
Update release builds to use new signing
d7171bd
@zooba
Fix some YAML issues
3830ad6
@zooba
Pipeline fixes
318b5a8
@zooba
Pipeline fixes
703801e
@zooba
Checkout self for tests
fc10180
@zooba
Update command name
1455da8
@zooba
Fix sign command
2e059f1
@zooba
Allow IndexDownloader cmd to be None
7ed5854
@zooba
Update argument names
d9b45cd
@zooba
Better non-publish option
2c693f8
@zooba
Fix directory
6e6b1ea
@zooba
Add tests, improve logging
e4d10a6
@zooba
Fix publishing step
8126b6c
@zooba
Synchronise GHA with AzP
034da37
@zooba
zooba requested a review from Copilot April 13, 2026 20:19
Copilot started reviewing on behalf of zooba April 13, 2026 20:19
View session
Copilot AI reviewed Apr 13, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds signed-index verification for runtime feed JSONs, aiming to detect tampering of the python.org index while keeping the feature configurable for other sources (Fixes #308).

Changes:

  • Introduces a Windows native _native.verify_trust implementation to validate a JSON file against a signed catalog (.cat) using OS trust.
  • Extends IndexDownloader to fetch and validate {index_url}.cat before processing indexes, with configurable per-source requirements (source_settings).
  • Updates CI pipelines to generate/sign catalog files for partitioned indexes and upload the resulting .json.cat artifacts; adds tests and test fixtures.

Reviewed changes

Copilot reviewed 18 out of 22 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
tests/test_verify.py Adds end-to-end tests covering successful verification and failure/bypass paths.
tests/data/self-signed.cat Adds an untrusted (self-signed) catalog fixture for negative tests.
tests/data/psf-signed.cat Adds a trusted/signed catalog fixture for positive tests.
tests/data/index-windows.json Adds a test index fixture used by verification tests.
src/pymanager.json Adds default source_settings for python.org index URLs.
src/manage/urlutils.py Implements signature download/verification flow in IndexDownloader.
src/manage/list_command.py Updates call sites for new IndexDownloader(cmd, ...) signature.
src/manage/install_command.py Updates call sites for new IndexDownloader(cmd, ...) signature.
src/manage/indexutils.py Extends index schema with signature-related fields.
src/manage/exceptions.py Adds an exit code to InvalidFeedError for CLI handling.
src/manage/commands.py Adds source_settings to config schema and command attributes.
src/manage/init.py Treats InvalidFeedError as a user-facing error with an exit code.
src/_native/verify_trust.cpp Adds native Windows verification logic for signed catalog + file hash membership.
scripts/repartition-index.py Updates for new IndexDownloader constructor signature.
ci/upload.py Uploads .json.cat alongside .json for index publishing.
ci/sign-files.yml Adds reusable signing template used by pipelines.
ci/repartition-index.yml Generates catalogs for index JSONs, signs them, and handles publish vs pretend-publish paths.
ci/release.yml Refactors signing parameters and uses sign-files.yml; restructures post-test and publish stages.
_msbuild_test.py Links wintrust.lib and exports verify_trust for test builds.
_msbuild.py Links wintrust.lib and exports verify_trust for production builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/manage/urlutils.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread ci/release.yml Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/manage/urlutils.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/manage/commands.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/manage/indexutils.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/manage/urlutils.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/_native/verify_trust.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/_native/verify_trust.cpp Resolved

Uh oh!

There was an error while loading. Please reload this page.

zooba added 11 commits April 13, 2026 22:24
@zooba
Apply code review feedback
8325b63
@zooba
Add missing header
6279284
@zooba
Minor YAML fixes
f957118
@zooba
Fix failing test
415503c
@zooba
Require signatures for main feeds
9dd5da7
@zooba
Remove unused function
03e949e
@zooba
Make separate .cat files when repartitioning
dfb7562
@zooba
Include signing description
f7ca4b7
@zooba
Add tests for signature settings inside the feed
90075d3
@zooba
Log settings used for feeds with own settings
4e0c108
@zooba
Ensure firstrun test is immune to system installs
e926253
@zooba
zooba merged commit 38c243c into main Apr 15, 2026
5 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@zooba
zooba deleted the gh-308 branch April 15, 2026 18:34
@zooba zooba mentioned this pull request Apr 15, 2026
Create pydotorg release automatically #302
Open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Implement signed index support

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@zooba
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.