adds tests to clientAPI and verified
This commit is contained in:
parent
c92fbb2898
commit
85b1bc08b2
|
@ -1,15 +1,14 @@
|
||||||
var $ = require('preconditions').singleton();
|
var $ = require('preconditions').singleton();
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
|
|
||||||
var Bitcore = require('bitcore');
|
|
||||||
var BitcoinUtils = require('../bitcoinutils')
|
var BitcoinUtils = require('../bitcoinutils')
|
||||||
|
|
||||||
function Verifier(opts) {};
|
function Verifier(opts) {};
|
||||||
|
|
||||||
Verifier.checkAddress = function(data, address) {
|
Verifier.checkAddress = function(data, address) {
|
||||||
var local = BitcoinUtils.deriveAddress(data.publicKeyRing, address.path, data.m, data.network);
|
var local = BitcoinUtils.deriveAddress(data.publicKeyRing, address.path, data.m, data.network);
|
||||||
if (local.address != address.address || JSON.stringify(local.publicKeys)!= JSON.stringify(address.publicKeys))
|
return (local.address == address.address
|
||||||
return cb('Server sent a fake address.');
|
&& JSON.stringify(local.publicKeys) == JSON.stringify(address.publicKeys));
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = Verifier;
|
module.exports = Verifier;
|
||||||
|
|
|
@ -10,6 +10,7 @@ log.debug = log.verbose;
|
||||||
var Bitcore = require('bitcore')
|
var Bitcore = require('bitcore')
|
||||||
var SignUtils = require('../signutils');
|
var SignUtils = require('../signutils');
|
||||||
var Verifier = require('./verifier');
|
var Verifier = require('./verifier');
|
||||||
|
var ServerCompromissedError = require('./servercompromissederror')
|
||||||
|
|
||||||
var BASE_URL = 'http://localhost:3001/copay/api';
|
var BASE_URL = 'http://localhost:3001/copay/api';
|
||||||
|
|
||||||
|
@ -53,6 +54,7 @@ function API(opts) {
|
||||||
}
|
}
|
||||||
this.storage = opts.storage;
|
this.storage = opts.storage;
|
||||||
this.verbose = !!opts.verbose;
|
this.verbose = !!opts.verbose;
|
||||||
|
this.request = request || opts.request;
|
||||||
if (this.verbose) {
|
if (this.verbose) {
|
||||||
log.level = 'debug';
|
log.level = 'debug';
|
||||||
}
|
}
|
||||||
|
@ -93,7 +95,7 @@ API.prototype._doRequest = function(method, url, args, data, cb) {
|
||||||
json: true,
|
json: true,
|
||||||
};
|
};
|
||||||
log.verbose('Request Args', util.inspect(args));
|
log.verbose('Request Args', util.inspect(args));
|
||||||
request(args, function(err, res, body) {
|
this.request(args, function(err, res, body) {
|
||||||
log.verbose('Response:', err, body);
|
log.verbose('Response:', err, body);
|
||||||
|
|
||||||
if (err) return cb(err);
|
if (err) return cb(err);
|
||||||
|
@ -101,6 +103,7 @@ API.prototype._doRequest = function(method, url, args, data, cb) {
|
||||||
_parseError(body);
|
_parseError(body);
|
||||||
return cb('Request error');
|
return cb('Request error');
|
||||||
}
|
}
|
||||||
|
|
||||||
return cb(null, body);
|
return cb(null, body);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -289,7 +292,9 @@ API.prototype.createAddress = function(cb) {
|
||||||
if (data.publicKeyRing.length != data.n)
|
if (data.publicKeyRing.length != data.n)
|
||||||
return cb('Wallet Incomplete, cannot derive address.')
|
return cb('Wallet Incomplete, cannot derive address.')
|
||||||
|
|
||||||
Verifier.checkAddress(data, address);
|
if (!Verifier.checkAddress(data, address)) {
|
||||||
|
return cb(new ServerCompromissedError('Server sent fake address'));
|
||||||
|
}
|
||||||
|
|
||||||
return cb(null, address);
|
return cb(null, address);
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,17 +6,18 @@ function FileStorage(opts) {
|
||||||
throw new Error('Please set the config filename');
|
throw new Error('Please set the config filename');
|
||||||
}
|
}
|
||||||
this.filename = opts.filename;
|
this.filename = opts.filename;
|
||||||
|
this.fs = opts.fs || fs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
FileStorage.prototype.save = function(data) {
|
FileStorage.prototype.save = function(data) {
|
||||||
fs.writeFileSync(this.filename, JSON.stringify(data));
|
this.fs.writeFileSync(this.filename, JSON.stringify(data));
|
||||||
};
|
};
|
||||||
|
|
||||||
FileStorage.prototype.load = function() {
|
FileStorage.prototype.load = function() {
|
||||||
try {
|
try {
|
||||||
return JSON.parse(fs.readFileSync(this.filename));
|
return JSON.parse(this.fs.readFileSync(this.filename));
|
||||||
} catch (ex) {}
|
} catch (ex) {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,15 +10,15 @@ var levelup = require('levelup');
|
||||||
var memdown = require('memdown');
|
var memdown = require('memdown');
|
||||||
var Bitcore = require('bitcore');
|
var Bitcore = require('bitcore');
|
||||||
|
|
||||||
var Utils = require('../lib/utils');
|
var Utils = require('../../lib/utils');
|
||||||
var SignUtils = require('../lib/signutils');
|
var SignUtils = require('../../lib/signutils');
|
||||||
var Storage = require('../lib/storage');
|
var Storage = require('../../lib/storage');
|
||||||
|
|
||||||
var Wallet = require('../lib/model/wallet');
|
var Wallet = require('../../lib/model/wallet');
|
||||||
var Address = require('../lib/model/address');
|
var Address = require('../../lib/model/address');
|
||||||
var Copayer = require('../lib/model/copayer');
|
var Copayer = require('../../lib/model/copayer');
|
||||||
var CopayServer = require('../lib/server');
|
var CopayServer = require('../../lib/server');
|
||||||
var TestData = require('./testdata');
|
var TestData = require('../testdata');
|
||||||
|
|
||||||
|
|
||||||
var helpers = {};
|
var helpers = {};
|
Loading…
Reference in New Issue