Changes: Add an isolated pinned mechanism wrapper using Stanza's public constructor and factory APIs, preserve the SCRAM-SHA-512 wire name and fail-closed final guard, and document the proposed ADR, browser bundle evidence, independent Scramp vectors, notices and limits. Leave parent selection, dependency experiments, specs and shared contracts unchanged. Validation: Fresh-cache npm ci and Vite browser build pass; 87 focused tests pass, including RFC HMAC vectors, original defect reproduction, independent full SHA-512 exchanges and rejected invalid finals/order/reset paths. Hashed Scramp oracle fixture comparison passes. Dependency check verifies 49 locked entries, 25 installed pins/licenses and 340 unmodified Stanza files. make check passes 72 tooling tests. Native browsers, WSS/live server interoperability and production readiness are untested; independent security review remains pending. Task: S00-019 Agent: auto-crypto-c68801170fa4 Role: crypto Action: claim Status: review Task title: Validate browser-compatible SCRAM-SHA-512 through a public mechanism API
2.2 KiB
S00-019 handoff for independent security review
Executor: auto-crypto-c68801170fa4 (crypto), 2026-10-15. Outcome: isolated pinned browser-compatible SCRAM-SHA-512 experiment and proposed docs/decisions/0002-xmpp-sha512-validation.md. No blocker; acceptance pending.
Public Mechanism composition uses exported SCRAM('SCRAM-SHA512') constructor to select existing browser HMAC alias while wrapper wire name stays SCRAM-SHA-512. Factory.disable/register and fresh Client.use/registerFeature only; no library private-field/vendor/primitive patch. S00-017 guard copied/narrowed inside scope; accepted parent/dependency sources remain unchanged.
Clean-cache npm ci and actual browser bundle/build + 87 tests passed. Seven RFC HMAC cases and key-length boundaries pass, exact old hyphenated HMAC/full proof defects reproduce, three fixed independent Scramp client/server SHA512 exchanges match, final/order/error/reset/replay cases reject before auth/restart. 49 locked entries/25 installed pins/notices and 340 unchanged Stanza files verified. make check: exit 0, 72 tests. Detailed commands/hashes/development failures: state/evidence/S00-019-auto-crypto-c68801170fa4.md.
Reviewer: inspect executor diff/message and public constructor alias composition explicitly. Follow experiment README with accepted Node 24.21.0/npm 11.19.0 and new cache, run npm test and check-dependencies.py; independently recreate hashed Python oracle environment and run oracle.py (default compares fixed fixtures). Parent installed pinned candidate is read-only vendor comparison input. Review licenses including Stanza browser ancestry, build binding owner notices and separate MIT-0/MIT oracle, actual feature dispatcher and both verifier flags. ADR must remain proposed until your separate acceptance decision.
Limits: browser bundle executes in Node, no native-browser/WSS/live-server/client run or parent parser integration; no full fallback policy/production selection. No invented binding/plaintext downgrade. Synchronous derivation, string equality verifier, no timeout, success-only final, no extensions, local bounds and limited Unicode vector remain. No audit/provenance/release clearance. Coordinator owns commit and next fresh process; executor stops after submit, does not continue S00-003 or mark done.