@sidhujag/sysweb3-keyring 1.0.547 → 1.0.549
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/{dist/cjs → cjs}/providers.js +1 -64
- package/cjs/providers.js.map +1 -0
- package/{dist/cjs → cjs}/transactions/ethereum.js +1 -16
- package/cjs/transactions/ethereum.js.map +1 -0
- package/package.json +2 -30
- package/{dist/types → types}/providers.d.ts +0 -8
- package/{dist/types → types}/transactions/ethereum.d.ts +2 -2
- package/{dist/types → types}/types.d.ts +2 -2
- package/coverage/clover.xml +0 -2875
- package/coverage/coverage-final.json +0 -29468
- package/coverage/lcov-report/base.css +0 -354
- package/coverage/lcov-report/block-navigation.js +0 -85
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -320
- package/coverage/lcov-report/prettify.css +0 -101
- package/coverage/lcov-report/prettify.js +0 -1008
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -191
- package/coverage/lcov-report/src/index.html +0 -276
- package/coverage/lcov-report/src/index.ts.html +0 -114
- package/coverage/lcov-report/src/initial-state.ts.html +0 -558
- package/coverage/lcov-report/src/keyring-manager.ts.html +0 -6279
- package/coverage/lcov-report/src/ledger/bitcoin_client/index.html +0 -178
- package/coverage/lcov-report/src/ledger/bitcoin_client/index.ts.html +0 -144
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/appClient.ts.html +0 -1560
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/bip32.ts.html +0 -276
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/buffertools.ts.html +0 -495
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/clientCommands.ts.html +0 -1138
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/index.html +0 -363
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts.html +0 -289
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkle.ts.html +0 -486
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkleMap.ts.html +0 -240
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/policy.ts.html +0 -342
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/psbtv2.ts.html +0 -2388
- package/coverage/lcov-report/src/ledger/bitcoin_client/lib/varint.ts.html +0 -453
- package/coverage/lcov-report/src/ledger/consts.ts.html +0 -177
- package/coverage/lcov-report/src/ledger/index.html +0 -216
- package/coverage/lcov-report/src/ledger/index.ts.html +0 -1371
- package/coverage/lcov-report/src/ledger/utils.ts.html +0 -102
- package/coverage/lcov-report/src/signers.ts.html +0 -591
- package/coverage/lcov-report/src/storage.ts.html +0 -198
- package/coverage/lcov-report/src/transactions/ethereum.ts.html +0 -5826
- package/coverage/lcov-report/src/transactions/index.html +0 -216
- package/coverage/lcov-report/src/transactions/index.ts.html +0 -93
- package/coverage/lcov-report/src/transactions/syscoin.ts.html +0 -1521
- package/coverage/lcov-report/src/trezor/index.html +0 -176
- package/coverage/lcov-report/src/trezor/index.ts.html +0 -2655
- package/coverage/lcov-report/src/types.ts.html +0 -1443
- package/coverage/lcov-report/src/utils/derivation-paths.ts.html +0 -486
- package/coverage/lcov-report/src/utils/index.html +0 -196
- package/coverage/lcov-report/src/utils/psbt.ts.html +0 -159
- package/coverage/lcov-report/test/helpers/constants.ts.html +0 -627
- package/coverage/lcov-report/test/helpers/index.html +0 -176
- package/coverage/lcov.info +0 -4832
- package/dist/cjs/providers.js.map +0 -1
- package/dist/cjs/transactions/ethereum.js.map +0 -1
- package/dist/package.json +0 -50
- package/examples/basic-usage.js +0 -140
- package/jest.config.js +0 -32
- package/readme.md +0 -201
- package/src/declare.d.ts +0 -7
- package/src/errorUtils.ts +0 -83
- package/src/hardware-wallet-manager.ts +0 -655
- package/src/index.ts +0 -12
- package/src/initial-state.ts +0 -108
- package/src/keyring-manager.ts +0 -2698
- package/src/ledger/bitcoin_client/index.ts +0 -19
- package/src/ledger/bitcoin_client/lib/appClient.ts +0 -405
- package/src/ledger/bitcoin_client/lib/bip32.ts +0 -61
- package/src/ledger/bitcoin_client/lib/buffertools.ts +0 -134
- package/src/ledger/bitcoin_client/lib/clientCommands.ts +0 -356
- package/src/ledger/bitcoin_client/lib/constants.ts +0 -12
- package/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts +0 -65
- package/src/ledger/bitcoin_client/lib/merkle.ts +0 -136
- package/src/ledger/bitcoin_client/lib/merkleMap.ts +0 -49
- package/src/ledger/bitcoin_client/lib/policy.ts +0 -91
- package/src/ledger/bitcoin_client/lib/psbtv2.ts +0 -768
- package/src/ledger/bitcoin_client/lib/varint.ts +0 -120
- package/src/ledger/consts.ts +0 -3
- package/src/ledger/index.ts +0 -685
- package/src/ledger/types.ts +0 -74
- package/src/network-utils.ts +0 -99
- package/src/providers.ts +0 -345
- package/src/signers.ts +0 -158
- package/src/storage.ts +0 -63
- package/src/transactions/__tests__/integration.test.ts +0 -303
- package/src/transactions/__tests__/syscoin.test.ts +0 -409
- package/src/transactions/ethereum.ts +0 -2503
- package/src/transactions/index.ts +0 -2
- package/src/transactions/syscoin.ts +0 -542
- package/src/trezor/index.ts +0 -1050
- package/src/types.ts +0 -366
- package/src/utils/derivation-paths.ts +0 -133
- package/src/utils/psbt.ts +0 -24
- package/src/utils.ts +0 -191
- package/test/README.md +0 -158
- package/test/__mocks__/ledger-mock.js +0 -20
- package/test/__mocks__/trezor-mock.js +0 -75
- package/test/cleanup-summary.md +0 -167
- package/test/helpers/README.md +0 -78
- package/test/helpers/constants.ts +0 -79
- package/test/helpers/setup.ts +0 -714
- package/test/integration/import-validation.spec.ts +0 -588
- package/test/unit/hardware/ledger.spec.ts +0 -869
- package/test/unit/hardware/trezor.spec.ts +0 -828
- package/test/unit/keyring-manager/account-management.spec.ts +0 -970
- package/test/unit/keyring-manager/import-watchonly.spec.ts +0 -181
- package/test/unit/keyring-manager/import-wif.spec.ts +0 -126
- package/test/unit/keyring-manager/initialization.spec.ts +0 -782
- package/test/unit/keyring-manager/key-derivation.spec.ts +0 -996
- package/test/unit/keyring-manager/security.spec.ts +0 -505
- package/test/unit/keyring-manager/state-management.spec.ts +0 -375
- package/test/unit/network/network-management.spec.ts +0 -372
- package/test/unit/transactions/ethereum-transactions.spec.ts +0 -382
- package/test/unit/transactions/syscoin-transactions.spec.ts +0 -615
- package/tsconfig.json +0 -14
- /package/{dist/README.md → README.md} +0 -0
- /package/{dist/cjs → cjs}/errorUtils.js +0 -0
- /package/{dist/cjs → cjs}/errorUtils.js.map +0 -0
- /package/{dist/cjs → cjs}/hardware-wallet-manager.js +0 -0
- /package/{dist/cjs → cjs}/hardware-wallet-manager.js.map +0 -0
- /package/{dist/cjs → cjs}/index.js +0 -0
- /package/{dist/cjs → cjs}/index.js.map +0 -0
- /package/{dist/cjs → cjs}/initial-state.js +0 -0
- /package/{dist/cjs → cjs}/initial-state.js.map +0 -0
- /package/{dist/cjs → cjs}/keyring-manager.js +0 -0
- /package/{dist/cjs → cjs}/keyring-manager.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js +0 -0
- /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/consts.js +0 -0
- /package/{dist/cjs → cjs}/ledger/consts.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/index.js +0 -0
- /package/{dist/cjs → cjs}/ledger/index.js.map +0 -0
- /package/{dist/cjs → cjs}/ledger/types.js +0 -0
- /package/{dist/cjs → cjs}/ledger/types.js.map +0 -0
- /package/{dist/cjs → cjs}/network-utils.js +0 -0
- /package/{dist/cjs → cjs}/network-utils.js.map +0 -0
- /package/{dist/cjs → cjs}/signers.js +0 -0
- /package/{dist/cjs → cjs}/signers.js.map +0 -0
- /package/{dist/cjs → cjs}/storage.js +0 -0
- /package/{dist/cjs → cjs}/storage.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js +0 -0
- /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/index.js +0 -0
- /package/{dist/cjs → cjs}/transactions/index.js.map +0 -0
- /package/{dist/cjs → cjs}/transactions/syscoin.js +0 -0
- /package/{dist/cjs → cjs}/transactions/syscoin.js.map +0 -0
- /package/{dist/cjs → cjs}/trezor/index.js +0 -0
- /package/{dist/cjs → cjs}/trezor/index.js.map +0 -0
- /package/{dist/cjs → cjs}/types.js +0 -0
- /package/{dist/cjs → cjs}/types.js.map +0 -0
- /package/{dist/cjs → cjs}/utils/derivation-paths.js +0 -0
- /package/{dist/cjs → cjs}/utils/derivation-paths.js.map +0 -0
- /package/{dist/cjs → cjs}/utils/psbt.js +0 -0
- /package/{dist/cjs → cjs}/utils/psbt.js.map +0 -0
- /package/{dist/cjs → cjs}/utils.js +0 -0
- /package/{dist/cjs → cjs}/utils.js.map +0 -0
- /package/{dist/types → types}/errorUtils.d.ts +0 -0
- /package/{dist/types → types}/hardware-wallet-manager.d.ts +0 -0
- /package/{dist/types → types}/index.d.ts +0 -0
- /package/{dist/types → types}/initial-state.d.ts +0 -0
- /package/{dist/types → types}/keyring-manager.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/index.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/appClient.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/bip32.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/buffertools.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/clientCommands.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/constants.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkelizedPsbt.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkle.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/merkleMap.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/policy.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/psbtv2.d.ts +0 -0
- /package/{dist/types → types}/ledger/bitcoin_client/lib/varint.d.ts +0 -0
- /package/{dist/types → types}/ledger/consts.d.ts +0 -0
- /package/{dist/types → types}/ledger/index.d.ts +0 -0
- /package/{dist/types → types}/ledger/types.d.ts +0 -0
- /package/{dist/types → types}/network-utils.d.ts +0 -0
- /package/{dist/types → types}/signers.d.ts +0 -0
- /package/{dist/types → types}/storage.d.ts +0 -0
- /package/{dist/types → types}/transactions/__tests__/integration.test.d.ts +0 -0
- /package/{dist/types → types}/transactions/__tests__/syscoin.test.d.ts +0 -0
- /package/{dist/types → types}/transactions/index.d.ts +0 -0
- /package/{dist/types → types}/transactions/syscoin.d.ts +0 -0
- /package/{dist/types → types}/trezor/index.d.ts +0 -0
- /package/{dist/types → types}/utils/derivation-paths.d.ts +0 -0
- /package/{dist/types → types}/utils/psbt.d.ts +0 -0
- /package/{dist/types → types}/utils.d.ts +0 -0
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>
|
|
5
|
-
Code coverage report for src/ledger/bitcoin_client/lib/merkleMap.ts
|
|
6
|
-
</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../../../base.css" />
|
|
10
|
-
<link
|
|
11
|
-
rel="shortcut icon"
|
|
12
|
-
type="image/x-icon"
|
|
13
|
-
href="../../../../favicon.png"
|
|
14
|
-
/>
|
|
15
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
16
|
-
<style type="text/css">
|
|
17
|
-
.coverage-summary .sorter {
|
|
18
|
-
background-image: url(../../../../sort-arrow-sprite.png);
|
|
19
|
-
}
|
|
20
|
-
</style>
|
|
21
|
-
</head>
|
|
22
|
-
|
|
23
|
-
<body>
|
|
24
|
-
<div class="wrapper">
|
|
25
|
-
<div class="pad1">
|
|
26
|
-
<h1>
|
|
27
|
-
<a href="../../../../index.html">All files</a> /
|
|
28
|
-
<a href="index.html">src/ledger/bitcoin_client/lib</a> merkleMap.ts
|
|
29
|
-
</h1>
|
|
30
|
-
<div class="clearfix">
|
|
31
|
-
<div class="fl pad1y space-right2">
|
|
32
|
-
<span class="strong">18.75% </span>
|
|
33
|
-
<span class="quiet">Statements</span>
|
|
34
|
-
<span class="fraction">3/16</span>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<div class="fl pad1y space-right2">
|
|
38
|
-
<span class="strong">0% </span>
|
|
39
|
-
<span class="quiet">Branches</span>
|
|
40
|
-
<span class="fraction">0/2</span>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<div class="fl pad1y space-right2">
|
|
44
|
-
<span class="strong">0% </span>
|
|
45
|
-
<span class="quiet">Functions</span>
|
|
46
|
-
<span class="fraction">0/4</span>
|
|
47
|
-
</div>
|
|
48
|
-
|
|
49
|
-
<div class="fl pad1y space-right2">
|
|
50
|
-
<span class="strong">23.07% </span>
|
|
51
|
-
<span class="quiet">Lines</span>
|
|
52
|
-
<span class="fraction">3/13</span>
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
<p class="quiet">
|
|
56
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
|
|
57
|
-
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
58
|
-
</p>
|
|
59
|
-
<template id="filterTemplate">
|
|
60
|
-
<div class="quiet">
|
|
61
|
-
Filter:
|
|
62
|
-
<input type="search" id="fileSearch" />
|
|
63
|
-
</div>
|
|
64
|
-
</template>
|
|
65
|
-
</div>
|
|
66
|
-
<div class="status-line low"></div>
|
|
67
|
-
<pre><table class="coverage">
|
|
68
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
69
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
70
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
71
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
72
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
73
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
74
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
75
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
76
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
77
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
78
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
79
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
80
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
81
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
82
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
83
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
84
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
85
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
86
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
87
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
88
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
89
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
90
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
91
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
92
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
93
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
94
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
95
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
96
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
97
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
98
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
99
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
100
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
101
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
102
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
103
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
104
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
105
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
106
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
107
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
108
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
109
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
110
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
111
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
112
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
113
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
114
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
115
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
116
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
117
|
-
<a name='L50'></a><a href='#L50'>50</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
118
|
-
<span class="cline-any cline-yes">2x</span>
|
|
119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
130
|
-
<span class="cline-any cline-yes">2x</span>
|
|
131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
140
|
-
<span class="cline-any cline-no"> </span>
|
|
141
|
-
<span class="cline-any cline-no"> </span>
|
|
142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
145
|
-
<span class="cline-any cline-no"> </span>
|
|
146
|
-
<span class="cline-any cline-no"> </span>
|
|
147
|
-
<span class="cline-any cline-no"> </span>
|
|
148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
149
|
-
<span class="cline-any cline-neutral"> </span>
|
|
150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
151
|
-
<span class="cline-any cline-no"> </span>
|
|
152
|
-
<span class="cline-any cline-no"> </span>
|
|
153
|
-
<span class="cline-any cline-no"> </span>
|
|
154
|
-
<span class="cline-any cline-no"> </span>
|
|
155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
159
|
-
<span class="cline-any cline-no"> </span>
|
|
160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
166
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { hashLeaf, Merkle } from './merkle';
|
|
167
|
-
import { createVarint } from './varint';
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* This implements "Merkelized Maps", documented at
|
|
171
|
-
* https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md#merkleized-maps
|
|
172
|
-
*
|
|
173
|
-
* A merkelized map consist of two merkle trees, one for the keys of
|
|
174
|
-
* a map and one for the values of the same map, thus the two merkle
|
|
175
|
-
* trees have the same shape. The commitment is the number elements
|
|
176
|
-
* in the map followed by the keys' merkle root followed by the
|
|
177
|
-
* values' merkle root.
|
|
178
|
-
*/
|
|
179
|
-
export class MerkleMap {
|
|
180
|
-
readonly keys: readonly Buffer[];
|
|
181
|
-
readonly keysTree: Merkle;
|
|
182
|
-
readonly values: readonly Buffer[];
|
|
183
|
-
readonly valuesTree: Merkle;
|
|
184
|
-
/**
|
|
185
|
-
* @param keys Sorted list of (unhashed) keys
|
|
186
|
-
* @param values values, in corresponding order as the keys, and of equal length
|
|
187
|
-
*/
|
|
188
|
-
<span class="fstat-no" title="function not covered" > constructor(k</span>eys: readonly Buffer[], values: readonly Buffer[]) {
|
|
189
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (keys.length != values.length) {</span>
|
|
190
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('keys and values should have the same length');</span>
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// Sanity check: verify that keys are actually sorted and with no duplicates
|
|
194
|
-
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < keys.length - 1; i++) {</span>
|
|
195
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (keys[i].toString('hex') >= keys[i + 1].toString('hex')) {</span>
|
|
196
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('keys must be in strictly increasing order');</span>
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
<span class="cstat-no" title="statement not covered" > this.keys = keys;</span>
|
|
201
|
-
<span class="cstat-no" title="statement not covered" > this.keysTree = new Merkle(keys.map(<span class="fstat-no" title="function not covered" >(k</span>) => <span class="cstat-no" title="statement not covered" >hashLeaf(k))</span>);</span>
|
|
202
|
-
<span class="cstat-no" title="statement not covered" > this.values = values;</span>
|
|
203
|
-
<span class="cstat-no" title="statement not covered" > this.valuesTree = new Merkle(values.map(<span class="fstat-no" title="function not covered" >(v</span>) => <span class="cstat-no" title="statement not covered" >hashLeaf(v))</span>);</span>
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
<span class="fstat-no" title="function not covered" > commitment(</span>): Buffer {
|
|
207
|
-
// returns a buffer between 65 and 73 (included) bytes long
|
|
208
|
-
<span class="cstat-no" title="statement not covered" > return Buffer.concat([</span>
|
|
209
|
-
createVarint(this.keys.length),
|
|
210
|
-
this.keysTree.getRoot(),
|
|
211
|
-
this.valuesTree.getRoot(),
|
|
212
|
-
]);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
</pre></td></tr></table></pre>
|
|
216
|
-
|
|
217
|
-
<div class="push"></div>
|
|
218
|
-
<!-- for sticky footer -->
|
|
219
|
-
</div>
|
|
220
|
-
<!-- /wrapper -->
|
|
221
|
-
<div class="footer quiet pad2 space-top1 center small">
|
|
222
|
-
Code coverage generated by
|
|
223
|
-
<a
|
|
224
|
-
href="https://istanbul.js.org/"
|
|
225
|
-
target="_blank"
|
|
226
|
-
rel="noopener noreferrer"
|
|
227
|
-
>istanbul</a
|
|
228
|
-
>
|
|
229
|
-
at 2025-06-20T17:45:56.456Z
|
|
230
|
-
</div>
|
|
231
|
-
<script src="../../../../prettify.js"></script>
|
|
232
|
-
<script>
|
|
233
|
-
window.onload = function () {
|
|
234
|
-
prettyPrint();
|
|
235
|
-
};
|
|
236
|
-
</script>
|
|
237
|
-
<script src="../../../../sorter.js"></script>
|
|
238
|
-
<script src="../../../../block-navigation.js"></script>
|
|
239
|
-
</body>
|
|
240
|
-
</html>
|
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>
|
|
5
|
-
Code coverage report for src/ledger/bitcoin_client/lib/policy.ts
|
|
6
|
-
</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../../../base.css" />
|
|
10
|
-
<link
|
|
11
|
-
rel="shortcut icon"
|
|
12
|
-
type="image/x-icon"
|
|
13
|
-
href="../../../../favicon.png"
|
|
14
|
-
/>
|
|
15
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
16
|
-
<style type="text/css">
|
|
17
|
-
.coverage-summary .sorter {
|
|
18
|
-
background-image: url(../../../../sort-arrow-sprite.png);
|
|
19
|
-
}
|
|
20
|
-
</style>
|
|
21
|
-
</head>
|
|
22
|
-
|
|
23
|
-
<body>
|
|
24
|
-
<div class="wrapper">
|
|
25
|
-
<div class="pad1">
|
|
26
|
-
<h1>
|
|
27
|
-
<a href="../../../../index.html">All files</a> /
|
|
28
|
-
<a href="index.html">src/ledger/bitcoin_client/lib</a> policy.ts
|
|
29
|
-
</h1>
|
|
30
|
-
<div class="clearfix">
|
|
31
|
-
<div class="fl pad1y space-right2">
|
|
32
|
-
<span class="strong">43.47% </span>
|
|
33
|
-
<span class="quiet">Statements</span>
|
|
34
|
-
<span class="fraction">10/23</span>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<div class="fl pad1y space-right2">
|
|
38
|
-
<span class="strong">100% </span>
|
|
39
|
-
<span class="quiet">Branches</span>
|
|
40
|
-
<span class="fraction">0/0</span>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<div class="fl pad1y space-right2">
|
|
44
|
-
<span class="strong">33.33% </span>
|
|
45
|
-
<span class="quiet">Functions</span>
|
|
46
|
-
<span class="fraction">2/6</span>
|
|
47
|
-
</div>
|
|
48
|
-
|
|
49
|
-
<div class="fl pad1y space-right2">
|
|
50
|
-
<span class="strong">47.61% </span>
|
|
51
|
-
<span class="quiet">Lines</span>
|
|
52
|
-
<span class="fraction">10/21</span>
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
<p class="quiet">
|
|
56
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block,
|
|
57
|
-
<em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
58
|
-
</p>
|
|
59
|
-
<template id="filterTemplate">
|
|
60
|
-
<div class="quiet">
|
|
61
|
-
Filter:
|
|
62
|
-
<input type="search" id="fileSearch" />
|
|
63
|
-
</div>
|
|
64
|
-
</template>
|
|
65
|
-
</div>
|
|
66
|
-
<div class="status-line low"></div>
|
|
67
|
-
<pre><table class="coverage">
|
|
68
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
69
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
70
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
71
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
72
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
73
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
74
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
75
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
76
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
77
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
78
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
79
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
80
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
81
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
82
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
83
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
84
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
85
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
86
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
87
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
88
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
89
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
90
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
91
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
92
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
93
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
94
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
95
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
96
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
97
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
98
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
99
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
100
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
101
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
102
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
103
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
104
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
105
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
106
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
107
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
108
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
109
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
110
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
111
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
112
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
113
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
114
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
115
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
116
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
117
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
118
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
119
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
120
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
121
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
122
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
123
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
124
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
125
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
126
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
127
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
128
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
129
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
130
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
131
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
132
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
133
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
134
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
135
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
136
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
137
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
138
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
139
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
140
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
141
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
142
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
143
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
144
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
145
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
146
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
147
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
148
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
149
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
150
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
151
|
-
<a name='L84'></a><a href='#L84'>84</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
153
|
-
<span class="cline-any cline-yes">2x</span>
|
|
154
|
-
<span class="cline-any cline-yes">2x</span>
|
|
155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
156
|
-
<span class="cline-any cline-yes">2x</span>
|
|
157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
166
|
-
<span class="cline-any cline-yes">2x</span>
|
|
167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
170
|
-
<span class="cline-any cline-neutral"> </span>
|
|
171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
181
|
-
<span class="cline-any cline-yes">1x</span>
|
|
182
|
-
<span class="cline-any cline-yes">1x</span>
|
|
183
|
-
<span class="cline-any cline-yes">1x</span>
|
|
184
|
-
<span class="cline-any cline-neutral"> </span>
|
|
185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
186
|
-
<span class="cline-any cline-neutral"> </span>
|
|
187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
190
|
-
<span class="cline-any cline-no"> </span>
|
|
191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
192
|
-
<span class="cline-any cline-neutral"> </span>
|
|
193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
195
|
-
<span class="cline-any cline-neutral"> </span>
|
|
196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
198
|
-
<span class="cline-any cline-no"> </span>
|
|
199
|
-
<span class="cline-any cline-no"> </span>
|
|
200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
201
|
-
<span class="cline-any cline-no"> </span>
|
|
202
|
-
<span class="cline-any cline-no"> </span>
|
|
203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
205
|
-
<span class="cline-any cline-no"> </span>
|
|
206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
208
|
-
<span class="cline-any cline-no"> </span>
|
|
209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
210
|
-
<span class="cline-any cline-no"> </span>
|
|
211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
213
|
-
<span class="cline-any cline-no"> </span>
|
|
214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
215
|
-
<span class="cline-any cline-no"> </span>
|
|
216
|
-
<span class="cline-any cline-no"> </span>
|
|
217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
220
|
-
<span class="cline-any cline-neutral"> </span>
|
|
221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
222
|
-
<span class="cline-any cline-neutral"> </span>
|
|
223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
224
|
-
<span class="cline-any cline-neutral"> </span>
|
|
225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
229
|
-
<span class="cline-any cline-yes">2x</span>
|
|
230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
231
|
-
<span class="cline-any cline-yes">1x</span>
|
|
232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
234
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { crypto } from 'bitcoinjs-lib';
|
|
235
|
-
|
|
236
|
-
import { BufferWriter } from './buffertools';
|
|
237
|
-
import { hashLeaf, Merkle } from './merkle';
|
|
238
|
-
|
|
239
|
-
const WALLET_POLICY_V2 = 2;
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* The Bitcon hardware app uses a descriptors-like thing to describe
|
|
243
|
-
* how to construct output scripts from keys. A "Wallet Policy" consists
|
|
244
|
-
* of a "Descriptor Template" and a list of "keys". A key is basically
|
|
245
|
-
* a serialized BIP32 extended public key with some added derivation path
|
|
246
|
-
* information. This is documented at
|
|
247
|
-
* https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/wallet.md
|
|
248
|
-
*/
|
|
249
|
-
export class WalletPolicy {
|
|
250
|
-
readonly name: string;
|
|
251
|
-
readonly descriptorTemplate: string;
|
|
252
|
-
readonly keys: readonly string[];
|
|
253
|
-
/**
|
|
254
|
-
* Creates and instance of a wallet policy.
|
|
255
|
-
* @param name an ascii string, up to 16 bytes long; it must be an empty string for default wallet policies
|
|
256
|
-
* @param descriptorTemplate the wallet policy template
|
|
257
|
-
* @param keys and array of the keys, with the key derivation information
|
|
258
|
-
*/
|
|
259
|
-
constructor(
|
|
260
|
-
name: string,
|
|
261
|
-
descriptorTemplate: string,
|
|
262
|
-
keys: readonly string[]
|
|
263
|
-
) {
|
|
264
|
-
this.name = name;
|
|
265
|
-
this.descriptorTemplate = descriptorTemplate;
|
|
266
|
-
this.keys = keys;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Returns the unique 32-bytes id of this wallet policy.
|
|
271
|
-
*/
|
|
272
|
-
<span class="fstat-no" title="function not covered" > getId(</span>): Buffer {
|
|
273
|
-
<span class="cstat-no" title="statement not covered" > return crypto.sha256(this.serialize());</span>
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* Serializes the wallet policy for transmission via the hardware wallet protocol.
|
|
278
|
-
* @returns the serialized wallet policy
|
|
279
|
-
*/
|
|
280
|
-
<span class="fstat-no" title="function not covered" > serialize(</span>): Buffer {
|
|
281
|
-
const keyBuffers = <span class="cstat-no" title="statement not covered" >this.keys.map(<span class="fstat-no" title="function not covered" >(k</span>) => <span class="cstat-no" title="statement not covered" >Buffer.from(k, 'ascii'))</span>;</span>
|
|
282
|
-
const m = <span class="cstat-no" title="statement not covered" >new Merkle(keyBuffers.map(<span class="fstat-no" title="function not covered" >(k</span>) => <span class="cstat-no" title="statement not covered" >hashLeaf(k))</span>);</span>
|
|
283
|
-
|
|
284
|
-
const buf = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
|
|
285
|
-
<span class="cstat-no" title="statement not covered" > buf.writeUInt8(WALLET_POLICY_V2); </span>// wallet version
|
|
286
|
-
|
|
287
|
-
// length of wallet name, and wallet name
|
|
288
|
-
<span class="cstat-no" title="statement not covered" > buf.writeVarSlice(Buffer.from(this.name, 'ascii'));</span>
|
|
289
|
-
|
|
290
|
-
// length of descriptor template
|
|
291
|
-
<span class="cstat-no" title="statement not covered" > buf.writeVarInt(this.descriptorTemplate.length);</span>
|
|
292
|
-
// sha256 hash of descriptor template
|
|
293
|
-
<span class="cstat-no" title="statement not covered" > buf.writeSlice(crypto.sha256(Buffer.from(this.descriptorTemplate)));</span>
|
|
294
|
-
|
|
295
|
-
// number of keys
|
|
296
|
-
<span class="cstat-no" title="statement not covered" > buf.writeVarInt(this.keys.length);</span>
|
|
297
|
-
// root of Merkle tree of keys
|
|
298
|
-
<span class="cstat-no" title="statement not covered" > buf.writeSlice(m.getRoot());</span>
|
|
299
|
-
<span class="cstat-no" title="statement not covered" > return buf.buffer();</span>
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
export type DefaultDescriptorTemplate =
|
|
304
|
-
| 'pkh(@0/**)'
|
|
305
|
-
| 'sh(wpkh(@0/**))'
|
|
306
|
-
| 'wpkh(@0/**)'
|
|
307
|
-
| 'tr(@0/**)';
|
|
308
|
-
|
|
309
|
-
/**
|
|
310
|
-
* Simplified class to handle default wallet policies that can be used without policy registration.
|
|
311
|
-
*/
|
|
312
|
-
export class DefaultWalletPolicy extends WalletPolicy {
|
|
313
|
-
constructor(descriptorTemplate: DefaultDescriptorTemplate, key: string) {
|
|
314
|
-
super('', descriptorTemplate, [key]);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
</pre></td></tr></table></pre>
|
|
318
|
-
|
|
319
|
-
<div class="push"></div>
|
|
320
|
-
<!-- for sticky footer -->
|
|
321
|
-
</div>
|
|
322
|
-
<!-- /wrapper -->
|
|
323
|
-
<div class="footer quiet pad2 space-top1 center small">
|
|
324
|
-
Code coverage generated by
|
|
325
|
-
<a
|
|
326
|
-
href="https://istanbul.js.org/"
|
|
327
|
-
target="_blank"
|
|
328
|
-
rel="noopener noreferrer"
|
|
329
|
-
>istanbul</a
|
|
330
|
-
>
|
|
331
|
-
at 2025-06-20T17:45:56.456Z
|
|
332
|
-
</div>
|
|
333
|
-
<script src="../../../../prettify.js"></script>
|
|
334
|
-
<script>
|
|
335
|
-
window.onload = function () {
|
|
336
|
-
prettyPrint();
|
|
337
|
-
};
|
|
338
|
-
</script>
|
|
339
|
-
<script src="../../../../sorter.js"></script>
|
|
340
|
-
<script src="../../../../block-navigation.js"></script>
|
|
341
|
-
</body>
|
|
342
|
-
</html>
|