Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/AESSocket.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var util = require('util');
var EventEmitter = require('events').EventEmitter;
var crypto = require('crypto');
var SecureRandom = require('bitcore').SecureRandom;
var SecureRandom = require('bitcore').crypto.Random;
var shastring = require('./shastring');

function AESSocket(transportSocket, key) {
Expand Down
4 changes: 2 additions & 2 deletions lib/ConnectionRequest.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var bitcore = require('bitcore');
var SecureRandom = bitcore.SecureRandom;
var sha256ripe160 = bitcore.util.sha256ripe160;
var SecureRandom = bitcore.crypto.Random;
var sha256ripe160 = bitcore.crypto.Hash.sha256ripe160;

function ConnectionRequest(id) {
if(!(this instanceof ConnectionRequest)) return new ConnectionRequest(id);
Expand Down
18 changes: 11 additions & 7 deletions lib/Endpoint.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,28 @@ var util = require('util');
var EventEmitter = require('events').EventEmitter;

var bitcore = require('bitcore');
var Key = bitcore.Key;
var ECIES = bitcore.ECIES;
var Message = bitcore.Message;
var PrivateKey = bitcore.PrivateKey;
var ECIES = require('bitcore-ecies');
var Message = bitcore.transport.Messages;

function Endpoint(key) {
if(!(this instanceof Endpoint)) return new Endpoint(key);
this.key = key || Key.generateSync();
this.key = key || new PrivateKey();
};
util.inherits(Endpoint, EventEmitter);

Endpoint.prototype.credentials = function(request) {
//console.log('Endpoint.credentials request', request );
// TODO: request sometimes has a public key, sometimes not?
var sender = ECIES().privateKey( this.key ).publicKey( request.address );

var signature = Message.sign(Buffer.concat([request.address, request.nonce]), this.key);
var msg = Buffer.concat([this.key.public, signature]);
return ECIES.encrypt(request.address, msg);
var msg = Buffer.concat([this.key.publicKey, signature]);
return sender.encrypt( msg );
};

Endpoint.prototype.isMatch = function(pubkey) {
return this.key.public.toString() == pubkey.toString();
return this.key.publicKey.toString() == pubkey.toString();
};

module.exports = Endpoint;
18 changes: 9 additions & 9 deletions lib/KeyExchanger.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
var util = require('util');
var EventEmitter = require('events').EventEmitter;
var bitcore = require('bitcore');
var Key = bitcore.Key;
var sha256 = bitcore.util.sha256;
var Message = bitcore.Message;
var ECIES = bitcore.ECIES;
var SecureRandom = bitcore.SecureRandom;
var PrivateKey = bitcore.PrivateKey;
var sha256 = bitcore.crypto.Hash.sha256;
var Message = bitcore.transport.Messages;
var ECIES = require('bitcore-ecies');
var SecureRandom = bitcore.crypto.Random;
var crypto = require('crypto');
var AESSocket = require('./AESSocket');

Expand All @@ -27,7 +27,7 @@ function KeyExchanger(transport) {
if(!(this instanceof KeyExchanger)) return new KeyExchanger(transport);
var self = this;
this.state = STATE_NEW;
this.key = Key.generateSync(); // eckey for exchange of session key
this.key = new PrivateKey(); // eckey for exchange of session key
this.aesSocket = AESSocket(transport);
var parser = shastring.Parser();
this.aesSocket.parser = parser;
Expand Down Expand Up @@ -63,9 +63,9 @@ KeyExchanger.prototype.handoffToSocket = function() {

KeyExchanger.prototype.clientHandshake = function(callback) {
var self = this;
this.transport.write(shastring(MAGIC_BUF));
this.transport.write(shastring(this.key.public));
this.expectServerPubkey(function(err, pubkey) {
self.transport.write(shastring(MAGIC_BUF));
self.transport.write(shastring(self.key.publicKey));
self.expectServerPubkey(function(err, pubkey) {
if(err) return callback(err);
self.expectPreMasterKey(function(err, preMasterKeyEncrypted) {
if(err) return callback(err);
Expand Down
18 changes: 9 additions & 9 deletions lib/Router.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ var bitcore = require('bitcore');
var EventEmitter = require('events').EventEmitter;
var Socket = require('./Socket');
var ConnectionRequest = require('./ConnectionRequest');
var sha256ripe160 = bitcore.util.sha256ripe160
var base58encode = require('bitcore').Base58.base58.encode;
var sha256ripe160 = bitcore.crypto.Hash.sha256ripe160
var base58encode = bitcore.encoding.Base58.encode;
var Message = require('./Message');
var Endpoint = require('./Endpoint');
var broker = require('./broker');
var tcpconnect = require('./discovery/connect');
var Key = bitcore.Key;
var PrivateKey = bitcore.PrivateKey;

var defaultOptions = {
discovery: {
Expand All @@ -32,7 +32,7 @@ var defaultOptions = {
function Router(options) {
if(!(this instanceof Router)) return new Router(options);
options = options || defaultOptions;
this.key = Key.generateSync();
this.key = new PrivateKey();
this.peers = [];
this.listeners = {};
this.endpoints = [];
Expand All @@ -46,7 +46,7 @@ Router.defaultOptions = defaultOptions;

Router.prototype.id = function() {
if(!this._id) {
this._id = base58encode(sha256ripe160(this.key.public));
this._id = base58encode(sha256ripe160(this.key.publicKey));
}
return this._id;
};
Expand All @@ -60,16 +60,16 @@ Router.prototype.startDiscovery = function(options) {
};

Router.prototype.newKey = function() {
return Key.generateSync();
return new PrivateKey();
};

Router.prototype.createServer = function(options, connectListener) {
options = options || {};
options.key = options.key || Key.generateSync();
var server = Endpoint(options.key);
options.key = options.key || new PrivateKey();
var server = Endpoint( options.key );
this.endpoints.push(server);
if(connectListener) server.on('connect', connectListener);
trace('listening on '+options.key.public.toString('hex'));
trace('listening on '+options.key.publicKey.toString('hex'));
return server;
};

Expand Down
2 changes: 1 addition & 1 deletion lib/Socket.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ var util = require('util');
var EventEmitter = require('events').EventEmitter;
var crypto = require('crypto');
var preconditions = require('preconditions').singleton();
var SecureRandom = require('bitcore').SecureRandom;
var SecureRandom = require('bitcore').crypto.Random;
var Message = require('./Message');

var commandsDest = {
Expand Down
8 changes: 4 additions & 4 deletions lib/broker.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
var Connection = require('./Connection');
var Message = require('./Message');
var bitcore = require('bitcore');
var sha256ripe160 = bitcore.util.sha256ripe160;
var ECIES = bitcore.ECIES;
var sha256ripe160 = bitcore.crypto.Hash.sha256ripe160;
var ECIES = require('bitcore-ecies');
var Msg = bitcore.Message;
var Socket = require('./Socket');
var ConnectionRequest = require('./ConnectionRequest');
var SecureRandom = bitcore.SecureRandom;
var sha256 = bitcore.util.sha256;
var SecureRandom = bitcore.crypto.Random;
var sha256 = bitcore.crypto.Hash.sha256;

messages = {};

Expand Down
2 changes: 1 addition & 1 deletion lib/shastring.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';
var util = require('util');
var EventEmitter = require('events').EventEmitter;
var sha256 = require('bitcore').util.sha256;
var sha256 = require('bitcore').crypto.Hash.sha256;

function Parser(aString) {
if(!(this instanceof Parser)) return new Parser();
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"author": "Stephen Pair",
"license": "MIT",
"dependencies": {
"bitcore": "^0.1.36",
"bitcore": "^0.9.3",
"bitcore-ecies": "0.0.1",
"commander": "^2.3.0",
"polo": "^0.6.0",
"preconditions": "^1.0.7"
Expand Down
14 changes: 8 additions & 6 deletions test/test.Router.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ var should = require('chai').should();
var Router = require('..').Router;
var Peer = require('..').Peer;
var Socket = require('./util/Socket');
var Key = require('bitcore').Key;
var PrivateKey = require('bitcore').PrivateKey;

describe('router', function() {
var routerA, routerB, routerC;
Expand All @@ -19,13 +19,15 @@ describe('router', function() {
routerB.addPeer(Peer(linkB[0], routerB));
routerC.addPeer(Peer(linkB[1], routerC));
});

it('should make a connection', function(testDone) {
var key = Key.generateSync();
var server = routerC.createServer({key: key});
var client = routerA.connect({address: key.public}, function() {
var key = new PrivateKey();
var server = routerC.createServer({ key: key });
var client = routerA.connect({address: key.publicKey}, function() {
testDone();
});
});

it('should be able to transport data', function(testDone) {
var msg1 = 'message one';
var msg2 = 'message two';
Expand All @@ -36,9 +38,9 @@ describe('router', function() {
testDone();
}
};
var key = Key.generateSync();
var key = new PrivateKey();
var server = routerC.createServer({key: key});
var client = routerA.connect({address: key.public}, function() {
var client = routerA.connect({address: key.publicKey}, function() {
client.write(new Buffer(msg1));
});
server.on('connect', function(serverSocket) {
Expand Down
5 changes: 2 additions & 3 deletions test/test.Socket.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ var should = require('chai').should();
var Router = require('..').Router;
var Peer = require('..').Peer;
var SimSocket = require('./util/Socket');
var Key = require('bitcore').Key;
var PrivateKey = require('bitcore').PrivateKey;

describe('router', function() {
var routerA, routerB, routerC;
var client, server;


beforeEach(function(done) {
var linkA = SimSocket.createPair();
var linkB = SimSocket.createPair();
Expand All @@ -19,7 +18,7 @@ describe('router', function() {
routerB.addPeer(Peer(linkA[1], routerB));
routerB.addPeer(Peer(linkB[0], routerB));
routerC.addPeer(Peer(linkB[1], routerC));
var key = Key.generateSync();
var key = new PrivateKey();
client = null;
server = null;
routerC.createServer({key: key}, function(socket) {
Expand Down