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
24 lines
1.0 KiB
JavaScript
24 lines
1.0 KiB
JavaScript
import {defineConfig} from 'vite';
|
|
import {fileURLToPath} from 'node:url';
|
|
export default defineConfig({
|
|
resolve: {alias: {events: fileURLToPath(new URL('./node_modules/events/events.js', import.meta.url))}},
|
|
build: {
|
|
target: ['chrome111', 'edge111', 'firefox114', 'safari16.4'],
|
|
minify: false,
|
|
lib: {entry: 'browser-entry.mjs', formats: ['es'], fileName: () => 'browser.mjs'},
|
|
rollupOptions: {plugins: [{
|
|
name: 'backend-evidence',
|
|
generateBundle() {
|
|
const modules = [...this.getModuleIds()].map(id => id.replace(process.cwd(), '.')).sort();
|
|
if (!modules.some(id => id.endsWith('/stanza/platform/browser/crypto/Hmac.js'))) {
|
|
throw new Error('Browser HMAC missing');
|
|
}
|
|
if (modules.some(id => /stanza\/platform\/node\/|^node:|browser-external/.test(id))) {
|
|
throw new Error('Unexpected Node runtime backend');
|
|
}
|
|
this.emitFile({type: 'asset', fileName: 'modules.json', source: JSON.stringify(modules, null, 2) + '\n'});
|
|
}
|
|
}]}
|
|
}
|
|
});
|