💻 Javascript Implementation of Boneh-Lynn-Shacham Signatures
This repository has been archived on 2023-04-09. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Marin Petrunić d225aaff04
add release flow
2020-11-30 14:15:05 +01:00
.github add release flow 2020-11-30 14:15:05 +01:00
src Make errors consistent 2020-11-30 00:20:55 +00:00
test Fix linter error 2020-11-29 20:43:57 -06:00
.babel-register Move to packages/bls 2019-08-05 10:48:26 -05:00
.babelrc Update dev delendencies, tests, linter 2020-02-20 14:51:25 -06:00
.eslintrc.js Fix lint issues 2020-11-25 11:50:47 +00:00
.gitignore Remove async from runForAllImplementations 2020-11-29 23:55:45 +00:00
.prettierignore Fix lint issues 2020-11-25 11:50:47 +00:00
.prettierrc.yml Fix prettier config file 2020-11-04 18:04:55 +00:00
CHANGELOG.md Run prettier 2020-11-04 11:40:36 -06:00
LICENSE Move to packages/bls 2019-08-05 10:48:26 -05:00
README.md Add note in README to install blst 2020-11-29 12:21:31 +00:00
blst-native.d.ts Export strategies 2020-11-25 15:03:15 +00:00
blst-native.js Export strategies 2020-11-25 15:03:15 +00:00
browser.d.ts Export strategies 2020-11-25 15:03:15 +00:00
browser.js Export strategies 2020-11-25 15:03:15 +00:00
herumi.d.ts Export strategies 2020-11-25 15:03:15 +00:00
herumi.js Export strategies 2020-11-25 15:03:15 +00:00
karma.conf.js Reduce karma.conf.js diff 2020-11-25 15:16:19 +00:00
node.d.ts Export strategies 2020-11-25 15:03:15 +00:00
node.js Export strategies 2020-11-25 15:03:15 +00:00
package.json Bump @chainsafe/blst 2020-11-29 15:08:17 +00:00
tsconfig.build.json Include tests in ts-config 2020-11-04 18:00:50 +00:00
tsconfig.json Use upstream types for bls-eth-wasm 2020-11-28 19:05:34 +00:00
webpack.config.js add bls browser test execution 2020-01-31 11:17:26 +01:00
yarn.lock Merge pull request #38 from ChainSafe/dependabot/npm_and_yarn/yargs-parser-13.1.2 2020-11-29 10:04:43 -07:00

README.md

bls

Build Status codecov ETH2.0_Spec_Version 0.12.0 ES Version Node Version

Javascript library for BLS (Boneh-Lynn-Shacham) signatures and signature aggregation.

Usage

yarn add @chainsafe/bls

To use native bindings you must install peer dependency @chainsafe/blst

yarn add @chainsafe/bls @chainsafe/blst

You must initialize the library once in your application before using it. The result is cached and use across all your imports

import bls, {init} from "@chainsafe/bls";

(async () => {
  await init("herumi");

  const secretKey = bls.PrivateKey.fromKeygen();
  const publicKey = secretKey.toPublicKey();
  const message = new Uint8Array(32);

  const signature = secretKey.sign(message);
  console.log("Is valid: ", signature.verify(publicKey, message));
})();

Browser

If you are in the browser, import from /browser to import directly the WASM version

import bls from "@chainsafe/bls/browser";

Native bindings only

If you are in NodeJS, import from /node to skip browser specific code. Also install peer dependency @chainsafe/blst which has the native bindings

yarn add @chainsafe/bls @chainsafe/blst
import bls from "@chainsafe/bls/node";

Native bindings + WASM fallback

If you want to offer a fallback in NodeJS, first try to load native bindings and then fallback to WASM. Also install peer dependency @chainsafe/blst which has the native bindings

yarn add @chainsafe/bls @chainsafe/blst
import bls from "@chainsafe/bls";

try {
  await bls.init("blst-native");
} catch (e) {
  await bls.init("herumi");
  console.warn("Using WASM");
}

The API is identical for all implementations.

Spec versioning

Version Bls spec version
2.x.x draft #7
1.x.x draft #6
0.3.x initial version

spec

test vectors

License

Apache-2.0