@ledgerhq/hw-app-btc 10.0.1 → 10.0.2-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 (165) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/lib/Btc.d.ts.map +1 -1
  3. package/lib/Btc.js +72 -97
  4. package/lib/Btc.js.map +1 -1
  5. package/lib/BtcNew.js +217 -313
  6. package/lib/BtcNew.js.map +1 -1
  7. package/lib/BtcOld.js +46 -106
  8. package/lib/BtcOld.js.map +1 -1
  9. package/lib/bip32.js +12 -12
  10. package/lib/bip32.js.map +1 -1
  11. package/lib/buffertools.js +66 -69
  12. package/lib/buffertools.js.map +1 -1
  13. package/lib/compressPublicKey.js +3 -3
  14. package/lib/compressPublicKey.js.map +1 -1
  15. package/lib/constants.js +1 -1
  16. package/lib/createTransaction.d.ts +1 -1
  17. package/lib/createTransaction.d.ts.map +1 -1
  18. package/lib/createTransaction.js +285 -398
  19. package/lib/createTransaction.js.map +1 -1
  20. package/lib/debug.js +11 -13
  21. package/lib/debug.js.map +1 -1
  22. package/lib/finalizeInput.js +23 -62
  23. package/lib/finalizeInput.js.map +1 -1
  24. package/lib/getAppAndVersion.d.ts +1 -1
  25. package/lib/getAppAndVersion.d.ts.map +1 -1
  26. package/lib/getAppAndVersion.js +29 -72
  27. package/lib/getAppAndVersion.js.map +1 -1
  28. package/lib/getTrustedInput.js +108 -251
  29. package/lib/getTrustedInput.js.map +1 -1
  30. package/lib/getTrustedInputBIP143.js +9 -10
  31. package/lib/getTrustedInputBIP143.js.map +1 -1
  32. package/lib/getWalletPublicKey.d.ts +1 -1
  33. package/lib/getWalletPublicKey.d.ts.map +1 -1
  34. package/lib/getWalletPublicKey.js +27 -73
  35. package/lib/getWalletPublicKey.js.map +1 -1
  36. package/lib/hashPublicKey.js +4 -4
  37. package/lib/hashPublicKey.js.map +1 -1
  38. package/lib/index.js +3 -3
  39. package/lib/index.js.map +1 -1
  40. package/lib/newops/accounttype.d.ts +2 -2
  41. package/lib/newops/accounttype.d.ts.map +1 -1
  42. package/lib/newops/accounttype.js +85 -125
  43. package/lib/newops/accounttype.js.map +1 -1
  44. package/lib/newops/appClient.js +98 -205
  45. package/lib/newops/appClient.js.map +1 -1
  46. package/lib/newops/clientCommands.js +122 -213
  47. package/lib/newops/clientCommands.js.map +1 -1
  48. package/lib/newops/merkelizedPsbt.js +28 -75
  49. package/lib/newops/merkelizedPsbt.js.map +1 -1
  50. package/lib/newops/merkle.js +38 -67
  51. package/lib/newops/merkle.js.map +1 -1
  52. package/lib/newops/merkleMap.js +11 -12
  53. package/lib/newops/merkleMap.js.map +1 -1
  54. package/lib/newops/policy.d.ts +1 -1
  55. package/lib/newops/policy.d.ts.map +1 -1
  56. package/lib/newops/policy.js +17 -18
  57. package/lib/newops/policy.js.map +1 -1
  58. package/lib/newops/psbtExtractor.js +9 -9
  59. package/lib/newops/psbtExtractor.js.map +1 -1
  60. package/lib/newops/psbtFinalizer.js +22 -22
  61. package/lib/newops/psbtFinalizer.js.map +1 -1
  62. package/lib/newops/psbtv2.d.ts +1 -1
  63. package/lib/newops/psbtv2.d.ts.map +1 -1
  64. package/lib/newops/psbtv2.js +227 -286
  65. package/lib/newops/psbtv2.js.map +1 -1
  66. package/lib/serializeTransaction.js +13 -15
  67. package/lib/serializeTransaction.js.map +1 -1
  68. package/lib/shouldUseTrustedInputForSegwit.js +4 -5
  69. package/lib/shouldUseTrustedInputForSegwit.js.map +1 -1
  70. package/lib/signMessage.js +47 -99
  71. package/lib/signMessage.js.map +1 -1
  72. package/lib/signP2SHTransaction.d.ts +1 -1
  73. package/lib/signP2SHTransaction.d.ts.map +1 -1
  74. package/lib/signP2SHTransaction.js +91 -187
  75. package/lib/signP2SHTransaction.js.map +1 -1
  76. package/lib/signTransaction.js +8 -9
  77. package/lib/signTransaction.js.map +1 -1
  78. package/lib/splitTransaction.js +50 -54
  79. package/lib/splitTransaction.js.map +1 -1
  80. package/lib/startUntrustedHashTransactionInput.js +65 -167
  81. package/lib/startUntrustedHashTransactionInput.js.map +1 -1
  82. package/lib/types.js +1 -1
  83. package/lib/varint.js +10 -10
  84. package/lib/varint.js.map +1 -1
  85. package/lib-es/Btc.d.ts.map +1 -1
  86. package/lib-es/Btc.js +58 -84
  87. package/lib-es/Btc.js.map +1 -1
  88. package/lib-es/BtcNew.js +205 -302
  89. package/lib-es/BtcNew.js.map +1 -1
  90. package/lib-es/BtcOld.js +35 -96
  91. package/lib-es/BtcOld.js.map +1 -1
  92. package/lib-es/bip32.js +7 -7
  93. package/lib-es/bip32.js.map +1 -1
  94. package/lib-es/buffertools.js +62 -67
  95. package/lib-es/buffertools.js.map +1 -1
  96. package/lib-es/compressPublicKey.js +2 -2
  97. package/lib-es/compressPublicKey.js.map +1 -1
  98. package/lib-es/constants.js +12 -12
  99. package/lib-es/constants.js.map +1 -1
  100. package/lib-es/createTransaction.d.ts +1 -1
  101. package/lib-es/createTransaction.d.ts.map +1 -1
  102. package/lib-es/createTransaction.js +271 -384
  103. package/lib-es/createTransaction.js.map +1 -1
  104. package/lib-es/debug.js +10 -12
  105. package/lib-es/debug.js.map +1 -1
  106. package/lib-es/finalizeInput.js +20 -59
  107. package/lib-es/finalizeInput.js.map +1 -1
  108. package/lib-es/getAppAndVersion.d.ts +1 -1
  109. package/lib-es/getAppAndVersion.d.ts.map +1 -1
  110. package/lib-es/getAppAndVersion.js +27 -70
  111. package/lib-es/getAppAndVersion.js.map +1 -1
  112. package/lib-es/getTrustedInput.js +104 -247
  113. package/lib-es/getTrustedInput.js.map +1 -1
  114. package/lib-es/getTrustedInputBIP143.js +5 -6
  115. package/lib-es/getTrustedInputBIP143.js.map +1 -1
  116. package/lib-es/getWalletPublicKey.d.ts +1 -1
  117. package/lib-es/getWalletPublicKey.d.ts.map +1 -1
  118. package/lib-es/getWalletPublicKey.js +25 -71
  119. package/lib-es/getWalletPublicKey.js.map +1 -1
  120. package/lib-es/newops/accounttype.d.ts +2 -2
  121. package/lib-es/newops/accounttype.d.ts.map +1 -1
  122. package/lib-es/newops/accounttype.js +79 -123
  123. package/lib-es/newops/accounttype.js.map +1 -1
  124. package/lib-es/newops/appClient.js +92 -200
  125. package/lib-es/newops/appClient.js.map +1 -1
  126. package/lib-es/newops/clientCommands.js +117 -214
  127. package/lib-es/newops/clientCommands.js.map +1 -1
  128. package/lib-es/newops/merkelizedPsbt.js +25 -73
  129. package/lib-es/newops/merkelizedPsbt.js.map +1 -1
  130. package/lib-es/newops/merkle.js +36 -66
  131. package/lib-es/newops/merkle.js.map +1 -1
  132. package/lib-es/newops/merkleMap.js +8 -10
  133. package/lib-es/newops/merkleMap.js.map +1 -1
  134. package/lib-es/newops/policy.d.ts +1 -1
  135. package/lib-es/newops/policy.d.ts.map +1 -1
  136. package/lib-es/newops/policy.js +12 -14
  137. package/lib-es/newops/policy.js.map +1 -1
  138. package/lib-es/newops/psbtExtractor.js +7 -7
  139. package/lib-es/newops/psbtExtractor.js.map +1 -1
  140. package/lib-es/newops/psbtFinalizer.js +19 -19
  141. package/lib-es/newops/psbtFinalizer.js.map +1 -1
  142. package/lib-es/newops/psbtv2.d.ts +1 -1
  143. package/lib-es/newops/psbtv2.d.ts.map +1 -1
  144. package/lib-es/newops/psbtv2.js +225 -286
  145. package/lib-es/newops/psbtv2.js.map +1 -1
  146. package/lib-es/serializeTransaction.js +11 -13
  147. package/lib-es/serializeTransaction.js.map +1 -1
  148. package/lib-es/shouldUseTrustedInputForSegwit.js +1 -2
  149. package/lib-es/shouldUseTrustedInputForSegwit.js.map +1 -1
  150. package/lib-es/signMessage.js +44 -96
  151. package/lib-es/signMessage.js.map +1 -1
  152. package/lib-es/signP2SHTransaction.d.ts +1 -1
  153. package/lib-es/signP2SHTransaction.d.ts.map +1 -1
  154. package/lib-es/signP2SHTransaction.js +84 -180
  155. package/lib-es/signP2SHTransaction.js.map +1 -1
  156. package/lib-es/signTransaction.js +6 -7
  157. package/lib-es/signTransaction.js.map +1 -1
  158. package/lib-es/splitTransaction.js +46 -50
  159. package/lib-es/splitTransaction.js.map +1 -1
  160. package/lib-es/startUntrustedHashTransactionInput.js +62 -164
  161. package/lib-es/startUntrustedHashTransactionInput.js.map +1 -1
  162. package/lib-es/varint.js +9 -9
  163. package/lib-es/varint.js.map +1 -1
  164. package/package.json +5 -6
  165. package/src/Btc.ts +28 -5
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -19,189 +8,104 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
19
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
20
9
  });
21
10
  };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __values = (this && this.__values) || function(o) {
50
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
51
- if (m) return m.call(o);
52
- if (o && typeof o.length === "number") return {
53
- next: function () {
54
- if (o && i >= o.length) o = void 0;
55
- return { value: o && o[i++], done: !o };
56
- }
57
- };
58
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
59
- };
60
- exports.__esModule = true;
11
+ Object.defineProperty(exports, "__esModule", { value: true });
61
12
  exports.signP2SHTransaction = void 0;
62
- var getTrustedInput_1 = require("./getTrustedInput");
63
- var startUntrustedHashTransactionInput_1 = require("./startUntrustedHashTransactionInput");
64
- var getTrustedInputBIP143_1 = require("./getTrustedInputBIP143");
65
- var signTransaction_1 = require("./signTransaction");
66
- var finalizeInput_1 = require("./finalizeInput");
67
- var constants_1 = require("./constants");
68
- var defaultArg = {
13
+ const getTrustedInput_1 = require("./getTrustedInput");
14
+ const startUntrustedHashTransactionInput_1 = require("./startUntrustedHashTransactionInput");
15
+ const getTrustedInputBIP143_1 = require("./getTrustedInputBIP143");
16
+ const signTransaction_1 = require("./signTransaction");
17
+ const finalizeInput_1 = require("./finalizeInput");
18
+ const constants_1 = require("./constants");
19
+ const defaultArg = {
69
20
  lockTime: constants_1.DEFAULT_LOCKTIME,
70
21
  sigHashType: constants_1.SIGHASH_ALL,
71
22
  segwit: false,
72
- transactionVersion: constants_1.DEFAULT_VERSION
23
+ transactionVersion: constants_1.DEFAULT_VERSION,
73
24
  };
74
25
  function signP2SHTransaction(transport, arg) {
75
- return __awaiter(this, void 0, void 0, function () {
76
- var _a, inputs, associatedKeysets, outputScriptHex, lockTime, sigHashType, segwit, transactionVersion, nullScript, nullPrevout, defaultVersion, trustedInputs, regularOutputs, signatures, firstRun, resuming, targetTransaction, getTrustedInputCall, outputScript, inputs_1, inputs_1_1, input, trustedInput, sequence, outputs, index, e_1_1, i, sequence, i, input, script, pseudoTX, pseudoTrustedInputs, signature;
77
- var e_1, _b;
78
- return __generator(this, function (_c) {
79
- switch (_c.label) {
80
- case 0:
81
- _a = __assign(__assign({}, defaultArg), arg), inputs = _a.inputs, associatedKeysets = _a.associatedKeysets, outputScriptHex = _a.outputScriptHex, lockTime = _a.lockTime, sigHashType = _a.sigHashType, segwit = _a.segwit, transactionVersion = _a.transactionVersion;
82
- nullScript = Buffer.alloc(0);
83
- nullPrevout = Buffer.alloc(0);
84
- defaultVersion = Buffer.alloc(4);
85
- defaultVersion.writeUInt32LE(transactionVersion, 0);
86
- trustedInputs = [];
87
- regularOutputs = [];
88
- signatures = [];
89
- firstRun = true;
90
- resuming = false;
91
- targetTransaction = {
92
- inputs: [],
93
- version: defaultVersion
94
- };
95
- getTrustedInputCall = segwit ? getTrustedInputBIP143_1.getTrustedInputBIP143 : getTrustedInput_1.getTrustedInput;
96
- outputScript = Buffer.from(outputScriptHex, "hex");
97
- _c.label = 1;
98
- case 1:
99
- _c.trys.push([1, 7, 8, 9]);
100
- inputs_1 = __values(inputs), inputs_1_1 = inputs_1.next();
101
- _c.label = 2;
102
- case 2:
103
- if (!!inputs_1_1.done) return [3 /*break*/, 6];
104
- input = inputs_1_1.value;
105
- if (!!resuming) return [3 /*break*/, 4];
106
- return [4 /*yield*/, getTrustedInputCall(transport, input[1], input[0])];
107
- case 3:
108
- trustedInput = _c.sent();
109
- sequence = Buffer.alloc(4);
110
- sequence.writeUInt32LE(input.length >= 4 && typeof input[3] === "number"
111
- ? input[3]
112
- : constants_1.DEFAULT_SEQUENCE, 0);
113
- trustedInputs.push({
114
- trustedInput: false,
115
- value: segwit
116
- ? Buffer.from(trustedInput, "hex")
117
- : Buffer.from(trustedInput, "hex").slice(4, 4 + 0x24),
118
- sequence: sequence
119
- });
120
- _c.label = 4;
121
- case 4:
122
- outputs = input[0].outputs;
123
- index = input[1];
124
- if (outputs && index <= outputs.length - 1) {
125
- regularOutputs.push(outputs[index]);
126
- }
127
- _c.label = 5;
128
- case 5:
129
- inputs_1_1 = inputs_1.next();
130
- return [3 /*break*/, 2];
131
- case 6: return [3 /*break*/, 9];
132
- case 7:
133
- e_1_1 = _c.sent();
134
- e_1 = { error: e_1_1 };
135
- return [3 /*break*/, 9];
136
- case 8:
137
- try {
138
- if (inputs_1_1 && !inputs_1_1.done && (_b = inputs_1["return"])) _b.call(inputs_1);
139
- }
140
- finally { if (e_1) throw e_1.error; }
141
- return [7 /*endfinally*/];
142
- case 9:
143
- // Pre-build the target transaction
144
- for (i = 0; i < inputs.length; i++) {
145
- sequence = Buffer.alloc(4);
146
- sequence.writeUInt32LE(inputs[i].length >= 4 && typeof inputs[i][3] === "number"
147
- ? inputs[i][3]
148
- : constants_1.DEFAULT_SEQUENCE, 0);
149
- targetTransaction.inputs.push({
150
- script: nullScript,
151
- prevout: nullPrevout,
152
- sequence: sequence
153
- });
154
- }
155
- if (!segwit) return [3 /*break*/, 12];
156
- return [4 /*yield*/, (0, startUntrustedHashTransactionInput_1.startUntrustedHashTransactionInput)(transport, true, targetTransaction, trustedInputs, true)];
157
- case 10:
158
- _c.sent();
159
- return [4 /*yield*/, (0, finalizeInput_1.hashOutputFull)(transport, outputScript)];
160
- case 11:
161
- _c.sent();
162
- _c.label = 12;
163
- case 12:
164
- i = 0;
165
- _c.label = 13;
166
- case 13:
167
- if (!(i < inputs.length)) return [3 /*break*/, 19];
168
- input = inputs[i];
169
- script = inputs[i].length >= 3 && typeof input[2] === "string"
170
- ? Buffer.from(input[2], "hex")
171
- : regularOutputs[i].script;
172
- pseudoTX = Object.assign({}, targetTransaction);
173
- pseudoTrustedInputs = segwit ? [trustedInputs[i]] : trustedInputs;
174
- if (segwit) {
175
- pseudoTX.inputs = [__assign(__assign({}, pseudoTX.inputs[i]), { script: script })];
176
- }
177
- else {
178
- pseudoTX.inputs[i].script = script;
179
- }
180
- return [4 /*yield*/, (0, startUntrustedHashTransactionInput_1.startUntrustedHashTransactionInput)(transport, !segwit && firstRun, pseudoTX, pseudoTrustedInputs, segwit)];
181
- case 14:
182
- _c.sent();
183
- if (!!segwit) return [3 /*break*/, 16];
184
- return [4 /*yield*/, (0, finalizeInput_1.hashOutputFull)(transport, outputScript)];
185
- case 15:
186
- _c.sent();
187
- _c.label = 16;
188
- case 16: return [4 /*yield*/, (0, signTransaction_1.signTransaction)(transport, associatedKeysets[i], lockTime, sigHashType)];
189
- case 17:
190
- signature = _c.sent();
191
- signatures.push(segwit
192
- ? signature.toString("hex")
193
- : signature.slice(0, signature.length - 1).toString("hex"));
194
- targetTransaction.inputs[i].script = nullScript;
195
- if (firstRun) {
196
- firstRun = false;
197
- }
198
- _c.label = 18;
199
- case 18:
200
- i++;
201
- return [3 /*break*/, 13];
202
- case 19: return [2 /*return*/, signatures];
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ const { inputs, associatedKeysets, outputScriptHex, lockTime, sigHashType, segwit, transactionVersion, } = Object.assign(Object.assign({}, defaultArg), arg);
28
+ // Inputs are provided as arrays of [transaction, output_index, redeem script, optional sequence]
29
+ // associatedKeysets are provided as arrays of [path]
30
+ const nullScript = Buffer.alloc(0);
31
+ const nullPrevout = Buffer.alloc(0);
32
+ const defaultVersion = Buffer.alloc(4);
33
+ defaultVersion.writeUInt32LE(transactionVersion, 0);
34
+ const trustedInputs = [];
35
+ const regularOutputs = [];
36
+ const signatures = [];
37
+ let firstRun = true;
38
+ const resuming = false;
39
+ const targetTransaction = {
40
+ inputs: [],
41
+ version: defaultVersion,
42
+ };
43
+ const getTrustedInputCall = segwit ? getTrustedInputBIP143_1.getTrustedInputBIP143 : getTrustedInput_1.getTrustedInput;
44
+ const outputScript = Buffer.from(outputScriptHex, "hex");
45
+ for (const input of inputs) {
46
+ if (!resuming) {
47
+ const trustedInput = yield getTrustedInputCall(transport, input[1], input[0]);
48
+ const sequence = Buffer.alloc(4);
49
+ sequence.writeUInt32LE(input.length >= 4 && typeof input[3] === "number"
50
+ ? input[3]
51
+ : constants_1.DEFAULT_SEQUENCE, 0);
52
+ trustedInputs.push({
53
+ trustedInput: false,
54
+ value: segwit
55
+ ? Buffer.from(trustedInput, "hex")
56
+ : Buffer.from(trustedInput, "hex").slice(4, 4 + 0x24),
57
+ sequence,
58
+ });
203
59
  }
204
- });
60
+ const { outputs } = input[0];
61
+ const index = input[1];
62
+ if (outputs && index <= outputs.length - 1) {
63
+ regularOutputs.push(outputs[index]);
64
+ }
65
+ }
66
+ // Pre-build the target transaction
67
+ for (let i = 0; i < inputs.length; i++) {
68
+ const sequence = Buffer.alloc(4);
69
+ sequence.writeUInt32LE(inputs[i].length >= 4 && typeof inputs[i][3] === "number"
70
+ ? inputs[i][3]
71
+ : constants_1.DEFAULT_SEQUENCE, 0);
72
+ targetTransaction.inputs.push({
73
+ script: nullScript,
74
+ prevout: nullPrevout,
75
+ sequence,
76
+ });
77
+ }
78
+ if (segwit) {
79
+ yield (0, startUntrustedHashTransactionInput_1.startUntrustedHashTransactionInput)(transport, true, targetTransaction, trustedInputs, true);
80
+ yield (0, finalizeInput_1.hashOutputFull)(transport, outputScript);
81
+ }
82
+ for (let i = 0; i < inputs.length; i++) {
83
+ const input = inputs[i];
84
+ const script = inputs[i].length >= 3 && typeof input[2] === "string"
85
+ ? Buffer.from(input[2], "hex")
86
+ : regularOutputs[i].script;
87
+ const pseudoTX = Object.assign({}, targetTransaction);
88
+ const pseudoTrustedInputs = segwit ? [trustedInputs[i]] : trustedInputs;
89
+ if (segwit) {
90
+ pseudoTX.inputs = [Object.assign(Object.assign({}, pseudoTX.inputs[i]), { script })];
91
+ }
92
+ else {
93
+ pseudoTX.inputs[i].script = script;
94
+ }
95
+ yield (0, startUntrustedHashTransactionInput_1.startUntrustedHashTransactionInput)(transport, !segwit && firstRun, pseudoTX, pseudoTrustedInputs, segwit);
96
+ if (!segwit) {
97
+ yield (0, finalizeInput_1.hashOutputFull)(transport, outputScript);
98
+ }
99
+ const signature = yield (0, signTransaction_1.signTransaction)(transport, associatedKeysets[i], lockTime, sigHashType);
100
+ signatures.push(segwit
101
+ ? signature.toString("hex")
102
+ : signature.slice(0, signature.length - 1).toString("hex"));
103
+ targetTransaction.inputs[i].script = nullScript;
104
+ if (firstRun) {
105
+ firstRun = false;
106
+ }
107
+ }
108
+ return signatures;
205
109
  });
206
110
  }
207
111
  exports.signP2SHTransaction = signP2SHTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"signP2SHTransaction.js","sourceRoot":"","sources":["../src/signP2SHTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signP2SHTransaction.js","sourceRoot":"","sources":["../src/signP2SHTransaction.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
- exports.__esModule = true;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.signTransaction = void 0;
4
- var bip32_1 = require("./bip32");
5
- function signTransaction(transport, path, lockTime, sigHashType, expiryHeight, additionals) {
6
- if (additionals === void 0) { additionals = []; }
7
- var isDecred = additionals.includes("decred");
8
- var pathsBuffer = (0, bip32_1.bip32asBuffer)(path);
9
- var lockTimeBuffer = Buffer.alloc(4);
4
+ const bip32_1 = require("./bip32");
5
+ function signTransaction(transport, path, lockTime, sigHashType, expiryHeight, additionals = []) {
6
+ const isDecred = additionals.includes("decred");
7
+ const pathsBuffer = (0, bip32_1.bip32asBuffer)(path);
8
+ const lockTimeBuffer = Buffer.alloc(4);
10
9
  lockTimeBuffer.writeUInt32BE(lockTime, 0);
11
- var buffer = isDecred
10
+ let buffer = isDecred
12
11
  ? Buffer.concat([
13
12
  pathsBuffer,
14
13
  lockTimeBuffer,
@@ -24,7 +23,7 @@ function signTransaction(transport, path, lockTime, sigHashType, expiryHeight, a
24
23
  if (expiryHeight && !isDecred) {
25
24
  buffer = Buffer.concat([buffer, expiryHeight]);
26
25
  }
27
- return transport.send(0xe0, 0x48, 0x00, 0x00, buffer).then(function (result) {
26
+ return transport.send(0xe0, 0x48, 0x00, 0x00, buffer).then((result) => {
28
27
  if (result.length > 0) {
29
28
  result[0] = 0x30;
30
29
  return result.slice(0, result.length - 2);
@@ -1 +1 @@
1
- {"version":3,"file":"signTransaction.js","sourceRoot":"","sources":["../src/signTransaction.ts"],"names":[],"mappings":";;;AACA,iCAAwC;AACxC,SAAgB,eAAe,CAC7B,SAAoB,EACpB,IAAY,EACZ,QAAgB,EAChB,WAAmB,EACnB,YAAqB,EACrB,WAA+B;IAA/B,4BAAA,EAAA,gBAA+B;IAE/B,IAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAM,WAAW,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC;IACxC,IAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,cAAc,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAG,QAAQ;QACnB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACZ,WAAW;YACX,cAAc;YACd,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;SAC3B,CAAC;QACJ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACZ,WAAW;YACX,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;YACnB,cAAc;YACd,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;SAC3B,CAAC,CAAC;IAEP,IAAI,YAAY,IAAI,CAAC,QAAQ,EAAE;QAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;KAChD;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,MAAM;QAChE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC3C;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAtCD,0CAsCC"}
1
+ {"version":3,"file":"signTransaction.js","sourceRoot":"","sources":["../src/signTransaction.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AACxC,SAAgB,eAAe,CAC7B,SAAoB,EACpB,IAAY,EACZ,QAAgB,EAChB,WAAmB,EACnB,YAAqB,EACrB,cAA6B,EAAE;IAE/B,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,cAAc,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAG,QAAQ;QACnB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACZ,WAAW;YACX,cAAc;YACd,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;SAC3B,CAAC;QACJ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACZ,WAAW;YACX,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;YACnB,cAAc;YACd,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;SAC3B,CAAC,CAAC;IAEP,IAAI,YAAY,IAAI,CAAC,QAAQ,EAAE;QAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;KAChD;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACpE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC3C;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAtCD,0CAsCC"}
@@ -1,32 +1,28 @@
1
1
  "use strict";
2
- exports.__esModule = true;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.splitTransaction = void 0;
4
- var logs_1 = require("@ledgerhq/logs");
5
- var varint_1 = require("./varint");
6
- var debug_1 = require("./debug");
7
- function splitTransaction(transactionHex, isSegwitSupported, hasTimestamp, hasExtraData, additionals) {
8
- if (isSegwitSupported === void 0) { isSegwitSupported = false; }
9
- if (hasTimestamp === void 0) { hasTimestamp = false; }
10
- if (hasExtraData === void 0) { hasExtraData = false; }
11
- if (additionals === void 0) { additionals = []; }
12
- var inputs = [];
13
- var outputs = [];
14
- var witness = false;
15
- var offset = 0;
16
- var timestamp = Buffer.alloc(0);
17
- var nExpiryHeight = Buffer.alloc(0);
18
- var nVersionGroupId = Buffer.alloc(0);
19
- var extraData = Buffer.alloc(0);
20
- var witnessScript, locktime;
21
- var isDecred = additionals.includes("decred");
22
- var isZencash = additionals.includes("zencash");
23
- var isZcash = additionals.includes("zcash");
24
- var transaction = Buffer.from(transactionHex, "hex");
25
- var version = transaction.slice(offset, offset + 4);
26
- var overwinter = version.equals(Buffer.from([0x03, 0x00, 0x00, 0x80])) ||
4
+ const logs_1 = require("@ledgerhq/logs");
5
+ const varint_1 = require("./varint");
6
+ const debug_1 = require("./debug");
7
+ function splitTransaction(transactionHex, isSegwitSupported = false, hasTimestamp = false, hasExtraData = false, additionals = []) {
8
+ const inputs = [];
9
+ const outputs = [];
10
+ let witness = false;
11
+ let offset = 0;
12
+ let timestamp = Buffer.alloc(0);
13
+ let nExpiryHeight = Buffer.alloc(0);
14
+ let nVersionGroupId = Buffer.alloc(0);
15
+ let extraData = Buffer.alloc(0);
16
+ let witnessScript, locktime;
17
+ const isDecred = additionals.includes("decred");
18
+ const isZencash = additionals.includes("zencash");
19
+ const isZcash = additionals.includes("zcash");
20
+ const transaction = Buffer.from(transactionHex, "hex");
21
+ const version = transaction.slice(offset, offset + 4);
22
+ const overwinter = version.equals(Buffer.from([0x03, 0x00, 0x00, 0x80])) ||
27
23
  version.equals(Buffer.from([0x04, 0x00, 0x00, 0x80])) ||
28
24
  version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));
29
- var isZcashv5 = isZcash && version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));
25
+ const isZcashv5 = isZcash && version.equals(Buffer.from([0x05, 0x00, 0x00, 0x80]));
30
26
  offset += 4;
31
27
  if (!hasTimestamp &&
32
28
  isSegwitSupported &&
@@ -49,14 +45,14 @@ function splitTransaction(transactionHex, isSegwitSupported, hasTimestamp, hasEx
49
45
  nExpiryHeight = transaction.slice(offset + 8, offset + 12);
50
46
  offset += 12;
51
47
  }
52
- var varint = (0, varint_1.getVarint)(transaction, offset);
53
- var numberInputs = varint[0];
48
+ let varint = (0, varint_1.getVarint)(transaction, offset);
49
+ const numberInputs = varint[0];
54
50
  offset += varint[1];
55
- for (var i = 0; i < numberInputs; i++) {
56
- var prevout = transaction.slice(offset, offset + 36);
51
+ for (let i = 0; i < numberInputs; i++) {
52
+ const prevout = transaction.slice(offset, offset + 36);
57
53
  offset += 36;
58
- var script = Buffer.alloc(0);
59
- var tree = Buffer.alloc(0);
54
+ let script = Buffer.alloc(0);
55
+ let tree = Buffer.alloc(0);
60
56
  //No script for decred, it has a witness
61
57
  if (!isDecred) {
62
58
  varint = (0, varint_1.getVarint)(transaction, offset);
@@ -69,20 +65,20 @@ function splitTransaction(transactionHex, isSegwitSupported, hasTimestamp, hasEx
69
65
  tree = transaction.slice(offset, offset + 1);
70
66
  offset += 1;
71
67
  }
72
- var sequence = transaction.slice(offset, offset + 4);
68
+ const sequence = transaction.slice(offset, offset + 4);
73
69
  offset += 4;
74
70
  inputs.push({
75
- prevout: prevout,
76
- script: script,
77
- sequence: sequence,
78
- tree: tree
71
+ prevout,
72
+ script,
73
+ sequence,
74
+ tree,
79
75
  });
80
76
  }
81
77
  varint = (0, varint_1.getVarint)(transaction, offset);
82
- var numberOutputs = varint[0];
78
+ const numberOutputs = varint[0];
83
79
  offset += varint[1];
84
- for (var i = 0; i < numberOutputs; i++) {
85
- var amount = transaction.slice(offset, offset + 8);
80
+ for (let i = 0; i < numberOutputs; i++) {
81
+ const amount = transaction.slice(offset, offset + 8);
86
82
  offset += 8;
87
83
  if (isDecred) {
88
84
  //Script version
@@ -90,11 +86,11 @@ function splitTransaction(transactionHex, isSegwitSupported, hasTimestamp, hasEx
90
86
  }
91
87
  varint = (0, varint_1.getVarint)(transaction, offset);
92
88
  offset += varint[1];
93
- var script = transaction.slice(offset, offset + varint[0]);
89
+ const script = transaction.slice(offset, offset + varint[0]);
94
90
  offset += varint[0];
95
91
  outputs.push({
96
- amount: amount,
97
- script: script
92
+ amount,
93
+ script,
98
94
  });
99
95
  }
100
96
  if (witness) {
@@ -119,7 +115,7 @@ function splitTransaction(transactionHex, isSegwitSupported, hasTimestamp, hasEx
119
115
  if (varint[0] !== numberInputs) {
120
116
  throw new Error("splitTransaction: incoherent number of witnesses");
121
117
  }
122
- for (var i = 0; i < numberInputs; i++) {
118
+ for (let i = 0; i < numberInputs; i++) {
123
119
  //amount
124
120
  offset += 8;
125
121
  //block height
@@ -129,23 +125,23 @@ function splitTransaction(transactionHex, isSegwitSupported, hasTimestamp, hasEx
129
125
  //Script size
130
126
  varint = (0, varint_1.getVarint)(transaction, offset);
131
127
  offset += varint[1];
132
- var script = transaction.slice(offset, offset + varint[0]);
128
+ const script = transaction.slice(offset, offset + varint[0]);
133
129
  offset += varint[0];
134
130
  inputs[i].script = script;
135
131
  }
136
132
  }
137
- var t = {
138
- version: version,
139
- inputs: inputs,
140
- outputs: outputs,
141
- locktime: locktime,
133
+ const t = {
134
+ version,
135
+ inputs,
136
+ outputs,
137
+ locktime,
142
138
  witness: witnessScript,
143
- timestamp: timestamp,
144
- nVersionGroupId: nVersionGroupId,
145
- nExpiryHeight: nExpiryHeight,
146
- extraData: extraData
139
+ timestamp,
140
+ nVersionGroupId,
141
+ nExpiryHeight,
142
+ extraData,
147
143
  };
148
- (0, logs_1.log)("btc", "splitTransaction ".concat(transactionHex, ":\n").concat((0, debug_1.formatTransactionDebug)(t)));
144
+ (0, logs_1.log)("btc", `splitTransaction ${transactionHex}:\n${(0, debug_1.formatTransactionDebug)(t)}`);
149
145
  return t;
150
146
  }
151
147
  exports.splitTransaction = splitTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"splitTransaction.js","sourceRoot":"","sources":["../src/splitTransaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"splitTransaction.js","sourceRoot":"","sources":["../src/splitTransaction.ts"],"names":[],"mappings":"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"}