@0xsequence/provider 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -586,57 +586,22 @@ const trimEIP191Prefix = prefixedMessage => {
586
586
  const prefixRevertedMessage = ethereumSignedMessagePartSlicedArray.slice(prefixCharLenght);
587
587
  return prefixRevertedMessage;
588
588
  };
589
- const isValidSignature = async (address, digest, sig, provider, contexts) => {
590
- const reader = new core.commons.reader.OnChainReader(provider, contexts);
589
+ const isValidSignature = async (address, digest, sig, provider) => {
590
+ const reader = new core.commons.reader.OnChainReader(provider);
591
591
  return reader.isValidSignature(address, digest, sig);
592
592
  };
593
593
 
594
- // export const isValidMessageSignature = async (
595
- // address: string,
596
- // message: string | Uint8Array,
597
- // signature: string,
598
- // provider: Web3Provider | ethers.providers.Web3Provider,
599
- // chainId?: number,
600
- // walletContext?: WalletContext
601
- // ): Promise<boolean> => {
602
- // const prefixed = prefixEIP191Message(message)
603
- // const digest = encodeMessageDigest(prefixed)
604
- // return isValidSignature(address, digest, signature, provider, chainId, walletContext)
605
- // }
606
-
607
- // export const isValidTypedDataSignature = (
608
- // address: string,
609
- // typedData: TypedData,
610
- // signature: string,
611
- // provider: Web3Provider | ethers.providers.Web3Provider,
612
- // chainId?: number,
613
- // walletContext?: WalletContext
614
- // ): Promise<boolean> => {
615
- // return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, chainId, walletContext)
616
- // }
617
-
618
- // export const recoverWalletConfig = async (
619
- // address: string,
620
- // digest: BytesLike,
621
- // signature: string | commons.signature.UnrecoveredSignature | commons.signature.Signature<commons.config.Config>,
622
- // chainId: BigNumberish,
623
- // walletContext?: WalletContext
624
- // ): Promise<commons.config.Config> => {
625
- // const subDigest = packMessageData(address, chainId, digest)
626
- // const config = await recoverConfig(subDigest, signature)
627
-
628
- // if (walletContext) {
629
- // const recoveredWalletAddress = addressOf(config, walletContext)
630
- // if (config.address && config.address !== recoveredWalletAddress) {
631
- // throw new Error('recovered address does not match the WalletConfig address, check the WalletContext')
632
- // } else {
633
- // config.address = recoveredWalletAddress
634
- // }
635
- // }
636
-
637
- // return config
638
- // }
594
+ // Verify message signature
595
+ const isValidMessageSignature = async (address, message, signature, provider) => {
596
+ const prefixed = prefixEIP191Message(message);
597
+ const digest = utils.encodeMessageDigest(prefixed);
598
+ return isValidSignature(address, digest, signature, provider);
599
+ };
639
600
 
601
+ // Verify typedData signature
602
+ const isValidTypedDataSignature = (address, typedData, signature, provider) => {
603
+ return isValidSignature(address, utils.encodeTypedDataDigest(typedData), signature, provider);
604
+ };
640
605
  const isBrowserExtension = () => window.location.protocol === 'chrome-extension:' || window.location.protocol === 'moz-extension:';
641
606
  const isUnityPlugin = () => !!navigator.userAgent.match(/UnitySequence/i);
642
607
 
@@ -3270,7 +3235,7 @@ class WalletUtils {
3270
3235
  async isValidSignature(address, digest, signature, chainId) {
3271
3236
  const provider = this.wallet.getProvider(chainId);
3272
3237
  if (!provider) throw new Error(`unable to get provider for chainId ${chainId}`);
3273
- return isValidSignature(address, digest, signature, provider, await this.wallet.getWalletContext());
3238
+ return isValidSignature(address, digest, signature, provider);
3274
3239
  }
3275
3240
 
3276
3241
  // Verify message signature
@@ -3279,7 +3244,7 @@ class WalletUtils {
3279
3244
  if (!provider) throw new Error(`unable to get provider for chainId ${chainId}`);
3280
3245
  const prefixed = prefixEIP191Message(message);
3281
3246
  const digest = utils.encodeMessageDigest(prefixed);
3282
- return isValidSignature(address, digest, signature, provider, await this.wallet.getWalletContext());
3247
+ return isValidSignature(address, digest, signature, provider);
3283
3248
  }
3284
3249
 
3285
3250
  // Verify typedData signature
@@ -3924,7 +3889,9 @@ exports.initWallet = initWallet;
3924
3889
  exports.isBrowserExtension = isBrowserExtension;
3925
3890
  exports.isSequenceProvider = isSequenceProvider;
3926
3891
  exports.isUnityPlugin = isUnityPlugin;
3892
+ exports.isValidMessageSignature = isValidMessageSignature;
3927
3893
  exports.isValidSignature = isValidSignature;
3894
+ exports.isValidTypedDataSignature = isValidTypedDataSignature;
3928
3895
  exports.isWalletUpToDate = isWalletUpToDate;
3929
3896
  exports.messageToBytes = messageToBytes;
3930
3897
  exports.nextMessageIdx = nextMessageIdx;
@@ -586,57 +586,22 @@ const trimEIP191Prefix = prefixedMessage => {
586
586
  const prefixRevertedMessage = ethereumSignedMessagePartSlicedArray.slice(prefixCharLenght);
587
587
  return prefixRevertedMessage;
588
588
  };
589
- const isValidSignature = async (address, digest, sig, provider, contexts) => {
590
- const reader = new core.commons.reader.OnChainReader(provider, contexts);
589
+ const isValidSignature = async (address, digest, sig, provider) => {
590
+ const reader = new core.commons.reader.OnChainReader(provider);
591
591
  return reader.isValidSignature(address, digest, sig);
592
592
  };
593
593
 
594
- // export const isValidMessageSignature = async (
595
- // address: string,
596
- // message: string | Uint8Array,
597
- // signature: string,
598
- // provider: Web3Provider | ethers.providers.Web3Provider,
599
- // chainId?: number,
600
- // walletContext?: WalletContext
601
- // ): Promise<boolean> => {
602
- // const prefixed = prefixEIP191Message(message)
603
- // const digest = encodeMessageDigest(prefixed)
604
- // return isValidSignature(address, digest, signature, provider, chainId, walletContext)
605
- // }
606
-
607
- // export const isValidTypedDataSignature = (
608
- // address: string,
609
- // typedData: TypedData,
610
- // signature: string,
611
- // provider: Web3Provider | ethers.providers.Web3Provider,
612
- // chainId?: number,
613
- // walletContext?: WalletContext
614
- // ): Promise<boolean> => {
615
- // return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, chainId, walletContext)
616
- // }
617
-
618
- // export const recoverWalletConfig = async (
619
- // address: string,
620
- // digest: BytesLike,
621
- // signature: string | commons.signature.UnrecoveredSignature | commons.signature.Signature<commons.config.Config>,
622
- // chainId: BigNumberish,
623
- // walletContext?: WalletContext
624
- // ): Promise<commons.config.Config> => {
625
- // const subDigest = packMessageData(address, chainId, digest)
626
- // const config = await recoverConfig(subDigest, signature)
627
-
628
- // if (walletContext) {
629
- // const recoveredWalletAddress = addressOf(config, walletContext)
630
- // if (config.address && config.address !== recoveredWalletAddress) {
631
- // throw new Error('recovered address does not match the WalletConfig address, check the WalletContext')
632
- // } else {
633
- // config.address = recoveredWalletAddress
634
- // }
635
- // }
636
-
637
- // return config
638
- // }
594
+ // Verify message signature
595
+ const isValidMessageSignature = async (address, message, signature, provider) => {
596
+ const prefixed = prefixEIP191Message(message);
597
+ const digest = utils.encodeMessageDigest(prefixed);
598
+ return isValidSignature(address, digest, signature, provider);
599
+ };
639
600
 
601
+ // Verify typedData signature
602
+ const isValidTypedDataSignature = (address, typedData, signature, provider) => {
603
+ return isValidSignature(address, utils.encodeTypedDataDigest(typedData), signature, provider);
604
+ };
640
605
  const isBrowserExtension = () => window.location.protocol === 'chrome-extension:' || window.location.protocol === 'moz-extension:';
641
606
  const isUnityPlugin = () => !!navigator.userAgent.match(/UnitySequence/i);
642
607
 
@@ -3270,7 +3235,7 @@ class WalletUtils {
3270
3235
  async isValidSignature(address, digest, signature, chainId) {
3271
3236
  const provider = this.wallet.getProvider(chainId);
3272
3237
  if (!provider) throw new Error(`unable to get provider for chainId ${chainId}`);
3273
- return isValidSignature(address, digest, signature, provider, await this.wallet.getWalletContext());
3238
+ return isValidSignature(address, digest, signature, provider);
3274
3239
  }
3275
3240
 
3276
3241
  // Verify message signature
@@ -3279,7 +3244,7 @@ class WalletUtils {
3279
3244
  if (!provider) throw new Error(`unable to get provider for chainId ${chainId}`);
3280
3245
  const prefixed = prefixEIP191Message(message);
3281
3246
  const digest = utils.encodeMessageDigest(prefixed);
3282
- return isValidSignature(address, digest, signature, provider, await this.wallet.getWalletContext());
3247
+ return isValidSignature(address, digest, signature, provider);
3283
3248
  }
3284
3249
 
3285
3250
  // Verify typedData signature
@@ -3924,7 +3889,9 @@ exports.initWallet = initWallet;
3924
3889
  exports.isBrowserExtension = isBrowserExtension;
3925
3890
  exports.isSequenceProvider = isSequenceProvider;
3926
3891
  exports.isUnityPlugin = isUnityPlugin;
3892
+ exports.isValidMessageSignature = isValidMessageSignature;
3927
3893
  exports.isValidSignature = isValidSignature;
3894
+ exports.isValidTypedDataSignature = isValidTypedDataSignature;
3928
3895
  exports.isWalletUpToDate = isWalletUpToDate;
3929
3896
  exports.messageToBytes = messageToBytes;
3930
3897
  exports.nextMessageIdx = nextMessageIdx;
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter2 } from 'eventemitter2';
2
- import { logger, sanitizeNumberString, sanitizeHost, sanitizeAlphanumeric, base64EncodeObject, base64DecodeObject, shallowCopy, resolveProperties, encodeMessageDigest, encodeTypedDataDigest, getDefaultConnectionInfo } from '@0xsequence/utils';
2
+ import { logger, encodeMessageDigest, encodeTypedDataDigest, sanitizeNumberString, sanitizeHost, sanitizeAlphanumeric, base64EncodeObject, base64DecodeObject, shallowCopy, resolveProperties, getDefaultConnectionInfo } from '@0xsequence/utils';
3
3
  import { ethers, BigNumber, providers } from 'ethers';
4
4
  import { commons, universal } from '@0xsequence/core';
5
5
  import { signAuthorization } from '@0xsequence/auth';
@@ -582,57 +582,22 @@ const trimEIP191Prefix = prefixedMessage => {
582
582
  const prefixRevertedMessage = ethereumSignedMessagePartSlicedArray.slice(prefixCharLenght);
583
583
  return prefixRevertedMessage;
584
584
  };
585
- const isValidSignature = async (address, digest, sig, provider, contexts) => {
586
- const reader = new commons.reader.OnChainReader(provider, contexts);
585
+ const isValidSignature = async (address, digest, sig, provider) => {
586
+ const reader = new commons.reader.OnChainReader(provider);
587
587
  return reader.isValidSignature(address, digest, sig);
588
588
  };
589
589
 
590
- // export const isValidMessageSignature = async (
591
- // address: string,
592
- // message: string | Uint8Array,
593
- // signature: string,
594
- // provider: Web3Provider | ethers.providers.Web3Provider,
595
- // chainId?: number,
596
- // walletContext?: WalletContext
597
- // ): Promise<boolean> => {
598
- // const prefixed = prefixEIP191Message(message)
599
- // const digest = encodeMessageDigest(prefixed)
600
- // return isValidSignature(address, digest, signature, provider, chainId, walletContext)
601
- // }
602
-
603
- // export const isValidTypedDataSignature = (
604
- // address: string,
605
- // typedData: TypedData,
606
- // signature: string,
607
- // provider: Web3Provider | ethers.providers.Web3Provider,
608
- // chainId?: number,
609
- // walletContext?: WalletContext
610
- // ): Promise<boolean> => {
611
- // return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, chainId, walletContext)
612
- // }
613
-
614
- // export const recoverWalletConfig = async (
615
- // address: string,
616
- // digest: BytesLike,
617
- // signature: string | commons.signature.UnrecoveredSignature | commons.signature.Signature<commons.config.Config>,
618
- // chainId: BigNumberish,
619
- // walletContext?: WalletContext
620
- // ): Promise<commons.config.Config> => {
621
- // const subDigest = packMessageData(address, chainId, digest)
622
- // const config = await recoverConfig(subDigest, signature)
623
-
624
- // if (walletContext) {
625
- // const recoveredWalletAddress = addressOf(config, walletContext)
626
- // if (config.address && config.address !== recoveredWalletAddress) {
627
- // throw new Error('recovered address does not match the WalletConfig address, check the WalletContext')
628
- // } else {
629
- // config.address = recoveredWalletAddress
630
- // }
631
- // }
632
-
633
- // return config
634
- // }
590
+ // Verify message signature
591
+ const isValidMessageSignature = async (address, message, signature, provider) => {
592
+ const prefixed = prefixEIP191Message(message);
593
+ const digest = encodeMessageDigest(prefixed);
594
+ return isValidSignature(address, digest, signature, provider);
595
+ };
635
596
 
597
+ // Verify typedData signature
598
+ const isValidTypedDataSignature = (address, typedData, signature, provider) => {
599
+ return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider);
600
+ };
636
601
  const isBrowserExtension = () => window.location.protocol === 'chrome-extension:' || window.location.protocol === 'moz-extension:';
637
602
  const isUnityPlugin = () => !!navigator.userAgent.match(/UnitySequence/i);
638
603
 
@@ -3266,7 +3231,7 @@ class WalletUtils {
3266
3231
  async isValidSignature(address, digest, signature, chainId) {
3267
3232
  const provider = this.wallet.getProvider(chainId);
3268
3233
  if (!provider) throw new Error(`unable to get provider for chainId ${chainId}`);
3269
- return isValidSignature(address, digest, signature, provider, await this.wallet.getWalletContext());
3234
+ return isValidSignature(address, digest, signature, provider);
3270
3235
  }
3271
3236
 
3272
3237
  // Verify message signature
@@ -3275,7 +3240,7 @@ class WalletUtils {
3275
3240
  if (!provider) throw new Error(`unable to get provider for chainId ${chainId}`);
3276
3241
  const prefixed = prefixEIP191Message(message);
3277
3242
  const digest = encodeMessageDigest(prefixed);
3278
- return isValidSignature(address, digest, signature, provider, await this.wallet.getWalletContext());
3243
+ return isValidSignature(address, digest, signature, provider);
3279
3244
  }
3280
3245
 
3281
3246
  // Verify typedData signature
@@ -3884,4 +3849,4 @@ const getWallet = () => {
3884
3849
  return walletInstance;
3885
3850
  };
3886
3851
 
3887
- export { BaseInjectedTransport, BaseProviderTransport, BaseWalletTransport, CHANNEL_ID, DefaultProviderConfig, ErrSignedInRequired, EventType, ExtensionMessageHandler, ExtensionMessageProvider, InitState, LocalStorage, LocalStore, LocalWeb3Provider, MuxMessageProvider, OpenState, PROVIDER_OPEN_TIMEOUT, ProviderError, ProxyMessageChannel, ProxyMessageChannelPort, ProxyMessageHandler, ProxyMessageProvider, SESSION_LOCALSTORE_KEY, UnrealMessageHandler, UnrealMessageProvider, Wallet, WalletRequestHandler, Web3Provider, Web3Signer, WindowMessageHandler, WindowMessageProvider, WindowSessionParams, getWallet, initWallet, isBrowserExtension, isSequenceProvider, isUnityPlugin, isValidSignature, isWalletUpToDate, messageToBytes, nextMessageIdx, prefixEIP191Message, trimEIP191Prefix, unregisterWallet };
3852
+ export { BaseInjectedTransport, BaseProviderTransport, BaseWalletTransport, CHANNEL_ID, DefaultProviderConfig, ErrSignedInRequired, EventType, ExtensionMessageHandler, ExtensionMessageProvider, InitState, LocalStorage, LocalStore, LocalWeb3Provider, MuxMessageProvider, OpenState, PROVIDER_OPEN_TIMEOUT, ProviderError, ProxyMessageChannel, ProxyMessageChannelPort, ProxyMessageHandler, ProxyMessageProvider, SESSION_LOCALSTORE_KEY, UnrealMessageHandler, UnrealMessageProvider, Wallet, WalletRequestHandler, Web3Provider, Web3Signer, WindowMessageHandler, WindowMessageProvider, WindowSessionParams, getWallet, initWallet, isBrowserExtension, isSequenceProvider, isUnityPlugin, isValidMessageSignature, isValidSignature, isValidTypedDataSignature, isWalletUpToDate, messageToBytes, nextMessageIdx, prefixEIP191Message, trimEIP191Prefix, unregisterWallet };
@@ -1,14 +1,12 @@
1
-
2
1
  import { ethers, BytesLike } from 'ethers';
3
- import { Web3Provider } from './provider';
4
2
  import { AccountStatus } from '@0xsequence/account';
5
- import { commons } from '@0xsequence/core';
3
+ import { TypedData } from '@0xsequence/utils';
6
4
  export declare const messageToBytes: (message: BytesLike) => Uint8Array;
7
5
  export declare const prefixEIP191Message: (message: BytesLike) => Uint8Array;
8
6
  export declare const trimEIP191Prefix: (prefixedMessage: Uint8Array) => Uint8Array;
9
- export declare const isValidSignature: (address: string, digest: Uint8Array, sig: string, provider: Web3Provider | ethers.providers.Web3Provider, contexts: {
10
- [key: number]: commons.context.WalletContext;
11
- }) => Promise<boolean>;
7
+ export declare const isValidSignature: (address: string, digest: Uint8Array, sig: string, provider: ethers.providers.Provider) => Promise<boolean>;
8
+ export declare const isValidMessageSignature: (address: string, message: string | Uint8Array, signature: string, provider: ethers.providers.Provider) => Promise<boolean>;
9
+ export declare const isValidTypedDataSignature: (address: string, typedData: TypedData, signature: string, provider: ethers.providers.Provider) => Promise<boolean>;
12
10
  export declare const isBrowserExtension: () => boolean;
13
11
  export declare const isUnityPlugin: () => boolean;
14
12
  export declare const isWalletUpToDate: (status: AccountStatus) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xsequence/provider",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "provider sub-package for Sequence",
5
5
  "repository": "https://github.com/0xsequence/sequence.js/tree/master/packages/provider",
6
6
  "source": "src/index.ts",
@@ -11,15 +11,15 @@
11
11
  "dependencies": {
12
12
  "eventemitter2": "^6.4.5",
13
13
  "webextension-polyfill": "^0.10.0",
14
- "@0xsequence/abi": "1.0.1",
15
- "@0xsequence/account": "1.0.1",
16
- "@0xsequence/auth": "1.0.1",
17
- "@0xsequence/core": "1.0.1",
18
- "@0xsequence/migration": "1.0.1",
19
- "@0xsequence/network": "1.0.1",
20
- "@0xsequence/relayer": "1.0.1",
21
- "@0xsequence/utils": "1.0.1",
22
- "@0xsequence/wallet": "1.0.1"
14
+ "@0xsequence/abi": "1.0.3",
15
+ "@0xsequence/auth": "1.0.3",
16
+ "@0xsequence/migration": "1.0.3",
17
+ "@0xsequence/network": "1.0.3",
18
+ "@0xsequence/account": "1.0.3",
19
+ "@0xsequence/relayer": "1.0.3",
20
+ "@0xsequence/core": "1.0.3",
21
+ "@0xsequence/utils": "1.0.3",
22
+ "@0xsequence/wallet": "1.0.3"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "ethers": ">=5.5 < 6"
@@ -59,7 +59,7 @@ export class WalletUtils {
59
59
  ): Promise<boolean> {
60
60
  const provider = this.wallet.getProvider(chainId)
61
61
  if (!provider) throw new Error(`unable to get provider for chainId ${chainId}`)
62
- return isValidSignature(address, digest, signature, provider, await this.wallet.getWalletContext())
62
+ return isValidSignature(address, digest, signature, provider)
63
63
  }
64
64
 
65
65
  // Verify message signature
@@ -73,7 +73,7 @@ export class WalletUtils {
73
73
  if (!provider) throw new Error(`unable to get provider for chainId ${chainId}`)
74
74
  const prefixed = prefixEIP191Message(message)
75
75
  const digest = encodeMessageDigest(prefixed)
76
- return isValidSignature(address, digest, signature, provider, await this.wallet.getWalletContext())
76
+ return isValidSignature(address, digest, signature, provider)
77
77
  }
78
78
 
79
79
  // Verify typedData signature
package/src/utils.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { ethers, BytesLike } from 'ethers'
2
- import { Web3Provider } from './provider'
3
2
  import { messageIsExemptFromEIP191Prefix } from './eip191exceptions'
4
3
  import { AccountStatus } from '@0xsequence/account'
5
4
  import { commons } from '@0xsequence/core'
5
+ import { encodeMessageDigest, TypedData, encodeTypedDataDigest } from '@0xsequence/utils'
6
6
 
7
7
  const eip191prefix = ethers.utils.toUtf8Bytes('\x19Ethereum Signed Message:\n')
8
8
 
@@ -67,58 +67,34 @@ export const isValidSignature = async (
67
67
  address: string,
68
68
  digest: Uint8Array,
69
69
  sig: string,
70
- provider: Web3Provider | ethers.providers.Web3Provider,
71
- contexts: { [key: number]: commons.context.WalletContext }
70
+ provider: ethers.providers.Provider
72
71
  ): Promise<boolean> => {
73
- const reader = new commons.reader.OnChainReader(provider, contexts)
72
+ const reader = new commons.reader.OnChainReader(provider)
74
73
  return reader.isValidSignature(address, digest, sig)
75
74
  }
76
75
 
77
- // export const isValidMessageSignature = async (
78
- // address: string,
79
- // message: string | Uint8Array,
80
- // signature: string,
81
- // provider: Web3Provider | ethers.providers.Web3Provider,
82
- // chainId?: number,
83
- // walletContext?: WalletContext
84
- // ): Promise<boolean> => {
85
- // const prefixed = prefixEIP191Message(message)
86
- // const digest = encodeMessageDigest(prefixed)
87
- // return isValidSignature(address, digest, signature, provider, chainId, walletContext)
88
- // }
89
-
90
- // export const isValidTypedDataSignature = (
91
- // address: string,
92
- // typedData: TypedData,
93
- // signature: string,
94
- // provider: Web3Provider | ethers.providers.Web3Provider,
95
- // chainId?: number,
96
- // walletContext?: WalletContext
97
- // ): Promise<boolean> => {
98
- // return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, chainId, walletContext)
99
- // }
100
-
101
- // export const recoverWalletConfig = async (
102
- // address: string,
103
- // digest: BytesLike,
104
- // signature: string | commons.signature.UnrecoveredSignature | commons.signature.Signature<commons.config.Config>,
105
- // chainId: BigNumberish,
106
- // walletContext?: WalletContext
107
- // ): Promise<commons.config.Config> => {
108
- // const subDigest = packMessageData(address, chainId, digest)
109
- // const config = await recoverConfig(subDigest, signature)
110
-
111
- // if (walletContext) {
112
- // const recoveredWalletAddress = addressOf(config, walletContext)
113
- // if (config.address && config.address !== recoveredWalletAddress) {
114
- // throw new Error('recovered address does not match the WalletConfig address, check the WalletContext')
115
- // } else {
116
- // config.address = recoveredWalletAddress
117
- // }
118
- // }
119
-
120
- // return config
121
- // }
76
+ // Verify message signature
77
+ export const isValidMessageSignature = async (
78
+ address: string,
79
+ message: string | Uint8Array,
80
+ signature: string,
81
+ provider: ethers.providers.Provider
82
+ ): Promise<boolean> => {
83
+ const prefixed = prefixEIP191Message(message)
84
+ const digest = encodeMessageDigest(prefixed)
85
+ return isValidSignature(address, digest, signature, provider)
86
+ }
87
+
88
+ // Verify typedData signature
89
+ export const isValidTypedDataSignature = (
90
+ address: string,
91
+ typedData: TypedData,
92
+ signature: string,
93
+ provider: ethers.providers.Provider
94
+ ): Promise<boolean> => {
95
+ return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider)
96
+ }
97
+
122
98
 
123
99
  export const isBrowserExtension = (): boolean =>
124
100
  window.location.protocol === 'chrome-extension:' || window.location.protocol === 'moz-extension:'