From 14cea0362f3efd4cd5806e529f03d808fbba3622 Mon Sep 17 00:00:00 2001 From: Gustavo Cortez Date: Mon, 7 Jul 2014 20:01:50 -0300 Subject: [PATCH] Fixes and re-factory --- js/models/core/Wallet.js | 26 +++++++++++--------------- test/test.Wallet.js | 6 +++--- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index dd6d312e6..7e892dd42 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -140,9 +140,11 @@ Wallet.prototype._handleAddressBook = function(senderId, data, isInbound) { var hasChange; for (var key in rcv) { if (!this.addressBook[key]) { - this.addressBook[key] = rcv[key]; - var isVerified = this.verifyAddressbookSignature(senderId, key); - hasChange = true; + var isVerified = this.verifyAddressbookEntry(rcv[key], senderId, key); + if (isVerified) { + this.addressBook[key] = rcv[key]; + hasChange = true; + } } } if (hasChange) { @@ -854,22 +856,16 @@ Wallet.prototype.setAddressBook = function(key, label) { this.store(); }; -Wallet.prototype.verifyAddressbookSignature = function(senderId, key) { +Wallet.prototype.verifyAddressbookEntry = function(rcvEntry, senderId, key) { if (!key) throw new Error('Keys are required'); - var signature = this.addressBook[key].signature; + var signature = rcvEntry.signature; var payload = { address: key, - label: this.addressBook[key].label, - copayerId: this.addressBook[key].copayerId, - createdTs: this.addressBook[key].createdTs + label: rcvEntry.label, + copayerId: rcvEntry.copayerId, + createdTs: rcvEntry.createdTs }; - var isVerified = this.verifySignedJson(senderId, payload, signature); - if (!isVerified) { - // remove wrong signed entry - delete this.addressBook[key]; - this.store(); - } - return isVerified; + return this.verifySignedJson(senderId, payload, signature); } Wallet.prototype.toggleAddressBookEntry = function(key) { diff --git a/test/test.Wallet.js b/test/test.Wallet.js index fdd7355b7..42991ed57 100644 --- a/test/test.Wallet.js +++ b/test/test.Wallet.js @@ -891,11 +891,11 @@ describe('Wallet model', function() { signature: "3046022100d4cdefef66ab8cea26031d5df03a38fc9ec9b09b0fb31d3a26b6e204918e9e78022100ecdbbd889ec99ea1bfd471253487af07a7fa7c0ac6012ca56e10e66f335e4586" }; - w.verifyAddressbookSignature(pubKey, key).should.equal(true); + w.verifyAddressbookEntry(w.addressBook[key], pubKey, key).should.equal(true); w.addressBook[key].label = 'Another'; - w.verifyAddressbookSignature(pubKey, key).should.equal(false); + w.verifyAddressbookEntry(w.addressBook[key], pubKey, key).should.equal(false); (function() { - w.verifyAddressbookSignature(); + w.verifyAddressbookEntry(); }).should.throw(); });