@ledgerhq/hw-app-btc 6.7.0 → 6.9.1-6.9.1-taproot.0.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 (164) hide show
  1. package/lib/Btc.d.ts +7 -3
  2. package/lib/Btc.d.ts.map +1 -1
  3. package/lib/Btc.js +95 -26
  4. package/lib/Btc.js.map +1 -1
  5. package/lib/BtcNew.d.ts +70 -0
  6. package/lib/BtcNew.d.ts.map +1 -0
  7. package/lib/BtcNew.js +372 -0
  8. package/lib/BtcNew.js.map +1 -0
  9. package/lib/BtcOld.d.ts +114 -0
  10. package/lib/BtcOld.d.ts.map +1 -0
  11. package/lib/BtcOld.js +138 -0
  12. package/lib/BtcOld.js.map +1 -0
  13. package/lib/bip32.d.ts +8 -0
  14. package/lib/bip32.d.ts.map +1 -1
  15. package/lib/bip32.js +32 -3
  16. package/lib/bip32.js.map +1 -1
  17. package/lib/buffertools.d.ts +28 -0
  18. package/lib/buffertools.d.ts.map +1 -0
  19. package/lib/buffertools.js +100 -0
  20. package/lib/buffertools.js.map +1 -0
  21. package/lib/createTransaction.d.ts.map +1 -1
  22. package/lib/getWalletPublicKey.d.ts +1 -1
  23. package/lib/getWalletPublicKey.d.ts.map +1 -1
  24. package/lib/getWalletPublicKey.js.map +1 -1
  25. package/lib/hashPublicKey.d.ts +1 -1
  26. package/lib/hashPublicKey.d.ts.map +1 -1
  27. package/lib/index.d.ts +3 -0
  28. package/lib/index.d.ts.map +1 -0
  29. package/lib/index.js +8 -0
  30. package/lib/index.js.map +1 -0
  31. package/lib/newops/appClient.d.ts +14 -0
  32. package/lib/newops/appClient.d.ts.map +1 -0
  33. package/lib/newops/appClient.js +242 -0
  34. package/lib/newops/appClient.js.map +1 -0
  35. package/lib/newops/clientCommands.d.ts +61 -0
  36. package/lib/newops/clientCommands.d.ts.map +1 -0
  37. package/lib/newops/clientCommands.js +331 -0
  38. package/lib/newops/clientCommands.js.map +1 -0
  39. package/lib/newops/merkelizedPsbt.d.ts +15 -0
  40. package/lib/newops/merkelizedPsbt.d.ts.map +1 -0
  41. package/lib/newops/merkelizedPsbt.js +91 -0
  42. package/lib/newops/merkelizedPsbt.js.map +1 -0
  43. package/lib/newops/merkle.d.ts +29 -0
  44. package/lib/newops/merkle.d.ts.map +1 -0
  45. package/lib/newops/merkle.js +133 -0
  46. package/lib/newops/merkle.js.map +1 -0
  47. package/lib/newops/merkleMap.d.ts +15 -0
  48. package/lib/newops/merkleMap.d.ts.map +1 -0
  49. package/lib/newops/merkleMap.js +37 -0
  50. package/lib/newops/merkleMap.js.map +1 -0
  51. package/lib/newops/policy.d.ts +14 -0
  52. package/lib/newops/policy.d.ts.map +1 -0
  53. package/lib/newops/policy.js +40 -0
  54. package/lib/newops/policy.js.map +1 -0
  55. package/lib/newops/psbtExtractor.d.ts +4 -0
  56. package/lib/newops/psbtExtractor.d.ts.map +1 -0
  57. package/lib/newops/psbtExtractor.js +36 -0
  58. package/lib/newops/psbtExtractor.js.map +1 -0
  59. package/lib/newops/psbtFinalizer.d.ts +7 -0
  60. package/lib/newops/psbtFinalizer.d.ts.map +1 -0
  61. package/lib/newops/psbtFinalizer.js +111 -0
  62. package/lib/newops/psbtFinalizer.js.map +1 -0
  63. package/lib/newops/psbtv2.d.ts +129 -0
  64. package/lib/newops/psbtv2.d.ts.map +1 -0
  65. package/lib/newops/psbtv2.js +478 -0
  66. package/lib/newops/psbtv2.js.map +1 -0
  67. package/lib/varint.d.ts.map +1 -1
  68. package/lib/varint.js +1 -0
  69. package/lib/varint.js.map +1 -1
  70. package/lib-es/Btc.d.ts +7 -3
  71. package/lib-es/Btc.d.ts.map +1 -1
  72. package/lib-es/Btc.js +92 -26
  73. package/lib-es/Btc.js.map +1 -1
  74. package/lib-es/BtcNew.d.ts +70 -0
  75. package/lib-es/BtcNew.d.ts.map +1 -0
  76. package/lib-es/BtcNew.js +370 -0
  77. package/lib-es/BtcNew.js.map +1 -0
  78. package/lib-es/BtcOld.d.ts +114 -0
  79. package/lib-es/BtcOld.d.ts.map +1 -0
  80. package/lib-es/BtcOld.js +136 -0
  81. package/lib-es/BtcOld.js.map +1 -0
  82. package/lib-es/bip32.d.ts +8 -0
  83. package/lib-es/bip32.d.ts.map +1 -1
  84. package/lib-es/bip32.js +26 -2
  85. package/lib-es/bip32.js.map +1 -1
  86. package/lib-es/buffertools.d.ts +28 -0
  87. package/lib-es/buffertools.d.ts.map +1 -0
  88. package/lib-es/buffertools.js +94 -0
  89. package/lib-es/buffertools.js.map +1 -0
  90. package/lib-es/createTransaction.d.ts.map +1 -1
  91. package/lib-es/getWalletPublicKey.d.ts +1 -1
  92. package/lib-es/getWalletPublicKey.d.ts.map +1 -1
  93. package/lib-es/getWalletPublicKey.js.map +1 -1
  94. package/lib-es/hashPublicKey.d.ts +1 -1
  95. package/lib-es/hashPublicKey.d.ts.map +1 -1
  96. package/lib-es/index.d.ts +3 -0
  97. package/lib-es/index.d.ts.map +1 -0
  98. package/lib-es/index.js +3 -0
  99. package/lib-es/index.js.map +1 -0
  100. package/lib-es/newops/appClient.d.ts +14 -0
  101. package/lib-es/newops/appClient.d.ts.map +1 -0
  102. package/lib-es/newops/appClient.js +239 -0
  103. package/lib-es/newops/appClient.js.map +1 -0
  104. package/lib-es/newops/clientCommands.d.ts +61 -0
  105. package/lib-es/newops/clientCommands.d.ts.map +1 -0
  106. package/lib-es/newops/clientCommands.js +328 -0
  107. package/lib-es/newops/clientCommands.js.map +1 -0
  108. package/lib-es/newops/merkelizedPsbt.d.ts +15 -0
  109. package/lib-es/newops/merkelizedPsbt.d.ts.map +1 -0
  110. package/lib-es/newops/merkelizedPsbt.js +88 -0
  111. package/lib-es/newops/merkelizedPsbt.js.map +1 -0
  112. package/lib-es/newops/merkle.d.ts +29 -0
  113. package/lib-es/newops/merkle.d.ts.map +1 -0
  114. package/lib-es/newops/merkle.js +129 -0
  115. package/lib-es/newops/merkle.js.map +1 -0
  116. package/lib-es/newops/merkleMap.d.ts +15 -0
  117. package/lib-es/newops/merkleMap.d.ts.map +1 -0
  118. package/lib-es/newops/merkleMap.js +34 -0
  119. package/lib-es/newops/merkleMap.js.map +1 -0
  120. package/lib-es/newops/policy.d.ts +14 -0
  121. package/lib-es/newops/policy.d.ts.map +1 -0
  122. package/lib-es/newops/policy.js +36 -0
  123. package/lib-es/newops/policy.js.map +1 -0
  124. package/lib-es/newops/psbtExtractor.d.ts +4 -0
  125. package/lib-es/newops/psbtExtractor.d.ts.map +1 -0
  126. package/lib-es/newops/psbtExtractor.js +32 -0
  127. package/lib-es/newops/psbtExtractor.js.map +1 -0
  128. package/lib-es/newops/psbtFinalizer.d.ts +7 -0
  129. package/lib-es/newops/psbtFinalizer.d.ts.map +1 -0
  130. package/lib-es/newops/psbtFinalizer.js +107 -0
  131. package/lib-es/newops/psbtFinalizer.js.map +1 -0
  132. package/lib-es/newops/psbtv2.d.ts +129 -0
  133. package/lib-es/newops/psbtv2.d.ts.map +1 -0
  134. package/lib-es/newops/psbtv2.js +475 -0
  135. package/lib-es/newops/psbtv2.js.map +1 -0
  136. package/lib-es/varint.d.ts.map +1 -1
  137. package/lib-es/varint.js +1 -0
  138. package/lib-es/varint.js.map +1 -1
  139. package/package.json +6 -3
  140. package/src/Btc.ts +42 -25
  141. package/src/BtcNew.ts +326 -0
  142. package/src/BtcOld.ts +156 -0
  143. package/src/bip32.ts +34 -2
  144. package/src/buffertools.ts +102 -0
  145. package/src/createTransaction.ts +1 -1
  146. package/src/getWalletPublicKey.ts +6 -1
  147. package/src/hashPublicKey.ts +1 -1
  148. package/src/index.ts +2 -0
  149. package/src/newops/appClient.ts +178 -0
  150. package/src/newops/clientCommands.ts +312 -0
  151. package/src/newops/merkelizedPsbt.ts +55 -0
  152. package/src/newops/merkle.ts +123 -0
  153. package/src/newops/merkleMap.ts +39 -0
  154. package/src/newops/policy.ts +52 -0
  155. package/src/newops/psbtExtractor.ts +33 -0
  156. package/src/newops/psbtFinalizer.ts +110 -0
  157. package/src/newops/psbtv2.ts +548 -0
  158. package/src/varint.ts +2 -0
  159. package/tests/Btc.integration.test.ts +89 -0
  160. package/tests/Btc.test.ts +6 -0
  161. package/tests/newops/BtcNew.test.ts +646 -0
  162. package/tests/newops/common.ts +25 -0
  163. package/tests/newops/merkle.test.ts +97 -0
  164. package/tests/trustedInputs.test.ts +4 -0
@@ -0,0 +1,97 @@
1
+ import { Merkle } from "../../src/newops/merkle";
2
+ function testHasher(buf: Buffer): Buffer {
3
+ return Buffer.from(buf);
4
+ }
5
+ function leaf(n: number) {
6
+ return Buffer.of(0, n);
7
+ }
8
+ function merkleOf(count: number): Merkle {
9
+ const leaves: Buffer[] = [];
10
+ for (let i = 0; i < count; i++) {
11
+ leaves.push(leaf(i));
12
+ }
13
+ return new Merkle(leaves, testHasher);
14
+ }
15
+ function rootOfLeaves(...leaves: number[]): Buffer {
16
+ return new Merkle(
17
+ leaves.map((v) => leaf(v)),
18
+ testHasher
19
+ ).getRoot();
20
+ }
21
+ function rootOf(count: number): Buffer {
22
+ const manuals = [
23
+ "0000000000000000000000000000000000000000000000000000000000000000",
24
+ "0000",
25
+ "0100000001",
26
+ "0101000000010002",
27
+ "0101000000010100020003",
28
+ "0101010000000101000200030004",
29
+ ];
30
+ return Buffer.from(manuals[count], "hex");
31
+ }
32
+
33
+ test("Merkle root of N", () => {
34
+ for (let i = 0; i <= 5; i++) {
35
+ const root = merkleOf(i).getRoot();
36
+ const expectedRoot = rootOf(i);
37
+ expect(root).toEqual(expectedRoot);
38
+ }
39
+ });
40
+
41
+ test("Merkle proof of single", () => {
42
+ const proof = merkleOf(1).getProof(0);
43
+ expect(proof).toEqual([]);
44
+ });
45
+
46
+ test("Merkle proof of two", () => {
47
+ expect(merkleOf(2).getProof(0)).toEqual([rootOfLeaves(1)]);
48
+ expect(merkleOf(2).getProof(1)).toEqual([rootOfLeaves(0)]);
49
+ });
50
+
51
+ test("Merkle proof of three", () => {
52
+ expect(merkleOf(3).getProof(0)).toEqual([rootOfLeaves(1), rootOfLeaves(2)]);
53
+ expect(merkleOf(3).getProof(1)).toEqual([rootOfLeaves(0), rootOfLeaves(2)]);
54
+ expect(merkleOf(3).getProof(2)).toEqual([rootOfLeaves(0, 1)]);
55
+ });
56
+
57
+ test("Merkle proof of four", () => {
58
+ expect(merkleOf(4).getProof(0)).toEqual([
59
+ rootOfLeaves(1),
60
+ rootOfLeaves(2, 3),
61
+ ]);
62
+ expect(merkleOf(4).getProof(1)).toEqual([
63
+ rootOfLeaves(0),
64
+ rootOfLeaves(2, 3),
65
+ ]);
66
+ expect(merkleOf(4).getProof(2)).toEqual([
67
+ rootOfLeaves(3),
68
+ rootOfLeaves(0, 1),
69
+ ]);
70
+ expect(merkleOf(4).getProof(3)).toEqual([
71
+ rootOfLeaves(2),
72
+ rootOfLeaves(0, 1),
73
+ ]);
74
+ });
75
+ test("Merkle proof of five", () => {
76
+ expect(merkleOf(5).getProof(0)).toEqual([
77
+ rootOfLeaves(1),
78
+ rootOfLeaves(2, 3),
79
+ rootOfLeaves(4),
80
+ ]);
81
+ expect(merkleOf(5).getProof(1)).toEqual([
82
+ rootOfLeaves(0),
83
+ rootOfLeaves(2, 3),
84
+ rootOfLeaves(4),
85
+ ]);
86
+ expect(merkleOf(5).getProof(2)).toEqual([
87
+ rootOfLeaves(3),
88
+ rootOfLeaves(0, 1),
89
+ rootOfLeaves(4),
90
+ ]);
91
+ expect(merkleOf(5).getProof(3)).toEqual([
92
+ rootOfLeaves(2),
93
+ rootOfLeaves(0, 1),
94
+ rootOfLeaves(4),
95
+ ]);
96
+ expect(merkleOf(5).getProof(4)).toEqual([rootOfLeaves(0, 1, 2, 3)]);
97
+ });
@@ -8,6 +8,8 @@ test("transaction on btc – nano s 1.3.1 – native segwit", async () => {
8
8
  const transport = await openTransportReplayer(
9
9
  RecordStore.fromString(`
10
10
  => b001000000
11
+ <= 0107426974636f696e06312e332e323301029000
12
+ => b001000000
11
13
  <= 6d00
12
14
  => e04000001505800000548000000080000000000000010000001b
13
15
  <= 41042e00ef5ab04c270bf697e817c5fd433aa4509b063745d6f82c2157a59d59c1b7146956cee1b5ce1c7739a87fb59de3ad918872b14301af3f00b538934837b1382231354a707a787578426b6358384576465a6e6d4d736a74664771314d676e6d465356b9b92151a60d39e94e5be7a91003d0f43f03cafd69db00ebc60a65434d83e66d9000
@@ -57,6 +59,8 @@ test("transaction on btc – nano s 1.6.0 – native segwit", async () => {
57
59
  const transport = await openTransportReplayer(
58
60
  RecordStore.fromString(`
59
61
  => b001000000
62
+ <= 0107426974636f696e06312e332e323301029000
63
+ => b001000000
60
64
  <= 0107426974636f696e05312e342e3201029000
61
65
  => e042000009000000010100000002
62
66
  <= 9000