diff --git a/Makefile b/Makefile index a8ec26e5..f11d93b3 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,10 @@ test: - ./node_modules/.bin/mocha test/*-test.js + mocha test/*-test.js + +coverage: + rm -rf lib-cov + jscoverage src/js/ripple lib-cov + RIPPLE_LIB_COV=1 mocha --reporter html-cov test/*-test.js > coverage.html + rm -rf lib-cov .PHONY: test diff --git a/src/js/ripple/amount.js b/src/js/ripple/amount.js index 5316cb2e..1687c530 100644 --- a/src/js/ripple/amount.js +++ b/src/js/ripple/amount.js @@ -1,9 +1,10 @@ // Represent Ripple amounts and currencies. // - Numbers in hex are big-endian. -var sjcl = require('../../../build/sjcl'); -var bn = sjcl.bn; var utils = require('./utils'); +var sjcl = utils.sjcl; +var bn = sjcl.bn; + var jsbn = require('./jsbn'); var BigInteger = jsbn.BigInteger; diff --git a/src/js/ripple/base.js b/src/js/ripple/base.js index 0241ab44..9d248116 100644 --- a/src/js/ripple/base.js +++ b/src/js/ripple/base.js @@ -1,4 +1,4 @@ -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var utils = require('./utils'); var jsbn = require('./jsbn'); var extend = require('extend'); diff --git a/src/js/ripple/index.js b/src/js/ripple/index.js index 692155f3..f391c4c0 100644 --- a/src/js/ripple/index.js +++ b/src/js/ripple/index.js @@ -19,7 +19,7 @@ exports.Server = require('./server').Server; // However, for programs that are tied to a specific version of ripple.js like // the official client, it makes sense to expose the SJCL instance so we don't // have to include it twice. -exports.sjcl = require('../../../build/sjcl'); +exports.sjcl = require('./utils').sjcl; exports.config = require('./config'); diff --git a/src/js/ripple/keypair.js b/src/js/ripple/keypair.js index 2b1c22d2..cfeb2d2e 100644 --- a/src/js/ripple/keypair.js +++ b/src/js/ripple/keypair.js @@ -1,4 +1,4 @@ -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var UInt256 = require('./uint256').UInt256; diff --git a/src/js/ripple/remote.js b/src/js/ripple/remote.js index eaa3b765..9bb88438 100644 --- a/src/js/ripple/remote.js +++ b/src/js/ripple/remote.js @@ -32,7 +32,7 @@ var RippleError = require('./rippleerror').RippleError; var utils = require('./utils'); var config = require('./config'); -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; /** Interface to manage the connection to a Ripple server. @@ -762,8 +762,9 @@ Remote.prototype.request_tx = function (hash, callback) { Remote.prototype.request_account_info = function (accountID, callback) { var request = new Request(this, 'account_info'); - request.message.ident = UInt160.json_rewrite(accountID); // DEPRECATED - request.message.account = UInt160.json_rewrite(accountID); + var account = UInt160.json_rewrite(accountID); + request.message.ident = account; //DEPRECATED; + request.message.account = account; request.callback(callback); return request; }; diff --git a/src/js/ripple/seed.js b/src/js/ripple/seed.js index d6b3fa08..b6abc5ab 100644 --- a/src/js/ripple/seed.js +++ b/src/js/ripple/seed.js @@ -2,17 +2,17 @@ // Seed support // -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var utils = require('./utils'); var jsbn = require('./jsbn'); var extend = require('extend'); var BigInteger = jsbn.BigInteger; -var Base = require('./base').Base, - UInt = require('./uint').UInt, - UInt256 = require('./uint256').UInt256, - KeyPair = require('./keypair').KeyPair; +var Base = require('./base').Base; +var UInt = require('./uint').UInt; +var UInt256 = require('./uint256').UInt256; +var KeyPair = require('./keypair').KeyPair; var Seed = extend(function () { // Internal form: NaN or BigInteger @@ -27,7 +27,7 @@ Seed.prototype.constructor = Seed; // value = NaN on error. // One day this will support rfc1751 too. Seed.prototype.parse_json = function (j) { - if ('string' === typeof j) { + if (typeof j === 'string') { if (!j.length) { this._value = NaN; // XXX Should actually always try and continue if it failed. @@ -47,7 +47,7 @@ Seed.prototype.parse_json = function (j) { }; Seed.prototype.parse_passphrase = function (j) { - if ("string" !== typeof j) { + if (typeof j !== 'string') { throw new Error("Passphrase must be a string"); } @@ -60,8 +60,9 @@ Seed.prototype.parse_passphrase = function (j) { }; Seed.prototype.to_json = function () { - if (!(this._value instanceof BigInteger)) + if (!(this._value instanceof BigInteger)) { return NaN; + } var output = Base.encode_check(Base.VER_FAMILY_SEED, this.to_bytes()); @@ -70,18 +71,18 @@ Seed.prototype.to_json = function () { function append_int(a, i) { return [].concat(a, i >> 24, (i >> 16) & 0xff, (i >> 8) & 0xff, i & 0xff); -} +}; function firstHalfOfSHA512(bytes) { return sjcl.bitArray.bitSlice( sjcl.hash.sha512.hash(sjcl.codec.bytes.toBits(bytes)), 0, 256 ); -} +}; function SHA256_RIPEMD160(bits) { return sjcl.hash.ripemd160.hash(sjcl.hash.sha256.hash(bits)); -} +}; Seed.prototype.get_key = function (account_id) { if (!this.is_valid()) { @@ -89,11 +90,10 @@ Seed.prototype.get_key = function (account_id) { } // XXX Should loop over keys until we find the right one + var private_gen, public_gen; var curve = this._curve; + var seq = 0, i = 0; - var seq = 0; - - var private_gen, public_gen, i = 0; do { private_gen = sjcl.bn.fromBits(firstHalfOfSHA512(append_int(this.to_bytes(), i))); i++; @@ -103,6 +103,7 @@ Seed.prototype.get_key = function (account_id) { var sec; i = 0; + do { sec = sjcl.bn.fromBits(firstHalfOfSHA512(append_int(append_int(public_gen.toBytesCompressed(), seq), i))); i++; diff --git a/src/js/ripple/serializedobject.js b/src/js/ripple/serializedobject.js index 1d3a7c2b..e61f1a38 100644 --- a/src/js/ripple/serializedobject.js +++ b/src/js/ripple/serializedobject.js @@ -1,5 +1,5 @@ var binformat = require('./binformat'); -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var extend = require('extend'); var stypes = require('./serializedtypes'); diff --git a/src/js/ripple/serializedtypes.js b/src/js/ripple/serializedtypes.js index 06511c48..a83048d7 100644 --- a/src/js/ripple/serializedtypes.js +++ b/src/js/ripple/serializedtypes.js @@ -8,7 +8,7 @@ var extend = require('extend'); var utils = require('./utils'); -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var amount = require('./amount'); var UInt128 = require('./uint128').UInt128; diff --git a/src/js/ripple/transaction.js b/src/js/ripple/transaction.js index d34c96ed..43936708 100644 --- a/src/js/ripple/transaction.js +++ b/src/js/ripple/transaction.js @@ -45,7 +45,7 @@ var EventEmitter = require('events').EventEmitter; var util = require('util'); -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var Amount = require('./amount').Amount; var Currency = require('./amount').Currency; diff --git a/src/js/ripple/uint.js b/src/js/ripple/uint.js index e18af9cd..ae3b2d48 100644 --- a/src/js/ripple/uint.js +++ b/src/js/ripple/uint.js @@ -1,5 +1,4 @@ - -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var utils = require('./utils'); var config = require('./config'); var jsbn = require('./jsbn'); diff --git a/src/js/ripple/uint128.js b/src/js/ripple/uint128.js index 844986d7..286ee888 100644 --- a/src/js/ripple/uint128.js +++ b/src/js/ripple/uint128.js @@ -1,5 +1,4 @@ - -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var utils = require('./utils'); var config = require('./config'); var jsbn = require('./jsbn'); diff --git a/src/js/ripple/uint160.js b/src/js/ripple/uint160.js index 1a893f60..e08aa517 100644 --- a/src/js/ripple/uint160.js +++ b/src/js/ripple/uint160.js @@ -1,4 +1,4 @@ -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var utils = require('./utils'); var config = require('./config'); var jsbn = require('./jsbn'); diff --git a/src/js/ripple/uint256.js b/src/js/ripple/uint256.js index b2c16dec..6f385410 100644 --- a/src/js/ripple/uint256.js +++ b/src/js/ripple/uint256.js @@ -1,5 +1,4 @@ - -var sjcl = require('../../../build/sjcl'); +var sjcl = require('./utils').sjcl; var utils = require('./utils'); var config = require('./config'); var jsbn = require('./jsbn'); diff --git a/src/js/ripple/utils.js b/src/js/ripple/utils.js index 5aede4d0..1dfb5ac0 100644 --- a/src/js/ripple/utils.js +++ b/src/js/ripple/utils.js @@ -140,5 +140,13 @@ exports.logObject = logObject; exports.assert = assert; exports.arrayUnique = arrayUnique; exports.toTimestamp = toTimestamp; +exports.sjcl = (function() { + try { + var sjcl = require('../../../build/sjcl'); + } catch(e) { + var sjcl = require('../build/sjcl'); + } + return sjcl; +})(); // vim:sw=2:sts=2:ts=8:et