Skip to content

Make unpinned verify surface missing signer pin - #5

Open
AshSgDe29071999 wants to merge 2 commits into
AgentPostmortem:mainfrom
AshSgDe29071999:fix/unpinned-signer-visibility
Open

Make unpinned verify surface missing signer pin#5
AshSgDe29071999 wants to merge 2 commits into
AgentPostmortem:mainfrom
AshSgDe29071999:fix/unpinned-signer-visibility

Conversation

@AshSgDe29071999

Copy link
Copy Markdown

Summary

Without --expect-key / expected_public_key, a receipt that an attacker rewrote and re-signed with their own key still returned valid: true with nothing in skipped about provenance. The signature check is correct; the report was not.

  • Record signer_pin in skipped when no expected key is supplied
  • CLI emits a one-line stderr warning when --expect-key is omitted
  • Human output notes that integrity is proven but provenance is not
  • README table documents the unpinned vs pinned outcomes
  • Tests cover the attacker re-sign case and CLI/JSON surfaces

Pinned verify behavior is unchanged.

Test plan

  • pytest (all green)
  • Unpinned verify includes signer_pin in skipped
  • Pinned verify still reports signer_pin as a check, not skipped
  • Attacker rewrite + re-sign is not presented as a clean provenance pass

Fixes #3

AshSgDe29071999 and others added 2 commits August 8, 2026 18:13
When expected_public_key / --expect-key is omitted, signature verification
still proves integrity against the key embedded in the receipt — including an
attacker key after rewrite-and-re-sign. Record signer_pin as skipped in the
JSON verdict, print a CLI warning, and document the distinction in the README.

Fixes AgentPostmortem#3
@AshSgDe29071999

Copy link
Copy Markdown
Author

Fixed ruff E501 on the signer_pin assertion in tests/test_cli.py (line wrap).

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.

A verdict is reported as valid when no signer was pinned, which is the case that proves nothing

1 participant