Skip to content

Release 1.0.0#6

Open
fzheng wants to merge 5 commits intomainfrom
dev
Open

Release 1.0.0#6
fzheng wants to merge 5 commits intomainfrom
dev

Conversation

@fzheng
Copy link
Copy Markdown
Owner

@fzheng fzheng commented Mar 25, 2026

No description provided.

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Mar 25, 2026

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (bc927af) to head (aa2a0e0).
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff            @@
##              main        #6   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            6         6           
  Lines          316       316           
  Branches        43        43           
=========================================
  Hits           316       316           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

fzheng added 4 commits March 25, 2026 20:26
Computes SHA-256 of fips_crypto_wasm_bg.wasm
Embeds the hash as a constant directly in pkg-node/fips_crypto_wasm.js
At runtime (when the module loads):

Reads the WASM binary via readFileSync (same as before)
Computes SHA-256 of the loaded bytes
Compares against the embedded hash
If mismatched: throws "WASM integrity check failed: binary has been tampered with" — the module never instantiates
If matched: proceeds normally
Why this is stronger than a separate checksums file:

The hash is embedded in the JS loader itself, not a side file an attacker could also replace
The JS file's own hash is tracked by npm's package integrity, creating a chain of trust
Gap	Fix
1. CHANGELOG missing 1.0.0	Added [1.0.0] - 2026-03-25 section with all changes
2. Unused error codes	Removed DECAPSULATION_FAILED, VERIFICATION_FAILED, NOT_IMPLEMENTED from types.ts + updated tests
3. README test count	Updated to 970+ (748 JS + 225 Rust)
4. Publish workflow OIDC	Removed NPM_TOKEN dependency, updated comments
748 JS + 225 Rust = 973 tests, all passing
Flaky tests from shared artifact mutation	High	Tamper tests now use isolated cpSync copies; shared pkg/ and pkg-node/ are never mutated
Browser path unvalidated	Medium	Already marked "Compatible — not yet CI-validated" in README (honest)
CJS auto docs say "ESM-only"	Low	Already fixed — commonjs-usage.cjs says "Both explicit init() and auto-init work with require()"
Trusted publishing TODO	Low	Already fixed — publish.yml uses OIDC, no NPM_TOKEN
Changelog missing 1.0.0	Low	Already fixed — [1.0.0] section added
Validator doesn't bind address to key	Added validateTransaction() that checks both signature validity AND that the signer's public key derives the claimed tx.from address. New Step 6 demonstrates Bob's forgery rejected.
Overstated "drop-in replacement"	README now says "replacing the ECDSA signature primitive" not "drop-in replacement". SECURITY-MODEL.md adds protocol-level caveat. Example renamed to "Signature Replacement" with explicit disclaimer.
Tamper test uses fresh timestamp	All transactions now use a fixed timestamp (1711900000000), so only the amount differs between original and tampered.
Absolute language	"immune" removed from example header. "Not vulnerable" softened to "Not considered at risk". Summary says "resists all known quantum attacks" instead of "immune".
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants