Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
txTmp.network = bitcoin.networks.testnet;
}
for (var i = 0; i < outputs.length; i++) {
txTmp.addOutput(outputs[i].address, outputs[i].amountSats.toNumber());
}
for (var j = 0; j < inputs.length; j++) {
txTmp.addInput(inputs[j].txid, inputs[j].index)
}
let txToSign = txTmp.buildIncomplete();
const txHex = txToSign.toHex()
const addressType = multisigAddressType(inputs[0].multisig); // TODO: multiple inputs?
const segwit = addressType == MULTISIG_ADDRESS_TYPES.P2SH_P2WSH || addressType == MULTISIG_ADDRESS_TYPES.P2WSH
let splitTx = await ledgerbtc.splitTransaction(txHex, segwit);
let outputScriptHex = await ledgerbtc.serializeTransactionOutputs(splitTx).toString('hex');
const ledgerIns = inputs.map(input => ledgerInput(ledgerbtc, input));
// BIP32 PATH
let ledger_bip32_path = path.split("/").slice(1).join("/");
let ledgerKeySets = Array(inputs.length).fill(ledger_bip32_path); //array[bip32]
// SIGN
let signatures = await ledgerbtc.signP2SHTransaction(
ledgerIns,
ledgerKeySets,
function ledgerInput(ledgerbtc, input) {
const addressType = multisigAddressType(input.multisig);
const tx = ledgerbtc.splitTransaction(input.transactionHex, true)
if (addressType == MULTISIG_ADDRESS_TYPES.P2SH) {
return [tx, input.index, scriptToHex(multisigRedeemScript(input.multisig))];
} else {
return [tx, input.index, scriptToHex(multisigWitnessScript(input.multisig))];
}
}
function trezorInput(input, bip32Path) {
const requiredSigners = multisigRequiredSigners(input.multisig);
const addressType = multisigAddressType(input.multisig)
const spendType = addressScriptTypes[addressType]
return {
script_type: spendType,
multisig: {
m: requiredSigners,
pubkeys: multisigPublicKeys(input.multisig).map((publicKey) => trezorPublicKey(publicKey)),
signatures: Array(requiredSigners).fill(''),
},
prev_hash: input.txid,
prev_index: input.index,
address_n: bip32PathToSequence(bip32Path),
amount: input.amountSats.toString()
};
}
inputsAreSupported() {
if (this.inputs && this.inputs.length) {
for (let i=0; i < this.inputs.length; i++) {
const input = this.inputs[i];
const inputAddressType = multisigAddressType(input.multisig);
if (inputAddressType !== MULTISIG_ADDRESS_TYPES.P2SH) {
this.inputAddressType = inputAddressType
return false;
}
}
}
return true
}
{this.renderScript("Script", multisig)}
{redeemScript && this.renderScript("Redeem Script", redeemScript)}
{witnessScript && this.renderScript("Witness Script", witnessScript)}
);
}