mirror of https://github.com/BTCPrivate/copay.git
commit
f6e79526ff
|
@ -233,6 +233,7 @@ TxProposal.prototype._addSignatureAndVerify = function(signatures) {
|
|||
var ret = [];
|
||||
var tx = self.builder.build();
|
||||
|
||||
var inputsFullySigned = 0;
|
||||
var newScriptSigs = [];
|
||||
_.each(tx.ins, function(input, index) {
|
||||
var scriptSig = new Script(input.s);
|
||||
|
@ -268,14 +269,16 @@ TxProposal.prototype._addSignatureAndVerify = function(signatures) {
|
|||
});
|
||||
|
||||
var insertAt = 0;
|
||||
while ( !_.isUndefined(currentPrios[insertAt]) && prio > currentPrios[insertAt] )
|
||||
while (!_.isUndefined(currentPrios[insertAt]) && prio > currentPrios[insertAt])
|
||||
insertAt++;
|
||||
|
||||
// Insert it! (1 is OP_0!)
|
||||
scriptSig.chunks.splice(1 + insertAt, 0, sig);
|
||||
scriptSig.updateBuffer();
|
||||
|
||||
|
||||
if (info.nreq == currentKeys.length + 1) {
|
||||
inputsFullySigned++;
|
||||
}
|
||||
newScriptSigs.push(scriptSig.buffer);
|
||||
});
|
||||
preconditions.checkState(newScriptSigs.length === tx.ins.length);
|
||||
|
@ -284,9 +287,11 @@ TxProposal.prototype._addSignatureAndVerify = function(signatures) {
|
|||
_.each(tx.ins, function(input, index) {
|
||||
input.s = newScriptSigs[index];
|
||||
|
||||
// TODO just to keep TransactionBuilder
|
||||
// just to keep TransactionBuilder updated
|
||||
if (tx.ins.length == inputsFullySigned)
|
||||
self.builder.inputsSigned++;
|
||||
});
|
||||
|
||||
this.resetCache();
|
||||
};
|
||||
|
||||
|
@ -312,9 +317,9 @@ TxProposal.prototype.addSignature = function(copayerId, signatures) {
|
|||
preconditions.checkArgument(signatures.length === tx.ins.length, 'Wrong number of signatures given');
|
||||
|
||||
this._addSignatureAndVerify(signatures);
|
||||
this._setSigned(copayerId);
|
||||
|
||||
return false;
|
||||
this._setSigned(copayerId);
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -508,11 +513,13 @@ TxProposal.infoFromRedeemScript = function(s) {
|
|||
if (!redeemScript)
|
||||
throw new Error('Bad scriptSig (no redeemscript)');
|
||||
|
||||
var nreq = nreq = redeemScript.chunks[0] - 80; //see OP_2-OP_16
|
||||
var pubkeys = redeemScript.capture();
|
||||
if (!pubkeys || !pubkeys.length)
|
||||
throw new Error('Bad scriptSig (no pubkeys)');
|
||||
|
||||
return {
|
||||
nreq: nreq,
|
||||
keys: pubkeys,
|
||||
script: redeemScript,
|
||||
};
|
||||
|
|
|
@ -499,7 +499,8 @@ Wallet.prototype._processIncomingNewTxProposal = function(txp, cb) {
|
|||
self._processTxProposalPayPro(txp, function(err) {
|
||||
if (err) return cb(err);
|
||||
|
||||
self._setTxProposalSeen(txp);
|
||||
// Disabled, not been shown on the UX now.
|
||||
//self._setTxProposalSeen(txp);
|
||||
|
||||
var tx = txp.builder.build();
|
||||
if (tx.isComplete() && !txp.getSent())
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.services').factory('configService', function($timeout, localstorageService, gettextCatalog) {
|
||||
angular.module('copayApp.services').factory('configService', function($timeout, localstorageService, gettextCatalog, defaults) {
|
||||
var root = {};
|
||||
|
||||
root.set = function(opts, cb) {
|
||||
|
@ -31,7 +31,7 @@ angular.module('copayApp.services').factory('configService', function($timeout,
|
|||
};
|
||||
|
||||
root.reset = function(cb) {
|
||||
config = copay.defaultConfig;
|
||||
config = defauls;
|
||||
localstorageService.removeItem('config', cb);
|
||||
};
|
||||
|
||||
|
|
|
@ -80,6 +80,7 @@ describe('TxProposal', function() {
|
|||
amountSatStr: '123',
|
||||
}]),
|
||||
};
|
||||
builder.inputsSigned =0;
|
||||
|
||||
return builder;
|
||||
};
|
||||
|
@ -338,6 +339,7 @@ describe('TxProposal', function() {
|
|||
sigs[0][1].should.equal(SIG1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#addSignature', function() {
|
||||
it('should add signatures maintaing pubkeys order', function() {
|
||||
var txp = dummyProposal({
|
||||
|
@ -353,8 +355,13 @@ describe('TxProposal', function() {
|
|||
keysSorted.should.deep.equal(keys);
|
||||
|
||||
});
|
||||
|
||||
|
||||
it('should add signatures to incomplete txs ', function() {
|
||||
var txp = dummyProposal({
|
||||
nsig:1
|
||||
});
|
||||
txp.addSignature('pepe', [SIG1]);
|
||||
txp.builder.inputsSigned.should.be.equal(0);
|
||||
});
|
||||
|
||||
it('should fail with invalid signatures', function() {
|
||||
var txp = dummyProposal({
|
||||
|
|
Loading…
Reference in New Issue