Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bcoin-native

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bcoin-native

Native bindings to bitcoin-related functions

  • 0.0.6
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

bcoin-native

The missing crypto and encoding bindings for node.js.

This module provides native bindings to all lowlevel optimizable things used in bitcoin.

Used in bcoin.

Functions

  • hash(alg, data)
  • hmac(alg, data)
  • sha256(data)
  • hash160(data)
  • hash256(data)
  • toBase58(data)
  • fromBase58(data)
  • scrypt(pass, salt, n, r, p, klen)
  • scryptAsync(pass, salt, n, r, p, klen, callback)
  • murmur3(data, seed)
  • siphash(data, key)
  • siphash256(data, key)
  • buildMerkleTree(leaves)
  • checkMerkleBranch(hash, branch, index)

Objects

  • Poly1305()
    • #init(key)
    • #update(data)
    • #finish()
    • .verify(mac1, mac2)
    • .auth(data, key)
  • ChaCha20()
    • #init(key?, iv?, counter?)
    • #initKey(key)
    • #initIV(iv, counter?)
    • #encrypt(data)
    • #getCounter()
    • #setCounter(counter)

Usage

var native = require('bcoin-native');
var data = new Buffer('01020304', 'hex');
var key = new Buffer('05060708', 'hex');

var hash1 = native.sha256(data);
var hash2 = native.hash256(data);

console.log('sha256: %s', hash1.toString('hex'));
console.log('double sha256: %s', hash2.toString('hex'));

Outputs:

sha256: 9f64a747e1b97f131fabb6b447296c9b6f0201e79fb3c5356e6c77e89b6a806a
double sha256: 8de472e2399610baaa7f84840547cd409434e31f5d3bd71e4d947f283874f9c0

Benchmarks

$ node bench.js
crypto.sha256: ops=100000, time=0.41668067, rate=239991.93435
native.sha256: ops=100000, time=0.328309021, rate=304591.08219
crypto.hash160: ops=100000, time=0.698852504, rate=143091.71024
native.hash160: ops=100000, time=0.32359362, rate=309029.57852
crypto.hash256: ops=100000, time=0.65909456, rate=151723.29749
native.hash256: ops=100000, time=0.313477282, rate=319002.38308
crypto.sha256hmac: ops=100000, time=0.589858488, rate=169532.18786
native.sha256hmac: ops=100000, time=0.444996526, rate=224720.85546
utils.toBase58: ops=100000, time=0.808880157, rate=123627.70818
native.toBase58: ops=100000, time=0.458057275, rate=218313.31027
utils.fromBase58: ops=100000, time=0.77960898, rate=128269.43066
native.fromBase58: ops=100000, time=0.746901487, rate=133886.46527
js poly1305.update: ops=31250, time=1.6195938239999998, rate=19294.96120
js poly1305.finish: ops=31250, time=2.9935169999999998, rate=10439.22583
c poly1305.update: ops=31250, time=0.184753504, rate=169144.28860
c poly1305.finish: ops=31250, time=1.434867264, rate=21779.01802
js murmur3: ops=1000000, time=4.714874642, rate=212094.71639
c murmur3: ops=1000000, time=0.412050096, rate=2426889.37512
js siphash256: ops=1000000, time=13.218189886, rate=75653.32384
c siphash256: ops=1000000, time=1.19912212, rate=833943.41854

License

Copyright (c) 2016, Christopher Jeffrey. (MIT License)

See LICENSE for more info.

Keywords

FAQs

Package last updated on 24 Sep 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc