This module provides native bindings to ecdsa secp256k1 functions.
This library is experimental, so use at your own risk.
npm install secp256k1
git clone git@github.com:wanderer/secp256k1-node.git
cd secp256k1-node
git submodule init
git submodule update
npm install
NOTE: if you have the development version gmp installed secp256k1 will use it. Otherwise it should fallback to openssl.
var ecdsa = require('secp256k1'),
sr = require('secure-random');
var privateKey = sr.randomBuffer(32);
//a random message to sign
var msg = sr.randomBuffer(32);
//get the public key in a compressed format
var pubKey = ecdsa.createPublicKey(privateKey, true);
//sign the message
var sig = ecdsa.sign(privateKey, msg);
//verify the signature
if(ecdsa.verify(pubKey, msg, sig)){
console.log("valid signature");
}
run npm test
Verify an ECDSA secret key.
Parameters
- secretKey -
Buffer
, the secret Key to verify
Returns: Boolean
, true
if secret key is valid, false
secret key is invalid
Verify an ECDSA public key.
Parameters
- publicKey -
Buffer
, the public Key to verify
Returns: Boolean
, true
if public key is valid, false
secret key is invalid
Create an ECDSA signature.
Parameters
- secretkey -
Buffer
, a 32-byte secret key (assumed to be valid) - msg -
Buffer
, a 32-byte message hash being signed - cb -
function
, the callback given. The callback is given the signature
Returns: Buffer
, if no callback is given a 72-byte signature is returned
Create a compact ECDSA signature (64 byte + recovery id). Runs asynchronously if given a callback
Parameters
- secretKey -
Buffer
, a 32-byte secret key (assumed to be valid) - msg -
Buffer
, 32-byte message hash being signed
cb: function, the callback which is give err
, sig
the
- sig -
Buffer
a 64-byte buffer repersenting the signature - recid -
Buffer
an int which is the recovery id.
Returns: result only returned if no callback is given
- result.signature
- result.r
- result.s
- result.recoveryId
Verify an ECDSA signature. Runs asynchronously if given a callback
Parameters
- pubKey -
Buffer
, the public key - mgs -
Buffer
, the 32-byte message hash being verified - sig -
Buffer
, the signature being verified
Returns: Integer,
- 1: correct signature
- 0: incorrect signature
- -1: invalid public key
- -2: invalid signature
Recover an ECDSA public key from a compact signature in the process also verifing it. Runs asynchronously if given a callback
Parameters
- msg -
Buffer
, the message assumed to be signed - sig -
Buffer
, the signature as 64 byte buffer - recid -
Integer
, the recovery id (as returned by ecdsa_sign_compact) - compressed -
Boolean
, whether to recover a compressed or uncompressed pubkey - cb -
function
, Recover an ECDSA public key from a compact signature. In the process also verifing it.
Returns: Buffer, the pubkey, a 33 or 65 byte buffer
Compute the public key for a secret key.
Parameters
- secKey -
Buffer
, a 32-byte private key. - compressed -
Boolean
, whether the computed public key should be compressed
Returns: Buffer, a 33-byte (if compressed) or 65-byte (if uncompressed) area to store the public key.
Parameters
- secertKey -
Buffer
- compressed -
Boolean
** Returns**: Buffer, privateKey
Parameters
- privateKey -
Buffer
Returns: Buffer
, secertKey
Parameters
- secretKey -
Buffer
Returns: Buffer
, This module provides native bindings to ecdsa secp256k1 functions
Parameters
- privateKey -
Buffer
- tweak -
Buffer
Returns: Buffer
Parameters
- privateKey -
Buffer
- tweak -
Buffer
Returns: Buffer
Parameters
- publicKey -
Buffer
- tweak -
Buffer
Returns: Buffer
Parameters
- publicKey -
Buffer
- tweak -
Buffer
Returns: Buffer
MIT