upgrade bigi & remove monkey patching

This commit is contained in:
Wei Lu 2014-05-03 10:04:54 +08:00
parent 39516d5532
commit af1f121fd4
13 changed files with 12 additions and 95 deletions

View file

@ -42,7 +42,7 @@
"compile": "./node_modules/.bin/browserify ./src/index.js -s Bitcoin | ./node_modules/.bin/uglifyjs > bitcoinjs-min.js"
},
"dependencies": {
"bigi": "0.2.0",
"bigi": "1.0.0",
"crypto-js": "3.1.2-3",
"secure-random": "0.2.1"
}

View file

@ -5,7 +5,7 @@
// Merged Buffer refactorings from base58-native by Stephen Pair
// Copyright (c) 2013 BitPay Inc
var BigInteger = require('./bigi')
var BigInteger = require('bigi')
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
var ALPHABET_BUF = new Buffer(ALPHABET, 'ascii')

View file

@ -1,38 +0,0 @@
var assert = require('assert')
var BigInteger = require('bigi')
// Import operations
BigInteger.fromHex = function(hex) {
var buffer = new Buffer(hex, 'hex')
assert.equal(buffer.length, Buffer.byteLength(hex) / 2)
return BigInteger.fromBuffer(buffer)
}
BigInteger.fromBuffer = function(buffer) {
assert(Array.isArray(buffer) || Buffer.isBuffer(buffer)) // FIXME: Transitionary
// FIXME: Transitionary
if (Buffer.isBuffer(buffer)) {
buffer = Array.prototype.slice.call(buffer)
}
return BigInteger.fromByteArrayUnsigned(buffer)
}
// Export operations
BigInteger.prototype.toBuffer = function(s) {
if (s != undefined) assert(Number.isFinite(s))
var buffer = new Buffer(this.toByteArrayUnsigned())
var padded = new Buffer(s - buffer.length)
padded.fill(0)
return Buffer.concat([padded, buffer], s)
}
BigInteger.prototype.toHex = function(s) {
return this.toBuffer(s).toString('hex')
}
module.exports = BigInteger

View file

@ -2,7 +2,7 @@
// Ported loosely from BouncyCastle's Java EC code
// Only Fp curves implemented for now
var BigInteger = require('./bigi')
var BigInteger = require('bigi')
function ECFieldElementFp(q,x) {
this.x = x;

View file

@ -3,7 +3,7 @@ var crypto = require('crypto')
var sec = require('./sec')
var ecparams = sec("secp256k1")
var BigInteger = require('./bigi')
var BigInteger = require('bigi')
var ECPointFp = require('./ec').ECPointFp
var P_OVER_FOUR = null
@ -178,6 +178,8 @@ var ecdsa = {
* }
*/
parseSig: function (sig) {
if(Array.isArray(sig)) sig = new Buffer(sig);
var cursor
if (sig[0] != 0x30) {
throw new Error("Signature not a valid DERSequence")

View file

@ -10,7 +10,7 @@ var crypto = require('./crypto')
var sec = require('./sec')
var ecparams = sec('secp256k1')
var BigInteger = require('./bigi')
var BigInteger = require('bigi')
var ECPointFp = require('./ec').ECPointFp
function ECKey(D, compressed) {

View file

@ -3,7 +3,7 @@ var base58 = require('./base58')
var convert = require('./convert')
var Address = require('./address')
var BigInteger = require('./bigi')
var BigInteger = require('bigi')
var CJS = require('crypto-js')
var crypto = require('./crypto')
var ECKey = require('./eckey').ECKey

View file

@ -6,7 +6,6 @@ module.exports = {
Address: require('./address'),
base58: require('./base58'),
base58check: require('./base58check'),
BigInteger: require('./bigi'),
convert: require('./convert'),
crypto: require('./crypto'),
ec: ec,

View file

@ -1,6 +1,6 @@
// Named EC curves
var BigInteger = require('./bigi')
var BigInteger = require('bigi')
var ECCurveFp = require('./ec')
var ECPointFp = ECCurveFp.ECPointFp

View file

@ -2,7 +2,7 @@
var assert = require('assert')
var Address = require('./address')
var BigInteger = require('./bigi')
var BigInteger = require('bigi')
var Script = require('./script')
var convert = require('./convert')
var crypto = require('./crypto')

View file

@ -1,46 +0,0 @@
var assert = require('assert')
var BigInteger = require('../').BigInteger
var fixtures = require('./fixtures/bigi')
describe('BigInteger', function() {
describe('fromBuffer/fromHex', function() {
it('should match the test vectors', function() {
fixtures.valid.forEach(function(f) {
assert.equal(BigInteger.fromHex(f.hex).toString(), f.dec)
assert.equal(BigInteger.fromHex(f.hexPadded).toString(), f.dec)
})
})
fixtures.invalid.forEach(function(f) {
it('throws on ' + f.description, function() {
assert.throws(function() {
BigInteger.fromHex(f.string)
})
})
})
})
describe('toBuffer/toHex', function() {
it('should match the test vectors', function() {
fixtures.valid.forEach(function(f) {
var bi = new BigInteger(f.dec)
assert.equal(bi.toHex(), f.hex)
assert.equal(bi.toHex(32), f.hexPadded)
})
})
it('throws on non-finite padding value', function() {
var bi = new BigInteger('1')
assert.throws(function() { bi.toHex({}) })
assert.throws(function() { bi.toHex([]) })
assert.throws(function() { bi.toHex('') })
assert.throws(function() { bi.toHex(0 / 0) })
assert.throws(function() { bi.toHex(1 / 0) })
})
})
})
module.exports = BigInteger

View file

@ -3,7 +3,7 @@ var assert = require('assert')
var sec = require('../').sec
var ecparams = sec('secp256k1')
var BigInteger = require('..').BigInteger
var BigInteger = require('bigi')
var ECPointFp = require('../').ECPointFp
describe('ec', function() {

View file

@ -4,7 +4,7 @@ var ecdsa = require('..').ecdsa
var sec = require('..').sec
var ecparams = sec("secp256k1")
var BigInteger = require('..').BigInteger
var BigInteger = require('bigi')
var ECKey = require('..').ECKey
var ECPubKey = require('..').ECPubKey
var Message = require('..').Message