Skip to content

Commit 085d851

Browse files
committed
fix: validateTypeData for ethereum provider
1 parent c85c089 commit 085d851

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

package-lock.json

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/providers/ethereum-provider/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"bignumber.js": "^9.1.2",
3232
"bn.js": "^5.2.1",
3333
"ethers": "^6.13.4",
34-
"jsonschema": "^1.4.1"
34+
"jsonschema": "^1.4.1",
35+
"viem": "^2.22.5"
3536
},
3637
"devDependencies": {
3738
"@types/bn.js": "^5.1.6",

packages/providers/ethereum-provider/src/providers/privateKeyProviders/ethPrivatekeyUtils.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { signMessage } from "@toruslabs/base-controllers";
33
import { getPublicCompressed } from "@toruslabs/eccrypto";
44
import { JRPCRequest, providerErrors } from "@web3auth/auth";
55
import { log, SafeEventEmitterProvider } from "@web3auth/base";
6-
import { hashMessage, SigningKey, TypedDataEncoder } from "ethers";
6+
import { hashMessage, SigningKey } from "ethers";
7+
import { hashTypedData, validateTypedData } from "viem";
78

8-
import { IProviderHandlers, MessageParams, SignTypedDataMessageV4, TransactionParams, TypedMessageParams } from "../../rpc/interfaces";
9+
import { IProviderHandlers, MessageParams, TransactionParams, TypedMessageParams } from "../../rpc/interfaces";
910
import { TransactionFormatter } from "./TransactionFormatter/formatter";
1011
import { validateTypedSignMessageDataV4 } from "./TransactionFormatter/utils";
1112

@@ -103,10 +104,10 @@ export function getProviderHandlers({
103104
});
104105
const chainId = await providerEngineProxy.request<never, string>({ method: "eth_chainId" });
105106
await validateTypedSignMessageDataV4(msgParams, chainId);
106-
const data: SignTypedDataMessageV4 = typeof msgParams.data === "string" ? JSON.parse(msgParams.data) : msgParams.data;
107+
const data = typeof msgParams.data === "string" ? JSON.parse(msgParams.data) : msgParams.data;
107108
const ethersPrivateKey = new SigningKey(privKeyBuffer);
108-
if (data.types.EIP712Domain) delete data.types.EIP712Domain;
109-
const signature = ethersPrivateKey.sign(TypedDataEncoder.hash(data.domain, data.types, data.message)).serialized;
109+
validateTypedData(data);
110+
const signature = ethersPrivateKey.sign(hashTypedData(data)).serialized;
110111
return signature;
111112
},
112113
};

0 commit comments

Comments
 (0)