@@ -3,9 +3,10 @@ import { signMessage } from "@toruslabs/base-controllers";
33import { getPublicCompressed } from "@toruslabs/eccrypto" ;
44import { JRPCRequest , providerErrors } from "@web3auth/auth" ;
55import { 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" ;
910import { TransactionFormatter } from "./TransactionFormatter/formatter" ;
1011import { 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