@ledgerhq/hw-app-btc 10.5.0 → 10.6.0-next.0

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.
Files changed (194) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +3 -2
  4. package/lib/Btc.d.ts +1 -0
  5. package/lib/Btc.d.ts.map +1 -1
  6. package/lib/Btc.js +35 -41
  7. package/lib/Btc.js.map +1 -1
  8. package/lib/BtcNew.d.ts.map +1 -1
  9. package/lib/BtcNew.js +191 -216
  10. package/lib/BtcNew.js.map +1 -1
  11. package/lib/BtcOld.js +23 -37
  12. package/lib/BtcOld.js.map +1 -1
  13. package/lib/bip32.d.ts +1 -0
  14. package/lib/bip32.d.ts.map +1 -1
  15. package/lib/buffertools.d.ts +1 -0
  16. package/lib/buffertools.d.ts.map +1 -1
  17. package/lib/buffertools.js +3 -3
  18. package/lib/buffertools.js.map +1 -1
  19. package/lib/compressPublicKey.d.ts +1 -0
  20. package/lib/compressPublicKey.d.ts.map +1 -1
  21. package/lib/constants.d.ts +1 -0
  22. package/lib/constants.d.ts.map +1 -1
  23. package/lib/constants.js +3 -1
  24. package/lib/constants.js.map +1 -1
  25. package/lib/createTransaction.d.ts +19 -1
  26. package/lib/createTransaction.d.ts.map +1 -1
  27. package/lib/createTransaction.js +273 -245
  28. package/lib/createTransaction.js.map +1 -1
  29. package/lib/finalizeInput.d.ts +1 -0
  30. package/lib/finalizeInput.d.ts.map +1 -1
  31. package/lib/finalizeInput.js +18 -29
  32. package/lib/finalizeInput.js.map +1 -1
  33. package/lib/getAppAndVersion.d.ts +1 -0
  34. package/lib/getAppAndVersion.d.ts.map +1 -1
  35. package/lib/getAppAndVersion.js +6 -15
  36. package/lib/getAppAndVersion.js.map +1 -1
  37. package/lib/getTrustedInput.d.ts +1 -0
  38. package/lib/getTrustedInput.d.ts.map +1 -1
  39. package/lib/getTrustedInput.js +83 -96
  40. package/lib/getTrustedInput.js.map +1 -1
  41. package/lib/getWalletPublicKey.js +27 -34
  42. package/lib/getWalletPublicKey.js.map +1 -1
  43. package/lib/hashPublicKey.d.ts +1 -0
  44. package/lib/hashPublicKey.d.ts.map +1 -1
  45. package/lib/newops/accounttype.d.ts +1 -0
  46. package/lib/newops/accounttype.d.ts.map +1 -1
  47. package/lib/newops/accounttype.js +2 -0
  48. package/lib/newops/accounttype.js.map +1 -1
  49. package/lib/newops/appClient.d.ts +1 -0
  50. package/lib/newops/appClient.d.ts.map +1 -1
  51. package/lib/newops/appClient.js +90 -110
  52. package/lib/newops/appClient.js.map +1 -1
  53. package/lib/newops/clientCommands.d.ts +1 -0
  54. package/lib/newops/clientCommands.d.ts.map +1 -1
  55. package/lib/newops/clientCommands.js +18 -10
  56. package/lib/newops/clientCommands.js.map +1 -1
  57. package/lib/newops/merkelizedPsbt.d.ts +1 -0
  58. package/lib/newops/merkelizedPsbt.d.ts.map +1 -1
  59. package/lib/newops/merkelizedPsbt.js +5 -2
  60. package/lib/newops/merkelizedPsbt.js.map +1 -1
  61. package/lib/newops/merkle.d.ts +1 -0
  62. package/lib/newops/merkle.d.ts.map +1 -1
  63. package/lib/newops/merkle.js +8 -0
  64. package/lib/newops/merkle.js.map +1 -1
  65. package/lib/newops/merkleMap.d.ts +1 -0
  66. package/lib/newops/merkleMap.d.ts.map +1 -1
  67. package/lib/newops/merkleMap.js +4 -0
  68. package/lib/newops/merkleMap.js.map +1 -1
  69. package/lib/newops/policy.d.ts +1 -0
  70. package/lib/newops/policy.d.ts.map +1 -1
  71. package/lib/newops/policy.js +2 -0
  72. package/lib/newops/policy.js.map +1 -1
  73. package/lib/newops/psbtExtractor.d.ts +1 -0
  74. package/lib/newops/psbtExtractor.d.ts.map +1 -1
  75. package/lib/newops/psbtExtractor.js +2 -3
  76. package/lib/newops/psbtExtractor.js.map +1 -1
  77. package/lib/newops/psbtv2.d.ts +1 -0
  78. package/lib/newops/psbtv2.d.ts.map +1 -1
  79. package/lib/newops/psbtv2.js +10 -10
  80. package/lib/newops/psbtv2.js.map +1 -1
  81. package/lib/serializeTransaction.d.ts +1 -0
  82. package/lib/serializeTransaction.d.ts.map +1 -1
  83. package/lib/signMessage.js +38 -49
  84. package/lib/signMessage.js.map +1 -1
  85. package/lib/signP2SHTransaction.js +72 -83
  86. package/lib/signP2SHTransaction.js.map +1 -1
  87. package/lib/signTransaction.d.ts +1 -0
  88. package/lib/signTransaction.d.ts.map +1 -1
  89. package/lib/startUntrustedHashTransactionInput.d.ts +1 -0
  90. package/lib/startUntrustedHashTransactionInput.d.ts.map +1 -1
  91. package/lib/startUntrustedHashTransactionInput.js +52 -63
  92. package/lib/startUntrustedHashTransactionInput.js.map +1 -1
  93. package/lib/types.d.ts +1 -0
  94. package/lib/types.d.ts.map +1 -1
  95. package/lib/varint.d.ts +1 -0
  96. package/lib/varint.d.ts.map +1 -1
  97. package/lib-es/Btc.d.ts +1 -0
  98. package/lib-es/Btc.d.ts.map +1 -1
  99. package/lib-es/Btc.js +35 -41
  100. package/lib-es/Btc.js.map +1 -1
  101. package/lib-es/BtcNew.d.ts.map +1 -1
  102. package/lib-es/BtcNew.js +191 -216
  103. package/lib-es/BtcNew.js.map +1 -1
  104. package/lib-es/BtcOld.js +23 -37
  105. package/lib-es/BtcOld.js.map +1 -1
  106. package/lib-es/bip32.d.ts +1 -0
  107. package/lib-es/bip32.d.ts.map +1 -1
  108. package/lib-es/buffertools.d.ts +1 -0
  109. package/lib-es/buffertools.d.ts.map +1 -1
  110. package/lib-es/buffertools.js +3 -3
  111. package/lib-es/buffertools.js.map +1 -1
  112. package/lib-es/compressPublicKey.d.ts +1 -0
  113. package/lib-es/compressPublicKey.d.ts.map +1 -1
  114. package/lib-es/constants.d.ts +1 -0
  115. package/lib-es/constants.d.ts.map +1 -1
  116. package/lib-es/constants.js +2 -0
  117. package/lib-es/constants.js.map +1 -1
  118. package/lib-es/createTransaction.d.ts +19 -1
  119. package/lib-es/createTransaction.d.ts.map +1 -1
  120. package/lib-es/createTransaction.js +272 -245
  121. package/lib-es/createTransaction.js.map +1 -1
  122. package/lib-es/finalizeInput.d.ts +1 -0
  123. package/lib-es/finalizeInput.d.ts.map +1 -1
  124. package/lib-es/finalizeInput.js +18 -29
  125. package/lib-es/finalizeInput.js.map +1 -1
  126. package/lib-es/getAppAndVersion.d.ts +1 -0
  127. package/lib-es/getAppAndVersion.d.ts.map +1 -1
  128. package/lib-es/getAppAndVersion.js +6 -15
  129. package/lib-es/getAppAndVersion.js.map +1 -1
  130. package/lib-es/getTrustedInput.d.ts +1 -0
  131. package/lib-es/getTrustedInput.d.ts.map +1 -1
  132. package/lib-es/getTrustedInput.js +83 -96
  133. package/lib-es/getTrustedInput.js.map +1 -1
  134. package/lib-es/getWalletPublicKey.js +27 -34
  135. package/lib-es/getWalletPublicKey.js.map +1 -1
  136. package/lib-es/hashPublicKey.d.ts +1 -0
  137. package/lib-es/hashPublicKey.d.ts.map +1 -1
  138. package/lib-es/newops/accounttype.d.ts +1 -0
  139. package/lib-es/newops/accounttype.d.ts.map +1 -1
  140. package/lib-es/newops/accounttype.js +2 -0
  141. package/lib-es/newops/accounttype.js.map +1 -1
  142. package/lib-es/newops/appClient.d.ts +1 -0
  143. package/lib-es/newops/appClient.d.ts.map +1 -1
  144. package/lib-es/newops/appClient.js +90 -110
  145. package/lib-es/newops/appClient.js.map +1 -1
  146. package/lib-es/newops/clientCommands.d.ts +1 -0
  147. package/lib-es/newops/clientCommands.d.ts.map +1 -1
  148. package/lib-es/newops/clientCommands.js +18 -10
  149. package/lib-es/newops/clientCommands.js.map +1 -1
  150. package/lib-es/newops/merkelizedPsbt.d.ts +1 -0
  151. package/lib-es/newops/merkelizedPsbt.d.ts.map +1 -1
  152. package/lib-es/newops/merkelizedPsbt.js +5 -2
  153. package/lib-es/newops/merkelizedPsbt.js.map +1 -1
  154. package/lib-es/newops/merkle.d.ts +1 -0
  155. package/lib-es/newops/merkle.d.ts.map +1 -1
  156. package/lib-es/newops/merkle.js +8 -0
  157. package/lib-es/newops/merkle.js.map +1 -1
  158. package/lib-es/newops/merkleMap.d.ts +1 -0
  159. package/lib-es/newops/merkleMap.d.ts.map +1 -1
  160. package/lib-es/newops/merkleMap.js +4 -0
  161. package/lib-es/newops/merkleMap.js.map +1 -1
  162. package/lib-es/newops/policy.d.ts +1 -0
  163. package/lib-es/newops/policy.d.ts.map +1 -1
  164. package/lib-es/newops/policy.js +2 -0
  165. package/lib-es/newops/policy.js.map +1 -1
  166. package/lib-es/newops/psbtExtractor.d.ts +1 -0
  167. package/lib-es/newops/psbtExtractor.d.ts.map +1 -1
  168. package/lib-es/newops/psbtExtractor.js +2 -3
  169. package/lib-es/newops/psbtExtractor.js.map +1 -1
  170. package/lib-es/newops/psbtv2.d.ts +1 -0
  171. package/lib-es/newops/psbtv2.d.ts.map +1 -1
  172. package/lib-es/newops/psbtv2.js +10 -10
  173. package/lib-es/newops/psbtv2.js.map +1 -1
  174. package/lib-es/serializeTransaction.d.ts +1 -0
  175. package/lib-es/serializeTransaction.d.ts.map +1 -1
  176. package/lib-es/signMessage.js +38 -49
  177. package/lib-es/signMessage.js.map +1 -1
  178. package/lib-es/signP2SHTransaction.js +72 -83
  179. package/lib-es/signP2SHTransaction.js.map +1 -1
  180. package/lib-es/signTransaction.d.ts +1 -0
  181. package/lib-es/signTransaction.d.ts.map +1 -1
  182. package/lib-es/startUntrustedHashTransactionInput.d.ts +1 -0
  183. package/lib-es/startUntrustedHashTransactionInput.d.ts.map +1 -1
  184. package/lib-es/startUntrustedHashTransactionInput.js +52 -63
  185. package/lib-es/startUntrustedHashTransactionInput.js.map +1 -1
  186. package/lib-es/types.d.ts +1 -0
  187. package/lib-es/types.d.ts.map +1 -1
  188. package/lib-es/varint.d.ts +1 -0
  189. package/lib-es/varint.d.ts.map +1 -1
  190. package/package.json +5 -4
  191. package/src/BtcNew.ts +7 -1
  192. package/src/constants.ts +3 -0
  193. package/src/createTransaction.ts +68 -5
  194. package/tests/createTransaction.test.ts +225 -0
package/lib/BtcNew.js CHANGED
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.isPathNormal = void 0;
13
4
  const bitcoinjs_lib_1 = require("bitcoinjs-lib");
@@ -36,6 +27,7 @@ const serializeTransaction_1 = require("./serializeTransaction");
36
27
  *
37
28
  */
38
29
  class BtcNew {
30
+ client;
39
31
  constructor(client) {
40
32
  this.client = client;
41
33
  }
@@ -69,16 +61,14 @@ class BtcNew {
69
61
  *
70
62
  * We opted for adding a new function, which can greatly simplify client code.
71
63
  */
72
- getWalletXpub(_a) {
73
- return __awaiter(this, arguments, void 0, function* ({ path, xpubVersion, }) {
74
- const pathElements = (0, bip32_1.pathStringToArray)(path);
75
- const xpub = yield this.client.getExtendedPubkey(false, pathElements);
76
- const xpubComponents = (0, bip32_1.getXpubComponents)(xpub);
77
- if (xpubComponents.version != xpubVersion) {
78
- throw new Error(`Expected xpub version ${xpubVersion} doesn't match the xpub version from the device ${xpubComponents.version}`);
79
- }
80
- return xpub;
81
- });
64
+ async getWalletXpub({ path, xpubVersion, }) {
65
+ const pathElements = (0, bip32_1.pathStringToArray)(path);
66
+ const xpub = await this.client.getExtendedPubkey(false, pathElements);
67
+ const xpubComponents = (0, bip32_1.getXpubComponents)(xpub);
68
+ if (xpubComponents.version != xpubVersion) {
69
+ throw new Error(`Expected xpub version ${xpubVersion} doesn't match the xpub version from the device ${xpubComponents.version}`);
70
+ }
71
+ return xpub;
82
72
  }
83
73
  /**
84
74
  * This method returns a public key, a bitcoin address, and and a chaincode
@@ -87,24 +77,21 @@ class BtcNew {
87
77
  * Limitation: If the path is not a leaf node of a standard path, the address
88
78
  * will be the empty string "", see this.getWalletAddress() for details.
89
79
  */
90
- getWalletPublicKey(path, opts) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- var _a, _b;
93
- if (!isPathNormal(path)) {
94
- throw Error(`non-standard path: ${path}`);
95
- }
96
- const pathElements = (0, bip32_1.pathStringToArray)(path);
97
- const xpub = yield this.client.getExtendedPubkey(false, pathElements);
98
- const display = (_a = opts === null || opts === void 0 ? void 0 : opts.verify) !== null && _a !== void 0 ? _a : false;
99
- const address = yield this.getWalletAddress(pathElements, descrTemplFrom((_b = opts === null || opts === void 0 ? void 0 : opts.format) !== null && _b !== void 0 ? _b : "legacy"), display);
100
- const components = (0, bip32_1.getXpubComponents)(xpub);
101
- const uncompressedPubkey = Buffer.from((0, tiny_secp256k1_1.pointCompress)(components.pubkey, false));
102
- return {
103
- publicKey: uncompressedPubkey.toString("hex"),
104
- bitcoinAddress: address,
105
- chainCode: components.chaincode.toString("hex"),
106
- };
107
- });
80
+ async getWalletPublicKey(path, opts) {
81
+ if (!isPathNormal(path)) {
82
+ throw Error(`non-standard path: ${path}`);
83
+ }
84
+ const pathElements = (0, bip32_1.pathStringToArray)(path);
85
+ const xpub = await this.client.getExtendedPubkey(false, pathElements);
86
+ const display = opts?.verify ?? false;
87
+ const address = await this.getWalletAddress(pathElements, descrTemplFrom(opts?.format ?? "legacy"), display);
88
+ const components = (0, bip32_1.getXpubComponents)(xpub);
89
+ const uncompressedPubkey = Buffer.from((0, tiny_secp256k1_1.pointCompress)(components.pubkey, false));
90
+ return {
91
+ publicKey: uncompressedPubkey.toString("hex"),
92
+ bitcoinAddress: address,
93
+ chainCode: components.chaincode.toString("hex"),
94
+ };
108
95
  }
109
96
  /**
110
97
  * Get an address for the specified path.
@@ -121,18 +108,16 @@ class BtcNew {
121
108
  * way to get the address from the device. In this case we have to create it
122
109
  * ourselves, but we don't at this time, and instead return an empty ("") address.
123
110
  */
124
- getWalletAddress(pathElements, descrTempl, display) {
125
- return __awaiter(this, void 0, void 0, function* () {
126
- const accountPath = (0, bip32_1.hardenedPathOf)(pathElements);
127
- if (accountPath.length + 2 != pathElements.length) {
128
- return "";
129
- }
130
- const accountXpub = yield this.client.getExtendedPubkey(false, accountPath);
131
- const masterFingerprint = yield this.client.getMasterFingerprint();
132
- const policy = new policy_1.WalletPolicy(descrTempl, (0, policy_1.createKey)(masterFingerprint, accountPath, accountXpub));
133
- const changeAndIndex = pathElements.slice(-2, pathElements.length);
134
- return this.client.getWalletAddress(policy, Buffer.alloc(32, 0), changeAndIndex[0], changeAndIndex[1], display);
135
- });
111
+ async getWalletAddress(pathElements, descrTempl, display) {
112
+ const accountPath = (0, bip32_1.hardenedPathOf)(pathElements);
113
+ if (accountPath.length + 2 != pathElements.length) {
114
+ return "";
115
+ }
116
+ const accountXpub = await this.client.getExtendedPubkey(false, accountPath);
117
+ const masterFingerprint = await this.client.getMasterFingerprint();
118
+ const policy = new policy_1.WalletPolicy(descrTempl, (0, policy_1.createKey)(masterFingerprint, accountPath, accountXpub));
119
+ const changeAndIndex = pathElements.slice(-2, pathElements.length);
120
+ return this.client.getWalletAddress(policy, Buffer.alloc(32, 0), changeAndIndex[0], changeAndIndex[1], display);
136
121
  }
137
122
  /**
138
123
  * Build and sign a transaction. See Btc.createPaymentTransaction for
@@ -142,116 +127,112 @@ class BtcNew {
142
127
  * a psbt which is finally signed and finalized, and the extracted fully signed
143
128
  * transaction is returned.
144
129
  */
145
- createPaymentTransaction(arg) {
146
- return __awaiter(this, void 0, void 0, function* () {
147
- const inputCount = arg.inputs.length;
148
- if (inputCount == 0) {
149
- throw Error("No inputs");
150
- }
151
- const psbt = new psbtv2_1.PsbtV2();
152
- // The master fingerprint is needed when adding BIP32 derivation paths on
153
- // the psbt.
154
- const masterFp = yield this.client.getMasterFingerprint();
155
- const accountType = accountTypeFromArg(arg, psbt, masterFp);
156
- if (arg.lockTime != undefined) {
157
- // The signer will assume locktime 0 if unset
158
- psbt.setGlobalFallbackLocktime(arg.lockTime);
159
- }
160
- psbt.setGlobalInputCount(inputCount);
161
- psbt.setGlobalPsbtVersion(2);
162
- psbt.setGlobalTxVersion(2);
163
- let notifyCount = 0;
164
- const progress = () => {
165
- if (!arg.onDeviceStreaming)
166
- return;
167
- arg.onDeviceStreaming({
168
- total: 2 * inputCount,
169
- index: notifyCount,
170
- progress: ++notifyCount / (2 * inputCount),
171
- });
172
- };
173
- let accountXpub = "";
174
- let accountPath = [];
175
- for (let i = 0; i < inputCount; i++) {
176
- progress();
177
- const pathElems = (0, bip32_1.pathStringToArray)(arg.associatedKeysets[i]);
178
- if (accountXpub == "") {
179
- // We assume all inputs belong to the same account so we set
180
- // the account xpub and path based on the first input.
181
- accountPath = pathElems.slice(0, -2);
182
- accountXpub = yield this.client.getExtendedPubkey(false, accountPath);
183
- }
184
- yield this.setInput(psbt, i, arg.inputs[i], pathElems, accountType, masterFp, arg.sigHashType);
130
+ async createPaymentTransaction(arg) {
131
+ const inputCount = arg.inputs.length;
132
+ if (inputCount == 0) {
133
+ throw Error("No inputs");
134
+ }
135
+ const psbt = new psbtv2_1.PsbtV2();
136
+ // The master fingerprint is needed when adding BIP32 derivation paths on
137
+ // the psbt.
138
+ const masterFp = await this.client.getMasterFingerprint();
139
+ const accountType = accountTypeFromArg(arg, psbt, masterFp);
140
+ if (arg.lockTime != undefined) {
141
+ // The signer will assume locktime 0 if unset
142
+ psbt.setGlobalFallbackLocktime(arg.lockTime);
143
+ }
144
+ psbt.setGlobalInputCount(inputCount);
145
+ psbt.setGlobalPsbtVersion(2);
146
+ psbt.setGlobalTxVersion(2);
147
+ let notifyCount = 0;
148
+ const progress = () => {
149
+ if (!arg.onDeviceStreaming)
150
+ return;
151
+ arg.onDeviceStreaming({
152
+ total: 2 * inputCount,
153
+ index: notifyCount,
154
+ progress: ++notifyCount / (2 * inputCount),
155
+ });
156
+ };
157
+ let accountXpub = "";
158
+ let accountPath = [];
159
+ for (let i = 0; i < inputCount; i++) {
160
+ progress();
161
+ const pathElems = (0, bip32_1.pathStringToArray)(arg.associatedKeysets[i]);
162
+ if (accountXpub == "") {
163
+ // We assume all inputs belong to the same account so we set
164
+ // the account xpub and path based on the first input.
165
+ accountPath = pathElems.slice(0, -2);
166
+ accountXpub = await this.client.getExtendedPubkey(false, accountPath);
185
167
  }
186
- const outputsConcat = Buffer.from(arg.outputScriptHex, "hex");
187
- const outputsBufferReader = new buffertools_1.BufferReader(outputsConcat);
188
- const outputCount = outputsBufferReader.readVarInt();
189
- psbt.setGlobalOutputCount(outputCount);
190
- const changeData = yield this.outputScriptAt(accountPath, accountType, arg.changePath);
191
- // If the caller supplied a changePath, we must make sure there actually is
192
- // a change output. If no change output found, we'll throw an error.
193
- let changeFound = !changeData;
194
- for (let i = 0; i < outputCount; i++) {
195
- const amount = Number(outputsBufferReader.readUInt64());
196
- const outputScript = outputsBufferReader.readVarSlice();
197
- psbt.setOutputAmount(i, amount);
198
- psbt.setOutputScript(i, outputScript);
199
- // We won't know if we're paying to ourselves, because there's no
200
- // information in arg to support multiple "change paths". One exception is
201
- // if there are multiple outputs to the change address.
202
- const isChange = changeData && outputScript.equals(changeData === null || changeData === void 0 ? void 0 : changeData.cond.scriptPubKey);
203
- if (isChange) {
204
- changeFound = true;
205
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
206
- const changePath = (0, bip32_1.pathStringToArray)(arg.changePath);
207
- const pubkey = changeData.pubkey;
208
- accountType.setOwnOutput(i, changeData.cond, [pubkey], [changePath]);
209
- }
168
+ await this.setInput(psbt, i, arg.inputs[i], pathElems, accountType, masterFp, arg.sigHashType);
169
+ }
170
+ const outputsConcat = Buffer.from(arg.outputScriptHex, "hex");
171
+ const outputsBufferReader = new buffertools_1.BufferReader(outputsConcat);
172
+ const outputCount = outputsBufferReader.readVarInt();
173
+ psbt.setGlobalOutputCount(outputCount);
174
+ const changeData = await this.outputScriptAt(accountPath, accountType, arg.changePath);
175
+ // If the caller supplied a changePath, we must make sure there actually is
176
+ // a change output. If no change output found, we'll throw an error.
177
+ let changeFound = !changeData;
178
+ for (let i = 0; i < outputCount; i++) {
179
+ const amount = Number(outputsBufferReader.readUInt64());
180
+ const outputScript = outputsBufferReader.readVarSlice();
181
+ psbt.setOutputAmount(i, amount);
182
+ psbt.setOutputScript(i, outputScript);
183
+ // We won't know if we're paying to ourselves, because there's no
184
+ // information in arg to support multiple "change paths". One exception is
185
+ // if there are multiple outputs to the change address.
186
+ const isChange = changeData && outputScript.equals(changeData?.cond.scriptPubKey);
187
+ if (isChange) {
188
+ changeFound = true;
189
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
190
+ const changePath = (0, bip32_1.pathStringToArray)(arg.changePath);
191
+ const pubkey = changeData.pubkey;
192
+ accountType.setOwnOutput(i, changeData.cond, [pubkey], [changePath]);
210
193
  }
211
- if (!changeFound) {
212
- throw new Error("Change script not found among outputs! " + (changeData === null || changeData === void 0 ? void 0 : changeData.cond.scriptPubKey.toString("hex")));
194
+ }
195
+ if (!changeFound) {
196
+ throw new Error("Change script not found among outputs! " + changeData?.cond.scriptPubKey.toString("hex"));
197
+ }
198
+ const key = (0, policy_1.createKey)(masterFp, accountPath, accountXpub);
199
+ const p = new policy_1.WalletPolicy(accountType.getDescriptorTemplate(), key);
200
+ // This is cheating, because it's not actually requested on the
201
+ // device yet, but it will be, soonish.
202
+ if (arg.onDeviceSignatureRequested)
203
+ arg.onDeviceSignatureRequested();
204
+ let firstSigned = false;
205
+ // This callback will be called once for each signature yielded.
206
+ const progressCallback = () => {
207
+ if (!firstSigned) {
208
+ firstSigned = true;
209
+ arg.onDeviceSignatureGranted && arg.onDeviceSignatureGranted();
213
210
  }
214
- const key = (0, policy_1.createKey)(masterFp, accountPath, accountXpub);
215
- const p = new policy_1.WalletPolicy(accountType.getDescriptorTemplate(), key);
216
- // This is cheating, because it's not actually requested on the
217
- // device yet, but it will be, soonish.
218
- if (arg.onDeviceSignatureRequested)
219
- arg.onDeviceSignatureRequested();
220
- let firstSigned = false;
221
- // This callback will be called once for each signature yielded.
222
- const progressCallback = () => {
223
- if (!firstSigned) {
224
- firstSigned = true;
225
- arg.onDeviceSignatureGranted && arg.onDeviceSignatureGranted();
226
- }
227
- progress();
228
- };
229
- yield this.signPsbt(psbt, p, progressCallback);
230
- (0, psbtFinalizer_1.finalize)(psbt);
231
- const serializedTx = (0, psbtExtractor_1.extract)(psbt);
232
- return serializedTx.toString("hex");
233
- });
211
+ progress();
212
+ };
213
+ await this.signPsbt(psbt, p, progressCallback);
214
+ (0, psbtFinalizer_1.finalize)(psbt);
215
+ const serializedTx = (0, psbtExtractor_1.extract)(psbt);
216
+ return serializedTx.toString("hex");
234
217
  }
235
218
  /**
236
219
  * Signs an arbitrary hex-formatted message with the private key at
237
220
  * the provided derivation path according to the Bitcoin Signature format
238
221
  * and returns v, r, s.
239
222
  */
240
- signMessage(_a) {
241
- return __awaiter(this, arguments, void 0, function* ({ path, messageHex }) {
242
- const pathElements = (0, bip32_1.pathStringToArray)(path);
243
- const message = Buffer.from(messageHex, "hex");
244
- const sig = yield this.client.signMessage(message, pathElements);
245
- const buf = Buffer.from(sig, "base64");
246
- const v = buf.readUInt8() - 27 - 4;
247
- const r = buf.slice(1, 33).toString("hex");
248
- const s = buf.slice(33, 65).toString("hex");
249
- return {
250
- v,
251
- r,
252
- s,
253
- };
254
- });
223
+ async signMessage({ path, messageHex }) {
224
+ const pathElements = (0, bip32_1.pathStringToArray)(path);
225
+ const message = Buffer.from(messageHex, "hex");
226
+ const sig = await this.client.signMessage(message, pathElements);
227
+ const buf = Buffer.from(sig, "base64");
228
+ const v = buf.readUInt8() - 27 - 4;
229
+ const r = buf.slice(1, 33).toString("hex");
230
+ const s = buf.slice(33, 65).toString("hex");
231
+ return {
232
+ v,
233
+ r,
234
+ s,
235
+ };
255
236
  }
256
237
  /**
257
238
  * Calculates an output script along with public key and possible redeemScript
@@ -261,59 +242,55 @@ class BtcNew {
261
242
  * wrapped p2wpkh), and pubkey at provided path. The values of these three
262
243
  * properties depend on the accountType used.
263
244
  */
264
- outputScriptAt(accountPath, accountType, path) {
265
- return __awaiter(this, void 0, void 0, function* () {
266
- if (!path)
267
- return undefined;
268
- const pathElems = (0, bip32_1.pathStringToArray)(path);
269
- // Make sure path is in our account, otherwise something fishy is probably
270
- // going on.
271
- for (let i = 0; i < accountPath.length; i++) {
272
- if (accountPath[i] != pathElems[i]) {
273
- throw new Error(`Path ${path} not in account ${(0, bip32_1.pathArrayToString)(accountPath)}`);
274
- }
245
+ async outputScriptAt(accountPath, accountType, path) {
246
+ if (!path)
247
+ return undefined;
248
+ const pathElems = (0, bip32_1.pathStringToArray)(path);
249
+ // Make sure path is in our account, otherwise something fishy is probably
250
+ // going on.
251
+ for (let i = 0; i < accountPath.length; i++) {
252
+ if (accountPath[i] != pathElems[i]) {
253
+ throw new Error(`Path ${path} not in account ${(0, bip32_1.pathArrayToString)(accountPath)}`);
275
254
  }
276
- const xpub = yield this.client.getExtendedPubkey(false, pathElems);
277
- const pubkey = (0, bip32_1.pubkeyFromXpub)(xpub);
278
- const cond = accountType.spendingCondition([pubkey]);
279
- return { cond, pubkey };
280
- });
255
+ }
256
+ const xpub = await this.client.getExtendedPubkey(false, pathElems);
257
+ const pubkey = (0, bip32_1.pubkeyFromXpub)(xpub);
258
+ const cond = accountType.spendingCondition([pubkey]);
259
+ return { cond, pubkey };
281
260
  }
282
261
  /**
283
262
  * Adds relevant data about an input to the psbt. This includes sequence,
284
263
  * previous txid, output index, spent UTXO, redeem script for wrapped p2wpkh,
285
264
  * public key and its derivation path.
286
265
  */
287
- setInput(psbt, i, input, pathElements, accountType, masterFP, sigHashType) {
288
- return __awaiter(this, void 0, void 0, function* () {
289
- const inputTx = input[0];
290
- const spentOutputIndex = input[1];
291
- // redeemScript will be null for wrapped p2wpkh, we need to create it
292
- // ourselves. But if set, it should be used.
293
- const redeemScript = input[2] ? Buffer.from(input[2], "hex") : undefined;
294
- const sequence = input[3];
295
- if (sequence != undefined) {
296
- psbt.setInputSequence(i, sequence);
297
- }
298
- if (sigHashType != undefined) {
299
- psbt.setInputSighashType(i, sigHashType);
300
- }
301
- const inputTxBuffer = (0, serializeTransaction_1.serializeTransaction)(inputTx, true);
302
- const inputTxid = bitcoinjs_lib_1.crypto.hash256(inputTxBuffer);
303
- const xpubBase58 = yield this.client.getExtendedPubkey(false, pathElements);
304
- const pubkey = (0, bip32_1.pubkeyFromXpub)(xpubBase58);
305
- if (!inputTx.outputs)
306
- throw Error("Missing outputs array in transaction to sign");
307
- const spentTxOutput = inputTx.outputs[spentOutputIndex];
308
- const spendCondition = {
309
- scriptPubKey: spentTxOutput.script,
310
- redeemScript: redeemScript,
311
- };
312
- const spentOutput = { cond: spendCondition, amount: spentTxOutput.amount };
313
- accountType.setInput(i, inputTxBuffer, spentOutput, [pubkey], [pathElements]);
314
- psbt.setInputPreviousTxId(i, inputTxid);
315
- psbt.setInputOutputIndex(i, spentOutputIndex);
316
- });
266
+ async setInput(psbt, i, input, pathElements, accountType, masterFP, sigHashType) {
267
+ const inputTx = input[0];
268
+ const spentOutputIndex = input[1];
269
+ // redeemScript will be null for wrapped p2wpkh, we need to create it
270
+ // ourselves. But if set, it should be used.
271
+ const redeemScript = input[2] ? Buffer.from(input[2], "hex") : undefined;
272
+ const sequence = input[3];
273
+ if (sequence != undefined) {
274
+ psbt.setInputSequence(i, sequence);
275
+ }
276
+ if (sigHashType != undefined) {
277
+ psbt.setInputSighashType(i, sigHashType);
278
+ }
279
+ const inputTxBuffer = (0, serializeTransaction_1.serializeTransaction)(inputTx, true);
280
+ const inputTxid = bitcoinjs_lib_1.crypto.hash256(inputTxBuffer);
281
+ const xpubBase58 = await this.client.getExtendedPubkey(false, pathElements);
282
+ const pubkey = (0, bip32_1.pubkeyFromXpub)(xpubBase58);
283
+ if (!inputTx.outputs)
284
+ throw Error("Missing outputs array in transaction to sign");
285
+ const spentTxOutput = inputTx.outputs[spentOutputIndex];
286
+ const spendCondition = {
287
+ scriptPubKey: spentTxOutput.script,
288
+ redeemScript: redeemScript,
289
+ };
290
+ const spentOutput = { cond: spendCondition, amount: spentTxOutput.amount };
291
+ accountType.setInput(i, inputTxBuffer, spentOutput, [pubkey], [pathElements]);
292
+ psbt.setInputPreviousTxId(i, inputTxid);
293
+ psbt.setInputOutputIndex(i, spentOutputIndex);
317
294
  }
318
295
  /**
319
296
  * This implements the "Signer" role of the BIP370 transaction signing
@@ -324,27 +301,25 @@ class BtcNew {
324
301
  * comment in-line. The signatures returned from the hardware device is added
325
302
  * to the appropriate input fields of the PSBT.
326
303
  */
327
- signPsbt(psbt, walletPolicy, progressCallback) {
328
- return __awaiter(this, void 0, void 0, function* () {
329
- const sigs = yield this.client.signPsbt(psbt, walletPolicy, Buffer.alloc(32, 0), progressCallback);
330
- sigs.forEach((v, k) => {
331
- // Note: Looking at BIP32 derivation does not work in the generic case,
332
- // since some inputs might not have a BIP32-derived pubkey.
333
- const pubkeys = psbt.getInputKeyDatas(k, psbtv2_1.psbtIn.BIP32_DERIVATION);
334
- let pubkey;
335
- if (pubkeys.length != 1) {
336
- // No legacy BIP32_DERIVATION, assume we're using taproot.
337
- pubkey = psbt.getInputKeyDatas(k, psbtv2_1.psbtIn.TAP_BIP32_DERIVATION);
338
- if (pubkey.length == 0) {
339
- throw Error(`Missing pubkey derivation for input ${k}`);
340
- }
341
- psbt.setInputTapKeySig(k, v);
342
- }
343
- else {
344
- pubkey = pubkeys[0];
345
- psbt.setInputPartialSig(k, pubkey, v);
304
+ async signPsbt(psbt, walletPolicy, progressCallback) {
305
+ const sigs = await this.client.signPsbt(psbt, walletPolicy, Buffer.alloc(32, 0), progressCallback);
306
+ sigs.forEach((v, k) => {
307
+ // Note: Looking at BIP32 derivation does not work in the generic case,
308
+ // since some inputs might not have a BIP32-derived pubkey.
309
+ const pubkeys = psbt.getInputKeyDatas(k, psbtv2_1.psbtIn.BIP32_DERIVATION);
310
+ let pubkey;
311
+ if (pubkeys.length != 1) {
312
+ // No legacy BIP32_DERIVATION, assume we're using taproot.
313
+ pubkey = psbt.getInputKeyDatas(k, psbtv2_1.psbtIn.TAP_BIP32_DERIVATION);
314
+ if (pubkey.length == 0) {
315
+ throw Error(`Missing pubkey derivation for input ${k}`);
346
316
  }
347
- });
317
+ psbt.setInputTapKeySig(k, v);
318
+ }
319
+ else {
320
+ pubkey = pubkeys[0];
321
+ psbt.setInputPartialSig(k, pubkey, v);
322
+ }
348
323
  });
349
324
  }
350
325
  }
package/lib/BtcNew.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"BtcNew.js","sourceRoot":"","sources":["../src/BtcNew.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BtcNew.js","sourceRoot":"","sources":["../src/BtcNew.ts"],"names":[],"mappings":"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"}