Skip to content

A universal JavaScript ECC digital signature and key utility package for Antelope based blockchains

License

Notifications You must be signed in to change notification settings

pur3miish/Antelope-ECC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

antelope ecc logo

Antelope ECC

NPM Package CI status License: MIT

A lightweight (~6 KB) universal JavaScript digital signature and cryptokey utilty package for Antelope based blockchains.

Features of package Antelope blokchain

  • Generate sep256k1 signatures (SIG_K1) .
  • Generate secp256k1 key pair (private and public keys).
  • Derive public key from private key.
  • Recover public key from siganture.
  • Create and recover private key mnemonic (BIP39).
  • Legacy key transformation utility functions.
  • Create and sign with webauthn keys an signatures (PUB_WA & SIG_WA).

Installation

For Node.js, to install antelope-ecc run:

npm i antelope-ecc

Examples

Signing a packed transaction.

import sign_packed_txn from "antelope-ecc/sign_packed_txn.mjs";

sign_packed_txn({
  chain_id: "2a02a0053…",
  transaction_header: "fa123232…",
  transaction_body: "fa45ffa2…",
  wif_private_key: "PVT_K1_…",
}).then(console.log);

The logged output will be SIG_K1_…

Sign a message digest.

import sign_txn from "antelope-ecc/sign_txn.mjs";
import crypto from "crypto";

sign_txn({
  hash: crypto
    .createHash("sha256")
    .update(Uint8Array.from([1, 2, 3, 4, 5]))
    .digest()
    .toString("hex"), // Uint8Array | string
  wif_private_key: "PVT_K1_43…",
}).then(console.log);

The logged output will be SIG_K1…

An example of how to create a pair keys.

import new_keys from "antelope-ecc/new_keys.mjs";

new_keys().then(console.log);

The logged output will be an object containing PUB_K1 and PVT_K1 wif keys.

Recover public key from signature.

import recover_public_key from "antelope-ecc/recover_public_key.mjs";

const hash = Uint8Array.from(
  crypto.createHash("sha256").update(Buffer.from("ff", "hex")).digest()
); // Data signed with private key

recover_public_key({
  signature: "SIG_K1_…",
  hash,
}).then(console.log);

The logged output will contain the public key “PUB_K1…” used to sign the hash.

Ways to require in CJS

Note

As this package is ESM if you need to require it in a Common JS package, then you can require like this:

(async function () {
  const { default: new_keys } = await import("antelope-ecc/new_keys.mjs");
  const key_pair = await new_keys();
  console.log(key_pair);
})();

the logged output was: { public_key: PUB_K1_6…, private_key: PVT_K1_ge…}

Requirements

Supported runtime environments:

Exports

The npm package antelope-ecc features optimal JavaScript module design. It doesn’t have a main index module, so use deep imports from the ECMAScript modules that are exported via the package.json field exports: