secp256k1 php,secp256k1

This module provides native bindings to ecdsa secp256k1 functions

secp256k1-node

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

Works on node version 10.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

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(getPrivateKey())

// 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.

Repository

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值