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
37 lines
2.2 KiB
Markdown
37 lines
2.2 KiB
Markdown
# 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.
|