From 7159cdb7127fad5f4dd320393cb613a7bf408105 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Tue, 9 Sep 2014 17:08:59 -0700 Subject: [PATCH] settings: added test for new secret scheme --- js/controllers/join.js | 2 +- js/models/core/Wallet.js | 4 ++-- js/models/core/WalletFactory.js | 2 +- test/test.Wallet.js | 11 +++++++++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/js/controllers/join.js b/js/controllers/join.js index d94c24354..37fbf3a70 100644 --- a/js/controllers/join.js +++ b/js/controllers/join.js @@ -129,7 +129,7 @@ angular.module('copayApp.controllers').controller('JoinController', else if (err === 'walletFull') notification.error('The wallet is full'); else if (err === 'badNetwork') - notification.error('Network Error', 'The wallet your are trying to join uses a different Bitcoin Network. Check your settings.'); + notification.error('Network Error', 'Wallet network configuration missmatch'); else if (err === 'badSecret') notification.error('Bad secret', 'The secret string you entered is invalid'); else diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index 56d216ab5..36d70fef1 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -650,7 +650,7 @@ Wallet.prototype.getSecret = function() { var buf = new Buffer( this.getMyCopayerId() + this.getSecretNumber() + - this.getNetworkName() === 'livenet' ? 'L' : 'T', + (this.getNetworkName() === 'livenet' ? '00' : '01'), 'hex'); var str = Base58Check.encode(buf); return str; @@ -666,7 +666,7 @@ Wallet.decodeSecret = function(secretB) { var secret = Base58Check.decode(secretB); var pubKeyBuf = secret.slice(0, 33); var secretNumber = secret.slice(33, 38); - var networkName = secret.slice(38, 39) === 'L' ? 'livenet' : 'testnet'; + var networkName = secret.slice(38, 39).toString('hex') === '00' ? 'livenet' : 'testnet'; return { pubKey: pubKeyBuf.toString('hex'), secretNumber: secretNumber.toString('hex'), diff --git a/js/models/core/WalletFactory.js b/js/models/core/WalletFactory.js index 3902d6763..482b57c37 100644 --- a/js/models/core/WalletFactory.js +++ b/js/models/core/WalletFactory.js @@ -364,7 +364,7 @@ WalletFactory.prototype.joinCreateSession = function(secret, nickname, passphras self.network.greet(decodedSecret.pubKey, opts.secretNumber); self.network.on('data', function(sender, data) { if (data.type === 'walletId') { - if (data.networkName !== self.networkName) { + if (data.networkName !== decodedSecret.networkName) { return cb('badNetwork'); } diff --git a/test/test.Wallet.js b/test/test.Wallet.js index e32698b3e..26498c1e4 100644 --- a/test/test.Wallet.js +++ b/test/test.Wallet.js @@ -362,7 +362,18 @@ describe('Wallet model', function() { var s = Wallet.decodeSecret(sb); s.pubKey.should.equal(id); s.secretNumber.should.equal(secretNumber); + s.networkName.should.equal(w.getNetworkName()); + }); + it('#getSecret decodeSecret livenet', function() { + var w = cachedCreateW2(); + var stub = sinon.stub(w, 'getNetworkName'); + stub.returns('livenet'); + var sb = w.getSecret(); + should.exist(sb); + var s = Wallet.decodeSecret(sb); + s.networkName.should.equal('livenet'); + stub.restore(); });