@metamask-previews/seedless-onboarding-controller 6.0.0-preview-79b6f72 → 6.0.0-preview-eee46d4b

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.
package/CHANGELOG.md CHANGED
@@ -7,10 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Fixed
11
-
12
- - Fixed `InvalidRevokeToken` issue in `refreshAuthTokens` method. ([#7012](https://github.com/MetaMask/core/pull/7012))
13
-
14
10
  ## [6.0.0]
15
11
 
16
12
  ### Added
@@ -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_renewRefreshToken, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_cachedDecryptedVaultData, _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_decryptAndParseVaultData, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_addRefreshTokenToRevokeList, _SeedlessOnboardingController_isAuthTokenError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
13
+ var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_renewRefreshToken, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_cachedDecryptedVaultData, _SeedlessOnboardingController_submitGlobalPassword, _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_decryptAndParseVaultData, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_addRefreshTokenToRevokeList, _SeedlessOnboardingController_isAuthTokenError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.SeedlessOnboardingController = exports.getInitialSeedlessOnboardingControllerStateWithDefaults = void 0;
16
16
  const auth_network_utils_1 = require("@metamask/auth-network-utils");
@@ -298,10 +298,8 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
298
298
  state.socialLoginEmail = socialLoginEmail;
299
299
  state.metadataAccessToken = metadataAccessToken;
300
300
  state.refreshToken = refreshToken;
301
- if (revokeToken) {
302
- // Temporarily store revoke token & access token in state for later vault creation
303
- state.revokeToken = revokeToken;
304
- }
301
+ // Temporarily store revoke token & access token in state for later vault creation
302
+ state.revokeToken = revokeToken;
305
303
  state.accessToken = accessToken;
306
304
  // we will check if the controller state is properly set with the authenticated user info
307
305
  // before setting the isSeedlessOnboardingUserAuthenticated to true
@@ -643,7 +641,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
643
641
  return passwordOutdatedCache.isExpiredPwd;
644
642
  }
645
643
  }
646
- __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
644
+ (0, assertions_1.assertIsAuthUserInfoValid)(this.state);
647
645
  const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
648
646
  const currentDeviceAuthPubKey = __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_recoverAuthPubKey).call(this);
649
647
  let globalAuthPubKey = options?.globalAuthPubKey;
@@ -681,9 +679,8 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
681
679
  async checkIsSeedlessOnboardingUserAuthenticated() {
682
680
  let isAuthenticated = false;
683
681
  try {
684
- __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
685
- isAuthenticated =
686
- Boolean(this.state.accessToken) && Boolean(this.state.refreshToken);
682
+ (0, assertions_1.assertIsSeedlessOnboardingUserAuthenticated)(this.state);
683
+ isAuthenticated = true;
687
684
  }
688
685
  catch {
689
686
  isAuthenticated = false;
@@ -732,7 +729,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
732
729
  */
733
730
  async refreshAuthTokens() {
734
731
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
735
- const { refreshToken } = this.state;
732
+ const { refreshToken, revokeToken } = this.state;
736
733
  const res = await __classPrivateFieldGet(this, _SeedlessOnboardingController_refreshJWTToken, "f").call(this, {
737
734
  connection: this.state.authConnection,
738
735
  refreshToken,
@@ -752,6 +749,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
752
749
  groupedAuthConnectionId: this.state.groupedAuthConnectionId,
753
750
  userId: this.state.userId,
754
751
  refreshToken,
752
+ revokeToken,
755
753
  skipLock: true,
756
754
  });
757
755
  }
@@ -889,9 +887,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
889
887
  try {
890
888
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
891
889
  const { accessToken } = this.state;
892
- if (!accessToken) {
893
- return true; // Consider missing token as expired
894
- }
895
890
  const decodedToken = (0, utils_3.decodeJWTToken)(accessToken);
896
891
  return decodedToken.exp < Math.floor(Date.now() / 1000);
897
892
  }
@@ -941,30 +936,6 @@ async function _SeedlessOnboardingController_submitGlobalPassword({ targetAuthPu
941
936
  }
942
937
  throw errors_1.PasswordSyncError.getInstance(error);
943
938
  }
944
- }, _SeedlessOnboardingController_getAccessToken =
945
- /**
946
- * Get the access token from the state or the vault.
947
- * If the access token is not in the state, it will be retrieved from the vault by decrypting it with the password.
948
- *
949
- * If both the access token and the vault are not available, an error will be thrown.
950
- *
951
- * @param password - The optional password to unlock the vault. If not provided, the access token will be retrieved from the vault.
952
- * @returns The access token.
953
- */
954
- async function _SeedlessOnboardingController_getAccessToken(password) {
955
- const { accessToken, vault } = this.state;
956
- if (accessToken) {
957
- // if the access token is in the state, return it
958
- return accessToken;
959
- }
960
- // otherwise, check the vault availability and decrypt the access token from the vault
961
- if (!vault) {
962
- throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidAccessToken);
963
- }
964
- const { vaultData } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_decryptAndParseVaultData).call(this, {
965
- password,
966
- });
967
- return vaultData.accessToken;
968
939
  }, _SeedlessOnboardingController_setUnlocked = function _SeedlessOnboardingController_setUnlocked() {
969
940
  __classPrivateFieldSet(this, _SeedlessOnboardingController_isUnlocked, true, "f");
970
941
  }, _SeedlessOnboardingController_persistOprfKey =
@@ -1053,7 +1024,7 @@ async function _SeedlessOnboardingController_loadSeedlessEncryptionKey(encKey) {
1053
1024
  * @throws RecoveryError - If failed to recover the encryption key.
1054
1025
  */
1055
1026
  async function _SeedlessOnboardingController_recoverEncKey(password) {
1056
- __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
1027
+ (0, assertions_1.assertIsAuthUserInfoValid)(this.state);
1057
1028
  const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
1058
1029
  try {
1059
1030
  const recoverEncKeyResult = await this.toprfClient.recoverEncKey({
@@ -1344,11 +1315,7 @@ async function _SeedlessOnboardingController_withPersistedSecretMetadataBackupsS
1344
1315
  */
1345
1316
  async function _SeedlessOnboardingController_createNewVaultWithAuthData({ password, rawToprfEncryptionKey, rawToprfPwEncryptionKey, rawToprfAuthKeyPair, }) {
1346
1317
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
1347
- const { revokeToken } = this.state;
1348
- if (!revokeToken) {
1349
- throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidRevokeToken);
1350
- }
1351
- const accessToken = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_getAccessToken).call(this, password);
1318
+ const { revokeToken, accessToken } = this.state;
1352
1319
  const vaultData = {
1353
1320
  toprfAuthKeyPair: rawToprfAuthKeyPair,
1354
1321
  toprfEncryptionKey: rawToprfEncryptionKey,