@bitgo-beta/utxo-core 1.0.1-alpha.95 → 1.0.1-alpha.97
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Psbt,
|
|
1
|
+
import { Psbt, bitgo } from '@bitgo-beta/utxo-lib';
|
|
2
2
|
export type AddressDetails = {
|
|
3
3
|
redeemScript?: Buffer;
|
|
4
4
|
witnessScript?: Buffer;
|
|
@@ -9,10 +9,11 @@ export type AddressDetails = {
|
|
|
9
9
|
* Source implementation:
|
|
10
10
|
* https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki#full
|
|
11
11
|
*
|
|
12
|
-
* @param {string}
|
|
12
|
+
* @param {string} message - The message that is hashed into the `to_spend` transaction.
|
|
13
13
|
* @param {AddressDetails} addressDetails - The details of the address, including redeemScript and/or witnessScript.
|
|
14
|
-
* @
|
|
14
|
+
* @param {string} [tag=BIP322_TAG] - The tag to use for hashing, defaults to BIP322_TAG.
|
|
15
|
+
* @returns {Psbt} - The hex representation of the constructed PSBT.
|
|
15
16
|
*/
|
|
16
|
-
export declare function buildToSignPsbt(
|
|
17
|
-
export declare function buildToSignPsbtForChainAndIndex(
|
|
17
|
+
export declare function buildToSignPsbt(message: string, addressDetails: AddressDetails, tag?: string): Psbt;
|
|
18
|
+
export declare function buildToSignPsbtForChainAndIndex(message: string, rootWalletKeys: bitgo.RootWalletKeys, chain: bitgo.ChainCode, index: number): Psbt;
|
|
18
19
|
//# sourceMappingURL=toSign.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toSign.d.ts","sourceRoot":"","sources":["../../../src/bip322/toSign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"toSign.d.ts","sourceRoot":"","sources":["../../../src/bip322/toSign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAKnD,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,SAAa,GAAG,IAAI,CAmCvG;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,KAAK,EAAE,KAAK,CAAC,SAAS,EACtB,KAAK,EAAE,MAAM,GACZ,IAAI,CAcN"}
|
|
@@ -4,16 +4,19 @@ exports.buildToSignPsbt = buildToSignPsbt;
|
|
|
4
4
|
exports.buildToSignPsbtForChainAndIndex = buildToSignPsbtForChainAndIndex;
|
|
5
5
|
const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
|
+
const toSpend_1 = require("./toSpend");
|
|
7
8
|
/**
|
|
8
9
|
* Construct the toSign PSBT for a BIP322 verification.
|
|
9
10
|
* Source implementation:
|
|
10
11
|
* https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki#full
|
|
11
12
|
*
|
|
12
|
-
* @param {string}
|
|
13
|
+
* @param {string} message - The message that is hashed into the `to_spend` transaction.
|
|
13
14
|
* @param {AddressDetails} addressDetails - The details of the address, including redeemScript and/or witnessScript.
|
|
14
|
-
* @
|
|
15
|
+
* @param {string} [tag=BIP322_TAG] - The tag to use for hashing, defaults to BIP322_TAG.
|
|
16
|
+
* @returns {Psbt} - The hex representation of the constructed PSBT.
|
|
15
17
|
*/
|
|
16
|
-
function buildToSignPsbt(
|
|
18
|
+
function buildToSignPsbt(message, addressDetails, tag = toSpend_1.BIP322_TAG) {
|
|
19
|
+
const toSpendTx = (0, toSpend_1.buildToSpendTransaction)(addressDetails.scriptPubKey, message, tag);
|
|
17
20
|
// Create PSBT object for constructing the transaction
|
|
18
21
|
const psbt = new utxo_lib_1.Psbt();
|
|
19
22
|
// Set default value for nVersion and nLockTime
|
|
@@ -35,6 +38,8 @@ function buildToSignPsbt(toSpendTx, addressDetails) {
|
|
|
35
38
|
if (addressDetails.witnessScript) {
|
|
36
39
|
psbt.updateInput(0, { witnessScript: addressDetails.witnessScript });
|
|
37
40
|
}
|
|
41
|
+
// Add the message as a proprietary key value to the PSBT so we can verify it later
|
|
42
|
+
(0, utils_1.addBip322ProofMessage)(psbt, 0, Buffer.from(message));
|
|
38
43
|
// Set the output
|
|
39
44
|
psbt.addOutput({
|
|
40
45
|
value: BigInt(0), // vout[0].nValue = 0
|
|
@@ -42,19 +47,15 @@ function buildToSignPsbt(toSpendTx, addressDetails) {
|
|
|
42
47
|
});
|
|
43
48
|
return psbt;
|
|
44
49
|
}
|
|
45
|
-
function buildToSignPsbtForChainAndIndex(
|
|
50
|
+
function buildToSignPsbtForChainAndIndex(message, rootWalletKeys, chain, index) {
|
|
46
51
|
if ((0, utils_1.isTaprootChain)(chain)) {
|
|
47
52
|
throw new Error('BIP322 is not supported for Taproot script types.');
|
|
48
53
|
}
|
|
49
54
|
const output = utxo_lib_1.bitgo.outputScripts.createOutputScript2of3(rootWalletKeys.deriveForChainAndIndex(chain, index).publicKeys, utxo_lib_1.bitgo.scriptTypeForChain(chain));
|
|
50
|
-
|
|
51
|
-
if (!toSpendScriptPubKey.equals(output.scriptPubKey)) {
|
|
52
|
-
throw new Error('Output scriptPubKey does not match the expected output script for the chain and index.');
|
|
53
|
-
}
|
|
54
|
-
return buildToSignPsbt(toSpendTx, {
|
|
55
|
+
return buildToSignPsbt(message, {
|
|
55
56
|
scriptPubKey: output.scriptPubKey,
|
|
56
57
|
redeemScript: output.redeemScript,
|
|
57
58
|
witnessScript: output.witnessScript,
|
|
58
59
|
});
|
|
59
60
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9TaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpcDMyMi90b1NpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxQkEsMENBbUNDO0FBRUQsMEVBbUJDO0FBN0VELG1EQUFtRDtBQUVuRCxtQ0FBZ0U7QUFDaEUsdUNBQWdFO0FBUWhFOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUFlLEVBQUUsY0FBOEIsRUFBRSxHQUFHLEdBQUcsb0JBQVU7SUFDL0YsTUFBTSxTQUFTLEdBQUcsSUFBQSxpQ0FBdUIsRUFBQyxjQUFjLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVyRixzREFBc0Q7SUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFJLEVBQUUsQ0FBQztJQUN4QiwrQ0FBK0M7SUFDL0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWU7SUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtJQUNyQyxnQkFBZ0I7SUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNaLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsc0NBQXNDO1FBQy9ELEtBQUssRUFBRSxDQUFDLEVBQUUsdUJBQXVCO1FBQ2pDLFFBQVEsRUFBRSxDQUFDLEVBQUUsdUJBQXVCO1FBQ3BDLGNBQWMsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUseURBQXlEO0tBQ2hHLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO1FBQ2xCLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUU7S0FDdkUsQ0FBQyxDQUFDO0lBRUgsSUFBSSxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxtRkFBbUY7SUFDbkYsSUFBQSw2QkFBcUIsRUFBQyxJQUFzQixFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFdkUsaUJBQWlCO0lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDYixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLHFCQUFxQjtRQUN2QyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsbUNBQW1DO0tBQ2pFLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQWdCLCtCQUErQixDQUM3QyxPQUFlLEVBQ2YsY0FBb0MsRUFDcEMsS0FBc0IsRUFDdEIsS0FBYTtJQUViLElBQUksSUFBQSxzQkFBYyxFQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxnQkFBSyxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FDdkQsY0FBYyxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQzlELGdCQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQ2hDLENBQUM7SUFFRixPQUFPLGVBQWUsQ0FBQyxPQUFPLEVBQUU7UUFDOUIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1FBQ2pDLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtRQUNqQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7S0FDcEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBzYnQsIGJpdGdvIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBhZGRCaXAzMjJQcm9vZk1lc3NhZ2UsIGlzVGFwcm9vdENoYWluIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBCSVAzMjJfVEFHLCBidWlsZFRvU3BlbmRUcmFuc2FjdGlvbiB9IGZyb20gJy4vdG9TcGVuZCc7XG5cbmV4cG9ydCB0eXBlIEFkZHJlc3NEZXRhaWxzID0ge1xuICByZWRlZW1TY3JpcHQ/OiBCdWZmZXI7XG4gIHdpdG5lc3NTY3JpcHQ/OiBCdWZmZXI7XG4gIHNjcmlwdFB1YktleTogQnVmZmVyO1xufTtcblxuLyoqXG4gKiBDb25zdHJ1Y3QgdGhlIHRvU2lnbiBQU0JUIGZvciBhIEJJUDMyMiB2ZXJpZmljYXRpb24uXG4gKiBTb3VyY2UgaW1wbGVtZW50YXRpb246XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVyL2JpcC0wMzIyLm1lZGlhd2lraSNmdWxsXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0aGF0IGlzIGhhc2hlZCBpbnRvIHRoZSBgdG9fc3BlbmRgIHRyYW5zYWN0aW9uLlxuICogQHBhcmFtIHtBZGRyZXNzRGV0YWlsc30gYWRkcmVzc0RldGFpbHMgLSBUaGUgZGV0YWlscyBvZiB0aGUgYWRkcmVzcywgaW5jbHVkaW5nIHJlZGVlbVNjcmlwdCBhbmQvb3Igd2l0bmVzc1NjcmlwdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdGFnPUJJUDMyMl9UQUddIC0gVGhlIHRhZyB0byB1c2UgZm9yIGhhc2hpbmcsIGRlZmF1bHRzIHRvIEJJUDMyMl9UQUcuXG4gKiBAcmV0dXJucyB7UHNidH0gLSBUaGUgaGV4IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdHJ1Y3RlZCBQU0JULlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUb1NpZ25Qc2J0KG1lc3NhZ2U6IHN0cmluZywgYWRkcmVzc0RldGFpbHM6IEFkZHJlc3NEZXRhaWxzLCB0YWcgPSBCSVAzMjJfVEFHKTogUHNidCB7XG4gIGNvbnN0IHRvU3BlbmRUeCA9IGJ1aWxkVG9TcGVuZFRyYW5zYWN0aW9uKGFkZHJlc3NEZXRhaWxzLnNjcmlwdFB1YktleSwgbWVzc2FnZSwgdGFnKTtcblxuICAvLyBDcmVhdGUgUFNCVCBvYmplY3QgZm9yIGNvbnN0cnVjdGluZyB0aGUgdHJhbnNhY3Rpb25cbiAgY29uc3QgcHNidCA9IG5ldyBQc2J0KCk7XG4gIC8vIFNldCBkZWZhdWx0IHZhbHVlIGZvciBuVmVyc2lvbiBhbmQgbkxvY2tUaW1lXG4gIHBzYnQuc2V0VmVyc2lvbigwKTsgLy8gblZlcnNpb24gPSAwXG4gIHBzYnQuc2V0TG9ja3RpbWUoMCk7IC8vIG5Mb2NrVGltZSA9IDBcbiAgLy8gU2V0IHRoZSBpbnB1dFxuICBwc2J0LmFkZElucHV0KHtcbiAgICBoYXNoOiB0b1NwZW5kVHguZ2V0SWQoKSwgLy8gdmluWzBdLnByZXZvdXQuaGFzaCA9IHRvX3NwZW5kLnR4aWRcbiAgICBpbmRleDogMCwgLy8gdmluWzBdLnByZXZvdXQubiA9IDBcbiAgICBzZXF1ZW5jZTogMCwgLy8gdmluWzBdLm5TZXF1ZW5jZSA9IDBcbiAgICBub25XaXRuZXNzVXR4bzogdG9TcGVuZFR4LnRvQnVmZmVyKCksIC8vIHByZXZpb3VzIHRyYW5zYWN0aW9uIGZvciB1cyB0byByZWJ1aWxkIGxhdGVyIHRvIHZlcmlmeVxuICB9KTtcbiAgcHNidC51cGRhdGVJbnB1dCgwLCB7XG4gICAgd2l0bmVzc1V0eG86IHsgdmFsdWU6IEJpZ0ludCgwKSwgc2NyaXB0OiBhZGRyZXNzRGV0YWlscy5zY3JpcHRQdWJLZXkgfSxcbiAgfSk7XG5cbiAgaWYgKGFkZHJlc3NEZXRhaWxzLnJlZGVlbVNjcmlwdCkge1xuICAgIHBzYnQudXBkYXRlSW5wdXQoMCwgeyByZWRlZW1TY3JpcHQ6IGFkZHJlc3NEZXRhaWxzLnJlZGVlbVNjcmlwdCB9KTtcbiAgfVxuICBpZiAoYWRkcmVzc0RldGFpbHMud2l0bmVzc1NjcmlwdCkge1xuICAgIHBzYnQudXBkYXRlSW5wdXQoMCwgeyB3aXRuZXNzU2NyaXB0OiBhZGRyZXNzRGV0YWlscy53aXRuZXNzU2NyaXB0IH0pO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBtZXNzYWdlIGFzIGEgcHJvcHJpZXRhcnkga2V5IHZhbHVlIHRvIHRoZSBQU0JUIHNvIHdlIGNhbiB2ZXJpZnkgaXQgbGF0ZXJcbiAgYWRkQmlwMzIyUHJvb2ZNZXNzYWdlKHBzYnQgYXMgYml0Z28uVXR4b1BzYnQsIDAsIEJ1ZmZlci5mcm9tKG1lc3NhZ2UpKTtcblxuICAvLyBTZXQgdGhlIG91dHB1dFxuICBwc2J0LmFkZE91dHB1dCh7XG4gICAgdmFsdWU6IEJpZ0ludCgwKSwgLy8gdm91dFswXS5uVmFsdWUgPSAwXG4gICAgc2NyaXB0OiBCdWZmZXIuZnJvbShbMHg2YV0pLCAvLyB2b3V0WzBdLnNjcmlwdFB1YktleSA9IE9QX1JFVFVSTlxuICB9KTtcbiAgcmV0dXJuIHBzYnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRvU2lnblBzYnRGb3JDaGFpbkFuZEluZGV4KFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHJvb3RXYWxsZXRLZXlzOiBiaXRnby5Sb290V2FsbGV0S2V5cyxcbiAgY2hhaW46IGJpdGdvLkNoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidCB7XG4gIGlmIChpc1RhcHJvb3RDaGFpbihjaGFpbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JJUDMyMiBpcyBub3Qgc3VwcG9ydGVkIGZvciBUYXByb290IHNjcmlwdCB0eXBlcy4nKTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSBiaXRnby5vdXRwdXRTY3JpcHRzLmNyZWF0ZU91dHB1dFNjcmlwdDJvZjMoXG4gICAgcm9vdFdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpLnB1YmxpY0tleXMsXG4gICAgYml0Z28uc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKVxuICApO1xuXG4gIHJldHVybiBidWlsZFRvU2lnblBzYnQobWVzc2FnZSwge1xuICAgIHNjcmlwdFB1YktleTogb3V0cHV0LnNjcmlwdFB1YktleSxcbiAgICByZWRlZW1TY3JpcHQ6IG91dHB1dC5yZWRlZW1TY3JpcHQsXG4gICAgd2l0bmVzc1NjcmlwdDogb3V0cHV0LndpdG5lc3NTY3JpcHQsXG4gIH0pO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/utxo-core",
|
|
3
|
-
"version": "1.0.1-alpha.
|
|
3
|
+
"version": "1.0.1-alpha.97",
|
|
4
4
|
"description": "BitGo UTXO Core types",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -52,12 +52,12 @@
|
|
|
52
52
|
]
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@bitgo-beta/unspents": "0.11.3-alpha.
|
|
56
|
-
"@bitgo-beta/utxo-lib": "4.0.1-alpha.
|
|
55
|
+
"@bitgo-beta/unspents": "0.11.3-alpha.367",
|
|
56
|
+
"@bitgo-beta/utxo-lib": "4.0.1-alpha.367",
|
|
57
57
|
"@bitgo/wasm-miniscript": "2.0.0-beta.7",
|
|
58
58
|
"bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4",
|
|
59
59
|
"bitcoinjs-message": "npm:@bitgo-forks/bitcoinjs-message@1.0.0-master.3",
|
|
60
60
|
"fast-sha256": "^1.3.0"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "e117031777af2ae086be5775f4c92fc96c9d1045"
|
|
63
63
|
}
|