Browse Source

TxBuilder: defer mutation further, but still catch non-standards

hk-custom-address
Daniel Cousens 10 years ago
parent
commit
4ef2c19d71
  1. 17
      src/transaction_builder.js

17
src/transaction_builder.js

@ -273,10 +273,11 @@ TransactionBuilder.prototype.sign = function(index, privKey, redeemScript, hashT
assert.equal(input.hashType, hashType, 'Inconsistent hashType')
}
var initialized = input.prevOutScript &&
var initialized = input.hashType &&
input.prevOutScript &&
input.prevOutType &&
input.hashType &&
input.pubKeys &&
input.scriptType &&
input.signatures
// are we already initialized?
@ -331,12 +332,17 @@ TransactionBuilder.prototype.sign = function(index, privKey, redeemScript, hashT
} else {
assert.notEqual(input.prevOutType, 'scripthash', 'PrevOutScript is P2SH, missing redeemScript')
// if nothing known, assume pubKeyHash
if (!input.scriptType) {
// can we sign this?
if (input.scriptType) {
assert(input.pubKeys, input.scriptType + ' not supported')
// we know nothin' Jon Snow, assume pubKeyHash
} else {
input.prevOutScript = privKey.pub.getAddress().toOutputScript()
input.prevOutType = 'pubkeyhash'
input.pubKeys = [privKey.pub]
input.scriptType = input.prevOutType
}
}
@ -344,9 +350,6 @@ TransactionBuilder.prototype.sign = function(index, privKey, redeemScript, hashT
input.signatures = input.signatures || []
}
// do we know how to sign this?
assert(input.scriptType in canSignTypes, input.scriptType + ' not supported')
// enforce in order signing of public keys
assert(input.pubKeys.some(function(pubKey, i) {
if (!privKey.pub.Q.equals(pubKey.Q)) return false

Loading…
Cancel
Save