@0xsequence/provider 1.0.0 → 1.0.2
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.
|
@@ -587,33 +587,24 @@ const trimEIP191Prefix = prefixedMessage => {
|
|
|
587
587
|
return prefixRevertedMessage;
|
|
588
588
|
};
|
|
589
589
|
const isValidSignature = async (address, digest, sig, provider, contexts) => {
|
|
590
|
-
const
|
|
590
|
+
const deployedContexts = core.allVersions.map(v => v.DeployedWalletContext);
|
|
591
|
+
const reader = new core.commons.reader.OnChainReader(provider, contexts || deployedContexts);
|
|
591
592
|
return reader.isValidSignature(address, digest, sig);
|
|
592
593
|
};
|
|
593
594
|
|
|
594
|
-
//
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
// ): Promise<boolean> => {
|
|
602
|
-
// const prefixed = prefixEIP191Message(message)
|
|
603
|
-
// const digest = encodeMessageDigest(prefixed)
|
|
604
|
-
// return isValidSignature(address, digest, signature, provider, chainId, walletContext)
|
|
605
|
-
// }
|
|
595
|
+
// Verify message signature
|
|
596
|
+
const isValidMessageSignature = async (address, message, signature, provider, contexts) => {
|
|
597
|
+
const deployedContexts = core.allVersions.map(v => v.DeployedWalletContext);
|
|
598
|
+
const prefixed = prefixEIP191Message(message);
|
|
599
|
+
const digest = utils.encodeMessageDigest(prefixed);
|
|
600
|
+
return isValidSignature(address, digest, signature, provider, contexts || deployedContexts);
|
|
601
|
+
};
|
|
606
602
|
|
|
607
|
-
//
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
// chainId?: number,
|
|
613
|
-
// walletContext?: WalletContext
|
|
614
|
-
// ): Promise<boolean> => {
|
|
615
|
-
// return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, chainId, walletContext)
|
|
616
|
-
// }
|
|
603
|
+
// Verify typedData signature
|
|
604
|
+
const isValidTypedDataSignature = (address, typedData, signature, provider, contexts) => {
|
|
605
|
+
const deployedContexts = core.allVersions.map(v => v.DeployedWalletContext);
|
|
606
|
+
return isValidSignature(address, utils.encodeTypedDataDigest(typedData), signature, provider, contexts || deployedContexts);
|
|
607
|
+
};
|
|
617
608
|
|
|
618
609
|
// export const recoverWalletConfig = async (
|
|
619
610
|
// address: string,
|
|
@@ -3924,7 +3915,9 @@ exports.initWallet = initWallet;
|
|
|
3924
3915
|
exports.isBrowserExtension = isBrowserExtension;
|
|
3925
3916
|
exports.isSequenceProvider = isSequenceProvider;
|
|
3926
3917
|
exports.isUnityPlugin = isUnityPlugin;
|
|
3918
|
+
exports.isValidMessageSignature = isValidMessageSignature;
|
|
3927
3919
|
exports.isValidSignature = isValidSignature;
|
|
3920
|
+
exports.isValidTypedDataSignature = isValidTypedDataSignature;
|
|
3928
3921
|
exports.isWalletUpToDate = isWalletUpToDate;
|
|
3929
3922
|
exports.messageToBytes = messageToBytes;
|
|
3930
3923
|
exports.nextMessageIdx = nextMessageIdx;
|
|
@@ -587,33 +587,24 @@ const trimEIP191Prefix = prefixedMessage => {
|
|
|
587
587
|
return prefixRevertedMessage;
|
|
588
588
|
};
|
|
589
589
|
const isValidSignature = async (address, digest, sig, provider, contexts) => {
|
|
590
|
-
const
|
|
590
|
+
const deployedContexts = core.allVersions.map(v => v.DeployedWalletContext);
|
|
591
|
+
const reader = new core.commons.reader.OnChainReader(provider, contexts || deployedContexts);
|
|
591
592
|
return reader.isValidSignature(address, digest, sig);
|
|
592
593
|
};
|
|
593
594
|
|
|
594
|
-
//
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
// ): Promise<boolean> => {
|
|
602
|
-
// const prefixed = prefixEIP191Message(message)
|
|
603
|
-
// const digest = encodeMessageDigest(prefixed)
|
|
604
|
-
// return isValidSignature(address, digest, signature, provider, chainId, walletContext)
|
|
605
|
-
// }
|
|
595
|
+
// Verify message signature
|
|
596
|
+
const isValidMessageSignature = async (address, message, signature, provider, contexts) => {
|
|
597
|
+
const deployedContexts = core.allVersions.map(v => v.DeployedWalletContext);
|
|
598
|
+
const prefixed = prefixEIP191Message(message);
|
|
599
|
+
const digest = utils.encodeMessageDigest(prefixed);
|
|
600
|
+
return isValidSignature(address, digest, signature, provider, contexts || deployedContexts);
|
|
601
|
+
};
|
|
606
602
|
|
|
607
|
-
//
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
// chainId?: number,
|
|
613
|
-
// walletContext?: WalletContext
|
|
614
|
-
// ): Promise<boolean> => {
|
|
615
|
-
// return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, chainId, walletContext)
|
|
616
|
-
// }
|
|
603
|
+
// Verify typedData signature
|
|
604
|
+
const isValidTypedDataSignature = (address, typedData, signature, provider, contexts) => {
|
|
605
|
+
const deployedContexts = core.allVersions.map(v => v.DeployedWalletContext);
|
|
606
|
+
return isValidSignature(address, utils.encodeTypedDataDigest(typedData), signature, provider, contexts || deployedContexts);
|
|
607
|
+
};
|
|
617
608
|
|
|
618
609
|
// export const recoverWalletConfig = async (
|
|
619
610
|
// address: string,
|
|
@@ -3924,7 +3915,9 @@ exports.initWallet = initWallet;
|
|
|
3924
3915
|
exports.isBrowserExtension = isBrowserExtension;
|
|
3925
3916
|
exports.isSequenceProvider = isSequenceProvider;
|
|
3926
3917
|
exports.isUnityPlugin = isUnityPlugin;
|
|
3918
|
+
exports.isValidMessageSignature = isValidMessageSignature;
|
|
3927
3919
|
exports.isValidSignature = isValidSignature;
|
|
3920
|
+
exports.isValidTypedDataSignature = isValidTypedDataSignature;
|
|
3928
3921
|
exports.isWalletUpToDate = isWalletUpToDate;
|
|
3929
3922
|
exports.messageToBytes = messageToBytes;
|
|
3930
3923
|
exports.nextMessageIdx = nextMessageIdx;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventEmitter2 } from 'eventemitter2';
|
|
2
|
-
import { logger, sanitizeNumberString, sanitizeHost, sanitizeAlphanumeric, base64EncodeObject, base64DecodeObject, shallowCopy, resolveProperties,
|
|
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
|
-
import { commons, universal } from '@0xsequence/core';
|
|
4
|
+
import { allVersions, commons, universal } from '@0xsequence/core';
|
|
5
5
|
import { signAuthorization } from '@0xsequence/auth';
|
|
6
6
|
import { getChainId, JsonRpcSender, maybeChainId, allowProviderMiddleware, networkProviderMiddleware, findNetworkConfig, CachedProvider, JsonRpcRouter, loggingProviderMiddleware, exceptionProviderMiddleware, findSupportedNetwork, sortNetworks, EagerProvider, SigningProvider, updateNetworkConfig, ensureValidNetworks } from '@0xsequence/network';
|
|
7
7
|
import { Signer, resolveArrayProperties } from '@0xsequence/wallet';
|
|
@@ -583,33 +583,24 @@ const trimEIP191Prefix = prefixedMessage => {
|
|
|
583
583
|
return prefixRevertedMessage;
|
|
584
584
|
};
|
|
585
585
|
const isValidSignature = async (address, digest, sig, provider, contexts) => {
|
|
586
|
-
const
|
|
586
|
+
const deployedContexts = allVersions.map(v => v.DeployedWalletContext);
|
|
587
|
+
const reader = new commons.reader.OnChainReader(provider, contexts || deployedContexts);
|
|
587
588
|
return reader.isValidSignature(address, digest, sig);
|
|
588
589
|
};
|
|
589
590
|
|
|
590
|
-
//
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
// ): Promise<boolean> => {
|
|
598
|
-
// const prefixed = prefixEIP191Message(message)
|
|
599
|
-
// const digest = encodeMessageDigest(prefixed)
|
|
600
|
-
// return isValidSignature(address, digest, signature, provider, chainId, walletContext)
|
|
601
|
-
// }
|
|
591
|
+
// Verify message signature
|
|
592
|
+
const isValidMessageSignature = async (address, message, signature, provider, contexts) => {
|
|
593
|
+
const deployedContexts = allVersions.map(v => v.DeployedWalletContext);
|
|
594
|
+
const prefixed = prefixEIP191Message(message);
|
|
595
|
+
const digest = encodeMessageDigest(prefixed);
|
|
596
|
+
return isValidSignature(address, digest, signature, provider, contexts || deployedContexts);
|
|
597
|
+
};
|
|
602
598
|
|
|
603
|
-
//
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
// chainId?: number,
|
|
609
|
-
// walletContext?: WalletContext
|
|
610
|
-
// ): Promise<boolean> => {
|
|
611
|
-
// return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, chainId, walletContext)
|
|
612
|
-
// }
|
|
599
|
+
// Verify typedData signature
|
|
600
|
+
const isValidTypedDataSignature = (address, typedData, signature, provider, contexts) => {
|
|
601
|
+
const deployedContexts = allVersions.map(v => v.DeployedWalletContext);
|
|
602
|
+
return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, contexts || deployedContexts);
|
|
603
|
+
};
|
|
613
604
|
|
|
614
605
|
// export const recoverWalletConfig = async (
|
|
615
606
|
// address: string,
|
|
@@ -3884,4 +3875,4 @@ const getWallet = () => {
|
|
|
3884
3875
|
return walletInstance;
|
|
3885
3876
|
};
|
|
3886
3877
|
|
|
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 };
|
|
3878
|
+
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 };
|
|
@@ -3,12 +3,19 @@ import { ethers, BytesLike } from 'ethers';
|
|
|
3
3
|
import { Web3Provider } from './provider';
|
|
4
4
|
import { AccountStatus } from '@0xsequence/account';
|
|
5
5
|
import { commons } from '@0xsequence/core';
|
|
6
|
+
import { TypedData } from '@0xsequence/utils';
|
|
6
7
|
export declare const messageToBytes: (message: BytesLike) => Uint8Array;
|
|
7
8
|
export declare const prefixEIP191Message: (message: BytesLike) => Uint8Array;
|
|
8
9
|
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
|
+
export declare const isValidSignature: (address: string, digest: Uint8Array, sig: string, provider: Web3Provider | ethers.providers.Web3Provider, contexts?: {
|
|
10
11
|
[key: number]: commons.context.WalletContext;
|
|
11
|
-
}) => Promise<boolean>;
|
|
12
|
+
} | undefined) => Promise<boolean>;
|
|
13
|
+
export declare const isValidMessageSignature: (address: string, message: string | Uint8Array, signature: string, provider: Web3Provider | ethers.providers.Web3Provider, contexts?: {
|
|
14
|
+
[key: number]: commons.context.WalletContext;
|
|
15
|
+
} | undefined) => Promise<boolean>;
|
|
16
|
+
export declare const isValidTypedDataSignature: (address: string, typedData: TypedData, signature: string, provider: Web3Provider | ethers.providers.Web3Provider, contexts?: {
|
|
17
|
+
[key: number]: commons.context.WalletContext;
|
|
18
|
+
} | undefined) => Promise<boolean>;
|
|
12
19
|
export declare const isBrowserExtension: () => boolean;
|
|
13
20
|
export declare const isUnityPlugin: () => boolean;
|
|
14
21
|
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.
|
|
3
|
+
"version": "1.0.2",
|
|
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.
|
|
15
|
-
"@0xsequence/account": "1.0.
|
|
16
|
-
"@0xsequence/
|
|
17
|
-
"@0xsequence/
|
|
18
|
-
"@0xsequence/migration": "1.0.
|
|
19
|
-
"@0xsequence/network": "1.0.
|
|
20
|
-
"@0xsequence/relayer": "1.0.
|
|
21
|
-
"@0xsequence/
|
|
22
|
-
"@0xsequence/
|
|
14
|
+
"@0xsequence/abi": "1.0.2",
|
|
15
|
+
"@0xsequence/account": "1.0.2",
|
|
16
|
+
"@0xsequence/auth": "1.0.2",
|
|
17
|
+
"@0xsequence/core": "1.0.2",
|
|
18
|
+
"@0xsequence/migration": "1.0.2",
|
|
19
|
+
"@0xsequence/network": "1.0.2",
|
|
20
|
+
"@0xsequence/relayer": "1.0.2",
|
|
21
|
+
"@0xsequence/wallet": "1.0.2",
|
|
22
|
+
"@0xsequence/utils": "1.0.2"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"ethers": ">=5.5 < 6"
|
package/src/utils.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { ethers, BytesLike } from 'ethers'
|
|
|
2
2
|
import { Web3Provider } from './provider'
|
|
3
3
|
import { messageIsExemptFromEIP191Prefix } from './eip191exceptions'
|
|
4
4
|
import { AccountStatus } from '@0xsequence/account'
|
|
5
|
-
import { commons } from '@0xsequence/core'
|
|
5
|
+
import { commons, allVersions } from '@0xsequence/core'
|
|
6
|
+
import { encodeMessageDigest, TypedData, encodeTypedDataDigest } from '@0xsequence/utils'
|
|
6
7
|
|
|
7
8
|
const eip191prefix = ethers.utils.toUtf8Bytes('\x19Ethereum Signed Message:\n')
|
|
8
9
|
|
|
@@ -68,35 +69,38 @@ export const isValidSignature = async (
|
|
|
68
69
|
digest: Uint8Array,
|
|
69
70
|
sig: string,
|
|
70
71
|
provider: Web3Provider | ethers.providers.Web3Provider,
|
|
71
|
-
contexts
|
|
72
|
+
contexts?: { [key: number]: commons.context.WalletContext }
|
|
72
73
|
): Promise<boolean> => {
|
|
73
|
-
const
|
|
74
|
+
const deployedContexts = allVersions.map(v => v.DeployedWalletContext)
|
|
75
|
+
const reader = new commons.reader.OnChainReader(provider, contexts || deployedContexts)
|
|
74
76
|
return reader.isValidSignature(address, digest, sig)
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
// Verify message signature
|
|
80
|
+
export const isValidMessageSignature = async (
|
|
81
|
+
address: string,
|
|
82
|
+
message: string | Uint8Array,
|
|
83
|
+
signature: string,
|
|
84
|
+
provider: Web3Provider | ethers.providers.Web3Provider,
|
|
85
|
+
contexts?: { [key: number]: commons.context.WalletContext }
|
|
86
|
+
): Promise<boolean> => {
|
|
87
|
+
const deployedContexts = allVersions.map(v => v.DeployedWalletContext)
|
|
88
|
+
const prefixed = prefixEIP191Message(message)
|
|
89
|
+
const digest = encodeMessageDigest(prefixed)
|
|
90
|
+
return isValidSignature(address, digest, signature, provider, contexts || deployedContexts)
|
|
91
|
+
}
|
|
89
92
|
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
93
|
+
// Verify typedData signature
|
|
94
|
+
export const isValidTypedDataSignature = (
|
|
95
|
+
address: string,
|
|
96
|
+
typedData: TypedData,
|
|
97
|
+
signature: string,
|
|
98
|
+
provider: Web3Provider | ethers.providers.Web3Provider,
|
|
99
|
+
contexts?: { [key: number]: commons.context.WalletContext }
|
|
100
|
+
): Promise<boolean> => {
|
|
101
|
+
const deployedContexts = allVersions.map(v => v.DeployedWalletContext)
|
|
102
|
+
return isValidSignature(address, encodeTypedDataDigest(typedData), signature, provider, contexts || deployedContexts)
|
|
103
|
+
}
|
|
100
104
|
|
|
101
105
|
// export const recoverWalletConfig = async (
|
|
102
106
|
// address: string,
|