@ledgerhq/hw-app-btc 10.16.0-nightly.20260116024452 → 10.16.0-nightly.20260116124336

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 (120) hide show
  1. package/CHANGELOG.md +5 -3
  2. package/README.md +106 -56
  3. package/lib/Btc.d.ts +37 -0
  4. package/lib/Btc.d.ts.map +1 -1
  5. package/lib/Btc.js +30 -2
  6. package/lib/Btc.js.map +1 -1
  7. package/lib/BtcNew.d.ts +84 -0
  8. package/lib/BtcNew.d.ts.map +1 -1
  9. package/lib/BtcNew.js +326 -9
  10. package/lib/BtcNew.js.map +1 -1
  11. package/lib/createTransaction.d.ts.map +1 -1
  12. package/lib/createTransaction.js +3 -2
  13. package/lib/createTransaction.js.map +1 -1
  14. package/lib/getTrustedInputBIP143.d.ts +1 -2
  15. package/lib/getTrustedInputBIP143.d.ts.map +1 -1
  16. package/lib/getTrustedInputBIP143.js +1 -1
  17. package/lib/getTrustedInputBIP143.js.map +1 -1
  18. package/lib/newops/accounttype.d.ts +3 -3
  19. package/lib/newops/accounttype.d.ts.map +1 -1
  20. package/lib/newops/accounttype.js +15 -14
  21. package/lib/newops/accounttype.js.map +1 -1
  22. package/lib/newops/appClient.d.ts +1 -1
  23. package/lib/newops/appClient.d.ts.map +1 -1
  24. package/lib/newops/clientCommands.js +2 -2
  25. package/lib/newops/clientCommands.js.map +1 -1
  26. package/lib/newops/merkelizedPsbt.d.ts +1 -1
  27. package/lib/newops/merkelizedPsbt.d.ts.map +1 -1
  28. package/lib/newops/merkelizedPsbt.js +1 -1
  29. package/lib/newops/merkelizedPsbt.js.map +1 -1
  30. package/lib/newops/policy.js +2 -2
  31. package/lib/newops/policy.js.map +1 -1
  32. package/lib/newops/psbtExtractor.d.ts +1 -1
  33. package/lib/newops/psbtExtractor.d.ts.map +1 -1
  34. package/lib/newops/psbtExtractor.js +3 -3
  35. package/lib/newops/psbtExtractor.js.map +1 -1
  36. package/lib/newops/psbtFinalizer.d.ts +1 -1
  37. package/lib/newops/psbtFinalizer.d.ts.map +1 -1
  38. package/lib/newops/psbtFinalizer.js +5 -6
  39. package/lib/newops/psbtFinalizer.js.map +1 -1
  40. package/lib/signP2SHTransaction.d.ts.map +1 -1
  41. package/lib/signP2SHTransaction.js +3 -2
  42. package/lib/signP2SHTransaction.js.map +1 -1
  43. package/lib-es/Btc.d.ts +37 -0
  44. package/lib-es/Btc.d.ts.map +1 -1
  45. package/lib-es/Btc.js +30 -2
  46. package/lib-es/Btc.js.map +1 -1
  47. package/lib-es/BtcNew.d.ts +84 -0
  48. package/lib-es/BtcNew.d.ts.map +1 -1
  49. package/lib-es/BtcNew.js +325 -8
  50. package/lib-es/BtcNew.js.map +1 -1
  51. package/lib-es/createTransaction.d.ts.map +1 -1
  52. package/lib-es/createTransaction.js +3 -2
  53. package/lib-es/createTransaction.js.map +1 -1
  54. package/lib-es/getTrustedInputBIP143.d.ts +1 -2
  55. package/lib-es/getTrustedInputBIP143.d.ts.map +1 -1
  56. package/lib-es/getTrustedInputBIP143.js +1 -1
  57. package/lib-es/getTrustedInputBIP143.js.map +1 -1
  58. package/lib-es/newops/accounttype.d.ts +3 -3
  59. package/lib-es/newops/accounttype.d.ts.map +1 -1
  60. package/lib-es/newops/accounttype.js +11 -10
  61. package/lib-es/newops/accounttype.js.map +1 -1
  62. package/lib-es/newops/appClient.d.ts +1 -1
  63. package/lib-es/newops/appClient.d.ts.map +1 -1
  64. package/lib-es/newops/clientCommands.js +1 -1
  65. package/lib-es/newops/clientCommands.js.map +1 -1
  66. package/lib-es/newops/merkelizedPsbt.d.ts +1 -1
  67. package/lib-es/newops/merkelizedPsbt.d.ts.map +1 -1
  68. package/lib-es/newops/merkelizedPsbt.js +1 -1
  69. package/lib-es/newops/merkelizedPsbt.js.map +1 -1
  70. package/lib-es/newops/policy.js +1 -1
  71. package/lib-es/newops/policy.js.map +1 -1
  72. package/lib-es/newops/psbtExtractor.d.ts +1 -1
  73. package/lib-es/newops/psbtExtractor.d.ts.map +1 -1
  74. package/lib-es/newops/psbtExtractor.js +1 -1
  75. package/lib-es/newops/psbtExtractor.js.map +1 -1
  76. package/lib-es/newops/psbtFinalizer.d.ts +1 -1
  77. package/lib-es/newops/psbtFinalizer.d.ts.map +1 -1
  78. package/lib-es/newops/psbtFinalizer.js +1 -2
  79. package/lib-es/newops/psbtFinalizer.js.map +1 -1
  80. package/lib-es/signP2SHTransaction.d.ts.map +1 -1
  81. package/lib-es/signP2SHTransaction.js +3 -2
  82. package/lib-es/signP2SHTransaction.js.map +1 -1
  83. package/package.json +6 -6
  84. package/src/Btc.ts +41 -2
  85. package/src/BtcNew.ts +483 -9
  86. package/src/createTransaction.ts +4 -3
  87. package/src/getTrustedInputBIP143.ts +0 -2
  88. package/src/newops/accounttype.ts +11 -12
  89. package/src/newops/appClient.ts +1 -1
  90. package/src/newops/clientCommands.ts +1 -1
  91. package/src/newops/merkelizedPsbt.ts +1 -1
  92. package/src/newops/policy.ts +1 -1
  93. package/src/newops/psbtExtractor.ts +1 -2
  94. package/src/newops/psbtFinalizer.ts +1 -2
  95. package/src/signP2SHTransaction.ts +3 -2
  96. package/tests/Btc.test.ts +848 -20
  97. package/tests/newops/BtcNew.signMessage.test.ts +35 -0
  98. package/tests/newops/BtcNew.signPsbtBuffer.test.ts +391 -0
  99. package/tests/newops/BtcNew.test.ts +13 -1
  100. package/tests/newops/integrationtools.ts +1 -1
  101. package/lib/buffertools.d.ts +0 -31
  102. package/lib/buffertools.d.ts.map +0 -1
  103. package/lib/buffertools.js +0 -129
  104. package/lib/buffertools.js.map +0 -1
  105. package/lib/newops/psbtv2.d.ts +0 -150
  106. package/lib/newops/psbtv2.d.ts.map +0 -1
  107. package/lib/newops/psbtv2.js +0 -469
  108. package/lib/newops/psbtv2.js.map +0 -1
  109. package/lib-es/buffertools.d.ts +0 -31
  110. package/lib-es/buffertools.d.ts.map +0 -1
  111. package/lib-es/buffertools.js +0 -119
  112. package/lib-es/buffertools.js.map +0 -1
  113. package/lib-es/newops/psbtv2.d.ts +0 -150
  114. package/lib-es/newops/psbtv2.d.ts.map +0 -1
  115. package/lib-es/newops/psbtv2.js +0 -464
  116. package/lib-es/newops/psbtv2.js.map +0 -1
  117. package/src/buffertools.ts +0 -137
  118. package/src/newops/psbtv2.ts +0 -525
  119. package/tests/buffertools.test.ts +0 -25
  120. package/tests/newops/psbtv2.test.ts +0 -15
@@ -1,464 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
- /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
3
- import { BufferReader, BufferWriter, unsafeFrom64bitLE, unsafeTo64bitLE } from "../buffertools";
4
- export var psbtGlobal;
5
- (function (psbtGlobal) {
6
- psbtGlobal[psbtGlobal["TX_VERSION"] = 2] = "TX_VERSION";
7
- psbtGlobal[psbtGlobal["FALLBACK_LOCKTIME"] = 3] = "FALLBACK_LOCKTIME";
8
- psbtGlobal[psbtGlobal["INPUT_COUNT"] = 4] = "INPUT_COUNT";
9
- psbtGlobal[psbtGlobal["OUTPUT_COUNT"] = 5] = "OUTPUT_COUNT";
10
- psbtGlobal[psbtGlobal["TX_MODIFIABLE"] = 6] = "TX_MODIFIABLE";
11
- psbtGlobal[psbtGlobal["VERSION"] = 251] = "VERSION";
12
- })(psbtGlobal || (psbtGlobal = {}));
13
- export var psbtIn;
14
- (function (psbtIn) {
15
- psbtIn[psbtIn["NON_WITNESS_UTXO"] = 0] = "NON_WITNESS_UTXO";
16
- psbtIn[psbtIn["WITNESS_UTXO"] = 1] = "WITNESS_UTXO";
17
- psbtIn[psbtIn["PARTIAL_SIG"] = 2] = "PARTIAL_SIG";
18
- psbtIn[psbtIn["SIGHASH_TYPE"] = 3] = "SIGHASH_TYPE";
19
- psbtIn[psbtIn["REDEEM_SCRIPT"] = 4] = "REDEEM_SCRIPT";
20
- psbtIn[psbtIn["BIP32_DERIVATION"] = 6] = "BIP32_DERIVATION";
21
- psbtIn[psbtIn["FINAL_SCRIPTSIG"] = 7] = "FINAL_SCRIPTSIG";
22
- psbtIn[psbtIn["FINAL_SCRIPTWITNESS"] = 8] = "FINAL_SCRIPTWITNESS";
23
- psbtIn[psbtIn["PREVIOUS_TXID"] = 14] = "PREVIOUS_TXID";
24
- psbtIn[psbtIn["OUTPUT_INDEX"] = 15] = "OUTPUT_INDEX";
25
- psbtIn[psbtIn["SEQUENCE"] = 16] = "SEQUENCE";
26
- psbtIn[psbtIn["TAP_KEY_SIG"] = 19] = "TAP_KEY_SIG";
27
- psbtIn[psbtIn["TAP_BIP32_DERIVATION"] = 22] = "TAP_BIP32_DERIVATION";
28
- })(psbtIn || (psbtIn = {}));
29
- export var psbtOut;
30
- (function (psbtOut) {
31
- psbtOut[psbtOut["REDEEM_SCRIPT"] = 0] = "REDEEM_SCRIPT";
32
- psbtOut[psbtOut["BIP_32_DERIVATION"] = 2] = "BIP_32_DERIVATION";
33
- psbtOut[psbtOut["AMOUNT"] = 3] = "AMOUNT";
34
- psbtOut[psbtOut["SCRIPT"] = 4] = "SCRIPT";
35
- psbtOut[psbtOut["TAP_BIP32_DERIVATION"] = 7] = "TAP_BIP32_DERIVATION";
36
- })(psbtOut || (psbtOut = {}));
37
- const PSBT_MAGIC_BYTES = Buffer.from([0x70, 0x73, 0x62, 0x74, 0xff]);
38
- export class NoSuchEntry extends Error {
39
- }
40
- /**
41
- * Implements Partially Signed Bitcoin Transaction version 2, BIP370, as
42
- * documented at https://github.com/bitcoin/bips/blob/master/bip-0370.mediawiki
43
- * and https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki
44
- *
45
- * A psbt is a data structure that can carry all relevant information about a
46
- * transaction through all stages of the signing process. From constructing an
47
- * unsigned transaction to extracting the final serialized transaction ready for
48
- * broadcast.
49
- *
50
- * This implementation is limited to what's needed in ledgerjs to carry out its
51
- * duties, which means that support for features like multisig or taproot script
52
- * path spending are not implemented. Specifically, it supports p2pkh,
53
- * p2wpkhWrappedInP2sh, p2wpkh and p2tr key path spending.
54
- *
55
- * This class is made purposefully dumb, so it's easy to add support for
56
- * complemantary fields as needed in the future.
57
- */
58
- export class PsbtV2 {
59
- globalMap = new Map();
60
- inputMaps = [];
61
- outputMaps = [];
62
- setGlobalTxVersion(version) {
63
- this.setGlobal(psbtGlobal.TX_VERSION, uint32LE(version));
64
- }
65
- getGlobalTxVersion() {
66
- return this.getGlobal(psbtGlobal.TX_VERSION).readUInt32LE(0);
67
- }
68
- setGlobalFallbackLocktime(locktime) {
69
- this.setGlobal(psbtGlobal.FALLBACK_LOCKTIME, uint32LE(locktime));
70
- }
71
- getGlobalFallbackLocktime() {
72
- return this.getGlobalOptional(psbtGlobal.FALLBACK_LOCKTIME)?.readUInt32LE(0);
73
- }
74
- setGlobalInputCount(inputCount) {
75
- this.setGlobal(psbtGlobal.INPUT_COUNT, varint(inputCount));
76
- }
77
- getGlobalInputCount() {
78
- return fromVarint(this.getGlobal(psbtGlobal.INPUT_COUNT));
79
- }
80
- setGlobalOutputCount(outputCount) {
81
- this.setGlobal(psbtGlobal.OUTPUT_COUNT, varint(outputCount));
82
- }
83
- getGlobalOutputCount() {
84
- return fromVarint(this.getGlobal(psbtGlobal.OUTPUT_COUNT));
85
- }
86
- setGlobalTxModifiable(byte) {
87
- this.setGlobal(psbtGlobal.TX_MODIFIABLE, byte);
88
- }
89
- getGlobalTxModifiable() {
90
- return this.getGlobalOptional(psbtGlobal.TX_MODIFIABLE);
91
- }
92
- setGlobalPsbtVersion(psbtVersion) {
93
- this.setGlobal(psbtGlobal.VERSION, uint32LE(psbtVersion));
94
- }
95
- getGlobalPsbtVersion() {
96
- return this.getGlobal(psbtGlobal.VERSION).readUInt32LE(0);
97
- }
98
- setInputNonWitnessUtxo(inputIndex, transaction) {
99
- this.setInput(inputIndex, psbtIn.NON_WITNESS_UTXO, b(), transaction);
100
- }
101
- getInputNonWitnessUtxo(inputIndex) {
102
- return this.getInputOptional(inputIndex, psbtIn.NON_WITNESS_UTXO, b());
103
- }
104
- setInputWitnessUtxo(inputIndex, amount, scriptPubKey) {
105
- const buf = new BufferWriter();
106
- buf.writeSlice(amount);
107
- buf.writeVarSlice(scriptPubKey);
108
- this.setInput(inputIndex, psbtIn.WITNESS_UTXO, b(), buf.buffer());
109
- }
110
- getInputWitnessUtxo(inputIndex) {
111
- const utxo = this.getInputOptional(inputIndex, psbtIn.WITNESS_UTXO, b());
112
- if (!utxo)
113
- return undefined;
114
- const buf = new BufferReader(utxo);
115
- return { amount: buf.readSlice(8), scriptPubKey: buf.readVarSlice() };
116
- }
117
- setInputPartialSig(inputIndex, pubkey, signature) {
118
- this.setInput(inputIndex, psbtIn.PARTIAL_SIG, pubkey, signature);
119
- }
120
- getInputPartialSig(inputIndex, pubkey) {
121
- return this.getInputOptional(inputIndex, psbtIn.PARTIAL_SIG, pubkey);
122
- }
123
- setInputSighashType(inputIndex, sigHashtype) {
124
- this.setInput(inputIndex, psbtIn.SIGHASH_TYPE, b(), uint32LE(sigHashtype));
125
- }
126
- getInputSighashType(inputIndex) {
127
- const result = this.getInputOptional(inputIndex, psbtIn.SIGHASH_TYPE, b());
128
- if (!result)
129
- return undefined;
130
- return result.readUInt32LE(0);
131
- }
132
- setInputRedeemScript(inputIndex, redeemScript) {
133
- this.setInput(inputIndex, psbtIn.REDEEM_SCRIPT, b(), redeemScript);
134
- }
135
- getInputRedeemScript(inputIndex) {
136
- return this.getInputOptional(inputIndex, psbtIn.REDEEM_SCRIPT, b());
137
- }
138
- setInputBip32Derivation(inputIndex, pubkey, masterFingerprint, path) {
139
- if (pubkey.length != 33)
140
- throw new Error("Invalid pubkey length: " + pubkey.length);
141
- this.setInput(inputIndex, psbtIn.BIP32_DERIVATION, pubkey, this.encodeBip32Derivation(masterFingerprint, path));
142
- }
143
- getInputBip32Derivation(inputIndex, pubkey) {
144
- const buf = this.getInputOptional(inputIndex, psbtIn.BIP32_DERIVATION, pubkey);
145
- if (!buf)
146
- return undefined;
147
- return this.decodeBip32Derivation(buf);
148
- }
149
- setInputFinalScriptsig(inputIndex, scriptSig) {
150
- this.setInput(inputIndex, psbtIn.FINAL_SCRIPTSIG, b(), scriptSig);
151
- }
152
- getInputFinalScriptsig(inputIndex) {
153
- return this.getInputOptional(inputIndex, psbtIn.FINAL_SCRIPTSIG, b());
154
- }
155
- setInputFinalScriptwitness(inputIndex, scriptWitness) {
156
- this.setInput(inputIndex, psbtIn.FINAL_SCRIPTWITNESS, b(), scriptWitness);
157
- }
158
- getInputFinalScriptwitness(inputIndex) {
159
- return this.getInput(inputIndex, psbtIn.FINAL_SCRIPTWITNESS, b());
160
- }
161
- setInputPreviousTxId(inputIndex, txid) {
162
- this.setInput(inputIndex, psbtIn.PREVIOUS_TXID, b(), txid);
163
- }
164
- getInputPreviousTxid(inputIndex) {
165
- return this.getInput(inputIndex, psbtIn.PREVIOUS_TXID, b());
166
- }
167
- setInputOutputIndex(inputIndex, outputIndex) {
168
- this.setInput(inputIndex, psbtIn.OUTPUT_INDEX, b(), uint32LE(outputIndex));
169
- }
170
- getInputOutputIndex(inputIndex) {
171
- return this.getInput(inputIndex, psbtIn.OUTPUT_INDEX, b()).readUInt32LE(0);
172
- }
173
- setInputSequence(inputIndex, sequence) {
174
- this.setInput(inputIndex, psbtIn.SEQUENCE, b(), uint32LE(sequence));
175
- }
176
- getInputSequence(inputIndex) {
177
- return this.getInputOptional(inputIndex, psbtIn.SEQUENCE, b())?.readUInt32LE(0) ?? 0xffffffff;
178
- }
179
- setInputTapKeySig(inputIndex, sig) {
180
- this.setInput(inputIndex, psbtIn.TAP_KEY_SIG, b(), sig);
181
- }
182
- getInputTapKeySig(inputIndex) {
183
- return this.getInputOptional(inputIndex, psbtIn.TAP_KEY_SIG, b());
184
- }
185
- setInputTapBip32Derivation(inputIndex, pubkey, hashes, masterFingerprint, path) {
186
- if (pubkey.length != 32)
187
- throw new Error("Invalid pubkey length: " + pubkey.length);
188
- const buf = this.encodeTapBip32Derivation(hashes, masterFingerprint, path);
189
- this.setInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey, buf);
190
- }
191
- getInputTapBip32Derivation(inputIndex, pubkey) {
192
- const buf = this.getInput(inputIndex, psbtIn.TAP_BIP32_DERIVATION, pubkey);
193
- return this.decodeTapBip32Derivation(buf);
194
- }
195
- getInputKeyDatas(inputIndex, keyType) {
196
- return this.getKeyDatas(this.inputMaps[inputIndex], keyType);
197
- }
198
- setOutputRedeemScript(outputIndex, redeemScript) {
199
- this.setOutput(outputIndex, psbtOut.REDEEM_SCRIPT, b(), redeemScript);
200
- }
201
- getOutputRedeemScript(outputIndex) {
202
- return this.getOutput(outputIndex, psbtOut.REDEEM_SCRIPT, b());
203
- }
204
- setOutputBip32Derivation(outputIndex, pubkey, masterFingerprint, path) {
205
- this.setOutput(outputIndex, psbtOut.BIP_32_DERIVATION, pubkey, this.encodeBip32Derivation(masterFingerprint, path));
206
- }
207
- getOutputBip32Derivation(outputIndex, pubkey) {
208
- const buf = this.getOutput(outputIndex, psbtOut.BIP_32_DERIVATION, pubkey);
209
- return this.decodeBip32Derivation(buf);
210
- }
211
- setOutputAmount(outputIndex, amount) {
212
- this.setOutput(outputIndex, psbtOut.AMOUNT, b(), uint64LE(amount));
213
- }
214
- getOutputAmount(outputIndex) {
215
- const buf = this.getOutput(outputIndex, psbtOut.AMOUNT, b());
216
- return unsafeFrom64bitLE(buf);
217
- }
218
- setOutputScript(outputIndex, scriptPubKey) {
219
- this.setOutput(outputIndex, psbtOut.SCRIPT, b(), scriptPubKey);
220
- }
221
- getOutputScript(outputIndex) {
222
- return this.getOutput(outputIndex, psbtOut.SCRIPT, b());
223
- }
224
- setOutputTapBip32Derivation(outputIndex, pubkey, hashes, fingerprint, path) {
225
- const buf = this.encodeTapBip32Derivation(hashes, fingerprint, path);
226
- this.setOutput(outputIndex, psbtOut.TAP_BIP32_DERIVATION, pubkey, buf);
227
- }
228
- getOutputTapBip32Derivation(outputIndex, pubkey) {
229
- const buf = this.getOutput(outputIndex, psbtOut.TAP_BIP32_DERIVATION, pubkey);
230
- return this.decodeTapBip32Derivation(buf);
231
- }
232
- deleteInputEntries(inputIndex, keyTypes) {
233
- const map = this.inputMaps[inputIndex];
234
- map.forEach((_v, k, m) => {
235
- if (this.isKeyType(k, keyTypes)) {
236
- m.delete(k);
237
- }
238
- });
239
- }
240
- copy(to) {
241
- this.copyMap(this.globalMap, to.globalMap);
242
- this.copyMaps(this.inputMaps, to.inputMaps);
243
- this.copyMaps(this.outputMaps, to.outputMaps);
244
- }
245
- copyMaps(from, to) {
246
- from.forEach((m, index) => {
247
- const to_index = new Map();
248
- this.copyMap(m, to_index);
249
- to[index] = to_index;
250
- });
251
- }
252
- copyMap(from, to) {
253
- from.forEach((v, k) => to.set(k, Buffer.from(v)));
254
- }
255
- serialize() {
256
- const buf = new BufferWriter();
257
- buf.writeSlice(Buffer.from([0x70, 0x73, 0x62, 0x74, 0xff]));
258
- serializeMap(buf, this.globalMap);
259
- this.inputMaps.forEach(map => {
260
- serializeMap(buf, map);
261
- });
262
- this.outputMaps.forEach(map => {
263
- serializeMap(buf, map);
264
- });
265
- return buf.buffer();
266
- }
267
- deserialize(psbt) {
268
- const buf = new BufferReader(psbt);
269
- if (!buf.readSlice(5).equals(PSBT_MAGIC_BYTES)) {
270
- throw new Error("Invalid magic bytes");
271
- }
272
- while (this.readKeyPair(this.globalMap, buf))
273
- ;
274
- for (let i = 0; i < this.getGlobalInputCount(); i++) {
275
- this.inputMaps[i] = new Map();
276
- while (this.readKeyPair(this.inputMaps[i], buf))
277
- ;
278
- }
279
- for (let i = 0; i < this.getGlobalOutputCount(); i++) {
280
- this.outputMaps[i] = new Map();
281
- while (this.readKeyPair(this.outputMaps[i], buf))
282
- ;
283
- }
284
- }
285
- readKeyPair(map, buf) {
286
- const keyLen = buf.readVarInt();
287
- if (keyLen == 0) {
288
- return false;
289
- }
290
- const keyType = buf.readUInt8();
291
- const keyData = buf.readSlice(keyLen - 1);
292
- const value = buf.readVarSlice();
293
- set(map, keyType, keyData, value);
294
- return true;
295
- }
296
- getKeyDatas(map, keyType) {
297
- const result = [];
298
- map.forEach((_v, k) => {
299
- if (this.isKeyType(k, [keyType])) {
300
- result.push(Buffer.from(k.substring(2), "hex"));
301
- }
302
- });
303
- return result;
304
- }
305
- isKeyType(hexKey, keyTypes) {
306
- const keyType = Buffer.from(hexKey.substring(0, 2), "hex").readUInt8(0);
307
- return keyTypes.some(k => k == keyType);
308
- }
309
- setGlobal(keyType, value) {
310
- const key = new Key(keyType, Buffer.from([]));
311
- this.globalMap.set(key.toString(), value);
312
- }
313
- getGlobal(keyType) {
314
- return get(this.globalMap, keyType, b(), false);
315
- }
316
- getGlobalOptional(keyType) {
317
- return get(this.globalMap, keyType, b(), true);
318
- }
319
- setInput(index, keyType, keyData, value) {
320
- set(this.getMap(index, this.inputMaps), keyType, keyData, value);
321
- }
322
- getInput(index, keyType, keyData) {
323
- return get(this.inputMaps[index], keyType, keyData, false);
324
- }
325
- getInputOptional(index, keyType, keyData) {
326
- return get(this.inputMaps[index], keyType, keyData, true);
327
- }
328
- setOutput(index, keyType, keyData, value) {
329
- set(this.getMap(index, this.outputMaps), keyType, keyData, value);
330
- }
331
- getOutput(index, keyType, keyData) {
332
- return get(this.outputMaps[index], keyType, keyData, false);
333
- }
334
- getMap(index, maps) {
335
- if (maps[index]) {
336
- return maps[index];
337
- }
338
- return (maps[index] = new Map());
339
- }
340
- encodeBip32Derivation(masterFingerprint, path) {
341
- const buf = new BufferWriter();
342
- this.writeBip32Derivation(buf, masterFingerprint, path);
343
- return buf.buffer();
344
- }
345
- decodeBip32Derivation(buffer) {
346
- const buf = new BufferReader(buffer);
347
- return this.readBip32Derivation(buf);
348
- }
349
- writeBip32Derivation(buf, masterFingerprint, path) {
350
- buf.writeSlice(masterFingerprint);
351
- path.forEach(element => {
352
- buf.writeUInt32(element);
353
- });
354
- }
355
- readBip32Derivation(buf) {
356
- const masterFingerprint = buf.readSlice(4);
357
- const path = [];
358
- while (buf.offset < buf.buffer.length) {
359
- path.push(buf.readUInt32());
360
- }
361
- return { masterFingerprint, path };
362
- }
363
- encodeTapBip32Derivation(hashes, masterFingerprint, path) {
364
- const buf = new BufferWriter();
365
- buf.writeVarInt(hashes.length);
366
- hashes.forEach(h => {
367
- buf.writeSlice(h);
368
- });
369
- this.writeBip32Derivation(buf, masterFingerprint, path);
370
- return buf.buffer();
371
- }
372
- decodeTapBip32Derivation(buffer) {
373
- const buf = new BufferReader(buffer);
374
- const hashCount = buf.readVarInt();
375
- const hashes = [];
376
- for (let i = 0; i < hashCount; i++) {
377
- hashes.push(buf.readSlice(32));
378
- }
379
- const deriv = this.readBip32Derivation(buf);
380
- return { hashes, ...deriv };
381
- }
382
- }
383
- function get(map, keyType, keyData, acceptUndefined) {
384
- if (!map)
385
- throw Error("No such map");
386
- const key = new Key(keyType, keyData);
387
- const value = map.get(key.toString());
388
- if (!value) {
389
- if (acceptUndefined) {
390
- return undefined;
391
- }
392
- throw new NoSuchEntry(key.toString());
393
- }
394
- // Make sure to return a copy, to protect the underlying data.
395
- return Buffer.from(value);
396
- }
397
- class Key {
398
- keyType;
399
- keyData;
400
- constructor(keyType, keyData) {
401
- this.keyType = keyType;
402
- this.keyData = keyData;
403
- }
404
- toString() {
405
- const buf = new BufferWriter();
406
- this.toBuffer(buf);
407
- return buf.buffer().toString("hex");
408
- }
409
- serialize(buf) {
410
- buf.writeVarInt(1 + this.keyData.length);
411
- this.toBuffer(buf);
412
- }
413
- toBuffer(buf) {
414
- buf.writeUInt8(this.keyType);
415
- buf.writeSlice(this.keyData);
416
- }
417
- }
418
- class KeyPair {
419
- key;
420
- value;
421
- constructor(key, value) {
422
- this.key = key;
423
- this.value = value;
424
- }
425
- serialize(buf) {
426
- this.key.serialize(buf);
427
- buf.writeVarSlice(this.value);
428
- }
429
- }
430
- function createKey(buf) {
431
- return new Key(buf.readUInt8(0), buf.slice(1));
432
- }
433
- function serializeMap(buf, map) {
434
- for (const k of map.keys()) {
435
- const value = map.get(k);
436
- const keyPair = new KeyPair(createKey(Buffer.from(k, "hex")), value);
437
- keyPair.serialize(buf);
438
- }
439
- buf.writeUInt8(0);
440
- }
441
- function b() {
442
- return Buffer.from([]);
443
- }
444
- function set(map, keyType, keyData, value) {
445
- const key = new Key(keyType, keyData);
446
- map.set(key.toString(), value);
447
- }
448
- function uint32LE(n) {
449
- const b = Buffer.alloc(4);
450
- b.writeUInt32LE(n, 0);
451
- return b;
452
- }
453
- function uint64LE(n) {
454
- return unsafeTo64bitLE(n);
455
- }
456
- function varint(n) {
457
- const b = new BufferWriter();
458
- b.writeVarInt(n);
459
- return b.buffer();
460
- }
461
- function fromVarint(buf) {
462
- return new BufferReader(buf).readVarInt();
463
- }
464
- //# sourceMappingURL=psbtv2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"psbtv2.js","sourceRoot":"","sources":["../../src/newops/psbtv2.ts"],"names":[],"mappings":"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"}
@@ -1,137 +0,0 @@
1
- import varuint from "varuint-bitcoin";
2
-
3
- export function unsafeTo64bitLE(n: number): Buffer {
4
- // we want to represent the input as a 8-bytes array
5
- if (n > Number.MAX_SAFE_INTEGER) {
6
- throw new Error("Can't convert numbers > MAX_SAFE_INT");
7
- }
8
- const byteArray = Buffer.alloc(8, 0);
9
- for (let index = 0; index < byteArray.length; index++) {
10
- const byte = n & 0xff;
11
- byteArray[index] = byte;
12
- n = (n - byte) / 256;
13
- }
14
- return byteArray;
15
- }
16
-
17
- export function unsafeFrom64bitLE(byteArray: Buffer): number {
18
- let value = 0;
19
- if (byteArray.length != 8) {
20
- throw new Error("Expected Bufffer of lenght 8");
21
- }
22
- if (byteArray[7] != 0) {
23
- throw new Error("Can't encode numbers > MAX_SAFE_INT");
24
- }
25
- if (byteArray[6] > 0x1f) {
26
- throw new Error("Can't encode numbers > MAX_SAFE_INT");
27
- }
28
- for (let i = byteArray.length - 1; i >= 0; i--) {
29
- value = value * 256 + byteArray[i];
30
- }
31
- return value;
32
- }
33
-
34
- export class BufferWriter {
35
- private bufs: Buffer[] = [];
36
-
37
- write(alloc: number, fn: (b: Buffer) => void): void {
38
- const b = Buffer.alloc(alloc);
39
- fn(b);
40
- this.bufs.push(b);
41
- }
42
-
43
- writeUInt8(i: number): void {
44
- this.write(1, b => b.writeUInt8(i, 0));
45
- }
46
-
47
- writeInt32(i: number): void {
48
- this.write(4, b => b.writeInt32LE(i, 0));
49
- }
50
-
51
- writeUInt32(i: number): void {
52
- this.write(4, b => b.writeUInt32LE(i, 0));
53
- }
54
-
55
- writeUInt64(i: number): void {
56
- const bytes = unsafeTo64bitLE(i);
57
- this.writeSlice(bytes);
58
- }
59
-
60
- writeVarInt(i: number): void {
61
- this.bufs.push(varuint.encode(i));
62
- }
63
-
64
- writeSlice(slice: Buffer): void {
65
- this.bufs.push(Buffer.from(slice));
66
- }
67
-
68
- writeVarSlice(slice: Buffer): void {
69
- this.writeVarInt(slice.length);
70
- this.writeSlice(slice);
71
- }
72
-
73
- buffer(): Buffer {
74
- return Buffer.concat(this.bufs);
75
- }
76
- }
77
-
78
- export class BufferReader {
79
- constructor(
80
- public buffer: Buffer,
81
- public offset: number = 0,
82
- ) {}
83
-
84
- available(): number {
85
- return this.buffer.length - this.offset;
86
- }
87
-
88
- readUInt8(): number {
89
- const result = this.buffer.readUInt8(this.offset);
90
- this.offset++;
91
- return result;
92
- }
93
-
94
- readInt32(): number {
95
- const result = this.buffer.readInt32LE(this.offset);
96
- this.offset += 4;
97
- return result;
98
- }
99
-
100
- readUInt32(): number {
101
- const result = this.buffer.readUInt32LE(this.offset);
102
- this.offset += 4;
103
- return result;
104
- }
105
-
106
- readUInt64(): number {
107
- const buf = this.readSlice(8);
108
- const n = unsafeFrom64bitLE(buf);
109
- return n;
110
- }
111
-
112
- readVarInt(): number {
113
- const vi = varuint.decode(this.buffer, this.offset);
114
- this.offset += varuint.decode.bytes;
115
- return vi;
116
- }
117
-
118
- readSlice(n: number): Buffer {
119
- if (this.buffer.length < this.offset + n) {
120
- throw new Error("Cannot read slice out of bounds");
121
- }
122
- const result = this.buffer.slice(this.offset, this.offset + n);
123
- this.offset += n;
124
- return result;
125
- }
126
-
127
- readVarSlice(): Buffer {
128
- return this.readSlice(this.readVarInt());
129
- }
130
-
131
- readVector(): Buffer[] {
132
- const count = this.readVarInt();
133
- const vector: Buffer[] = [];
134
- for (let i = 0; i < count; i++) vector.push(this.readVarSlice());
135
- return vector;
136
- }
137
- }