@@ -1,3 +1,4 @@
1+import { crypto } from 'bitcoinjs-lib';
12import { ecdsaSign } from 'secp256k1';
23import Web3 from 'web3';
34import { hexToBytes } from 'web3-utils';
@@ -12,9 +13,11 @@ import { keccak256 } from 'ethereumjs-util';
1213
1314const MESSAGE = 'Bridge Authentication Token';
1415
15−function signMessage(privateKey: Buffer) {
16+function signMessage(privateKey: Buffer, useLegacyTokenSigning = false) {
1617 const msg = '\x19Ethereum Signed Message:\n' + MESSAGE.length + MESSAGE;
17− const hashed = keccak256(Buffer.from(msg));
18+ const hashed = useLegacyTokenSigning
19+ ? crypto.sha256(Buffer.from(msg))
20+ : keccak256(Buffer.from(msg));
1821 const { signature } = ecdsaSign(Buffer.from(hashed), privateKey);
1922
2023 // add key recovery parameter
@@ -60,6 +63,7 @@ type WalletConnectAuthTokenArgs = {
6063type DefaultAuthTokenArgs = {
6164 wallet: BridgeWallet;
6265 walletType?: symbol;
66+ useLegacyTokenSigning?: boolean;
6367};
6468
6569type GetAuthTokenArgs =
@@ -100,8 +104,11 @@ const getWalletConnectAuthToken = ({
100104 return connector.signPersonalMessage([MESSAGE, address]);
101105};
102106
103−const getDefaultAuthToken = ({ wallet }: DefaultAuthTokenArgs) => {
104− const signature = signMessage(wallet.privateKey!);
107+const getDefaultAuthToken = ({
108+ wallet,
109+ useLegacyTokenSigning = false,
110+}: DefaultAuthTokenArgs) => {
111+ const signature = signMessage(wallet.privateKey!, useLegacyTokenSigning);
105112
106113 const token = `0x${Buffer.from(signature).toString('hex')}`;
107114