Add sanity check for arguments
This commit is contained in:
parent
41bf2cd03d
commit
7ef3fe4996
3 changed files with 46 additions and 1 deletions
22
src/psbt.js
22
src/psbt.js
|
@ -143,6 +143,17 @@ class Psbt {
|
|||
return this;
|
||||
}
|
||||
addInput(inputData) {
|
||||
if (
|
||||
arguments.length > 1 ||
|
||||
!inputData ||
|
||||
inputData.hash === undefined ||
|
||||
inputData.index === undefined
|
||||
) {
|
||||
throw new Error(
|
||||
`Invalid arguments for Psbt.addInput. ` +
|
||||
`Requires single object with at least [hash] and [index]`,
|
||||
);
|
||||
}
|
||||
checkInputsForPartialSig(this.data.inputs, 'addInput');
|
||||
const c = this.__CACHE;
|
||||
this.data.addInput(inputData);
|
||||
|
@ -163,6 +174,17 @@ class Psbt {
|
|||
return this;
|
||||
}
|
||||
addOutput(outputData) {
|
||||
if (
|
||||
arguments.length > 1 ||
|
||||
!outputData ||
|
||||
outputData.value === undefined ||
|
||||
(outputData.address === undefined && outputData.script === undefined)
|
||||
) {
|
||||
throw new Error(
|
||||
`Invalid arguments for Psbt.addOutput. ` +
|
||||
`Requires single object with at least [script or address] and [value]`,
|
||||
);
|
||||
}
|
||||
checkInputsForPartialSig(this.data.inputs, 'addOutput');
|
||||
const { address } = outputData;
|
||||
if (typeof address === 'string') {
|
||||
|
|
2
test/fixtures/psbt.json
vendored
2
test/fixtures/psbt.json
vendored
|
@ -311,7 +311,7 @@
|
|||
"inputData": {
|
||||
"hash": 42
|
||||
},
|
||||
"exception": "Error adding input."
|
||||
"exception": "Invalid arguments for Psbt\\.addInput\\. Requires single object with at least \\[hash\\] and \\[index\\]"
|
||||
},
|
||||
{
|
||||
"description": "should be equal",
|
||||
|
|
|
@ -182,6 +182,17 @@ export class Psbt {
|
|||
}
|
||||
|
||||
addInput(inputData: PsbtInputExtended): this {
|
||||
if (
|
||||
arguments.length > 1 ||
|
||||
!inputData ||
|
||||
inputData.hash === undefined ||
|
||||
inputData.index === undefined
|
||||
) {
|
||||
throw new Error(
|
||||
`Invalid arguments for Psbt.addInput. ` +
|
||||
`Requires single object with at least [hash] and [index]`,
|
||||
);
|
||||
}
|
||||
checkInputsForPartialSig(this.data.inputs, 'addInput');
|
||||
const c = this.__CACHE;
|
||||
this.data.addInput(inputData);
|
||||
|
@ -205,6 +216,18 @@ export class Psbt {
|
|||
}
|
||||
|
||||
addOutput(outputData: PsbtOutputExtended): this {
|
||||
if (
|
||||
arguments.length > 1 ||
|
||||
!outputData ||
|
||||
outputData.value === undefined ||
|
||||
((outputData as any).address === undefined &&
|
||||
(outputData as any).script === undefined)
|
||||
) {
|
||||
throw new Error(
|
||||
`Invalid arguments for Psbt.addOutput. ` +
|
||||
`Requires single object with at least [script or address] and [value]`,
|
||||
);
|
||||
}
|
||||
checkInputsForPartialSig(this.data.inputs, 'addOutput');
|
||||
const { address } = outputData as any;
|
||||
if (typeof address === 'string') {
|
||||
|
|
Loading…
Reference in a new issue