Repository navigation
test: characterize calendar cryptographic verification (Issue #1, stage 1) - #3
Draft
thunder-detector wants to merge 1 commit into
Draft
thunder-detector wants to merge 1 commit into
thunder-detector wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Refs #1. Draft; tests and diagnosis only. This does not resolve the issue.
This first stage adds synthetic baseline fixtures and a corrected diagnosis
against
f332c8bf873d2cfa4314d4f155d1acc2b3af0e42, with the existinggo-crypto v1.3.0dependency unchanged. PR #2 remains independent.What this establishes
readEventCardalready drainsUnverifiedBody. Generated MDC/SEIPDv2-AEADcorruption is rejected before ICS merging; the commented-out second drain
does not establish a disabled MDC check. Calling
Close()on thatio.Reader, or passing decoded binary to the armored signature verifier,would not be correct fixes.
signatures and continues merging events after rejected detached signatures.
Type/signature downgrades, mixed-card overwrites and missing required cards
have corresponding characterization tests.
unknown issuers, malformed signatures and invalid mathematics. They do not
establish historical Proton-format policy or authorize clock rewinding.
The tests use generated disposable keys and synthetic events only. Tests that
intentionally demonstrate unsafe baseline behavior are labelled
BaselineandKNOWN_GAP; green tests here are not security acceptance. Unsigned formats haveno author-signature assurance. A rejected replacement's local merge target is
protected in the exercised case, but persistent cache/restart safety is untested.
Evidence
The recorded Linux amd64 matrix on 2026-09-14 passed root/nested suites and
focused race checks on Go 1.26.8 and 1.27.1. Each focused run passed 14 top-level
tests plus 35 subtests. Full-root vet failed with the identical two existing
warnings at
exports/messages.go:30on both baseline and contribution.govulncheckran, but its JSON exit 0 is not a clean scan. The documentationseparates dependency version exposure from demonstrated defect reachability;
dependency remediation is outside this patch. No live Proton or Thunderbird
acceptance is claimed. The Go files are identical to the executed matrix;
the subsequent documentation revision did not rerun it.
See
docs/issue-1-baseline.mdanddocs/issue-1-results.jsonfor the fixture map,scope limits, recorded commands, source/toolchain hashes, sanitized results and
per-run fixture hashes.
Proposed gated continuation
I propose keeping one draft PR with separately reviewable commit stages:
Only stage 1 is prepared. Before behavior changes, could we agree on legitimate
unsigned card roles, historical-expiry policy, whether new unknown-issuer
read-only compatibility should exist at all, and the stale-read/status/recovery
contract? The proposed default is an acceptable retained verified snapshot or
failure; an unknown issuer alone is not evidence of a legitimate historical
author. No new compatibility allowance or strict-verification behavior is
enabled here, and a strict-verification release must wait for the dependent
no-data-loss safeguards.
If you prefer a particular stage split into a separate PR, let's discuss that
before expanding the draft. No production, dependency, public-interface or
state-format changes are included. Recurrence, attendees/invitations, Linux
product support, cache encryption, API migration and release automation remain
outside this stage.