WebBuf WebBuf
Docs

Elliptic curve

@webbuf/secp256k1

Rust/wasm optimized secp256k1 ecdsa and Diffie-Hellman

Install

npm install @webbuf/secp256k1

Usage

import {
  publicKeyCreate,
  privateKeyVerify,
  publicKeyVerify,
} from "@webbuf/secp256k1";
import { FixedBuf } from "@webbuf/fixedbuf";

// Generate random private key
const privKey = FixedBuf.fromRandom<32>(32);

// Verify private key is valid
privateKeyVerify(privKey); // true

// Derive public key (compressed, 33 bytes)
const pubKey = publicKeyCreate(privKey);

// Verify public key
publicKeyVerify(pubKey); // true

API reference (8 exports)

Functions

privateKeyAdd

function
privateKeyAdd(privKey1: FixedBuf<32>, privKey2: FixedBuf<32>): FixedBuf<32>

privateKeyVerify

function
privateKeyVerify(privateKey: FixedBuf<32>): boolean

publicKeyAdd

function
publicKeyAdd(publicKey1: FixedBuf<33>, publicKey2: FixedBuf<33>): FixedBuf<33>

publicKeyCreate

function
publicKeyCreate(privateKey: FixedBuf<32>): FixedBuf<33>

publicKeyVerify

function
publicKeyVerify(publicKey: FixedBuf<33>): boolean

sharedSecret

function
sharedSecret(privateKey: FixedBuf<32>, publicKey: FixedBuf<33>): FixedBuf<33>

sign

function
sign(digest: FixedBuf<32>, privateKey: FixedBuf<32>, k: FixedBuf<32>): FixedBuf<64>

verify

function
verify(signature: FixedBuf<64>, digest: FixedBuf<32>, publicKey: FixedBuf<33>): boolean