Compare commits

..
35 Commits
Author SHA1 Message Date
github-actions[bot] 370a529668 [CI Skip] release/stable 6.2.3
skip-checks: true
2022-07-07 06:42:17 +00:00
Jaco b7486f4f3b 6.2.3 (w/ dev publish fix) (#391) 2022-07-07 09:37:32 +03:00
Jaco ff4a877ef9 6.2.3 (#390)
* 6.2.3

* Skip extra installs on linting (non-build)
2022-07-07 09:19:49 +03:00
github-actions[bot] e0f741db37 [CI Skip] bump/beta 6.2.3-4-x
skip-checks: true
2022-07-06 11:09:51 +00:00
Jaco 3107861322 Adjust issue template (#389) 2022-07-06 14:04:54 +03:00
github-actions[bot] 7eff345003 [CI Skip] bump/beta 6.2.3-3-x
skip-checks: true
2022-07-06 10:24:19 +00:00
Jaco 00f7da2136 Bump depv deps (#388) 2022-07-06 13:19:14 +03:00
github-actions[bot] 150a143163 [CI Skip] bump/beta 6.2.3-2-x
skip-checks: true
2022-07-06 09:51:51 +00:00
Jaco f31ec881ef Additional platform-specific tests (#387)
* Additional platform-specific tests

* align casing

* Step rename

* lenIn/lenOut for deno

* Remove install ls

* Run deno tests on full suite

* trigger
2022-07-06 12:46:38 +03:00
github-actions[bot] 0b838d2055 [CI Skip] bump/beta 6.2.3-1-x
skip-checks: true
2022-07-05 21:27:10 +00:00
Jaco b68aefe64d Additional CI actions (#386) 2022-07-06 00:21:24 +03:00
github-actions[bot] 9340c296ee [CI Skip] bump/beta 6.2.3-0-x
skip-checks: true
2022-07-04 06:40:44 +00:00
Jaco 132ed20d18 Bump common (#385) 2022-07-04 09:33:42 +03:00
github-actions[bot] 2927c37776 [CI Skip] release/stable 6.2.2
skip-checks: true
2022-07-04 05:57:19 +00:00
Jaco ac63788ecd 6.2.2 (#384) 2022-07-04 08:51:08 +03:00
github-actions[bot] 0a64c9d329 [CI Skip] bump/beta 6.2.2-2-x
skip-checks: true
2022-07-04 05:01:04 +00:00
Jaco 81c9f3aa33 Bump deps (#383) 2022-07-04 07:55:37 +03:00
github-actions[bot] 6fae33074a [CI Skip] bump/beta 6.2.2-1-x
skip-checks: true
2022-07-03 18:45:43 +00:00
Jaco 679b282061 Remove extra serialize/deseralize on ed pair creation (#382) 2022-07-03 21:40:11 +03:00
github-actions[bot] 396b4cb598 [CI Skip] bump/beta 6.2.2-0-x
skip-checks: true
2022-07-03 18:26:17 +00:00
Jaco 8b67b82047 ed25519 signing leaks (#381) 2022-07-03 21:20:41 +03:00
github-actions[bot] da7d771898 [CI Skip] release/stable 6.2.1
skip-checks: true
2022-07-01 14:26:19 +00:00
Jaco 42b5942886 6.2.1 (#380) 2022-07-01 17:20:16 +03:00
github-actions[bot] d848c42bd3 [CI Skip] bump/beta 6.1.6-5-x
skip-checks: true
2022-07-01 14:07:29 +00:00
Jaco e9d034928f Adjust WebAssembly.{Memory, ModuleImports} usage to cater for non-dom TS (#379)
* Adjust `WebAssembly.{Memory, ModuleImports}` usage to cater for non-dom TS

* Remove wbg getter (only internal access required)

* Additional peerDeps for wasm-crypto-init

* Bump @polkadot/dev

* Remove never cast & comment, imports are functions
2022-07-01 17:01:56 +03:00
github-actions[bot] 2f042819ac [CI Skip] bump/beta 6.1.6-4-x
skip-checks: true
2022-06-30 11:41:53 +00:00
Jaco 2177d2f2cc Bump dev deps (#378) 2022-06-30 14:36:28 +03:00
github-actions[bot] 4d974e4d7f [CI Skip] bump/beta 6.1.6-3-x
skip-checks: true
2022-06-25 06:14:51 +00:00
Jaco cb05a1782a Bump common (dev deps) (#377)
* Bump common (dev deps)

* Add missing peerDependencies

* CHANGELOG
2022-06-25 09:09:15 +03:00
github-actions[bot] 5f7cb7641a [CI Skip] bump/beta 6.1.6-2-x
skip-checks: true
2022-06-23 17:10:26 +00:00
Jaco ff62f24cd4 Bump dev (w/ deno build fix) (#376) 2022-06-23 20:04:42 +03:00
github-actions[bot] d45dfb7dd2 [CI Skip] bump/beta 6.1.6-1-x
skip-checks: true
2022-06-23 11:22:09 +00:00
Jaco 1d4de873cb Bump dev 2022-06-23 14:15:28 +03:00
github-actions[bot] edfc1f0610 [CI Skip] release/beta 6.1.6-0
skip-checks: true
2022-06-23 08:37:41 +00:00
Jaco a662a23d19 README updates (#375)
* README updates

* Bump polkadot deps
2022-06-23 11:31:01 +03:00
57 changed files with 1411 additions and 1191 deletions
+1
View File
@@ -0,0 +1 @@
6.2.3
+6 -2
View File
@@ -1,4 +1,4 @@
7
8
3.2.2
3.2.3
@@ -10,4 +10,8 @@
6.1.2
6.1.3
6.1.4
6.1.5
6.1.5
6.2.2
6.2.3
+3 -1
View File
@@ -8,7 +8,9 @@ module.exports = {
ignorePatterns: [
...base.ignorePatterns,
'**/target/*',
'**/build-wasm/*'
'**/build-wasm/*',
'**/deno/*.ts',
'**/test/*.ts'
],
parserOptions: {
...base.parserOptions,
+49 -13
View File
@@ -1,50 +1,86 @@
<!--
For general support, howto, coding and bundling questions, please use the Substrate & Polkadot StackExchange at https://substrate.stackexchange.com/ and get other ecosystem developers involved. This issues in this repository are meant for the tracking of feature requests and bug reports.
For general support, howto, coding and bundling questions, please
use the Substrate & Polkadot StackExchange at
While all issues are looked at non-bug and non-features would take quite a bit longer to get to and may yield less than satisfactory responses in this format.
https://substrate.stackexchange.com/
Additionally, please ensure you have done a search on the existing and closed issues before logging a new request. This saves time on all sides.
and get other ecosystem developers involved. This issues in this
repository are meant for the tracking of feature requests and bug
reports.
While all issues are looked at non-bug and non-features would take
quite a bit longer to get to and may yield less than satisfactory
responses in this format.
Additionally, please ensure you have done a search on the existing
and closed issues before logging a new request. This saves time on
all sides.
-->
* **I'm submitting a ...**
<!--- Try and classify your actual report -->
<!---
REQUIRED:
Classify the type of report your are submitting
-->
- [ ] Bug report
- [ ] Feature request
- [ ] Support request (please bear the comments above in mind)
- [ ] Support request
- [ ] Other
* **What is the current behavior and expected behavior?**
<!--- If you're describing a bug, tell us what should happen -->
<!--- If you're suggesting a change/improvement, tell us how it should work -->
<!---
REQUIRED:
If you're describing a bug, tell us what should happen. If you're
suggesting a change/improvement, tell us how it should work.
-->
* **What is the motivation for changing the behavior?**
<!--- Not obligatory, but suggest a motivation for the request -->
<!--- or ideas how to implement the addition or change -->
<!---
OPTIONAL:
Suggest a motivation for the request or ideas how to implement the
addition or change
-->
* **Please tell us about your environment:**
<!--- Include as many relevant details about the environment you experienced the issue in -->
<!--- Also snsure that you have tested against the latest stable releases if a bug -->
<!---
REQUIRED:
Include as many relevant details about the environment in which you
experienced the issue. Also ensure that you have tested against the
latest stable releases if you believe this to be a bug
-->
- Version:
- Environment:
- [ ] Node.js
- [ ] Browser
- [ ] Other (limited support for other environments available)
- [ ] Other (limited support for other environments)
- Language:
- [ ] JavaScript
- [ ] TypeScript
- [ ] TypeScript (include tsc --version)
- [ ] Other
+4 -1
View File
@@ -13,7 +13,10 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: ${{ matrix.step }}
if: always()
run: |
yarn install --immutable | grep -v 'YN0013'
./scripts/install-build-deps.sh
if [ "${{ matrix.step }}" != "lint" ]; then
./scripts/install-build-deps.sh
fi
yarn ${{ matrix.step }}
+27
View File
@@ -0,0 +1,27 @@
name: deno
on: [pull_request]
jobs:
pr:
strategy:
matrix:
step: ['check', 'build']
name: ${{ matrix.step }}
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
WITH_DENO: true
steps:
- uses: actions/checkout@v2
- uses: denoland/setup-deno@v1
with:
deno-version: vx.x.x
- name: ${{ matrix.step }}
if: always()
run: |
yarn install --immutable | grep -v 'YN0013'
if [ "${{ matrix.step }}" != "check" ]; then
./scripts/install-build-deps.sh
fi
yarn deno:setup
yarn deno:${{ matrix.step }}
+23
View File
@@ -1,5 +1,28 @@
# CHANGELOG
## 6.2.3 Jul 7, 2022
Changes:
- Optimize WASM init with pre-allocated buffers
- Additional platform-specific tests
## 6.2.2 Jul 4, 2022
Changes:
- Protect against potential low-level double-sign leak in dalek-ed25519 (Don't use provided input pubKey, see https://github.com/MystenLabs/ed25519-unsafe-libs)
## 6.2.1 Jul 1, 2022
Changes:
- Add missing `peerDependencies` to `wasm-crypto` (`bridge` requirement)
- Adjust `WebAssembly.{Memory, ModuleImports}` usage to cater for non-dom TS
## 6.1.5 Jun 23, 2022
Changes:
+1 -1
View File
@@ -1,4 +1,4 @@
439 Jaco 6.1.5 (#374)
457 Jaco 6.2.3 (w/ dev publish fix) (#391)
1 Evgeny Fixed type (#121)
1 Shunfan Zhou Support sr25519 agreement (#209)
1 Steve Degosserie Expose Schnorrkel's VRF capabilities (#170)
+11
View File
@@ -0,0 +1,11 @@
// Copyright 2019-2022 @polkadot/wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
// auto-generated via deno/setup.ts, do not edit
export * as wasmBridge from 'https://deno.land/x/polkadot/wasm-bridge/mod.ts';
export * as wasmCrypto from 'https://deno.land/x/polkadot/wasm-crypto/mod.ts';
export * as wasmCryptoAsmjs from 'https://deno.land/x/polkadot/wasm-crypto-asmjs/mod.ts';
export * as wasmCryptoInit from 'https://deno.land/x/polkadot/wasm-crypto-init/mod.ts';
export * as wasmCryptoWasm from 'https://deno.land/x/polkadot/wasm-crypto-wasm/mod.ts';
export * as wasmUtil from 'https://deno.land/x/polkadot/wasm-util/mod.ts';
+12
View File
@@ -0,0 +1,12 @@
{
"imports": {
"crypto": "https://deno.land/std/node/crypto.ts",
"@polkadot/util": "https://deno.land/x/polkadot/common/mod.ts",
"https://deno.land/x/polkadot/wasm-crypto-init/": "../packages/wasm-crypto-init/build-deno/",
"https://deno.land/x/polkadot/wasm-bridge/": "../packages/wasm-bridge/build-deno/",
"https://deno.land/x/polkadot/wasm-crypto-wasm/": "../packages/wasm-crypto-wasm/build-deno/",
"https://deno.land/x/polkadot/wasm-crypto/": "../packages/wasm-crypto/build-deno/",
"https://deno.land/x/polkadot/wasm-crypto-asmjs/": "../packages/wasm-crypto-asmjs/build-deno/",
"https://deno.land/x/polkadot/wasm-util/": "../packages/wasm-util/build-deno/"
}
}
+30
View File
@@ -0,0 +1,30 @@
// Copyright 2019-2022 @polkadot/wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
/* eslint-disable sort-keys */
import { stringCamelCase } from 'https://deno.land/x/polkadot/util/mod.ts';
const exports: string[] = [];
const imports: Record<string, string> = {
'@polkadot/util': 'https://deno.land/x/polkadot/common/mod.ts',
crypto: 'https://deno.land/std/node/crypto.ts'
};
for await (const entry of Deno.readDir('packages')) {
if (entry.isDirectory) {
try {
await Deno.readTextFile(`packages/${entry.name}/src/mod.ts`);
exports.push(`export * as ${stringCamelCase(entry.name)} from 'https://deno.land/x/polkadot/${entry.name}/mod.ts';`);
imports[`https://deno.land/x/polkadot/${entry.name}/`] = `../packages/${entry.name}/build-deno/`;
} catch {
// ignore
}
}
}
await Deno.writeTextFile('deno/check.ts', `// Copyright 2019-${new Date().getFullYear()} @polkadot/wasm authors & contributors\n// SPDX-License-Identifier: Apache-2.0\n\n// auto-generated via deno/setup.ts, do not edit\n\n${exports.sort().join('\n')}\n`);
await Deno.writeTextFile('deno/import_map.json', `${JSON.stringify({ imports }, null, 2)}\n`);
+7 -3
View File
@@ -10,7 +10,7 @@
"url": "https://github.com/polkadot-js/wasm.git"
},
"sideEffects": false,
"version": "6.1.5",
"version": "6.2.3",
"workspaces": [
"packages/*"
],
@@ -22,17 +22,21 @@
"build:rollup": "polkadot-exec-rollup --config",
"build:wasm": "./scripts/build.sh",
"clean": "./scripts/clean.sh",
"deno:build": "yarn build",
"deno:check": "yarn build:js && deno check --import-map=deno/import_map.json deno/check.ts",
"deno:setup": "deno run --import-map=deno/import_map.json --allow-read --allow-write deno/setup.ts",
"lint": "polkadot-dev-run-lint",
"postinstall": "polkadot-dev-yarn-only",
"test": "yarn test:wasm-crypto:rust",
"test:wasm-crypto:deno": "deno test --allow-read --import-map=deno/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": "polkadot-dev-run-test ./test/jest.spec.js",
"test:wasm-crypto:js:node": "cd packages/wasm-crypto && node ./test/wasm.cjs && node ./test/asm.cjs",
"test:wasm-crypto:rust": "cd packages/wasm-crypto && RUST_BACKTRACE=full cargo test --release -- --test-threads=1 --nocapture"
},
"devDependencies": {
"@babel/core": "^7.18.5",
"@polkadot/dev": "^0.67.36",
"@babel/core": "^7.18.6",
"@polkadot/dev": "^0.67.57",
"fflate": "^0.7.3",
"override-require": "^1.1.1"
},
+2
View File
@@ -1 +1,3 @@
# @polkadot/wasm-bridge
A re-usable bridge between JS & WASM interfaces. It is used internally by `@polkadot/wasm-crypto`.
+4 -4
View File
@@ -20,14 +20,14 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "6.1.5",
"version": "6.2.3",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3"
"@babel/runtime": "^7.18.6"
},
"devDependencies": {
"@polkadot/util": "^9.5.1",
"@polkadot/x-randomvalues": "^9.5.1"
"@polkadot/util": "^9.7.2",
"@polkadot/x-randomvalues": "^9.7.2"
},
"peerDependencies": {
"@polkadot/util": "*",
+2 -7
View File
@@ -7,7 +7,7 @@
// then ensures that the internal wasm instance here is available
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import type { BridgeBase, InitFn, InitPromise, WasmBaseInstance } from './types';
import type { BridgeBase, InitFn, InitPromise, WasmBaseInstance, WasmImports } from './types';
import { stringToU8a, u8aToString } from '@polkadot/util';
@@ -31,7 +31,7 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
#wasm: C | null;
#wasmError: string | null;
#wasmPromise: InitPromise<C> | null;
#wbg: WebAssembly.ModuleImports;
#wbg: WasmImports;
#type: 'asm' | 'wasm' | 'none';
constructor (createWasm: InitFn<C>) {
@@ -59,11 +59,6 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return this.#type;
}
/** @description Returns the created wbg interface */
get wbg (): WebAssembly.ModuleImports {
return this.#wbg;
}
/** @description Returns the created wasm interface */
get wasm (): C | null {
return this.#wasm;
+3 -3
View File
@@ -1,7 +1,7 @@
// Copyright 2019-2022 @polkadot/wasm-bundle authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { InitFn, InitPromise, InitResult, WasmBaseInstance } from './types';
import type { InitFn, InitPromise, InitResult, WasmBaseInstance, WasmImports } from './types';
/**
* @name createWasmFn
@@ -11,8 +11,8 @@ import type { InitFn, InitPromise, InitResult, WasmBaseInstance } from './types'
* It will attempt to create a WASM interface first and if this fails or is not available in
* the environment, will fallback to attempting to create an ASM.js interface.
*/
export function createWasmFn <C extends WasmBaseInstance> (root: string, wasmBytes: null | Uint8Array, asmFn: null | ((wbg: WebAssembly.ModuleImports) => C)): InitFn<C> {
return async (wbg: WebAssembly.ModuleImports): InitPromise<C> => {
export function createWasmFn <C extends WasmBaseInstance> (root: string, wasmBytes: null | Uint8Array, asmFn: null | ((wbg: WasmImports) => C)): InitFn<C> {
return async (wbg: WasmImports): InitPromise<C> => {
const result: InitResult<C> = {
error: null,
type: 'none',
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-bridge', path: 'auto', type: 'auto', version: '6.1.5' };
export const packageInfo = { name: '@polkadot/wasm-bridge', path: 'auto', type: 'auto', version: '6.2.3' };
+10 -4
View File
@@ -1,6 +1,14 @@
// Copyright 2019-2022 @polkadot/wasm-bridge authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Use non-strong types instead of WasmImports which may not
// be available as part of the TS environment types (it needs dom)
export type WasmImports = Record<string, (...args: never[]) => unknown>;
// Use non-strong types instead of WebAssembly.Memory which may not
// be available as part of the TS environment types (it needs dom)
export type WasmMemory = { buffer: ArrayBuffer };
export declare interface InitResult<C extends WasmBaseInstance> {
error: string | null;
type: 'asm' | 'wasm' | 'none';
@@ -9,11 +17,9 @@ export declare interface InitResult<C extends WasmBaseInstance> {
export type InitPromise <C extends WasmBaseInstance> = Promise<InitResult<C>>;
export type InitFn <C extends WasmBaseInstance> = (wbg: WebAssembly.ModuleImports) => InitPromise<C>;
export type InitFn <C extends WasmBaseInstance> = (wbg: WasmImports) => InitPromise<C>;
export interface BridgeBase<C extends WasmBaseInstance> extends InitResult<C> {
wbg: WebAssembly.ModuleImports;
init (createWasm?: InitFn<C>): Promise<C | null>;
getObject (idx: number): unknown;
dropObject (idx: number): void;
@@ -30,7 +36,7 @@ export interface BridgeBase<C extends WasmBaseInstance> extends InitResult<C> {
}
export interface WasmBaseInstance {
memory: WebAssembly.Memory;
memory: WasmMemory;
// wbindgen functions (required and used internally)
+2
View File
@@ -1 +1,3 @@
## @polkadot/wasm-crypto-asmjs
Asm.js build outputs.
+3 -3
View File
@@ -17,13 +17,13 @@
},
"sideEffects": false,
"type": "module",
"version": "6.1.5",
"version": "6.2.3",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3"
"@babel/runtime": "^7.18.6"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^9.7.2"
},
"peerDependencies": {
"@polkadot/util": "*"
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-crypto-asmjs', path: 'auto', type: 'auto', version: '6.1.5' };
export const packageInfo = { name: '@polkadot/wasm-crypto-asmjs', path: 'auto', type: 'auto', version: '6.2.3' };
+2
View File
@@ -1 +1,3 @@
## @polkadot/wasm-crypto-init
Internal `@polkadot/wasm-crypto` initialization functions for Browser, Node & RN.
+9 -7
View File
@@ -20,20 +20,22 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "6.1.5",
"version": "6.2.3",
"browser": "wasm.js",
"main": "wasm.js",
"react-native": "asm.js",
"dependencies": {
"@babel/runtime": "^7.18.3",
"@polkadot/wasm-bridge": "6.1.5",
"@polkadot/wasm-crypto-asmjs": "6.1.5",
"@polkadot/wasm-crypto-wasm": "6.1.5"
"@babel/runtime": "^7.18.6",
"@polkadot/wasm-bridge": "6.2.3",
"@polkadot/wasm-crypto-asmjs": "6.2.3",
"@polkadot/wasm-crypto-wasm": "6.2.3"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^9.7.2",
"@polkadot/x-randomvalues": "^9.7.2"
},
"peerDependencies": {
"@polkadot/util": "*"
"@polkadot/util": "*",
"@polkadot/x-randomvalues": "*"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-crypto-init', path: 'auto', type: 'auto', version: '6.1.5' };
export const packageInfo = { name: '@polkadot/wasm-crypto-init', path: 'auto', type: 'auto', version: '6.2.3' };
+2
View File
@@ -1 +1,3 @@
## @polkadot/wasm-crypto-wasm
Wasm build outputs.
+4 -4
View File
@@ -17,14 +17,14 @@
},
"sideEffects": false,
"type": "module",
"version": "6.1.5",
"version": "6.2.3",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3",
"@polkadot/wasm-util": "6.1.5"
"@babel/runtime": "^7.18.6",
"@polkadot/wasm-util": "6.2.3"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^9.7.2"
},
"peerDependencies": {
"@polkadot/util": "*"
+2 -2
View File
@@ -3,7 +3,7 @@
import { base64Decode, unzlibSync } from '@polkadot/wasm-util';
import { bytes, sizeUncompressed } from './cjs/bytes.js';
import { bytes, lenIn, lenOut } from './cjs/bytes.js';
export { packageInfo } from './packageInfo';
@@ -16,4 +16,4 @@ export { packageInfo } from './packageInfo';
* Upon loading the exposed bytes will be decoded and decompressed form this
* specific format and returned.
*/
export const wasmBytes = unzlibSync(base64Decode(bytes), new Uint8Array(sizeUncompressed));
export const wasmBytes = unzlibSync(base64Decode(bytes, new Uint8Array(lenIn)), new Uint8Array(lenOut));
+2 -2
View File
@@ -3,6 +3,6 @@
export declare const bytes: string;
export declare const sizeCompressed: number;
export declare const lenIn: number;
export declare const sizeUncompressed: number;
export declare const lenOut: number;
+2 -2
View File
@@ -3,6 +3,6 @@
module.exports.bytes = '';
module.exports.sizeCompressed = 0;
module.exports.lenIn = 0;
module.exports.sizeUncompressed = 0;
module.exports.lenOut = 0;
+2 -2
View File
@@ -3,6 +3,6 @@
export declare const bytes: string;
export declare const sizeCompressed: number;
export declare const lenIn: number;
export declare const sizeUncompressed: number;
export declare const lenOut: number;
+2 -2
View File
@@ -3,6 +3,6 @@
export const bytes = '';
export const sizeCompressed = 0;
export const lenIn = 0;
export const sizeUncompressed = 0;
export const lenOut = 0;
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-crypto-wasm', path: 'auto', type: 'auto', version: '6.1.5' };
export const packageInfo = { name: '@polkadot/wasm-crypto-wasm', path: 'auto', type: 'auto', version: '6.2.3' };
+11 -13
View File
@@ -11,21 +11,19 @@ Install the package (also requires `@polkadot/util` for `TextEncoder` polyfills
Use it -
```js
const { u8aToHex } = require('@polkadot/util');
const { bip39Generate, bip39ToSeed, waitReady } = require('@polkadot/wasm-crypto');
import { u8aToHex } from '@polkadot/util';
import { bip39Generate, bip39ToSeed, waitReady } from '@polkadot/wasm-crypto';
async function main () {
// first wait until the WASM has been loaded (async init)
await waitReady();
// first wait until the WASM has been loaded (async init)
await waitReady();
// generate phrase
const phrase = bip39Generate(12);
// generate phrase
const phrase = bip39Generate(12);
// get ed25519 seed from phrase
const seed = bip39ToSeed(phrase, '');
// get ed25519 seed from phrase
const seed = bip39ToSeed(phrase, '');
// display
console.log('phrase:', phrase);
console.log('seed:', u8aToHex(seed));
}
// display
console.log('phrase:', phrase);
console.log('seed:', u8aToHex(seed));
```
+11 -9
View File
@@ -28,20 +28,22 @@
"./initWasmAsm.cjs"
],
"type": "module",
"version": "6.1.5",
"version": "6.2.3",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3",
"@polkadot/wasm-bridge": "6.1.5",
"@polkadot/wasm-crypto-asmjs": "6.1.5",
"@polkadot/wasm-crypto-init": "6.1.5",
"@polkadot/wasm-crypto-wasm": "6.1.5",
"@polkadot/wasm-util": "6.1.5"
"@babel/runtime": "^7.18.6",
"@polkadot/wasm-bridge": "6.2.3",
"@polkadot/wasm-crypto-asmjs": "6.2.3",
"@polkadot/wasm-crypto-init": "6.2.3",
"@polkadot/wasm-crypto-wasm": "6.2.3",
"@polkadot/wasm-util": "6.2.3"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^9.7.2",
"@polkadot/x-randomvalues": "^9.7.2"
},
"peerDependencies": {
"@polkadot/util": "*"
"@polkadot/util": "*",
"@polkadot/x-randomvalues": "*"
}
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-crypto', path: 'auto', type: 'auto', version: '6.1.5' };
export const packageInfo = { name: '@polkadot/wasm-crypto', path: 'auto', type: 'auto', version: '6.2.3' };
+15 -21
View File
@@ -6,15 +6,14 @@ use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature, Signer as _, Verif
use wasm_bindgen::prelude::*;
/// Keypair helper function
fn new_from_parts(pubkey: &[u8], seckey: &[u8]) -> Keypair {
let mut pair = vec![];
fn new_from_seed(seed: &[u8]) -> Keypair {
match SecretKey::from_bytes(seed) {
Ok(secret) => {
let public: PublicKey = (&secret).into();
pair.extend_from_slice(seckey);
pair.extend_from_slice(pubkey);
match Keypair::from_bytes(&pair) {
Ok(p) => p,
_ => panic!("Provided pair is invalid.")
Keypair { secret: secret, public: public }
},
_ => panic!("Invalid seed provided.")
}
}
@@ -26,16 +25,9 @@ fn new_from_parts(pubkey: &[u8], seckey: &[u8]) -> Keypair {
/// followed by the public key (32) bytes, as the full secret keys.
#[wasm_bindgen]
pub fn ext_ed_from_seed(seed: &[u8]) -> Vec<u8> {
match &SecretKey::from_bytes(seed) {
Ok(s) => {
let pubkey: PublicKey = s.into();
new_from_parts(pubkey.as_bytes(), seed)
.to_bytes()
.to_vec()
},
_ => panic!("Invalid seed provided.")
}
new_from_seed(seed)
.to_bytes()
.to_vec()
}
/// Sign a message
@@ -43,14 +35,16 @@ pub fn ext_ed_from_seed(seed: &[u8]) -> Vec<u8> {
/// The combination of both public and private key must be provided.
/// This is effectively equivalent to a keypair.
///
/// * pubkey: UIntArray with 32 element
/// * _: UIntArray with 32 element (was pubkey, now ignored)
/// * private: UIntArray with 64 element
/// * message: Arbitrary length UIntArray
///
/// * returned vector is the signature consisting of 64 bytes.
#[wasm_bindgen]
pub fn ext_ed_sign(pubkey: &[u8], seckey: &[u8], message: &[u8]) -> Vec<u8> {
new_from_parts(pubkey, seckey)
pub fn ext_ed_sign(_: &[u8], seckey: &[u8], message: &[u8]) -> Vec<u8> {
// https://github.com/MystenLabs/ed25519-unsafe-libs
// we never use the provided pubkey
new_from_seed(seckey)
.sign(message)
.to_bytes()
.to_vec()
@@ -3,13 +3,12 @@
const { assert } = require('@polkadot/util');
const wasm = require('../../build');
const bip39 = require('./bip39.cjs');
const ed25519 = require('./ed25519.cjs');
const hashing = require('./hashing.cjs');
const secp256k1 = require('./secp256k1.cjs');
const sr25519 = require('./sr25519.cjs');
const vrf = require('./vrf.cjs');
const bip39 = require('./bip39.js');
const ed25519 = require('./ed25519.js');
const hashing = require('./hashing.js');
const secp256k1 = require('./secp256k1.js');
const sr25519 = require('./sr25519.js');
const vrf = require('./vrf.js');
const tests = {
// We place secp256k1 first, this allows the interaction with it in the
@@ -23,7 +22,7 @@ const tests = {
...hashing
};
async function beforeAll (name) {
async function beforeAll (name, wasm) {
const result = await wasm.waitReady();
console.log(`*** waitReady()=${result} for ${wasm.bridge.type}`);
@@ -33,7 +32,7 @@ async function beforeAll (name) {
return result;
}
function runAll (name) {
function runAll (name, wasm) {
const failed = [];
let count = 0;
@@ -63,11 +62,11 @@ function runAll (name) {
}
}
function runUnassisted (name) {
function runUnassisted (name, wasm) {
console.log(`\n*** ${name}: Running tests`);
beforeAll(name)
.then(() => runAll(name))
beforeAll(name, wasm)
.then(() => runAll(name, wasm))
.then(() => {
console.log(`\n*** ${name}: All passed`);
process.exit(0);
@@ -82,6 +81,5 @@ module.exports = {
beforeAll,
runAll,
runUnassisted,
tests,
wasm
tests
};
@@ -0,0 +1 @@
{ "type": "commonjs" }
+3 -2
View File
@@ -4,6 +4,7 @@
require('./alias-imports.cjs');
require('@polkadot/wasm-crypto/initOnlyAsm');
const { runUnassisted } = require('./all/index.cjs');
const wasm = require('../build');
const { runUnassisted } = require('./all/index.js');
runUnassisted('ASM');
runUnassisted('ASM', wasm);
+19
View File
@@ -0,0 +1,19 @@
// Copyright 2019-2022 @polkadot/wasm-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { createRequire } from 'https://deno.land/std@0.107.0/node/module.ts';
import * as wasm from '../build-deno/mod.ts';
declare const globalThis: Record<string, unknown>;
declare const require: (name: string) => any;
globalThis.require = createRequire(import.meta.url);
const exp = require('./all/index.js');
await exp.beforeAll('wasm', wasm);
Object.keys(exp.tests).forEach((name) => {
Deno.test(name, () => exp.tests[name](wasm));
});
+5 -2
View File
@@ -5,11 +5,14 @@
* @jest-environment jsdom
*/
import { beforeAll as beforeAllFn, tests, wasm } from './all/index.cjs';
import * as wasm from '../build';
import { beforeAll as beforeAllFn, tests } from './all/index.js';
globalThis.wasm = wasm;
describe('wasm-crypto', () => {
beforeAll(async () => {
await beforeAllFn('wasm');
await beforeAllFn('wasm', wasm);
});
Object.keys(tests).forEach((name) => {
+3 -2
View File
@@ -3,6 +3,7 @@
require('./alias-imports.cjs');
const { runUnassisted } = require('./all/index.cjs');
const wasm = require('../build');
const { runUnassisted } = require('./all/index.js');
runUnassisted('WASM');
runUnassisted('WASM', wasm);
+3
View File
@@ -5,6 +5,9 @@
"outDir": "./build",
"rootDir": "./src"
},
"exclude": [
"**/test/*.ts"
],
"references": [
{ "path": "../wasm-bridge/tsconfig.build.json" },
{ "path": "../wasm-crypto-init/tsconfig.build.json" },
+2
View File
@@ -1 +1,3 @@
## @polkadot/wasm-util
Wasm utility functions, used internally in `@polkadot/wasm-crypto`.
+3 -3
View File
@@ -20,13 +20,13 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "6.1.5",
"version": "6.2.3",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3"
"@babel/runtime": "^7.18.6"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^9.7.2"
},
"peerDependencies": {
"@polkadot/util": "*"
+17 -11
View File
@@ -1,31 +1,37 @@
// Copyright 2019-2022 @polkadot/wasm-util authors & contributors
// SPDX-License-Identifier: Apache-2.0
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
const chr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
const map: Record<string, number> = {};
for (let i = 0; i < chr.length; i++) {
map[chr[i]] = i;
}
/**
* @name base64Decode
* @description
* A fail-safe base64Decoding function that operates in all environments. Unlike
* decoding from Buffer (Node.js only) or atob (browser-only) this implementation
* is slightly slower, but it is platform independent.
* A base64Decoding function that operates in all environments. Unlike decoding
* from Buffer (Node.js only) or atob (browser-only) this implementation is
* slightly slower, but it is platform independent.
*
* For our usage, since we have access to the static final size (where used), we
* decode to a specified output buffer.
*/
export function base64Decode (data: string): Uint8Array {
// TODO: For Node.js speedups, we could add an explicit base64Node.ts implementation
// that would be (via export maps) be available in that environment only
const bytes = [];
export function base64Decode (data: string, out: Uint8Array): Uint8Array {
let byte = 0;
let bits = 0;
let pos = -1;
for (let i = 0; i < data.length && data[i] !== '='; i++) {
// each character represents 6 bits
byte = (byte << 6) | chars.indexOf(data[i]);
byte = (byte << 6) | map[data[i]];
// each byte needs to contain 8 bits
if ((bits += 6) >= 8) {
bytes.push((byte >>> (bits -= 8)) & 0xff);
out[++pos] = (byte >>> (bits -= 8)) & 0xff;
}
}
return Uint8Array.from(bytes);
return out;
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-util', path: 'auto', type: 'auto', version: '6.1.5' };
export const packageInfo = { name: '@polkadot/wasm-util', path: 'auto', type: 'auto', version: '6.2.3' };
+17 -11
View File
@@ -13,18 +13,24 @@ cd packages
PKG_NAME=wasm-crypto ../scripts/build-wasm.sh
yarn test:wasm-crypto:js
if [ -z "$WITH_DENO" ]; then
yarn test:wasm-crypto:js
else
yarn test:wasm-crypto:deno
fi
echo ""
echo "*** wasm-crypto"
ls -alR wasm-crypto/build
echo ""
echo "*** wasm-crypto-asmjs"
ls -alR wasm-crypto-asmjs/build
echo ""
echo "*** wasm-crypto-wasm"
ls -alR wasm-crypto-wasm/build
# echo ""
# echo "*** wasm-crypto"
# ls -alR wasm-crypto/build
# echo ""
# echo "*** wasm-crypto-asmjs"
# ls -alR wasm-crypto-asmjs/build
# echo ""
# echo "*** wasm-crypto-wasm"
# ls -alR wasm-crypto-wasm/build
cd ..
yarn build:rollup
if [ -z "$WITH_DENO" ]; then
yarn build:rollup
fi
+2 -2
View File
@@ -48,12 +48,12 @@ if [ ! -d "binaryen" ]; then
echo "*** Downloading binaryen"
curl -L $BINARYEN_REPO/releases/download/$BINARYEN_VER/$BINARYEN_ZIP.tar.gz | tar xz
mv binaryen-$BINARYEN_VER binaryen
ls -alR binaryen
# ls -alR binaryen
fi
if [ ! -d "bindgen" ]; then
echo "*** Downloading bindgen"
curl -L $BINDGEN_REPO/releases/download/$BINDGEN_VER/$BINDGEN_ZIP.tar.gz | tar xz
mv $BINDGEN_ZIP bindgen
ls -alR bindgen
# ls -alR bindgen
fi
+5 -5
View File
@@ -19,11 +19,11 @@ fs.writeFileSync(`./${process.env.PKG_NAME}-wasm/build/cjs/bytes.js`, `// Copyri
// Generated as part of the build, do not edit
const sizeCompressed = ${compressed.length};
const sizeUncompressed = ${data.length};
const lenIn = ${compressed.length};
const lenOut = ${data.length};
const bytes = '${compressed.toString('base64')}';
module.exports = { bytes, sizeCompressed, sizeUncompressed };
module.exports = { bytes, lenIn, lenOut };
`);
fs.writeFileSync(`${denoDir}/bytes.js`, `// Copyright 2019-${new Date().getFullYear()} @polkadot/${process.env.PKG_NAME}-wasm authors & contributors
@@ -31,9 +31,9 @@ fs.writeFileSync(`${denoDir}/bytes.js`, `// Copyright 2019-${new Date().getFullY
// Generated as part of the build, do not edit
export const sizeCompressed = ${compressed.length};
export const lenIn = ${compressed.length};
export const sizeUncompressed = ${data.length};
export const lenOut = ${data.length};
export const bytes = '${compressed.toString('base64')}';
`);
+1049 -1027
View File
File diff suppressed because it is too large Load Diff