@bitgo-beta/utxo-lib 8.0.3-beta.2 → 8.0.3-beta.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -16
- package/dist/src/bitgo/Musig2.d.ts +5 -10
- package/dist/src/bitgo/Musig2.d.ts.map +1 -1
- package/dist/src/bitgo/Musig2.js +26 -51
- package/dist/src/bitgo/PsbtUtil.d.ts +59 -0
- package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -0
- package/dist/src/bitgo/PsbtUtil.js +94 -0
- package/dist/src/bitgo/UtxoPsbt.d.ts +21 -37
- package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoPsbt.js +146 -126
- package/dist/src/bitgo/index.d.ts +10 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +5 -2
- package/dist/src/bitgo/legacysafe/index.d.ts +15 -0
- package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -0
- package/dist/src/bitgo/legacysafe/index.js +61 -0
- package/dist/src/bitgo/outputScripts.d.ts +1 -0
- package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
- package/dist/src/bitgo/outputScripts.js +24 -9
- package/dist/src/bitgo/parseInput.js +2 -2
- package/dist/src/bitgo/signature.d.ts +2 -2
- package/dist/src/bitgo/signature.d.ts.map +1 -1
- package/dist/src/bitgo/signature.js +17 -2
- package/dist/src/bitgo/transaction.d.ts +18 -3
- package/dist/src/bitgo/transaction.d.ts.map +1 -1
- package/dist/src/bitgo/transaction.js +9 -7
- package/dist/src/bitgo/transactionAmounts.d.ts +9 -0
- package/dist/src/bitgo/transactionAmounts.d.ts.map +1 -0
- package/dist/src/bitgo/transactionAmounts.js +33 -0
- package/dist/src/bitgo/wallet/Psbt.d.ts +58 -10
- package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Psbt.js +191 -83
- package/dist/src/bitgo/wallet/Unspent.d.ts +43 -7
- package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Unspent.js +152 -62
- package/dist/src/bitgo/wallet/WalletOutput.d.ts +17 -1
- package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletOutput.js +64 -23
- package/dist/src/bitgo/wallet/chains.d.ts +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +0 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.js +6 -14
- package/dist/src/testutil/index.d.ts +1 -0
- package/dist/src/testutil/index.d.ts.map +1 -1
- package/dist/src/testutil/index.js +2 -1
- package/dist/src/testutil/keys.d.ts +3 -0
- package/dist/src/testutil/keys.d.ts.map +1 -1
- package/dist/src/testutil/keys.js +17 -2
- package/dist/src/testutil/mock.d.ts +1 -1
- package/dist/src/testutil/mock.d.ts.map +1 -1
- package/dist/src/testutil/mock.js +12 -4
- package/dist/src/testutil/psbt.d.ts +27 -6
- package/dist/src/testutil/psbt.d.ts.map +1 -1
- package/dist/src/testutil/psbt.js +30 -18
- package/dist/src/testutil/transaction.d.ts +17 -6
- package/dist/src/testutil/transaction.d.ts.map +1 -1
- package/dist/src/testutil/transaction.js +17 -10
- package/package.json +8 -8
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withUnsafeNonSegwit = exports.isPsbt = exports.isPsbtInputFinalized = exports.getPsbtInputSignatureCount = exports.getPsbtInputProprietaryKeyVals = exports.ProprietaryKeySubtype = exports.PSBT_PROPRIETARY_IDENTIFIER = void 0;
|
|
4
|
+
const proprietaryKeyVal_1 = require("bip174/src/lib/proprietaryKeyVal");
|
|
5
|
+
/**
|
|
6
|
+
* bitgo proprietary key identifier
|
|
7
|
+
*/
|
|
8
|
+
exports.PSBT_PROPRIETARY_IDENTIFIER = 'BITGO';
|
|
9
|
+
/**
|
|
10
|
+
* subtype for proprietary keys that bitgo uses
|
|
11
|
+
*/
|
|
12
|
+
var ProprietaryKeySubtype;
|
|
13
|
+
(function (ProprietaryKeySubtype) {
|
|
14
|
+
ProprietaryKeySubtype[ProprietaryKeySubtype["ZEC_CONSENSUS_BRANCH_ID"] = 0] = "ZEC_CONSENSUS_BRANCH_ID";
|
|
15
|
+
ProprietaryKeySubtype[ProprietaryKeySubtype["MUSIG2_PARTICIPANT_PUB_KEYS"] = 1] = "MUSIG2_PARTICIPANT_PUB_KEYS";
|
|
16
|
+
ProprietaryKeySubtype[ProprietaryKeySubtype["MUSIG2_PUB_NONCE"] = 2] = "MUSIG2_PUB_NONCE";
|
|
17
|
+
ProprietaryKeySubtype[ProprietaryKeySubtype["MUSIG2_PARTIAL_SIG"] = 3] = "MUSIG2_PARTIAL_SIG";
|
|
18
|
+
})(ProprietaryKeySubtype = exports.ProprietaryKeySubtype || (exports.ProprietaryKeySubtype = {}));
|
|
19
|
+
/**
|
|
20
|
+
* Search any data from psbt proprietary key value against keydata.
|
|
21
|
+
* Default identifierEncoding is utf-8 for identifier.
|
|
22
|
+
*/
|
|
23
|
+
function getPsbtInputProprietaryKeyVals(input, keySearch) {
|
|
24
|
+
var _a;
|
|
25
|
+
if (!((_a = input.unknownKeyVals) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
if (keySearch && keySearch.subtype === undefined && Buffer.isBuffer(keySearch.keydata)) {
|
|
29
|
+
throw new Error('invalid proprietary key search filter combination. subtype is required');
|
|
30
|
+
}
|
|
31
|
+
const keyVals = input.unknownKeyVals.map(({ key, value }, i) => {
|
|
32
|
+
return { key: proprietaryKeyVal_1.decodeProprietaryKey(key), value };
|
|
33
|
+
});
|
|
34
|
+
return keyVals.filter((keyVal) => {
|
|
35
|
+
return (keySearch === undefined ||
|
|
36
|
+
(keySearch.identifier === keyVal.key.identifier &&
|
|
37
|
+
(keySearch.subtype === undefined ||
|
|
38
|
+
(keySearch.subtype === keyVal.key.subtype &&
|
|
39
|
+
(!Buffer.isBuffer(keySearch.keydata) || keySearch.keydata.equals(keyVal.key.keydata))))));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
exports.getPsbtInputProprietaryKeyVals = getPsbtInputProprietaryKeyVals;
|
|
43
|
+
/**
|
|
44
|
+
* @return partialSig/tapScriptSig/MUSIG2_PARTIAL_SIG count iff input is not finalized
|
|
45
|
+
*/
|
|
46
|
+
function getPsbtInputSignatureCount(input) {
|
|
47
|
+
if (isPsbtInputFinalized(input)) {
|
|
48
|
+
throw new Error('Input is already finalized');
|
|
49
|
+
}
|
|
50
|
+
return Math.max(Array.isArray(input.partialSig) ? input.partialSig.length : 0, Array.isArray(input.tapScriptSig) ? input.tapScriptSig.length : 0, getPsbtInputProprietaryKeyVals(input, {
|
|
51
|
+
identifier: exports.PSBT_PROPRIETARY_IDENTIFIER,
|
|
52
|
+
subtype: ProprietaryKeySubtype.MUSIG2_PARTIAL_SIG,
|
|
53
|
+
}).length);
|
|
54
|
+
}
|
|
55
|
+
exports.getPsbtInputSignatureCount = getPsbtInputSignatureCount;
|
|
56
|
+
/**
|
|
57
|
+
* @return true iff PSBT input is finalized
|
|
58
|
+
*/
|
|
59
|
+
function isPsbtInputFinalized(input) {
|
|
60
|
+
return Buffer.isBuffer(input.finalScriptSig) || Buffer.isBuffer(input.finalScriptWitness);
|
|
61
|
+
}
|
|
62
|
+
exports.isPsbtInputFinalized = isPsbtInputFinalized;
|
|
63
|
+
/**
|
|
64
|
+
* @return true iff data starts with magic PSBT byte sequence
|
|
65
|
+
* @param data byte array or hex string
|
|
66
|
+
* */
|
|
67
|
+
function isPsbt(data) {
|
|
68
|
+
// https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#specification
|
|
69
|
+
// 0x70736274 - ASCII for 'psbt'. 0xff - separator
|
|
70
|
+
if (typeof data === 'string') {
|
|
71
|
+
if (data.length < 10) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
data = Buffer.from(data.slice(0, 10), 'hex');
|
|
75
|
+
}
|
|
76
|
+
return 5 <= data.length && data.readUInt32BE(0) === 0x70736274 && data.readUInt8(4) === 0xff;
|
|
77
|
+
}
|
|
78
|
+
exports.isPsbt = isPsbt;
|
|
79
|
+
/**
|
|
80
|
+
* This function allows signing or validating a psbt with non-segwit inputs those do not contain nonWitnessUtxo.
|
|
81
|
+
*/
|
|
82
|
+
function withUnsafeNonSegwit(psbt, fn, unsafe = true) {
|
|
83
|
+
psbt.__CACHE.__UNSAFE_SIGN_NONSEGWIT = unsafe;
|
|
84
|
+
psbt.__CACHE.__WARN_UNSAFE_SIGN_NONSEGWIT = !unsafe;
|
|
85
|
+
try {
|
|
86
|
+
return fn();
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
psbt.__CACHE.__UNSAFE_SIGN_NONSEGWIT = false;
|
|
90
|
+
psbt.__CACHE.__WARN_UNSAFE_SIGN_NONSEGWIT = true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.withUnsafeNonSegwit = withUnsafeNonSegwit;
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHNidFV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vUHNidFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBQXdGO0FBSXhGOztHQUVHO0FBQ1UsUUFBQSwyQkFBMkIsR0FBRyxPQUFPLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDL0IsdUdBQThCLENBQUE7SUFDOUIsK0dBQWtDLENBQUE7SUFDbEMseUZBQXVCLENBQUE7SUFDdkIsNkZBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUxXLHFCQUFxQixHQUFyQiw2QkFBcUIsS0FBckIsNkJBQXFCLFFBS2hDO0FBdUJEOzs7R0FHRztBQUNILFNBQWdCLDhCQUE4QixDQUM1QyxLQUFnQixFQUNoQixTQUFnQzs7SUFFaEMsSUFBSSxDQUFDLENBQUEsTUFBQSxLQUFLLENBQUMsY0FBYywwQ0FBRSxNQUFNLENBQUEsRUFBRTtRQUNqQyxPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdEYsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO0tBQzNGO0lBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM3RCxPQUFPLEVBQUUsR0FBRyxFQUFFLHdDQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDL0IsT0FBTyxDQUNMLFNBQVMsS0FB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cG9ydCB7IGRlY29kZVByb3ByaWV0YXJ5S2V5LCBQcm9wcmlldGFyeUtleSB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL3Byb3ByaWV0YXJ5S2V5VmFsJztcbmltcG9ydCB7IFBzYnRJbnB1dCB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUHNidCB9IGZyb20gJ2JpdGNvaW5qcy1saWIvc3JjL3BzYnQnO1xuXG4vKipcbiAqIGJpdGdvIHByb3ByaWV0YXJ5IGtleSBpZGVudGlmaWVyXG4gKi9cbmV4cG9ydCBjb25zdCBQU0JUX1BST1BSSUVUQVJZX0lERU5USUZJRVIgPSAnQklUR08nO1xuXG4vKipcbiAqIHN1YnR5cGUgZm9yIHByb3ByaWV0YXJ5IGtleXMgdGhhdCBiaXRnbyB1c2VzXG4gKi9cbmV4cG9ydCBlbnVtIFByb3ByaWV0YXJ5S2V5U3VidHlwZSB7XG4gIFpFQ19DT05TRU5TVVNfQlJBTkNIX0lEID0gMHgwMCxcbiAgTVVTSUcyX1BBUlRJQ0lQQU5UX1BVQl9LRVlTID0gMHgwMSxcbiAgTVVTSUcyX1BVQl9OT05DRSA9IDB4MDIsXG4gIE1VU0lHMl9QQVJUSUFMX1NJRyA9IDB4MDMsXG59XG5cbi8qKlxuICogUHNidCBwcm9wcmlldGFyeSBrZXlkYXRhIG9iamVjdC5cbiAqIDxjb21wYWN0IHNpemUgdWludCBpZGVudGlmaWVyIGxlbmd0aD4gPGJ5dGVzIGlkZW50aWZpZXI+IDxjb21wYWN0IHNpemUgdWludCBzdWJ0eXBlPiA8Ynl0ZXMgc3Via2V5ZGF0YT5cbiAqID0+IDxieXRlcyB2YWx1ZWRhdGE+XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHJpZXRhcnlLZXlWYWx1ZSB7XG4gIGtleTogUHJvcHJpZXRhcnlLZXk7XG4gIHZhbHVlOiBCdWZmZXI7XG59XG5cbi8qKlxuICogUHNidCBwcm9wcmlldGFyeSBrZXlkYXRhIG9iamVjdCBzZWFyY2ggZmllbGRzLlxuICogPGNvbXBhY3Qgc2l6ZSB1aW50IGlkZW50aWZpZXIgbGVuZ3RoPiA8Ynl0ZXMgaWRlbnRpZmllcj4gPGNvbXBhY3Qgc2l6ZSB1aW50IHN1YnR5cGU+IDxieXRlcyBzdWJrZXlkYXRhPlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3ByaWV0YXJ5S2V5U2VhcmNoIHtcbiAgaWRlbnRpZmllcjogc3RyaW5nO1xuICBzdWJ0eXBlPzogbnVtYmVyO1xuICBrZXlkYXRhPzogQnVmZmVyO1xuICBpZGVudGlmaWVyRW5jb2Rpbmc/OiBCdWZmZXJFbmNvZGluZztcbn1cblxuLyoqXG4gKiBTZWFyY2ggYW55IGRhdGEgZnJvbSBwc2J0IHByb3ByaWV0YXJ5IGtleSB2YWx1ZSBhZ2FpbnN0IGtleWRhdGEuXG4gKiBEZWZhdWx0IGlkZW50aWZpZXJFbmNvZGluZyBpcyB1dGYtOCBmb3IgaWRlbnRpZmllci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBzYnRJbnB1dFByb3ByaWV0YXJ5S2V5VmFscyhcbiAgaW5wdXQ6IFBzYnRJbnB1dCxcbiAga2V5U2VhcmNoPzogUHJvcHJpZXRhcnlLZXlTZWFyY2hcbik6IFByb3ByaWV0YXJ5S2V5VmFsdWVbXSB7XG4gIGlmICghaW5wdXQudW5rbm93bktleVZhbHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoa2V5U2VhcmNoICYmIGtleVNlYXJjaC5zdWJ0eXBlID09PSB1bmRlZmluZWQgJiYgQnVmZmVyLmlzQnVmZmVyKGtleVNlYXJjaC5rZXlkYXRhKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwcm9wcmlldGFyeSBrZXkgc2VhcmNoIGZpbHRlciBjb21iaW5hdGlvbi4gc3VidHlwZSBpcyByZXF1aXJlZCcpO1xuICB9XG4gIGNvbnN0IGtleVZhbHMgPSBpbnB1dC51bmtub3duS2V5VmFscy5tYXAoKHsga2V5LCB2YWx1ZSB9LCBpKSA9PiB7XG4gICAgcmV0dXJuIHsga2V5OiBkZWNvZGVQcm9wcmlldGFyeUtleShrZXkpLCB2YWx1ZSB9O1xuICB9KTtcbiAgcmV0dXJuIGtleVZhbHMuZmlsdGVyKChrZXlWYWwpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAga2V5U2VhcmNoID09PSB1bmRlZmluZWQgfHxcbiAgICAgIChrZXlTZWFyY2guaWRlbnRpZmllciA9PT0ga2V5VmFsLmtleS5pZGVudGlmaWVyICYmXG4gICAgICAgIChrZXlTZWFyY2guc3VidHlwZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgKGtleVNlYXJjaC5zdWJ0eXBlID09PSBrZXlWYWwua2V5LnN1YnR5cGUgJiZcbiAgICAgICAgICAgICghQnVmZmVyLmlzQnVmZmVyKGtleVNlYXJjaC5rZXlkYXRhKSB8fCBrZXlTZWFyY2gua2V5ZGF0YS5lcXVhbHMoa2V5VmFsLmtleS5rZXlkYXRhKSkpKSlcbiAgICApO1xuICB9KTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHBhcnRpYWxTaWcvdGFwU2NyaXB0U2lnL01VU0lHMl9QQVJUSUFMX1NJRyBjb3VudCBpZmYgaW5wdXQgaXMgbm90IGZpbmFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHNidElucHV0U2lnbmF0dXJlQ291bnQoaW5wdXQ6IFBzYnRJbnB1dCk6IG51bWJlciB7XG4gIGlmIChpc1BzYnRJbnB1dEZpbmFsaXplZChpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGlzIGFscmVhZHkgZmluYWxpemVkJyk7XG4gIH1cbiAgcmV0dXJuIE1hdGgubWF4KFxuICAgIEFycmF5LmlzQXJyYXkoaW5wdXQucGFydGlhbFNpZykgPyBpbnB1dC5wYXJ0aWFsU2lnLmxlbmd0aCA6IDAsXG4gICAgQXJyYXkuaXNBcnJheShpbnB1dC50YXBTY3JpcHRTaWcpID8gaW5wdXQudGFwU2NyaXB0U2lnLmxlbmd0aCA6IDAsXG4gICAgZ2V0UHNidElucHV0UHJvcHJpZXRhcnlLZXlWYWxzKGlucHV0LCB7XG4gICAgICBpZGVudGlmaWVyOiBQU0JUX1BST1BSSUVUQVJZX0lERU5USUZJRVIsXG4gICAgICBzdWJ0eXBlOiBQcm9wcmlldGFyeUtleVN1YnR5cGUuTVVTSUcyX1BBUlRJQUxfU0lHLFxuICAgIH0pLmxlbmd0aFxuICApO1xufVxuXG4vKipcbiAqIEByZXR1cm4gdHJ1ZSBpZmYgUFNCVCBpbnB1dCBpcyBmaW5hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHNidElucHV0RmluYWxpemVkKGlucHV0OiBQc2J0SW5wdXQpOiBib29sZWFuIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihpbnB1dC5maW5hbFNjcmlwdFNpZykgfHwgQnVmZmVyLmlzQnVmZmVyKGlucHV0LmZpbmFsU2NyaXB0V2l0bmVzcyk7XG59XG5cbi8qKlxuICogQHJldHVybiB0cnVlIGlmZiBkYXRhIHN0YXJ0cyB3aXRoIG1hZ2ljIFBTQlQgYnl0ZSBzZXF1ZW5jZVxuICogQHBhcmFtIGRhdGEgYnl0ZSBhcnJheSBvciBoZXggc3RyaW5nXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHNidChkYXRhOiBCdWZmZXIgfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDE3NC5tZWRpYXdpa2kjc3BlY2lmaWNhdGlvblxuICAvLyAweDcwNzM2Mjc0IC0gQVNDSUkgZm9yICdwc2J0Jy4gMHhmZiAtIHNlcGFyYXRvclxuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKGRhdGEubGVuZ3RoIDwgMTApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEuc2xpY2UoMCwgMTApLCAnaGV4Jyk7XG4gIH1cbiAgcmV0dXJuIDUgPD0gZGF0YS5sZW5ndGggJiYgZGF0YS5yZWFkVUludDMyQkUoMCkgPT09IDB4NzA3MzYyNzQgJiYgZGF0YS5yZWFkVUludDgoNCkgPT09IDB4ZmY7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3Mgc2lnbmluZyBvciB2YWxpZGF0aW5nIGEgcHNidCB3aXRoIG5vbi1zZWd3aXQgaW5wdXRzIHRob3NlIGRvIG5vdCBjb250YWluIG5vbldpdG5lc3NVdHhvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFVuc2FmZU5vblNlZ3dpdDxUPihwc2J0OiBQc2J0LCBmbjogKCkgPT4gVCwgdW5zYWZlID0gdHJ1ZSk6IFQge1xuICAocHNidCBhcyBhbnkpLl9fQ0FDSEUuX19VTlNBRkVfU0lHTl9OT05TRUdXSVQgPSB1bnNhZmU7XG4gIChwc2J0IGFzIGFueSkuX19DQUNIRS5fX1dBUk5fVU5TQUZFX1NJR05fTk9OU0VHV0lUID0gIXVuc2FmZTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAocHNidCBhcyBhbnkpLl9fQ0FDSEUuX19VTlNBRkVfU0lHTl9OT05TRUdXSVQgPSBmYWxzZTtcbiAgICAocHNidCBhcyBhbnkpLl9fQ0FDSEUuX19XQVJOX1VOU0FGRV9TSUdOX05PTlNFR1dJVCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Psbt as PsbtBase } from 'bip174';
|
|
3
|
-
import { Bip32Derivation } from 'bip174/src/lib/interfaces';
|
|
3
|
+
import { Bip32Derivation, PsbtInput } from 'bip174/src/lib/interfaces';
|
|
4
4
|
import { BIP32Interface } from 'bip32';
|
|
5
|
-
import { ProprietaryKey } from 'bip174/src/lib/proprietaryKeyVal';
|
|
6
5
|
import { HDSigner, Psbt, TxOutput, Network } from '..';
|
|
7
6
|
import { UtxoTransaction } from './UtxoTransaction';
|
|
8
7
|
import { Triple } from './types';
|
|
9
|
-
|
|
10
|
-
export declare enum ProprietaryKeySubtype {
|
|
11
|
-
ZEC_CONSENSUS_BRANCH_ID = 0,
|
|
12
|
-
MUSIG2_PARTICIPANT_PUB_KEYS = 1,
|
|
13
|
-
MUSIG2_PUB_NONCE = 2,
|
|
14
|
-
MUSIG2_PARTIAL_SIG = 3
|
|
15
|
-
}
|
|
8
|
+
import { ProprietaryKeySearch, ProprietaryKeyValue } from './PsbtUtil';
|
|
16
9
|
declare type SignatureParams = {
|
|
17
10
|
/** When true, and add the second (last) nonce and signature for a taproot key
|
|
18
11
|
* path spend deterministically. Throws an error if done for the first nonce/signature
|
|
@@ -65,25 +58,6 @@ export interface PsbtOpts {
|
|
|
65
58
|
maximumFeeRate?: number;
|
|
66
59
|
bip32PathsAbsolute?: boolean;
|
|
67
60
|
}
|
|
68
|
-
/**
|
|
69
|
-
* Psbt proprietary keydata object.
|
|
70
|
-
* <compact size uint identifier length> <bytes identifier> <compact size uint subtype> <bytes subkeydata>
|
|
71
|
-
* => <bytes valuedata>
|
|
72
|
-
*/
|
|
73
|
-
export interface ProprietaryKeyValue {
|
|
74
|
-
key: ProprietaryKey;
|
|
75
|
-
value: Buffer;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Psbt proprietary keydata object search fields.
|
|
79
|
-
* <compact size uint identifier length> <bytes identifier> <compact size uint subtype> <bytes subkeydata>
|
|
80
|
-
*/
|
|
81
|
-
export interface ProprietaryKeySearch {
|
|
82
|
-
identifier: string;
|
|
83
|
-
subtype?: number;
|
|
84
|
-
keydata?: Buffer;
|
|
85
|
-
identifierEncoding?: BufferEncoding;
|
|
86
|
-
}
|
|
87
61
|
export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransaction<bigint>> extends Psbt {
|
|
88
62
|
private nonceStore;
|
|
89
63
|
protected static transactionFromBuffer(buffer: Buffer, network: Network): UtxoTransaction<bigint>;
|
|
@@ -93,20 +67,24 @@ export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransacti
|
|
|
93
67
|
/**
|
|
94
68
|
* @param parent - Parent key. Matched with `bip32Derivations` using `fingerprint` property.
|
|
95
69
|
* @param bip32Derivations - possible derivations for input or output
|
|
70
|
+
* @param ignoreY - when true, ignore the y coordinate when matching public keys
|
|
96
71
|
* @return derived bip32 node if matching derivation is found, undefined if none is found
|
|
97
72
|
* @throws Error if more than one match is found
|
|
98
73
|
*/
|
|
99
|
-
static deriveKeyPair(parent: BIP32Interface, bip32Derivations: Bip32Derivation[]
|
|
74
|
+
static deriveKeyPair(parent: BIP32Interface, bip32Derivations: Bip32Derivation[], { ignoreY }: {
|
|
75
|
+
ignoreY: boolean;
|
|
76
|
+
}): BIP32Interface | undefined;
|
|
77
|
+
static deriveKeyPairForInput(bip32: BIP32Interface, input: PsbtInput): Buffer | undefined;
|
|
100
78
|
get network(): Network;
|
|
101
79
|
toHex(): string;
|
|
102
80
|
/**
|
|
103
|
-
*
|
|
81
|
+
* It is expensive to attempt to compute every output address using psbt.txOutputs[outputIndex]
|
|
82
|
+
* to then just get the script. Here, we are doing the same thing as what txOutputs() does in
|
|
83
|
+
* bitcoinjs-lib, but without iterating over each output.
|
|
84
|
+
* @param outputIndex
|
|
85
|
+
* @returns output script at the given index
|
|
104
86
|
*/
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* @return partialSig/tapScriptSig count iff input is not finalized
|
|
108
|
-
*/
|
|
109
|
-
getSignatureCount(inputIndex: number): number;
|
|
87
|
+
getOutputScript(outputIndex: number): Buffer;
|
|
110
88
|
getNonWitnessPreviousTxids(): string[];
|
|
111
89
|
addNonWitnessUtxos(txBufs: Record<string, Buffer>): this;
|
|
112
90
|
static fromTransaction(transaction: UtxoTransaction<bigint>, prevOutputs: TxOutput<bigint>[]): UtxoPsbt;
|
|
@@ -128,6 +106,7 @@ export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransacti
|
|
|
128
106
|
* @returns true if the input at inputIndex is a taproot
|
|
129
107
|
*/
|
|
130
108
|
isTaprootInput(inputIndex: number): boolean;
|
|
109
|
+
private isMultisigTaprootScript;
|
|
131
110
|
/**
|
|
132
111
|
* Mostly copied from bitcoinjs-lib/ts_src/psbt.ts
|
|
133
112
|
*/
|
|
@@ -158,7 +137,7 @@ export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransacti
|
|
|
158
137
|
private getMusig2SessionKey;
|
|
159
138
|
/**
|
|
160
139
|
* @returns true for following cases.
|
|
161
|
-
* If valid musig2 partial signatures exists for both 2 keys, it will also
|
|
140
|
+
* If valid musig2 partial signatures exists for both 2 keys, it will also verify aggregated sig
|
|
162
141
|
* for aggregated tweaked key (output key), otherwise only verifies partial sig.
|
|
163
142
|
* If pubkey is passed in input, it will check sig only for that pubkey,
|
|
164
143
|
* if no sig exits for such key, throws error.
|
|
@@ -167,10 +146,14 @@ export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransacti
|
|
|
167
146
|
validateTaprootMusig2SignaturesOfInput(inputIndex: number, pubkey?: Buffer): boolean;
|
|
168
147
|
validateTaprootSignaturesOfInput(inputIndex: number, pubkey?: Buffer): boolean;
|
|
169
148
|
/**
|
|
149
|
+
* @param inputIndex
|
|
150
|
+
* @param rootNodes optional input root bip32 nodes to verify with. If it is not provided, globalXpub will be used.
|
|
170
151
|
* @return array of boolean values. True when corresponding index in `publicKeys` has signed the transaction.
|
|
171
152
|
* If no signature in the tx or no public key matching signature, the validation is considered as false.
|
|
172
153
|
*/
|
|
173
|
-
getSignatureValidationArray(inputIndex: number
|
|
154
|
+
getSignatureValidationArray(inputIndex: number, { rootNodes }?: {
|
|
155
|
+
rootNodes?: Triple<BIP32Interface>;
|
|
156
|
+
}): Triple<boolean>;
|
|
174
157
|
/**
|
|
175
158
|
* Mostly copied from bitcoinjs-lib/ts_src/psbt.ts
|
|
176
159
|
*/
|
|
@@ -276,6 +259,7 @@ export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransacti
|
|
|
276
259
|
deterministic?: boolean;
|
|
277
260
|
}): this;
|
|
278
261
|
clone(): this;
|
|
262
|
+
extractTransaction(disableFeeCheck?: boolean): UtxoTransaction<bigint>;
|
|
279
263
|
}
|
|
280
264
|
export {};
|
|
281
265
|
//# sourceMappingURL=UtxoPsbt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UtxoPsbt.d.ts","sourceRoot":"","sources":["../../../src/bitgo/UtxoPsbt.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"UtxoPsbt.d.ts","sourceRoot":"","sources":["../../../src/bitgo/UtxoPsbt.ts"],"names":[],"mappings":"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"}
|