Package Exports
- @hazae41/secp256k1.wasm
Readme
secp256k1.wasm
WebAssembly port of Secp256k1
npm install @hazae41/secp256k1.wasmdeno install jsr:@hazae41/secp256k1-wasmFeatures
- Reproducible building
- Pre-bundled and streamed
- Zero-copy memory slices
Modules
- k256
Algorithms
- ECDSA over Secp256k1
Usage
import { Secp256k1Wasm, Memory, Secp256k1SigningKey, Secp256k1VerifyingKey } from "@hazae41/secp256k1.wasm";
// Wait for WASM to load
await Secp256k1Wasm.initBundled();
using hash = new Memory(crypto.getRandomValues(new Uint8Array(32)))
using keypair = new Secp256k1SigningKey()
using identity = keypair.verifying_key()
using signaturex = keypair.sign_prehash_recoverable(hash)
using signaturem = signaturex.to_bytes()
const signatureb = signaturem.bytes
const r = signatureb.subarray(0, 32)
const s = signatureb.subarray(32, 64)
const v = signatureb[64]
using identity2 = Secp256k1VerifyingKey.recover_from_prehash(hash, signaturex)Building
Reproducible building
You can build the exact same bytecode using Docker, just be sure you're on a linux/amd64 host
npm run compileThen check that all the files are the same using npm diff
npm diffIf the output is empty then the bytecode is the same as the one I published on NPM.
Automated checks
Each time I release a new version on GitHub, the GitHub's CI clones the GitHub repository, reproduces the build, and throws an error if the NPM release is different. If a version is present on NPM but not on GitHub, do not use it!