From 9421f0854d91a9f8b9872826fe3b1e711ab6c0a3 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Fri, 13 Feb 2015 10:58:49 -0300 Subject: [PATCH] fix xPubKeySignature verification --- lib/clilib.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/clilib.js b/lib/clilib.js index fc0ae8c..59bc5d7 100644 --- a/lib/clilib.js +++ b/lib/clilib.js @@ -80,14 +80,17 @@ CliLib.prototype.createWallet = function(walletName, copayerName, m, n, network, var data = this._load(); if (data) return cb('Only one wallet is supported in this version'); + // Generate wallet key pair to verify copayers + var privKey = new Bitcore.PrivateKey(); + var pubKey = privKey.toPublicKey(); + data = { xPrivKey: _createXPrivKey(), m: m, + n: n, + walletPrivKey: privKey.toString(), }; - var privKey = new Bitcore.PrivateKey(); - var pubKey = privKey.toPublicKey(); - var args = { name: walletName, m: m, @@ -128,7 +131,6 @@ CliLib.prototype._joinWallet = function(data, secret, copayerName, cb) { var secretSplit = secret.split(':'); var walletId = secretSplit[0]; var privKey = Bitcore.PrivateKey.fromString(secretSplit[1]); - var pubKey = privKey.toPublicKey(); var xPubKey = new Bitcore.HDPublicKey(data.xPrivKey); var xPubKeySignature = SignUtils.sign(xPubKey.toString(), privKey); @@ -204,10 +206,11 @@ CliLib.prototype.status = function(cb) { } var wallet = body; - if (wallet.n > 1 && wallet.status === 'complete' && !data.verified) { + if (wallet.n > 0 && wallet.status === 'complete' && !data.verified) { + var pubKey = Bitcore.PrivateKey.fromString(data.walletPrivKey).toPublicKey().toString(); var fake = []; _.each(wallet.copayers, function(copayer) { - if (!SignUtils.verify(copayer.xPubKey, copayer.xPubKeySignature, data.pubKey)) { + if (!SignUtils.verify(copayer.xPubKey, copayer.xPubKeySignature, pubKey)) { fake.push(copayer); } });