@sidhujag/sysweb3-keyring 2.1.2 → 2.1.3

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 (38) hide show
  1. package/README.md +8 -0
  2. package/cjs/current-vault-refusal.js +6 -0
  3. package/cjs/current-vault-refusal.js.map +1 -0
  4. package/cjs/evm-fees.js +29 -1
  5. package/cjs/evm-fees.js.map +1 -1
  6. package/cjs/keyring-core.js +349 -84
  7. package/cjs/keyring-core.js.map +1 -1
  8. package/cjs/keyring-manager.js +100 -4
  9. package/cjs/keyring-manager.js.map +1 -1
  10. package/cjs/software.js +14 -1
  11. package/cjs/software.js.map +1 -1
  12. package/cjs/storage-core.js +44 -4
  13. package/cjs/storage-core.js.map +1 -1
  14. package/cjs/transactions/ethereum.js +52 -65
  15. package/cjs/transactions/ethereum.js.map +1 -1
  16. package/cjs/transactions/evm-cancellation.js +43 -0
  17. package/cjs/transactions/evm-cancellation.js.map +1 -0
  18. package/esm/ledger/dmk-host.js +31 -0
  19. package/esm/ledger/dmk-host.js.map +1 -0
  20. package/esm/ledger/dmk-selected-host.js +6 -0
  21. package/esm/ledger/dmk-selected-host.js.map +1 -0
  22. package/esm/ledger/dmk-session.js +153 -34
  23. package/esm/ledger/dmk-session.js.map +1 -1
  24. package/esm/ledger-host.js +3 -27
  25. package/esm/ledger-host.js.map +1 -1
  26. package/package.json +13 -1
  27. package/types/current-vault-refusal.d.ts +2 -0
  28. package/types/evm-fees.d.ts +25 -0
  29. package/types/keyring-core.d.ts +36 -3
  30. package/types/keyring-manager.d.ts +15 -3
  31. package/types/ledger/dmk-host.d.ts +7 -0
  32. package/types/ledger/dmk-selected-host.d.ts +7 -0
  33. package/types/ledger/dmk-session.d.ts +10 -2
  34. package/types/ledger-host.d.ts +6 -2
  35. package/types/software.d.ts +4 -3
  36. package/types/storage-core.d.ts +3 -1
  37. package/types/storage.d.ts +1 -1
  38. package/types/transactions/evm-cancellation.d.ts +10 -0
@@ -1 +1 @@
1
- {"version":3,"file":"software.js","sourceRoot":"","sources":["../../src/software.ts"],"names":[],"mappings":";;;AAAA,oFAAoF;AACpF,iDAA6C;AAC7C,iDAAwD;AAsBxD,MAAM,KAAK,GAAG,IAAI,OAAO,EAOtB,CAAC;AAEJ,kFAAkF;AAC3E,MAAM,yBAAyB,GAAG,CACvC,OAA2B,EAC3B,OAAyD,EACpC,EAAE;IACvB,MAAM,gBAAgB,GAAG,IAAA,qCAAsB,EAAC,OAAO,CAAC,CAAC;IACzD,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAwB,CAAC;IACtD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;QACd,OAAO;QACP,gBAAgB;QAChB,oBAAoB,EAAE,OAAO,EAAE,oBAAoB;KACpD,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAfW,QAAA,yBAAyB,6BAepC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAyB,EAAE,EAAE;IAChD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IACxE,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAa,eAAgB,SAAQ,0BAAiC;IACpE,YAAY,IAAyB;QACnC,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,CAAC;YACJ,SAAS,EAAE,IAAI;YACf,oBAAoB,EAAE,YAAY,CAAC,oBAAoB;YACvD,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;YAC/C,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;QA2BL,6EAA6E;QAC7D,eAAU,GAAG,CAAC,MAAW,EAAS,EAAE;YAClD,KAAK,MAAM,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC,CAAC;QAEF,8EAA8E;QAC9D,4BAAuB,GAAG,CACxC,GAAG,OAA2D,EACvD,EAAE;YACT,KAAK,OAAO,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC,CAAC;IAtCF,CAAC;IAED;;;;OAIG;IACI,yBAAyB,CAC9B,OAAmC,EACnC,OAAmC;QAEnC,OAAO,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACI,0BAA0B,CAC/B,OAA0C,EAC1C,OAAkC;QAElC,OAAO,IAAI,CAAC,kCAAkC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAgBM,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACnC,IAAyB,EACzB,IAAY,EACZ,QAAgB,EAChB,gBAA2B;QAE3B,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAC9C,MAAM,OAAO,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA9DD,0CA8DC;AAED,iCAA6C;AAApC,2GAAA,kBAAkB,OAAA;AAC3B,6DAAyD;AAAhD,+GAAA,YAAY,OAAA;AAkBrB,gEAIuC;AAHrC,sHAAA,oBAAoB,OAAA;AACpB,4HAAA,0BAA0B,OAAA;AAC1B,sHAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"software.js","sourceRoot":"","sources":["../../src/software.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createVaultPersistence = exports.VaultAuthenticationError = void 0;
6
+ exports.createVaultPersistence = exports.decryptCurrentVault = exports.VaultAuthenticationError = void 0;
7
7
  const crypto_js_1 = __importDefault(require("crypto-js"));
8
+ const current_vault_refusal_1 = require("./current-vault-refusal");
8
9
  // Simple async mutex implementation to prevent concurrent vault operations
9
10
  class AsyncMutex {
10
11
  constructor() {
@@ -65,6 +66,12 @@ const maybeParseGcmEnvelope = (raw) => {
65
66
  return null;
66
67
  }
67
68
  };
69
+ const isCurrentGcmEnvelope = (envelope) => !!envelope &&
70
+ Object.keys(envelope).length === 4 &&
71
+ /^[0-9a-f]{24}$/i.test(envelope.iv) &&
72
+ envelope.ct.length >= 32 &&
73
+ envelope.ct.length % 2 === 0 &&
74
+ isHex(envelope.ct);
68
75
  const encryptVaultWebCrypto = async (plaintextJson, keyHex) => {
69
76
  const subtle = globalThis.crypto.subtle;
70
77
  const iv = new Uint8Array(12);
@@ -101,7 +108,13 @@ const decryptVaultWebCrypto = async (envelope, keyHex) => {
101
108
  if (keyBytes.length !== 32) {
102
109
  throw new Error('Vault key must be 32 bytes (hex length 64)');
103
110
  }
104
- const key = await subtle.importKey('raw', keyBytes, { name: 'AES-GCM' }, false, ['decrypt']);
111
+ let key;
112
+ try {
113
+ key = await subtle.importKey('raw', keyBytes, { name: 'AES-GCM' }, false, ['decrypt']);
114
+ }
115
+ finally {
116
+ keyBytes.fill(0);
117
+ }
105
118
  const ivBytes = hexToBytes(envelope.iv);
106
119
  const ctBytes = hexToBytes(envelope.ct);
107
120
  if (ivBytes.length !== 12 || ctBytes.length < 16) {
@@ -121,6 +134,21 @@ const decryptVaultWebCrypto = async (envelope, keyHex) => {
121
134
  }
122
135
  return new TextDecoder().decode(pt);
123
136
  };
137
+ /** Authenticate a captured current-format vault. This path has no CBC fallback. */
138
+ const decryptCurrentVault = async (vault, key) => {
139
+ const envelope = maybeParseGcmEnvelope(vault);
140
+ if (!isCurrentGcmEnvelope(envelope)) {
141
+ throw new Error('Invalid encrypted vault format');
142
+ }
143
+ const plaintext = await decryptVaultWebCrypto(envelope, key);
144
+ try {
145
+ return JSON.parse(plaintext);
146
+ }
147
+ catch {
148
+ throw new Error('Invalid device unlock vault payload');
149
+ }
150
+ };
151
+ exports.decryptCurrentVault = decryptCurrentVault;
124
152
  /**
125
153
  * Create once per wallet authority and share across its network keyrings.
126
154
  * The host owns storage durability and cross-context atomic creation.
@@ -134,8 +162,9 @@ const createVaultPersistence = (storage) => {
134
162
  }
135
163
  const vaultMutex = new AsyncMutex();
136
164
  // Single vault for all networks; derivation remains the keyring's concern.
137
- const setEncryptedVault = async (decryptedVault, pwd, freshVaultKeys) => {
165
+ const setEncryptedVault = async (decryptedVault, pwd, freshVaultKeys, assertCurrent) => {
138
166
  return vaultMutex.runExclusive(async () => {
167
+ assertCurrent?.();
139
168
  const plaintext = JSON.stringify(decryptedVault);
140
169
  // Writes never downgrade to unauthenticated passphrase AES. Legacy CBC
141
170
  // remains readable below, but missing WebCrypto is an operational failure.
@@ -149,6 +178,7 @@ const createVaultPersistence = (storage) => {
149
178
  }
150
179
  const envelope = await encryptVaultWebCrypto(plaintext, pwd);
151
180
  const toStore = JSON.stringify(envelope);
181
+ assertCurrent?.();
152
182
  if (freshVaultKeys) {
153
183
  // The host primitive covers the absence check and batch commit
154
184
  // across all clients that can initialize the same persisted authority.
@@ -185,7 +215,17 @@ const createVaultPersistence = (storage) => {
185
215
  }
186
216
  let decryptedVault;
187
217
  if (maybeEnvelope) {
188
- decryptedVault = await decryptVaultWebCrypto(maybeEnvelope, pwd);
218
+ try {
219
+ decryptedVault = await decryptVaultWebCrypto(maybeEnvelope, pwd);
220
+ }
221
+ catch (error) {
222
+ if (error instanceof VaultAuthenticationError &&
223
+ typeof vault === 'string' &&
224
+ isCurrentGcmEnvelope(maybeEnvelope)) {
225
+ current_vault_refusal_1.currentVaultRefusals.set(error, (candidate) => candidate === vault);
226
+ }
227
+ throw error;
228
+ }
189
229
  }
190
230
  else {
191
231
  // Legacy CryptoJS passphrase-AES vault (v3 and older v4 canary).
@@ -1 +1 @@
1
- {"version":3,"file":"storage-core.js","sourceRoot":"","sources":["../../src/storage-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-core.js","sourceRoot":"","sources":["../../src/storage-core.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAiC;AAEjC,mEAA+D;AA2B/D,2EAA2E;AAC3E,MAAM,UAAU;IAAhB;QACU,UAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiBpC,CAAC;IAfC,KAAK,CAAC,YAAY,CAAI,QAA0B;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAE5B,IAAI,OAAmB,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,OAAO,GAAG,OAAO,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC;QACf,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,EAAE,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,OAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;CACF;AAED,MAAM,KAAK,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE/D,MAAM,UAAU,GAAG,CAAC,GAAW,EAAc,EAAE;IAC7C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAkB,EAAU,EAAE;IAChD,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,GAAQ,EAA6B,EAAE;IACpE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgC,CAAC;QAC9D,IACE,MAAM;YACN,MAAM,CAAC,CAAC,KAAK,CAAC;YACd,MAAM,CAAC,GAAG,KAAK,SAAS;YACxB,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;YAC7B,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,EAC7B,CAAC;YACD,OAAO,MAA4B,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,QAAmC,EACH,EAAE,CAClC,CAAC,CAAC,QAAQ;IACV,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;IAClC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;IAC5B,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAErB,MAAM,qBAAqB,GAAG,KAAK,EACjC,aAAqB,EACrB,MAAc,EACe,EAAE;IAC/B,MAAM,MAAM,GAAI,UAAkB,CAAC,MAAM,CAAC,MAAsB,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,UAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAChC,KAAK,EACL,QAAmC,EACnC,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,KAAK,EACL,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAC7B,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAA6B,EAAE,EACtD,GAAG,EACH,EAA6B,CAC9B,CAAC;IAEF,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,GAAG,EAAE,SAAS;QACd,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC;QACzB,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;KACnB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAa,wBAAyB,SAAQ,KAAK;IAGjD;QACE,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAH/D,SAAI,GAAG,kBAAkB,CAAC;QAIjC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAPD,4DAOC;AAED,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,wBAAwB,EAAE,CAAC;AAElE,MAAM,qBAAqB,GAAG,KAAK,EACjC,QAA4B,EAC5B,MAAc,EACG,EAAE;IACnB,MAAM,MAAM,GAAI,UAAkB,EAAE,MAAM,EAAE,MAE/B,CAAC;IACd,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,GAAc,CAAC;IACnB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAC1B,KAAK,EACL,QAAmC,EACnC,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,KAAK,EACL,CAAC,SAAS,CAAC,CACZ,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,EAAe,CAAC;IACpB,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CACvB,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAkC,EAAE,EAC3D,GAAG,EACH,OAAkC,CACnC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,KAAK,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACrC,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,mFAAmF;AAC5E,MAAM,mBAAmB,GAAG,KAAK,EACtC,KAAa,EACb,GAAW,EACO,EAAE;IACpB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC;AAdW,QAAA,mBAAmB,uBAc9B;AAEF;;;GAGG;AACI,MAAM,sBAAsB,GAAG,CACpC,OAAyB,EACP,EAAE;IACpB,IACE,CAAC,OAAO;QACR,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU;QACjC,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU;QACjC,OAAO,OAAO,CAAC,kBAAkB,KAAK,UAAU,EAChD,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAEpC,2EAA2E;IAC3E,MAAM,iBAAiB,GAAG,KAAK,EAC7B,cAAmB,EACnB,GAAW,EACX,cAAiC,EACjC,aAA0B,EAC1B,EAAE;QACF,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YACxC,aAAa,EAAE,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAEjD,uEAAuE;YACvE,2EAA2E;YAC3E,MAAM,eAAe,GACnB,CAAC,CAAE,UAAkB,EAAE,MAAM,EAAE,MAAM;gBACrC,CAAC,CAAE,UAAkB,EAAE,MAAM,EAAE,eAAe,CAAC;YACjD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzC,aAAa,EAAE,EAAE,CAAC;YAElB,IAAI,cAAc,EAAE,CAAC;gBACnB,+DAA+D;gBAC/D,uEAAuE;gBACvE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC;oBAC/C,YAAY,EAAE,cAAc;oBAC5B,KAAK,EAAE,OAAO;iBACf,CAAC,CAAC;gBACH,IAAI,OAAO,OAAO,KAAK,SAAS;oBAC9B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACxE,IAAI,CAAC,OAAO;oBACV,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,yEAAyE;gBACzE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAAE,cAAuB,EAAE,EAAE;QACvE,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YACxC,gCAAgC;YAChC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;YAED,2EAA2E;YAC3E,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACnD,IACE,CAAC,aAAa;gBACd,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAC5B,CAAC;gBACD,qEAAqE;gBACrE,oEAAoE;gBACpE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,cAAsB,CAAC;YAC3B,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,cAAc,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBACnE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IACE,KAAK,YAAY,wBAAwB;wBACzC,OAAO,KAAK,KAAK,QAAQ;wBACzB,oBAAoB,CAAC,aAAa,CAAC,EACnC,CAAC;wBACD,4CAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;oBACtE,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,iEAAiE;gBACjE,iEAAiE;gBACjE,oEAAoE;gBACpE,KAAK,MAAM,YAAY,IAAI,IAAI,GAAG,CAAC,CAAC,cAAc,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;oBACjE,IAAI,SAAiB,CAAC;oBACtB,IAAI,CAAC;wBACH,SAAS,GAAG,mBAAQ,CAAC,GAAG,CAAC,OAAO,CAC9B,KAAe,EACf,YAAY,CACb,CAAC,QAAQ,CAAC,mBAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,KAAK,EAAE,OAAO,KAAK,sBAAsB;4BAAE,SAAS;wBACxD,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,IAAI,CAAC,SAAS;wBAAE,SAAS;oBACzB,IAAI,CAAC;wBACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC/B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,+DAA+D;wBAC/D,qDAAqD;wBACrD,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;4BAAE,MAAM,KAAK,CAAC;oBACnD,CAAC;gBACH,CAAC;gBACD,MAAM,oBAAoB,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,oBAAoB,EAAE,CAAC;YAC/B,CAAC;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAClD,CAAC,CAAC;AAnIW,QAAA,sBAAsB,0BAmIjC"}
@@ -14,6 +14,7 @@ const ethers_v6_1 = require("../ethers-v6");
14
14
  const evm_fees_1 = require("../evm-fees");
15
15
  const providers_1 = require("../providers");
16
16
  const types_1 = require("../types");
17
+ const evm_cancellation_1 = require("./evm-cancellation");
17
18
  const evm_local_signer_1 = require("./evm-local-signer");
18
19
  const evm_submission_1 = require("./evm-submission");
19
20
  const derivation_paths_1 = require("../utils/derivation-paths");
@@ -738,6 +739,17 @@ class EthereumTransactions {
738
739
  let tx = response === null
739
740
  ? null
740
741
  : authenticateReplacementOriginal(response, txHash.toLowerCase(), activeAccount.address.toLowerCase(), activeNetwork.chainId);
742
+ const software = activeAccountType !== types_1.KeyringAccountType.Ledger &&
743
+ activeAccountType !== types_1.KeyringAccountType.Trezor;
744
+ const softwareNonce = software ? tx?.nonce ?? fallbackNonce : undefined;
745
+ // The host validator may retain the wrapped response and its fee objects.
746
+ const softwareOriginalFees = software && tx
747
+ ? {
748
+ gasPrice: tx.gasPrice.toBigInt(),
749
+ maxFeePerGas: tx.maxFeePerGas.toBigInt(),
750
+ maxPriorityFeePerGas: tx.maxPriorityFeePerGas.toBigInt(),
751
+ }
752
+ : undefined;
741
753
  assertSynchronousOriginalValidation(options.validateOriginal(tx));
742
754
  assertCurrent();
743
755
  // If transaction not found, create a minimal tx object with current gas prices
@@ -753,7 +765,6 @@ class EthereumTransactions {
753
765
  value: ethers_v6_1.Zero,
754
766
  nonce: fallbackNonce,
755
767
  gasPrice: currentGasPrice,
756
- gasLimit: ethers_v6_1.BigNumber.from(42000),
757
768
  data: '0x',
758
769
  };
759
770
  }
@@ -766,7 +777,6 @@ class EthereumTransactions {
766
777
  nonce: fallbackNonce,
767
778
  maxFeePerGas: feeData.maxFeePerGas,
768
779
  maxPriorityFeePerGas: feeData.maxPriorityFeePerGas,
769
- gasLimit: ethers_v6_1.BigNumber.from(42000),
770
780
  data: '0x',
771
781
  };
772
782
  }
@@ -778,65 +788,34 @@ class EthereumTransactions {
778
788
  error: true,
779
789
  };
780
790
  }
781
- // If the original tx has 0 or very low gas price, fetch current network gas prices
782
- const oldTxsGasValues = {
783
- maxFeePerGas: tx.maxFeePerGas,
784
- maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
785
- gasPrice: tx.gasPrice,
786
- gasLimit: tx.gasLimit,
787
- };
791
+ const { gasPrice: originalGasPrice, maxFeePerGas: originalMaxFeePerGas, maxPriorityFeePerGas: originalMaxPriorityFeePerGas, } = softwareOriginalFees ?? tx;
792
+ let feePlan;
788
793
  if (isLegacy) {
789
- const currentGasPrice = nonNegativeFeeQuantity(await provider.getGasPrice(), 'cancellation gas price');
794
+ const currentGasPrice = (0, evm_fees_1.parseEvmFeeQuantity)(await provider.getGasPrice(), 'cancellation gas price');
790
795
  assertCurrent();
791
- if (oldTxsGasValues.gasPrice != null) {
792
- oldTxsGasValues.gasPrice = nonNegativeFeeQuantity(oldTxsGasValues.gasPrice, 'original gas price');
793
- }
794
- if (!oldTxsGasValues.gasPrice ||
795
- oldTxsGasValues.gasPrice.isZero() ||
796
- oldTxsGasValues.gasPrice.lt(currentGasPrice)) {
797
- oldTxsGasValues.gasPrice = currentGasPrice;
798
- }
796
+ feePlan = (0, evm_fees_1.planEvmCancellationFees)({
797
+ type: 0,
798
+ currentGasPrice,
799
+ originalGasPrice: originalGasPrice == null
800
+ ? undefined
801
+ : (0, evm_fees_1.parseEvmFeeQuantity)(originalGasPrice, 'original gas price'),
802
+ });
799
803
  }
800
804
  else {
801
- const { maxFeePerGas: currentMaxFeePerGas, maxPriorityFeePerGas: currentMaxPriorityFeePerGas, } = await currentEip1559Fees();
802
- if (oldTxsGasValues.maxFeePerGas != null) {
803
- oldTxsGasValues.maxFeePerGas = nonNegativeFeeQuantity(oldTxsGasValues.maxFeePerGas, 'original maximum fee');
804
- }
805
- if (oldTxsGasValues.maxPriorityFeePerGas != null) {
806
- oldTxsGasValues.maxPriorityFeePerGas = nonNegativeFeeQuantity(oldTxsGasValues.maxPriorityFeePerGas, 'original priority fee');
807
- }
808
- if (!oldTxsGasValues.maxFeePerGas ||
809
- oldTxsGasValues.maxFeePerGas.isZero() ||
810
- oldTxsGasValues.maxFeePerGas.lt(currentMaxFeePerGas)) {
811
- oldTxsGasValues.maxFeePerGas = currentMaxFeePerGas;
812
- }
813
- if (!oldTxsGasValues.maxPriorityFeePerGas ||
814
- oldTxsGasValues.maxPriorityFeePerGas.lt(currentMaxPriorityFeePerGas)) {
815
- oldTxsGasValues.maxPriorityFeePerGas = currentMaxPriorityFeePerGas;
816
- }
817
- if (oldTxsGasValues.maxFeePerGas.lt(oldTxsGasValues.maxPriorityFeePerGas)) {
818
- oldTxsGasValues.maxFeePerGas = oldTxsGasValues.maxPriorityFeePerGas;
819
- }
820
- }
821
- // Preserve the existing 20% replacement policy with exact integer math.
822
- // Nodes also require a strictly larger cap and tip than an old pending
823
- // transaction; zero/small fees therefore need at least a one-wei bump.
824
- // This is a replacement bump, not a fabricated network priority floor.
825
- const bumpCancelFee = (fee) => {
826
- const percentageBump = fee.mul(120).div(100);
827
- const strictBump = fee.add(1);
828
- return percentageBump.gt(strictBump) ? percentageBump : strictBump;
829
- };
830
- const newGasValues = {
831
- gasLimit: ethers_v6_1.BigNumber.from(42000),
832
- ...(isLegacy
833
- ? { gasPrice: bumpCancelFee(oldTxsGasValues.gasPrice) }
834
- : {
835
- maxFeePerGas: bumpCancelFee(oldTxsGasValues.maxFeePerGas),
836
- maxPriorityFeePerGas: bumpCancelFee(oldTxsGasValues.maxPriorityFeePerGas),
837
- }),
838
- };
839
- const maximumFee = newGasValues.gasLimit.mul(isLegacy ? newGasValues.gasPrice : newGasValues.maxFeePerGas);
805
+ const currentFees = await currentEip1559Fees();
806
+ feePlan = (0, evm_fees_1.planEvmCancellationFees)({
807
+ type: 2,
808
+ currentMaxFeePerGas: currentFees.maxFeePerGas.toBigInt(),
809
+ currentMaxPriorityFeePerGas: currentFees.maxPriorityFeePerGas.toBigInt(),
810
+ originalMaxFeePerGas: originalMaxFeePerGas == null
811
+ ? undefined
812
+ : (0, evm_fees_1.parseEvmFeeQuantity)(originalMaxFeePerGas, 'original maximum fee'),
813
+ originalMaxPriorityFeePerGas: originalMaxPriorityFeePerGas == null
814
+ ? undefined
815
+ : (0, evm_fees_1.parseEvmFeeQuantity)(originalMaxPriorityFeePerGas, 'original priority fee'),
816
+ });
817
+ }
818
+ const maximumFee = ethers_v6_1.BigNumber.from(feePlan.maximumFee);
840
819
  assertCurrent();
841
820
  if (previewOnly)
842
821
  return {
@@ -849,27 +828,27 @@ class EthereumTransactions {
849
828
  const assertApprovedEnvelope = (transaction) => {
850
829
  const gas = nonNegativeFeeQuantity(transaction.gasLimit, 'cancellation gas limit');
851
830
  const cap = nonNegativeFeeQuantity(isLegacy ? transaction.gasPrice : transaction.maxFeePerGas, 'cancellation maximum fee');
852
- if (!gas.eq(42000) || gas.mul(cap).gt(approvedMaximumFee))
831
+ if (!gas.eq(feePlan.gasLimit) || gas.mul(cap).gt(approvedMaximumFee))
853
832
  throw new Error('Cancellation fee exceeds approval');
854
833
  };
855
834
  // Base cancel transaction parameters (same for all wallet types)
856
835
  const baseCancelTx = {
857
- nonce: tx.nonce,
836
+ nonce: software ? softwareNonce : tx.nonce,
858
837
  from: activeAccount.address,
859
838
  to: activeAccount.address,
860
839
  value: ethers_v6_1.Zero,
861
- gasLimit: newGasValues.gasLimit,
840
+ gasLimit: ethers_v6_1.BigNumber.from(feePlan.gasLimit),
862
841
  };
863
- const changedTxToCancel = isLegacy
842
+ const changedTxToCancel = feePlan.type === 0
864
843
  ? {
865
844
  ...baseCancelTx,
866
- gasPrice: newGasValues.gasPrice,
845
+ gasPrice: ethers_v6_1.BigNumber.from(feePlan.gasPrice),
867
846
  type: 0, // Force Type 0 for legacy cancel
868
847
  }
869
848
  : {
870
849
  ...baseCancelTx,
871
- maxFeePerGas: newGasValues.maxFeePerGas,
872
- maxPriorityFeePerGas: newGasValues.maxPriorityFeePerGas,
850
+ maxFeePerGas: ethers_v6_1.BigNumber.from(feePlan.maxFeePerGas),
851
+ maxPriorityFeePerGas: ethers_v6_1.BigNumber.from(feePlan.maxPriorityFeePerGas),
873
852
  // Don't set type - let ethers auto-detect
874
853
  };
875
854
  // Ledger cancel handler
@@ -1009,7 +988,15 @@ class EthereumTransactions {
1009
988
  if (address?.toLowerCase() !== activeAccount.address.toLowerCase()) {
1010
989
  throw new Error('Wallet signing context changed');
1011
990
  }
1012
- const transactionResponse = await (0, evm_local_signer_1.sendLocalEvmTransaction)(provider, decryptedPrivateKey, changedTxToCancel, assertCurrent, assertCurrent, assertApprovedEnvelope, submission);
991
+ const transactionResponse = await (0, evm_local_signer_1.sendLocalEvmTransaction)(provider, decryptedPrivateKey, changedTxToCancel, assertCurrent, assertCurrent, (transaction) => {
992
+ assertApprovedEnvelope(transaction);
993
+ (0, evm_cancellation_1.assertEvmCancellationEnvelope)(serializeTransaction(transaction), {
994
+ payer: activeAccount.address,
995
+ chainId: activeNetwork.chainId,
996
+ nonce: softwareNonce,
997
+ feePlan,
998
+ });
999
+ }, submission);
1013
1000
  if (transactionResponse) {
1014
1001
  return {
1015
1002
  isCanceled: true,