bullet: integrated work for human review #18

Merged
EduarD3V merged 9 commits from bullet-develop into main 2026-10-14 13:20:28 +02:00
Owner

Rolling PR. All bullet work lands on bullet-develop via per-issue PRs (auto-merged after review + gates). Merge this single PR into main when satisfied.

Integrated issues:

  • PR #16 — Use case: verify signatures (upload -> validity report)

Automated by bullet: implemented → reviewed (independent model) → gates green → auto-merged into bullet-develop. Trunk is human territory; this PR is the one button the human presses.

**Rolling PR.** All bullet work lands on `bullet-develop` via per-issue PRs (auto-merged after review + gates). Merge this single PR into `main` when satisfied. Integrated issues: - PR #16 — Use case: verify signatures (upload -> validity report) Automated by bullet: implemented → reviewed (independent model) → gates green → auto-merged into bullet-develop. Trunk is human territory; this PR is the one button the human presses.
Conflict resolution (Refs #6): keep the integration's `implemented` format flag
(cades and xades true, pades false) and its generic signDone copy; keep
SelectedFile.source from #6; one App.svelte sign() dispatching XAdES/CAdES; keep
both the XAdES and CAdES UI tests (shared download-capture helper) and both sets
of fixtures (xmlsec1Verify + createCadesFixtures).
Hand-rolled DER reader, certificate parsing, WebCrypto signature verification and
issuer-link chain building; CAdES checks: structure, messageDigest vs content,
signature over re-encoded signedAttrs, signer cert, validity, chain, signingTime.
C14N 1.0 inclusive + exclusive (no comments) with the enveloped-signature transform,
XMLDSig SignedInfo signature and per-Reference digest checks, xades:SigningTime, and the
FNMT AC RAIZ FNMT-RCM trust anchor refreshed by scripts/fetch-roots.sh (fingerprint asserted).
Sign/Verify tablist, drop-a-signature step, per-check cards with the technical reason,
signer/validity/signing-time summary and an optional original document for detached CAdES.
Throwaway test PKI (keys gitignored), generator and openssl/python cross-check script, C14N
oracle vectors from python ElementTree.canonicalize, and vitest coverage of every check path.
The fixtures only tampered with the content, so nothing exercised the
cryptographic check on its own failure path. Flip a byte inside the CMS
signature OCTET STRING and inside the XAdES SignatureValue instead.
Conflict resolution (integration #6/#7 side vs verify-signature side):
- App.svelte: keep #8's sign/verify mode tabs, but restore the real sign
  panel from #6/#7 (CertPicker onpick -> cert/chain, implemented-format
  guard, SignButton onsign); both import sets kept.
- App.test.ts: union of imports (PKCS#12 fixtures + fixture readers);
  both describe blocks kept.
- i18n.ts: keep both type imports (Pkcs12ErrorCode, CheckId) and both copy
  blocks.
- vite.config.ts: one test setup (src/test-setup.ts); drop #8's duplicate
  test/setup.ts (identical WebCrypto shim).
- README.md: merged module table (signing modules + verify engine, trust
  anchor script and fixtures).

Refs #8
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
EduarD3V/AutoFirme!18
No description provided.