@ledgerhq/hw-app-btc 6.21.0 → 6.24.2-monorepo.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 (290) hide show
  1. package/.turbo/turbo-build.log +1 -0
  2. package/CHANGELOG.md +10 -0
  3. package/README.md +4 -4
  4. package/jest.config.ts +6 -0
  5. package/package.json +15 -6
  6. package/src/bip32.ts +5 -3
  7. package/src/getTrustedInput.ts +2 -8
  8. package/src/newops/appClient.ts +8 -4
  9. package/src/newops/psbtv2.ts +13 -9
  10. package/LICENSE +0 -202
  11. package/lib/Btc.d.ts +0 -149
  12. package/lib/Btc.d.ts.map +0 -1
  13. package/lib/Btc.js +0 -353
  14. package/lib/Btc.js.map +0 -1
  15. package/lib/BtcNew.d.ts +0 -122
  16. package/lib/BtcNew.d.ts.map +0 -1
  17. package/lib/BtcNew.js +0 -451
  18. package/lib/BtcNew.js.map +0 -1
  19. package/lib/BtcOld.d.ts +0 -120
  20. package/lib/BtcOld.d.ts.map +0 -1
  21. package/lib/BtcOld.js +0 -263
  22. package/lib/BtcOld.js.map +0 -1
  23. package/lib/bip32.d.ts +0 -13
  24. package/lib/bip32.d.ts.map +0 -1
  25. package/lib/bip32.js +0 -57
  26. package/lib/bip32.js.map +0 -1
  27. package/lib/buffertools.d.ts +0 -30
  28. package/lib/buffertools.d.ts.map +0 -1
  29. package/lib/buffertools.js +0 -132
  30. package/lib/buffertools.js.map +0 -1
  31. package/lib/compressPublicKey.d.ts +0 -3
  32. package/lib/compressPublicKey.d.ts.map +0 -1
  33. package/lib/compressPublicKey.js +0 -11
  34. package/lib/compressPublicKey.js.map +0 -1
  35. package/lib/constants.d.ts +0 -13
  36. package/lib/constants.d.ts.map +0 -1
  37. package/lib/constants.js +0 -17
  38. package/lib/constants.js.map +0 -1
  39. package/lib/createTransaction.d.ts +0 -35
  40. package/lib/createTransaction.d.ts.map +0 -1
  41. package/lib/createTransaction.js +0 -411
  42. package/lib/createTransaction.js.map +0 -1
  43. package/lib/debug.d.ts +0 -4
  44. package/lib/debug.d.ts.map +0 -1
  45. package/lib/debug.js +0 -45
  46. package/lib/debug.js.map +0 -1
  47. package/lib/finalizeInput.d.ts +0 -5
  48. package/lib/finalizeInput.d.ts.map +0 -1
  49. package/lib/finalizeInput.js +0 -81
  50. package/lib/finalizeInput.js.map +0 -1
  51. package/lib/getAppAndVersion.d.ts +0 -9
  52. package/lib/getAppAndVersion.d.ts.map +0 -1
  53. package/lib/getAppAndVersion.js +0 -69
  54. package/lib/getAppAndVersion.js.map +0 -1
  55. package/lib/getTrustedInput.d.ts +0 -6
  56. package/lib/getTrustedInput.d.ts.map +0 -1
  57. package/lib/getTrustedInput.js +0 -275
  58. package/lib/getTrustedInput.js.map +0 -1
  59. package/lib/getTrustedInputBIP143.d.ts +0 -4
  60. package/lib/getTrustedInputBIP143.d.ts.map +0 -1
  61. package/lib/getTrustedInputBIP143.js +0 -34
  62. package/lib/getTrustedInputBIP143.js.map +0 -1
  63. package/lib/getWalletPublicKey.d.ts +0 -15
  64. package/lib/getWalletPublicKey.d.ts.map +0 -1
  65. package/lib/getWalletPublicKey.js +0 -93
  66. package/lib/getWalletPublicKey.js.map +0 -1
  67. package/lib/hashPublicKey.d.ts +0 -3
  68. package/lib/hashPublicKey.d.ts.map +0 -1
  69. package/lib/hashPublicKey.js +0 -13
  70. package/lib/hashPublicKey.js.map +0 -1
  71. package/lib/index.d.ts +0 -3
  72. package/lib/index.d.ts.map +0 -1
  73. package/lib/index.js +0 -8
  74. package/lib/index.js.map +0 -1
  75. package/lib/newops/accounttype.d.ts +0 -110
  76. package/lib/newops/accounttype.d.ts.map +0 -1
  77. package/lib/newops/accounttype.js +0 -236
  78. package/lib/newops/accounttype.js.map +0 -1
  79. package/lib/newops/appClient.d.ts +0 -18
  80. package/lib/newops/appClient.d.ts.map +0 -1
  81. package/lib/newops/appClient.js +0 -246
  82. package/lib/newops/appClient.js.map +0 -1
  83. package/lib/newops/clientCommands.d.ts +0 -77
  84. package/lib/newops/clientCommands.d.ts.map +0 -1
  85. package/lib/newops/clientCommands.js +0 -353
  86. package/lib/newops/clientCommands.js.map +0 -1
  87. package/lib/newops/merkelizedPsbt.d.ts +0 -26
  88. package/lib/newops/merkelizedPsbt.d.ts.map +0 -1
  89. package/lib/newops/merkelizedPsbt.js +0 -102
  90. package/lib/newops/merkelizedPsbt.js.map +0 -1
  91. package/lib/newops/merkle.d.ts +0 -34
  92. package/lib/newops/merkle.d.ts.map +0 -1
  93. package/lib/newops/merkle.js +0 -138
  94. package/lib/newops/merkle.js.map +0 -1
  95. package/lib/newops/merkleMap.d.ts +0 -25
  96. package/lib/newops/merkleMap.d.ts.map +0 -1
  97. package/lib/newops/merkleMap.js +0 -47
  98. package/lib/newops/merkleMap.js.map +0 -1
  99. package/lib/newops/policy.d.ts +0 -22
  100. package/lib/newops/policy.d.ts.map +0 -1
  101. package/lib/newops/policy.js +0 -48
  102. package/lib/newops/policy.js.map +0 -1
  103. package/lib/newops/psbtExtractor.d.ts +0 -10
  104. package/lib/newops/psbtExtractor.d.ts.map +0 -1
  105. package/lib/newops/psbtExtractor.js +0 -42
  106. package/lib/newops/psbtExtractor.js.map +0 -1
  107. package/lib/newops/psbtFinalizer.d.ts +0 -17
  108. package/lib/newops/psbtFinalizer.d.ts.map +0 -1
  109. package/lib/newops/psbtFinalizer.js +0 -135
  110. package/lib/newops/psbtFinalizer.js.map +0 -1
  111. package/lib/newops/psbtv2.d.ts +0 -149
  112. package/lib/newops/psbtv2.d.ts.map +0 -1
  113. package/lib/newops/psbtv2.js +0 -506
  114. package/lib/newops/psbtv2.js.map +0 -1
  115. package/lib/serializeTransaction.d.ts +0 -10
  116. package/lib/serializeTransaction.d.ts.map +0 -1
  117. package/lib/serializeTransaction.js +0 -72
  118. package/lib/serializeTransaction.js.map +0 -1
  119. package/lib/shouldUseTrustedInputForSegwit.d.ts +0 -5
  120. package/lib/shouldUseTrustedInputForSegwit.d.ts.map +0 -1
  121. package/lib/shouldUseTrustedInputForSegwit.js +0 -17
  122. package/lib/shouldUseTrustedInputForSegwit.js.map +0 -1
  123. package/lib/signMessage.d.ts +0 -10
  124. package/lib/signMessage.d.ts.map +0 -1
  125. package/lib/signMessage.js +0 -118
  126. package/lib/signMessage.js.map +0 -1
  127. package/lib/signP2SHTransaction.d.ts +0 -21
  128. package/lib/signP2SHTransaction.d.ts.map +0 -1
  129. package/lib/signP2SHTransaction.js +0 -208
  130. package/lib/signP2SHTransaction.js.map +0 -1
  131. package/lib/signTransaction.d.ts +0 -4
  132. package/lib/signTransaction.d.ts.map +0 -1
  133. package/lib/signTransaction.js +0 -36
  134. package/lib/signTransaction.js.map +0 -1
  135. package/lib/splitTransaction.d.ts +0 -3
  136. package/lib/splitTransaction.d.ts.map +0 -1
  137. package/lib/splitTransaction.js +0 -142
  138. package/lib/splitTransaction.js.map +0 -1
  139. package/lib/startUntrustedHashTransactionInput.d.ts +0 -9
  140. package/lib/startUntrustedHashTransactionInput.d.ts.map +0 -1
  141. package/lib/startUntrustedHashTransactionInput.js +0 -197
  142. package/lib/startUntrustedHashTransactionInput.js.map +0 -1
  143. package/lib/types.d.ts +0 -34
  144. package/lib/types.d.ts.map +0 -1
  145. package/lib/types.js +0 -3
  146. package/lib/types.js.map +0 -1
  147. package/lib/varint.d.ts +0 -4
  148. package/lib/varint.d.ts.map +0 -1
  149. package/lib/varint.js +0 -45
  150. package/lib/varint.js.map +0 -1
  151. package/lib-es/Btc.d.ts +0 -149
  152. package/lib-es/Btc.d.ts.map +0 -1
  153. package/lib-es/Btc.js +0 -329
  154. package/lib-es/Btc.js.map +0 -1
  155. package/lib-es/BtcNew.d.ts +0 -122
  156. package/lib-es/BtcNew.d.ts.map +0 -1
  157. package/lib-es/BtcNew.js +0 -444
  158. package/lib-es/BtcNew.js.map +0 -1
  159. package/lib-es/BtcOld.d.ts +0 -120
  160. package/lib-es/BtcOld.d.ts.map +0 -1
  161. package/lib-es/BtcOld.js +0 -258
  162. package/lib-es/BtcOld.js.map +0 -1
  163. package/lib-es/bip32.d.ts +0 -13
  164. package/lib-es/bip32.d.ts.map +0 -1
  165. package/lib-es/bip32.js +0 -44
  166. package/lib-es/bip32.js.map +0 -1
  167. package/lib-es/buffertools.d.ts +0 -30
  168. package/lib-es/buffertools.d.ts.map +0 -1
  169. package/lib-es/buffertools.js +0 -124
  170. package/lib-es/buffertools.js.map +0 -1
  171. package/lib-es/compressPublicKey.d.ts +0 -3
  172. package/lib-es/compressPublicKey.d.ts.map +0 -1
  173. package/lib-es/compressPublicKey.js +0 -7
  174. package/lib-es/compressPublicKey.js.map +0 -1
  175. package/lib-es/constants.d.ts +0 -13
  176. package/lib-es/constants.d.ts.map +0 -1
  177. package/lib-es/constants.js +0 -14
  178. package/lib-es/constants.js.map +0 -1
  179. package/lib-es/createTransaction.d.ts +0 -35
  180. package/lib-es/createTransaction.d.ts.map +0 -1
  181. package/lib-es/createTransaction.js +0 -407
  182. package/lib-es/createTransaction.js.map +0 -1
  183. package/lib-es/debug.d.ts +0 -4
  184. package/lib-es/debug.d.ts.map +0 -1
  185. package/lib-es/debug.js +0 -40
  186. package/lib-es/debug.js.map +0 -1
  187. package/lib-es/finalizeInput.d.ts +0 -5
  188. package/lib-es/finalizeInput.d.ts.map +0 -1
  189. package/lib-es/finalizeInput.js +0 -76
  190. package/lib-es/finalizeInput.js.map +0 -1
  191. package/lib-es/getAppAndVersion.d.ts +0 -9
  192. package/lib-es/getAppAndVersion.d.ts.map +0 -1
  193. package/lib-es/getAppAndVersion.js +0 -62
  194. package/lib-es/getAppAndVersion.js.map +0 -1
  195. package/lib-es/getTrustedInput.d.ts +0 -6
  196. package/lib-es/getTrustedInput.d.ts.map +0 -1
  197. package/lib-es/getTrustedInput.js +0 -267
  198. package/lib-es/getTrustedInput.js.map +0 -1
  199. package/lib-es/getTrustedInputBIP143.d.ts +0 -4
  200. package/lib-es/getTrustedInputBIP143.d.ts.map +0 -1
  201. package/lib-es/getTrustedInputBIP143.js +0 -27
  202. package/lib-es/getTrustedInputBIP143.js.map +0 -1
  203. package/lib-es/getWalletPublicKey.d.ts +0 -15
  204. package/lib-es/getWalletPublicKey.d.ts.map +0 -1
  205. package/lib-es/getWalletPublicKey.js +0 -89
  206. package/lib-es/getWalletPublicKey.js.map +0 -1
  207. package/lib-es/hashPublicKey.d.ts +0 -3
  208. package/lib-es/hashPublicKey.d.ts.map +0 -1
  209. package/lib-es/hashPublicKey.js +0 -6
  210. package/lib-es/hashPublicKey.js.map +0 -1
  211. package/lib-es/index.d.ts +0 -3
  212. package/lib-es/index.d.ts.map +0 -1
  213. package/lib-es/index.js +0 -3
  214. package/lib-es/index.js.map +0 -1
  215. package/lib-es/newops/accounttype.d.ts +0 -110
  216. package/lib-es/newops/accounttype.d.ts.map +0 -1
  217. package/lib-es/newops/accounttype.js +0 -233
  218. package/lib-es/newops/accounttype.js.map +0 -1
  219. package/lib-es/newops/appClient.d.ts +0 -18
  220. package/lib-es/newops/appClient.d.ts.map +0 -1
  221. package/lib-es/newops/appClient.js +0 -243
  222. package/lib-es/newops/appClient.js.map +0 -1
  223. package/lib-es/newops/clientCommands.d.ts +0 -77
  224. package/lib-es/newops/clientCommands.d.ts.map +0 -1
  225. package/lib-es/newops/clientCommands.js +0 -350
  226. package/lib-es/newops/clientCommands.js.map +0 -1
  227. package/lib-es/newops/merkelizedPsbt.d.ts +0 -26
  228. package/lib-es/newops/merkelizedPsbt.d.ts.map +0 -1
  229. package/lib-es/newops/merkelizedPsbt.js +0 -99
  230. package/lib-es/newops/merkelizedPsbt.js.map +0 -1
  231. package/lib-es/newops/merkle.d.ts +0 -34
  232. package/lib-es/newops/merkle.d.ts.map +0 -1
  233. package/lib-es/newops/merkle.js +0 -134
  234. package/lib-es/newops/merkle.js.map +0 -1
  235. package/lib-es/newops/merkleMap.d.ts +0 -25
  236. package/lib-es/newops/merkleMap.d.ts.map +0 -1
  237. package/lib-es/newops/merkleMap.js +0 -44
  238. package/lib-es/newops/merkleMap.js.map +0 -1
  239. package/lib-es/newops/policy.d.ts +0 -22
  240. package/lib-es/newops/policy.d.ts.map +0 -1
  241. package/lib-es/newops/policy.js +0 -44
  242. package/lib-es/newops/policy.js.map +0 -1
  243. package/lib-es/newops/psbtExtractor.d.ts +0 -10
  244. package/lib-es/newops/psbtExtractor.d.ts.map +0 -1
  245. package/lib-es/newops/psbtExtractor.js +0 -38
  246. package/lib-es/newops/psbtExtractor.js.map +0 -1
  247. package/lib-es/newops/psbtFinalizer.d.ts +0 -17
  248. package/lib-es/newops/psbtFinalizer.d.ts.map +0 -1
  249. package/lib-es/newops/psbtFinalizer.js +0 -131
  250. package/lib-es/newops/psbtFinalizer.js.map +0 -1
  251. package/lib-es/newops/psbtv2.d.ts +0 -149
  252. package/lib-es/newops/psbtv2.d.ts.map +0 -1
  253. package/lib-es/newops/psbtv2.js +0 -503
  254. package/lib-es/newops/psbtv2.js.map +0 -1
  255. package/lib-es/serializeTransaction.d.ts +0 -10
  256. package/lib-es/serializeTransaction.d.ts.map +0 -1
  257. package/lib-es/serializeTransaction.js +0 -67
  258. package/lib-es/serializeTransaction.js.map +0 -1
  259. package/lib-es/shouldUseTrustedInputForSegwit.d.ts +0 -5
  260. package/lib-es/shouldUseTrustedInputForSegwit.d.ts.map +0 -1
  261. package/lib-es/shouldUseTrustedInputForSegwit.js +0 -10
  262. package/lib-es/shouldUseTrustedInputForSegwit.js.map +0 -1
  263. package/lib-es/signMessage.d.ts +0 -10
  264. package/lib-es/signMessage.d.ts.map +0 -1
  265. package/lib-es/signMessage.js +0 -111
  266. package/lib-es/signMessage.js.map +0 -1
  267. package/lib-es/signP2SHTransaction.d.ts +0 -21
  268. package/lib-es/signP2SHTransaction.d.ts.map +0 -1
  269. package/lib-es/signP2SHTransaction.js +0 -204
  270. package/lib-es/signP2SHTransaction.js.map +0 -1
  271. package/lib-es/signTransaction.d.ts +0 -4
  272. package/lib-es/signTransaction.d.ts.map +0 -1
  273. package/lib-es/signTransaction.js +0 -32
  274. package/lib-es/signTransaction.js.map +0 -1
  275. package/lib-es/splitTransaction.d.ts +0 -3
  276. package/lib-es/splitTransaction.d.ts.map +0 -1
  277. package/lib-es/splitTransaction.js +0 -138
  278. package/lib-es/splitTransaction.js.map +0 -1
  279. package/lib-es/startUntrustedHashTransactionInput.d.ts +0 -9
  280. package/lib-es/startUntrustedHashTransactionInput.d.ts.map +0 -1
  281. package/lib-es/startUntrustedHashTransactionInput.js +0 -192
  282. package/lib-es/startUntrustedHashTransactionInput.js.map +0 -1
  283. package/lib-es/types.d.ts +0 -34
  284. package/lib-es/types.d.ts.map +0 -1
  285. package/lib-es/types.js +0 -2
  286. package/lib-es/types.js.map +0 -1
  287. package/lib-es/varint.d.ts +0 -4
  288. package/lib-es/varint.d.ts.map +0 -1
  289. package/lib-es/varint.js +0 -40
  290. package/lib-es/varint.js.map +0 -1
@@ -1,138 +0,0 @@
1
- "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
- if (ar || !(i in from)) {
21
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
- ar[i] = from[i];
23
- }
24
- }
25
- return to.concat(ar || Array.prototype.slice.call(from));
26
- };
27
- exports.__esModule = true;
28
- exports.hashLeaf = exports.Merkle = void 0;
29
- var bitcoinjs_lib_1 = require("bitcoinjs-lib");
30
- /**
31
- * This class implements the merkle tree used by Ledger Bitcoin app v2+,
32
- * which is documented at
33
- * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md
34
- */
35
- var Merkle = /** @class */ (function () {
36
- function Merkle(leaves, hasher) {
37
- if (hasher === void 0) { hasher = bitcoinjs_lib_1.crypto.sha256; }
38
- this.leaves = leaves;
39
- this.h = hasher;
40
- var nodes = this.calculateRoot(leaves);
41
- this.rootNode = nodes.root;
42
- this.leafNodes = nodes.leaves;
43
- }
44
- Merkle.prototype.getRoot = function () {
45
- return this.rootNode.hash;
46
- };
47
- Merkle.prototype.size = function () {
48
- return this.leaves.length;
49
- };
50
- Merkle.prototype.getLeaves = function () {
51
- return this.leaves;
52
- };
53
- Merkle.prototype.getLeafHash = function (index) {
54
- return this.leafNodes[index].hash;
55
- };
56
- Merkle.prototype.getProof = function (index) {
57
- if (index >= this.leaves.length)
58
- throw Error("Index out of bounds");
59
- return proveNode(this.leafNodes[index]);
60
- };
61
- Merkle.prototype.calculateRoot = function (leaves) {
62
- var n = leaves.length;
63
- if (n == 0) {
64
- return {
65
- root: new Node(undefined, undefined, Buffer.alloc(32, 0)),
66
- leaves: []
67
- };
68
- }
69
- if (n == 1) {
70
- var newNode = new Node(undefined, undefined, leaves[0]);
71
- return { root: newNode, leaves: [newNode] };
72
- }
73
- var leftCount = highestPowerOf2LessThan(n);
74
- var leftBranch = this.calculateRoot(leaves.slice(0, leftCount));
75
- var rightBranch = this.calculateRoot(leaves.slice(leftCount));
76
- var leftChild = leftBranch.root;
77
- var rightChild = rightBranch.root;
78
- var hash = this.hashNode(leftChild.hash, rightChild.hash);
79
- var node = new Node(leftChild, rightChild, hash);
80
- leftChild.parent = node;
81
- rightChild.parent = node;
82
- return { root: node, leaves: leftBranch.leaves.concat(rightBranch.leaves) };
83
- };
84
- Merkle.prototype.hashNode = function (left, right) {
85
- return this.h(Buffer.concat([Buffer.from([1]), left, right]));
86
- };
87
- return Merkle;
88
- }());
89
- exports.Merkle = Merkle;
90
- function hashLeaf(buf, hashFunction) {
91
- if (hashFunction === void 0) { hashFunction = bitcoinjs_lib_1.crypto.sha256; }
92
- return hashConcat(Buffer.from([0]), buf, hashFunction);
93
- }
94
- exports.hashLeaf = hashLeaf;
95
- function hashConcat(bufA, bufB, hashFunction) {
96
- return hashFunction(Buffer.concat([bufA, bufB]));
97
- }
98
- var Node = /** @class */ (function () {
99
- function Node(left, right, hash) {
100
- this.leftChild = left;
101
- this.rightChild = right;
102
- this.hash = hash;
103
- }
104
- Node.prototype.isLeaf = function () {
105
- return this.leftChild == undefined;
106
- };
107
- return Node;
108
- }());
109
- function proveNode(node) {
110
- if (!node.parent) {
111
- return [];
112
- }
113
- if (node.parent.leftChild == node) {
114
- if (!node.parent.rightChild) {
115
- throw new Error("Expected right child to exist");
116
- }
117
- return __spreadArray([node.parent.rightChild.hash], __read(proveNode(node.parent)), false);
118
- }
119
- else {
120
- if (!node.parent.leftChild) {
121
- throw new Error("Expected left child to exist");
122
- }
123
- return __spreadArray([node.parent.leftChild.hash], __read(proveNode(node.parent)), false);
124
- }
125
- }
126
- function highestPowerOf2LessThan(n) {
127
- if (n < 2) {
128
- throw Error("Expected n >= 2");
129
- }
130
- if (isPowerOf2(n)) {
131
- return n / 2;
132
- }
133
- return 1 << Math.floor(Math.log2(n));
134
- }
135
- function isPowerOf2(n) {
136
- return (n & (n - 1)) == 0;
137
- }
138
- //# sourceMappingURL=merkle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/newops/merkle.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /// <reference types="node" />
2
- import { Merkle } from "./merkle";
3
- /**
4
- * This implements "Merkelized Maps", documented at
5
- * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md#merkleized-maps
6
- *
7
- * A merkelized map consist of two merkle trees, one for the keys of
8
- * a map and one for the values of the same map, thus the two merkle
9
- * trees have the same shape. The commitment is the number elements
10
- * in the map followed by the keys' merkle root followed by the
11
- * values' merkle root.
12
- */
13
- export declare class MerkleMap {
14
- keys: Buffer[];
15
- keysTree: Merkle;
16
- values: Buffer[];
17
- valuesTree: Merkle;
18
- /**
19
- * @param keys Sorted list of (unhashed) keys
20
- * @param values values, in corresponding order as the keys, and of equal length
21
- */
22
- constructor(keys: Buffer[], values: Buffer[]);
23
- commitment(): Buffer;
24
- }
25
- //# sourceMappingURL=merkleMap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merkleMap.d.ts","sourceRoot":"","sources":["../../src/newops/merkleMap.ts"],"names":[],"mappings":";AACA,OAAO,EAAY,MAAM,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;;;;;;GASG;AACH,qBAAa,SAAS;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;gBACS,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IAkB5C,UAAU,IAAI,MAAM;CAQrB"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.MerkleMap = void 0;
4
- var varint_1 = require("../varint");
5
- var merkle_1 = require("./merkle");
6
- /**
7
- * This implements "Merkelized Maps", documented at
8
- * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md#merkleized-maps
9
- *
10
- * A merkelized map consist of two merkle trees, one for the keys of
11
- * a map and one for the values of the same map, thus the two merkle
12
- * trees have the same shape. The commitment is the number elements
13
- * in the map followed by the keys' merkle root followed by the
14
- * values' merkle root.
15
- */
16
- var MerkleMap = /** @class */ (function () {
17
- /**
18
- * @param keys Sorted list of (unhashed) keys
19
- * @param values values, in corresponding order as the keys, and of equal length
20
- */
21
- function MerkleMap(keys, values) {
22
- if (keys.length != values.length) {
23
- throw new Error("keys and values should have the same length");
24
- }
25
- // Sanity check: verify that keys are actually sorted and with no duplicates
26
- for (var i = 0; i < keys.length - 1; i++) {
27
- if (keys[i].toString("hex") >= keys[i + 1].toString("hex")) {
28
- throw new Error("keys must be in strictly increasing order");
29
- }
30
- }
31
- this.keys = keys;
32
- this.keysTree = new merkle_1.Merkle(keys.map(function (k) { return (0, merkle_1.hashLeaf)(k); }));
33
- this.values = values;
34
- this.valuesTree = new merkle_1.Merkle(values.map(function (v) { return (0, merkle_1.hashLeaf)(v); }));
35
- }
36
- MerkleMap.prototype.commitment = function () {
37
- // returns a buffer between 65 and 73 (included) bytes long
38
- return Buffer.concat([
39
- (0, varint_1.createVarint)(this.keys.length),
40
- this.keysTree.getRoot(),
41
- this.valuesTree.getRoot(),
42
- ]);
43
- };
44
- return MerkleMap;
45
- }());
46
- exports.MerkleMap = MerkleMap;
47
- //# sourceMappingURL=merkleMap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merkleMap.js","sourceRoot":"","sources":["../../src/newops/merkleMap.ts"],"names":[],"mappings":";;;AAAA,oCAAyC;AACzC,mCAA4C;AAE5C;;;;;;;;;GASG;AACH;IAKE;;;OAGG;IACH,mBAAY,IAAc,EAAE,MAAgB;QAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAChE;QAED,4EAA4E;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC1D,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAC9D;SACF;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,IAAA,iBAAQ,EAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,IAAA,iBAAQ,EAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,8BAAU,GAAV;QACE,2DAA2D;QAC3D,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAA,qBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IACH,gBAAC;AAAD,CAAC,AAnCD,IAmCC;AAnCY,8BAAS"}
@@ -1,22 +0,0 @@
1
- /// <reference types="node" />
2
- export declare type DefaultDescriptorTemplate = "pkh(@0)" | "sh(wpkh(@0))" | "wpkh(@0)" | "tr(@0)";
3
- /**
4
- * The Bitcon hardware app uses a descriptors-like thing to describe
5
- * how to construct output scripts from keys. A "Wallet Policy" consists
6
- * of a "Descriptor Template" and a list of "keys". A key is basically
7
- * a serialized BIP32 extended public key with some added derivation path
8
- * information. This is documented at
9
- * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/wallet.md
10
- */
11
- export declare class WalletPolicy {
12
- descriptorTemplate: string;
13
- keys: string[];
14
- /**
15
- * For now, we only support default descriptor templates.
16
- */
17
- constructor(descriptorTemplate: DefaultDescriptorTemplate, key: string);
18
- getWalletId(): Buffer;
19
- serialize(): Buffer;
20
- }
21
- export declare function createKey(masterFingerprint: Buffer, path: number[], xpub: string): string;
22
- //# sourceMappingURL=policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/newops/policy.ts"],"names":[],"mappings":";AAKA,oBAAY,yBAAyB,GACjC,SAAS,GACT,cAAc,GACd,UAAU,GACV,QAAQ,CAAC;AAEb;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;OAEG;gBACS,kBAAkB,EAAE,yBAAyB,EAAE,GAAG,EAAE,MAAM;IAKtE,WAAW,IAAI,MAAM;IAKrB,SAAS,IAAI,MAAM;CAapB;AAED,wBAAgB,SAAS,CACvB,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,GACX,MAAM,CAKR"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.createKey = exports.WalletPolicy = void 0;
4
- var bitcoinjs_lib_1 = require("bitcoinjs-lib");
5
- var bip32_1 = require("../bip32");
6
- var buffertools_1 = require("../buffertools");
7
- var merkle_1 = require("./merkle");
8
- /**
9
- * The Bitcon hardware app uses a descriptors-like thing to describe
10
- * how to construct output scripts from keys. A "Wallet Policy" consists
11
- * of a "Descriptor Template" and a list of "keys". A key is basically
12
- * a serialized BIP32 extended public key with some added derivation path
13
- * information. This is documented at
14
- * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/wallet.md
15
- */
16
- var WalletPolicy = /** @class */ (function () {
17
- /**
18
- * For now, we only support default descriptor templates.
19
- */
20
- function WalletPolicy(descriptorTemplate, key) {
21
- this.descriptorTemplate = descriptorTemplate;
22
- this.keys = [key];
23
- }
24
- WalletPolicy.prototype.getWalletId = function () {
25
- // wallet_id (sha256 of the wallet serialization),
26
- return bitcoinjs_lib_1.crypto.sha256(this.serialize());
27
- };
28
- WalletPolicy.prototype.serialize = function () {
29
- var keyBuffers = this.keys.map(function (k) {
30
- return Buffer.from(k, "ascii");
31
- });
32
- var m = new merkle_1.Merkle(keyBuffers.map(function (k) { return (0, merkle_1.hashLeaf)(k); }));
33
- var buf = new buffertools_1.BufferWriter();
34
- buf.writeUInt8(0x01); // wallet type (policy map)
35
- buf.writeUInt8(0); // length of wallet name (empty string for default wallets)
36
- buf.writeVarSlice(Buffer.from(this.descriptorTemplate, "ascii"));
37
- buf.writeVarInt(this.keys.length), buf.writeSlice(m.getRoot());
38
- return buf.buffer();
39
- };
40
- return WalletPolicy;
41
- }());
42
- exports.WalletPolicy = WalletPolicy;
43
- function createKey(masterFingerprint, path, xpub) {
44
- var accountPath = (0, bip32_1.pathArrayToString)(path);
45
- return "[".concat(masterFingerprint.toString("hex")).concat(accountPath.substring(1), "]").concat(xpub, "/**");
46
- }
47
- exports.createKey = createKey;
48
- //# sourceMappingURL=policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/newops/policy.ts"],"names":[],"mappings":";;;AAAA,+CAAuC;AACvC,kCAA6C;AAC7C,8CAA8C;AAC9C,mCAA4C;AAQ5C;;;;;;;GAOG;AACH;IAGE;;OAEG;IACH,sBAAY,kBAA6C,EAAE,GAAW;QACpE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,kCAAW,GAAX;QACE,kDAAkD;QAClD,OAAO,sBAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,gCAAS,GAAT;QACE,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC;YACjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,IAAM,CAAC,GAAG,IAAI,eAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,IAAA,iBAAQ,EAAC,CAAC,CAAC,EAAX,CAAW,CAAC,CAAC,CAAC;QAEzD,IAAM,GAAG,GAAG,IAAI,0BAAY,EAAE,CAAC;QAC/B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B;QACjD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,2DAA2D;QAC9E,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IACH,mBAAC;AAAD,CAAC,AA7BD,IA6BC;AA7BY,oCAAY;AA+BzB,SAAgB,SAAS,CACvB,iBAAyB,EACzB,IAAc,EACd,IAAY;IAEZ,IAAM,WAAW,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,WAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAG,WAAW,CAAC,SAAS,CAClE,CAAC,CACF,cAAI,IAAI,QAAK,CAAC;AACjB,CAAC;AATD,8BASC"}
@@ -1,10 +0,0 @@
1
- /// <reference types="node" />
2
- import { PsbtV2 } from "./psbtv2";
3
- /**
4
- * This implements the "Transaction Extractor" role of BIP370 (PSBTv2
5
- * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#transaction-extractor). However
6
- * the role is partially documented in BIP174 (PSBTv0
7
- * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#transaction-extractor).
8
- */
9
- export declare function extract(psbt: PsbtV2): Buffer;
10
- //# sourceMappingURL=psbtExtractor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"psbtExtractor.d.ts","sourceRoot":"","sources":["../../src/newops/psbtExtractor.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6B5C"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.extract = void 0;
4
- var buffertools_1 = require("../buffertools");
5
- /**
6
- * This implements the "Transaction Extractor" role of BIP370 (PSBTv2
7
- * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki#transaction-extractor). However
8
- * the role is partially documented in BIP174 (PSBTv0
9
- * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#transaction-extractor).
10
- */
11
- function extract(psbt) {
12
- var _a, _b;
13
- var tx = new buffertools_1.BufferWriter();
14
- tx.writeUInt32(psbt.getGlobalTxVersion());
15
- var isSegwit = !!psbt.getInputWitnessUtxo(0);
16
- if (isSegwit) {
17
- tx.writeSlice(Buffer.from([0, 1]));
18
- }
19
- var inputCount = psbt.getGlobalInputCount();
20
- tx.writeVarInt(inputCount);
21
- var witnessWriter = new buffertools_1.BufferWriter();
22
- for (var i = 0; i < inputCount; i++) {
23
- tx.writeSlice(psbt.getInputPreviousTxid(i));
24
- tx.writeUInt32(psbt.getInputOutputIndex(i));
25
- tx.writeVarSlice((_a = psbt.getInputFinalScriptsig(i)) !== null && _a !== void 0 ? _a : Buffer.from([]));
26
- tx.writeUInt32(psbt.getInputSequence(i));
27
- if (isSegwit) {
28
- witnessWriter.writeSlice(psbt.getInputFinalScriptwitness(i));
29
- }
30
- }
31
- var outputCount = psbt.getGlobalOutputCount();
32
- tx.writeVarInt(outputCount);
33
- for (var i = 0; i < outputCount; i++) {
34
- tx.writeUInt64(psbt.getOutputAmount(i));
35
- tx.writeVarSlice(psbt.getOutputScript(i));
36
- }
37
- tx.writeSlice(witnessWriter.buffer());
38
- tx.writeUInt32((_b = psbt.getGlobalFallbackLocktime()) !== null && _b !== void 0 ? _b : 0);
39
- return tx.buffer();
40
- }
41
- exports.extract = extract;
42
- //# sourceMappingURL=psbtExtractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"psbtExtractor.js","sourceRoot":"","sources":["../../src/newops/psbtExtractor.ts"],"names":[],"mappings":";;;AAAA,8CAA8C;AAG9C;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,IAAY;;IAClC,IAAM,EAAE,GAAG,IAAI,0BAAY,EAAE,CAAC;IAC9B,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE1C,IAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,QAAQ,EAAE;QACZ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACpC;IACD,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9C,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC3B,IAAM,aAAa,GAAG,IAAI,0BAAY,EAAE,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;QACnC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,MAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,mCAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,QAAQ,EAAE;YACZ,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;KACF;IACD,IAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChD,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;QACpC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,EAAE,CAAC,WAAW,CAAC,MAAA,IAAI,CAAC,yBAAyB,EAAE,mCAAI,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;AACrB,CAAC;AA7BD,0BA6BC"}
@@ -1,17 +0,0 @@
1
- import { PsbtV2 } from "./psbtv2";
2
- /**
3
- * This roughly implements the "input finalizer" role of BIP370 (PSBTv2
4
- * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki). However
5
- * the role is documented in BIP174 (PSBTv0
6
- * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki).
7
- *
8
- * Verify that all inputs have a signature, and set inputFinalScriptwitness
9
- * and/or inputFinalScriptSig depending on the type of the spent outputs. Clean
10
- * fields that aren't useful anymore, partial signatures, redeem script and
11
- * derivation paths.
12
- *
13
- * @param psbt The psbt with all signatures added as partial sigs, either
14
- * through PSBT_IN_PARTIAL_SIG or PSBT_IN_TAP_KEY_SIG
15
- */
16
- export declare function finalize(psbt: PsbtV2): void;
17
- //# sourceMappingURL=psbtFinalizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"psbtFinalizer.d.ts","sourceRoot":"","sources":["../../src/newops/psbtFinalizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAoE3C"}
@@ -1,135 +0,0 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.finalize = void 0;
4
- var buffertools_1 = require("../buffertools");
5
- var psbtv2_1 = require("./psbtv2");
6
- /**
7
- * This roughly implements the "input finalizer" role of BIP370 (PSBTv2
8
- * https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki). However
9
- * the role is documented in BIP174 (PSBTv0
10
- * https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki).
11
- *
12
- * Verify that all inputs have a signature, and set inputFinalScriptwitness
13
- * and/or inputFinalScriptSig depending on the type of the spent outputs. Clean
14
- * fields that aren't useful anymore, partial signatures, redeem script and
15
- * derivation paths.
16
- *
17
- * @param psbt The psbt with all signatures added as partial sigs, either
18
- * through PSBT_IN_PARTIAL_SIG or PSBT_IN_TAP_KEY_SIG
19
- */
20
- function finalize(psbt) {
21
- // First check that each input has a signature
22
- var inputCount = psbt.getGlobalInputCount();
23
- for (var i = 0; i < inputCount; i++) {
24
- var legacyPubkeys = psbt.getInputKeyDatas(i, psbtv2_1.psbtIn.PARTIAL_SIG);
25
- var taprootSig = psbt.getInputTapKeySig(i);
26
- if (legacyPubkeys.length == 0 && !taprootSig) {
27
- throw Error("No signature for input ".concat(i, " present"));
28
- }
29
- if (legacyPubkeys.length > 0) {
30
- if (legacyPubkeys.length > 1) {
31
- throw Error("Expected exactly one signature, got ".concat(legacyPubkeys.length));
32
- }
33
- if (taprootSig) {
34
- throw Error("Both taproot and non-taproot signatures present.");
35
- }
36
- var isSegwitV0 = !!psbt.getInputWitnessUtxo(i);
37
- var redeemScript = psbt.getInputRedeemScript(i);
38
- var isWrappedSegwit = !!redeemScript;
39
- var signature = psbt.getInputPartialSig(i, legacyPubkeys[0]);
40
- if (!signature)
41
- throw new Error("Expected partial signature for input " + i);
42
- if (isSegwitV0) {
43
- var witnessBuf = new buffertools_1.BufferWriter();
44
- witnessBuf.writeVarInt(2);
45
- witnessBuf.writeVarInt(signature.length);
46
- witnessBuf.writeSlice(signature);
47
- witnessBuf.writeVarInt(legacyPubkeys[0].length);
48
- witnessBuf.writeSlice(legacyPubkeys[0]);
49
- psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());
50
- if (isWrappedSegwit) {
51
- if (!redeemScript || redeemScript.length == 0) {
52
- throw new Error("Expected non-empty redeemscript. Can't finalize intput " + i);
53
- }
54
- var scriptSigBuf = new buffertools_1.BufferWriter();
55
- // Push redeemScript length
56
- scriptSigBuf.writeUInt8(redeemScript.length);
57
- scriptSigBuf.writeSlice(redeemScript);
58
- psbt.setInputFinalScriptsig(i, scriptSigBuf.buffer());
59
- }
60
- }
61
- else {
62
- // Legacy input
63
- var scriptSig = new buffertools_1.BufferWriter();
64
- writePush(scriptSig, signature);
65
- writePush(scriptSig, legacyPubkeys[0]);
66
- psbt.setInputFinalScriptsig(i, scriptSig.buffer());
67
- }
68
- }
69
- else {
70
- // Taproot input
71
- var signature = psbt.getInputTapKeySig(i);
72
- if (!signature) {
73
- throw Error("No taproot signature found");
74
- }
75
- if (signature.length != 64 && signature.length != 65) {
76
- throw Error("Unexpected length of schnorr signature.");
77
- }
78
- var witnessBuf = new buffertools_1.BufferWriter();
79
- witnessBuf.writeVarInt(1);
80
- witnessBuf.writeVarSlice(signature);
81
- psbt.setInputFinalScriptwitness(i, witnessBuf.buffer());
82
- }
83
- clearFinalizedInput(psbt, i);
84
- }
85
- }
86
- exports.finalize = finalize;
87
- /**
88
- * Deletes fields that are no longer neccesary from the psbt.
89
- *
90
- * Note, the spec doesn't say anything about removing ouput fields
91
- * like PSBT_OUT_BIP32_DERIVATION_PATH and others, so we keep them
92
- * without actually knowing why. I think we should remove them too.
93
- */
94
- function clearFinalizedInput(psbt, inputIndex) {
95
- var keyTypes = [
96
- psbtv2_1.psbtIn.BIP32_DERIVATION,
97
- psbtv2_1.psbtIn.PARTIAL_SIG,
98
- psbtv2_1.psbtIn.TAP_BIP32_DERIVATION,
99
- psbtv2_1.psbtIn.TAP_KEY_SIG,
100
- ];
101
- var witnessUtxoAvailable = !!psbt.getInputWitnessUtxo(inputIndex);
102
- var nonWitnessUtxoAvailable = !!psbt.getInputNonWitnessUtxo(inputIndex);
103
- if (witnessUtxoAvailable && nonWitnessUtxoAvailable) {
104
- // Remove NON_WITNESS_UTXO for segwit v0 as it's only needed while signing.
105
- // Segwit v1 doesn't have NON_WITNESS_UTXO set.
106
- // See https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#cite_note-7
107
- keyTypes.push(psbtv2_1.psbtIn.NON_WITNESS_UTXO);
108
- }
109
- psbt.deleteInputEntries(inputIndex, keyTypes);
110
- }
111
- /**
112
- * Writes a script push operation to buf, which looks different
113
- * depending on the size of the data. See
114
- * https://en.bitcoin.it/wiki/Script#Constants
115
- *
116
- * @param buf the BufferWriter to write to
117
- * @param data the Buffer to be pushed.
118
- */
119
- function writePush(buf, data) {
120
- if (data.length <= 75) {
121
- buf.writeUInt8(data.length);
122
- }
123
- else if (data.length <= 256) {
124
- buf.writeUInt8(76);
125
- buf.writeUInt8(data.length);
126
- }
127
- else if (data.length <= 256 * 256) {
128
- buf.writeUInt8(77);
129
- var b = Buffer.alloc(2);
130
- b.writeUInt16LE(data.length, 0);
131
- buf.writeSlice(b);
132
- }
133
- buf.writeSlice(data);
134
- }
135
- //# sourceMappingURL=psbtFinalizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"psbtFinalizer.js","sourceRoot":"","sources":["../../src/newops/psbtFinalizer.ts"],"names":[],"mappings":"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"}