@sidhujag/sysweb3-keyring 1.0.627 → 2.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 (140) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +66 -0
  3. package/cjs/hardware-wallet-manager.js +302 -128
  4. package/cjs/hardware-wallet-manager.js.map +1 -1
  5. package/cjs/keyring-core.js +2605 -0
  6. package/cjs/keyring-core.js.map +1 -0
  7. package/cjs/keyring-manager.js +31 -2439
  8. package/cjs/keyring-manager.js.map +1 -1
  9. package/cjs/ledger/bitcoin_client/lib/appClient.js.map +1 -1
  10. package/cjs/ledger/host-types.js +10 -0
  11. package/cjs/ledger/host-types.js.map +1 -0
  12. package/cjs/ledger/index.js +243 -447
  13. package/cjs/ledger/index.js.map +1 -1
  14. package/cjs/ledger/prepare-psbt.js +177 -0
  15. package/cjs/ledger/prepare-psbt.js.map +1 -0
  16. package/cjs/software-hd-account.js +23 -0
  17. package/cjs/software-hd-account.js.map +1 -0
  18. package/cjs/software.js +74 -0
  19. package/cjs/software.js.map +1 -0
  20. package/cjs/storage-core.js +227 -0
  21. package/cjs/storage-core.js.map +1 -0
  22. package/cjs/storage.js +15 -210
  23. package/cjs/storage.js.map +1 -1
  24. package/cjs/transactions/ethereum.js +176 -39
  25. package/cjs/transactions/ethereum.js.map +1 -1
  26. package/cjs/transactions/evm-local-signer.js +11 -1
  27. package/cjs/transactions/evm-local-signer.js.map +1 -1
  28. package/cjs/transactions/hardware-psbt.js +159 -0
  29. package/cjs/transactions/hardware-psbt.js.map +1 -0
  30. package/cjs/transactions/prepared-evm.js +196 -0
  31. package/cjs/transactions/prepared-evm.js.map +1 -0
  32. package/cjs/transactions/syscoin-core.js +651 -0
  33. package/cjs/transactions/syscoin-core.js.map +1 -0
  34. package/cjs/transactions/syscoin.js +8 -768
  35. package/cjs/transactions/syscoin.js.map +1 -1
  36. package/cjs/trezor/connect.js +243 -0
  37. package/cjs/trezor/connect.js.map +1 -0
  38. package/cjs/trezor/index.js +96 -58
  39. package/cjs/trezor/index.js.map +1 -1
  40. package/cjs/trezor/witness.js +25 -0
  41. package/cjs/trezor/witness.js.map +1 -0
  42. package/cjs/types.js.map +1 -1
  43. package/cjs/utils/psbt-account-scope.js +5 -3
  44. package/cjs/utils/psbt-account-scope.js.map +1 -1
  45. package/esm/errorUtils.js +72 -0
  46. package/esm/errorUtils.js.map +1 -0
  47. package/esm/ethers-v6.js +207 -0
  48. package/esm/ethers-v6.js.map +1 -0
  49. package/esm/hardware-wallet-manager.js +643 -0
  50. package/esm/hardware-wallet-manager.js.map +1 -0
  51. package/esm/ledger/bitcoin_client/lib/appClient.js +279 -0
  52. package/esm/ledger/bitcoin_client/lib/appClient.js.map +1 -0
  53. package/esm/ledger/bitcoin_client/lib/bip32.js +49 -0
  54. package/esm/ledger/bitcoin_client/lib/bip32.js.map +1 -0
  55. package/esm/ledger/bitcoin_client/lib/buffertools.js +119 -0
  56. package/esm/ledger/bitcoin_client/lib/buffertools.js.map +1 -0
  57. package/esm/ledger/bitcoin_client/lib/clientCommands.js +269 -0
  58. package/esm/ledger/bitcoin_client/lib/clientCommands.js.map +1 -0
  59. package/esm/ledger/bitcoin_client/lib/merkelizedPsbt.js +50 -0
  60. package/esm/ledger/bitcoin_client/lib/merkelizedPsbt.js.map +1 -0
  61. package/esm/ledger/bitcoin_client/lib/merkle.js +111 -0
  62. package/esm/ledger/bitcoin_client/lib/merkle.js.map +1 -0
  63. package/esm/ledger/bitcoin_client/lib/merkleMap.js +42 -0
  64. package/esm/ledger/bitcoin_client/lib/merkleMap.js.map +1 -0
  65. package/esm/ledger/bitcoin_client/lib/policy.js +68 -0
  66. package/esm/ledger/bitcoin_client/lib/policy.js.map +1 -0
  67. package/esm/ledger/bitcoin_client/lib/psbtv2.js +645 -0
  68. package/esm/ledger/bitcoin_client/lib/psbtv2.js.map +1 -0
  69. package/esm/ledger/bitcoin_client/lib/varint.js +108 -0
  70. package/esm/ledger/bitcoin_client/lib/varint.js.map +1 -0
  71. package/esm/ledger/consts.js +4 -0
  72. package/esm/ledger/consts.js.map +1 -0
  73. package/esm/ledger/dmk-evm.js +258 -0
  74. package/esm/ledger/dmk-evm.js.map +1 -0
  75. package/esm/ledger/dmk-session.js +264 -0
  76. package/esm/ledger/dmk-session.js.map +1 -0
  77. package/esm/ledger/dmk-utxo.js +279 -0
  78. package/esm/ledger/dmk-utxo.js.map +1 -0
  79. package/esm/ledger/host-types.js +5 -0
  80. package/esm/ledger/host-types.js.map +1 -0
  81. package/esm/ledger/index.js +268 -0
  82. package/esm/ledger/index.js.map +1 -0
  83. package/esm/ledger/prepare-psbt.js +141 -0
  84. package/esm/ledger/prepare-psbt.js.map +1 -0
  85. package/esm/ledger/types.js +2 -0
  86. package/esm/ledger/types.js.map +1 -0
  87. package/esm/ledger-host.js +36 -0
  88. package/esm/ledger-host.js.map +1 -0
  89. package/esm/private-records.js +153 -0
  90. package/esm/private-records.js.map +1 -0
  91. package/esm/providers.js +588 -0
  92. package/esm/providers.js.map +1 -0
  93. package/esm/signers.js +28 -0
  94. package/esm/signers.js.map +1 -0
  95. package/esm/trezor/connect.js +206 -0
  96. package/esm/trezor/connect.js.map +1 -0
  97. package/esm/trezor/index.js +876 -0
  98. package/esm/trezor/index.js.map +1 -0
  99. package/esm/trezor/witness.js +21 -0
  100. package/esm/trezor/witness.js.map +1 -0
  101. package/esm/types.js +17 -0
  102. package/esm/types.js.map +1 -0
  103. package/esm/utils/derivation-paths.js +109 -0
  104. package/esm/utils/derivation-paths.js.map +1 -0
  105. package/esm/utils/psbt-account-scope.js +310 -0
  106. package/esm/utils/psbt-account-scope.js.map +1 -0
  107. package/package.json +55 -8
  108. package/types/hardware-wallet-manager.d.ts +12 -19
  109. package/types/keyring-core.d.ts +263 -0
  110. package/types/keyring-manager.d.ts +7 -224
  111. package/types/ledger/bitcoin_client/lib/appClient.d.ts +6 -3
  112. package/types/ledger/dmk-evm.d.ts +8 -0
  113. package/types/ledger/dmk-session.d.ts +60 -0
  114. package/types/ledger/dmk-utxo.d.ts +26 -0
  115. package/types/ledger/host-types.d.ts +131 -0
  116. package/types/ledger/index.d.ts +21 -58
  117. package/types/ledger/prepare-psbt.d.ts +3 -0
  118. package/types/ledger/types.d.ts +3 -0
  119. package/types/ledger-host.d.ts +7 -0
  120. package/types/software-hd-account.d.ts +16 -0
  121. package/types/software.d.ts +39 -0
  122. package/types/storage-core.d.ts +22 -0
  123. package/types/storage.d.ts +1 -4
  124. package/types/transactions/ethereum.d.ts +17 -7
  125. package/types/transactions/evm-local-signer.d.ts +3 -1
  126. package/types/transactions/hardware-psbt.d.ts +7 -0
  127. package/types/transactions/prepared-evm.d.ts +53 -0
  128. package/types/transactions/syscoin-core.d.ts +92 -0
  129. package/types/transactions/syscoin.d.ts +8 -67
  130. package/types/trezor/connect.d.ts +42 -0
  131. package/types/trezor/index.d.ts +22 -4
  132. package/types/trezor/witness.d.ts +3 -0
  133. package/types/types.d.ts +10 -0
  134. package/types/utils/psbt-account-scope.d.ts +1 -0
  135. package/cjs/transactions/__tests__/integration.test.js +0 -237
  136. package/cjs/transactions/__tests__/integration.test.js.map +0 -1
  137. package/cjs/transactions/__tests__/syscoin.test.js +0 -361
  138. package/cjs/transactions/__tests__/syscoin.test.js.map +0 -1
  139. package/types/transactions/__tests__/integration.test.d.ts +0 -1
  140. package/types/transactions/__tests__/syscoin.test.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardware-psbt.js","sourceRoot":"","sources":["../../../src/transactions/hardware-psbt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.snapshotPreparedEvmRequest = snapshotPreparedEvmRequest;
4
+ exports.preparedEvmGuard = preparedEvmGuard;
5
+ exports.signPreparedEvmEnvelope = signPreparedEvmEnvelope;
6
+ const address_1 = require("ethers/address");
7
+ const crypto_1 = require("ethers/crypto");
8
+ const transaction_1 = require("ethers/transaction");
9
+ const evm_local_signer_1 = require("./evm-local-signer");
10
+ const UINT256 = (1n << 256n) - 1n;
11
+ const UINT64 = (1n << 64n) - 1n;
12
+ const MAX_DATA_BYTES = 16 * 1024;
13
+ const invalid = () => new TypeError('Invalid prepared EVM signing request');
14
+ /** Snapshot values without invoking accessors or accepting hidden fields. */
15
+ function record(value, keys) {
16
+ if (!value || typeof value !== 'object' || Array.isArray(value))
17
+ throw invalid();
18
+ const prototype = Object.getPrototypeOf(value);
19
+ if (prototype !== Object.prototype && prototype !== null)
20
+ throw invalid();
21
+ const names = Reflect.ownKeys(value);
22
+ if (names.length !== keys.length ||
23
+ names.some((key) => typeof key !== 'string' || !keys.includes(key)))
24
+ throw invalid();
25
+ const result = Object.create(null);
26
+ for (const key of keys) {
27
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
28
+ if (!descriptor ||
29
+ !descriptor.enumerable ||
30
+ !Object.prototype.hasOwnProperty.call(descriptor, 'value'))
31
+ throw invalid();
32
+ result[key] = descriptor.value;
33
+ }
34
+ return result;
35
+ }
36
+ function quantity(value, maximum = UINT256, positive = false) {
37
+ if (typeof value !== 'string' || !/^(0|[1-9][0-9]{0,77})$/.test(value))
38
+ throw invalid();
39
+ const parsed = BigInt(value);
40
+ if (parsed > maximum || (positive && parsed === 0n))
41
+ throw invalid();
42
+ return value;
43
+ }
44
+ function address(value) {
45
+ if (typeof value !== 'string' || !/^0x[0-9a-fA-F]{40}$/.test(value))
46
+ throw invalid();
47
+ let canonical;
48
+ try {
49
+ canonical = (0, address_1.getAddress)(value);
50
+ }
51
+ catch {
52
+ throw invalid();
53
+ }
54
+ if (/^0x0{40}$/i.test(canonical))
55
+ throw invalid();
56
+ return canonical;
57
+ }
58
+ function snapshotPreparedEvmRequest(input) {
59
+ const root = record(input, ['account', 'network', 'transaction']);
60
+ const account = record(root.account, ['id', 'type', 'expectedAddress']);
61
+ if (!Number.isSafeInteger(account.id) ||
62
+ account.id < 0 ||
63
+ account.id > 0x7fffffff ||
64
+ (account.type !== 'HDAccount' && account.type !== 'Imported'))
65
+ throw invalid();
66
+ const network = record(root.network, ['kind', 'chainId', 'slip44', 'url']);
67
+ if (network.kind !== 'ethereum' ||
68
+ network.slip44 !== 60 ||
69
+ typeof network.url !== 'string' ||
70
+ !network.url ||
71
+ network.url.length > 4096 ||
72
+ network.url.trim() !== network.url ||
73
+ /[\uD800-\uDFFF\u0000-\u001f\u007f]/u.test(network.url))
74
+ throw invalid();
75
+ const chainId = quantity(network.chainId, UINT256, true);
76
+ // Read the discriminator from a data property before choosing the exact schema.
77
+ if (!root.transaction || typeof root.transaction !== 'object')
78
+ throw invalid();
79
+ const typeDescriptor = Object.getOwnPropertyDescriptor(root.transaction, 'type');
80
+ if (!typeDescriptor ||
81
+ !Object.prototype.hasOwnProperty.call(typeDescriptor, 'value'))
82
+ throw invalid();
83
+ const type = typeDescriptor.value;
84
+ if (type !== 0 && type !== 2)
85
+ throw invalid();
86
+ const fields = [
87
+ 'type',
88
+ 'from',
89
+ 'to',
90
+ 'chainId',
91
+ 'nonce',
92
+ 'value',
93
+ 'gasLimit',
94
+ 'data',
95
+ ];
96
+ const transaction = record(root.transaction, type === 0
97
+ ? [...fields, 'gasPrice']
98
+ : [...fields, 'maxFeePerGas', 'maxPriorityFeePerGas']);
99
+ const from = address(transaction.from);
100
+ const expectedAddress = address(account.expectedAddress);
101
+ if (from !== expectedAddress ||
102
+ quantity(transaction.chainId, UINT256, true) !== chainId)
103
+ throw invalid();
104
+ if (typeof transaction.data !== 'string' ||
105
+ transaction.data.length > 2 + 2 * MAX_DATA_BYTES ||
106
+ !/^0x(?:[0-9a-fA-F]{2})*$/.test(transaction.data))
107
+ throw invalid();
108
+ const common = {
109
+ from,
110
+ to: address(transaction.to),
111
+ chainId,
112
+ nonce: quantity(transaction.nonce, BigInt(Number.MAX_SAFE_INTEGER)),
113
+ value: quantity(transaction.value),
114
+ gasLimit: quantity(transaction.gasLimit, UINT64, true),
115
+ data: transaction.data.toLowerCase(),
116
+ };
117
+ const fees = type === 0
118
+ ? { type: 0, gasPrice: quantity(transaction.gasPrice) }
119
+ : {
120
+ type: 2,
121
+ maxFeePerGas: quantity(transaction.maxFeePerGas),
122
+ maxPriorityFeePerGas: quantity(transaction.maxPriorityFeePerGas),
123
+ };
124
+ if (fees.type === 2 &&
125
+ BigInt(fees.maxPriorityFeePerGas) > BigInt(fees.maxFeePerGas))
126
+ throw invalid();
127
+ const maximumFee = BigInt(common.gasLimit) *
128
+ BigInt(fees.type === 0 ? fees.gasPrice : fees.maxFeePerGas);
129
+ if (maximumFee + BigInt(common.value) > UINT256)
130
+ throw invalid();
131
+ return Object.freeze({
132
+ account: Object.freeze({
133
+ id: account.id,
134
+ type: account.type,
135
+ expectedAddress,
136
+ }),
137
+ network: Object.freeze({
138
+ kind: 'ethereum',
139
+ chainId,
140
+ slip44: 60,
141
+ url: network.url,
142
+ }),
143
+ transaction: Object.freeze({ ...common, ...fees }),
144
+ });
145
+ }
146
+ function preparedEvmGuard(input) {
147
+ const options = record(input, ['assertCurrent']);
148
+ if (typeof options.assertCurrent !== 'function')
149
+ throw invalid();
150
+ const guard = options.assertCurrent;
151
+ return () => {
152
+ const result = guard();
153
+ if (result !== undefined) {
154
+ // Consume a rejected async guard without allowing it to authorize signing.
155
+ if (result !== null &&
156
+ (typeof result === 'object' || typeof result === 'function'))
157
+ void Promise.resolve(result).catch(() => undefined);
158
+ throw new TypeError('Prepared EVM signing guard must return undefined synchronously');
159
+ }
160
+ };
161
+ }
162
+ /** Internal, network-free signing. The key never becomes part of the result. */
163
+ function signPreparedEvmEnvelope(transaction, privateKey) {
164
+ const unsigned = {
165
+ type: transaction.type,
166
+ to: transaction.to,
167
+ chainId: BigInt(transaction.chainId),
168
+ nonce: Number(transaction.nonce),
169
+ value: BigInt(transaction.value),
170
+ gasLimit: BigInt(transaction.gasLimit),
171
+ data: transaction.data,
172
+ ...(transaction.type === 0
173
+ ? { gasPrice: BigInt(transaction.gasPrice) }
174
+ : {
175
+ maxFeePerGas: BigInt(transaction.maxFeePerGas),
176
+ maxPriorityFeePerGas: BigInt(transaction.maxPriorityFeePerGas),
177
+ }),
178
+ };
179
+ const expected = transaction_1.Transaction.from(unsigned);
180
+ const rawTransaction = (0, evm_local_signer_1.signTransaction)(unsigned, privateKey);
181
+ const signed = transaction_1.Transaction.from(rawTransaction);
182
+ if (!signed.isSigned() ||
183
+ signed.from !== transaction.from ||
184
+ signed.unsignedSerialized !== expected.unsignedSerialized ||
185
+ signed.unsignedHash !== expected.unsignedHash ||
186
+ signed.hash !== (0, crypto_1.keccak256)(rawTransaction))
187
+ throw new Error('Prepared EVM signature does not match requested transaction');
188
+ return Object.freeze({
189
+ rawTransaction,
190
+ hash: signed.hash,
191
+ unsignedHash: signed.unsignedHash,
192
+ from: signed.from,
193
+ transaction,
194
+ });
195
+ }
196
+ //# sourceMappingURL=prepared-evm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepared-evm.js","sourceRoot":"","sources":["../../../src/transactions/prepared-evm.ts"],"names":[],"mappings":"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"}