0.7.1 • Published 5 years ago

@polkadot/wasm-schnorrkel v0.7.1

Weekly downloads
4
License
Apache-2.0
Repository
-
Last release
5 years ago

@polkadot/wasm-schnorrkel

A fork of @parity/schnorrkel-js that allows proper operation against all the environments that the @polkadot/api supports. Changes from the base repo -

  • WASM initialisation is done async, via Promise (this allows for clear operation in webpack environments without additional workers)
  • WASM outputs are optimised via wasm-opt from the binaryen project
  • Output bundle is wrapped with camelCase names (not including the __*** internal functions)
  • Full named function definitions for TypeScript
  • Requires for crypto is wrapped, removing the "on-demand-require" warnings in webpack-based environments
  • WASM output is done via a base-64 encoded string, supporting both Node.js and browser environments
  • Code cleanups and addition of functions required for all sr25519 operations
  • Extended tests to cover Rust, wasm (via Node) and wasm (via jest), removed the (here unused) www test interfaces
  • TextDecoder is polyfilled by using the version from @polkadot/util (consistent support, also on React Native)
  • Polyfill for crypto functions that are not available in some environments (e.g. Jest & React Native)

Usage

Install the package (also requires @polkadot/util for TextEncoder polyfills - not included here as a dependency to keep the tree lean)

yarn add @polkadot/wasm-schnorrkel @polkadot/util

Use it -

const { u8aToHex } = require('@polkadot/util');
const { waitReady, keypairFromSeed } = require('@polkadot/wasm-schnorrkel');

async function main () {
  // first wait until the WASM has been loaded (async init)
  await waitReady();

  // generate keypair via all-0 seed
  const pair = keypairFromSeed(new Uint8Array(32));

  // extract the parts
  const secretKey = pair.subarray(0, 64);
  const publicKey = pair.subarray(64, 96);

  // display
  console.log('publicKey:', u8aToHex(publicKey));
  console.log('secretKey:', u8aToHex(secretKey));
}

future work

Support asm.js for environments (like React Native) that doesn't have WASM support. Initial attempts made at this, but not active.

0.7.1

5 years ago

0.7.0-beta.0

5 years ago

0.6.1

5 years ago

0.5.1

5 years ago

0.4.1

5 years ago

0.3.1

5 years ago

0.3.0-beta.0

5 years ago

0.2.1

5 years ago

0.2.0-beta.4

5 years ago

0.2.0-beta.3

5 years ago

0.2.0-beta.2

5 years ago

0.2.0-beta.1

5 years ago

0.1.1

5 years ago

0.1.0-beta.3

5 years ago

0.1.0-beta.2

5 years ago