diff --git a/lib/Armory.js b/lib/Armory.js index 2e5acc2b3..e78ab33c4 100644 --- a/lib/Armory.js +++ b/lib/Armory.js @@ -1,9 +1,8 @@ -var Point = require('./browser/Point'), +var Point = require('./Point'), Key = require('./Key'), buffertools = require('buffertools'), sha256 = require('../util').sha256, - twoSha256 = require('../util').twoSha256, - BigInteger = require('../browser/vendor-bundle.js').BigInteger; + twoSha256 = require('../util').twoSha256; // TODO: use native modules instead of browser libraries @@ -26,10 +25,8 @@ Armory.prototype.generatePubKey = function () { for (var i = 0; i < 32; i++) chainXor[i] ^= chainCode[i]; - var A = new BigInteger(chainXor.toString('hex'), 16); - var pt = Point.fromUncompressedPubKey(pubKey); - pt = Point.multiply(pt, A); + pt = Point.multiply(pt, chainXor); var new_pubkey = pt.toUncompressedPubKey(); diff --git a/lib/browser/Point.js b/lib/browser/Point.js index 5dd40b9ae..2579d12fb 100644 --- a/lib/browser/Point.js +++ b/lib/browser/Point.js @@ -48,7 +48,9 @@ Point.add = function(p1, p2) { return point; }; -Point.multiply = function(p1, A) { +Point.multiply = function(p1, x) { + var x = new BigInteger(x.toString('hex'), 16); + var ecparams = getSECCurveByName('secp256k1'); var p1xhex = p1.x.toBuffer({size: 32}).toString('hex'); @@ -59,7 +61,7 @@ Point.multiply = function(p1, A) { var p1py = new ECFieldElementFp(ecparams.getCurve().getQ(), p1y); var p1p = new ECPointFp(ecparams.getCurve(), p1px, p1py); - var p = p1p.multiply(A); + var p = p1p.multiply(x); var point = new Point(); var pointxbuf = new Buffer(p.getX().toBigInteger().toByteArrayUnsigned());