@@ -5,14 +5,14 @@ import { log } from "@web3auth/base";
55import {
66 IProviderHandlers ,
77 MessageParams ,
8- SignTypedDataMessageV4 ,
98 SignTypedDataVersion ,
109 TransactionFormatter ,
1110 TransactionParams ,
1211 TypedMessageParams ,
1312 validateTypedSignMessageDataV4 ,
1413} from "@web3auth/ethereum-provider" ;
15- import { hashMessage , Signature , TypedDataEncoder } from "ethers" ;
14+ import { hashMessage , Signature } from "ethers" ;
15+ import { hashTypedData , hexToBytes , validateTypedData } from "viem" ;
1616
1717async function signTx (
1818 txParams : TransactionParams & { gas ?: string } ,
@@ -89,9 +89,10 @@ async function signTypedData(
8989 if ( data === null || data === undefined ) {
9090 throw new Error ( "Missing data parameter" ) ;
9191 }
92- const message : SignTypedDataMessageV4 = typeof data === "string" ? JSON . parse ( data ) : data ;
92+ const message = typeof data === "string" ? JSON . parse ( data ) : data ;
93+ validateTypedData ( message ) ;
9394
94- const { v, r, s } = await sign ( Buffer . from ( TypedDataEncoder . hash ( message . domain , message . types , message . message ) . slice ( 2 ) , "hex" ) ) ;
95+ const { v, r, s } = await sign ( Buffer . from ( hexToBytes ( hashTypedData ( message ) ) ) ) ;
9596
9697 let modifiedV = v ;
9798 if ( modifiedV <= 1 ) {
@@ -170,7 +171,6 @@ export function getProviderHandlers({
170171 const chainId = await providerEngineProxy . request < unknown , string > ( { method : "eth_chainId" } ) ;
171172 await validateTypedSignMessageDataV4 ( msgParams , chainId ) ;
172173 const data = typeof msgParams . data === "string" ? JSON . parse ( msgParams . data ) : msgParams . data ;
173- if ( data . types . EIP712Domain ) delete data . types . EIP712Domain ;
174174 const sig = signTypedData ( sign , data , SignTypedDataVersion . V4 ) ;
175175 return sig ;
176176 } ,
0 commit comments