@sidhujag/sysweb3-keyring 2.1.6 → 2.1.8
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/CHANGELOG.md +12 -0
- package/cjs/hardware-transaction-authority.js +15 -11
- package/cjs/hardware-transaction-authority.js.map +1 -1
- package/cjs/hardware-wallet-manager.js +74 -119
- package/cjs/hardware-wallet-manager.js.map +1 -1
- package/cjs/hardware-wallet-types.js +16 -0
- package/cjs/hardware-wallet-types.js.map +1 -0
- package/cjs/host-keyring.js +32 -0
- package/cjs/host-keyring.js.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/keyring-core.js +96 -61
- package/cjs/keyring-core.js.map +1 -1
- package/cjs/keyring-manager.js +15 -16
- package/cjs/keyring-manager.js.map +1 -1
- package/cjs/ledger/host-types.js.map +1 -1
- package/cjs/ledger/index.js +24 -4
- package/cjs/ledger/index.js.map +1 -1
- package/cjs/ledger-hardware.js +15 -0
- package/cjs/ledger-hardware.js.map +1 -0
- package/cjs/software.js +6 -25
- package/cjs/software.js.map +1 -1
- package/cjs/transactions/ethereum.js +321 -269
- package/cjs/transactions/ethereum.js.map +1 -1
- package/cjs/transactions/evm-envelope.js +186 -0
- package/cjs/transactions/evm-envelope.js.map +1 -0
- package/cjs/transactions/evm-submission.js +32 -4
- package/cjs/transactions/evm-submission.js.map +1 -1
- package/cjs/transactions/ledger-signing.js +44 -0
- package/cjs/transactions/ledger-signing.js.map +1 -0
- package/cjs/transactions/prepared-evm.js +44 -124
- package/cjs/transactions/prepared-evm.js.map +1 -1
- package/cjs/trezor/connect.js +238 -243
- package/cjs/trezor/connect.js.map +1 -1
- package/cjs/trezor/host-types.js +19 -0
- package/cjs/trezor/host-types.js.map +1 -0
- package/cjs/trezor/index.js +75 -23
- package/cjs/trezor/index.js.map +1 -1
- package/cjs/trezor/webextension-host.js +118 -0
- package/cjs/trezor/webextension-host.js.map +1 -0
- package/cjs/trezor-hardware.js +16 -0
- package/cjs/trezor-hardware.js.map +1 -0
- package/cjs/types.js.map +1 -1
- package/esm/hardware-transaction-authority.js +14 -11
- package/esm/hardware-transaction-authority.js.map +1 -1
- package/esm/hardware-wallet-manager.js +20 -32
- package/esm/hardware-wallet-manager.js.map +1 -1
- package/esm/hardware-wallet-types.js +13 -0
- package/esm/hardware-wallet-types.js.map +1 -0
- package/esm/keyring-core.js +98 -63
- package/esm/keyring-core.js.map +1 -1
- package/esm/ledger/dmk-host.js +2 -0
- package/esm/ledger/dmk-host.js.map +1 -1
- package/esm/ledger/dmk-session.js +73 -8
- package/esm/ledger/dmk-session.js.map +1 -1
- package/esm/ledger/host-types.js.map +1 -1
- package/esm/ledger/index.js +22 -2
- package/esm/ledger/index.js.map +1 -1
- package/esm/transactions/ethereum.js +322 -270
- package/esm/transactions/ethereum.js.map +1 -1
- package/esm/transactions/evm-envelope.js +179 -0
- package/esm/transactions/evm-envelope.js.map +1 -0
- package/esm/transactions/evm-submission.js +32 -4
- package/esm/transactions/evm-submission.js.map +1 -1
- package/esm/transactions/ledger-signing.js +41 -0
- package/esm/transactions/ledger-signing.js.map +1 -0
- package/esm/transactions/prepared-evm.js +43 -124
- package/esm/transactions/prepared-evm.js.map +1 -1
- package/esm/trezor/connect.js +236 -209
- package/esm/trezor/connect.js.map +1 -1
- package/esm/trezor/host-types.js +16 -0
- package/esm/trezor/host-types.js.map +1 -0
- package/esm/trezor/index.js +74 -22
- package/esm/trezor/index.js.map +1 -1
- package/esm/types.js.map +1 -1
- package/package.json +61 -1
- package/types/hardware-transaction-authority.d.ts +1 -0
- package/types/hardware-wallet-manager.d.ts +6 -22
- package/types/hardware-wallet-types.d.ts +21 -0
- package/types/host-keyring.d.ts +16 -0
- package/types/index.d.ts +1 -0
- package/types/keyring-core.d.ts +12 -4
- package/types/keyring-manager.d.ts +5 -3
- package/types/ledger/dmk-host.d.ts +2 -0
- package/types/ledger/dmk-session.d.ts +9 -0
- package/types/ledger/host-types.d.ts +2 -0
- package/types/ledger/index.d.ts +3 -1
- package/types/ledger-hardware.d.ts +5 -0
- package/types/software.d.ts +4 -17
- package/types/transactions/ethereum.d.ts +11 -1
- package/types/transactions/evm-envelope.d.ts +64 -0
- package/types/transactions/evm-submission.d.ts +7 -2
- package/types/transactions/ledger-signing.d.ts +13 -0
- package/types/transactions/prepared-evm.d.ts +14 -23
- package/types/trezor/connect.d.ts +11 -9
- package/types/trezor/host-types.d.ts +25 -0
- package/types/trezor/index.d.ts +7 -7
- package/types/trezor/webextension-host.d.ts +7 -0
- package/types/trezor-hardware.d.ts +6 -0
- package/types/types.d.ts +17 -5
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readEvmOwnData = readEvmOwnData;
|
|
4
|
+
exports.snapshotEvmAccessList = snapshotEvmAccessList;
|
|
5
|
+
exports.snapshotPreparedEvmTransaction = snapshotPreparedEvmTransaction;
|
|
6
|
+
exports.prepareUnsignedEvmEnvelope = prepareUnsignedEvmEnvelope;
|
|
7
|
+
exports.serializePreparedEvmTransaction = serializePreparedEvmTransaction;
|
|
8
|
+
const address_1 = require("ethers/address");
|
|
9
|
+
const transaction_1 = require("ethers/transaction");
|
|
10
|
+
const evm_fees_1 = require("../evm-fees");
|
|
11
|
+
const UINT256 = (1n << 256n) - 1n;
|
|
12
|
+
const UINT64 = (1n << 64n) - 1n;
|
|
13
|
+
// A 1 MiB JSON RPC request can contain less than 512 KiB of hex calldata.
|
|
14
|
+
const MAX_DATA_BYTES = 512 * 1024;
|
|
15
|
+
const MAX_ACCESS_LIST_ITEMS = 10000;
|
|
16
|
+
const invalid = () => new TypeError('Invalid prepared EVM signing request');
|
|
17
|
+
/** Snapshot values without invoking accessors or accepting hidden fields. */
|
|
18
|
+
/** @internal Strict own-data snapshot shared with prepared request binding. */
|
|
19
|
+
function readEvmOwnData(value, keys) {
|
|
20
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
21
|
+
throw invalid();
|
|
22
|
+
const prototype = Object.getPrototypeOf(value);
|
|
23
|
+
if (prototype !== Object.prototype && prototype !== null)
|
|
24
|
+
throw invalid();
|
|
25
|
+
const names = Reflect.ownKeys(value);
|
|
26
|
+
if (names.length !== keys.length ||
|
|
27
|
+
names.some((key) => typeof key !== 'string' || !keys.includes(key)))
|
|
28
|
+
throw invalid();
|
|
29
|
+
const result = Object.create(null);
|
|
30
|
+
for (const key of keys) {
|
|
31
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
32
|
+
if (!descriptor ||
|
|
33
|
+
!descriptor.enumerable ||
|
|
34
|
+
!Object.prototype.hasOwnProperty.call(descriptor, 'value'))
|
|
35
|
+
throw invalid();
|
|
36
|
+
result[key] = descriptor.value;
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
function quantity(value, maximum = UINT256, positive = false) {
|
|
41
|
+
if (typeof value !== 'string' || !/^(0|[1-9][0-9]{0,77})$/.test(value))
|
|
42
|
+
throw invalid();
|
|
43
|
+
const parsed = BigInt(value);
|
|
44
|
+
if (parsed > maximum || (positive && parsed === 0n))
|
|
45
|
+
throw invalid();
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
function address(value) {
|
|
49
|
+
if (typeof value !== 'string' || !/^0x[0-9a-fA-F]{40}$/.test(value))
|
|
50
|
+
throw invalid();
|
|
51
|
+
let canonical;
|
|
52
|
+
try {
|
|
53
|
+
canonical = (0, address_1.getAddress)(value);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
throw invalid();
|
|
57
|
+
}
|
|
58
|
+
return canonical;
|
|
59
|
+
}
|
|
60
|
+
function sender(value) {
|
|
61
|
+
const canonical = address(value);
|
|
62
|
+
if (/^0x0{40}$/i.test(canonical))
|
|
63
|
+
throw invalid();
|
|
64
|
+
return canonical;
|
|
65
|
+
}
|
|
66
|
+
function arrayData(value, maximum) {
|
|
67
|
+
if (!Array.isArray(value) ||
|
|
68
|
+
Object.getPrototypeOf(value) !== Array.prototype ||
|
|
69
|
+
value.length > maximum ||
|
|
70
|
+
Reflect.ownKeys(value).length !== value.length + 1)
|
|
71
|
+
throw invalid();
|
|
72
|
+
const values = [];
|
|
73
|
+
for (let index = 0; index < value.length; index++) {
|
|
74
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, index);
|
|
75
|
+
if (!descriptor?.enumerable || !('value' in descriptor))
|
|
76
|
+
throw invalid();
|
|
77
|
+
values.push(descriptor.value);
|
|
78
|
+
}
|
|
79
|
+
return values;
|
|
80
|
+
}
|
|
81
|
+
/** Copy bounded own data while preserving the signed order and duplicates. */
|
|
82
|
+
function snapshotEvmAccessList(value) {
|
|
83
|
+
const entries = arrayData(value, MAX_ACCESS_LIST_ITEMS);
|
|
84
|
+
let remaining = MAX_ACCESS_LIST_ITEMS - entries.length;
|
|
85
|
+
return Object.freeze(entries.map((entry) => {
|
|
86
|
+
const fields = readEvmOwnData(entry, ['address', 'storageKeys']);
|
|
87
|
+
const keys = arrayData(fields.storageKeys, remaining);
|
|
88
|
+
remaining -= keys.length;
|
|
89
|
+
const storageKeys = keys.map((key) => {
|
|
90
|
+
if (typeof key !== 'string' || !/^0x[0-9a-fA-F]{64}$/.test(key))
|
|
91
|
+
throw invalid();
|
|
92
|
+
return key.toLowerCase();
|
|
93
|
+
});
|
|
94
|
+
return Object.freeze({
|
|
95
|
+
address: address(fields.address),
|
|
96
|
+
storageKeys: Object.freeze(storageKeys),
|
|
97
|
+
});
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
function snapshotPreparedEvmTransaction(input) {
|
|
101
|
+
// Read the discriminator from a data property before choosing the exact schema.
|
|
102
|
+
if (!input || typeof input !== 'object')
|
|
103
|
+
throw invalid();
|
|
104
|
+
const typeDescriptor = Object.getOwnPropertyDescriptor(input, 'type');
|
|
105
|
+
if (!typeDescriptor ||
|
|
106
|
+
!Object.prototype.hasOwnProperty.call(typeDescriptor, 'value'))
|
|
107
|
+
throw invalid();
|
|
108
|
+
const type = typeDescriptor.value;
|
|
109
|
+
if (type !== 0 && type !== 2)
|
|
110
|
+
throw invalid();
|
|
111
|
+
const fields = [
|
|
112
|
+
'type',
|
|
113
|
+
'from',
|
|
114
|
+
'to',
|
|
115
|
+
'chainId',
|
|
116
|
+
'nonce',
|
|
117
|
+
'value',
|
|
118
|
+
'gasLimit',
|
|
119
|
+
'data',
|
|
120
|
+
];
|
|
121
|
+
const transaction = readEvmOwnData(input, type === 0
|
|
122
|
+
? [...fields, 'gasPrice']
|
|
123
|
+
: [...fields, 'maxFeePerGas', 'maxPriorityFeePerGas', 'accessList']);
|
|
124
|
+
const from = sender(transaction.from);
|
|
125
|
+
const chainId = quantity(transaction.chainId, UINT256, true);
|
|
126
|
+
if (typeof transaction.data !== 'string' ||
|
|
127
|
+
transaction.data.length > 2 + 2 * MAX_DATA_BYTES ||
|
|
128
|
+
!/^0x(?:[0-9a-fA-F]{2})*$/.test(transaction.data))
|
|
129
|
+
throw invalid();
|
|
130
|
+
const common = {
|
|
131
|
+
from,
|
|
132
|
+
to: transaction.to === null ? null : address(transaction.to),
|
|
133
|
+
chainId,
|
|
134
|
+
nonce: quantity(transaction.nonce, BigInt(Number.MAX_SAFE_INTEGER)),
|
|
135
|
+
value: quantity(transaction.value),
|
|
136
|
+
gasLimit: quantity(transaction.gasLimit, UINT64, true),
|
|
137
|
+
data: transaction.data.toLowerCase(),
|
|
138
|
+
};
|
|
139
|
+
(0, evm_fees_1.assertEvmGasLimit)(BigInt(common.gasLimit), BigInt(chainId));
|
|
140
|
+
const fees = type === 0
|
|
141
|
+
? { type: 0, gasPrice: quantity(transaction.gasPrice) }
|
|
142
|
+
: {
|
|
143
|
+
type: 2,
|
|
144
|
+
maxFeePerGas: quantity(transaction.maxFeePerGas),
|
|
145
|
+
maxPriorityFeePerGas: quantity(transaction.maxPriorityFeePerGas),
|
|
146
|
+
accessList: snapshotEvmAccessList(transaction.accessList),
|
|
147
|
+
};
|
|
148
|
+
if (fees.type === 2 &&
|
|
149
|
+
BigInt(fees.maxPriorityFeePerGas) > BigInt(fees.maxFeePerGas))
|
|
150
|
+
throw invalid();
|
|
151
|
+
const maximumFee = BigInt(common.gasLimit) *
|
|
152
|
+
BigInt(fees.type === 0 ? fees.gasPrice : fees.maxFeePerGas);
|
|
153
|
+
if (maximumFee + BigInt(common.value) > UINT256)
|
|
154
|
+
throw invalid();
|
|
155
|
+
return Object.freeze({ ...common, ...fees });
|
|
156
|
+
}
|
|
157
|
+
/** @internal The same validated fields feed unsigned serialization and signing. */
|
|
158
|
+
function prepareUnsignedEvmEnvelope(input) {
|
|
159
|
+
const transaction = snapshotPreparedEvmTransaction(input);
|
|
160
|
+
const unsigned = {
|
|
161
|
+
type: transaction.type,
|
|
162
|
+
to: transaction.to,
|
|
163
|
+
chainId: BigInt(transaction.chainId),
|
|
164
|
+
nonce: Number(transaction.nonce),
|
|
165
|
+
value: BigInt(transaction.value),
|
|
166
|
+
gasLimit: BigInt(transaction.gasLimit),
|
|
167
|
+
data: transaction.data,
|
|
168
|
+
...(transaction.type === 0
|
|
169
|
+
? { gasPrice: BigInt(transaction.gasPrice) }
|
|
170
|
+
: {
|
|
171
|
+
maxFeePerGas: BigInt(transaction.maxFeePerGas),
|
|
172
|
+
maxPriorityFeePerGas: BigInt(transaction.maxPriorityFeePerGas),
|
|
173
|
+
accessList: transaction.accessList.map((entry) => ({
|
|
174
|
+
address: entry.address,
|
|
175
|
+
storageKeys: [...entry.storageKeys],
|
|
176
|
+
})),
|
|
177
|
+
}),
|
|
178
|
+
};
|
|
179
|
+
const expectedUnsigned = transaction_1.Transaction.from(unsigned).unsignedSerialized;
|
|
180
|
+
return { transaction, unsigned, expectedUnsigned };
|
|
181
|
+
}
|
|
182
|
+
/** Validate and serialize the exact envelope used by prepared signing. */
|
|
183
|
+
function serializePreparedEvmTransaction(transaction) {
|
|
184
|
+
return prepareUnsignedEvmEnvelope(transaction).expectedUnsigned;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=evm-envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evm-envelope.js","sourceRoot":"","sources":["../../../src/transactions/evm-envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ exports.assertSignedEvmTransactionMatches = assertSignedEvmTransactionMatches;
|
|
|
8
8
|
exports.submitSignedEvmTransaction = submitSignedEvmTransaction;
|
|
9
9
|
exports.submitSignedHardwareEvmTransaction = submitSignedHardwareEvmTransaction;
|
|
10
10
|
const transaction_1 = require("ethers/transaction");
|
|
11
|
+
const evm_envelope_1 = require("./evm-envelope");
|
|
11
12
|
const capturedBoundaries = new WeakSet();
|
|
12
13
|
function assertSynchronous(check) {
|
|
13
14
|
const result = check();
|
|
@@ -22,6 +23,19 @@ function assertSynchronous(check) {
|
|
|
22
23
|
/** Capture once, before RPC or device work. Never reread host capabilities later. */
|
|
23
24
|
function captureEvmSubmission(input, assertCurrent, capture) {
|
|
24
25
|
const { origin, walletNonce } = input;
|
|
26
|
+
const inputReview = input.review;
|
|
27
|
+
const review = inputReview === undefined
|
|
28
|
+
? undefined
|
|
29
|
+
: (0, evm_envelope_1.readEvmOwnData)(inputReview, ['id', 'unsignedHash']);
|
|
30
|
+
if (review !== undefined &&
|
|
31
|
+
(input.operation !== 'send' ||
|
|
32
|
+
!walletNonce ||
|
|
33
|
+
!review ||
|
|
34
|
+
typeof review.id !== 'string' ||
|
|
35
|
+
!/^[A-Za-z0-9_-]{1,128}$/.test(review.id) ||
|
|
36
|
+
typeof review.unsignedHash !== 'string' ||
|
|
37
|
+
!/^0x[0-9a-f]{64}$/.test(review.unsignedHash)))
|
|
38
|
+
throw new TypeError('Invalid EVM fee review identity');
|
|
25
39
|
let approvedWalletNonce;
|
|
26
40
|
if (walletNonce !== undefined) {
|
|
27
41
|
if (!walletNonce ||
|
|
@@ -39,6 +53,14 @@ function captureEvmSubmission(input, assertCurrent, capture) {
|
|
|
39
53
|
account: Object.freeze({ ...input.account }),
|
|
40
54
|
network: Object.freeze({ ...input.network }),
|
|
41
55
|
operation: input.operation,
|
|
56
|
+
...(review
|
|
57
|
+
? {
|
|
58
|
+
review: Object.freeze({
|
|
59
|
+
id: review.id,
|
|
60
|
+
unsignedHash: review.unsignedHash,
|
|
61
|
+
}),
|
|
62
|
+
}
|
|
63
|
+
: {}),
|
|
42
64
|
...(approvedWalletNonce ? { walletNonce: approvedWalletNonce } : {}),
|
|
43
65
|
...(input.originalHash !== undefined
|
|
44
66
|
? { originalHash: input.originalHash }
|
|
@@ -77,7 +99,13 @@ function captureEvmSubmission(input, assertCurrent, capture) {
|
|
|
77
99
|
const boundary = Object.freeze({
|
|
78
100
|
context,
|
|
79
101
|
assertCurrent: guard,
|
|
80
|
-
persistSigned
|
|
102
|
+
persistSigned: (record) => {
|
|
103
|
+
if (context.review &&
|
|
104
|
+
transaction_1.Transaction.from(record.rawTransaction).unsignedHash !==
|
|
105
|
+
context.review.unsignedHash)
|
|
106
|
+
throw new Error('Signed EVM transaction does not match its fee review');
|
|
107
|
+
return persistSigned(record);
|
|
108
|
+
},
|
|
81
109
|
dispatchSigned,
|
|
82
110
|
});
|
|
83
111
|
capturedBoundaries.add(boundary);
|
|
@@ -90,11 +118,11 @@ function assertDurableEvmSubmission(boundary) {
|
|
|
90
118
|
boundary.assertCurrent();
|
|
91
119
|
}
|
|
92
120
|
const failures = new WeakMap();
|
|
93
|
-
/**
|
|
121
|
+
/** Return owned stage evidence only; unrecognized errors carry no classification. */
|
|
94
122
|
function evmSubmissionFailure(error) {
|
|
95
|
-
return
|
|
123
|
+
return error && (typeof error === 'object' || typeof error === 'function')
|
|
96
124
|
? failures.get(error)
|
|
97
|
-
: undefined
|
|
125
|
+
: undefined;
|
|
98
126
|
}
|
|
99
127
|
/** Preserve local evidence when an existing public API wraps its Error object. */
|
|
100
128
|
function copyEvmSubmissionFailure(source, target) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-submission.js","sourceRoot":"","sources":["../../../src/transactions/evm-submission.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evm-submission.js","sourceRoot":"","sources":["../../../src/transactions/evm-submission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.signLedgerEvmTransaction = signLedgerEvmTransaction;
|
|
4
|
+
const address_1 = require("ethers/address");
|
|
5
|
+
const crypto_1 = require("ethers/crypto");
|
|
6
|
+
const transaction_1 = require("ethers/transaction");
|
|
7
|
+
const evm_submission_1 = require("./evm-submission");
|
|
8
|
+
const hardware_transaction_authority_1 = require("../hardware-transaction-authority");
|
|
9
|
+
/** Sign the reviewed bytes through the shared Ledger adapter without changing fees or nonce. */
|
|
10
|
+
async function signLedgerEvmTransaction(signer, request, authority) {
|
|
11
|
+
const owner = (0, hardware_transaction_authority_1.captureHardwareTransactionAuthority)(authority);
|
|
12
|
+
const { accountIndex, unsignedTransaction } = request;
|
|
13
|
+
const expectedAddress = (0, address_1.getAddress)(request.expectedAddress);
|
|
14
|
+
if (!Number.isSafeInteger(accountIndex) ||
|
|
15
|
+
accountIndex < 0 ||
|
|
16
|
+
accountIndex > 0x7fffffff ||
|
|
17
|
+
typeof unsignedTransaction !== 'string')
|
|
18
|
+
throw new TypeError('Invalid reviewed Ledger transaction');
|
|
19
|
+
const transaction = transaction_1.Transaction.from(unsignedTransaction);
|
|
20
|
+
if (transaction.isSigned() ||
|
|
21
|
+
transaction.chainId <= 0n ||
|
|
22
|
+
transaction.unsignedSerialized !== unsignedTransaction)
|
|
23
|
+
throw new TypeError('Ledger signing requires canonical unsigned transaction bytes');
|
|
24
|
+
owner.assertCurrent();
|
|
25
|
+
const signature = await signer.evm.signEVMTransaction({
|
|
26
|
+
accountIndex,
|
|
27
|
+
expectedAddress,
|
|
28
|
+
rawTx: unsignedTransaction.slice(2),
|
|
29
|
+
}, owner);
|
|
30
|
+
owner.assertCurrent();
|
|
31
|
+
transaction.signature = crypto_1.Signature.from({
|
|
32
|
+
r: `0x${signature.r}`,
|
|
33
|
+
s: `0x${signature.s}`,
|
|
34
|
+
v: Number.parseInt(signature.v, 16),
|
|
35
|
+
});
|
|
36
|
+
const rawTransaction = transaction.serialized;
|
|
37
|
+
if (transaction.from?.toLowerCase() !== expectedAddress.toLowerCase()) {
|
|
38
|
+
throw Object.assign(new Error('Hardware signature does not match the approved account'), { code: 'HARDWARE_ACCOUNT_MISMATCH', transactionNotBroadcast: true });
|
|
39
|
+
}
|
|
40
|
+
const checked = (0, evm_submission_1.assertSignedEvmTransactionMatches)(rawTransaction, unsignedTransaction, expectedAddress);
|
|
41
|
+
owner.assertCurrent();
|
|
42
|
+
return Object.freeze({ rawTransaction, hash: checked.hash });
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=ledger-signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-signing.js","sourceRoot":"","sources":["../../../src/transactions/ledger-signing.ts"],"names":[],"mappings":";;AAWA,4DAyDC;AApED,4CAA4C;AAC5C,0CAA0C;AAC1C,oDAAiD;AAEjD,qDAAqE;AACrE,sFAAwF;AAKxF,gGAAgG;AACzF,KAAK,UAAU,wBAAwB,CAC5C,MAAwD,EACxD,OAIE,EACF,SAAuC;IAEvC,MAAM,KAAK,GAAG,IAAA,oEAAmC,EAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IACtD,MAAM,eAAe,GAAG,IAAA,oBAAU,EAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5D,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;QACnC,YAAY,GAAG,CAAC;QAChB,YAAY,GAAG,UAAU;QACzB,OAAO,mBAAmB,KAAK,QAAQ;QAEvC,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,yBAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1D,IACE,WAAW,CAAC,QAAQ,EAAE;QACtB,WAAW,CAAC,OAAO,IAAI,EAAE;QACzB,WAAW,CAAC,kBAAkB,KAAK,mBAAmB;QAEtD,MAAM,IAAI,SAAS,CACjB,8DAA8D,CAC/D,CAAC;IACJ,KAAK,CAAC,aAAa,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,CACnD;QACE,YAAY;QACZ,eAAe;QACf,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;KACpC,EACD,KAAK,CACN,CAAC;IACF,KAAK,CAAC,aAAa,EAAE,CAAC;IACtB,WAAW,CAAC,SAAS,GAAG,kBAAS,CAAC,IAAI,CAAC;QACrC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,EAAE;QACrB,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,EAAE;QACrB,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC;IAC9C,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;QACtE,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,wDAAwD,CAAC,EACnE,EAAE,IAAI,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,IAAI,EAAE,CACrE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,kDAAiC,EAC/C,cAAc,EACd,mBAAmB,EACnB,eAAe,CAChB,CAAC;IACF,KAAK,CAAC,aAAa,EAAE,CAAC;IACtB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,IAAK,EAAE,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1,71 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.snapshotEvmSigningIdentity = snapshotEvmSigningIdentity;
|
|
3
4
|
exports.snapshotPreparedEvmRequest = snapshotPreparedEvmRequest;
|
|
4
5
|
exports.preparedEvmGuard = preparedEvmGuard;
|
|
5
6
|
exports.signPreparedEvmEnvelope = signPreparedEvmEnvelope;
|
|
6
7
|
const address_1 = require("ethers/address");
|
|
7
8
|
const crypto_1 = require("ethers/crypto");
|
|
8
|
-
const
|
|
9
|
-
const evm_fees_1 = require("../evm-fees");
|
|
9
|
+
const evm_envelope_1 = require("./evm-envelope");
|
|
10
10
|
const evm_local_signer_1 = require("./evm-local-signer");
|
|
11
11
|
const evm_submission_1 = require("./evm-submission");
|
|
12
|
-
const UINT256 = (1n << 256n) - 1n;
|
|
13
|
-
const UINT64 = (1n << 64n) - 1n;
|
|
14
|
-
const MAX_DATA_BYTES = 16 * 1024;
|
|
15
12
|
const invalid = () => new TypeError('Invalid prepared EVM signing request');
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (!
|
|
13
|
+
function snapshotEvmSigningIdentity(input) {
|
|
14
|
+
const identity = (0, evm_envelope_1.readEvmOwnData)(input, ['id', 'type', 'expectedAddress']);
|
|
15
|
+
if (!Number.isSafeInteger(identity.id) ||
|
|
16
|
+
identity.id < 0 ||
|
|
17
|
+
identity.id > 0x7fffffff ||
|
|
18
|
+
!['HDAccount', 'Imported', 'Ledger', 'Trezor', 'SmartAccount'].includes(identity.type) ||
|
|
19
|
+
typeof identity.expectedAddress !== 'string' ||
|
|
20
|
+
!/^0x[0-9a-fA-F]{40}$/.test(identity.expectedAddress))
|
|
19
21
|
throw invalid();
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
names.some((key) => typeof key !== 'string' || !keys.includes(key)))
|
|
26
|
-
throw invalid();
|
|
27
|
-
const result = Object.create(null);
|
|
28
|
-
for (const key of keys) {
|
|
29
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
30
|
-
if (!descriptor ||
|
|
31
|
-
!descriptor.enumerable ||
|
|
32
|
-
!Object.prototype.hasOwnProperty.call(descriptor, 'value'))
|
|
33
|
-
throw invalid();
|
|
34
|
-
result[key] = descriptor.value;
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
function quantity(value, maximum = UINT256, positive = false) {
|
|
39
|
-
if (typeof value !== 'string' || !/^(0|[1-9][0-9]{0,77})$/.test(value))
|
|
40
|
-
throw invalid();
|
|
41
|
-
const parsed = BigInt(value);
|
|
42
|
-
if (parsed > maximum || (positive && parsed === 0n))
|
|
43
|
-
throw invalid();
|
|
44
|
-
return value;
|
|
45
|
-
}
|
|
46
|
-
function address(value) {
|
|
47
|
-
if (typeof value !== 'string' || !/^0x[0-9a-fA-F]{40}$/.test(value))
|
|
48
|
-
throw invalid();
|
|
49
|
-
let canonical;
|
|
50
|
-
try {
|
|
51
|
-
canonical = (0, address_1.getAddress)(value);
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
throw invalid();
|
|
55
|
-
}
|
|
56
|
-
if (/^0x0{40}$/i.test(canonical))
|
|
57
|
-
throw invalid();
|
|
58
|
-
return canonical;
|
|
22
|
+
return Object.freeze({
|
|
23
|
+
id: identity.id,
|
|
24
|
+
type: identity.type,
|
|
25
|
+
expectedAddress: (0, address_1.getAddress)(identity.expectedAddress),
|
|
26
|
+
});
|
|
59
27
|
}
|
|
60
28
|
function snapshotPreparedEvmRequest(input) {
|
|
61
|
-
const root =
|
|
62
|
-
|
|
29
|
+
const root = (0, evm_envelope_1.readEvmOwnData)(input, [
|
|
30
|
+
'selectedAccount',
|
|
31
|
+
'account',
|
|
32
|
+
'network',
|
|
33
|
+
'transaction',
|
|
34
|
+
]);
|
|
35
|
+
const selectedAccount = snapshotEvmSigningIdentity(root.selectedAccount);
|
|
36
|
+
const account = (0, evm_envelope_1.readEvmOwnData)(root.account, [
|
|
37
|
+
'id',
|
|
38
|
+
'type',
|
|
39
|
+
'expectedAddress',
|
|
40
|
+
]);
|
|
63
41
|
if (!Number.isSafeInteger(account.id) ||
|
|
64
42
|
account.id < 0 ||
|
|
65
43
|
account.id > 0x7fffffff ||
|
|
66
44
|
(account.type !== 'HDAccount' && account.type !== 'Imported'))
|
|
67
45
|
throw invalid();
|
|
68
|
-
const network =
|
|
46
|
+
const network = (0, evm_envelope_1.readEvmOwnData)(root.network, [
|
|
47
|
+
'kind',
|
|
48
|
+
'chainId',
|
|
49
|
+
'slip44',
|
|
50
|
+
'url',
|
|
51
|
+
]);
|
|
69
52
|
if (network.kind !== 'ethereum' ||
|
|
70
53
|
network.slip44 !== 60 ||
|
|
71
54
|
typeof network.url !== 'string' ||
|
|
@@ -75,64 +58,16 @@ function snapshotPreparedEvmRequest(input) {
|
|
|
75
58
|
// eslint-disable-next-line no-control-regex -- Reject endpoint control characters and lone surrogates.
|
|
76
59
|
/[\uD800-\uDFFF\u0000-\u001f\u007f]/u.test(network.url))
|
|
77
60
|
throw invalid();
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
throw invalid();
|
|
82
|
-
const typeDescriptor = Object.getOwnPropertyDescriptor(root.transaction, 'type');
|
|
83
|
-
if (!typeDescriptor ||
|
|
84
|
-
!Object.prototype.hasOwnProperty.call(typeDescriptor, 'value'))
|
|
61
|
+
const transaction = (0, evm_envelope_1.snapshotPreparedEvmTransaction)(root.transaction);
|
|
62
|
+
if (typeof account.expectedAddress !== 'string' ||
|
|
63
|
+
!/^0x[0-9a-fA-F]{40}$/.test(account.expectedAddress))
|
|
85
64
|
throw invalid();
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const fields = [
|
|
90
|
-
'type',
|
|
91
|
-
'from',
|
|
92
|
-
'to',
|
|
93
|
-
'chainId',
|
|
94
|
-
'nonce',
|
|
95
|
-
'value',
|
|
96
|
-
'gasLimit',
|
|
97
|
-
'data',
|
|
98
|
-
];
|
|
99
|
-
const transaction = record(root.transaction, type === 0
|
|
100
|
-
? [...fields, 'gasPrice']
|
|
101
|
-
: [...fields, 'maxFeePerGas', 'maxPriorityFeePerGas']);
|
|
102
|
-
const from = address(transaction.from);
|
|
103
|
-
const expectedAddress = address(account.expectedAddress);
|
|
104
|
-
if (from !== expectedAddress ||
|
|
105
|
-
quantity(transaction.chainId, UINT256, true) !== chainId)
|
|
106
|
-
throw invalid();
|
|
107
|
-
if (typeof transaction.data !== 'string' ||
|
|
108
|
-
transaction.data.length > 2 + 2 * MAX_DATA_BYTES ||
|
|
109
|
-
!/^0x(?:[0-9a-fA-F]{2})*$/.test(transaction.data))
|
|
110
|
-
throw invalid();
|
|
111
|
-
const common = {
|
|
112
|
-
from,
|
|
113
|
-
to: address(transaction.to),
|
|
114
|
-
chainId,
|
|
115
|
-
nonce: quantity(transaction.nonce, BigInt(Number.MAX_SAFE_INTEGER)),
|
|
116
|
-
value: quantity(transaction.value),
|
|
117
|
-
gasLimit: quantity(transaction.gasLimit, UINT64, true),
|
|
118
|
-
data: transaction.data.toLowerCase(),
|
|
119
|
-
};
|
|
120
|
-
(0, evm_fees_1.assertEvmGasLimit)(BigInt(common.gasLimit), BigInt(chainId));
|
|
121
|
-
const fees = type === 0
|
|
122
|
-
? { type: 0, gasPrice: quantity(transaction.gasPrice) }
|
|
123
|
-
: {
|
|
124
|
-
type: 2,
|
|
125
|
-
maxFeePerGas: quantity(transaction.maxFeePerGas),
|
|
126
|
-
maxPriorityFeePerGas: quantity(transaction.maxPriorityFeePerGas),
|
|
127
|
-
};
|
|
128
|
-
if (fees.type === 2 &&
|
|
129
|
-
BigInt(fees.maxPriorityFeePerGas) > BigInt(fees.maxFeePerGas))
|
|
130
|
-
throw invalid();
|
|
131
|
-
const maximumFee = BigInt(common.gasLimit) *
|
|
132
|
-
BigInt(fees.type === 0 ? fees.gasPrice : fees.maxFeePerGas);
|
|
133
|
-
if (maximumFee + BigInt(common.value) > UINT256)
|
|
65
|
+
const expectedAddress = (0, address_1.getAddress)(account.expectedAddress);
|
|
66
|
+
const chainId = transaction.chainId;
|
|
67
|
+
if (transaction.from !== expectedAddress || network.chainId !== chainId)
|
|
134
68
|
throw invalid();
|
|
135
69
|
return Object.freeze({
|
|
70
|
+
selectedAccount,
|
|
136
71
|
account: Object.freeze({
|
|
137
72
|
id: account.id,
|
|
138
73
|
type: account.type,
|
|
@@ -144,11 +79,11 @@ function snapshotPreparedEvmRequest(input) {
|
|
|
144
79
|
slip44: 60,
|
|
145
80
|
url: network.url,
|
|
146
81
|
}),
|
|
147
|
-
transaction
|
|
82
|
+
transaction,
|
|
148
83
|
});
|
|
149
84
|
}
|
|
150
85
|
function preparedEvmGuard(input) {
|
|
151
|
-
const options =
|
|
86
|
+
const options = (0, evm_envelope_1.readEvmOwnData)(input, ['assertCurrent']);
|
|
152
87
|
if (typeof options.assertCurrent !== 'function')
|
|
153
88
|
throw invalid();
|
|
154
89
|
const guard = options.assertCurrent;
|
|
@@ -164,23 +99,8 @@ function preparedEvmGuard(input) {
|
|
|
164
99
|
};
|
|
165
100
|
}
|
|
166
101
|
/** Internal, network-free signing. The key never becomes part of the result. */
|
|
167
|
-
function signPreparedEvmEnvelope(
|
|
168
|
-
const unsigned =
|
|
169
|
-
type: transaction.type,
|
|
170
|
-
to: transaction.to,
|
|
171
|
-
chainId: BigInt(transaction.chainId),
|
|
172
|
-
nonce: Number(transaction.nonce),
|
|
173
|
-
value: BigInt(transaction.value),
|
|
174
|
-
gasLimit: BigInt(transaction.gasLimit),
|
|
175
|
-
data: transaction.data,
|
|
176
|
-
...(transaction.type === 0
|
|
177
|
-
? { gasPrice: BigInt(transaction.gasPrice) }
|
|
178
|
-
: {
|
|
179
|
-
maxFeePerGas: BigInt(transaction.maxFeePerGas),
|
|
180
|
-
maxPriorityFeePerGas: BigInt(transaction.maxPriorityFeePerGas),
|
|
181
|
-
}),
|
|
182
|
-
};
|
|
183
|
-
const expectedUnsigned = transaction_1.Transaction.from(unsigned).unsignedSerialized;
|
|
102
|
+
function signPreparedEvmEnvelope(input, privateKey) {
|
|
103
|
+
const { transaction, unsigned, expectedUnsigned } = (0, evm_envelope_1.prepareUnsignedEvmEnvelope)(input);
|
|
184
104
|
const rawTransaction = (0, evm_local_signer_1.signTransaction)(unsigned, privateKey);
|
|
185
105
|
const signed = (0, evm_submission_1.assertSignedEvmTransactionMatches)(rawTransaction, expectedUnsigned, transaction.from);
|
|
186
106
|
if (signed.hash !== (0, crypto_1.keccak256)(rawTransaction))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepared-evm.js","sourceRoot":"","sources":["../../../src/transactions/prepared-evm.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"prepared-evm.js","sourceRoot":"","sources":["../../../src/transactions/prepared-evm.ts"],"names":[],"mappings":"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"}
|