@metamask-previews/seedless-onboarding-controller 2.4.0-preview-848266f → 2.4.0-preview-7509efdb

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +0 -6
  2. package/dist/SeedlessOnboardingController.cjs +57 -109
  3. package/dist/SeedlessOnboardingController.cjs.map +1 -1
  4. package/dist/SeedlessOnboardingController.d.cts +1 -15
  5. package/dist/SeedlessOnboardingController.d.cts.map +1 -1
  6. package/dist/SeedlessOnboardingController.d.mts +1 -15
  7. package/dist/SeedlessOnboardingController.d.mts.map +1 -1
  8. package/dist/SeedlessOnboardingController.mjs +58 -110
  9. package/dist/SeedlessOnboardingController.mjs.map +1 -1
  10. package/dist/assertions.cjs +1 -16
  11. package/dist/assertions.cjs.map +1 -1
  12. package/dist/assertions.d.cts +0 -7
  13. package/dist/assertions.d.cts.map +1 -1
  14. package/dist/assertions.d.mts +0 -7
  15. package/dist/assertions.d.mts.map +1 -1
  16. package/dist/assertions.mjs +0 -14
  17. package/dist/assertions.mjs.map +1 -1
  18. package/dist/constants.cjs +1 -3
  19. package/dist/constants.cjs.map +1 -1
  20. package/dist/constants.d.cts +2 -4
  21. package/dist/constants.d.cts.map +1 -1
  22. package/dist/constants.d.mts +2 -4
  23. package/dist/constants.d.mts.map +1 -1
  24. package/dist/constants.mjs +1 -3
  25. package/dist/constants.mjs.map +1 -1
  26. package/dist/index.cjs +1 -3
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +0 -1
  29. package/dist/index.d.cts.map +1 -1
  30. package/dist/index.d.mts +0 -1
  31. package/dist/index.d.mts.map +1 -1
  32. package/dist/index.mjs +0 -1
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/types.cjs.map +1 -1
  35. package/dist/types.d.cts +0 -6
  36. package/dist/types.d.cts.map +1 -1
  37. package/dist/types.d.mts +0 -6
  38. package/dist/types.d.mts.map +1 -1
  39. package/dist/types.mjs.map +1 -1
  40. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -7,12 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Added
11
-
12
- - Added an optional parameter, `passwordOutdatedCacheTTL` to the constructor params and exported `SecretMetadata` class from the controller.([#6169](https://github.com/MetaMask/core/pull/6169))
13
-
14
- - Added `revokeRefreshToken` function to revoke refresh token and update vault with the new revoke token.([#6187](https://github.com/MetaMask/core/pull/6187))
15
-
16
10
  ## [2.4.0]
17
11
 
18
12
  ### Fixed
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_submitGlobalPassword, _SeedlessOnboardingController_getAccessToken, _SeedlessOnboardingController_setUnlocked, _SeedlessOnboardingController_persistOprfKey, _SeedlessOnboardingController_persistAuthPubKey, _SeedlessOnboardingController_storeKeyringEncryptionKey, _SeedlessOnboardingController_loadKeyringEncryptionKey, _SeedlessOnboardingController_loadSeedlessEncryptionKey, _SeedlessOnboardingController_recoverAuthPubKey, _SeedlessOnboardingController_recoverEncKey, _SeedlessOnboardingController_fetchAllSecretDataFromMetadataStore, _SeedlessOnboardingController_changeEncryptionKey, _SeedlessOnboardingController_encryptAndStoreSecretData, _SeedlessOnboardingController_unlockVaultAndGetVaultData, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_serializeKeyData, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_isTokenExpiredError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
13
+ var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_submitGlobalPassword, _SeedlessOnboardingController_getAccessToken, _SeedlessOnboardingController_setUnlocked, _SeedlessOnboardingController_persistOprfKey, _SeedlessOnboardingController_persistAuthPubKey, _SeedlessOnboardingController_storeKeyringEncryptionKey, _SeedlessOnboardingController_loadKeyringEncryptionKey, _SeedlessOnboardingController_loadSeedlessEncryptionKey, _SeedlessOnboardingController_recoverAuthPubKey, _SeedlessOnboardingController_recoverEncKey, _SeedlessOnboardingController_fetchAllSecretDataFromMetadataStore, _SeedlessOnboardingController_changeEncryptionKey, _SeedlessOnboardingController_encryptAndStoreSecretData, _SeedlessOnboardingController_unlockVaultAndGetVaultData, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_serializeKeyData, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_revokeRefreshTokenAndUpdateState, _SeedlessOnboardingController_isTokenExpiredError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.SeedlessOnboardingController = exports.getDefaultSeedlessOnboardingControllerState = void 0;
16
16
  const auth_network_utils_1 = require("@metamask/auth-network-utils");
@@ -136,9 +136,8 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
136
136
  * @param options.network - The network to be used for the Seedless Onboarding flow.
137
137
  * @param options.refreshJWTToken - A function to get a new jwt token using refresh token.
138
138
  * @param options.revokeRefreshToken - A function to revoke the refresh token.
139
- * @param options.passwordOutdatedCacheTTL - The TTL of the password outdated cache in milliseconds.,
140
139
  */
141
- constructor({ messenger, state, encryptor, toprfKeyDeriver, network = constants_1.Web3AuthNetwork.Mainnet, refreshJWTToken, revokeRefreshToken, passwordOutdatedCacheTTL = constants_1.PASSWORD_OUTDATED_CACHE_TTL_MS, }) {
140
+ constructor({ messenger, state, encryptor, toprfKeyDeriver, network = constants_1.Web3AuthNetwork.Mainnet, refreshJWTToken, revokeRefreshToken, }) {
142
141
  super({
143
142
  name: constants_1.controllerName,
144
143
  metadata: seedlessOnboardingMetadata,
@@ -160,12 +159,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
160
159
  * The controller lock is synchronized with the keyring lock.
161
160
  */
162
161
  _SeedlessOnboardingController_isUnlocked.set(this, false);
163
- /**
164
- * The TTL of the password outdated cache in milliseconds.
165
- */
166
- _SeedlessOnboardingController_passwordOutdatedCacheTTL.set(this, void 0);
167
- (0, assertions_1.assertIsPasswordOutdatedCacheValid)(passwordOutdatedCacheTTL);
168
- __classPrivateFieldSet(this, _SeedlessOnboardingController_passwordOutdatedCacheTTL, passwordOutdatedCacheTTL, "f");
169
162
  __classPrivateFieldSet(this, _SeedlessOnboardingController_vaultEncryptor, encryptor, "f");
170
163
  this.toprfClient = new toprf_secure_backup_1.ToprfSecureBackup({
171
164
  network,
@@ -398,7 +391,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
398
391
  await this.verifyVaultPassword(oldPassword, {
399
392
  skipLock: true, // skip lock since we already have the lock
400
393
  });
401
- const { latestKeyIndex } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertPasswordInSync).call(this, {
394
+ await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertPasswordInSync).call(this, {
402
395
  skipCache: true,
403
396
  skipLock: true, // skip lock since we already have the lock
404
397
  });
@@ -412,7 +405,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
412
405
  const { encKey: newEncKey, pwEncKey: newPwEncKey, authKeyPair: newAuthKeyPair, } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_changeEncryptionKey).call(this, {
413
406
  oldPassword,
414
407
  newPassword,
415
- latestKeyIndex,
416
408
  });
417
409
  // update and encrypt the vault with new password
418
410
  await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_createNewVaultWithAuthData).call(this, {
@@ -493,8 +485,18 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
493
485
  */
494
486
  async submitPassword(password) {
495
487
  return await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_withControllerLock).call(this, async () => {
496
- await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_unlockVaultAndGetVaultData).call(this, password);
488
+ const { toprfEncryptionKey, toprfPwEncryptionKey, toprfAuthKeyPair, revokeToken, } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_unlockVaultAndGetVaultData).call(this, password);
497
489
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_setUnlocked).call(this);
490
+ if (revokeToken) {
491
+ await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_revokeRefreshTokenAndUpdateState).call(this, revokeToken);
492
+ // re-creating vault to persist the new revoke token
493
+ await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_createNewVaultWithAuthData).call(this, {
494
+ password,
495
+ rawToprfEncryptionKey: toprfEncryptionKey,
496
+ rawToprfPwEncryptionKey: toprfPwEncryptionKey,
497
+ rawToprfAuthKeyPair: toprfAuthKeyPair,
498
+ });
499
+ }
498
500
  });
499
501
  }
500
502
  /**
@@ -562,8 +564,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
562
564
  * @description Check if the current password is outdated compare to the global password.
563
565
  *
564
566
  * @param options - Optional options object.
565
- * @param options.globalAuthPubKey - The global auth public key to compare with the current auth public key.
566
- * If not provided, the global auth public key will be fetched from the backend.
567
567
  * @param options.skipCache - If true, bypass the cache and force a fresh check.
568
568
  * @param options.skipLock - Whether to skip the lock acquisition. (to prevent deadlock in case the caller already acquired the lock)
569
569
  * @returns A promise that resolves to true if the password is outdated, false otherwise.
@@ -578,28 +578,19 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
578
578
  const now = Date.now();
579
579
  const isCacheValid = passwordOutdatedCache &&
580
580
  now - passwordOutdatedCache.timestamp <
581
- __classPrivateFieldGet(this, _SeedlessOnboardingController_passwordOutdatedCacheTTL, "f");
581
+ constants_1.PASSWORD_OUTDATED_CACHE_TTL_MS;
582
582
  if (isCacheValid) {
583
583
  return passwordOutdatedCache.isExpiredPwd;
584
584
  }
585
585
  }
586
586
  const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
587
587
  const currentDeviceAuthPubKey = __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_recoverAuthPubKey).call(this);
588
- let globalAuthPubKey = options?.globalAuthPubKey;
589
- if (!globalAuthPubKey) {
590
- const { authPubKey } = await this.toprfClient
591
- .fetchAuthPubKey({
592
- nodeAuthTokens,
593
- authConnectionId,
594
- groupedAuthConnectionId,
595
- userId,
596
- })
597
- .catch((error) => {
598
- log('Error fetching auth pub key', error);
599
- throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.FailedToFetchAuthPubKey);
600
- });
601
- globalAuthPubKey = authPubKey;
602
- }
588
+ const { authPubKey: globalAuthPubKey } = await this.toprfClient.fetchAuthPubKey({
589
+ nodeAuthTokens,
590
+ authConnectionId,
591
+ groupedAuthConnectionId,
592
+ userId,
593
+ });
603
594
  // use noble lib to deserialize and compare curve point
604
595
  const isExpiredPwd = !secp256k1_1.secp256k1.ProjectivePoint.fromHex(currentDeviceAuthPubKey).equals(secp256k1_1.secp256k1.ProjectivePoint.fromHex(globalAuthPubKey));
605
596
  // Cache the result in state
@@ -675,40 +666,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
675
666
  throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.AuthenticationError);
676
667
  }
677
668
  }
678
- /**
679
- * Revoke the refresh token and get new refresh token and new revoke token
680
- * and also updates the vault with the new revoke token.
681
- * This method is to be called after user is authenticated.
682
- *
683
- * @param password - The password to encrypt the vault.
684
- * @returns A Promise that resolves to void.
685
- */
686
- async revokeRefreshToken(password) {
687
- return await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_withControllerLock).call(this, async () => {
688
- __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
689
- const { vaultEncryptionKey } = this.state;
690
- const { toprfEncryptionKey: rawToprfEncryptionKey, toprfPwEncryptionKey: rawToprfPwEncryptionKey, toprfAuthKeyPair: rawToprfAuthKeyPair, revokeToken, } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_unlockVaultAndGetVaultData).call(this, password, vaultEncryptionKey);
691
- if (!revokeToken) {
692
- throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidRevokeToken);
693
- }
694
- const { newRevokeToken, newRefreshToken } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_revokeRefreshToken, "f").call(this, {
695
- connection: this.state.authConnection,
696
- revokeToken,
697
- });
698
- this.update((state) => {
699
- // set new revoke token in state temporarily for persisting in vault
700
- state.revokeToken = newRevokeToken;
701
- // set new refresh token to persist in state
702
- state.refreshToken = newRefreshToken;
703
- });
704
- await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_createNewVaultWithAuthData).call(this, {
705
- password,
706
- rawToprfEncryptionKey,
707
- rawToprfPwEncryptionKey,
708
- rawToprfAuthKeyPair,
709
- });
710
- });
711
- }
712
669
  /**
713
670
  * Check if the current node auth token is expired.
714
671
  *
@@ -763,7 +720,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
763
720
  }
764
721
  }
765
722
  exports.SeedlessOnboardingController = SeedlessOnboardingController;
766
- _SeedlessOnboardingController_vaultEncryptor = new WeakMap(), _SeedlessOnboardingController_controllerOperationMutex = new WeakMap(), _SeedlessOnboardingController_vaultOperationMutex = new WeakMap(), _SeedlessOnboardingController_refreshJWTToken = new WeakMap(), _SeedlessOnboardingController_revokeRefreshToken = new WeakMap(), _SeedlessOnboardingController_isUnlocked = new WeakMap(), _SeedlessOnboardingController_passwordOutdatedCacheTTL = new WeakMap(), _SeedlessOnboardingController_instances = new WeakSet(), _SeedlessOnboardingController_submitGlobalPassword =
723
+ _SeedlessOnboardingController_vaultEncryptor = new WeakMap(), _SeedlessOnboardingController_controllerOperationMutex = new WeakMap(), _SeedlessOnboardingController_vaultOperationMutex = new WeakMap(), _SeedlessOnboardingController_refreshJWTToken = new WeakMap(), _SeedlessOnboardingController_revokeRefreshToken = new WeakMap(), _SeedlessOnboardingController_isUnlocked = new WeakMap(), _SeedlessOnboardingController_instances = new WeakSet(), _SeedlessOnboardingController_submitGlobalPassword =
767
724
  /**
768
725
  * @description Submit the global password to the controller, verify the
769
726
  * password validity and unlock the controller.
@@ -789,8 +746,19 @@ async function _SeedlessOnboardingController_submitGlobalPassword({ targetAuthPu
789
746
  const { pwEncKey } = res;
790
747
  const vaultKey = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_loadSeedlessEncryptionKey).call(this, pwEncKey);
791
748
  // Unlock the controller
792
- await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_unlockVaultAndGetVaultData).call(this, undefined, vaultKey);
749
+ const { revokeToken, toprfEncryptionKey, toprfPwEncryptionKey, toprfAuthKeyPair, } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_unlockVaultAndGetVaultData).call(this, undefined, vaultKey);
793
750
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_setUnlocked).call(this);
751
+ if (revokeToken) {
752
+ // revoke and recyle refresh token after unlock to keep refresh token fresh, avoid malicious use of leaked refresh token
753
+ await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_revokeRefreshTokenAndUpdateState).call(this, revokeToken);
754
+ // re-creating vault to persist the new revoke token
755
+ await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_createNewVaultWithAuthData).call(this, {
756
+ password: globalPassword,
757
+ rawToprfEncryptionKey: toprfEncryptionKey,
758
+ rawToprfPwEncryptionKey: toprfPwEncryptionKey,
759
+ rawToprfAuthKeyPair: toprfAuthKeyPair,
760
+ });
761
+ }
794
762
  }
795
763
  catch (error) {
796
764
  if (__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_isTokenExpiredError).call(this, error)) {
@@ -964,31 +932,12 @@ async function _SeedlessOnboardingController_recoverEncKey(password) {
964
932
  * @param params - The function parameters.
965
933
  * @param params.oldPassword - The old password to verify.
966
934
  * @param params.newPassword - The new password to update.
967
- * @param params.latestKeyIndex - The key index of the latest key.
968
935
  * @returns A promise that resolves to new encryption key and authentication key pair.
969
936
  */
970
- async function _SeedlessOnboardingController_changeEncryptionKey({ oldPassword, newPassword, latestKeyIndex, }) {
937
+ async function _SeedlessOnboardingController_changeEncryptionKey({ oldPassword, newPassword, }) {
971
938
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
972
939
  const { authConnectionId, groupedAuthConnectionId, userId } = this.state;
973
- let encKey;
974
- let pwEncKey;
975
- let authKeyPair;
976
- let globalKeyIndex = latestKeyIndex;
977
- if (!globalKeyIndex) {
978
- ({
979
- encKey,
980
- pwEncKey,
981
- authKeyPair,
982
- keyShareIndex: globalKeyIndex,
983
- } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_recoverEncKey).call(this, oldPassword));
984
- }
985
- else {
986
- ({
987
- toprfEncryptionKey: encKey,
988
- toprfPwEncryptionKey: pwEncKey,
989
- toprfAuthKeyPair: authKeyPair,
990
- } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_unlockVaultAndGetVaultData).call(this, oldPassword));
991
- }
940
+ const { encKey, pwEncKey, authKeyPair, keyShareIndex: newKeyShareIndex, } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_recoverEncKey).call(this, oldPassword);
992
941
  const result = await this.toprfClient.changeEncKey({
993
942
  nodeAuthTokens: this.state.nodeAuthTokens,
994
943
  authConnectionId,
@@ -997,7 +946,7 @@ async function _SeedlessOnboardingController_changeEncryptionKey({ oldPassword,
997
946
  oldEncKey: encKey,
998
947
  oldPwEncKey: pwEncKey,
999
948
  oldAuthKeyPair: authKeyPair,
1000
- newKeyShareIndex: globalKeyIndex,
949
+ newKeyShareIndex,
1001
950
  newPassword,
1002
951
  });
1003
952
  return result;
@@ -1339,37 +1288,36 @@ async function _SeedlessOnboardingController_withVaultLock(callback) {
1339
1288
  * @param options - The options for asserting the password is in sync.
1340
1289
  * @param options.skipCache - Whether to skip the cache check.
1341
1290
  * @param options.skipLock - Whether to skip the lock acquisition. (to prevent deadlock in case the caller already acquired the lock)
1342
- * @returns The global auth public key and the latest key index.
1343
1291
  * @throws If the password is outdated.
1344
1292
  */
1345
1293
  async function _SeedlessOnboardingController_assertPasswordInSync(options) {
1346
- const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
1347
- if (!nodeAuthTokens || !authConnectionId || !userId) {
1348
- throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.MissingAuthUserInfo);
1349
- }
1350
- const { authPubKey, keyIndex: latestKeyIndex } = await this.toprfClient
1351
- .fetchAuthPubKey({
1352
- nodeAuthTokens,
1353
- authConnectionId,
1354
- groupedAuthConnectionId,
1355
- userId,
1356
- })
1357
- .catch((error) => {
1358
- log('Error fetching auth pub key', error);
1359
- throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.FailedToFetchAuthPubKey);
1360
- });
1361
- const isPasswordOutdated = await this.checkIsPasswordOutdated({
1362
- ...options,
1363
- globalAuthPubKey: authPubKey,
1364
- });
1294
+ const isPasswordOutdated = await this.checkIsPasswordOutdated(options);
1365
1295
  if (isPasswordOutdated) {
1366
1296
  throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.OutdatedPassword);
1367
1297
  }
1368
- return { authPubKey, latestKeyIndex };
1369
1298
  }, _SeedlessOnboardingController_resetPasswordOutdatedCache = function _SeedlessOnboardingController_resetPasswordOutdatedCache() {
1370
1299
  this.update((state) => {
1371
1300
  delete state.passwordOutdatedCache;
1372
1301
  });
1302
+ }, _SeedlessOnboardingController_revokeRefreshTokenAndUpdateState =
1303
+ /**
1304
+ * Revoke the refresh token and get new refresh token and new revoke token.
1305
+ * This method is to be called after user is authenticated.
1306
+ *
1307
+ * @param revokeToken - The revoke token to use for revoking the refresh token.
1308
+ */
1309
+ async function _SeedlessOnboardingController_revokeRefreshTokenAndUpdateState(revokeToken) {
1310
+ __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
1311
+ const { newRevokeToken, newRefreshToken } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_revokeRefreshToken, "f").call(this, {
1312
+ connection: this.state.authConnection,
1313
+ revokeToken,
1314
+ });
1315
+ this.update((state) => {
1316
+ // set new revoke token in state temporarily for persisting in vault
1317
+ state.revokeToken = newRevokeToken;
1318
+ // set new refresh token to persist in state
1319
+ state.refreshToken = newRefreshToken;
1320
+ });
1373
1321
  }, _SeedlessOnboardingController_isTokenExpiredError = function _SeedlessOnboardingController_isTokenExpiredError(error) {
1374
1322
  if (error instanceof toprf_secure_backup_1.TOPRFError) {
1375
1323
  // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison