diff --git a/src/psbt.js b/src/psbt.js index ec91bd9..b9ed061 100644 --- a/src/psbt.js +++ b/src/psbt.js @@ -175,20 +175,23 @@ class Psbt extends bip174_1.Psbt { return this.addPartialSigToInput(inputIndex, partialSig); } signInputAsync(inputIndex, keyPair) { - if (!keyPair || !keyPair.publicKey) - throw new Error('Need Signer to sign input'); - const { hash, sighashType } = getHashAndSighashType( - this.inputs, - inputIndex, - keyPair.publicKey, - this.globalMap.unsignedTx, - ); - return keyPair.sign(hash).then(signature => { - const partialSig = { - pubkey: keyPair.publicKey, - signature: bscript.signature.encode(signature, sighashType), - }; - this.addPartialSigToInput(inputIndex, partialSig); + return new Promise((resolve, reject) => { + if (!keyPair || !keyPair.publicKey) + return reject(new Error('Need Signer to sign input')); + const { hash, sighashType } = getHashAndSighashType( + this.inputs, + inputIndex, + keyPair.publicKey, + this.globalMap.unsignedTx, + ); + Promise.resolve(keyPair.sign(hash)).then(signature => { + const partialSig = { + pubkey: keyPair.publicKey, + signature: bscript.signature.encode(signature, sighashType), + }; + this.addPartialSigToInput(inputIndex, partialSig); + resolve(); + }); }); } } diff --git a/ts_src/psbt.ts b/ts_src/psbt.ts index 46e9487..2c36130 100644 --- a/ts_src/psbt.ts +++ b/ts_src/psbt.ts @@ -214,23 +214,28 @@ export class Psbt extends PsbtBase { } signInputAsync(inputIndex: number, keyPair: SignerAsync): Promise { - if (!keyPair || !keyPair.publicKey) - throw new Error('Need Signer to sign input'); - const { hash, sighashType } = getHashAndSighashType( - this.inputs, - inputIndex, - keyPair.publicKey, - this.globalMap.unsignedTx!, - ); + return new Promise( + (resolve, reject): void => { + if (!keyPair || !keyPair.publicKey) + return reject(new Error('Need Signer to sign input')); + const { hash, sighashType } = getHashAndSighashType( + this.inputs, + inputIndex, + keyPair.publicKey, + this.globalMap.unsignedTx!, + ); - return keyPair.sign(hash).then(signature => { - const partialSig = { - pubkey: keyPair.publicKey, - signature: bscript.signature.encode(signature, sighashType), - }; + Promise.resolve(keyPair.sign(hash)).then(signature => { + const partialSig = { + pubkey: keyPair.publicKey, + signature: bscript.signature.encode(signature, sighashType), + }; - this.addPartialSigToInput(inputIndex, partialSig); - }); + this.addPartialSigToInput(inputIndex, partialSig); + resolve(); + }); + }, + ); } }