Browse Source

Add stricter Signer interface check

psbt-tx-getters
junderw 6 years ago
parent
commit
053d282e9d
No known key found for this signature in database GPG Key ID: B256185D3A971908
  1. 2
      src/transaction_builder.js
  2. 8
      src/types.js
  3. 2
      ts_src/transaction_builder.ts
  4. 8
      ts_src/types.ts
  5. 1
      types/types.d.ts

2
src/transaction_builder.js

@ -166,7 +166,7 @@ class TransactionBuilder {
`Unknown prevOutScriptType "${signParams.prevOutScriptType}"`, `Unknown prevOutScriptType "${signParams.prevOutScriptType}"`,
); );
} }
typeforce(typeforce.tuple(typeforce.Number, typeforce.Object), [ typeforce(typeforce.tuple(typeforce.Number, types.Signer), [
signParams.vin, signParams.vin,
signParams.keyPair, signParams.keyPair,
]); ]);

8
src/types.js

@ -13,6 +13,14 @@ exports.BIP32Path = BIP32Path;
BIP32Path.toJSON = () => { BIP32Path.toJSON = () => {
return 'BIP32 derivation path'; return 'BIP32 derivation path';
}; };
function Signer(obj) {
return (
(typeforce.Buffer(obj.publicKey) ||
typeof obj.getPublicKey === 'function') &&
typeof obj.sign === 'function'
);
}
exports.Signer = Signer;
const SATOSHI_MAX = 21 * 1e14; const SATOSHI_MAX = 21 * 1e14;
function Satoshi(value) { function Satoshi(value) {
return typeforce.UInt53(value) && value <= SATOSHI_MAX; return typeforce.UInt53(value) && value <= SATOSHI_MAX;

2
ts_src/transaction_builder.ts

@ -256,7 +256,7 @@ export class TransactionBuilder {
`Unknown prevOutScriptType "${signParams.prevOutScriptType}"`, `Unknown prevOutScriptType "${signParams.prevOutScriptType}"`,
); );
} }
typeforce(typeforce.tuple(typeforce.Number, typeforce.Object), [ typeforce(typeforce.tuple(typeforce.Number, types.Signer), [
signParams.vin, signParams.vin,
signParams.keyPair, signParams.keyPair,
]); ]);

8
ts_src/types.ts

@ -12,6 +12,14 @@ BIP32Path.toJSON = (): string => {
return 'BIP32 derivation path'; return 'BIP32 derivation path';
}; };
export function Signer(obj: any): boolean {
return (
(typeforce.Buffer(obj.publicKey) ||
typeof obj.getPublicKey === 'function') &&
typeof obj.sign === 'function'
);
}
const SATOSHI_MAX: number = 21 * 1e14; const SATOSHI_MAX: number = 21 * 1e14;
export function Satoshi(value: number): boolean { export function Satoshi(value: number): boolean {
return typeforce.UInt53(value) && value <= SATOSHI_MAX; return typeforce.UInt53(value) && value <= SATOSHI_MAX;

1
types/types.d.ts

@ -3,6 +3,7 @@ export declare function BIP32Path(value: string): boolean;
export declare namespace BIP32Path { export declare namespace BIP32Path {
var toJSON: () => string; var toJSON: () => string;
} }
export declare function Signer(obj: any): boolean;
export declare function Satoshi(value: number): boolean; export declare function Satoshi(value: number): boolean;
export declare const ECPoint: any; export declare const ECPoint: any;
export declare const Network: any; export declare const Network: any;

Loading…
Cancel
Save