mirror of
https://github.com/pezkuwichain/pezkuwi-wasm.git
synced 2026-10-28 06:19:50 +00:00
7.5.15-7.5.18 shipped a wasm built from a separate sr25519-only module
(4 exports) and replaced every other function in bundle.ts with a stub
that throws "not yet implemented": ed25519 pair/sign/verify, sr25519
agree and hard/soft derivation, VRF, and all of secp256k1. Because the
wasm still initialised, isReady() was true and @pezkuwi/util-crypto
called those stubs instead of falling back to JS, so ed25519 and
ethereum accounts and any // derivation failed at runtime wherever the
package is used. bip39Generate threw as well, and bip39ToSeed hashed with
SHA-256 where BIP39 specifies SHA-512.
The Rust in packages/wasm-crypto/src/rs already implemented all of it,
with sr25519 under the "bizinikiwi" context. This builds that crate and
binds it again:
- bundle.ts: the withWasm bindings for every ext_* export, as in
b61206c; getSigningContext() kept, returning "bizinikiwi".
- wasm-bridge: wasm-bindgen 0.2.90 passes an alignment to
__wbindgen_malloc/__wbindgen_free (without it Rust aborts with
`unreachable`); __wbindgen_memory returns a heap index; the two-argument
getRandomValues import takes the crypto object and a Uint8Array by heap
index, not a pointer and length.
- build-wasm.sh: source rust-version.sh relative to the script; strip the
`import * as wbg` line newer wasm2js emits and call asmFunc({ wbg }),
which is the shape its output expects.
- pack-wasm-base.mjs: also write build/bytes.js. The package exports
./bytes from there for ESM, and it was still the old sr25519-only wasm.
The committed src copies are now empty placeholders, so a build that
skips the wasm step fails instead of shipping a stale binary.
- Tests: the sr25519 known-signature vectors were substrate-context
vectors; they are replaced by vectors signed by 7.5.18, plus a test that
the same seed yields the same public key. A rename had changed the
substrate-bip39 vector's password to "Bizinikiwi"; it is "Substrate".
Compatibility with 7.5.18, measured in separate processes:
mnemonic -> mini secret -> public key is identical for every phrase with
an empty or ASCII password (12/12). It differs when the BIP39 password has
characters NFKD changes: 7.5.18 normalised it, while the Rust crate and
util-crypto's JS path do not, so this returns to the canonical result.
Rust 43/43, JS 55/55, wasm and asm.js runners pass. With this build in
place, pezkuwi-extension's suite goes from 19 failing to 3 (the 3 left
are unrelated sorting tests).
All wasm packages move to 7.5.19 and pin each other at 7.5.19.
55 lines
2.1 KiB
JSON
55 lines
2.1 KiB
JSON
{
|
|
"author": "PezkuwiChain <dev@pezkuwichain.io>",
|
|
"bugs": "https://git.pezkuwichain.io/pezkuwichain/pezkuwi-wasm/issues",
|
|
"engines": {
|
|
"node": ">=18.14"
|
|
},
|
|
"homepage": "https://git.pezkuwichain.io/pezkuwichain/pezkuwi-wasm#readme",
|
|
"license": "Apache-2.0",
|
|
"packageManager": "yarn@4.6.0",
|
|
"private": true,
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://git.pezkuwichain.io/pezkuwichain/pezkuwi-wasm.git"
|
|
},
|
|
"sideEffects": false,
|
|
"type": "module",
|
|
"version": "7.5.19",
|
|
"versions": {
|
|
"git": "7.5.4",
|
|
"npm": "7.5.4"
|
|
},
|
|
"workspaces": [
|
|
"packages/*"
|
|
],
|
|
"scripts": {
|
|
"build": "yarn build:wasm",
|
|
"build:js": "./scripts/build-js.sh",
|
|
"build:release": "pezkuwi-ci-ghact-build",
|
|
"build:rollup": "pezkuwi-exec-rollup --config",
|
|
"build:wasm": "./scripts/build.sh",
|
|
"clean": "./scripts/clean.sh",
|
|
"deno": "yarn deno:build && yarn deno:check",
|
|
"deno:build": "WITH_DENO=1 yarn build",
|
|
"deno:check": "deno check --import-map=import_map.json mod.ts",
|
|
"lint": "pezkuwi-dev-run-lint",
|
|
"postinstall": "pezkuwi-dev-yarn-only",
|
|
"test": "yarn test:wasm-crypto:rust",
|
|
"test:js": "yarn test:wasm-crypto:js",
|
|
"test:wasm-crypto:deno": "deno test --allow-read --import-map=import_map.json packages/wasm-crypto/test/deno.ts",
|
|
"test:wasm-crypto:js": "yarn test:wasm-crypto:js:jest && yarn test:wasm-crypto:js:node",
|
|
"test:wasm-crypto:js:jest": "pezkuwi-dev-run-test --env node --loader ./packages/wasm-crypto/test/loader-build.js",
|
|
"test:wasm-crypto:js:node": "node --no-warnings --loader ./packages/wasm-crypto/test/loader-build.js ./packages/wasm-crypto/test/wasm.js && node --no-warnings --loader ./packages/wasm-crypto/test/loader-build.js ./packages/wasm-crypto/test/asm.js",
|
|
"test:wasm-crypto:rust": "cd packages/wasm-crypto && RUST_BACKTRACE=full cargo test --release -- --test-threads=1 --nocapture"
|
|
},
|
|
"devDependencies": {
|
|
"@pezkuwi/dev": "^0.85.7",
|
|
"@pezkuwi/util": "^14.0.1",
|
|
"@types/node": "^20.16.1",
|
|
"fflate": "^0.8.2"
|
|
},
|
|
"resolutions": {
|
|
"typescript": "^5.5.4"
|
|
}
|
|
}
|