Skip to content

Commit 573ab65

Browse files
adonesky1MajorLift
authored andcommitted
bump @metamask/eth-sig-util to latest (#914)
- CHANGED: - Upgrades `eth-sig-util` (now `@metmask/eth-sig-util`) from v3.0.0 to v5.0.2. This upgrade contains several updates, including: - consolidates the recoverTypedSignature, recoverTypedSignature_v4, recoverTypedSignatureLegacy functions into one that switch on a new version argument. - reduces dependency burden, removing `secp256k1` and `keccak` via as dependencies by upgrading from `[email protected]` to its latest version `@ethereumjs/[email protected]` which uses lighter `noble` implementations for crypto functionality. Replaces `keccak` hashing with `keccak256` from `ethereum-cryptography/keccak`
1 parent 8969703 commit 573ab65

File tree

4 files changed

+51
-30
lines changed

4 files changed

+51
-30
lines changed

packages/keyring-controller/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
"@keystonehq/metamask-airgapped-keyring": "^0.6.1",
3333
"@metamask/base-controller": "workspace:^",
3434
"@metamask/controller-utils": "workspace:^",
35+
"@metamask/eth-sig-util": "^5.0.2",
3536
"@metamask/message-manager": "workspace:^",
3637
"@metamask/preferences-controller": "workspace:^",
3738
"async-mutex": "^0.2.6",
3839
"eth-keyring-controller": "^7.0.2",
39-
"eth-sig-util": "^3.0.0",
4040
"ethereumjs-util": "^7.0.10",
4141
"ethereumjs-wallet": "^1.0.1"
4242
},

packages/keyring-controller/src/KeyringController.test.ts

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ import { bufferToHex } from 'ethereumjs-util';
22
import {
33
recoverPersonalSignature,
44
recoverTypedSignature,
5-
recoverTypedSignature_v4,
6-
recoverTypedSignatureLegacy,
7-
} from 'eth-sig-util';
5+
SignTypedDataVersion,
6+
} from '@metamask/eth-sig-util';
87
import * as sinon from 'sinon';
98
import Common from '@ethereumjs/common';
109
import { TransactionFactory } from '@ethereumjs/tx';
@@ -20,7 +19,6 @@ import {
2019
KeyringConfig,
2120
KeyringController,
2221
KeyringTypes,
23-
SignTypedDataVersion,
2422
} from './KeyringController';
2523

2624
jest.mock('uuid', () => {
@@ -379,7 +377,7 @@ describe('KeyringController', () => {
379377
data,
380378
from: account,
381379
});
382-
const recovered = recoverPersonalSignature({ data, sig: signature });
380+
const recovered = recoverPersonalSignature({ data, signature });
383381
expect(account).toBe(recovered);
384382
});
385383

@@ -393,7 +391,7 @@ describe('KeyringController', () => {
393391
data: '',
394392
from: account,
395393
});
396-
const recovered = recoverPersonalSignature({ data: '', sig: signature });
394+
const recovered = recoverPersonalSignature({ data: '', signature });
397395
expect(account).toBe(recovered);
398396
});
399397

@@ -450,9 +448,10 @@ describe('KeyringController', () => {
450448
{ data: typedMsgParams, from: account },
451449
SignTypedDataVersion.V1,
452450
);
453-
const recovered = recoverTypedSignatureLegacy({
451+
const recovered = recoverTypedSignature({
454452
data: typedMsgParams,
455-
sig: signature as string,
453+
signature,
454+
version: SignTypedDataVersion.V1,
456455
});
457456
expect(account).toBe(recovered);
458457
});
@@ -476,7 +475,7 @@ describe('KeyringController', () => {
476475
wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
477476
},
478477
},
479-
primaryType: 'Mail',
478+
primaryType: 'Mail' as const,
480479
types: {
481480
EIP712Domain: [
482481
{ name: 'name', type: 'string' },
@@ -501,8 +500,9 @@ describe('KeyringController', () => {
501500
SignTypedDataVersion.V3,
502501
);
503502
const recovered = recoverTypedSignature({
504-
data: msgParams as any,
505-
sig: signature as string,
503+
data: msgParams,
504+
signature,
505+
version: SignTypedDataVersion.V3,
506506
});
507507
expect(account).toBe(recovered);
508508
});
@@ -535,7 +535,7 @@ describe('KeyringController', () => {
535535
},
536536
],
537537
},
538-
primaryType: 'Mail',
538+
primaryType: 'Mail' as const,
539539
types: {
540540
EIP712Domain: [
541541
{ name: 'name', type: 'string' },
@@ -564,9 +564,10 @@ describe('KeyringController', () => {
564564
{ data: JSON.stringify(msgParams), from: account },
565565
SignTypedDataVersion.V4,
566566
);
567-
const recovered = recoverTypedSignature_v4({
568-
data: msgParams as any,
569-
sig: signature as string,
567+
const recovered = recoverTypedSignature({
568+
data: msgParams,
569+
signature,
570+
version: SignTypedDataVersion.V4,
570571
});
571572
expect(account).toBe(recovered);
572573
});
@@ -850,7 +851,7 @@ describe('KeyringController', () => {
850851
data,
851852
from: account,
852853
});
853-
const recovered = recoverPersonalSignature({ data, sig: signature });
854+
const recovered = recoverPersonalSignature({ data, signature });
854855
expect(account.toLowerCase()).toBe(recovered.toLowerCase());
855856
});
856857

@@ -883,9 +884,10 @@ describe('KeyringController', () => {
883884
{ data: typedMsgParams, from: account },
884885
SignTypedDataVersion.V1,
885886
);
886-
const recovered = recoverTypedSignatureLegacy({
887+
const recovered = recoverTypedSignature({
887888
data: typedMsgParams,
888-
sig: signature as string,
889+
signature,
890+
version: SignTypedDataVersion.V1,
889891
});
890892
expect(account.toLowerCase()).toBe(recovered.toLowerCase());
891893
});
@@ -915,7 +917,8 @@ describe('KeyringController', () => {
915917
);
916918
const recovered = recoverTypedSignature({
917919
data: JSON.parse(msg),
918-
sig: signature as string,
920+
signature,
921+
version: SignTypedDataVersion.V3,
919922
});
920923
expect(account.toLowerCase()).toBe(recovered);
921924
});
@@ -940,9 +943,10 @@ describe('KeyringController', () => {
940943
{ data: msg, from: account },
941944
SignTypedDataVersion.V4,
942945
);
943-
const recovered = recoverTypedSignature_v4({
946+
const recovered = recoverTypedSignature({
944947
data: JSON.parse(msg),
945-
sig: signature as string,
948+
signature,
949+
version: SignTypedDataVersion.V4,
946950
});
947951
expect(account.toLowerCase()).toBe(recovered);
948952
});

packages/keyring-controller/src/KeyringController.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ import {
88
import {
99
normalize as normalizeAddress,
1010
signTypedData,
11-
signTypedData_v4,
12-
signTypedDataLegacy,
13-
} from 'eth-sig-util';
11+
} from '@metamask/eth-sig-util';
1412
import Wallet, { thirdparty as importers } from 'ethereumjs-wallet';
1513
import Keyring from 'eth-keyring-controller';
1614
import { Mutex } from 'async-mutex';
@@ -481,17 +479,22 @@ export class KeyringController extends BaseController<
481479
const privateKeyBuffer = toBuffer(addHexPrefix(privateKey));
482480
switch (version) {
483481
case SignTypedDataVersion.V1:
484-
// signTypedDataLegacy will throw if the data is invalid.
485-
return signTypedDataLegacy(privateKeyBuffer, {
482+
return signTypedData({
483+
privateKey: privateKeyBuffer,
486484
data: messageParams.data as any,
485+
version: SignTypedDataVersion.V1,
487486
});
488487
case SignTypedDataVersion.V3:
489-
return signTypedData(privateKeyBuffer, {
488+
return signTypedData({
489+
privateKey: privateKeyBuffer,
490490
data: JSON.parse(messageParams.data as string),
491+
version: SignTypedDataVersion.V3,
491492
});
492493
case SignTypedDataVersion.V4:
493-
return signTypedData_v4(privateKeyBuffer, {
494+
return signTypedData({
495+
privateKey: privateKeyBuffer,
494496
data: JSON.parse(messageParams.data as string),
497+
version: SignTypedDataVersion.V4,
495498
});
496499
default:
497500
throw new Error(`Unexpected signTypedMessage version: '${version}'`);

yarn.lock

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1684,6 +1684,20 @@ __metadata:
16841684
languageName: node
16851685
linkType: hard
16861686

1687+
"@metamask/eth-sig-util@npm:^5.0.2":
1688+
version: 5.0.2
1689+
resolution: "@metamask/eth-sig-util@npm:5.0.2"
1690+
dependencies:
1691+
"@ethereumjs/util": ^8.0.0
1692+
bn.js: ^4.11.8
1693+
ethereum-cryptography: ^1.1.2
1694+
ethjs-util: ^0.1.6
1695+
tweetnacl: ^1.0.3
1696+
tweetnacl-util: ^0.15.1
1697+
checksum: 1fbf1a0f5e654058f0219c9018dbebadf53036c9c3b47c8faf1cac54816532bb18996821736f526ac4e3d579afcaf502af4ad07e88158a50f015141858b08a90
1698+
languageName: node
1699+
linkType: hard
1700+
16871701
"@metamask/gas-fee-controller@workspace:packages/gas-fee-controller":
16881702
version: 0.0.0-use.local
16891703
resolution: "@metamask/gas-fee-controller@workspace:packages/gas-fee-controller"
@@ -1726,13 +1740,13 @@ __metadata:
17261740
"@metamask/auto-changelog": ^3.1.0
17271741
"@metamask/base-controller": "workspace:^"
17281742
"@metamask/controller-utils": "workspace:^"
1743+
"@metamask/eth-sig-util": ^5.0.2
17291744
"@metamask/message-manager": "workspace:^"
17301745
"@metamask/preferences-controller": "workspace:^"
17311746
"@types/jest": ^26.0.22
17321747
async-mutex: ^0.2.6
17331748
deepmerge: ^4.2.2
17341749
eth-keyring-controller: ^7.0.2
1735-
eth-sig-util: ^3.0.0
17361750
ethereumjs-util: ^7.0.10
17371751
ethereumjs-wallet: ^1.0.1
17381752
jest: ^26.4.2

0 commit comments

Comments
 (0)