From 2ed90aed5ff58c8d6c7e237b2e9088d9cc43eb0f Mon Sep 17 00:00:00 2001 From: skylarbarrera Date: Fri, 20 Oct 2023 11:41:10 -0400 Subject: [PATCH 1/2] wallet: rm legacy eth_sign --- src/parsers/requests.js | 5 ----- src/screens/TransactionConfirmationScreen.js | 4 ---- src/utils/signingMethods.ts | 5 ++--- src/walletConnect/index.tsx | 2 -- src/walletConnect/types.ts | 3 +-- 5 files changed, 3 insertions(+), 16 deletions(-) diff --git a/src/parsers/requests.js b/src/parsers/requests.js index 411b653e148..4010e959a4a 100644 --- a/src/parsers/requests.js +++ b/src/parsers/requests.js @@ -54,11 +54,6 @@ export const getRequestDisplayDetails = ( dappNetwork ); } - if (payload.method === SIGN) { - const message = payload?.params?.find(p => !isAddress(p)); - const result = getMessageDisplayDetails(message, timestampInMs); - return result; - } if (payload.method === PERSONAL_SIGN) { let message = payload?.params?.find(p => !isAddress(p)); try { diff --git a/src/screens/TransactionConfirmationScreen.js b/src/screens/TransactionConfirmationScreen.js index b43cd760eb3..71350fccecd 100644 --- a/src/screens/TransactionConfirmationScreen.js +++ b/src/screens/TransactionConfirmationScreen.js @@ -108,7 +108,6 @@ import { isTransactionDisplayType, PERSONAL_SIGN, SEND_TRANSACTION, - SIGN, SIGN_TYPED_DATA, SIGN_TYPED_DATA_V4, } from '@/utils/signingMethods'; @@ -886,9 +885,6 @@ export default function TransactionConfirmationScreen() { provider ); switch (method) { - case SIGN: - response = await signMessage(message, existingWallet); - break; case PERSONAL_SIGN: response = await signPersonalMessage(message, existingWallet); break; diff --git a/src/utils/signingMethods.ts b/src/utils/signingMethods.ts index c5fbf669589..96c3710e3fa 100644 --- a/src/utils/signingMethods.ts +++ b/src/utils/signingMethods.ts @@ -1,16 +1,15 @@ export const PERSONAL_SIGN = 'personal_sign'; export const SEND_TRANSACTION = 'eth_sendTransaction'; -export const SIGN = 'eth_sign'; export const SIGN_TRANSACTION = 'eth_signTransaction'; export const SIGN_TYPED_DATA = 'eth_signTypedData'; export const SIGN_TYPED_DATA_V4 = 'eth_signTypedData_v4'; const displayTypes = { - message: [PERSONAL_SIGN, SIGN, SIGN_TYPED_DATA, SIGN_TYPED_DATA_V4], + message: [PERSONAL_SIGN, SIGN_TYPED_DATA, SIGN_TYPED_DATA_V4], transaction: [SEND_TRANSACTION, SIGN_TRANSACTION], }; const firstParamSigning = [PERSONAL_SIGN]; -const secondParamSigning = [SIGN, SIGN_TYPED_DATA, SIGN_TYPED_DATA_V4]; +const secondParamSigning = [SIGN_TYPED_DATA, SIGN_TYPED_DATA_V4]; const allTypes = displayTypes.message.concat(displayTypes.transaction); diff --git a/src/walletConnect/index.tsx b/src/walletConnect/index.tsx index a1933e71afa..75f6f9dabd9 100644 --- a/src/walletConnect/index.tsx +++ b/src/walletConnect/index.tsx @@ -135,7 +135,6 @@ export function parseRPCParams({ message?: string; } { switch (method) { - case RPCMethod.Sign: case RPCMethod.PersonalSign: { const [address, message] = params.sort(a => (isAddress(a) ? -1 : 1)); const isHex = isHexString(message); @@ -227,7 +226,6 @@ export function getApprovedNamespaces( } const SUPPORTED_SIGNING_METHODS = [ - RPCMethod.Sign, RPCMethod.PersonalSign, RPCMethod.SignTypedData, RPCMethod.SignTypedDataV1, diff --git a/src/walletConnect/types.ts b/src/walletConnect/types.ts index 053a6f18766..0e1883edbee 100644 --- a/src/walletConnect/types.ts +++ b/src/walletConnect/types.ts @@ -1,5 +1,4 @@ export enum RPCMethod { - Sign = 'eth_sign', PersonalSign = 'personal_sign', SignTypedData = 'eth_signTypedData', SignTypedDataV1 = 'eth_signTypedData_v1', @@ -18,7 +17,7 @@ export enum RPCMethod { export type RPCPayload = | { - method: RPCMethod.Sign | RPCMethod.PersonalSign; + method: RPCMethod.PersonalSign; params: [string, string]; } | { From f430686b9e88bfa6be10584f662e723ab044ac1c Mon Sep 17 00:00:00 2001 From: jinchung Date: Mon, 23 Oct 2023 16:35:04 -0400 Subject: [PATCH 2/2] Cleanup of unused imports and functions --- src/model/wallet.ts | 46 +------------------- src/parsers/requests.js | 1 - src/screens/TransactionConfirmationScreen.js | 4 -- src/utils/signingMethods.ts | 8 ---- 4 files changed, 1 insertion(+), 58 deletions(-) diff --git a/src/model/wallet.ts b/src/model/wallet.ts index 7909b987fcc..477c54e4249 100644 --- a/src/model/wallet.ts +++ b/src/model/wallet.ts @@ -1,5 +1,5 @@ import { TransactionRequest } from '@ethersproject/abstract-provider'; -import { arrayify, BytesLike, Hexable } from '@ethersproject/bytes'; +import { arrayify } from '@ethersproject/bytes'; import { HDNode } from '@ethersproject/hdnode'; import { Provider } from '@ethersproject/providers'; import { Transaction } from '@ethersproject/transactions'; @@ -41,7 +41,6 @@ import { EthereumAddress } from '@/entities'; import { authenticateWithPIN, authenticateWithPINAndCreateIfNeeded, - getExistingPIN, } from '@/handlers/authentication'; import { saveAccountEmptyState } from '@/handlers/localstorage/accountLocal'; import { @@ -404,49 +403,6 @@ export const signTransaction = async ({ } }; -export const signMessage = async ( - message: BytesLike | Hexable | number, - existingWallet?: Wallet, - provider?: Provider -): Promise => { - let isHardwareWallet = false; - try { - logger.info('wallet: signing message', { message }); - const wallet = - existingWallet || (await loadWallet(undefined, true, provider)); - // have to check inverse or we trigger unwanted BT permissions requests - if (!(wallet instanceof Wallet)) { - isHardwareWallet = true; - } - try { - if (!wallet) return null; - const result = await wallet.signMessage(arrayify(message)); - return { result }; - } catch (error) { - if (isHardwareWallet) { - setHardwareTXError(true); - } else { - Alert.alert(lang.t('wallet.transaction.alert.failed_sign_message')); - } - logger.error(new RainbowError('Failed to sign message'), { error }); - return { error }; - } - } catch (error) { - if (isHardwareWallet) { - setHardwareTXError(true); - } else { - Alert.alert(lang.t('wallet.transaction.alert.authentication')); - } - logger.error(new RainbowError('Failed to sign message due to auth'), { - error, - }); - return null; - } -}; - export const signPersonalMessage = async ( message: string | Uint8Array, existingWallet?: Wallet, diff --git a/src/parsers/requests.js b/src/parsers/requests.js index 4010e959a4a..9e7717e369e 100644 --- a/src/parsers/requests.js +++ b/src/parsers/requests.js @@ -14,7 +14,6 @@ import { isSignTypedData, PERSONAL_SIGN, SEND_TRANSACTION, - SIGN, SIGN_TRANSACTION, } from '@/utils/signingMethods'; import { isAddress } from '@ethersproject/address'; diff --git a/src/screens/TransactionConfirmationScreen.js b/src/screens/TransactionConfirmationScreen.js index 71350fccecd..006fe9dd7d7 100644 --- a/src/screens/TransactionConfirmationScreen.js +++ b/src/screens/TransactionConfirmationScreen.js @@ -62,7 +62,6 @@ import { import { Network } from '@/helpers'; import { getAccountProfileInfo } from '@/helpers/accountInfo'; import { findWalletWithAccount } from '@/helpers/findWalletWithAccount'; -import networkTypes from '@/helpers/networkTypes'; import { useAccountSettings, useCurrentNonce, @@ -76,7 +75,6 @@ import { import { loadWallet, sendTransaction, - signMessage, signPersonalMessage, signTransaction, signTypedDataMessage, @@ -102,8 +100,6 @@ import { useNativeAssetForNetwork } from '@/utils/ethereumUtils'; import { methodRegistryLookupAndParse } from '@/utils/methodRegistry'; import { isMessageDisplayType, - isSignFirstParamType, - isSignSecondParamType, isSignTypedData, isTransactionDisplayType, PERSONAL_SIGN, diff --git a/src/utils/signingMethods.ts b/src/utils/signingMethods.ts index 96c3710e3fa..6b497752692 100644 --- a/src/utils/signingMethods.ts +++ b/src/utils/signingMethods.ts @@ -8,8 +8,6 @@ const displayTypes = { message: [PERSONAL_SIGN, SIGN_TYPED_DATA, SIGN_TYPED_DATA_V4], transaction: [SEND_TRANSACTION, SIGN_TRANSACTION], }; -const firstParamSigning = [PERSONAL_SIGN]; -const secondParamSigning = [SIGN_TYPED_DATA, SIGN_TYPED_DATA_V4]; const allTypes = displayTypes.message.concat(displayTypes.transaction); @@ -21,11 +19,5 @@ export const isMessageDisplayType = (method: string) => export const isTransactionDisplayType = (method: string) => displayTypes.transaction.includes(method); -export const isSignSecondParamType = (method: string) => - secondParamSigning.includes(method); - -export const isSignFirstParamType = (method: string) => - firstParamSigning.includes(method); - export const isSignTypedData = (method: string) => method.startsWith(SIGN_TYPED_DATA);