@ledgerhq/hw-app-btc 6.24.1 → 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 (289) hide show
  1. package/.turbo/turbo-build.log +1 -0
  2. package/CHANGELOG.md +10 -0
  3. package/jest.config.ts +6 -0
  4. package/package.json +15 -6
  5. package/src/bip32.ts +5 -3
  6. package/src/getTrustedInput.ts +2 -8
  7. package/src/newops/appClient.ts +8 -4
  8. package/src/newops/psbtv2.ts +13 -9
  9. package/LICENSE +0 -202
  10. package/lib/Btc.d.ts +0 -149
  11. package/lib/Btc.d.ts.map +0 -1
  12. package/lib/Btc.js +0 -353
  13. package/lib/Btc.js.map +0 -1
  14. package/lib/BtcNew.d.ts +0 -122
  15. package/lib/BtcNew.d.ts.map +0 -1
  16. package/lib/BtcNew.js +0 -451
  17. package/lib/BtcNew.js.map +0 -1
  18. package/lib/BtcOld.d.ts +0 -120
  19. package/lib/BtcOld.d.ts.map +0 -1
  20. package/lib/BtcOld.js +0 -263
  21. package/lib/BtcOld.js.map +0 -1
  22. package/lib/bip32.d.ts +0 -13
  23. package/lib/bip32.d.ts.map +0 -1
  24. package/lib/bip32.js +0 -57
  25. package/lib/bip32.js.map +0 -1
  26. package/lib/buffertools.d.ts +0 -30
  27. package/lib/buffertools.d.ts.map +0 -1
  28. package/lib/buffertools.js +0 -132
  29. package/lib/buffertools.js.map +0 -1
  30. package/lib/compressPublicKey.d.ts +0 -3
  31. package/lib/compressPublicKey.d.ts.map +0 -1
  32. package/lib/compressPublicKey.js +0 -11
  33. package/lib/compressPublicKey.js.map +0 -1
  34. package/lib/constants.d.ts +0 -13
  35. package/lib/constants.d.ts.map +0 -1
  36. package/lib/constants.js +0 -17
  37. package/lib/constants.js.map +0 -1
  38. package/lib/createTransaction.d.ts +0 -35
  39. package/lib/createTransaction.d.ts.map +0 -1
  40. package/lib/createTransaction.js +0 -411
  41. package/lib/createTransaction.js.map +0 -1
  42. package/lib/debug.d.ts +0 -4
  43. package/lib/debug.d.ts.map +0 -1
  44. package/lib/debug.js +0 -45
  45. package/lib/debug.js.map +0 -1
  46. package/lib/finalizeInput.d.ts +0 -5
  47. package/lib/finalizeInput.d.ts.map +0 -1
  48. package/lib/finalizeInput.js +0 -81
  49. package/lib/finalizeInput.js.map +0 -1
  50. package/lib/getAppAndVersion.d.ts +0 -9
  51. package/lib/getAppAndVersion.d.ts.map +0 -1
  52. package/lib/getAppAndVersion.js +0 -69
  53. package/lib/getAppAndVersion.js.map +0 -1
  54. package/lib/getTrustedInput.d.ts +0 -6
  55. package/lib/getTrustedInput.d.ts.map +0 -1
  56. package/lib/getTrustedInput.js +0 -275
  57. package/lib/getTrustedInput.js.map +0 -1
  58. package/lib/getTrustedInputBIP143.d.ts +0 -4
  59. package/lib/getTrustedInputBIP143.d.ts.map +0 -1
  60. package/lib/getTrustedInputBIP143.js +0 -34
  61. package/lib/getTrustedInputBIP143.js.map +0 -1
  62. package/lib/getWalletPublicKey.d.ts +0 -15
  63. package/lib/getWalletPublicKey.d.ts.map +0 -1
  64. package/lib/getWalletPublicKey.js +0 -93
  65. package/lib/getWalletPublicKey.js.map +0 -1
  66. package/lib/hashPublicKey.d.ts +0 -3
  67. package/lib/hashPublicKey.d.ts.map +0 -1
  68. package/lib/hashPublicKey.js +0 -13
  69. package/lib/hashPublicKey.js.map +0 -1
  70. package/lib/index.d.ts +0 -3
  71. package/lib/index.d.ts.map +0 -1
  72. package/lib/index.js +0 -8
  73. package/lib/index.js.map +0 -1
  74. package/lib/newops/accounttype.d.ts +0 -110
  75. package/lib/newops/accounttype.d.ts.map +0 -1
  76. package/lib/newops/accounttype.js +0 -236
  77. package/lib/newops/accounttype.js.map +0 -1
  78. package/lib/newops/appClient.d.ts +0 -18
  79. package/lib/newops/appClient.d.ts.map +0 -1
  80. package/lib/newops/appClient.js +0 -246
  81. package/lib/newops/appClient.js.map +0 -1
  82. package/lib/newops/clientCommands.d.ts +0 -77
  83. package/lib/newops/clientCommands.d.ts.map +0 -1
  84. package/lib/newops/clientCommands.js +0 -353
  85. package/lib/newops/clientCommands.js.map +0 -1
  86. package/lib/newops/merkelizedPsbt.d.ts +0 -26
  87. package/lib/newops/merkelizedPsbt.d.ts.map +0 -1
  88. package/lib/newops/merkelizedPsbt.js +0 -102
  89. package/lib/newops/merkelizedPsbt.js.map +0 -1
  90. package/lib/newops/merkle.d.ts +0 -34
  91. package/lib/newops/merkle.d.ts.map +0 -1
  92. package/lib/newops/merkle.js +0 -138
  93. package/lib/newops/merkle.js.map +0 -1
  94. package/lib/newops/merkleMap.d.ts +0 -25
  95. package/lib/newops/merkleMap.d.ts.map +0 -1
  96. package/lib/newops/merkleMap.js +0 -47
  97. package/lib/newops/merkleMap.js.map +0 -1
  98. package/lib/newops/policy.d.ts +0 -22
  99. package/lib/newops/policy.d.ts.map +0 -1
  100. package/lib/newops/policy.js +0 -48
  101. package/lib/newops/policy.js.map +0 -1
  102. package/lib/newops/psbtExtractor.d.ts +0 -10
  103. package/lib/newops/psbtExtractor.d.ts.map +0 -1
  104. package/lib/newops/psbtExtractor.js +0 -42
  105. package/lib/newops/psbtExtractor.js.map +0 -1
  106. package/lib/newops/psbtFinalizer.d.ts +0 -17
  107. package/lib/newops/psbtFinalizer.d.ts.map +0 -1
  108. package/lib/newops/psbtFinalizer.js +0 -135
  109. package/lib/newops/psbtFinalizer.js.map +0 -1
  110. package/lib/newops/psbtv2.d.ts +0 -149
  111. package/lib/newops/psbtv2.d.ts.map +0 -1
  112. package/lib/newops/psbtv2.js +0 -506
  113. package/lib/newops/psbtv2.js.map +0 -1
  114. package/lib/serializeTransaction.d.ts +0 -10
  115. package/lib/serializeTransaction.d.ts.map +0 -1
  116. package/lib/serializeTransaction.js +0 -72
  117. package/lib/serializeTransaction.js.map +0 -1
  118. package/lib/shouldUseTrustedInputForSegwit.d.ts +0 -5
  119. package/lib/shouldUseTrustedInputForSegwit.d.ts.map +0 -1
  120. package/lib/shouldUseTrustedInputForSegwit.js +0 -17
  121. package/lib/shouldUseTrustedInputForSegwit.js.map +0 -1
  122. package/lib/signMessage.d.ts +0 -10
  123. package/lib/signMessage.d.ts.map +0 -1
  124. package/lib/signMessage.js +0 -118
  125. package/lib/signMessage.js.map +0 -1
  126. package/lib/signP2SHTransaction.d.ts +0 -21
  127. package/lib/signP2SHTransaction.d.ts.map +0 -1
  128. package/lib/signP2SHTransaction.js +0 -208
  129. package/lib/signP2SHTransaction.js.map +0 -1
  130. package/lib/signTransaction.d.ts +0 -4
  131. package/lib/signTransaction.d.ts.map +0 -1
  132. package/lib/signTransaction.js +0 -36
  133. package/lib/signTransaction.js.map +0 -1
  134. package/lib/splitTransaction.d.ts +0 -3
  135. package/lib/splitTransaction.d.ts.map +0 -1
  136. package/lib/splitTransaction.js +0 -142
  137. package/lib/splitTransaction.js.map +0 -1
  138. package/lib/startUntrustedHashTransactionInput.d.ts +0 -9
  139. package/lib/startUntrustedHashTransactionInput.d.ts.map +0 -1
  140. package/lib/startUntrustedHashTransactionInput.js +0 -197
  141. package/lib/startUntrustedHashTransactionInput.js.map +0 -1
  142. package/lib/types.d.ts +0 -34
  143. package/lib/types.d.ts.map +0 -1
  144. package/lib/types.js +0 -3
  145. package/lib/types.js.map +0 -1
  146. package/lib/varint.d.ts +0 -4
  147. package/lib/varint.d.ts.map +0 -1
  148. package/lib/varint.js +0 -45
  149. package/lib/varint.js.map +0 -1
  150. package/lib-es/Btc.d.ts +0 -149
  151. package/lib-es/Btc.d.ts.map +0 -1
  152. package/lib-es/Btc.js +0 -329
  153. package/lib-es/Btc.js.map +0 -1
  154. package/lib-es/BtcNew.d.ts +0 -122
  155. package/lib-es/BtcNew.d.ts.map +0 -1
  156. package/lib-es/BtcNew.js +0 -444
  157. package/lib-es/BtcNew.js.map +0 -1
  158. package/lib-es/BtcOld.d.ts +0 -120
  159. package/lib-es/BtcOld.d.ts.map +0 -1
  160. package/lib-es/BtcOld.js +0 -258
  161. package/lib-es/BtcOld.js.map +0 -1
  162. package/lib-es/bip32.d.ts +0 -13
  163. package/lib-es/bip32.d.ts.map +0 -1
  164. package/lib-es/bip32.js +0 -44
  165. package/lib-es/bip32.js.map +0 -1
  166. package/lib-es/buffertools.d.ts +0 -30
  167. package/lib-es/buffertools.d.ts.map +0 -1
  168. package/lib-es/buffertools.js +0 -124
  169. package/lib-es/buffertools.js.map +0 -1
  170. package/lib-es/compressPublicKey.d.ts +0 -3
  171. package/lib-es/compressPublicKey.d.ts.map +0 -1
  172. package/lib-es/compressPublicKey.js +0 -7
  173. package/lib-es/compressPublicKey.js.map +0 -1
  174. package/lib-es/constants.d.ts +0 -13
  175. package/lib-es/constants.d.ts.map +0 -1
  176. package/lib-es/constants.js +0 -14
  177. package/lib-es/constants.js.map +0 -1
  178. package/lib-es/createTransaction.d.ts +0 -35
  179. package/lib-es/createTransaction.d.ts.map +0 -1
  180. package/lib-es/createTransaction.js +0 -407
  181. package/lib-es/createTransaction.js.map +0 -1
  182. package/lib-es/debug.d.ts +0 -4
  183. package/lib-es/debug.d.ts.map +0 -1
  184. package/lib-es/debug.js +0 -40
  185. package/lib-es/debug.js.map +0 -1
  186. package/lib-es/finalizeInput.d.ts +0 -5
  187. package/lib-es/finalizeInput.d.ts.map +0 -1
  188. package/lib-es/finalizeInput.js +0 -76
  189. package/lib-es/finalizeInput.js.map +0 -1
  190. package/lib-es/getAppAndVersion.d.ts +0 -9
  191. package/lib-es/getAppAndVersion.d.ts.map +0 -1
  192. package/lib-es/getAppAndVersion.js +0 -62
  193. package/lib-es/getAppAndVersion.js.map +0 -1
  194. package/lib-es/getTrustedInput.d.ts +0 -6
  195. package/lib-es/getTrustedInput.d.ts.map +0 -1
  196. package/lib-es/getTrustedInput.js +0 -267
  197. package/lib-es/getTrustedInput.js.map +0 -1
  198. package/lib-es/getTrustedInputBIP143.d.ts +0 -4
  199. package/lib-es/getTrustedInputBIP143.d.ts.map +0 -1
  200. package/lib-es/getTrustedInputBIP143.js +0 -27
  201. package/lib-es/getTrustedInputBIP143.js.map +0 -1
  202. package/lib-es/getWalletPublicKey.d.ts +0 -15
  203. package/lib-es/getWalletPublicKey.d.ts.map +0 -1
  204. package/lib-es/getWalletPublicKey.js +0 -89
  205. package/lib-es/getWalletPublicKey.js.map +0 -1
  206. package/lib-es/hashPublicKey.d.ts +0 -3
  207. package/lib-es/hashPublicKey.d.ts.map +0 -1
  208. package/lib-es/hashPublicKey.js +0 -6
  209. package/lib-es/hashPublicKey.js.map +0 -1
  210. package/lib-es/index.d.ts +0 -3
  211. package/lib-es/index.d.ts.map +0 -1
  212. package/lib-es/index.js +0 -3
  213. package/lib-es/index.js.map +0 -1
  214. package/lib-es/newops/accounttype.d.ts +0 -110
  215. package/lib-es/newops/accounttype.d.ts.map +0 -1
  216. package/lib-es/newops/accounttype.js +0 -233
  217. package/lib-es/newops/accounttype.js.map +0 -1
  218. package/lib-es/newops/appClient.d.ts +0 -18
  219. package/lib-es/newops/appClient.d.ts.map +0 -1
  220. package/lib-es/newops/appClient.js +0 -243
  221. package/lib-es/newops/appClient.js.map +0 -1
  222. package/lib-es/newops/clientCommands.d.ts +0 -77
  223. package/lib-es/newops/clientCommands.d.ts.map +0 -1
  224. package/lib-es/newops/clientCommands.js +0 -350
  225. package/lib-es/newops/clientCommands.js.map +0 -1
  226. package/lib-es/newops/merkelizedPsbt.d.ts +0 -26
  227. package/lib-es/newops/merkelizedPsbt.d.ts.map +0 -1
  228. package/lib-es/newops/merkelizedPsbt.js +0 -99
  229. package/lib-es/newops/merkelizedPsbt.js.map +0 -1
  230. package/lib-es/newops/merkle.d.ts +0 -34
  231. package/lib-es/newops/merkle.d.ts.map +0 -1
  232. package/lib-es/newops/merkle.js +0 -134
  233. package/lib-es/newops/merkle.js.map +0 -1
  234. package/lib-es/newops/merkleMap.d.ts +0 -25
  235. package/lib-es/newops/merkleMap.d.ts.map +0 -1
  236. package/lib-es/newops/merkleMap.js +0 -44
  237. package/lib-es/newops/merkleMap.js.map +0 -1
  238. package/lib-es/newops/policy.d.ts +0 -22
  239. package/lib-es/newops/policy.d.ts.map +0 -1
  240. package/lib-es/newops/policy.js +0 -44
  241. package/lib-es/newops/policy.js.map +0 -1
  242. package/lib-es/newops/psbtExtractor.d.ts +0 -10
  243. package/lib-es/newops/psbtExtractor.d.ts.map +0 -1
  244. package/lib-es/newops/psbtExtractor.js +0 -38
  245. package/lib-es/newops/psbtExtractor.js.map +0 -1
  246. package/lib-es/newops/psbtFinalizer.d.ts +0 -17
  247. package/lib-es/newops/psbtFinalizer.d.ts.map +0 -1
  248. package/lib-es/newops/psbtFinalizer.js +0 -131
  249. package/lib-es/newops/psbtFinalizer.js.map +0 -1
  250. package/lib-es/newops/psbtv2.d.ts +0 -149
  251. package/lib-es/newops/psbtv2.d.ts.map +0 -1
  252. package/lib-es/newops/psbtv2.js +0 -503
  253. package/lib-es/newops/psbtv2.js.map +0 -1
  254. package/lib-es/serializeTransaction.d.ts +0 -10
  255. package/lib-es/serializeTransaction.d.ts.map +0 -1
  256. package/lib-es/serializeTransaction.js +0 -67
  257. package/lib-es/serializeTransaction.js.map +0 -1
  258. package/lib-es/shouldUseTrustedInputForSegwit.d.ts +0 -5
  259. package/lib-es/shouldUseTrustedInputForSegwit.d.ts.map +0 -1
  260. package/lib-es/shouldUseTrustedInputForSegwit.js +0 -10
  261. package/lib-es/shouldUseTrustedInputForSegwit.js.map +0 -1
  262. package/lib-es/signMessage.d.ts +0 -10
  263. package/lib-es/signMessage.d.ts.map +0 -1
  264. package/lib-es/signMessage.js +0 -111
  265. package/lib-es/signMessage.js.map +0 -1
  266. package/lib-es/signP2SHTransaction.d.ts +0 -21
  267. package/lib-es/signP2SHTransaction.d.ts.map +0 -1
  268. package/lib-es/signP2SHTransaction.js +0 -204
  269. package/lib-es/signP2SHTransaction.js.map +0 -1
  270. package/lib-es/signTransaction.d.ts +0 -4
  271. package/lib-es/signTransaction.d.ts.map +0 -1
  272. package/lib-es/signTransaction.js +0 -32
  273. package/lib-es/signTransaction.js.map +0 -1
  274. package/lib-es/splitTransaction.d.ts +0 -3
  275. package/lib-es/splitTransaction.d.ts.map +0 -1
  276. package/lib-es/splitTransaction.js +0 -138
  277. package/lib-es/splitTransaction.js.map +0 -1
  278. package/lib-es/startUntrustedHashTransactionInput.d.ts +0 -9
  279. package/lib-es/startUntrustedHashTransactionInput.d.ts.map +0 -1
  280. package/lib-es/startUntrustedHashTransactionInput.js +0 -192
  281. package/lib-es/startUntrustedHashTransactionInput.js.map +0 -1
  282. package/lib-es/types.d.ts +0 -34
  283. package/lib-es/types.d.ts.map +0 -1
  284. package/lib-es/types.js +0 -2
  285. package/lib-es/types.js.map +0 -1
  286. package/lib-es/varint.d.ts +0 -4
  287. package/lib-es/varint.d.ts.map +0 -1
  288. package/lib-es/varint.js +0 -40
  289. 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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"}