@metamask-previews/seedless-onboarding-controller 5.0.0-preview-e98a6769 → 5.0.0-preview-7bc334fb

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
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
13
13
 
14
14
  ### Changed
15
15
 
16
+ - **BREAKING** Update `refreshToken` and `revokeToken` params as required in `Authenticate` method. ([#6998](https://github.com/MetaMask/core/pull/6998))
16
17
  - Refactor `refreshAuthTokens` method, separately catch refreshJWTToken and authenticate errors. ([#6998](https://github.com/MetaMask/core/pull/6998))
17
18
  - Bump `@metamask/toprf-secure-backup` package to `0.9.0`. ([#6998](https://github.com/MetaMask/core/pull/6998))
18
19
 
@@ -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");
@@ -629,7 +629,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
629
629
  */
630
630
  async checkIsPasswordOutdated(options) {
631
631
  const doCheckIsPasswordExpired = async () => {
632
- __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
633
632
  // cache result to reduce load on infra
634
633
  // Check cache first unless skipCache is true
635
634
  if (!options?.skipCache) {
@@ -642,6 +641,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
642
641
  return passwordOutdatedCache.isExpiredPwd;
643
642
  }
644
643
  }
644
+ (0, assertions_1.assertIsAuthUserInfoValid)(this.state);
645
645
  const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
646
646
  const currentDeviceAuthPubKey = __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_recoverAuthPubKey).call(this);
647
647
  let globalAuthPubKey = options?.globalAuthPubKey;
@@ -883,9 +883,6 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
883
883
  try {
884
884
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
885
885
  const { accessToken } = this.state;
886
- if (!accessToken) {
887
- return true; // Consider missing token as expired
888
- }
889
886
  const decodedToken = (0, utils_3.decodeJWTToken)(accessToken);
890
887
  return decodedToken.exp < Math.floor(Date.now() / 1000);
891
888
  }
@@ -935,30 +932,6 @@ async function _SeedlessOnboardingController_submitGlobalPassword({ targetAuthPu
935
932
  }
936
933
  throw errors_1.PasswordSyncError.getInstance(error);
937
934
  }
938
- }, _SeedlessOnboardingController_getAccessToken =
939
- /**
940
- * Get the access token from the state or the vault.
941
- * If the access token is not in the state, it will be retrieved from the vault by decrypting it with the password.
942
- *
943
- * If both the access token and the vault are not available, an error will be thrown.
944
- *
945
- * @param password - The optional password to unlock the vault. If not provided, the access token will be retrieved from the vault.
946
- * @returns The access token.
947
- */
948
- async function _SeedlessOnboardingController_getAccessToken(password) {
949
- const { accessToken, vault } = this.state;
950
- if (accessToken) {
951
- // if the access token is in the state, return it
952
- return accessToken;
953
- }
954
- // otherwise, check the vault availability and decrypt the access token from the vault
955
- if (!vault) {
956
- throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidAccessToken);
957
- }
958
- const { vaultData } = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_decryptAndParseVaultData).call(this, {
959
- password,
960
- });
961
- return vaultData.accessToken;
962
935
  }, _SeedlessOnboardingController_setUnlocked = function _SeedlessOnboardingController_setUnlocked() {
963
936
  __classPrivateFieldSet(this, _SeedlessOnboardingController_isUnlocked, true, "f");
964
937
  }, _SeedlessOnboardingController_persistOprfKey =
@@ -1047,11 +1020,11 @@ async function _SeedlessOnboardingController_loadSeedlessEncryptionKey(encKey) {
1047
1020
  * @throws RecoveryError - If failed to recover the encryption key.
1048
1021
  */
1049
1022
  async function _SeedlessOnboardingController_recoverEncKey(password) {
1050
- __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
1051
- const { authConnectionId, groupedAuthConnectionId, userId } = this.state;
1023
+ (0, assertions_1.assertIsAuthUserInfoValid)(this.state);
1024
+ const { nodeAuthTokens, authConnectionId, groupedAuthConnectionId, userId, } = this.state;
1052
1025
  try {
1053
1026
  const recoverEncKeyResult = await this.toprfClient.recoverEncKey({
1054
- nodeAuthTokens: this.state.nodeAuthTokens,
1027
+ nodeAuthTokens,
1055
1028
  password,
1056
1029
  authConnectionId,
1057
1030
  groupedAuthConnectionId,
@@ -1338,8 +1311,7 @@ async function _SeedlessOnboardingController_withPersistedSecretMetadataBackupsS
1338
1311
  */
1339
1312
  async function _SeedlessOnboardingController_createNewVaultWithAuthData({ password, rawToprfEncryptionKey, rawToprfPwEncryptionKey, rawToprfAuthKeyPair, }) {
1340
1313
  __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_assertIsAuthenticatedUser).call(this, this.state);
1341
- const { revokeToken } = this.state;
1342
- const accessToken = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_getAccessToken).call(this, password);
1314
+ const { revokeToken, accessToken } = this.state;
1343
1315
  const vaultData = {
1344
1316
  toprfAuthKeyPair: rawToprfAuthKeyPair,
1345
1317
  toprfEncryptionKey: rawToprfEncryptionKey,