diff --git a/src/Web3Auth.ts b/src/Web3Auth.ts index 629d7db..abb1655 100644 --- a/src/Web3Auth.ts +++ b/src/Web3Auth.ts @@ -43,7 +43,7 @@ import { import { decodeToken } from "./utils"; export class Web3Auth extends SafeEventEmitter implements IWeb3Auth { - readonly coreOptions: Omit & { storage: IAsyncStorage | IStorage | ISecureStore }; + readonly coreOptions: Omit & { storage: IAsyncStorage | IStorage | ISecureStore; sessionKey?: string }; readonly connectedAdapterName = WALLET_ADAPTERS.SFA; @@ -73,7 +73,7 @@ export class Web3Auth extends SafeEventEmitter implements IWe private plugins: Record = {}; - constructor(options: Web3AuthOptions) { + constructor(options: Web3AuthOptions & { sessionKey?: string }) { super(); if (!options.clientId) throw WalletInitializationError.invalidParams("Please provide a valid clientId in constructor"); if (!options.privateKeyProvider) throw WalletInitializationError.invalidParams("Please provide a valid privateKeyProvider in constructor"); @@ -126,7 +126,7 @@ export class Web3Auth extends SafeEventEmitter implements IWe throw WalletInitializationError.invalidParams("provider should have chainConfig and should be initialized with chainId and chainNamespace"); } - const storageKey = `${this.baseStorageKey}_${this.coreOptions.chainConfig.chainNamespace === CHAIN_NAMESPACES.SOLANA ? "solana" : "eip"}_${this.coreOptions.usePnPKey ? "pnp" : "core_kit"}`; + const storageKey = this.coreOptions.sessionKey || `${this.baseStorageKey}_${this.coreOptions.usePnPKey ? "pnp" : "core_kit"}`; this.currentStorage = new AsyncStorage(storageKey, this.coreOptions.storage); this.nodeDetails = fetchLocalConfig(this.coreOptions.web3AuthNetwork, KEY_TYPE.SECP256K1); this.authInstance = new Torus({ @@ -159,7 +159,8 @@ export class Web3Auth extends SafeEventEmitter implements IWe }); if (data && data.privKey) { this.torusPrivKey = data.basePrivKey; - await this.privKeyProvider.setupProvider(data.privKey); + const finalPrivKey = await this.getFinalPrivKey(data.basePrivKey); + await this.privKeyProvider.setupProvider(finalPrivKey); // setup aa provider after private key provider is setup if (this.accountAbstractionProvider) { await this.accountAbstractionProvider.setupProvider(this.privKeyProvider);