A lightweight (~6 KB) universal JavaScript digital signature and cryptokey utilty package for Antelope based blockchains.
- 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).
For Node.js, to install antelope-ecc
run:
npm i antelope-ecc
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…}
Supported runtime environments:
- Node.js versions
>=16.0.0
. - Browsers matching the Browserslist query
> 0.5%, not OperaMini all, not dead
. - Deno version
^1.30.0
.
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
:
legacy_from_private_key.mjs
legacy_from_public_key.mjs
legacy_to_private_key.mjs
private_key_from_wif.mjs
private_key_to_wif.mjs
public_key_from_private_wif.mjs
public_key_from_wif.mjs
public_key_to_wif.mjs
validate_private_key.mjs
validate_public_key.mjs
createWebAuthnKey.mjs
createWebAuthnSignaure.mjs
mnemonic-create.mjs
mnemonic-recover.mjs
new_keys.mjs
sign_packed_txn.mjs
sign_txn.mjs