Fix signInputAsync when SignerAsync rejects

Co-authored-by: Zhang Zengbo <zengbo.zhang@gmail.com>
This commit is contained in:
junderw 2020-05-31 10:13:16 +09:00
commit 65d7603cf7
No known key found for this signature in database
GPG key ID: B256185D3A971908
3 changed files with 91 additions and 40 deletions
ts_src

View file

@ -580,31 +580,28 @@ export class Psbt {
keyPair: Signer | SignerAsync,
sighashTypes: number[] = [Transaction.SIGHASH_ALL],
): Promise<void> {
return new Promise(
(resolve, reject): void => {
if (!keyPair || !keyPair.publicKey)
return reject(new Error('Need Signer to sign input'));
const { hash, sighashType } = getHashAndSighashType(
this.data.inputs,
inputIndex,
keyPair.publicKey,
this.__CACHE,
sighashTypes,
);
return Promise.resolve().then(() => {
if (!keyPair || !keyPair.publicKey)
throw new Error('Need Signer to sign input');
const { hash, sighashType } = getHashAndSighashType(
this.data.inputs,
inputIndex,
keyPair.publicKey,
this.__CACHE,
sighashTypes,
);
Promise.resolve(keyPair.sign(hash)).then(signature => {
const partialSig = [
{
pubkey: keyPair.publicKey,
signature: bscript.signature.encode(signature, sighashType),
},
];
return Promise.resolve(keyPair.sign(hash)).then(signature => {
const partialSig = [
{
pubkey: keyPair.publicKey,
signature: bscript.signature.encode(signature, sighashType),
},
];
this.data.updateInput(inputIndex, { partialSig });
resolve();
});
},
);
this.data.updateInput(inputIndex, { partialSig });
});
});
}
toBuffer(): Buffer {