secp256k1
This module provides native bindings to ecdsa secp256k1 functions
Last updated a year ago by fanatid .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install secp256k1 
SYNC missed versions from official npm registry.

secp256k1-node

This module provides native bindings to bitcoin-core/secp256k1. In browser elliptic will be used as fallback.

Works on node version 14.0.0 or greater, because use N-API.

Installation

from npm

npm install secp256k1

from git
git clone git@github.com:cryptocoinjs/secp256k1-node.git
cd secp256k1-node
git submodule update --init
npm install
Windows

The easiest way to build the package on windows is to install windows-build-tools.

Or install the following software:

And run commands:

npm config set msvs_version 2015 --global
npm install npm@next -g

Based on:

Usage

Private Key generation, Public Key creation, signature creation, signature verification
const { randomBytes } = require('crypto')
const secp256k1 = require('secp256k1')
// or require('secp256k1/elliptic')
//   if you want to use pure js implementation in node

// generate message to sign
// message should have 32-byte length, if you have some other length you can hash message
// for example `msg = sha256(rawMessage)`
const msg = randomBytes(32)

// generate privKey
let privKey
do {
  privKey = randomBytes(32)
} while (!secp256k1.privateKeyVerify(privKey))

// get the public key in a compressed format
const pubKey = secp256k1.publicKeyCreate(privKey)

// sign the message
const sigObj = secp256k1.ecdsaSign(msg, privKey)

// verify the signature
console.log(secp256k1.ecdsaVerify(sigObj.signature, msg, pubKey))
// => true

* .verify return false for high signatures

Get X point of ECDH
const { randomBytes } = require('crypto')
// const secp256k1 = require('./elliptic')
const secp256k1 = require('./')

// generate privKey
function getPrivateKey () {
  while (true) {
    const privKey = randomBytes(32)
    if (secp256k1.privateKeyVerify(privKey)) return privKey
  }
}

// generate private and public keys
const privKey = getPrivateKey()
const pubKey = secp256k1.publicKeyCreate(privKey)

// compressed public key from X and Y
function hashfn (x, y) {
  const pubKey = new Uint8Array(33)
  pubKey[0] = (y[31] & 1) === 0 ? 0x02 : 0x03
  pubKey.set(x, 1)
  return pubKey
}

// get X point of ecdh
const ecdhPointX = secp256k1.ecdh(pubKey, privKey, { hashfn }, Buffer.alloc(33))
console.log(ecdhPointX.toString('hex'))

LICENSE

This library is free and open-source software released under the MIT license.

Current Tags

  • 5.0.1                                ...           latest (a year ago)

62 Versions

  • 3.8.1                                ...           a year ago
  • 4.0.4                                ...           a year ago
  • 5.0.1                                ...           a year ago
  • 5.0.0                                ...           3 years ago
  • 4.0.3                                ...           4 years ago
  • 4.0.2                                ...           6 years ago
  • 4.0.1                                ...           6 years ago
  • 4.0.0                                ...           6 years ago
  • 3.8.0                                ...           6 years ago
  • 3.7.1                                ...           7 years ago
  • 3.7.0                                ...           7 years ago
  • 3.6.2                                ...           7 years ago
  • 3.6.1                                ...           7 years ago
  • 3.6.0 [deprecated]           ...           7 years ago
  • 3.5.2                                ...           8 years ago
  • 3.5.0                                ...           8 years ago
  • 3.4.0                                ...           8 years ago
  • 3.3.1                                ...           8 years ago
  • 3.3.0                                ...           9 years ago
  • 3.2.5                                ...           9 years ago
  • 3.2.2                                ...           9 years ago
  • 3.2.0                                ...           10 years ago
  • 3.1.0                                ...           10 years ago
  • 3.0.1                                ...           10 years ago
  • 3.0.0                                ...           10 years ago
  • 2.0.10                                ...           10 years ago
  • 2.0.9                                ...           10 years ago
  • 2.0.8                                ...           10 years ago
  • 2.0.7                                ...           10 years ago
  • 2.0.6                                ...           10 years ago
  • 2.0.5                                ...           10 years ago
  • 2.0.4                                ...           10 years ago
  • 2.0.3                                ...           10 years ago
  • 2.0.2                                ...           10 years ago
  • 2.0.1                                ...           10 years ago
  • 2.0.0                                ...           10 years ago
  • 1.1.6                                ...           10 years ago
  • 1.1.5                                ...           10 years ago
  • 1.1.4                                ...           11 years ago
  • 1.1.3                                ...           11 years ago
  • 1.1.2                                ...           11 years ago
  • 1.1.1                                ...           11 years ago
  • 1.1.0                                ...           11 years ago
  • 1.0.1                                ...           11 years ago
  • 1.0.0                                ...           11 years ago
  • 0.0.17                                ...           11 years ago
  • 0.0.16                                ...           11 years ago
  • 0.0.15                                ...           11 years ago
  • 0.0.14                                ...           11 years ago
  • 0.0.13                                ...           11 years ago
  • 0.0.12                                ...           11 years ago
  • 0.0.11                                ...           11 years ago
  • 0.0.10                                ...           11 years ago
  • 0.0.9                                ...           11 years ago
  • 0.0.8                                ...           11 years ago
  • 0.0.7                                ...           11 years ago
  • 0.0.6                                ...           11 years ago
  • 0.0.5                                ...           11 years ago
  • 0.0.4                                ...           12 years ago
  • 0.0.3                                ...           12 years ago
  • 0.0.2                                ...           12 years ago
  • 0.0.1                                ...           12 years ago
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (3)
Dev Dependencies (0)
None

Copyright 2013 - present © cnpmjs.org | Home |