From 78ae38855315a958b23e42a71e8798dca4bf6ca4 Mon Sep 17 00:00:00 2001 From: olalonde Date: Wed, 7 May 2014 14:14:10 +0800 Subject: [PATCH] Replace process.versions tests by browserify's package.json browser field. Fixes #329 --- bitcore.js | 4 ++-- browser/build.js | 1 - lib/BIP32.js | 2 +- lib/Base58.js | 2 +- lib/Bignum.js | 5 ----- lib/Block.js | 2 +- lib/Curve.js | 2 +- lib/Electrum.js | 2 +- lib/Key.js | 6 +----- lib/Point.js | 44 ++++++++++++++++++++++++++++++++++----- lib/ScriptInterpreter.js | 2 +- lib/SecureRandom.js | 13 ++++++++---- lib/Transaction.js | 2 +- lib/TransactionBuilder.js | 2 +- lib/browser/Key.js | 2 +- lib/browser/Point.js | 2 +- lib/node/Key.js | 3 --- lib/node/Point.js | 39 ---------------------------------- lib/node/SecureRandom.js | 10 --------- package.json | 6 ++++++ util/util.js | 2 +- 21 files changed, 68 insertions(+), 85 deletions(-) delete mode 100644 lib/Bignum.js delete mode 100644 lib/node/Key.js delete mode 100644 lib/node/Point.js delete mode 100644 lib/node/SecureRandom.js diff --git a/bitcore.js b/bitcore.js index 1ab83ef..c1f595a 100644 --- a/bitcore.js +++ b/bitcore.js @@ -10,10 +10,10 @@ var requireWhenAccessed = function(name, file) { Object.defineProperty(module.exports, name, {get: function() {return require(file)}}); }; -requireWhenAccessed('Bignum', './lib/Bignum'); +requireWhenAccessed('Bignum', 'bignum'); Object.defineProperty(module.exports, 'bignum', {get: function() { console.log('bignum (with a lower-case "b") is deprecated. Use bitcore.Bignum (capital "B") instead.'); - return require('./lib/Bignum'); + return require('bignum'); }}); requireWhenAccessed('Base58', './lib/Base58'); Object.defineProperty(module.exports, 'base58', {get: function() { diff --git a/browser/build.js b/browser/build.js index 61f7ada..46cbf07 100644 --- a/browser/build.js +++ b/browser/build.js @@ -25,7 +25,6 @@ var pack = function (params) { var modules = [ 'lib/Address', 'lib/Base58', - 'lib/Bignum', 'lib/BIP32', 'lib/Block', 'lib/Bloom', diff --git a/lib/BIP32.js b/lib/BIP32.js index 8542687..442310b 100644 --- a/lib/BIP32.js +++ b/lib/BIP32.js @@ -4,7 +4,7 @@ var coinUtil = imports.coinUtil || require('../util'); var Key = imports.Key || require('./Key'); var Point = imports.Point || require('./Point'); var SecureRandom = imports.SecureRandom || require('./SecureRandom'); -var bignum = imports.bignum || require('./Bignum'); +var bignum = imports.bignum || require('bignum'); var networks = require('../networks'); var secp256k1_n = new bignum('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141', 16); diff --git a/lib/Base58.js b/lib/Base58.js index 71f1c23..d1ac810 100644 --- a/lib/Base58.js +++ b/lib/Base58.js @@ -1,5 +1,5 @@ var crypto = require('crypto'); -var bignum = require('./Bignum'); +var bignum = require('bignum'); var globalBuffer = new Buffer(1024); var zerobuf = new Buffer(0); diff --git a/lib/Bignum.js b/lib/Bignum.js deleted file mode 100644 index 274b28d..0000000 --- a/lib/Bignum.js +++ /dev/null @@ -1,5 +0,0 @@ -if (process.versions) { - module.exports = require('bignum'); - return; -} -module.exports = require('./browser/Bignum'); diff --git a/lib/Block.js b/lib/Block.js index 63f84c5..57c6d48 100644 --- a/lib/Block.js +++ b/lib/Block.js @@ -3,7 +3,7 @@ var imports = require('soop').imports(); var util = imports.util || require('../util'); var Debug1 = imports.Debug1 || function() {}; var Script = imports.Script || require('./Script'); -var Bignum = imports.Bignum || require('./Bignum'); +var Bignum = imports.Bignum || require('bignum'); var Binary = imports.Binary || require('binary'); var Step = imports.Step || require('step'); var buffertools = imports.buffertools || require('buffertools'); diff --git a/lib/Curve.js b/lib/Curve.js index e5ec4fb..f2d140d 100644 --- a/lib/Curve.js +++ b/lib/Curve.js @@ -1,6 +1,6 @@ "use strict"; var imports = require('soop'); -var bignum = imports.bignum || require('./Bignum'); +var bignum = imports.bignum || require('bignum'); var Point = imports.Point || require('./Point'); var n = bignum.fromBuffer(new Buffer("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141", 'hex'), {size: 32}); diff --git a/lib/Electrum.js b/lib/Electrum.js index 284c3d4..0245779 100644 --- a/lib/Electrum.js +++ b/lib/Electrum.js @@ -2,7 +2,7 @@ var Key = require('./Key'), Point = require('./Point'), twoSha256 = require('../util').twoSha256, buffertools = require('buffertools'), - bignum = require('./Bignum'); + bignum = require('bignum'); /** * Pre-BIP32 Electrum public key derivation (electrum <2.0) diff --git a/lib/Key.js b/lib/Key.js index f2c655f..8e079d9 100644 --- a/lib/Key.js +++ b/lib/Key.js @@ -1,5 +1 @@ -if (process.versions) { - module.exports = require('./node/Key'); - return; -} -module.exports = require('./browser/Key'); +module.exports = require('bindings')('KeyModule').Key; diff --git a/lib/Point.js b/lib/Point.js index 0fb01ac..64d4dd7 100644 --- a/lib/Point.js +++ b/lib/Point.js @@ -1,5 +1,39 @@ -if (process.versions) { - module.exports = require('./node/Point'); - return; -} -module.exports = require('./browser/Point'); +"use strict"; + +var imports = require('soop').imports(); +var bignum = imports.bignum || require('bignum'); +var CPPKey = imports.CPPKey || require('bindings')('KeyModule').Key; +var assert = require('assert'); + +//a point on the secp256k1 curve +//x and y are bignums +var Point = function(x, y) { + this.x = x; + this.y = y; +}; + +Point.add = function(p1, p2) { + var u1 = p1.toUncompressedPubKey(); + var u2 = p2.toUncompressedPubKey(); + var pubKey = CPPKey.addUncompressed(u1, u2); + return Point.fromUncompressedPubKey(pubKey); +}; + +//convert the public key of a Key into a Point +Point.fromUncompressedPubKey = function(pubkey) { + var point = new Point(); + point.x = bignum.fromBuffer(pubkey.slice(1, 33), {size: 32}); + point.y = bignum.fromBuffer(pubkey.slice(33, 65), {size: 32}); + return point; +}; + +//convert the Point into the Key containing a compressed public key +Point.prototype.toUncompressedPubKey = function() { + var xbuf = this.x.toBuffer({size: 32}); + var ybuf = this.y.toBuffer({size: 32}); + var prefix = new Buffer([0x04]); + var pubkey = Buffer.concat([prefix, xbuf, ybuf]); + return pubkey; +}; + +module.exports = require('soop')(Point); diff --git a/lib/ScriptInterpreter.js b/lib/ScriptInterpreter.js index 3bb72d5..2529a31 100644 --- a/lib/ScriptInterpreter.js +++ b/lib/ScriptInterpreter.js @@ -4,7 +4,7 @@ var log = imports.log || require('../util/log'); var util = imports.util || require('../util'); var Opcode = imports.Opcode || require('./Opcode'); var buffertools = imports.buffertools || require('buffertools'); -var bignum = imports.bignum || require('./Bignum'); +var bignum = imports.bignum || require('bignum'); var Util = imports.Util || require('../util'); var Script = require('./Script'); var Key = require('./Key'); diff --git a/lib/SecureRandom.js b/lib/SecureRandom.js index fa7f5ef..7398936 100644 --- a/lib/SecureRandom.js +++ b/lib/SecureRandom.js @@ -1,5 +1,10 @@ -if (process.versions) { - module.exports = require('./node/SecureRandom'); - return; +var imports = require('soop'); +var crypto = imports.crypto || require('crypto'); + +var SecureRandom = require('./common/SecureRandom'); + +SecureRandom.getRandomBuffer = function(size) { + return crypto.randomBytes(size); } -module.exports = require('./browser/SecureRandom'); + +module.exports = require('soop')(SecureRandom); diff --git a/lib/Transaction.js b/lib/Transaction.js index 3593112..d79b627 100644 --- a/lib/Transaction.js +++ b/lib/Transaction.js @@ -5,7 +5,7 @@ var Address = imports.Address || require('./Address'); var Script = imports.Script || require('./Script'); var ScriptInterpreter = imports.ScriptInterpreter || require('./ScriptInterpreter'); var util = imports.util || require('../util'); -var bignum = imports.bignum || require('./Bignum'); +var bignum = imports.bignum || require('bignum'); var Put = imports.Put || require('bufferput'); var Parser = imports.Parser || require('../util/BinaryParser'); var Step = imports.Step || require('step'); diff --git a/lib/TransactionBuilder.js b/lib/TransactionBuilder.js index dbf46d4..1c6ad36 100644 --- a/lib/TransactionBuilder.js +++ b/lib/TransactionBuilder.js @@ -54,7 +54,7 @@ var imports = require('soop').imports(); var Address = imports.Address || require('./Address'); var Script = imports.Script || require('./Script'); var util = imports.util || require('../util'); -var bignum = imports.bignum || require('./Bignum'); +var bignum = imports.bignum || require('bignum'); var buffertools = imports.buffertools || require('buffertools'); var networks = imports.networks || require('../networks'); var WalletKey = imports.WalletKey || require('./WalletKey'); diff --git a/lib/browser/Key.js b/lib/browser/Key.js index d4eb452..43eb4fd 100644 --- a/lib/browser/Key.js +++ b/lib/browser/Key.js @@ -1,7 +1,7 @@ var ECKey = require('../../browser/vendor-bundle.js').ECKey; var SecureRandom = require('../SecureRandom'); var Curve = require('../Curve'); -var bignum = require('../Bignum'); +var bignum = require('bignum'); var Key = function() { this._pub = null; diff --git a/lib/browser/Point.js b/lib/browser/Point.js index e6fece9..1e935e0 100644 --- a/lib/browser/Point.js +++ b/lib/browser/Point.js @@ -2,7 +2,7 @@ var imports = require('soop').imports(); var Key = imports.Key || require('./Key'); -var bignum = imports.bignum || require('../Bignum'); +var bignum = imports.bignum || require('bignum'); var assert = require('assert'); var ECPointFp = require('../../browser/vendor-bundle.js').ECPointFp; var ECFieldElementFp = require('../../browser/vendor-bundle.js').ECFieldElementFp; diff --git a/lib/node/Key.js b/lib/node/Key.js deleted file mode 100644 index bec7c80..0000000 --- a/lib/node/Key.js +++ /dev/null @@ -1,3 +0,0 @@ -var Key = require('bindings')('KeyModule').Key; - -module.exports = Key; diff --git a/lib/node/Point.js b/lib/node/Point.js deleted file mode 100644 index 76a04cb..0000000 --- a/lib/node/Point.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; - -var imports = require('soop').imports(); -var bignum = imports.bignum || require('../Bignum'); -var CPPKey = imports.CPPKey || require('bindings')('KeyModule').Key; -var assert = require('assert'); - -//a point on the secp256k1 curve -//x and y are bignums -var Point = function(x, y) { - this.x = x; - this.y = y; -}; - -Point.add = function(p1, p2) { - var u1 = p1.toUncompressedPubKey(); - var u2 = p2.toUncompressedPubKey(); - var pubKey = CPPKey.addUncompressed(u1, u2); - return Point.fromUncompressedPubKey(pubKey); -}; - -//convert the public key of a Key into a Point -Point.fromUncompressedPubKey = function(pubkey) { - var point = new Point(); - point.x = bignum.fromBuffer(pubkey.slice(1, 33), {size: 32}); - point.y = bignum.fromBuffer(pubkey.slice(33, 65), {size: 32}); - return point; -}; - -//convert the Point into the Key containing a compressed public key -Point.prototype.toUncompressedPubKey = function() { - var xbuf = this.x.toBuffer({size: 32}); - var ybuf = this.y.toBuffer({size: 32}); - var prefix = new Buffer([0x04]); - var pubkey = Buffer.concat([prefix, xbuf, ybuf]); - return pubkey; -}; - -module.exports = require('soop')(Point); diff --git a/lib/node/SecureRandom.js b/lib/node/SecureRandom.js deleted file mode 100644 index 3639f75..0000000 --- a/lib/node/SecureRandom.js +++ /dev/null @@ -1,10 +0,0 @@ -var imports = require('soop'); -var crypto = imports.crypto || require('crypto'); - -var SecureRandom = require('../common/SecureRandom'); - -SecureRandom.getRandomBuffer = function(size) { - return crypto.randomBytes(size); -} - -module.exports = require('soop')(SecureRandom); diff --git a/package.json b/package.json index 60de0af..6f65d2b 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,12 @@ "android-browser/latest" ] }, + "browser": { + "bignum": "./lib/browser/Bignum.js", + "./lib/Key.js": "./lib/browser/Key.js", + "./lib/Point.js": "./lib/browser/Point.js", + "./lib/SecureRandom.js": "./lib/browser/SecureRandom.js" + }, "license": "MIT", "engines": { "node": ">=0.10" diff --git a/util/util.js b/util/util.js index ab52209..a59df4b 100644 --- a/util/util.js +++ b/util/util.js @@ -1,5 +1,5 @@ var crypto = require('crypto'); -var bignum = require('../lib/Bignum'); +var bignum = require('bignum'); var Binary = require('binary'); var Put = require('bufferput'); var buffertools = require('buffertools');