@ledgerhq/hw-app-btc 6.2.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.
- package/lib/Btc.d.ts +7 -3
- package/lib/Btc.d.ts.map +1 -1
- package/lib/Btc.js +99 -30
- package/lib/Btc.js.map +1 -1
- package/lib/BtcNew.d.ts +70 -0
- package/lib/BtcNew.d.ts.map +1 -0
- package/lib/BtcNew.js +372 -0
- package/lib/BtcNew.js.map +1 -0
- package/lib/BtcOld.d.ts +114 -0
- package/lib/BtcOld.d.ts.map +1 -0
- package/lib/BtcOld.js +138 -0
- package/lib/BtcOld.js.map +1 -0
- package/lib/bip32.d.ts +8 -0
- package/lib/bip32.d.ts.map +1 -1
- package/lib/bip32.js +32 -3
- package/lib/bip32.js.map +1 -1
- package/lib/buffertools.d.ts +28 -0
- package/lib/buffertools.d.ts.map +1 -0
- package/lib/buffertools.js +100 -0
- package/lib/buffertools.js.map +1 -0
- package/lib/createTransaction.d.ts.map +1 -1
- package/lib/createTransaction.js +16 -16
- package/lib/createTransaction.js.map +1 -1
- package/lib/finalizeInput.js +1 -1
- package/lib/finalizeInput.js.map +1 -1
- package/lib/getAppAndVersion.js +1 -1
- package/lib/getAppAndVersion.js.map +1 -1
- package/lib/getTrustedInput.js +6 -6
- package/lib/getTrustedInput.js.map +1 -1
- package/lib/getTrustedInputBIP143.js +2 -2
- package/lib/getTrustedInputBIP143.js.map +1 -1
- package/lib/getWalletPublicKey.d.ts +1 -1
- package/lib/getWalletPublicKey.d.ts.map +1 -1
- package/lib/getWalletPublicKey.js +1 -1
- package/lib/getWalletPublicKey.js.map +1 -1
- package/lib/hashPublicKey.d.ts +1 -1
- package/lib/hashPublicKey.d.ts.map +1 -1
- package/lib/hashPublicKey.js +1 -1
- package/lib/hashPublicKey.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -0
- package/lib/newops/appClient.d.ts +14 -0
- package/lib/newops/appClient.d.ts.map +1 -0
- package/lib/newops/appClient.js +242 -0
- package/lib/newops/appClient.js.map +1 -0
- package/lib/newops/clientCommands.d.ts +61 -0
- package/lib/newops/clientCommands.d.ts.map +1 -0
- package/lib/newops/clientCommands.js +331 -0
- package/lib/newops/clientCommands.js.map +1 -0
- package/lib/newops/merkelizedPsbt.d.ts +15 -0
- package/lib/newops/merkelizedPsbt.d.ts.map +1 -0
- package/lib/newops/merkelizedPsbt.js +91 -0
- package/lib/newops/merkelizedPsbt.js.map +1 -0
- package/lib/newops/merkle.d.ts +29 -0
- package/lib/newops/merkle.d.ts.map +1 -0
- package/lib/newops/merkle.js +133 -0
- package/lib/newops/merkle.js.map +1 -0
- package/lib/newops/merkleMap.d.ts +15 -0
- package/lib/newops/merkleMap.d.ts.map +1 -0
- package/lib/newops/merkleMap.js +37 -0
- package/lib/newops/merkleMap.js.map +1 -0
- package/lib/newops/policy.d.ts +14 -0
- package/lib/newops/policy.d.ts.map +1 -0
- package/lib/newops/policy.js +40 -0
- package/lib/newops/policy.js.map +1 -0
- package/lib/newops/psbtExtractor.d.ts +4 -0
- package/lib/newops/psbtExtractor.d.ts.map +1 -0
- package/lib/newops/psbtExtractor.js +36 -0
- package/lib/newops/psbtExtractor.js.map +1 -0
- package/lib/newops/psbtFinalizer.d.ts +7 -0
- package/lib/newops/psbtFinalizer.d.ts.map +1 -0
- package/lib/newops/psbtFinalizer.js +111 -0
- package/lib/newops/psbtFinalizer.js.map +1 -0
- package/lib/newops/psbtv2.d.ts +129 -0
- package/lib/newops/psbtv2.d.ts.map +1 -0
- package/lib/newops/psbtv2.js +478 -0
- package/lib/newops/psbtv2.js.map +1 -0
- package/lib/serializeTransaction.js +4 -4
- package/lib/serializeTransaction.js.map +1 -1
- package/lib/signP2SHTransaction.js +5 -5
- package/lib/signP2SHTransaction.js.map +1 -1
- package/lib/signTransaction.js +1 -1
- package/lib/signTransaction.js.map +1 -1
- package/lib/splitTransaction.js +7 -7
- package/lib/splitTransaction.js.map +1 -1
- package/lib/startUntrustedHashTransactionInput.js +2 -2
- package/lib/startUntrustedHashTransactionInput.js.map +1 -1
- package/lib/varint.d.ts.map +1 -1
- package/lib/varint.js +1 -0
- package/lib/varint.js.map +1 -1
- package/lib-es/Btc.d.ts +7 -3
- package/lib-es/Btc.d.ts.map +1 -1
- package/lib-es/Btc.js +92 -26
- package/lib-es/Btc.js.map +1 -1
- package/lib-es/BtcNew.d.ts +70 -0
- package/lib-es/BtcNew.d.ts.map +1 -0
- package/lib-es/BtcNew.js +370 -0
- package/lib-es/BtcNew.js.map +1 -0
- package/lib-es/BtcOld.d.ts +114 -0
- package/lib-es/BtcOld.d.ts.map +1 -0
- package/lib-es/BtcOld.js +136 -0
- package/lib-es/BtcOld.js.map +1 -0
- package/lib-es/bip32.d.ts +8 -0
- package/lib-es/bip32.d.ts.map +1 -1
- package/lib-es/bip32.js +26 -2
- package/lib-es/bip32.js.map +1 -1
- package/lib-es/buffertools.d.ts +28 -0
- package/lib-es/buffertools.d.ts.map +1 -0
- package/lib-es/buffertools.js +94 -0
- package/lib-es/buffertools.js.map +1 -0
- package/lib-es/createTransaction.d.ts.map +1 -1
- package/lib-es/getWalletPublicKey.d.ts +1 -1
- package/lib-es/getWalletPublicKey.d.ts.map +1 -1
- package/lib-es/getWalletPublicKey.js.map +1 -1
- package/lib-es/hashPublicKey.d.ts +1 -1
- package/lib-es/hashPublicKey.d.ts.map +1 -1
- package/lib-es/index.d.ts +3 -0
- package/lib-es/index.d.ts.map +1 -0
- package/lib-es/index.js +3 -0
- package/lib-es/index.js.map +1 -0
- package/lib-es/newops/appClient.d.ts +14 -0
- package/lib-es/newops/appClient.d.ts.map +1 -0
- package/lib-es/newops/appClient.js +239 -0
- package/lib-es/newops/appClient.js.map +1 -0
- package/lib-es/newops/clientCommands.d.ts +61 -0
- package/lib-es/newops/clientCommands.d.ts.map +1 -0
- package/lib-es/newops/clientCommands.js +328 -0
- package/lib-es/newops/clientCommands.js.map +1 -0
- package/lib-es/newops/merkelizedPsbt.d.ts +15 -0
- package/lib-es/newops/merkelizedPsbt.d.ts.map +1 -0
- package/lib-es/newops/merkelizedPsbt.js +88 -0
- package/lib-es/newops/merkelizedPsbt.js.map +1 -0
- package/lib-es/newops/merkle.d.ts +29 -0
- package/lib-es/newops/merkle.d.ts.map +1 -0
- package/lib-es/newops/merkle.js +129 -0
- package/lib-es/newops/merkle.js.map +1 -0
- package/lib-es/newops/merkleMap.d.ts +15 -0
- package/lib-es/newops/merkleMap.d.ts.map +1 -0
- package/lib-es/newops/merkleMap.js +34 -0
- package/lib-es/newops/merkleMap.js.map +1 -0
- package/lib-es/newops/policy.d.ts +14 -0
- package/lib-es/newops/policy.d.ts.map +1 -0
- package/lib-es/newops/policy.js +36 -0
- package/lib-es/newops/policy.js.map +1 -0
- package/lib-es/newops/psbtExtractor.d.ts +4 -0
- package/lib-es/newops/psbtExtractor.d.ts.map +1 -0
- package/lib-es/newops/psbtExtractor.js +32 -0
- package/lib-es/newops/psbtExtractor.js.map +1 -0
- package/lib-es/newops/psbtFinalizer.d.ts +7 -0
- package/lib-es/newops/psbtFinalizer.d.ts.map +1 -0
- package/lib-es/newops/psbtFinalizer.js +107 -0
- package/lib-es/newops/psbtFinalizer.js.map +1 -0
- package/lib-es/newops/psbtv2.d.ts +129 -0
- package/lib-es/newops/psbtv2.d.ts.map +1 -0
- package/lib-es/newops/psbtv2.js +475 -0
- package/lib-es/newops/psbtv2.js.map +1 -0
- package/lib-es/varint.d.ts.map +1 -1
- package/lib-es/varint.js +1 -0
- package/lib-es/varint.js.map +1 -1
- package/package.json +7 -4
- package/src/Btc.ts +42 -25
- package/src/BtcNew.ts +326 -0
- package/src/BtcOld.ts +156 -0
- package/src/bip32.ts +34 -2
- package/src/buffertools.ts +102 -0
- package/src/createTransaction.ts +2 -2
- package/src/getWalletPublicKey.ts +6 -1
- package/src/hashPublicKey.ts +1 -1
- package/src/index.ts +2 -0
- package/src/newops/appClient.ts +178 -0
- package/src/newops/clientCommands.ts +312 -0
- package/src/newops/merkelizedPsbt.ts +55 -0
- package/src/newops/merkle.ts +123 -0
- package/src/newops/merkleMap.ts +39 -0
- package/src/newops/policy.ts +52 -0
- package/src/newops/psbtExtractor.ts +33 -0
- package/src/newops/psbtFinalizer.ts +110 -0
- package/src/newops/psbtv2.ts +548 -0
- package/src/varint.ts +2 -0
- package/tests/Btc.integration.test.ts +89 -0
- package/tests/Btc.test.ts +6 -0
- package/tests/newops/BtcNew.test.ts +646 -0
- package/tests/newops/common.ts +25 -0
- package/tests/newops/merkle.test.ts +97 -0
- 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
|